Use wclrtoeol in tui_show_source_line
[deliverable/binutils-gdb.git] / gdb / dwarf2read.c
CommitLineData
c906108c 1/* DWARF 2 debugging format support for GDB.
917c78fc 2
e2882c85 3 Copyright (C) 1994-2018 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 31#include "defs.h"
cd4fb1b2 32#include "dwarf2read.h"
87d6a7aa 33#include "dwarf-index-cache.h"
cd4fb1b2 34#include "dwarf-index-common.h"
c906108c 35#include "bfd.h"
80626a55 36#include "elf-bfd.h"
c906108c
SS
37#include "symtab.h"
38#include "gdbtypes.h"
c906108c 39#include "objfiles.h"
fa8f86ff 40#include "dwarf2.h"
804d2729 41#include "buildsym.h"
c906108c 42#include "demangle.h"
50f182aa 43#include "gdb-demangle.h"
c906108c 44#include "expression.h"
d5166ae1 45#include "filenames.h" /* for DOSish file names */
2e276125 46#include "macrotab.h"
c906108c
SS
47#include "language.h"
48#include "complaints.h"
357e46e7 49#include "bcache.h"
4c2df51b
DJ
50#include "dwarf2expr.h"
51#include "dwarf2loc.h"
9219021c 52#include "cp-support.h"
72bf9492 53#include "hashtab.h"
ae038cb0
DJ
54#include "command.h"
55#include "gdbcmd.h"
edb3359d 56#include "block.h"
ff013f42 57#include "addrmap.h"
94af9270 58#include "typeprint.h"
ccefe4c4 59#include "psympriv.h"
53ce3c39 60#include <sys/stat.h>
96d19272 61#include "completer.h"
34eaf542 62#include "vec.h"
98bfdba5 63#include "c-lang.h"
a766d390 64#include "go-lang.h"
98bfdba5 65#include "valprint.h"
3019eac3 66#include "gdbcore.h" /* for gnutarget */
156942c7 67#include "gdb/gdb-index.h"
60d5a603 68#include <ctype.h>
cbb099e8 69#include "gdb_bfd.h"
4357ac6c 70#include "f-lang.h"
05cba821 71#include "source.h"
614c279d 72#include "filestuff.h"
dc294be5 73#include "build-id.h"
22cee43f 74#include "namespace.h"
bef155c3 75#include "common/gdb_unlinker.h"
14bc53a8 76#include "common/function-view.h"
ecfb656c
PA
77#include "common/gdb_optional.h"
78#include "common/underlying.h"
d5722aa2 79#include "common/byte-vector.h"
927aa2e7 80#include "common/hash_enum.h"
bbf2f4df 81#include "filename-seen-cache.h"
b32b108a 82#include "producer.h"
c906108c 83#include <fcntl.h>
c906108c 84#include <sys/types.h>
325fac50 85#include <algorithm>
bc8f2430
JK
86#include <unordered_set>
87#include <unordered_map>
c62446b1 88#include "selftest.h"
437afbb8
JK
89#include <cmath>
90#include <set>
91#include <forward_list>
c9317f21 92#include "rust-lang.h"
b4987c95 93#include "common/pathstuff.h"
437afbb8 94
73be47f5
DE
95/* When == 1, print basic high level tracing messages.
96 When > 1, be more verbose.
b4f54984
DE
97 This is in contrast to the low level DIE reading of dwarf_die_debug. */
98static unsigned int dwarf_read_debug = 0;
45cfd468 99
d97bc12b 100/* When non-zero, dump DIEs after they are read in. */
b4f54984 101static unsigned int dwarf_die_debug = 0;
d97bc12b 102
27e0867f
DE
103/* When non-zero, dump line number entries as they are read in. */
104static unsigned int dwarf_line_debug = 0;
105
900e11f9
JK
106/* When non-zero, cross-check physname against demangler. */
107static int check_physname = 0;
108
481860b3 109/* When non-zero, do not reject deprecated .gdb_index sections. */
e615022a 110static int use_deprecated_index_sections = 0;
481860b3 111
6502dd73
DJ
112static const struct objfile_data *dwarf2_objfile_data_key;
113
f1e6e072
TT
114/* The "aclass" indices for various kinds of computed DWARF symbols. */
115
116static int dwarf2_locexpr_index;
117static int dwarf2_loclist_index;
118static int dwarf2_locexpr_block_index;
119static int dwarf2_loclist_block_index;
120
3f563c84
PA
121/* An index into a (C++) symbol name component in a symbol name as
122 recorded in the mapped_index's symbol table. For each C++ symbol
123 in the symbol table, we record one entry for the start of each
124 component in the symbol in a table of name components, and then
125 sort the table, in order to be able to binary search symbol names,
126 ignoring leading namespaces, both completion and regular look up.
127 For example, for symbol "A::B::C", we'll have an entry that points
128 to "A::B::C", another that points to "B::C", and another for "C".
129 Note that function symbols in GDB index have no parameter
130 information, just the function/method names. You can convert a
131 name_component to a "const char *" using the
132 'mapped_index::symbol_name_at(offset_type)' method. */
133
134struct name_component
135{
136 /* Offset in the symbol name where the component starts. Stored as
137 a (32-bit) offset instead of a pointer to save memory and improve
138 locality on 64-bit architectures. */
139 offset_type name_offset;
140
141 /* The symbol's index in the symbol and constant pool tables of a
142 mapped_index. */
143 offset_type idx;
144};
145
44ed8f3e
PA
146/* Base class containing bits shared by both .gdb_index and
147 .debug_name indexes. */
148
149struct mapped_index_base
150{
22ca247e
TT
151 mapped_index_base () = default;
152 DISABLE_COPY_AND_ASSIGN (mapped_index_base);
153
44ed8f3e
PA
154 /* The name_component table (a sorted vector). See name_component's
155 description above. */
156 std::vector<name_component> name_components;
157
158 /* How NAME_COMPONENTS is sorted. */
159 enum case_sensitivity name_components_casing;
160
161 /* Return the number of names in the symbol table. */
162 virtual size_t symbol_name_count () const = 0;
163
164 /* Get the name of the symbol at IDX in the symbol table. */
165 virtual const char *symbol_name_at (offset_type idx) const = 0;
166
167 /* Return whether the name at IDX in the symbol table should be
168 ignored. */
169 virtual bool symbol_name_slot_invalid (offset_type idx) const
170 {
171 return false;
172 }
173
174 /* Build the symbol name component sorted vector, if we haven't
175 yet. */
176 void build_name_components ();
177
178 /* Returns the lower (inclusive) and upper (exclusive) bounds of the
179 possible matches for LN_NO_PARAMS in the name component
180 vector. */
181 std::pair<std::vector<name_component>::const_iterator,
182 std::vector<name_component>::const_iterator>
183 find_name_components_bounds (const lookup_name_info &ln_no_params) const;
184
185 /* Prevent deleting/destroying via a base class pointer. */
186protected:
187 ~mapped_index_base() = default;
188};
189
9291a0cd
TT
190/* A description of the mapped index. The file format is described in
191 a comment by the code that writes the index. */
fc898b42 192struct mapped_index final : public mapped_index_base
9291a0cd 193{
f00a2de2
PA
194 /* A slot/bucket in the symbol table hash. */
195 struct symbol_table_slot
196 {
197 const offset_type name;
198 const offset_type vec;
199 };
200
559a7a62 201 /* Index data format version. */
3063847f 202 int version = 0;
559a7a62 203
f00a2de2
PA
204 /* The address table data. */
205 gdb::array_view<const gdb_byte> address_table;
b11b1f88 206
3876f04e 207 /* The symbol table, implemented as a hash table. */
f00a2de2 208 gdb::array_view<symbol_table_slot> symbol_table;
b11b1f88 209
9291a0cd 210 /* A pointer to the constant pool. */
3063847f 211 const char *constant_pool = nullptr;
3f563c84 212
44ed8f3e
PA
213 bool symbol_name_slot_invalid (offset_type idx) const override
214 {
215 const auto &bucket = this->symbol_table[idx];
216 return bucket.name == 0 && bucket.vec;
217 }
5c58de74 218
3f563c84
PA
219 /* Convenience method to get at the name of the symbol at IDX in the
220 symbol table. */
44ed8f3e 221 const char *symbol_name_at (offset_type idx) const override
f00a2de2 222 { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
5c58de74 223
44ed8f3e
PA
224 size_t symbol_name_count () const override
225 { return this->symbol_table.size (); }
9291a0cd
TT
226};
227
927aa2e7
JK
228/* A description of the mapped .debug_names.
229 Uninitialized map has CU_COUNT 0. */
fc898b42 230struct mapped_debug_names final : public mapped_index_base
927aa2e7 231{
ed2dc618
SM
232 mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
233 : dwarf2_per_objfile (dwarf2_per_objfile_)
234 {}
235
236 struct dwarf2_per_objfile *dwarf2_per_objfile;
927aa2e7
JK
237 bfd_endian dwarf5_byte_order;
238 bool dwarf5_is_dwarf64;
239 bool augmentation_is_gdb;
240 uint8_t offset_size;
241 uint32_t cu_count = 0;
242 uint32_t tu_count, bucket_count, name_count;
243 const gdb_byte *cu_table_reordered, *tu_table_reordered;
244 const uint32_t *bucket_table_reordered, *hash_table_reordered;
245 const gdb_byte *name_table_string_offs_reordered;
246 const gdb_byte *name_table_entry_offs_reordered;
247 const gdb_byte *entry_pool;
248
249 struct index_val
250 {
251 ULONGEST dwarf_tag;
252 struct attr
253 {
254 /* Attribute name DW_IDX_*. */
255 ULONGEST dw_idx;
256
257 /* Attribute form DW_FORM_*. */
258 ULONGEST form;
259
260 /* Value if FORM is DW_FORM_implicit_const. */
261 LONGEST implicit_const;
262 };
263 std::vector<attr> attr_vec;
264 };
265
266 std::unordered_map<ULONGEST, index_val> abbrev_map;
267
268 const char *namei_to_name (uint32_t namei) const;
44ed8f3e
PA
269
270 /* Implementation of the mapped_index_base virtual interface, for
271 the name_components cache. */
272
273 const char *symbol_name_at (offset_type idx) const override
274 { return namei_to_name (idx); }
275
276 size_t symbol_name_count () const override
277 { return this->name_count; }
927aa2e7
JK
278};
279
cd4fb1b2 280/* See dwarf2read.h. */
ed2dc618 281
cd4fb1b2 282dwarf2_per_objfile *
ed2dc618
SM
283get_dwarf2_per_objfile (struct objfile *objfile)
284{
285 return ((struct dwarf2_per_objfile *)
286 objfile_data (objfile, dwarf2_objfile_data_key));
287}
288
289/* Set the dwarf2_per_objfile associated to OBJFILE. */
290
291void
292set_dwarf2_per_objfile (struct objfile *objfile,
293 struct dwarf2_per_objfile *dwarf2_per_objfile)
294{
295 gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
296 set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
297}
c906108c 298
251d32d9 299/* Default names of the debugging sections. */
c906108c 300
233a11ab
CS
301/* Note that if the debugging section has been compressed, it might
302 have a name like .zdebug_info. */
303
9cdd5dbd
DE
304static const struct dwarf2_debug_sections dwarf2_elf_names =
305{
251d32d9
TG
306 { ".debug_info", ".zdebug_info" },
307 { ".debug_abbrev", ".zdebug_abbrev" },
308 { ".debug_line", ".zdebug_line" },
309 { ".debug_loc", ".zdebug_loc" },
43988095 310 { ".debug_loclists", ".zdebug_loclists" },
251d32d9 311 { ".debug_macinfo", ".zdebug_macinfo" },
cf2c3c16 312 { ".debug_macro", ".zdebug_macro" },
251d32d9 313 { ".debug_str", ".zdebug_str" },
43988095 314 { ".debug_line_str", ".zdebug_line_str" },
251d32d9 315 { ".debug_ranges", ".zdebug_ranges" },
43988095 316 { ".debug_rnglists", ".zdebug_rnglists" },
251d32d9 317 { ".debug_types", ".zdebug_types" },
3019eac3 318 { ".debug_addr", ".zdebug_addr" },
251d32d9
TG
319 { ".debug_frame", ".zdebug_frame" },
320 { ".eh_frame", NULL },
24d3216f 321 { ".gdb_index", ".zgdb_index" },
927aa2e7
JK
322 { ".debug_names", ".zdebug_names" },
323 { ".debug_aranges", ".zdebug_aranges" },
24d3216f 324 23
251d32d9 325};
c906108c 326
80626a55 327/* List of DWO/DWP sections. */
3019eac3 328
80626a55 329static const struct dwop_section_names
3019eac3
DE
330{
331 struct dwarf2_section_names abbrev_dwo;
332 struct dwarf2_section_names info_dwo;
333 struct dwarf2_section_names line_dwo;
334 struct dwarf2_section_names loc_dwo;
43988095 335 struct dwarf2_section_names loclists_dwo;
09262596
DE
336 struct dwarf2_section_names macinfo_dwo;
337 struct dwarf2_section_names macro_dwo;
3019eac3
DE
338 struct dwarf2_section_names str_dwo;
339 struct dwarf2_section_names str_offsets_dwo;
340 struct dwarf2_section_names types_dwo;
80626a55
DE
341 struct dwarf2_section_names cu_index;
342 struct dwarf2_section_names tu_index;
3019eac3 343}
80626a55 344dwop_section_names =
3019eac3
DE
345{
346 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
347 { ".debug_info.dwo", ".zdebug_info.dwo" },
348 { ".debug_line.dwo", ".zdebug_line.dwo" },
349 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
43988095 350 { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
09262596
DE
351 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
352 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
3019eac3
DE
353 { ".debug_str.dwo", ".zdebug_str.dwo" },
354 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
355 { ".debug_types.dwo", ".zdebug_types.dwo" },
80626a55
DE
356 { ".debug_cu_index", ".zdebug_cu_index" },
357 { ".debug_tu_index", ".zdebug_tu_index" },
3019eac3
DE
358};
359
c906108c
SS
360/* local data types */
361
107d2387
AC
362/* The data in a compilation unit header, after target2host
363 translation, looks like this. */
c906108c 364struct comp_unit_head
a738430d 365{
c764a876 366 unsigned int length;
a738430d 367 short version;
a738430d
MK
368 unsigned char addr_size;
369 unsigned char signed_addr_p;
9c541725 370 sect_offset abbrev_sect_off;
57349743 371
a738430d
MK
372 /* Size of file offsets; either 4 or 8. */
373 unsigned int offset_size;
57349743 374
a738430d
MK
375 /* Size of the length field; either 4 or 12. */
376 unsigned int initial_length_size;
57349743 377
43988095
JK
378 enum dwarf_unit_type unit_type;
379
a738430d
MK
380 /* Offset to the first byte of this compilation unit header in the
381 .debug_info section, for resolving relative reference dies. */
9c541725 382 sect_offset sect_off;
57349743 383
d00adf39
DE
384 /* Offset to first die in this cu from the start of the cu.
385 This will be the first byte following the compilation unit header. */
9c541725 386 cu_offset first_die_cu_offset;
43988095
JK
387
388 /* 64-bit signature of this type unit - it is valid only for
389 UNIT_TYPE DW_UT_type. */
390 ULONGEST signature;
391
392 /* For types, offset in the type's DIE of the type defined by this TU. */
9c541725 393 cu_offset type_cu_offset_in_tu;
a738430d 394};
c906108c 395
3da10d80
KS
396/* Type used for delaying computation of method physnames.
397 See comments for compute_delayed_physnames. */
398struct delayed_method_info
399{
400 /* The type to which the method is attached, i.e., its parent class. */
401 struct type *type;
402
403 /* The index of the method in the type's function fieldlists. */
404 int fnfield_index;
405
406 /* The index of the method in the fieldlist. */
407 int index;
408
409 /* The name of the DIE. */
410 const char *name;
411
412 /* The DIE associated with this method. */
413 struct die_info *die;
414};
415
e7c27a73
DJ
416/* Internal state when decoding a particular compilation unit. */
417struct dwarf2_cu
418{
fcd3b13d
SM
419 explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
420 ~dwarf2_cu ();
421
422 DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
423
d00adf39 424 /* The header of the compilation unit. */
fcd3b13d 425 struct comp_unit_head header {};
e142c38c 426
d00adf39 427 /* Base address of this compilation unit. */
fcd3b13d 428 CORE_ADDR base_address = 0;
d00adf39
DE
429
430 /* Non-zero if base_address has been set. */
fcd3b13d 431 int base_known = 0;
d00adf39 432
e142c38c 433 /* The language we are debugging. */
fcd3b13d
SM
434 enum language language = language_unknown;
435 const struct language_defn *language_defn = nullptr;
e142c38c 436
fcd3b13d 437 const char *producer = nullptr;
b0f35d58 438
804d2729
TT
439 /* The symtab builder for this CU. This is only non-NULL when full
440 symbols are being read. */
441 std::unique_ptr<buildsym_compunit> builder;
442
e142c38c
DJ
443 /* The generic symbol table building routines have separate lists for
444 file scope symbols and all all other scopes (local scopes). So
445 we need to select the right one to pass to add_symbol_to_list().
446 We do it by keeping a pointer to the correct list in list_in_scope.
447
448 FIXME: The original dwarf code just treated the file scope as the
449 first local scope, and all other local scopes as nested local
450 scopes, and worked fine. Check to see if we really need to
451 distinguish these in buildsym.c. */
fcd3b13d 452 struct pending **list_in_scope = nullptr;
e142c38c 453
b64f50a1
JK
454 /* Hash table holding all the loaded partial DIEs
455 with partial_die->offset.SECT_OFF as hash. */
fcd3b13d 456 htab_t partial_dies = nullptr;
72bf9492
DJ
457
458 /* Storage for things with the same lifetime as this read-in compilation
459 unit, including partial DIEs. */
fcd3b13d 460 auto_obstack comp_unit_obstack;
72bf9492 461
ae038cb0
DJ
462 /* When multiple dwarf2_cu structures are living in memory, this field
463 chains them all together, so that they can be released efficiently.
464 We will probably also want a generation counter so that most-recently-used
465 compilation units are cached... */
fcd3b13d 466 struct dwarf2_per_cu_data *read_in_chain = nullptr;
ae038cb0 467
69d751e3 468 /* Backlink to our per_cu entry. */
ae038cb0
DJ
469 struct dwarf2_per_cu_data *per_cu;
470
471 /* How many compilation units ago was this CU last referenced? */
fcd3b13d 472 int last_used = 0;
ae038cb0 473
b64f50a1
JK
474 /* A hash table of DIE cu_offset for following references with
475 die_info->offset.sect_off as hash. */
fcd3b13d 476 htab_t die_hash = nullptr;
10b3939b
DJ
477
478 /* Full DIEs if read in. */
fcd3b13d 479 struct die_info *dies = nullptr;
10b3939b
DJ
480
481 /* A set of pointers to dwarf2_per_cu_data objects for compilation
482 units referenced by this one. Only set during full symbol processing;
483 partial symbol tables do not have dependencies. */
fcd3b13d 484 htab_t dependencies = nullptr;
10b3939b 485
cb1df416 486 /* Header data from the line table, during full symbol processing. */
fcd3b13d 487 struct line_header *line_header = nullptr;
4c8aa72d
PA
488 /* Non-NULL if LINE_HEADER is owned by this DWARF_CU. Otherwise,
489 it's owned by dwarf2_per_objfile::line_header_hash. If non-NULL,
490 this is the DW_TAG_compile_unit die for this CU. We'll hold on
491 to the line header as long as this DIE is being processed. See
492 process_die_scope. */
fcd3b13d 493 die_info *line_header_die_owner = nullptr;
cb1df416 494
3da10d80
KS
495 /* A list of methods which need to have physnames computed
496 after all type information has been read. */
c89b44cd 497 std::vector<delayed_method_info> method_list;
3da10d80 498
96408a79 499 /* To be copied to symtab->call_site_htab. */
fcd3b13d 500 htab_t call_site_htab = nullptr;
96408a79 501
034e5797
DE
502 /* Non-NULL if this CU came from a DWO file.
503 There is an invariant here that is important to remember:
504 Except for attributes copied from the top level DIE in the "main"
505 (or "stub") file in preparation for reading the DWO file
506 (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
507 Either there isn't a DWO file (in which case this is NULL and the point
508 is moot), or there is and either we're not going to read it (in which
509 case this is NULL) or there is and we are reading it (in which case this
510 is non-NULL). */
fcd3b13d 511 struct dwo_unit *dwo_unit = nullptr;
3019eac3
DE
512
513 /* The DW_AT_addr_base attribute if present, zero otherwise
514 (zero is a valid value though).
1dbab08b 515 Note this value comes from the Fission stub CU/TU's DIE. */
fcd3b13d 516 ULONGEST addr_base = 0;
3019eac3 517
2e3cf129
DE
518 /* The DW_AT_ranges_base attribute if present, zero otherwise
519 (zero is a valid value though).
1dbab08b 520 Note this value comes from the Fission stub CU/TU's DIE.
2e3cf129 521 Also note that the value is zero in the non-DWO case so this value can
ab435259
DE
522 be used without needing to know whether DWO files are in use or not.
523 N.B. This does not apply to DW_AT_ranges appearing in
524 DW_TAG_compile_unit dies. This is a bit of a wart, consider if ever
525 DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
526 DW_AT_ranges_base *would* have to be applied, and we'd have to care
527 whether the DW_AT_ranges attribute came from the skeleton or DWO. */
fcd3b13d 528 ULONGEST ranges_base = 0;
2e3cf129 529
c9317f21
TT
530 /* When reading debug info generated by older versions of rustc, we
531 have to rewrite some union types to be struct types with a
532 variant part. This rewriting must be done after the CU is fully
533 read in, because otherwise at the point of rewriting some struct
534 type might not have been fully processed. So, we keep a list of
535 all such types here and process them after expansion. */
536 std::vector<struct type *> rust_unions;
537
ae038cb0 538 /* Mark used when releasing cached dies. */
9068261f 539 bool mark : 1;
ae038cb0 540
8be455d7
JK
541 /* This CU references .debug_loc. See the symtab->locations_valid field.
542 This test is imperfect as there may exist optimized debug code not using
543 any location list and still facing inlining issues if handled as
544 unoptimized code. For a future better test see GCC PR other/32998. */
9068261f 545 bool has_loclist : 1;
ba919b58 546
9068261f 547 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is true
1b80a9fa
JK
548 if all the producer_is_* fields are valid. This information is cached
549 because profiling CU expansion showed excessive time spent in
550 producer_is_gxx_lt_4_6. */
9068261f
AB
551 bool checked_producer : 1;
552 bool producer_is_gxx_lt_4_6 : 1;
553 bool producer_is_gcc_lt_4_3 : 1;
eb77c9df 554 bool producer_is_icc : 1;
9068261f 555 bool producer_is_icc_lt_14 : 1;
c258c396 556 bool producer_is_codewarrior : 1;
4d4ec4e5 557
9068261f 558 /* When true, the file that we're processing is known to have
4d4ec4e5
TT
559 debugging info for C++ namespaces. GCC 3.3.x did not produce
560 this information, but later versions do. */
561
9068261f 562 bool processing_has_namespace_info : 1;
d590ff25
YQ
563
564 struct partial_die_info *find_partial_die (sect_offset sect_off);
e7c27a73
DJ
565};
566
094b34ac
DE
567/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
568 This includes type_unit_group and quick_file_names. */
569
570struct stmt_list_hash
571{
572 /* The DWO unit this table is from or NULL if there is none. */
573 struct dwo_unit *dwo_unit;
574
575 /* Offset in .debug_line or .debug_line.dwo. */
9c541725 576 sect_offset line_sect_off;
094b34ac
DE
577};
578
f4dc4d17
DE
579/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
580 an object of this type. */
581
582struct type_unit_group
583{
0186c6a7 584 /* dwarf2read.c's main "handle" on a TU symtab.
f4dc4d17
DE
585 To simplify things we create an artificial CU that "includes" all the
586 type units using this stmt_list so that the rest of the code still has
587 a "per_cu" handle on the symtab.
588 This PER_CU is recognized by having no section. */
8a0459fd 589#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
094b34ac
DE
590 struct dwarf2_per_cu_data per_cu;
591
0186c6a7
DE
592 /* The TUs that share this DW_AT_stmt_list entry.
593 This is added to while parsing type units to build partial symtabs,
594 and is deleted afterwards and not used again. */
595 VEC (sig_type_ptr) *tus;
f4dc4d17 596
43f3e411 597 /* The compunit symtab.
094b34ac 598 Type units in a group needn't all be defined in the same source file,
43f3e411
DE
599 so we create an essentially anonymous symtab as the compunit symtab. */
600 struct compunit_symtab *compunit_symtab;
f4dc4d17 601
094b34ac
DE
602 /* The data used to construct the hash key. */
603 struct stmt_list_hash hash;
f4dc4d17
DE
604
605 /* The number of symtabs from the line header.
606 The value here must match line_header.num_file_names. */
607 unsigned int num_symtabs;
608
609 /* The symbol tables for this TU (obtained from the files listed in
610 DW_AT_stmt_list).
611 WARNING: The order of entries here must match the order of entries
612 in the line header. After the first TU using this type_unit_group, the
613 line header for the subsequent TUs is recreated from this. This is done
614 because we need to use the same symtabs for each TU using the same
615 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
616 there's no guarantee the line header doesn't have duplicate entries. */
617 struct symtab **symtabs;
618};
619
73869dc2 620/* These sections are what may appear in a (real or virtual) DWO file. */
3019eac3
DE
621
622struct dwo_sections
623{
624 struct dwarf2_section_info abbrev;
3019eac3
DE
625 struct dwarf2_section_info line;
626 struct dwarf2_section_info loc;
43988095 627 struct dwarf2_section_info loclists;
09262596
DE
628 struct dwarf2_section_info macinfo;
629 struct dwarf2_section_info macro;
3019eac3
DE
630 struct dwarf2_section_info str;
631 struct dwarf2_section_info str_offsets;
80626a55
DE
632 /* In the case of a virtual DWO file, these two are unused. */
633 struct dwarf2_section_info info;
3019eac3
DE
634 VEC (dwarf2_section_info_def) *types;
635};
636
c88ee1f0 637/* CUs/TUs in DWP/DWO files. */
3019eac3
DE
638
639struct dwo_unit
640{
641 /* Backlink to the containing struct dwo_file. */
642 struct dwo_file *dwo_file;
643
644 /* The "id" that distinguishes this CU/TU.
645 .debug_info calls this "dwo_id", .debug_types calls this "signature".
646 Since signatures came first, we stick with it for consistency. */
647 ULONGEST signature;
648
649 /* The section this CU/TU lives in, in the DWO file. */
8a0459fd 650 struct dwarf2_section_info *section;
3019eac3 651
9c541725
PA
652 /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section. */
653 sect_offset sect_off;
3019eac3
DE
654 unsigned int length;
655
656 /* For types, offset in the type's DIE of the type defined by this TU. */
657 cu_offset type_offset_in_tu;
658};
659
73869dc2
DE
660/* include/dwarf2.h defines the DWP section codes.
661 It defines a max value but it doesn't define a min value, which we
662 use for error checking, so provide one. */
663
664enum dwp_v2_section_ids
665{
666 DW_SECT_MIN = 1
667};
668
80626a55 669/* Data for one DWO file.
57d63ce2
DE
670
671 This includes virtual DWO files (a virtual DWO file is a DWO file as it
672 appears in a DWP file). DWP files don't really have DWO files per se -
673 comdat folding of types "loses" the DWO file they came from, and from
674 a high level view DWP files appear to contain a mass of random types.
675 However, to maintain consistency with the non-DWP case we pretend DWP
676 files contain virtual DWO files, and we assign each TU with one virtual
677 DWO file (generally based on the line and abbrev section offsets -
678 a heuristic that seems to work in practice). */
3019eac3
DE
679
680struct dwo_file
681{
0ac5b59e 682 /* The DW_AT_GNU_dwo_name attribute.
80626a55
DE
683 For virtual DWO files the name is constructed from the section offsets
684 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
685 from related CU+TUs. */
0ac5b59e
DE
686 const char *dwo_name;
687
688 /* The DW_AT_comp_dir attribute. */
689 const char *comp_dir;
3019eac3 690
80626a55
DE
691 /* The bfd, when the file is open. Otherwise this is NULL.
692 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
693 bfd *dbfd;
3019eac3 694
73869dc2
DE
695 /* The sections that make up this DWO file.
696 Remember that for virtual DWO files in DWP V2, these are virtual
697 sections (for lack of a better name). */
3019eac3
DE
698 struct dwo_sections sections;
699
33c5cd75
DB
700 /* The CUs in the file.
701 Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
702 an extension to handle LLVM's Link Time Optimization output (where
703 multiple source files may be compiled into a single object/dwo pair). */
704 htab_t cus;
3019eac3
DE
705
706 /* Table of TUs in the file.
707 Each element is a struct dwo_unit. */
708 htab_t tus;
709};
710
80626a55
DE
711/* These sections are what may appear in a DWP file. */
712
713struct dwp_sections
714{
73869dc2 715 /* These are used by both DWP version 1 and 2. */
80626a55
DE
716 struct dwarf2_section_info str;
717 struct dwarf2_section_info cu_index;
718 struct dwarf2_section_info tu_index;
73869dc2
DE
719
720 /* These are only used by DWP version 2 files.
721 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
722 sections are referenced by section number, and are not recorded here.
723 In DWP version 2 there is at most one copy of all these sections, each
724 section being (effectively) comprised of the concatenation of all of the
725 individual sections that exist in the version 1 format.
726 To keep the code simple we treat each of these concatenated pieces as a
727 section itself (a virtual section?). */
728 struct dwarf2_section_info abbrev;
729 struct dwarf2_section_info info;
730 struct dwarf2_section_info line;
731 struct dwarf2_section_info loc;
732 struct dwarf2_section_info macinfo;
733 struct dwarf2_section_info macro;
734 struct dwarf2_section_info str_offsets;
735 struct dwarf2_section_info types;
80626a55
DE
736};
737
73869dc2
DE
738/* These sections are what may appear in a virtual DWO file in DWP version 1.
739 A virtual DWO file is a DWO file as it appears in a DWP file. */
80626a55 740
73869dc2 741struct virtual_v1_dwo_sections
80626a55
DE
742{
743 struct dwarf2_section_info abbrev;
744 struct dwarf2_section_info line;
745 struct dwarf2_section_info loc;
746 struct dwarf2_section_info macinfo;
747 struct dwarf2_section_info macro;
748 struct dwarf2_section_info str_offsets;
749 /* Each DWP hash table entry records one CU or one TU.
8a0459fd 750 That is recorded here, and copied to dwo_unit.section. */
80626a55
DE
751 struct dwarf2_section_info info_or_types;
752};
753
73869dc2
DE
754/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
755 In version 2, the sections of the DWO files are concatenated together
756 and stored in one section of that name. Thus each ELF section contains
757 several "virtual" sections. */
758
759struct virtual_v2_dwo_sections
760{
761 bfd_size_type abbrev_offset;
762 bfd_size_type abbrev_size;
763
764 bfd_size_type line_offset;
765 bfd_size_type line_size;
766
767 bfd_size_type loc_offset;
768 bfd_size_type loc_size;
769
770 bfd_size_type macinfo_offset;
771 bfd_size_type macinfo_size;
772
773 bfd_size_type macro_offset;
774 bfd_size_type macro_size;
775
776 bfd_size_type str_offsets_offset;
777 bfd_size_type str_offsets_size;
778
779 /* Each DWP hash table entry records one CU or one TU.
780 That is recorded here, and copied to dwo_unit.section. */
781 bfd_size_type info_or_types_offset;
782 bfd_size_type info_or_types_size;
783};
784
80626a55
DE
785/* Contents of DWP hash tables. */
786
787struct dwp_hash_table
788{
73869dc2 789 uint32_t version, nr_columns;
80626a55 790 uint32_t nr_units, nr_slots;
73869dc2
DE
791 const gdb_byte *hash_table, *unit_table;
792 union
793 {
794 struct
795 {
796 const gdb_byte *indices;
797 } v1;
798 struct
799 {
800 /* This is indexed by column number and gives the id of the section
801 in that column. */
802#define MAX_NR_V2_DWO_SECTIONS \
803 (1 /* .debug_info or .debug_types */ \
804 + 1 /* .debug_abbrev */ \
805 + 1 /* .debug_line */ \
806 + 1 /* .debug_loc */ \
807 + 1 /* .debug_str_offsets */ \
808 + 1 /* .debug_macro or .debug_macinfo */)
809 int section_ids[MAX_NR_V2_DWO_SECTIONS];
810 const gdb_byte *offsets;
811 const gdb_byte *sizes;
812 } v2;
813 } section_pool;
80626a55
DE
814};
815
816/* Data for one DWP file. */
817
818struct dwp_file
819{
400174b1
TT
820 dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
821 : name (name_),
822 dbfd (std::move (abfd))
823 {
824 }
825
80626a55
DE
826 /* Name of the file. */
827 const char *name;
828
73869dc2 829 /* File format version. */
400174b1 830 int version = 0;
73869dc2 831
93417882 832 /* The bfd. */
400174b1 833 gdb_bfd_ref_ptr dbfd;
80626a55
DE
834
835 /* Section info for this file. */
400174b1 836 struct dwp_sections sections {};
80626a55 837
57d63ce2 838 /* Table of CUs in the file. */
400174b1 839 const struct dwp_hash_table *cus = nullptr;
80626a55
DE
840
841 /* Table of TUs in the file. */
400174b1 842 const struct dwp_hash_table *tus = nullptr;
80626a55 843
19ac8c2e 844 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
400174b1
TT
845 htab_t loaded_cus {};
846 htab_t loaded_tus {};
80626a55 847
73869dc2
DE
848 /* Table to map ELF section numbers to their sections.
849 This is only needed for the DWP V1 file format. */
400174b1
TT
850 unsigned int num_sections = 0;
851 asection **elf_sections = nullptr;
80626a55
DE
852};
853
36586728
TT
854/* This represents a '.dwz' file. */
855
856struct dwz_file
857{
7ff8cb8c
TT
858 dwz_file (gdb_bfd_ref_ptr &&bfd)
859 : dwz_bfd (std::move (bfd))
860 {
861 }
862
36586728 863 /* A dwz file can only contain a few sections. */
7ff8cb8c
TT
864 struct dwarf2_section_info abbrev {};
865 struct dwarf2_section_info info {};
866 struct dwarf2_section_info str {};
867 struct dwarf2_section_info line {};
868 struct dwarf2_section_info macro {};
869 struct dwarf2_section_info gdb_index {};
870 struct dwarf2_section_info debug_names {};
36586728
TT
871
872 /* The dwz's BFD. */
7ff8cb8c 873 gdb_bfd_ref_ptr dwz_bfd;
87d6a7aa
SM
874
875 /* If we loaded the index from an external file, this contains the
876 resources associated to the open file, memory mapping, etc. */
877 std::unique_ptr<index_cache_resource> index_cache_res;
36586728
TT
878};
879
0963b4bd
MS
880/* Struct used to pass misc. parameters to read_die_and_children, et
881 al. which are used for both .debug_info and .debug_types dies.
882 All parameters here are unchanging for the life of the call. This
dee91e82 883 struct exists to abstract away the constant parameters of die reading. */
93311388
DE
884
885struct die_reader_specs
886{
a32a8923 887 /* The bfd of die_section. */
93311388
DE
888 bfd* abfd;
889
890 /* The CU of the DIE we are parsing. */
891 struct dwarf2_cu *cu;
892
80626a55 893 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
3019eac3
DE
894 struct dwo_file *dwo_file;
895
dee91e82 896 /* The section the die comes from.
3019eac3 897 This is either .debug_info or .debug_types, or the .dwo variants. */
dee91e82
DE
898 struct dwarf2_section_info *die_section;
899
900 /* die_section->buffer. */
d521ce57 901 const gdb_byte *buffer;
f664829e
DE
902
903 /* The end of the buffer. */
904 const gdb_byte *buffer_end;
a2ce51a0
DE
905
906 /* The value of the DW_AT_comp_dir attribute. */
907 const char *comp_dir;
685af9cd
TT
908
909 /* The abbreviation table to use when reading the DIEs. */
910 struct abbrev_table *abbrev_table;
93311388
DE
911};
912
fd820528 913/* Type of function passed to init_cutu_and_read_dies, et.al. */
dee91e82 914typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
d521ce57 915 const gdb_byte *info_ptr,
dee91e82
DE
916 struct die_info *comp_unit_die,
917 int has_children,
918 void *data);
919
ecfb656c
PA
920/* A 1-based directory index. This is a strong typedef to prevent
921 accidentally using a directory index as a 0-based index into an
922 array/vector. */
923enum class dir_index : unsigned int {};
924
925/* Likewise, a 1-based file name index. */
926enum class file_name_index : unsigned int {};
927
52059ffd
TT
928struct file_entry
929{
fff8551c
PA
930 file_entry () = default;
931
ecfb656c 932 file_entry (const char *name_, dir_index d_index_,
fff8551c
PA
933 unsigned int mod_time_, unsigned int length_)
934 : name (name_),
ecfb656c 935 d_index (d_index_),
fff8551c
PA
936 mod_time (mod_time_),
937 length (length_)
938 {}
939
ecfb656c
PA
940 /* Return the include directory at D_INDEX stored in LH. Returns
941 NULL if D_INDEX is out of bounds. */
8c43009f
PA
942 const char *include_dir (const line_header *lh) const;
943
fff8551c
PA
944 /* The file name. Note this is an observing pointer. The memory is
945 owned by debug_line_buffer. */
946 const char *name {};
947
8c43009f 948 /* The directory index (1-based). */
ecfb656c 949 dir_index d_index {};
fff8551c
PA
950
951 unsigned int mod_time {};
952
953 unsigned int length {};
954
955 /* True if referenced by the Line Number Program. */
956 bool included_p {};
957
83769d0b 958 /* The associated symbol table, if any. */
fff8551c 959 struct symtab *symtab {};
52059ffd
TT
960};
961
debd256d
JB
962/* The line number information for a compilation unit (found in the
963 .debug_line section) begins with a "statement program header",
964 which contains the following information. */
965struct line_header
966{
fff8551c
PA
967 line_header ()
968 : offset_in_dwz {}
969 {}
970
971 /* Add an entry to the include directory table. */
972 void add_include_dir (const char *include_dir);
973
974 /* Add an entry to the file name table. */
ecfb656c 975 void add_file_name (const char *name, dir_index d_index,
fff8551c
PA
976 unsigned int mod_time, unsigned int length);
977
ecfb656c 978 /* Return the include dir at INDEX (1-based). Returns NULL if INDEX
8c43009f 979 is out of bounds. */
ecfb656c 980 const char *include_dir_at (dir_index index) const
8c43009f 981 {
ecfb656c
PA
982 /* Convert directory index number (1-based) to vector index
983 (0-based). */
984 size_t vec_index = to_underlying (index) - 1;
985
986 if (vec_index >= include_dirs.size ())
8c43009f 987 return NULL;
ecfb656c 988 return include_dirs[vec_index];
8c43009f
PA
989 }
990
ecfb656c 991 /* Return the file name at INDEX (1-based). Returns NULL if INDEX
8c43009f 992 is out of bounds. */
ecfb656c 993 file_entry *file_name_at (file_name_index index)
8c43009f 994 {
ecfb656c
PA
995 /* Convert file name index number (1-based) to vector index
996 (0-based). */
997 size_t vec_index = to_underlying (index) - 1;
998
999 if (vec_index >= file_names.size ())
fff8551c 1000 return NULL;
ecfb656c 1001 return &file_names[vec_index];
fff8551c
PA
1002 }
1003
1004 /* Const version of the above. */
1005 const file_entry *file_name_at (unsigned int index) const
1006 {
1007 if (index >= file_names.size ())
8c43009f
PA
1008 return NULL;
1009 return &file_names[index];
1010 }
1011
527f3840 1012 /* Offset of line number information in .debug_line section. */
9c541725 1013 sect_offset sect_off {};
527f3840
JK
1014
1015 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
fff8551c
PA
1016 unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class. */
1017
1018 unsigned int total_length {};
1019 unsigned short version {};
1020 unsigned int header_length {};
1021 unsigned char minimum_instruction_length {};
1022 unsigned char maximum_ops_per_instruction {};
1023 unsigned char default_is_stmt {};
1024 int line_base {};
1025 unsigned char line_range {};
1026 unsigned char opcode_base {};
debd256d
JB
1027
1028 /* standard_opcode_lengths[i] is the number of operands for the
1029 standard opcode whose value is i. This means that
1030 standard_opcode_lengths[0] is unused, and the last meaningful
1031 element is standard_opcode_lengths[opcode_base - 1]. */
fff8551c 1032 std::unique_ptr<unsigned char[]> standard_opcode_lengths;
debd256d 1033
fff8551c
PA
1034 /* The include_directories table. Note these are observing
1035 pointers. The memory is owned by debug_line_buffer. */
1036 std::vector<const char *> include_dirs;
debd256d 1037
fff8551c
PA
1038 /* The file_names table. */
1039 std::vector<file_entry> file_names;
debd256d
JB
1040
1041 /* The start and end of the statement program following this
6502dd73 1042 header. These point into dwarf2_per_objfile->line_buffer. */
fff8551c 1043 const gdb_byte *statement_program_start {}, *statement_program_end {};
debd256d 1044};
c906108c 1045
fff8551c
PA
1046typedef std::unique_ptr<line_header> line_header_up;
1047
8c43009f
PA
1048const char *
1049file_entry::include_dir (const line_header *lh) const
1050{
ecfb656c 1051 return lh->include_dir_at (d_index);
8c43009f
PA
1052}
1053
c906108c 1054/* When we construct a partial symbol table entry we only
0963b4bd 1055 need this much information. */
6f06d47b 1056struct partial_die_info : public allocate_on_obstack
c906108c 1057 {
6f06d47b
YQ
1058 partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1059
1060 /* Disable assign but still keep copy ctor, which is needed
1061 load_partial_dies. */
1062 partial_die_info& operator=(const partial_die_info& rhs) = delete;
1063
52356b79
YQ
1064 /* Adjust the partial die before generating a symbol for it. This
1065 function may set the is_external flag or change the DIE's
1066 name. */
1067 void fixup (struct dwarf2_cu *cu);
1068
48fbe735
YQ
1069 /* Read a minimal amount of information into the minimal die
1070 structure. */
1071 const gdb_byte *read (const struct die_reader_specs *reader,
1072 const struct abbrev_info &abbrev,
1073 const gdb_byte *info_ptr);
1074
72bf9492 1075 /* Offset of this DIE. */
6f06d47b 1076 const sect_offset sect_off;
72bf9492
DJ
1077
1078 /* DWARF-2 tag for this DIE. */
6f06d47b 1079 const ENUM_BITFIELD(dwarf_tag) tag : 16;
72bf9492 1080
72bf9492 1081 /* Assorted flags describing the data found in this DIE. */
6f06d47b
YQ
1082 const unsigned int has_children : 1;
1083
72bf9492
DJ
1084 unsigned int is_external : 1;
1085 unsigned int is_declaration : 1;
1086 unsigned int has_type : 1;
1087 unsigned int has_specification : 1;
1088 unsigned int has_pc_info : 1;
481860b3 1089 unsigned int may_be_inlined : 1;
72bf9492 1090
0c1b455e
TT
1091 /* This DIE has been marked DW_AT_main_subprogram. */
1092 unsigned int main_subprogram : 1;
1093
72bf9492
DJ
1094 /* Flag set if the SCOPE field of this structure has been
1095 computed. */
1096 unsigned int scope_set : 1;
1097
fa4028e9
JB
1098 /* Flag set if the DIE has a byte_size attribute. */
1099 unsigned int has_byte_size : 1;
1100
ff908ebf
AW
1101 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1102 unsigned int has_const_value : 1;
1103
98bfdba5
PA
1104 /* Flag set if any of the DIE's children are template arguments. */
1105 unsigned int has_template_arguments : 1;
1106
52356b79 1107 /* Flag set if fixup has been called on this die. */
abc72ce4
DE
1108 unsigned int fixup_called : 1;
1109
36586728
TT
1110 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1111 unsigned int is_dwz : 1;
1112
1113 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1114 unsigned int spec_is_dwz : 1;
1115
72bf9492 1116 /* The name of this DIE. Normally the value of DW_AT_name, but
94af9270 1117 sometimes a default name for unnamed DIEs. */
6f06d47b 1118 const char *name = nullptr;
72bf9492 1119
abc72ce4 1120 /* The linkage name, if present. */
6f06d47b 1121 const char *linkage_name = nullptr;
abc72ce4 1122
72bf9492
DJ
1123 /* The scope to prepend to our children. This is generally
1124 allocated on the comp_unit_obstack, so will disappear
1125 when this compilation unit leaves the cache. */
6f06d47b 1126 const char *scope = nullptr;
72bf9492 1127
95554aad
TT
1128 /* Some data associated with the partial DIE. The tag determines
1129 which field is live. */
1130 union
1131 {
1132 /* The location description associated with this DIE, if any. */
1133 struct dwarf_block *locdesc;
1134 /* The offset of an import, for DW_TAG_imported_unit. */
9c541725 1135 sect_offset sect_off;
6f06d47b 1136 } d {};
72bf9492
DJ
1137
1138 /* If HAS_PC_INFO, the PC range associated with this DIE. */
6f06d47b
YQ
1139 CORE_ADDR lowpc = 0;
1140 CORE_ADDR highpc = 0;
72bf9492 1141
93311388 1142 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
72bf9492 1143 DW_AT_sibling, if any. */
48fbe735
YQ
1144 /* NOTE: This member isn't strictly necessary, partial_die_info::read
1145 could return DW_AT_sibling values to its caller load_partial_dies. */
6f06d47b 1146 const gdb_byte *sibling = nullptr;
72bf9492
DJ
1147
1148 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1149 DW_AT_specification (or DW_AT_abstract_origin or
1150 DW_AT_extension). */
6f06d47b 1151 sect_offset spec_offset {};
72bf9492
DJ
1152
1153 /* Pointers to this DIE's parent, first child, and next sibling,
1154 if any. */
6f06d47b
YQ
1155 struct partial_die_info *die_parent = nullptr;
1156 struct partial_die_info *die_child = nullptr;
1157 struct partial_die_info *die_sibling = nullptr;
1158
1159 friend struct partial_die_info *
1160 dwarf2_cu::find_partial_die (sect_offset sect_off);
1161
1162 private:
1163 /* Only need to do look up in dwarf2_cu::find_partial_die. */
1164 partial_die_info (sect_offset sect_off)
1165 : partial_die_info (sect_off, DW_TAG_padding, 0)
1166 {
1167 }
1168
1169 partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1170 int has_children_)
1171 : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1172 {
1173 is_external = 0;
1174 is_declaration = 0;
1175 has_type = 0;
1176 has_specification = 0;
1177 has_pc_info = 0;
1178 may_be_inlined = 0;
1179 main_subprogram = 0;
1180 scope_set = 0;
1181 has_byte_size = 0;
1182 has_const_value = 0;
1183 has_template_arguments = 0;
1184 fixup_called = 0;
1185 is_dwz = 0;
1186 spec_is_dwz = 0;
1187 }
c906108c
SS
1188 };
1189
0963b4bd 1190/* This data structure holds the information of an abbrev. */
c906108c
SS
1191struct abbrev_info
1192 {
1193 unsigned int number; /* number identifying abbrev */
1194 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
1195 unsigned short has_children; /* boolean */
1196 unsigned short num_attrs; /* number of attributes */
c906108c
SS
1197 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1198 struct abbrev_info *next; /* next in chain */
1199 };
1200
1201struct attr_abbrev
1202 {
9d25dd43
DE
1203 ENUM_BITFIELD(dwarf_attribute) name : 16;
1204 ENUM_BITFIELD(dwarf_form) form : 16;
43988095
JK
1205
1206 /* It is valid only if FORM is DW_FORM_implicit_const. */
1207 LONGEST implicit_const;
c906108c
SS
1208 };
1209
433df2d4
DE
1210/* Size of abbrev_table.abbrev_hash_table. */
1211#define ABBREV_HASH_SIZE 121
1212
1213/* Top level data structure to contain an abbreviation table. */
1214
1215struct abbrev_table
1216{
685af9cd
TT
1217 explicit abbrev_table (sect_offset off)
1218 : sect_off (off)
1219 {
4a17f768 1220 m_abbrevs =
685af9cd 1221 XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
4a17f768 1222 memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
685af9cd
TT
1223 }
1224
1225 DISABLE_COPY_AND_ASSIGN (abbrev_table);
1226
1227 /* Allocate space for a struct abbrev_info object in
1228 ABBREV_TABLE. */
1229 struct abbrev_info *alloc_abbrev ();
1230
1231 /* Add an abbreviation to the table. */
1232 void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1233
1234 /* Look up an abbrev in the table.
1235 Returns NULL if the abbrev is not found. */
1236
1237 struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1238
1239
f4dc4d17
DE
1240 /* Where the abbrev table came from.
1241 This is used as a sanity check when the table is used. */
685af9cd 1242 const sect_offset sect_off;
433df2d4
DE
1243
1244 /* Storage for the abbrev table. */
685af9cd 1245 auto_obstack abbrev_obstack;
433df2d4 1246
4a17f768
YQ
1247private:
1248
433df2d4
DE
1249 /* Hash table of abbrevs.
1250 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1251 It could be statically allocated, but the previous code didn't so we
1252 don't either. */
4a17f768 1253 struct abbrev_info **m_abbrevs;
433df2d4
DE
1254};
1255
685af9cd
TT
1256typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1257
0963b4bd 1258/* Attributes have a name and a value. */
b60c80d6
DJ
1259struct attribute
1260 {
9d25dd43 1261 ENUM_BITFIELD(dwarf_attribute) name : 16;
8285870a
JK
1262 ENUM_BITFIELD(dwarf_form) form : 15;
1263
1264 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1265 field should be in u.str (existing only for DW_STRING) but it is kept
1266 here for better struct attribute alignment. */
1267 unsigned int string_is_canonical : 1;
1268
b60c80d6
DJ
1269 union
1270 {
15d034d0 1271 const char *str;
b60c80d6 1272 struct dwarf_block *blk;
43bbcdc2
PH
1273 ULONGEST unsnd;
1274 LONGEST snd;
b60c80d6 1275 CORE_ADDR addr;
ac9ec31b 1276 ULONGEST signature;
b60c80d6
DJ
1277 }
1278 u;
1279 };
1280
0963b4bd 1281/* This data structure holds a complete die structure. */
c906108c
SS
1282struct die_info
1283 {
76815b17
DE
1284 /* DWARF-2 tag for this DIE. */
1285 ENUM_BITFIELD(dwarf_tag) tag : 16;
1286
1287 /* Number of attributes */
98bfdba5
PA
1288 unsigned char num_attrs;
1289
1290 /* True if we're presently building the full type name for the
1291 type derived from this DIE. */
1292 unsigned char building_fullname : 1;
76815b17 1293
adde2bff
DE
1294 /* True if this die is in process. PR 16581. */
1295 unsigned char in_process : 1;
1296
76815b17
DE
1297 /* Abbrev number */
1298 unsigned int abbrev;
1299
93311388 1300 /* Offset in .debug_info or .debug_types section. */
9c541725 1301 sect_offset sect_off;
78ba4af6
JB
1302
1303 /* The dies in a compilation unit form an n-ary tree. PARENT
1304 points to this die's parent; CHILD points to the first child of
1305 this node; and all the children of a given node are chained
4950bc1c 1306 together via their SIBLING fields. */
639d11d3
DC
1307 struct die_info *child; /* Its first child, if any. */
1308 struct die_info *sibling; /* Its next sibling, if any. */
1309 struct die_info *parent; /* Its parent, if any. */
c906108c 1310
b60c80d6
DJ
1311 /* An array of attributes, with NUM_ATTRS elements. There may be
1312 zero, but it's not common and zero-sized arrays are not
1313 sufficiently portable C. */
1314 struct attribute attrs[1];
c906108c
SS
1315 };
1316
0963b4bd 1317/* Get at parts of an attribute structure. */
c906108c
SS
1318
1319#define DW_STRING(attr) ((attr)->u.str)
8285870a 1320#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
c906108c
SS
1321#define DW_UNSND(attr) ((attr)->u.unsnd)
1322#define DW_BLOCK(attr) ((attr)->u.blk)
1323#define DW_SND(attr) ((attr)->u.snd)
1324#define DW_ADDR(attr) ((attr)->u.addr)
ac9ec31b 1325#define DW_SIGNATURE(attr) ((attr)->u.signature)
c906108c 1326
0963b4bd 1327/* Blocks are a bunch of untyped bytes. */
c906108c
SS
1328struct dwarf_block
1329 {
56eb65bd 1330 size_t size;
1d6edc3c
JK
1331
1332 /* Valid only if SIZE is not zero. */
d521ce57 1333 const gdb_byte *data;
c906108c
SS
1334 };
1335
c906108c
SS
1336#ifndef ATTR_ALLOC_CHUNK
1337#define ATTR_ALLOC_CHUNK 4
1338#endif
1339
c906108c
SS
1340/* Allocate fields for structs, unions and enums in this size. */
1341#ifndef DW_FIELD_ALLOC_CHUNK
1342#define DW_FIELD_ALLOC_CHUNK 4
1343#endif
1344
c906108c
SS
1345/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1346 but this would require a corresponding change in unpack_field_as_long
1347 and friends. */
1348static int bits_per_byte = 8;
1349
2ddeaf8a
TT
1350/* When reading a variant or variant part, we track a bit more
1351 information about the field, and store it in an object of this
1352 type. */
1353
1354struct variant_field
1355{
1356 /* If we see a DW_TAG_variant, then this will be the discriminant
1357 value. */
1358 ULONGEST discriminant_value;
1359 /* If we see a DW_TAG_variant, then this will be set if this is the
1360 default branch. */
1361 bool default_branch;
1362 /* While reading a DW_TAG_variant_part, this will be set if this
1363 field is the discriminant. */
1364 bool is_discriminant;
1365};
1366
52059ffd
TT
1367struct nextfield
1368{
be2daae6
TT
1369 int accessibility = 0;
1370 int virtuality = 0;
2ddeaf8a 1371 /* Extra information to describe a variant or variant part. */
be2daae6
TT
1372 struct variant_field variant {};
1373 struct field field {};
52059ffd
TT
1374};
1375
1376struct fnfieldlist
1377{
be2daae6
TT
1378 const char *name = nullptr;
1379 std::vector<struct fn_field> fnfields;
52059ffd
TT
1380};
1381
c906108c
SS
1382/* The routines that read and process dies for a C struct or C++ class
1383 pass lists of data member fields and lists of member function fields
1384 in an instance of a field_info structure, as defined below. */
1385struct field_info
c5aa993b 1386 {
0963b4bd 1387 /* List of data member and baseclasses fields. */
be2daae6
TT
1388 std::vector<struct nextfield> fields;
1389 std::vector<struct nextfield> baseclasses;
c906108c 1390
7d0ccb61 1391 /* Number of fields (including baseclasses). */
be2daae6 1392 int nfields = 0;
c906108c 1393
c5aa993b 1394 /* Set if the accesibility of one of the fields is not public. */
be2daae6 1395 int non_public_fields = 0;
c906108c 1396
c5aa993b
JM
1397 /* Member function fieldlist array, contains name of possibly overloaded
1398 member function, number of overloaded member functions and a pointer
1399 to the head of the member function field chain. */
be2daae6 1400 std::vector<struct fnfieldlist> fnfieldlists;
98751a41
JK
1401
1402 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1403 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
be2daae6 1404 std::vector<struct decl_field> typedef_field_list;
883fd55a
KS
1405
1406 /* Nested types defined by this class and the number of elements in this
1407 list. */
be2daae6 1408 std::vector<struct decl_field> nested_types_list;
c5aa993b 1409 };
c906108c 1410
10b3939b
DJ
1411/* One item on the queue of compilation units to read in full symbols
1412 for. */
1413struct dwarf2_queue_item
1414{
1415 struct dwarf2_per_cu_data *per_cu;
95554aad 1416 enum language pretend_language;
10b3939b
DJ
1417 struct dwarf2_queue_item *next;
1418};
1419
1420/* The current queue. */
1421static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1422
ae038cb0
DJ
1423/* Loaded secondary compilation units are kept in memory until they
1424 have not been referenced for the processing of this many
1425 compilation units. Set this to zero to disable caching. Cache
1426 sizes of up to at least twenty will improve startup time for
1427 typical inter-CU-reference binaries, at an obvious memory cost. */
b4f54984 1428static int dwarf_max_cache_age = 5;
920d2a44 1429static void
b4f54984
DE
1430show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1431 struct cmd_list_element *c, const char *value)
920d2a44 1432{
3e43a32a 1433 fprintf_filtered (file, _("The upper bound on the age of cached "
b4f54984 1434 "DWARF compilation units is %s.\n"),
920d2a44
AC
1435 value);
1436}
4390d890 1437\f
c906108c
SS
1438/* local function prototypes */
1439
a32a8923
DE
1440static const char *get_section_name (const struct dwarf2_section_info *);
1441
1442static const char *get_section_file_name (const struct dwarf2_section_info *);
1443
918dd910
JK
1444static void dwarf2_find_base_address (struct die_info *die,
1445 struct dwarf2_cu *cu);
1446
0018ea6f
DE
1447static struct partial_symtab *create_partial_symtab
1448 (struct dwarf2_per_cu_data *per_cu, const char *name);
1449
f1902523
JK
1450static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1451 const gdb_byte *info_ptr,
1452 struct die_info *type_unit_die,
1453 int has_children, void *data);
1454
ed2dc618
SM
1455static void dwarf2_build_psymtabs_hard
1456 (struct dwarf2_per_objfile *dwarf2_per_objfile);
c906108c 1457
72bf9492
DJ
1458static void scan_partial_symbols (struct partial_die_info *,
1459 CORE_ADDR *, CORE_ADDR *,
5734ee8b 1460 int, struct dwarf2_cu *);
c906108c 1461
72bf9492
DJ
1462static void add_partial_symbol (struct partial_die_info *,
1463 struct dwarf2_cu *);
63d06c5c 1464
72bf9492
DJ
1465static void add_partial_namespace (struct partial_die_info *pdi,
1466 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 1467 int set_addrmap, struct dwarf2_cu *cu);
63d06c5c 1468
5d7cb8df 1469static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 1470 CORE_ADDR *highpc, int set_addrmap,
5d7cb8df
JK
1471 struct dwarf2_cu *cu);
1472
72bf9492
DJ
1473static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1474 struct dwarf2_cu *cu);
91c24f0a 1475
bc30ff58
JB
1476static void add_partial_subprogram (struct partial_die_info *pdi,
1477 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 1478 int need_pc, struct dwarf2_cu *cu);
bc30ff58 1479
257e7a09
YQ
1480static void dwarf2_read_symtab (struct partial_symtab *,
1481 struct objfile *);
c906108c 1482
a14ed312 1483static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 1484
685af9cd 1485static abbrev_table_up abbrev_table_read_table
ed2dc618
SM
1486 (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1487 sect_offset);
433df2d4 1488
d521ce57 1489static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
6caca83c 1490
dee91e82 1491static struct partial_die_info *load_partial_dies
d521ce57 1492 (const struct die_reader_specs *, const gdb_byte *, int);
72bf9492 1493
36586728 1494static struct partial_die_info *find_partial_die (sect_offset, int,
10b3939b 1495 struct dwarf2_cu *);
72bf9492 1496
d521ce57
TT
1497static const gdb_byte *read_attribute (const struct die_reader_specs *,
1498 struct attribute *, struct attr_abbrev *,
1499 const gdb_byte *);
a8329558 1500
a1855c1d 1501static unsigned int read_1_byte (bfd *, const gdb_byte *);
c906108c 1502
a1855c1d 1503static int read_1_signed_byte (bfd *, const gdb_byte *);
c906108c 1504
a1855c1d 1505static unsigned int read_2_bytes (bfd *, const gdb_byte *);
c906108c 1506
a1855c1d 1507static unsigned int read_4_bytes (bfd *, const gdb_byte *);
c906108c 1508
a1855c1d 1509static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
c906108c 1510
d521ce57 1511static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 1512 unsigned int *);
c906108c 1513
d521ce57 1514static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
c764a876
DE
1515
1516static LONGEST read_checked_initial_length_and_offset
d521ce57 1517 (bfd *, const gdb_byte *, const struct comp_unit_head *,
c764a876 1518 unsigned int *, unsigned int *);
613e1657 1519
d521ce57
TT
1520static LONGEST read_offset (bfd *, const gdb_byte *,
1521 const struct comp_unit_head *,
c764a876
DE
1522 unsigned int *);
1523
d521ce57 1524static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
613e1657 1525
ed2dc618
SM
1526static sect_offset read_abbrev_offset
1527 (struct dwarf2_per_objfile *dwarf2_per_objfile,
1528 struct dwarf2_section_info *, sect_offset);
f4dc4d17 1529
d521ce57 1530static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
c906108c 1531
d521ce57 1532static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
c906108c 1533
ed2dc618
SM
1534static const char *read_indirect_string
1535 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1536 const struct comp_unit_head *, unsigned int *);
4bdf3d34 1537
ed2dc618
SM
1538static const char *read_indirect_line_string
1539 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1540 const struct comp_unit_head *, unsigned int *);
36586728 1541
ed2dc618
SM
1542static const char *read_indirect_string_at_offset
1543 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1544 LONGEST str_offset);
927aa2e7 1545
ed2dc618
SM
1546static const char *read_indirect_string_from_dwz
1547 (struct objfile *objfile, struct dwz_file *, LONGEST);
c906108c 1548
d521ce57 1549static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1550
d521ce57
TT
1551static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1552 const gdb_byte *,
3019eac3
DE
1553 unsigned int *);
1554
d521ce57 1555static const char *read_str_index (const struct die_reader_specs *reader,
342587c4 1556 ULONGEST str_index);
3019eac3 1557
e142c38c 1558static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 1559
e142c38c
DJ
1560static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1561 struct dwarf2_cu *);
c906108c 1562
348e048f 1563static struct attribute *dwarf2_attr_no_follow (struct die_info *,
45e58e77 1564 unsigned int);
348e048f 1565
7d45c7c3
KB
1566static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1567 struct dwarf2_cu *cu);
1568
05cf31d1
JB
1569static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1570 struct dwarf2_cu *cu);
1571
e142c38c 1572static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 1573
e142c38c 1574static struct die_info *die_specification (struct die_info *die,
f2f0e013 1575 struct dwarf2_cu **);
63d06c5c 1576
9c541725 1577static line_header_up dwarf_decode_line_header (sect_offset sect_off,
fff8551c 1578 struct dwarf2_cu *cu);
debd256d 1579
f3f5162e 1580static void dwarf_decode_lines (struct line_header *, const char *,
c3b7b696 1581 struct dwarf2_cu *, struct partial_symtab *,
527f3840 1582 CORE_ADDR, int decode_mapping);
c906108c 1583
804d2729
TT
1584static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1585 const char *);
c906108c 1586
43f3e411
DE
1587static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1588 const char *, const char *,
1589 CORE_ADDR);
f4dc4d17 1590
a14ed312 1591static struct symbol *new_symbol (struct die_info *, struct type *,
5e2db402 1592 struct dwarf2_cu *, struct symbol * = NULL);
34eaf542 1593
ff39bb5e 1594static void dwarf2_const_value (const struct attribute *, struct symbol *,
e7c27a73 1595 struct dwarf2_cu *);
c906108c 1596
ff39bb5e 1597static void dwarf2_const_value_attr (const struct attribute *attr,
98bfdba5
PA
1598 struct type *type,
1599 const char *name,
1600 struct obstack *obstack,
12df843f 1601 struct dwarf2_cu *cu, LONGEST *value,
d521ce57 1602 const gdb_byte **bytes,
98bfdba5 1603 struct dwarf2_locexpr_baton **baton);
2df3850c 1604
e7c27a73 1605static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 1606
b4ba55a1
JB
1607static int need_gnat_info (struct dwarf2_cu *);
1608
3e43a32a
MS
1609static struct type *die_descriptive_type (struct die_info *,
1610 struct dwarf2_cu *);
b4ba55a1
JB
1611
1612static void set_descriptive_type (struct type *, struct die_info *,
1613 struct dwarf2_cu *);
1614
e7c27a73
DJ
1615static struct type *die_containing_type (struct die_info *,
1616 struct dwarf2_cu *);
c906108c 1617
ff39bb5e 1618static struct type *lookup_die_type (struct die_info *, const struct attribute *,
673bfd45 1619 struct dwarf2_cu *);
c906108c 1620
f792889a 1621static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 1622
673bfd45
DE
1623static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1624
0d5cff50 1625static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 1626
6e70227d 1627static char *typename_concat (struct obstack *obs, const char *prefix,
f55ee35c
JK
1628 const char *suffix, int physname,
1629 struct dwarf2_cu *cu);
63d06c5c 1630
e7c27a73 1631static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1632
348e048f
DE
1633static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1634
e7c27a73 1635static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1636
e7c27a73 1637static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1638
96408a79
SA
1639static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1640
71a3c369
TT
1641static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1642
ff013f42
JK
1643static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1644 struct dwarf2_cu *, struct partial_symtab *);
1645
3a2b436a 1646/* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
e385593e 1647 values. Keep the items ordered with increasing constraints compliance. */
3a2b436a
JK
1648enum pc_bounds_kind
1649{
e385593e 1650 /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found. */
3a2b436a
JK
1651 PC_BOUNDS_NOT_PRESENT,
1652
e385593e
JK
1653 /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1654 were present but they do not form a valid range of PC addresses. */
1655 PC_BOUNDS_INVALID,
1656
3a2b436a
JK
1657 /* Discontiguous range was found - that is DW_AT_ranges was found. */
1658 PC_BOUNDS_RANGES,
1659
1660 /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found. */
1661 PC_BOUNDS_HIGH_LOW,
1662};
1663
1664static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1665 CORE_ADDR *, CORE_ADDR *,
1666 struct dwarf2_cu *,
1667 struct partial_symtab *);
c906108c 1668
fae299cd
DC
1669static void get_scope_pc_bounds (struct die_info *,
1670 CORE_ADDR *, CORE_ADDR *,
1671 struct dwarf2_cu *);
1672
801e3a5b
JB
1673static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1674 CORE_ADDR, struct dwarf2_cu *);
1675
a14ed312 1676static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 1677 struct dwarf2_cu *);
c906108c 1678
a14ed312 1679static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 1680 struct type *, struct dwarf2_cu *);
c906108c 1681
a14ed312 1682static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 1683 struct die_info *, struct type *,
e7c27a73 1684 struct dwarf2_cu *);
c906108c 1685
a14ed312 1686static void dwarf2_attach_fn_fields_to_type (struct field_info *,
3e43a32a
MS
1687 struct type *,
1688 struct dwarf2_cu *);
c906108c 1689
134d01f1 1690static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1691
e7c27a73 1692static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 1693
e7c27a73 1694static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 1695
5d7cb8df
JK
1696static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1697
804d2729 1698static struct using_direct **using_directives (struct dwarf2_cu *cu);
22cee43f 1699
27aa8d6a
SW
1700static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1701
74921315
KS
1702static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1703
f55ee35c
JK
1704static struct type *read_module_type (struct die_info *die,
1705 struct dwarf2_cu *cu);
1706
38d518c9 1707static const char *namespace_name (struct die_info *die,
e142c38c 1708 int *is_anonymous, struct dwarf2_cu *);
38d518c9 1709
134d01f1 1710static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1711
e7c27a73 1712static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 1713
6e70227d 1714static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
7ca2d3a3
DL
1715 struct dwarf2_cu *);
1716
bf6af496 1717static struct die_info *read_die_and_siblings_1
d521ce57 1718 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
bf6af496 1719 struct die_info *);
639d11d3 1720
dee91e82 1721static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
d521ce57
TT
1722 const gdb_byte *info_ptr,
1723 const gdb_byte **new_info_ptr,
639d11d3
DC
1724 struct die_info *parent);
1725
d521ce57
TT
1726static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1727 struct die_info **, const gdb_byte *,
1728 int *, int);
3019eac3 1729
d521ce57
TT
1730static const gdb_byte *read_full_die (const struct die_reader_specs *,
1731 struct die_info **, const gdb_byte *,
1732 int *);
93311388 1733
e7c27a73 1734static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 1735
15d034d0
TT
1736static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1737 struct obstack *);
71c25dea 1738
15d034d0 1739static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 1740
15d034d0 1741static const char *dwarf2_full_name (const char *name,
98bfdba5
PA
1742 struct die_info *die,
1743 struct dwarf2_cu *cu);
1744
ca69b9e6
DE
1745static const char *dwarf2_physname (const char *name, struct die_info *die,
1746 struct dwarf2_cu *cu);
1747
e142c38c 1748static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 1749 struct dwarf2_cu **);
9219021c 1750
f39c6ffd 1751static const char *dwarf_tag_name (unsigned int);
c906108c 1752
f39c6ffd 1753static const char *dwarf_attr_name (unsigned int);
c906108c 1754
f39c6ffd 1755static const char *dwarf_form_name (unsigned int);
c906108c 1756
a121b7c1 1757static const char *dwarf_bool_name (unsigned int);
c906108c 1758
f39c6ffd 1759static const char *dwarf_type_encoding_name (unsigned int);
c906108c 1760
f9aca02d 1761static struct die_info *sibling_die (struct die_info *);
c906108c 1762
d97bc12b
DE
1763static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1764
1765static void dump_die_for_error (struct die_info *);
1766
1767static void dump_die_1 (struct ui_file *, int level, int max_level,
1768 struct die_info *);
c906108c 1769
d97bc12b 1770/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1771
51545339 1772static void store_in_ref_table (struct die_info *,
10b3939b 1773 struct dwarf2_cu *);
c906108c 1774
ff39bb5e 1775static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
c906108c 1776
ff39bb5e 1777static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
a02abb62 1778
348e048f 1779static struct die_info *follow_die_ref_or_sig (struct die_info *,
ff39bb5e 1780 const struct attribute *,
348e048f
DE
1781 struct dwarf2_cu **);
1782
10b3939b 1783static struct die_info *follow_die_ref (struct die_info *,
ff39bb5e 1784 const struct attribute *,
f2f0e013 1785 struct dwarf2_cu **);
c906108c 1786
348e048f 1787static struct die_info *follow_die_sig (struct die_info *,
ff39bb5e 1788 const struct attribute *,
348e048f
DE
1789 struct dwarf2_cu **);
1790
ac9ec31b
DE
1791static struct type *get_signatured_type (struct die_info *, ULONGEST,
1792 struct dwarf2_cu *);
1793
1794static struct type *get_DW_AT_signature_type (struct die_info *,
ff39bb5e 1795 const struct attribute *,
ac9ec31b
DE
1796 struct dwarf2_cu *);
1797
e5fe5e75 1798static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
348e048f 1799
52dc124a 1800static void read_signatured_type (struct signatured_type *);
348e048f 1801
63e43d3a
PMR
1802static int attr_to_dynamic_prop (const struct attribute *attr,
1803 struct die_info *die, struct dwarf2_cu *cu,
1804 struct dynamic_prop *prop);
1805
c906108c
SS
1806/* memory allocation interface */
1807
7b5a2f43 1808static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1809
b60c80d6 1810static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1811
43f3e411 1812static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2e276125 1813
6e5a29e1 1814static int attr_form_is_block (const struct attribute *);
8e19ed76 1815
6e5a29e1 1816static int attr_form_is_section_offset (const struct attribute *);
3690dd37 1817
6e5a29e1 1818static int attr_form_is_constant (const struct attribute *);
3690dd37 1819
6e5a29e1 1820static int attr_form_is_ref (const struct attribute *);
7771576e 1821
8cf6f0b1
TT
1822static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1823 struct dwarf2_loclist_baton *baton,
ff39bb5e 1824 const struct attribute *attr);
8cf6f0b1 1825
ff39bb5e 1826static void dwarf2_symbol_mark_computed (const struct attribute *attr,
93e7bd98 1827 struct symbol *sym,
f1e6e072
TT
1828 struct dwarf2_cu *cu,
1829 int is_block);
4c2df51b 1830
d521ce57
TT
1831static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1832 const gdb_byte *info_ptr,
1833 struct abbrev_info *abbrev);
4bb7a0a7 1834
72bf9492
DJ
1835static hashval_t partial_die_hash (const void *item);
1836
1837static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1838
ae038cb0 1839static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
ed2dc618
SM
1840 (sect_offset sect_off, unsigned int offset_in_dwz,
1841 struct dwarf2_per_objfile *dwarf2_per_objfile);
ae038cb0 1842
9816fde3 1843static void prepare_one_comp_unit (struct dwarf2_cu *cu,
95554aad
TT
1844 struct die_info *comp_unit_die,
1845 enum language pretend_language);
93311388 1846
ed2dc618 1847static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
ae038cb0 1848
dee91e82 1849static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
ae038cb0 1850
f792889a
DJ
1851static struct type *set_die_type (struct die_info *, struct type *,
1852 struct dwarf2_cu *);
1c379e20 1853
ed2dc618 1854static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
ae038cb0 1855
ed2dc618 1856static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1fd400ff 1857
58f0c718 1858static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
95554aad 1859 enum language);
10b3939b 1860
95554aad
TT
1861static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1862 enum language);
10b3939b 1863
f4dc4d17
DE
1864static void process_full_type_unit (struct dwarf2_per_cu_data *,
1865 enum language);
1866
10b3939b
DJ
1867static void dwarf2_add_dependence (struct dwarf2_cu *,
1868 struct dwarf2_per_cu_data *);
1869
ae038cb0
DJ
1870static void dwarf2_mark (struct dwarf2_cu *);
1871
1872static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1873
b64f50a1 1874static struct type *get_die_type_at_offset (sect_offset,
ac9ec31b 1875 struct dwarf2_per_cu_data *);
673bfd45 1876
f792889a 1877static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1878
95554aad
TT
1879static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1880 enum language pretend_language);
1881
ed2dc618 1882static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
9291a0cd 1883
b303c6f6
AB
1884/* Class, the destructor of which frees all allocated queue entries. This
1885 will only have work to do if an error was thrown while processing the
1886 dwarf. If no error was thrown then the queue entries should have all
1887 been processed, and freed, as we went along. */
1888
1889class dwarf2_queue_guard
1890{
1891public:
1892 dwarf2_queue_guard () = default;
1893
1894 /* Free any entries remaining on the queue. There should only be
1895 entries left if we hit an error while processing the dwarf. */
1896 ~dwarf2_queue_guard ()
1897 {
1898 struct dwarf2_queue_item *item, *last;
1899
1900 item = dwarf2_queue;
1901 while (item)
1902 {
1903 /* Anything still marked queued is likely to be in an
1904 inconsistent state, so discard it. */
1905 if (item->per_cu->queued)
1906 {
1907 if (item->per_cu->cu != NULL)
1908 free_one_cached_comp_unit (item->per_cu);
1909 item->per_cu->queued = 0;
1910 }
1911
1912 last = item;
1913 item = item->next;
1914 xfree (last);
1915 }
1916
1917 dwarf2_queue = dwarf2_queue_tail = NULL;
1918 }
1919};
1920
d721ba37
PA
1921/* The return type of find_file_and_directory. Note, the enclosed
1922 string pointers are only valid while this object is valid. */
1923
1924struct file_and_directory
1925{
1926 /* The filename. This is never NULL. */
1927 const char *name;
1928
1929 /* The compilation directory. NULL if not known. If we needed to
1930 compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1931 points directly to the DW_AT_comp_dir string attribute owned by
1932 the obstack that owns the DIE. */
1933 const char *comp_dir;
1934
1935 /* If we needed to build a new string for comp_dir, this is what
1936 owns the storage. */
1937 std::string comp_dir_storage;
1938};
1939
1940static file_and_directory find_file_and_directory (struct die_info *die,
1941 struct dwarf2_cu *cu);
9291a0cd
TT
1942
1943static char *file_full_name (int file, struct line_header *lh,
1944 const char *comp_dir);
1945
43988095
JK
1946/* Expected enum dwarf_unit_type for read_comp_unit_head. */
1947enum class rcuh_kind { COMPILE, TYPE };
1948
d521ce57 1949static const gdb_byte *read_and_check_comp_unit_head
ed2dc618
SM
1950 (struct dwarf2_per_objfile* dwarf2_per_objfile,
1951 struct comp_unit_head *header,
36586728 1952 struct dwarf2_section_info *section,
d521ce57 1953 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
43988095 1954 rcuh_kind section_kind);
36586728 1955
fd820528 1956static void init_cutu_and_read_dies
f4dc4d17 1957 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
58f0c718 1958 int use_existing_cu, int keep, bool skip_partial,
3019eac3
DE
1959 die_reader_func_ftype *die_reader_func, void *data);
1960
dee91e82
DE
1961static void init_cutu_and_read_dies_simple
1962 (struct dwarf2_per_cu_data *this_cu,
1963 die_reader_func_ftype *die_reader_func, void *data);
9291a0cd 1964
673bfd45 1965static htab_t allocate_signatured_type_table (struct objfile *objfile);
1fd400ff 1966
3019eac3
DE
1967static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1968
57d63ce2 1969static struct dwo_unit *lookup_dwo_unit_in_dwp
ed2dc618
SM
1970 (struct dwarf2_per_objfile *dwarf2_per_objfile,
1971 struct dwp_file *dwp_file, const char *comp_dir,
57d63ce2 1972 ULONGEST signature, int is_debug_types);
a2ce51a0 1973
ed2dc618
SM
1974static struct dwp_file *get_dwp_file
1975 (struct dwarf2_per_objfile *dwarf2_per_objfile);
a2ce51a0 1976
3019eac3 1977static struct dwo_unit *lookup_dwo_comp_unit
a1855c1d 1978 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
3019eac3
DE
1979
1980static struct dwo_unit *lookup_dwo_type_unit
a1855c1d 1981 (struct signatured_type *, const char *, const char *);
3019eac3 1982
89e63ee4
DE
1983static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1984
263db9a1 1985static void free_dwo_file (struct dwo_file *);
3019eac3 1986
263db9a1
TT
1987/* A unique_ptr helper to free a dwo_file. */
1988
1989struct dwo_file_deleter
ed2dc618 1990{
263db9a1
TT
1991 void operator() (struct dwo_file *df) const
1992 {
1993 free_dwo_file (df);
1994 }
ed2dc618
SM
1995};
1996
263db9a1
TT
1997/* A unique pointer to a dwo_file. */
1998
1999typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
2000
ed2dc618 2001static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
95554aad 2002
1b80a9fa 2003static void check_producer (struct dwarf2_cu *cu);
527f3840
JK
2004
2005static void free_line_header_voidp (void *arg);
4390d890
DE
2006\f
2007/* Various complaints about symbol reading that don't abort the process. */
2008
2009static void
2010dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2011{
b98664d3 2012 complaint (_("statement list doesn't fit in .debug_line section"));
4390d890
DE
2013}
2014
2015static void
2016dwarf2_debug_line_missing_file_complaint (void)
2017{
b98664d3 2018 complaint (_(".debug_line section has line data without a file"));
4390d890
DE
2019}
2020
2021static void
2022dwarf2_debug_line_missing_end_sequence_complaint (void)
2023{
b98664d3 2024 complaint (_(".debug_line section has line "
4390d890
DE
2025 "program sequence without an end"));
2026}
2027
2028static void
2029dwarf2_complex_location_expr_complaint (void)
2030{
b98664d3 2031 complaint (_("location expression too complex"));
4390d890
DE
2032}
2033
2034static void
2035dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2036 int arg3)
2037{
b98664d3 2038 complaint (_("const value length mismatch for '%s', got %d, expected %d"),
4390d890
DE
2039 arg1, arg2, arg3);
2040}
2041
2042static void
2043dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2044{
b98664d3 2045 complaint (_("debug info runs off end of %s section"
4390d890 2046 " [in module %s]"),
a32a8923
DE
2047 get_section_name (section),
2048 get_section_file_name (section));
4390d890 2049}
1b80a9fa 2050
4390d890
DE
2051static void
2052dwarf2_macro_malformed_definition_complaint (const char *arg1)
2053{
b98664d3 2054 complaint (_("macro debug info contains a "
4390d890
DE
2055 "malformed macro definition:\n`%s'"),
2056 arg1);
2057}
2058
2059static void
2060dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2061{
b98664d3 2062 complaint (_("invalid attribute class or form for '%s' in '%s'"),
4390d890
DE
2063 arg1, arg2);
2064}
527f3840
JK
2065
2066/* Hash function for line_header_hash. */
2067
2068static hashval_t
2069line_header_hash (const struct line_header *ofs)
2070{
9c541725 2071 return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
527f3840
JK
2072}
2073
2074/* Hash function for htab_create_alloc_ex for line_header_hash. */
2075
2076static hashval_t
2077line_header_hash_voidp (const void *item)
2078{
9a3c8263 2079 const struct line_header *ofs = (const struct line_header *) item;
527f3840
JK
2080
2081 return line_header_hash (ofs);
2082}
2083
2084/* Equality function for line_header_hash. */
2085
2086static int
2087line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2088{
9a3c8263
SM
2089 const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2090 const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
527f3840 2091
9c541725 2092 return (ofs_lhs->sect_off == ofs_rhs->sect_off
527f3840
JK
2093 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2094}
2095
4390d890 2096\f
9291a0cd 2097
31aa7e4e
JB
2098/* Read the given attribute value as an address, taking the attribute's
2099 form into account. */
2100
2101static CORE_ADDR
2102attr_value_as_address (struct attribute *attr)
2103{
2104 CORE_ADDR addr;
2105
2106 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2107 {
2108 /* Aside from a few clearly defined exceptions, attributes that
2109 contain an address must always be in DW_FORM_addr form.
2110 Unfortunately, some compilers happen to be violating this
2111 requirement by encoding addresses using other forms, such
2112 as DW_FORM_data4 for example. For those broken compilers,
2113 we try to do our best, without any guarantee of success,
2114 to interpret the address correctly. It would also be nice
2115 to generate a complaint, but that would require us to maintain
2116 a list of legitimate cases where a non-address form is allowed,
2117 as well as update callers to pass in at least the CU's DWARF
2118 version. This is more overhead than what we're willing to
2119 expand for a pretty rare case. */
2120 addr = DW_UNSND (attr);
2121 }
2122 else
2123 addr = DW_ADDR (attr);
2124
2125 return addr;
2126}
2127
330cdd98
PA
2128/* See declaration. */
2129
2130dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2131 const dwarf2_debug_sections *names)
2132 : objfile (objfile_)
2133{
2134 if (names == NULL)
2135 names = &dwarf2_elf_names;
2136
2137 bfd *obfd = objfile->obfd;
2138
2139 for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2140 locate_sections (obfd, sec, *names);
2141}
2142
fc8e7e75
SM
2143static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2144
330cdd98
PA
2145dwarf2_per_objfile::~dwarf2_per_objfile ()
2146{
2147 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
2148 free_cached_comp_units ();
2149
2150 if (quick_file_names_table)
2151 htab_delete (quick_file_names_table);
2152
2153 if (line_header_hash)
2154 htab_delete (line_header_hash);
2155
b76e467d
SM
2156 for (dwarf2_per_cu_data *per_cu : all_comp_units)
2157 VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
fc8e7e75 2158
b2bdb8cf
SM
2159 for (signatured_type *sig_type : all_type_units)
2160 VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
fc8e7e75
SM
2161
2162 VEC_free (dwarf2_section_info_def, types);
2163
2164 if (dwo_files != NULL)
2165 free_dwo_files (dwo_files, objfile);
fc8e7e75 2166
330cdd98
PA
2167 /* Everything else should be on the objfile obstack. */
2168}
2169
2170/* See declaration. */
2171
2172void
2173dwarf2_per_objfile::free_cached_comp_units ()
2174{
2175 dwarf2_per_cu_data *per_cu = read_in_chain;
2176 dwarf2_per_cu_data **last_chain = &read_in_chain;
2177 while (per_cu != NULL)
2178 {
2179 dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2180
fcd3b13d 2181 delete per_cu->cu;
330cdd98
PA
2182 *last_chain = next_cu;
2183 per_cu = next_cu;
2184 }
2185}
2186
11ed8cad
TT
2187/* A helper class that calls free_cached_comp_units on
2188 destruction. */
2189
2190class free_cached_comp_units
2191{
2192public:
2193
2194 explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2195 : m_per_objfile (per_objfile)
2196 {
2197 }
2198
2199 ~free_cached_comp_units ()
2200 {
2201 m_per_objfile->free_cached_comp_units ();
2202 }
2203
2204 DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2205
2206private:
2207
2208 dwarf2_per_objfile *m_per_objfile;
2209};
2210
c906108c 2211/* Try to locate the sections we need for DWARF 2 debugging
251d32d9
TG
2212 information and return true if we have enough to do something.
2213 NAMES points to the dwarf2 section names, or is NULL if the standard
2214 ELF names are used. */
c906108c
SS
2215
2216int
251d32d9
TG
2217dwarf2_has_info (struct objfile *objfile,
2218 const struct dwarf2_debug_sections *names)
c906108c 2219{
97cbe998
SDJ
2220 if (objfile->flags & OBJF_READNEVER)
2221 return 0;
2222
ed2dc618
SM
2223 struct dwarf2_per_objfile *dwarf2_per_objfile
2224 = get_dwarf2_per_objfile (objfile);
2225
2226 if (dwarf2_per_objfile == NULL)
be391dca
TT
2227 {
2228 /* Initialize per-objfile state. */
fd90ace4
YQ
2229 dwarf2_per_objfile
2230 = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2231 names);
ed2dc618 2232 set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
be391dca 2233 }
73869dc2 2234 return (!dwarf2_per_objfile->info.is_virtual
049412e3 2235 && dwarf2_per_objfile->info.s.section != NULL
73869dc2 2236 && !dwarf2_per_objfile->abbrev.is_virtual
049412e3 2237 && dwarf2_per_objfile->abbrev.s.section != NULL);
73869dc2
DE
2238}
2239
2240/* Return the containing section of virtual section SECTION. */
2241
2242static struct dwarf2_section_info *
2243get_containing_section (const struct dwarf2_section_info *section)
2244{
2245 gdb_assert (section->is_virtual);
2246 return section->s.containing_section;
c906108c
SS
2247}
2248
a32a8923
DE
2249/* Return the bfd owner of SECTION. */
2250
2251static struct bfd *
2252get_section_bfd_owner (const struct dwarf2_section_info *section)
2253{
73869dc2
DE
2254 if (section->is_virtual)
2255 {
2256 section = get_containing_section (section);
2257 gdb_assert (!section->is_virtual);
2258 }
049412e3 2259 return section->s.section->owner;
a32a8923
DE
2260}
2261
2262/* Return the bfd section of SECTION.
2263 Returns NULL if the section is not present. */
2264
2265static asection *
2266get_section_bfd_section (const struct dwarf2_section_info *section)
2267{
73869dc2
DE
2268 if (section->is_virtual)
2269 {
2270 section = get_containing_section (section);
2271 gdb_assert (!section->is_virtual);
2272 }
049412e3 2273 return section->s.section;
a32a8923
DE
2274}
2275
2276/* Return the name of SECTION. */
2277
2278static const char *
2279get_section_name (const struct dwarf2_section_info *section)
2280{
2281 asection *sectp = get_section_bfd_section (section);
2282
2283 gdb_assert (sectp != NULL);
2284 return bfd_section_name (get_section_bfd_owner (section), sectp);
2285}
2286
2287/* Return the name of the file SECTION is in. */
2288
2289static const char *
2290get_section_file_name (const struct dwarf2_section_info *section)
2291{
2292 bfd *abfd = get_section_bfd_owner (section);
2293
2294 return bfd_get_filename (abfd);
2295}
2296
2297/* Return the id of SECTION.
2298 Returns 0 if SECTION doesn't exist. */
2299
2300static int
2301get_section_id (const struct dwarf2_section_info *section)
2302{
2303 asection *sectp = get_section_bfd_section (section);
2304
2305 if (sectp == NULL)
2306 return 0;
2307 return sectp->id;
2308}
2309
2310/* Return the flags of SECTION.
73869dc2 2311 SECTION (or containing section if this is a virtual section) must exist. */
a32a8923
DE
2312
2313static int
2314get_section_flags (const struct dwarf2_section_info *section)
2315{
2316 asection *sectp = get_section_bfd_section (section);
2317
2318 gdb_assert (sectp != NULL);
2319 return bfd_get_section_flags (sectp->owner, sectp);
2320}
2321
251d32d9
TG
2322/* When loading sections, we look either for uncompressed section or for
2323 compressed section names. */
233a11ab
CS
2324
2325static int
251d32d9
TG
2326section_is_p (const char *section_name,
2327 const struct dwarf2_section_names *names)
233a11ab 2328{
251d32d9
TG
2329 if (names->normal != NULL
2330 && strcmp (section_name, names->normal) == 0)
2331 return 1;
2332 if (names->compressed != NULL
2333 && strcmp (section_name, names->compressed) == 0)
2334 return 1;
2335 return 0;
233a11ab
CS
2336}
2337
330cdd98 2338/* See declaration. */
c906108c 2339
330cdd98
PA
2340void
2341dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2342 const dwarf2_debug_sections &names)
c906108c 2343{
dc7650b8 2344 flagword aflag = bfd_get_section_flags (abfd, sectp);
251d32d9 2345
dc7650b8
JK
2346 if ((aflag & SEC_HAS_CONTENTS) == 0)
2347 {
2348 }
330cdd98 2349 else if (section_is_p (sectp->name, &names.info))
c906108c 2350 {
330cdd98
PA
2351 this->info.s.section = sectp;
2352 this->info.size = bfd_get_section_size (sectp);
c906108c 2353 }
330cdd98 2354 else if (section_is_p (sectp->name, &names.abbrev))
c906108c 2355 {
330cdd98
PA
2356 this->abbrev.s.section = sectp;
2357 this->abbrev.size = bfd_get_section_size (sectp);
c906108c 2358 }
330cdd98 2359 else if (section_is_p (sectp->name, &names.line))
c906108c 2360 {
330cdd98
PA
2361 this->line.s.section = sectp;
2362 this->line.size = bfd_get_section_size (sectp);
c906108c 2363 }
330cdd98 2364 else if (section_is_p (sectp->name, &names.loc))
c906108c 2365 {
330cdd98
PA
2366 this->loc.s.section = sectp;
2367 this->loc.size = bfd_get_section_size (sectp);
c906108c 2368 }
330cdd98 2369 else if (section_is_p (sectp->name, &names.loclists))
43988095 2370 {
330cdd98
PA
2371 this->loclists.s.section = sectp;
2372 this->loclists.size = bfd_get_section_size (sectp);
43988095 2373 }
330cdd98 2374 else if (section_is_p (sectp->name, &names.macinfo))
c906108c 2375 {
330cdd98
PA
2376 this->macinfo.s.section = sectp;
2377 this->macinfo.size = bfd_get_section_size (sectp);
c906108c 2378 }
330cdd98 2379 else if (section_is_p (sectp->name, &names.macro))
cf2c3c16 2380 {
330cdd98
PA
2381 this->macro.s.section = sectp;
2382 this->macro.size = bfd_get_section_size (sectp);
cf2c3c16 2383 }
330cdd98 2384 else if (section_is_p (sectp->name, &names.str))
c906108c 2385 {
330cdd98
PA
2386 this->str.s.section = sectp;
2387 this->str.size = bfd_get_section_size (sectp);
c906108c 2388 }
330cdd98 2389 else if (section_is_p (sectp->name, &names.line_str))
43988095 2390 {
330cdd98
PA
2391 this->line_str.s.section = sectp;
2392 this->line_str.size = bfd_get_section_size (sectp);
43988095 2393 }
330cdd98 2394 else if (section_is_p (sectp->name, &names.addr))
3019eac3 2395 {
330cdd98
PA
2396 this->addr.s.section = sectp;
2397 this->addr.size = bfd_get_section_size (sectp);
3019eac3 2398 }
330cdd98 2399 else if (section_is_p (sectp->name, &names.frame))
b6af0555 2400 {
330cdd98
PA
2401 this->frame.s.section = sectp;
2402 this->frame.size = bfd_get_section_size (sectp);
b6af0555 2403 }
330cdd98 2404 else if (section_is_p (sectp->name, &names.eh_frame))
b6af0555 2405 {
330cdd98
PA
2406 this->eh_frame.s.section = sectp;
2407 this->eh_frame.size = bfd_get_section_size (sectp);
b6af0555 2408 }
330cdd98 2409 else if (section_is_p (sectp->name, &names.ranges))
af34e669 2410 {
330cdd98
PA
2411 this->ranges.s.section = sectp;
2412 this->ranges.size = bfd_get_section_size (sectp);
af34e669 2413 }
330cdd98 2414 else if (section_is_p (sectp->name, &names.rnglists))
43988095 2415 {
330cdd98
PA
2416 this->rnglists.s.section = sectp;
2417 this->rnglists.size = bfd_get_section_size (sectp);
43988095 2418 }
330cdd98 2419 else if (section_is_p (sectp->name, &names.types))
348e048f 2420 {
8b70b953
TT
2421 struct dwarf2_section_info type_section;
2422
2423 memset (&type_section, 0, sizeof (type_section));
049412e3 2424 type_section.s.section = sectp;
8b70b953
TT
2425 type_section.size = bfd_get_section_size (sectp);
2426
330cdd98 2427 VEC_safe_push (dwarf2_section_info_def, this->types,
8b70b953 2428 &type_section);
348e048f 2429 }
330cdd98 2430 else if (section_is_p (sectp->name, &names.gdb_index))
9291a0cd 2431 {
330cdd98
PA
2432 this->gdb_index.s.section = sectp;
2433 this->gdb_index.size = bfd_get_section_size (sectp);
9291a0cd 2434 }
927aa2e7
JK
2435 else if (section_is_p (sectp->name, &names.debug_names))
2436 {
2437 this->debug_names.s.section = sectp;
2438 this->debug_names.size = bfd_get_section_size (sectp);
2439 }
2440 else if (section_is_p (sectp->name, &names.debug_aranges))
2441 {
2442 this->debug_aranges.s.section = sectp;
2443 this->debug_aranges.size = bfd_get_section_size (sectp);
2444 }
dce234bc 2445
b4e1fd61 2446 if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
72dca2f5 2447 && bfd_section_vma (abfd, sectp) == 0)
330cdd98 2448 this->has_section_at_zero = true;
c906108c
SS
2449}
2450
fceca515
DE
2451/* A helper function that decides whether a section is empty,
2452 or not present. */
9e0ac564
TT
2453
2454static int
19ac8c2e 2455dwarf2_section_empty_p (const struct dwarf2_section_info *section)
9e0ac564 2456{
73869dc2
DE
2457 if (section->is_virtual)
2458 return section->size == 0;
049412e3 2459 return section->s.section == NULL || section->size == 0;
9e0ac564
TT
2460}
2461
cd4fb1b2 2462/* See dwarf2read.h. */
c906108c 2463
cd4fb1b2
SM
2464void
2465dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
c906108c 2466{
a32a8923 2467 asection *sectp;
3019eac3 2468 bfd *abfd;
dce234bc 2469 gdb_byte *buf, *retbuf;
c906108c 2470
be391dca
TT
2471 if (info->readin)
2472 return;
dce234bc 2473 info->buffer = NULL;
be391dca 2474 info->readin = 1;
188dd5d6 2475
9e0ac564 2476 if (dwarf2_section_empty_p (info))
dce234bc 2477 return;
c906108c 2478
a32a8923 2479 sectp = get_section_bfd_section (info);
3019eac3 2480
73869dc2
DE
2481 /* If this is a virtual section we need to read in the real one first. */
2482 if (info->is_virtual)
2483 {
2484 struct dwarf2_section_info *containing_section =
2485 get_containing_section (info);
2486
2487 gdb_assert (sectp != NULL);
2488 if ((sectp->flags & SEC_RELOC) != 0)
2489 {
2490 error (_("Dwarf Error: DWP format V2 with relocations is not"
2491 " supported in section %s [in module %s]"),
2492 get_section_name (info), get_section_file_name (info));
2493 }
2494 dwarf2_read_section (objfile, containing_section);
2495 /* Other code should have already caught virtual sections that don't
2496 fit. */
2497 gdb_assert (info->virtual_offset + info->size
2498 <= containing_section->size);
2499 /* If the real section is empty or there was a problem reading the
2500 section we shouldn't get here. */
2501 gdb_assert (containing_section->buffer != NULL);
2502 info->buffer = containing_section->buffer + info->virtual_offset;
2503 return;
2504 }
2505
4bf44c1c
TT
2506 /* If the section has relocations, we must read it ourselves.
2507 Otherwise we attach it to the BFD. */
2508 if ((sectp->flags & SEC_RELOC) == 0)
dce234bc 2509 {
d521ce57 2510 info->buffer = gdb_bfd_map_section (sectp, &info->size);
4bf44c1c 2511 return;
dce234bc 2512 }
dce234bc 2513
224c3ddb 2514 buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
4bf44c1c 2515 info->buffer = buf;
dce234bc
PP
2516
2517 /* When debugging .o files, we may need to apply relocations; see
2518 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2519 We never compress sections in .o files, so we only need to
2520 try this when the section is not compressed. */
ac8035ab 2521 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
dce234bc
PP
2522 if (retbuf != NULL)
2523 {
2524 info->buffer = retbuf;
2525 return;
2526 }
2527
a32a8923
DE
2528 abfd = get_section_bfd_owner (info);
2529 gdb_assert (abfd != NULL);
2530
dce234bc
PP
2531 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2532 || bfd_bread (buf, info->size, abfd) != info->size)
19ac8c2e
DE
2533 {
2534 error (_("Dwarf Error: Can't read DWARF data"
2535 " in section %s [in module %s]"),
2536 bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2537 }
dce234bc
PP
2538}
2539
9e0ac564
TT
2540/* A helper function that returns the size of a section in a safe way.
2541 If you are positive that the section has been read before using the
2542 size, then it is safe to refer to the dwarf2_section_info object's
2543 "size" field directly. In other cases, you must call this
2544 function, because for compressed sections the size field is not set
2545 correctly until the section has been read. */
2546
2547static bfd_size_type
2548dwarf2_section_size (struct objfile *objfile,
2549 struct dwarf2_section_info *info)
2550{
2551 if (!info->readin)
2552 dwarf2_read_section (objfile, info);
2553 return info->size;
2554}
2555
dce234bc 2556/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
0963b4bd 2557 SECTION_NAME. */
af34e669 2558
dce234bc 2559void
3017a003
TG
2560dwarf2_get_section_info (struct objfile *objfile,
2561 enum dwarf2_section_enum sect,
d521ce57 2562 asection **sectp, const gdb_byte **bufp,
dce234bc
PP
2563 bfd_size_type *sizep)
2564{
2565 struct dwarf2_per_objfile *data
9a3c8263
SM
2566 = (struct dwarf2_per_objfile *) objfile_data (objfile,
2567 dwarf2_objfile_data_key);
dce234bc 2568 struct dwarf2_section_info *info;
a3b2a86b
TT
2569
2570 /* We may see an objfile without any DWARF, in which case we just
2571 return nothing. */
2572 if (data == NULL)
2573 {
2574 *sectp = NULL;
2575 *bufp = NULL;
2576 *sizep = 0;
2577 return;
2578 }
3017a003
TG
2579 switch (sect)
2580 {
2581 case DWARF2_DEBUG_FRAME:
2582 info = &data->frame;
2583 break;
2584 case DWARF2_EH_FRAME:
2585 info = &data->eh_frame;
2586 break;
2587 default:
2588 gdb_assert_not_reached ("unexpected section");
2589 }
dce234bc 2590
9e0ac564 2591 dwarf2_read_section (objfile, info);
dce234bc 2592
a32a8923 2593 *sectp = get_section_bfd_section (info);
dce234bc
PP
2594 *bufp = info->buffer;
2595 *sizep = info->size;
2596}
2597
36586728
TT
2598/* A helper function to find the sections for a .dwz file. */
2599
2600static void
2601locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2602{
9a3c8263 2603 struct dwz_file *dwz_file = (struct dwz_file *) arg;
36586728
TT
2604
2605 /* Note that we only support the standard ELF names, because .dwz
2606 is ELF-only (at the time of writing). */
2607 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2608 {
049412e3 2609 dwz_file->abbrev.s.section = sectp;
36586728
TT
2610 dwz_file->abbrev.size = bfd_get_section_size (sectp);
2611 }
2612 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2613 {
049412e3 2614 dwz_file->info.s.section = sectp;
36586728
TT
2615 dwz_file->info.size = bfd_get_section_size (sectp);
2616 }
2617 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2618 {
049412e3 2619 dwz_file->str.s.section = sectp;
36586728
TT
2620 dwz_file->str.size = bfd_get_section_size (sectp);
2621 }
2622 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2623 {
049412e3 2624 dwz_file->line.s.section = sectp;
36586728
TT
2625 dwz_file->line.size = bfd_get_section_size (sectp);
2626 }
2627 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2628 {
049412e3 2629 dwz_file->macro.s.section = sectp;
36586728
TT
2630 dwz_file->macro.size = bfd_get_section_size (sectp);
2631 }
2ec9a5e0
TT
2632 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2633 {
049412e3 2634 dwz_file->gdb_index.s.section = sectp;
2ec9a5e0
TT
2635 dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2636 }
927aa2e7
JK
2637 else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2638 {
2639 dwz_file->debug_names.s.section = sectp;
2640 dwz_file->debug_names.size = bfd_get_section_size (sectp);
2641 }
36586728
TT
2642}
2643
4db1a1dc
TT
2644/* Open the separate '.dwz' debug file, if needed. Return NULL if
2645 there is no .gnu_debugaltlink section in the file. Error if there
2646 is such a section but the file cannot be found. */
36586728
TT
2647
2648static struct dwz_file *
ed2dc618 2649dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
36586728 2650{
36586728 2651 const char *filename;
acd13123 2652 bfd_size_type buildid_len_arg;
dc294be5
TT
2653 size_t buildid_len;
2654 bfd_byte *buildid;
36586728
TT
2655
2656 if (dwarf2_per_objfile->dwz_file != NULL)
7ff8cb8c 2657 return dwarf2_per_objfile->dwz_file.get ();
36586728 2658
4db1a1dc 2659 bfd_set_error (bfd_error_no_error);
791afaa2
TT
2660 gdb::unique_xmalloc_ptr<char> data
2661 (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2662 &buildid_len_arg, &buildid));
4db1a1dc
TT
2663 if (data == NULL)
2664 {
2665 if (bfd_get_error () == bfd_error_no_error)
2666 return NULL;
2667 error (_("could not read '.gnu_debugaltlink' section: %s"),
2668 bfd_errmsg (bfd_get_error ()));
2669 }
791afaa2
TT
2670
2671 gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
36586728 2672
acd13123
TT
2673 buildid_len = (size_t) buildid_len_arg;
2674
791afaa2 2675 filename = data.get ();
d721ba37
PA
2676
2677 std::string abs_storage;
36586728
TT
2678 if (!IS_ABSOLUTE_PATH (filename))
2679 {
14278e1f
TT
2680 gdb::unique_xmalloc_ptr<char> abs
2681 = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
36586728 2682
14278e1f 2683 abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
d721ba37 2684 filename = abs_storage.c_str ();
36586728
TT
2685 }
2686
dc294be5
TT
2687 /* First try the file name given in the section. If that doesn't
2688 work, try to use the build-id instead. */
192b62ce 2689 gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
dc294be5 2690 if (dwz_bfd != NULL)
36586728 2691 {
192b62ce
TT
2692 if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2693 dwz_bfd.release ();
36586728
TT
2694 }
2695
dc294be5
TT
2696 if (dwz_bfd == NULL)
2697 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2698
2699 if (dwz_bfd == NULL)
2700 error (_("could not find '.gnu_debugaltlink' file for %s"),
2701 objfile_name (dwarf2_per_objfile->objfile));
2702
7ff8cb8c
TT
2703 std::unique_ptr<struct dwz_file> result
2704 (new struct dwz_file (std::move (dwz_bfd)));
36586728 2705
7ff8cb8c
TT
2706 bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2707 result.get ());
36586728 2708
7ff8cb8c
TT
2709 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2710 result->dwz_bfd.get ());
2711 dwarf2_per_objfile->dwz_file = std::move (result);
2712 return dwarf2_per_objfile->dwz_file.get ();
36586728 2713}
9291a0cd 2714\f
7b9f3c50
DE
2715/* DWARF quick_symbols_functions support. */
2716
2717/* TUs can share .debug_line entries, and there can be a lot more TUs than
2718 unique line tables, so we maintain a separate table of all .debug_line
2719 derived entries to support the sharing.
2720 All the quick functions need is the list of file names. We discard the
2721 line_header when we're done and don't need to record it here. */
2722struct quick_file_names
2723{
094b34ac
DE
2724 /* The data used to construct the hash key. */
2725 struct stmt_list_hash hash;
7b9f3c50
DE
2726
2727 /* The number of entries in file_names, real_names. */
2728 unsigned int num_file_names;
2729
2730 /* The file names from the line table, after being run through
2731 file_full_name. */
2732 const char **file_names;
2733
2734 /* The file names from the line table after being run through
2735 gdb_realpath. These are computed lazily. */
2736 const char **real_names;
2737};
2738
2739/* When using the index (and thus not using psymtabs), each CU has an
2740 object of this type. This is used to hold information needed by
2741 the various "quick" methods. */
2742struct dwarf2_per_cu_quick_data
2743{
2744 /* The file table. This can be NULL if there was no file table
2745 or it's currently not read in.
2746 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2747 struct quick_file_names *file_names;
2748
2749 /* The corresponding symbol table. This is NULL if symbols for this
2750 CU have not yet been read. */
43f3e411 2751 struct compunit_symtab *compunit_symtab;
7b9f3c50
DE
2752
2753 /* A temporary mark bit used when iterating over all CUs in
2754 expand_symtabs_matching. */
2755 unsigned int mark : 1;
2756
2757 /* True if we've tried to read the file table and found there isn't one.
2758 There will be no point in trying to read it again next time. */
2759 unsigned int no_file_data : 1;
2760};
2761
094b34ac
DE
2762/* Utility hash function for a stmt_list_hash. */
2763
2764static hashval_t
2765hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2766{
2767 hashval_t v = 0;
2768
2769 if (stmt_list_hash->dwo_unit != NULL)
2770 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
9c541725 2771 v += to_underlying (stmt_list_hash->line_sect_off);
094b34ac
DE
2772 return v;
2773}
2774
2775/* Utility equality function for a stmt_list_hash. */
2776
2777static int
2778eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2779 const struct stmt_list_hash *rhs)
2780{
2781 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2782 return 0;
2783 if (lhs->dwo_unit != NULL
2784 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2785 return 0;
2786
9c541725 2787 return lhs->line_sect_off == rhs->line_sect_off;
094b34ac
DE
2788}
2789
7b9f3c50
DE
2790/* Hash function for a quick_file_names. */
2791
2792static hashval_t
2793hash_file_name_entry (const void *e)
2794{
9a3c8263
SM
2795 const struct quick_file_names *file_data
2796 = (const struct quick_file_names *) e;
7b9f3c50 2797
094b34ac 2798 return hash_stmt_list_entry (&file_data->hash);
7b9f3c50
DE
2799}
2800
2801/* Equality function for a quick_file_names. */
2802
2803static int
2804eq_file_name_entry (const void *a, const void *b)
2805{
9a3c8263
SM
2806 const struct quick_file_names *ea = (const struct quick_file_names *) a;
2807 const struct quick_file_names *eb = (const struct quick_file_names *) b;
7b9f3c50 2808
094b34ac 2809 return eq_stmt_list_entry (&ea->hash, &eb->hash);
7b9f3c50
DE
2810}
2811
2812/* Delete function for a quick_file_names. */
2813
2814static void
2815delete_file_name_entry (void *e)
2816{
9a3c8263 2817 struct quick_file_names *file_data = (struct quick_file_names *) e;
7b9f3c50
DE
2818 int i;
2819
2820 for (i = 0; i < file_data->num_file_names; ++i)
2821 {
2822 xfree ((void*) file_data->file_names[i]);
2823 if (file_data->real_names)
2824 xfree ((void*) file_data->real_names[i]);
2825 }
2826
2827 /* The space for the struct itself lives on objfile_obstack,
2828 so we don't free it here. */
2829}
2830
2831/* Create a quick_file_names hash table. */
2832
2833static htab_t
2834create_quick_file_names_table (unsigned int nr_initial_entries)
2835{
2836 return htab_create_alloc (nr_initial_entries,
2837 hash_file_name_entry, eq_file_name_entry,
2838 delete_file_name_entry, xcalloc, xfree);
2839}
9291a0cd 2840
918dd910
JK
2841/* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2842 have to be created afterwards. You should call age_cached_comp_units after
2843 processing PER_CU->CU. dw2_setup must have been already called. */
2844
2845static void
58f0c718 2846load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
918dd910 2847{
3019eac3 2848 if (per_cu->is_debug_types)
e5fe5e75 2849 load_full_type_unit (per_cu);
918dd910 2850 else
58f0c718 2851 load_full_comp_unit (per_cu, skip_partial, language_minimal);
918dd910 2852
cc12ce38
DE
2853 if (per_cu->cu == NULL)
2854 return; /* Dummy CU. */
2dc860c0
DE
2855
2856 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
918dd910
JK
2857}
2858
a0f42c21 2859/* Read in the symbols for PER_CU. */
2fdf6df6 2860
9291a0cd 2861static void
58f0c718 2862dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
9291a0cd 2863{
ed2dc618 2864 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
9291a0cd 2865
f4dc4d17
DE
2866 /* Skip type_unit_groups, reading the type units they contain
2867 is handled elsewhere. */
2868 if (IS_TYPE_UNIT_GROUP (per_cu))
2869 return;
2870
b303c6f6
AB
2871 /* The destructor of dwarf2_queue_guard frees any entries left on
2872 the queue. After this point we're guaranteed to leave this function
2873 with the dwarf queue empty. */
2874 dwarf2_queue_guard q_guard;
9291a0cd 2875
95554aad 2876 if (dwarf2_per_objfile->using_index
43f3e411 2877 ? per_cu->v.quick->compunit_symtab == NULL
95554aad
TT
2878 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2879 {
2880 queue_comp_unit (per_cu, language_minimal);
58f0c718 2881 load_cu (per_cu, skip_partial);
89e63ee4
DE
2882
2883 /* If we just loaded a CU from a DWO, and we're working with an index
2884 that may badly handle TUs, load all the TUs in that DWO as well.
2885 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2886 if (!per_cu->is_debug_types
cc12ce38 2887 && per_cu->cu != NULL
89e63ee4
DE
2888 && per_cu->cu->dwo_unit != NULL
2889 && dwarf2_per_objfile->index_table != NULL
2890 && dwarf2_per_objfile->index_table->version <= 7
2891 /* DWP files aren't supported yet. */
ed2dc618 2892 && get_dwp_file (dwarf2_per_objfile) == NULL)
89e63ee4 2893 queue_and_load_all_dwo_tus (per_cu);
95554aad 2894 }
9291a0cd 2895
ed2dc618 2896 process_queue (dwarf2_per_objfile);
9291a0cd
TT
2897
2898 /* Age the cache, releasing compilation units that have not
2899 been used recently. */
ed2dc618 2900 age_cached_comp_units (dwarf2_per_objfile);
9291a0cd
TT
2901}
2902
2903/* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2904 the objfile from which this CU came. Returns the resulting symbol
2905 table. */
2fdf6df6 2906
43f3e411 2907static struct compunit_symtab *
58f0c718 2908dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
9291a0cd 2909{
ed2dc618
SM
2910 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2911
95554aad 2912 gdb_assert (dwarf2_per_objfile->using_index);
43f3e411 2913 if (!per_cu->v.quick->compunit_symtab)
9291a0cd 2914 {
11ed8cad 2915 free_cached_comp_units freer (dwarf2_per_objfile);
c83dd867 2916 scoped_restore decrementer = increment_reading_symtab ();
58f0c718 2917 dw2_do_instantiate_symtab (per_cu, skip_partial);
ed2dc618 2918 process_cu_includes (dwarf2_per_objfile);
9291a0cd 2919 }
f194fefb 2920
43f3e411 2921 return per_cu->v.quick->compunit_symtab;
9291a0cd
TT
2922}
2923
ff4c9fec 2924/* See declaration. */
f4dc4d17 2925
ff4c9fec
SM
2926dwarf2_per_cu_data *
2927dwarf2_per_objfile::get_cutu (int index)
2928{
b76e467d 2929 if (index >= this->all_comp_units.size ())
ff4c9fec 2930 {
b76e467d 2931 index -= this->all_comp_units.size ();
b2bdb8cf 2932 gdb_assert (index < this->all_type_units.size ());
ff4c9fec
SM
2933 return &this->all_type_units[index]->per_cu;
2934 }
f4dc4d17 2935
ff4c9fec
SM
2936 return this->all_comp_units[index];
2937}
f4dc4d17 2938
ff4c9fec 2939/* See declaration. */
2fdf6df6 2940
ff4c9fec
SM
2941dwarf2_per_cu_data *
2942dwarf2_per_objfile::get_cu (int index)
1fd400ff 2943{
b76e467d 2944 gdb_assert (index >= 0 && index < this->all_comp_units.size ());
f4dc4d17 2945
ff4c9fec 2946 return this->all_comp_units[index];
f4dc4d17
DE
2947}
2948
ff4c9fec 2949/* See declaration. */
f4dc4d17 2950
ff4c9fec
SM
2951signatured_type *
2952dwarf2_per_objfile::get_tu (int index)
f4dc4d17 2953{
b2bdb8cf 2954 gdb_assert (index >= 0 && index < this->all_type_units.size ());
f4dc4d17 2955
ff4c9fec 2956 return this->all_type_units[index];
1fd400ff
TT
2957}
2958
4b514bc8
JK
2959/* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2960 objfile_obstack, and constructed with the specified field
2961 values. */
2962
2963static dwarf2_per_cu_data *
ed2dc618 2964create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
4b514bc8
JK
2965 struct dwarf2_section_info *section,
2966 int is_dwz,
2967 sect_offset sect_off, ULONGEST length)
2968{
ed2dc618 2969 struct objfile *objfile = dwarf2_per_objfile->objfile;
4b514bc8
JK
2970 dwarf2_per_cu_data *the_cu
2971 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2972 struct dwarf2_per_cu_data);
2973 the_cu->sect_off = sect_off;
2974 the_cu->length = length;
e3b94546 2975 the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
4b514bc8
JK
2976 the_cu->section = section;
2977 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2978 struct dwarf2_per_cu_quick_data);
2979 the_cu->is_dwz = is_dwz;
2980 return the_cu;
2981}
2982
2ec9a5e0
TT
2983/* A helper for create_cus_from_index that handles a given list of
2984 CUs. */
2fdf6df6 2985
74a0d9f6 2986static void
12359b5e 2987create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2ec9a5e0
TT
2988 const gdb_byte *cu_list, offset_type n_elements,
2989 struct dwarf2_section_info *section,
b76e467d 2990 int is_dwz)
9291a0cd 2991{
12359b5e 2992 for (offset_type i = 0; i < n_elements; i += 2)
9291a0cd 2993 {
74a0d9f6 2994 gdb_static_assert (sizeof (ULONGEST) >= 8);
9c541725
PA
2995
2996 sect_offset sect_off
2997 = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2998 ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
9291a0cd
TT
2999 cu_list += 2 * 8;
3000
b76e467d 3001 dwarf2_per_cu_data *per_cu
ed2dc618
SM
3002 = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3003 sect_off, length);
b76e467d 3004 dwarf2_per_objfile->all_comp_units.push_back (per_cu);
9291a0cd 3005 }
9291a0cd
TT
3006}
3007
2ec9a5e0 3008/* Read the CU list from the mapped index, and use it to create all
74a0d9f6 3009 the CU objects for this objfile. */
2ec9a5e0 3010
74a0d9f6 3011static void
12359b5e 3012create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
2ec9a5e0
TT
3013 const gdb_byte *cu_list, offset_type cu_list_elements,
3014 const gdb_byte *dwz_list, offset_type dwz_elements)
3015{
b76e467d
SM
3016 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3017 dwarf2_per_objfile->all_comp_units.reserve
3018 ((cu_list_elements + dwz_elements) / 2);
2ec9a5e0 3019
12359b5e 3020 create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
b76e467d 3021 &dwarf2_per_objfile->info, 0);
2ec9a5e0
TT
3022
3023 if (dwz_elements == 0)
74a0d9f6 3024 return;
2ec9a5e0 3025
12359b5e
SM
3026 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3027 create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
b76e467d 3028 &dwz->info, 1);
2ec9a5e0
TT
3029}
3030
1fd400ff 3031/* Create the signatured type hash table from the index. */
673bfd45 3032
74a0d9f6 3033static void
12359b5e
SM
3034create_signatured_type_table_from_index
3035 (struct dwarf2_per_objfile *dwarf2_per_objfile,
3036 struct dwarf2_section_info *section,
3037 const gdb_byte *bytes,
3038 offset_type elements)
1fd400ff 3039{
12359b5e 3040 struct objfile *objfile = dwarf2_per_objfile->objfile;
1fd400ff 3041
b2bdb8cf
SM
3042 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3043 dwarf2_per_objfile->all_type_units.reserve (elements / 3);
1fd400ff 3044
12359b5e 3045 htab_t sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff 3046
12359b5e 3047 for (offset_type i = 0; i < elements; i += 3)
1fd400ff 3048 {
52dc124a 3049 struct signatured_type *sig_type;
9c541725 3050 ULONGEST signature;
1fd400ff 3051 void **slot;
9c541725 3052 cu_offset type_offset_in_tu;
1fd400ff 3053
74a0d9f6 3054 gdb_static_assert (sizeof (ULONGEST) >= 8);
9c541725
PA
3055 sect_offset sect_off
3056 = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3057 type_offset_in_tu
3058 = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3059 BFD_ENDIAN_LITTLE);
1fd400ff
TT
3060 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3061 bytes += 3 * 8;
3062
52dc124a 3063 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 3064 struct signatured_type);
52dc124a 3065 sig_type->signature = signature;
9c541725 3066 sig_type->type_offset_in_tu = type_offset_in_tu;
3019eac3 3067 sig_type->per_cu.is_debug_types = 1;
8a0459fd 3068 sig_type->per_cu.section = section;
9c541725 3069 sig_type->per_cu.sect_off = sect_off;
e3b94546 3070 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
52dc124a 3071 sig_type->per_cu.v.quick
1fd400ff
TT
3072 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3073 struct dwarf2_per_cu_quick_data);
3074
52dc124a
DE
3075 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3076 *slot = sig_type;
1fd400ff 3077
b2bdb8cf 3078 dwarf2_per_objfile->all_type_units.push_back (sig_type);
1fd400ff
TT
3079 }
3080
673bfd45 3081 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
3082}
3083
927aa2e7
JK
3084/* Create the signatured type hash table from .debug_names. */
3085
3086static void
3087create_signatured_type_table_from_debug_names
ed2dc618 3088 (struct dwarf2_per_objfile *dwarf2_per_objfile,
927aa2e7
JK
3089 const mapped_debug_names &map,
3090 struct dwarf2_section_info *section,
3091 struct dwarf2_section_info *abbrev_section)
3092{
ed2dc618
SM
3093 struct objfile *objfile = dwarf2_per_objfile->objfile;
3094
927aa2e7
JK
3095 dwarf2_read_section (objfile, section);
3096 dwarf2_read_section (objfile, abbrev_section);
3097
b2bdb8cf
SM
3098 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3099 dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
927aa2e7
JK
3100
3101 htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3102
3103 for (uint32_t i = 0; i < map.tu_count; ++i)
3104 {
3105 struct signatured_type *sig_type;
927aa2e7 3106 void **slot;
927aa2e7
JK
3107
3108 sect_offset sect_off
3109 = (sect_offset) (extract_unsigned_integer
3110 (map.tu_table_reordered + i * map.offset_size,
3111 map.offset_size,
3112 map.dwarf5_byte_order));
3113
3114 comp_unit_head cu_header;
ed2dc618
SM
3115 read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3116 abbrev_section,
927aa2e7
JK
3117 section->buffer + to_underlying (sect_off),
3118 rcuh_kind::TYPE);
3119
3120 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3121 struct signatured_type);
3122 sig_type->signature = cu_header.signature;
3123 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3124 sig_type->per_cu.is_debug_types = 1;
3125 sig_type->per_cu.section = section;
3126 sig_type->per_cu.sect_off = sect_off;
e3b94546 3127 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
927aa2e7
JK
3128 sig_type->per_cu.v.quick
3129 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3130 struct dwarf2_per_cu_quick_data);
3131
3132 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3133 *slot = sig_type;
3134
b2bdb8cf 3135 dwarf2_per_objfile->all_type_units.push_back (sig_type);
927aa2e7
JK
3136 }
3137
3138 dwarf2_per_objfile->signatured_types = sig_types_hash;
3139}
3140
9291a0cd
TT
3141/* Read the address map data from the mapped index, and use it to
3142 populate the objfile's psymtabs_addrmap. */
2fdf6df6 3143
9291a0cd 3144static void
ed2dc618
SM
3145create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3146 struct mapped_index *index)
9291a0cd 3147{
ed2dc618 3148 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 3149 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd 3150 const gdb_byte *iter, *end;
9291a0cd 3151 struct addrmap *mutable_map;
9291a0cd
TT
3152 CORE_ADDR baseaddr;
3153
8268c778
PA
3154 auto_obstack temp_obstack;
3155
9291a0cd
TT
3156 mutable_map = addrmap_create_mutable (&temp_obstack);
3157
f00a2de2
PA
3158 iter = index->address_table.data ();
3159 end = iter + index->address_table.size ();
9291a0cd
TT
3160
3161 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3162
3163 while (iter < end)
3164 {
3165 ULONGEST hi, lo, cu_index;
3166 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3167 iter += 8;
3168 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3169 iter += 8;
3170 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3171 iter += 4;
f652bce2 3172
24a55014 3173 if (lo > hi)
f652bce2 3174 {
b98664d3 3175 complaint (_(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 3176 hex_string (lo), hex_string (hi));
24a55014 3177 continue;
f652bce2 3178 }
24a55014 3179
b76e467d 3180 if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
f652bce2 3181 {
b98664d3 3182 complaint (_(".gdb_index address table has invalid CU number %u"),
f652bce2 3183 (unsigned) cu_index);
24a55014 3184 continue;
f652bce2 3185 }
24a55014 3186
79748972
TT
3187 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3188 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
ed2dc618 3189 addrmap_set_empty (mutable_map, lo, hi - 1,
ff4c9fec 3190 dwarf2_per_objfile->get_cu (cu_index));
9291a0cd
TT
3191 }
3192
3193 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3194 &objfile->objfile_obstack);
9291a0cd
TT
3195}
3196
927aa2e7
JK
3197/* Read the address map data from DWARF-5 .debug_aranges, and use it to
3198 populate the objfile's psymtabs_addrmap. */
3199
3200static void
ed2dc618 3201create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
927aa2e7
JK
3202 struct dwarf2_section_info *section)
3203{
ed2dc618 3204 struct objfile *objfile = dwarf2_per_objfile->objfile;
927aa2e7
JK
3205 bfd *abfd = objfile->obfd;
3206 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3207 const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3208 SECT_OFF_TEXT (objfile));
3209
3210 auto_obstack temp_obstack;
3211 addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3212
3213 std::unordered_map<sect_offset,
3214 dwarf2_per_cu_data *,
3215 gdb::hash_enum<sect_offset>>
3216 debug_info_offset_to_per_cu;
b76e467d 3217 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
927aa2e7 3218 {
927aa2e7
JK
3219 const auto insertpair
3220 = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3221 if (!insertpair.second)
3222 {
3223 warning (_("Section .debug_aranges in %s has duplicate "
9d8780f0
SM
3224 "debug_info_offset %s, ignoring .debug_aranges."),
3225 objfile_name (objfile), sect_offset_str (per_cu->sect_off));
927aa2e7
JK
3226 return;
3227 }
3228 }
3229
3230 dwarf2_read_section (objfile, section);
3231
3232 const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3233
3234 const gdb_byte *addr = section->buffer;
3235
3236 while (addr < section->buffer + section->size)
3237 {
3238 const gdb_byte *const entry_addr = addr;
3239 unsigned int bytes_read;
3240
3241 const LONGEST entry_length = read_initial_length (abfd, addr,
3242 &bytes_read);
3243 addr += bytes_read;
3244
3245 const gdb_byte *const entry_end = addr + entry_length;
3246 const bool dwarf5_is_dwarf64 = bytes_read != 4;
3247 const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3248 if (addr + entry_length > section->buffer + section->size)
3249 {
3250 warning (_("Section .debug_aranges in %s entry at offset %zu "
3251 "length %s exceeds section length %s, "
3252 "ignoring .debug_aranges."),
3253 objfile_name (objfile), entry_addr - section->buffer,
3254 plongest (bytes_read + entry_length),
3255 pulongest (section->size));
3256 return;
3257 }
3258
3259 /* The version number. */
3260 const uint16_t version = read_2_bytes (abfd, addr);
3261 addr += 2;
3262 if (version != 2)
3263 {
3264 warning (_("Section .debug_aranges in %s entry at offset %zu "
3265 "has unsupported version %d, ignoring .debug_aranges."),
3266 objfile_name (objfile), entry_addr - section->buffer,
3267 version);
3268 return;
3269 }
3270
3271 const uint64_t debug_info_offset
3272 = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3273 addr += offset_size;
3274 const auto per_cu_it
3275 = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3276 if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3277 {
3278 warning (_("Section .debug_aranges in %s entry at offset %zu "
3279 "debug_info_offset %s does not exists, "
3280 "ignoring .debug_aranges."),
3281 objfile_name (objfile), entry_addr - section->buffer,
3282 pulongest (debug_info_offset));
3283 return;
3284 }
3285 dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3286
3287 const uint8_t address_size = *addr++;
3288 if (address_size < 1 || address_size > 8)
3289 {
3290 warning (_("Section .debug_aranges in %s entry at offset %zu "
3291 "address_size %u is invalid, ignoring .debug_aranges."),
3292 objfile_name (objfile), entry_addr - section->buffer,
3293 address_size);
3294 return;
3295 }
3296
3297 const uint8_t segment_selector_size = *addr++;
3298 if (segment_selector_size != 0)
3299 {
3300 warning (_("Section .debug_aranges in %s entry at offset %zu "
3301 "segment_selector_size %u is not supported, "
3302 "ignoring .debug_aranges."),
3303 objfile_name (objfile), entry_addr - section->buffer,
3304 segment_selector_size);
3305 return;
3306 }
3307
3308 /* Must pad to an alignment boundary that is twice the address
3309 size. It is undocumented by the DWARF standard but GCC does
3310 use it. */
3311 for (size_t padding = ((-(addr - section->buffer))
3312 & (2 * address_size - 1));
3313 padding > 0; padding--)
3314 if (*addr++ != 0)
3315 {
3316 warning (_("Section .debug_aranges in %s entry at offset %zu "
3317 "padding is not zero, ignoring .debug_aranges."),
3318 objfile_name (objfile), entry_addr - section->buffer);
3319 return;
3320 }
3321
3322 for (;;)
3323 {
3324 if (addr + 2 * address_size > entry_end)
3325 {
3326 warning (_("Section .debug_aranges in %s entry at offset %zu "
3327 "address list is not properly terminated, "
3328 "ignoring .debug_aranges."),
3329 objfile_name (objfile), entry_addr - section->buffer);
3330 return;
3331 }
3332 ULONGEST start = extract_unsigned_integer (addr, address_size,
3333 dwarf5_byte_order);
3334 addr += address_size;
3335 ULONGEST length = extract_unsigned_integer (addr, address_size,
3336 dwarf5_byte_order);
3337 addr += address_size;
3338 if (start == 0 && length == 0)
3339 break;
3340 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3341 {
3342 /* Symbol was eliminated due to a COMDAT group. */
3343 continue;
3344 }
3345 ULONGEST end = start + length;
79748972
TT
3346 start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3347 - baseaddr);
3348 end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3349 - baseaddr);
927aa2e7
JK
3350 addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3351 }
3352 }
3353
3354 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3355 &objfile->objfile_obstack);
3356}
3357
9291a0cd
TT
3358/* Find a slot in the mapped index INDEX for the object named NAME.
3359 If NAME is found, set *VEC_OUT to point to the CU vector in the
109483d9
PA
3360 constant pool and return true. If NAME cannot be found, return
3361 false. */
2fdf6df6 3362
109483d9 3363static bool
9291a0cd
TT
3364find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3365 offset_type **vec_out)
3366{
0cf03b49 3367 offset_type hash;
9291a0cd 3368 offset_type slot, step;
559a7a62 3369 int (*cmp) (const char *, const char *);
9291a0cd 3370
791afaa2 3371 gdb::unique_xmalloc_ptr<char> without_params;
0cf03b49 3372 if (current_language->la_language == language_cplus
45280282
IB
3373 || current_language->la_language == language_fortran
3374 || current_language->la_language == language_d)
0cf03b49
JK
3375 {
3376 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
3377 not contain any. */
a8719064 3378
72998fb3 3379 if (strchr (name, '(') != NULL)
0cf03b49 3380 {
109483d9 3381 without_params = cp_remove_params (name);
0cf03b49 3382
72998fb3 3383 if (without_params != NULL)
791afaa2 3384 name = without_params.get ();
0cf03b49
JK
3385 }
3386 }
3387
559a7a62 3388 /* Index version 4 did not support case insensitive searches. But the
feea76c2 3389 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
3390 simulate our NAME being searched is also lowercased. */
3391 hash = mapped_index_string_hash ((index->version == 4
3392 && case_sensitivity == case_sensitive_off
3393 ? 5 : index->version),
3394 name);
3395
f00a2de2
PA
3396 slot = hash & (index->symbol_table.size () - 1);
3397 step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
559a7a62 3398 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3399
3400 for (;;)
3401 {
9291a0cd 3402 const char *str;
f00a2de2
PA
3403
3404 const auto &bucket = index->symbol_table[slot];
3405 if (bucket.name == 0 && bucket.vec == 0)
109483d9 3406 return false;
9291a0cd 3407
f00a2de2 3408 str = index->constant_pool + MAYBE_SWAP (bucket.name);
559a7a62 3409 if (!cmp (name, str))
9291a0cd
TT
3410 {
3411 *vec_out = (offset_type *) (index->constant_pool
f00a2de2 3412 + MAYBE_SWAP (bucket.vec));
109483d9 3413 return true;
9291a0cd
TT
3414 }
3415
f00a2de2 3416 slot = (slot + step) & (index->symbol_table.size () - 1);
9291a0cd
TT
3417 }
3418}
3419
4485a1c1
SM
3420/* A helper function that reads the .gdb_index from BUFFER and fills
3421 in MAP. FILENAME is the name of the file containing the data;
d33bc52e 3422 it is used for error reporting. DEPRECATED_OK is true if it is
2ec9a5e0
TT
3423 ok to use deprecated sections.
3424
3425 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3426 out parameters that are filled in with information about the CU and
3427 TU lists in the section.
3428
4485a1c1 3429 Returns true if all went well, false otherwise. */
2fdf6df6 3430
d33bc52e 3431static bool
4485a1c1
SM
3432read_gdb_index_from_buffer (struct objfile *objfile,
3433 const char *filename,
3434 bool deprecated_ok,
3435 gdb::array_view<const gdb_byte> buffer,
3436 struct mapped_index *map,
3437 const gdb_byte **cu_list,
3438 offset_type *cu_list_elements,
3439 const gdb_byte **types_list,
3440 offset_type *types_list_elements)
3441{
3442 const gdb_byte *addr = &buffer[0];
82430852 3443
9291a0cd 3444 /* Version check. */
4485a1c1 3445 offset_type version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3446 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3447 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3448 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3449 indices. */
831adc1f 3450 if (version < 4)
481860b3
GB
3451 {
3452 static int warning_printed = 0;
3453 if (!warning_printed)
3454 {
3455 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3456 filename);
481860b3
GB
3457 warning_printed = 1;
3458 }
3459 return 0;
3460 }
3461 /* Index version 4 uses a different hash function than index version
3462 5 and later.
3463
3464 Versions earlier than 6 did not emit psymbols for inlined
3465 functions. Using these files will cause GDB not to be able to
3466 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3467 indices unless the user has done
3468 "set use-deprecated-index-sections on". */
2ec9a5e0 3469 if (version < 6 && !deprecated_ok)
481860b3
GB
3470 {
3471 static int warning_printed = 0;
3472 if (!warning_printed)
3473 {
e615022a
DE
3474 warning (_("\
3475Skipping deprecated .gdb_index section in %s.\n\
3476Do \"set use-deprecated-index-sections on\" before the file is read\n\
3477to use the section anyway."),
2ec9a5e0 3478 filename);
481860b3
GB
3479 warning_printed = 1;
3480 }
3481 return 0;
3482 }
796a7ff8 3483 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3484 of the TU (for symbols coming from TUs),
3485 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3486 Plus gold-generated indices can have duplicate entries for global symbols,
3487 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3488 These are just performance bugs, and we can't distinguish gdb-generated
3489 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3490
481860b3 3491 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3492 longer backward compatible. */
796a7ff8 3493 if (version > 8)
594e8718 3494 return 0;
9291a0cd 3495
559a7a62 3496 map->version = version;
9291a0cd 3497
4485a1c1 3498 offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff 3499
4485a1c1 3500 int i = 0;
2ec9a5e0
TT
3501 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3502 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3503 / 8);
1fd400ff
TT
3504 ++i;
3505
2ec9a5e0
TT
3506 *types_list = addr + MAYBE_SWAP (metadata[i]);
3507 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3508 - MAYBE_SWAP (metadata[i]))
3509 / 8);
987d643c 3510 ++i;
1fd400ff 3511
f00a2de2
PA
3512 const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3513 const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3514 map->address_table
3515 = gdb::array_view<const gdb_byte> (address_table, address_table_end);
1fd400ff
TT
3516 ++i;
3517
f00a2de2
PA
3518 const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3519 const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3520 map->symbol_table
3521 = gdb::array_view<mapped_index::symbol_table_slot>
3522 ((mapped_index::symbol_table_slot *) symbol_table,
3523 (mapped_index::symbol_table_slot *) symbol_table_end);
9291a0cd 3524
f00a2de2 3525 ++i;
f9d83a0b 3526 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3527
2ec9a5e0
TT
3528 return 1;
3529}
3530
4485a1c1
SM
3531/* Callback types for dwarf2_read_gdb_index. */
3532
3533typedef gdb::function_view
3534 <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3535 get_gdb_index_contents_ftype;
3536typedef gdb::function_view
3537 <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3538 get_gdb_index_contents_dwz_ftype;
3539
927aa2e7 3540/* Read .gdb_index. If everything went ok, initialize the "quick"
2ec9a5e0
TT
3541 elements of all the CUs and return 1. Otherwise, return 0. */
3542
3543static int
4485a1c1
SM
3544dwarf2_read_gdb_index
3545 (struct dwarf2_per_objfile *dwarf2_per_objfile,
3546 get_gdb_index_contents_ftype get_gdb_index_contents,
3547 get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
2ec9a5e0 3548{
2ec9a5e0
TT
3549 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3550 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3551 struct dwz_file *dwz;
12359b5e 3552 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ec9a5e0 3553
4485a1c1
SM
3554 gdb::array_view<const gdb_byte> main_index_contents
3555 = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3556
3557 if (main_index_contents.empty ())
3558 return 0;
3559
3063847f 3560 std::unique_ptr<struct mapped_index> map (new struct mapped_index);
4485a1c1
SM
3561 if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3562 use_deprecated_index_sections,
3563 main_index_contents, map.get (), &cu_list,
3564 &cu_list_elements, &types_list,
3565 &types_list_elements))
2ec9a5e0
TT
3566 return 0;
3567
0fefef59 3568 /* Don't use the index if it's empty. */
3063847f 3569 if (map->symbol_table.empty ())
0fefef59
DE
3570 return 0;
3571
2ec9a5e0
TT
3572 /* If there is a .dwz file, read it so we can get its CU list as
3573 well. */
ed2dc618 3574 dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
4db1a1dc 3575 if (dwz != NULL)
2ec9a5e0 3576 {
2ec9a5e0
TT
3577 struct mapped_index dwz_map;
3578 const gdb_byte *dwz_types_ignore;
3579 offset_type dwz_types_elements_ignore;
3580
4485a1c1
SM
3581 gdb::array_view<const gdb_byte> dwz_index_content
3582 = get_gdb_index_contents_dwz (objfile, dwz);
3583
3584 if (dwz_index_content.empty ())
3585 return 0;
3586
3587 if (!read_gdb_index_from_buffer (objfile,
3588 bfd_get_filename (dwz->dwz_bfd), 1,
3589 dwz_index_content, &dwz_map,
3590 &dwz_list, &dwz_list_elements,
3591 &dwz_types_ignore,
3592 &dwz_types_elements_ignore))
2ec9a5e0
TT
3593 {
3594 warning (_("could not read '.gdb_index' section from %s; skipping"),
3595 bfd_get_filename (dwz->dwz_bfd));
3596 return 0;
3597 }
3598 }
3599
12359b5e
SM
3600 create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3601 dwz_list, dwz_list_elements);
1fd400ff 3602
8b70b953
TT
3603 if (types_list_elements)
3604 {
3605 struct dwarf2_section_info *section;
3606
3607 /* We can only handle a single .debug_types when we have an
3608 index. */
3609 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3610 return 0;
3611
3612 section = VEC_index (dwarf2_section_info_def,
3613 dwarf2_per_objfile->types, 0);
3614
12359b5e
SM
3615 create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3616 types_list, types_list_elements);
8b70b953 3617 }
9291a0cd 3618
3063847f 3619 create_addrmap_from_index (dwarf2_per_objfile, map.get ());
9291a0cd 3620
3063847f 3621 dwarf2_per_objfile->index_table = std::move (map);
9291a0cd 3622 dwarf2_per_objfile->using_index = 1;
7b9f3c50 3623 dwarf2_per_objfile->quick_file_names_table =
b76e467d 3624 create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
9291a0cd
TT
3625
3626 return 1;
3627}
3628
dee91e82 3629/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3630
dee91e82
DE
3631static void
3632dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3633 const gdb_byte *info_ptr,
dee91e82
DE
3634 struct die_info *comp_unit_die,
3635 int has_children,
3636 void *data)
9291a0cd 3637{
dee91e82 3638 struct dwarf2_cu *cu = reader->cu;
ed2dc618 3639 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
518817b3
SM
3640 struct dwarf2_per_objfile *dwarf2_per_objfile
3641 = cu->per_cu->dwarf2_per_objfile;
dee91e82 3642 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3643 struct dwarf2_per_cu_data *lh_cu;
9291a0cd 3644 struct attribute *attr;
dee91e82 3645 int i;
7b9f3c50
DE
3646 void **slot;
3647 struct quick_file_names *qfn;
9291a0cd 3648
0186c6a7
DE
3649 gdb_assert (! this_cu->is_debug_types);
3650
07261596
TT
3651 /* Our callers never want to match partial units -- instead they
3652 will match the enclosing full CU. */
3653 if (comp_unit_die->tag == DW_TAG_partial_unit)
3654 {
3655 this_cu->v.quick->no_file_data = 1;
3656 return;
3657 }
3658
0186c6a7 3659 lh_cu = this_cu;
7b9f3c50 3660 slot = NULL;
dee91e82 3661
fff8551c 3662 line_header_up lh;
9c541725 3663 sect_offset line_offset {};
fff8551c 3664
dee91e82 3665 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3666 if (attr)
3667 {
7b9f3c50
DE
3668 struct quick_file_names find_entry;
3669
9c541725 3670 line_offset = (sect_offset) DW_UNSND (attr);
7b9f3c50
DE
3671
3672 /* We may have already read in this line header (TU line header sharing).
3673 If we have we're done. */
094b34ac 3674 find_entry.hash.dwo_unit = cu->dwo_unit;
9c541725 3675 find_entry.hash.line_sect_off = line_offset;
7b9f3c50
DE
3676 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3677 &find_entry, INSERT);
3678 if (*slot != NULL)
3679 {
9a3c8263 3680 lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
dee91e82 3681 return;
7b9f3c50
DE
3682 }
3683
3019eac3 3684 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3685 }
3686 if (lh == NULL)
3687 {
094b34ac 3688 lh_cu->v.quick->no_file_data = 1;
dee91e82 3689 return;
9291a0cd
TT
3690 }
3691
8d749320 3692 qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
094b34ac 3693 qfn->hash.dwo_unit = cu->dwo_unit;
9c541725 3694 qfn->hash.line_sect_off = line_offset;
7b9f3c50
DE
3695 gdb_assert (slot != NULL);
3696 *slot = qfn;
9291a0cd 3697
d721ba37 3698 file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
9291a0cd 3699
fff8551c 3700 qfn->num_file_names = lh->file_names.size ();
8d749320 3701 qfn->file_names =
fff8551c
PA
3702 XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3703 for (i = 0; i < lh->file_names.size (); ++i)
3704 qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
7b9f3c50 3705 qfn->real_names = NULL;
9291a0cd 3706
094b34ac 3707 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3708}
3709
3710/* A helper for the "quick" functions which attempts to read the line
3711 table for THIS_CU. */
3712
3713static struct quick_file_names *
e4a48d9d 3714dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3715{
0186c6a7
DE
3716 /* This should never be called for TUs. */
3717 gdb_assert (! this_cu->is_debug_types);
3718 /* Nor type unit groups. */
3719 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3720
dee91e82
DE
3721 if (this_cu->v.quick->file_names != NULL)
3722 return this_cu->v.quick->file_names;
3723 /* If we know there is no line data, no point in looking again. */
3724 if (this_cu->v.quick->no_file_data)
3725 return NULL;
3726
0186c6a7 3727 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3728
3729 if (this_cu->v.quick->no_file_data)
3730 return NULL;
3731 return this_cu->v.quick->file_names;
9291a0cd
TT
3732}
3733
3734/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3735 real path for a given file name from the line table. */
2fdf6df6 3736
9291a0cd 3737static const char *
7b9f3c50
DE
3738dw2_get_real_path (struct objfile *objfile,
3739 struct quick_file_names *qfn, int index)
9291a0cd 3740{
7b9f3c50
DE
3741 if (qfn->real_names == NULL)
3742 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3743 qfn->num_file_names, const char *);
9291a0cd 3744
7b9f3c50 3745 if (qfn->real_names[index] == NULL)
14278e1f 3746 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
9291a0cd 3747
7b9f3c50 3748 return qfn->real_names[index];
9291a0cd
TT
3749}
3750
3751static struct symtab *
3752dw2_find_last_source_symtab (struct objfile *objfile)
3753{
ed2dc618
SM
3754 struct dwarf2_per_objfile *dwarf2_per_objfile
3755 = get_dwarf2_per_objfile (objfile);
b76e467d 3756 dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
58f0c718 3757 compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
ae2de4f8 3758
43f3e411
DE
3759 if (cust == NULL)
3760 return NULL;
ed2dc618 3761
43f3e411 3762 return compunit_primary_filetab (cust);
9291a0cd
TT
3763}
3764
7b9f3c50
DE
3765/* Traversal function for dw2_forget_cached_source_info. */
3766
3767static int
3768dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3769{
7b9f3c50 3770 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3771
7b9f3c50 3772 if (file_data->real_names)
9291a0cd 3773 {
7b9f3c50 3774 int i;
9291a0cd 3775
7b9f3c50 3776 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3777 {
7b9f3c50
DE
3778 xfree ((void*) file_data->real_names[i]);
3779 file_data->real_names[i] = NULL;
9291a0cd
TT
3780 }
3781 }
7b9f3c50
DE
3782
3783 return 1;
3784}
3785
3786static void
3787dw2_forget_cached_source_info (struct objfile *objfile)
3788{
ed2dc618
SM
3789 struct dwarf2_per_objfile *dwarf2_per_objfile
3790 = get_dwarf2_per_objfile (objfile);
7b9f3c50
DE
3791
3792 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3793 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3794}
3795
f8eba3c6
TT
3796/* Helper function for dw2_map_symtabs_matching_filename that expands
3797 the symtabs and calls the iterator. */
3798
3799static int
3800dw2_map_expand_apply (struct objfile *objfile,
3801 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3802 const char *name, const char *real_path,
14bc53a8 3803 gdb::function_view<bool (symtab *)> callback)
f8eba3c6 3804{
43f3e411 3805 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3806
3807 /* Don't visit already-expanded CUs. */
43f3e411 3808 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3809 return 0;
3810
3811 /* This may expand more than one symtab, and we want to iterate over
3812 all of them. */
58f0c718 3813 dw2_instantiate_symtab (per_cu, false);
f8eba3c6 3814
14bc53a8
PA
3815 return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3816 last_made, callback);
f8eba3c6
TT
3817}
3818
3819/* Implementation of the map_symtabs_matching_filename method. */
3820
14bc53a8
PA
3821static bool
3822dw2_map_symtabs_matching_filename
3823 (struct objfile *objfile, const char *name, const char *real_path,
3824 gdb::function_view<bool (symtab *)> callback)
9291a0cd 3825{
c011a4f4 3826 const char *name_basename = lbasename (name);
ed2dc618
SM
3827 struct dwarf2_per_objfile *dwarf2_per_objfile
3828 = get_dwarf2_per_objfile (objfile);
ae2de4f8 3829
848e3e78
DE
3830 /* The rule is CUs specify all the files, including those used by
3831 any TU, so there's no need to scan TUs here. */
f4dc4d17 3832
b76e467d 3833 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
9291a0cd 3834 {
3d7bb9d9 3835 /* We only need to look at symtabs not already expanded. */
43f3e411 3836 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3837 continue;
3838
b76e467d 3839 quick_file_names *file_data = dw2_get_file_names (per_cu);
7b9f3c50 3840 if (file_data == NULL)
9291a0cd
TT
3841 continue;
3842
b76e467d 3843 for (int j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3844 {
7b9f3c50 3845 const char *this_name = file_data->file_names[j];
da235a7c 3846 const char *this_real_name;
9291a0cd 3847
af529f8f 3848 if (compare_filenames_for_search (this_name, name))
9291a0cd 3849 {
f5b95b50 3850 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
14bc53a8
PA
3851 callback))
3852 return true;
288e77a7 3853 continue;
4aac40c8 3854 }
9291a0cd 3855
c011a4f4
DE
3856 /* Before we invoke realpath, which can get expensive when many
3857 files are involved, do a quick comparison of the basenames. */
3858 if (! basenames_may_differ
3859 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3860 continue;
3861
da235a7c
JK
3862 this_real_name = dw2_get_real_path (objfile, file_data, j);
3863 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3864 {
da235a7c 3865 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
14bc53a8
PA
3866 callback))
3867 return true;
288e77a7 3868 continue;
da235a7c 3869 }
9291a0cd 3870
da235a7c
JK
3871 if (real_path != NULL)
3872 {
af529f8f
JK
3873 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3874 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3875 if (this_real_name != NULL
af529f8f 3876 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3877 {
f5b95b50 3878 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
14bc53a8
PA
3879 callback))
3880 return true;
288e77a7 3881 continue;
9291a0cd
TT
3882 }
3883 }
3884 }
3885 }
3886
14bc53a8 3887 return false;
9291a0cd
TT
3888}
3889
da51c347
DE
3890/* Struct used to manage iterating over all CUs looking for a symbol. */
3891
3892struct dw2_symtab_iterator
9291a0cd 3893{
ed2dc618
SM
3894 /* The dwarf2_per_objfile owning the CUs we are iterating on. */
3895 struct dwarf2_per_objfile *dwarf2_per_objfile;
da51c347
DE
3896 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3897 int want_specific_block;
3898 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3899 Unused if !WANT_SPECIFIC_BLOCK. */
3900 int block_index;
3901 /* The kind of symbol we're looking for. */
3902 domain_enum domain;
3903 /* The list of CUs from the index entry of the symbol,
3904 or NULL if not found. */
3905 offset_type *vec;
3906 /* The next element in VEC to look at. */
3907 int next;
3908 /* The number of elements in VEC, or zero if there is no match. */
3909 int length;
8943b874
DE
3910 /* Have we seen a global version of the symbol?
3911 If so we can ignore all further global instances.
3912 This is to work around gold/15646, inefficient gold-generated
3913 indices. */
3914 int global_seen;
da51c347 3915};
9291a0cd 3916
da51c347
DE
3917/* Initialize the index symtab iterator ITER.
3918 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3919 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3920
9291a0cd 3921static void
da51c347 3922dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
ed2dc618 3923 struct dwarf2_per_objfile *dwarf2_per_objfile,
da51c347
DE
3924 int want_specific_block,
3925 int block_index,
3926 domain_enum domain,
3927 const char *name)
3928{
ed2dc618 3929 iter->dwarf2_per_objfile = dwarf2_per_objfile;
da51c347
DE
3930 iter->want_specific_block = want_specific_block;
3931 iter->block_index = block_index;
3932 iter->domain = domain;
3933 iter->next = 0;
8943b874 3934 iter->global_seen = 0;
da51c347 3935
3063847f 3936 mapped_index *index = dwarf2_per_objfile->index_table.get ();
ed2dc618
SM
3937
3938 /* index is NULL if OBJF_READNOW. */
3939 if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
da51c347
DE
3940 iter->length = MAYBE_SWAP (*iter->vec);
3941 else
3942 {
3943 iter->vec = NULL;
3944 iter->length = 0;
3945 }
3946}
3947
3948/* Return the next matching CU or NULL if there are no more. */
3949
3950static struct dwarf2_per_cu_data *
3951dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3952{
ed2dc618
SM
3953 struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3954
da51c347
DE
3955 for ( ; iter->next < iter->length; ++iter->next)
3956 {
3957 offset_type cu_index_and_attrs =
3958 MAYBE_SWAP (iter->vec[iter->next + 1]);
3959 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
da51c347
DE
3960 int want_static = iter->block_index != GLOBAL_BLOCK;
3961 /* This value is only valid for index versions >= 7. */
3962 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3963 gdb_index_symbol_kind symbol_kind =
3964 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3965 /* Only check the symbol attributes if they're present.
3966 Indices prior to version 7 don't record them,
3967 and indices >= 7 may elide them for certain symbols
3968 (gold does this). */
3969 int attrs_valid =
ed2dc618 3970 (dwarf2_per_objfile->index_table->version >= 7
da51c347
DE
3971 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3972
3190f0c6 3973 /* Don't crash on bad data. */
b76e467d 3974 if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 3975 + dwarf2_per_objfile->all_type_units.size ()))
3190f0c6 3976 {
b98664d3 3977 complaint (_(".gdb_index entry has bad CU index"
4262abfb
JK
3978 " [in module %s]"),
3979 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3980 continue;
3981 }
3982
ff4c9fec 3983 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3190f0c6 3984
da51c347 3985 /* Skip if already read in. */
43f3e411 3986 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3987 continue;
3988
8943b874
DE
3989 /* Check static vs global. */
3990 if (attrs_valid)
3991 {
3992 if (iter->want_specific_block
3993 && want_static != is_static)
3994 continue;
3995 /* Work around gold/15646. */
3996 if (!is_static && iter->global_seen)
3997 continue;
3998 if (!is_static)
3999 iter->global_seen = 1;
4000 }
da51c347
DE
4001
4002 /* Only check the symbol's kind if it has one. */
4003 if (attrs_valid)
4004 {
4005 switch (iter->domain)
4006 {
4007 case VAR_DOMAIN:
4008 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4009 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4010 /* Some types are also in VAR_DOMAIN. */
4011 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4012 continue;
4013 break;
4014 case STRUCT_DOMAIN:
4015 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4016 continue;
4017 break;
4018 case LABEL_DOMAIN:
4019 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4020 continue;
4021 break;
4022 default:
4023 break;
4024 }
4025 }
4026
4027 ++iter->next;
4028 return per_cu;
4029 }
4030
4031 return NULL;
4032}
4033
43f3e411 4034static struct compunit_symtab *
da51c347
DE
4035dw2_lookup_symbol (struct objfile *objfile, int block_index,
4036 const char *name, domain_enum domain)
9291a0cd 4037{
43f3e411 4038 struct compunit_symtab *stab_best = NULL;
ed2dc618
SM
4039 struct dwarf2_per_objfile *dwarf2_per_objfile
4040 = get_dwarf2_per_objfile (objfile);
9291a0cd 4041
b5ec771e
PA
4042 lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4043
ed2dc618
SM
4044 struct dw2_symtab_iterator iter;
4045 struct dwarf2_per_cu_data *per_cu;
da51c347 4046
ed2dc618 4047 dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
9291a0cd 4048
ed2dc618
SM
4049 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4050 {
4051 struct symbol *sym, *with_opaque = NULL;
58f0c718 4052 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
ed2dc618
SM
4053 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4054 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 4055
ed2dc618
SM
4056 sym = block_find_symbol (block, name, domain,
4057 block_find_non_opaque_type_preferred,
4058 &with_opaque);
b2e2f908 4059
ed2dc618
SM
4060 /* Some caution must be observed with overloaded functions
4061 and methods, since the index will not contain any overload
4062 information (but NAME might contain it). */
da51c347 4063
ed2dc618
SM
4064 if (sym != NULL
4065 && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4066 return stab;
4067 if (with_opaque != NULL
4068 && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4069 stab_best = stab;
da51c347 4070
ed2dc618 4071 /* Keep looking through other CUs. */
9291a0cd 4072 }
9291a0cd 4073
da51c347 4074 return stab_best;
9291a0cd
TT
4075}
4076
4077static void
4078dw2_print_stats (struct objfile *objfile)
4079{
ed2dc618
SM
4080 struct dwarf2_per_objfile *dwarf2_per_objfile
4081 = get_dwarf2_per_objfile (objfile);
b76e467d 4082 int total = (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 4083 + dwarf2_per_objfile->all_type_units.size ());
ed2dc618 4084 int count = 0;
9291a0cd 4085
ed2dc618 4086 for (int i = 0; i < total; ++i)
9291a0cd 4087 {
ff4c9fec 4088 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
9291a0cd 4089
43f3e411 4090 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4091 ++count;
4092 }
e4a48d9d 4093 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
4094 printf_filtered (_(" Number of unread CUs: %d\n"), count);
4095}
4096
779bd270
DE
4097/* This dumps minimal information about the index.
4098 It is called via "mt print objfiles".
4099 One use is to verify .gdb_index has been loaded by the
4100 gdb.dwarf2/gdb-index.exp testcase. */
4101
9291a0cd
TT
4102static void
4103dw2_dump (struct objfile *objfile)
4104{
ed2dc618
SM
4105 struct dwarf2_per_objfile *dwarf2_per_objfile
4106 = get_dwarf2_per_objfile (objfile);
4107
779bd270
DE
4108 gdb_assert (dwarf2_per_objfile->using_index);
4109 printf_filtered (".gdb_index:");
4110 if (dwarf2_per_objfile->index_table != NULL)
4111 {
4112 printf_filtered (" version %d\n",
4113 dwarf2_per_objfile->index_table->version);
4114 }
4115 else
4116 printf_filtered (" faked for \"readnow\"\n");
4117 printf_filtered ("\n");
9291a0cd
TT
4118}
4119
9291a0cd
TT
4120static void
4121dw2_expand_symtabs_for_function (struct objfile *objfile,
4122 const char *func_name)
4123{
ed2dc618
SM
4124 struct dwarf2_per_objfile *dwarf2_per_objfile
4125 = get_dwarf2_per_objfile (objfile);
da51c347 4126
ed2dc618
SM
4127 struct dw2_symtab_iterator iter;
4128 struct dwarf2_per_cu_data *per_cu;
da51c347 4129
ed2dc618
SM
4130 /* Note: It doesn't matter what we pass for block_index here. */
4131 dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4132 func_name);
da51c347 4133
ed2dc618 4134 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
58f0c718 4135 dw2_instantiate_symtab (per_cu, false);
da51c347 4136
9291a0cd
TT
4137}
4138
4139static void
4140dw2_expand_all_symtabs (struct objfile *objfile)
4141{
ed2dc618
SM
4142 struct dwarf2_per_objfile *dwarf2_per_objfile
4143 = get_dwarf2_per_objfile (objfile);
b76e467d 4144 int total_units = (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 4145 + dwarf2_per_objfile->all_type_units.size ());
9291a0cd 4146
ed2dc618 4147 for (int i = 0; i < total_units; ++i)
9291a0cd 4148 {
ff4c9fec 4149 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
9291a0cd 4150
58f0c718
TT
4151 /* We don't want to directly expand a partial CU, because if we
4152 read it with the wrong language, then assertion failures can
4153 be triggered later on. See PR symtab/23010. So, tell
4154 dw2_instantiate_symtab to skip partial CUs -- any important
4155 partial CU will be read via DW_TAG_imported_unit anyway. */
4156 dw2_instantiate_symtab (per_cu, true);
9291a0cd
TT
4157 }
4158}
4159
4160static void
652a8996
JK
4161dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4162 const char *fullname)
9291a0cd 4163{
ed2dc618
SM
4164 struct dwarf2_per_objfile *dwarf2_per_objfile
4165 = get_dwarf2_per_objfile (objfile);
d4637a04
DE
4166
4167 /* We don't need to consider type units here.
4168 This is only called for examining code, e.g. expand_line_sal.
4169 There can be an order of magnitude (or more) more type units
4170 than comp units, and we avoid them if we can. */
4171
b76e467d 4172 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
9291a0cd 4173 {
3d7bb9d9 4174 /* We only need to look at symtabs not already expanded. */
43f3e411 4175 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4176 continue;
4177
b76e467d 4178 quick_file_names *file_data = dw2_get_file_names (per_cu);
7b9f3c50 4179 if (file_data == NULL)
9291a0cd
TT
4180 continue;
4181
b76e467d 4182 for (int j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4183 {
652a8996
JK
4184 const char *this_fullname = file_data->file_names[j];
4185
4186 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 4187 {
58f0c718 4188 dw2_instantiate_symtab (per_cu, false);
9291a0cd
TT
4189 break;
4190 }
4191 }
4192 }
4193}
4194
9291a0cd 4195static void
ade7ed9e 4196dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 4197 const char * name, domain_enum domain,
ade7ed9e 4198 int global,
40658b94
PH
4199 int (*callback) (struct block *,
4200 struct symbol *, void *),
b5ec771e 4201 void *data, symbol_name_match_type match,
2edb89d3 4202 symbol_compare_ftype *ordered_compare)
9291a0cd 4203{
40658b94 4204 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
4205 current language is Ada for a non-Ada objfile using GNU index. As Ada
4206 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
4207}
4208
b5ec771e
PA
4209/* Symbol name matcher for .gdb_index names.
4210
4211 Symbol names in .gdb_index have a few particularities:
4212
4213 - There's no indication of which is the language of each symbol.
4214
4215 Since each language has its own symbol name matching algorithm,
4216 and we don't know which language is the right one, we must match
3f563c84
PA
4217 each symbol against all languages. This would be a potential
4218 performance problem if it were not mitigated by the
4219 mapped_index::name_components lookup table, which significantly
4220 reduces the number of times we need to call into this matcher,
4221 making it a non-issue.
b5ec771e
PA
4222
4223 - Symbol names in the index have no overload (parameter)
4224 information. I.e., in C++, "foo(int)" and "foo(long)" both
4225 appear as "foo" in the index, for example.
4226
4227 This means that the lookup names passed to the symbol name
4228 matcher functions must have no parameter information either
4229 because (e.g.) symbol search name "foo" does not match
4230 lookup-name "foo(int)" [while swapping search name for lookup
4231 name would match].
4232*/
4233class gdb_index_symbol_name_matcher
4234{
4235public:
4236 /* Prepares the vector of comparison functions for LOOKUP_NAME. */
4237 gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4238
4239 /* Walk all the matcher routines and match SYMBOL_NAME against them.
4240 Returns true if any matcher matches. */
4241 bool matches (const char *symbol_name);
4242
4243private:
4244 /* A reference to the lookup name we're matching against. */
4245 const lookup_name_info &m_lookup_name;
4246
4247 /* A vector holding all the different symbol name matchers, for all
4248 languages. */
4249 std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4250};
4251
4252gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4253 (const lookup_name_info &lookup_name)
4254 : m_lookup_name (lookup_name)
4255{
4256 /* Prepare the vector of comparison functions upfront, to avoid
4257 doing the same work for each symbol. Care is taken to avoid
4258 matching with the same matcher more than once if/when multiple
4259 languages use the same matcher function. */
4260 auto &matchers = m_symbol_name_matcher_funcs;
4261 matchers.reserve (nr_languages);
4262
4263 matchers.push_back (default_symbol_name_matcher);
4264
4265 for (int i = 0; i < nr_languages; i++)
4266 {
4267 const language_defn *lang = language_def ((enum language) i);
c63d3e8d 4268 symbol_name_matcher_ftype *name_matcher
618daa93 4269 = get_symbol_name_matcher (lang, m_lookup_name);
c63d3e8d
PA
4270
4271 /* Don't insert the same comparison routine more than once.
4272 Note that we do this linear walk instead of a seemingly
4273 cheaper sorted insert, or use a std::set or something like
4274 that, because relative order of function addresses is not
4275 stable. This is not a problem in practice because the number
4276 of supported languages is low, and the cost here is tiny
4277 compared to the number of searches we'll do afterwards using
4278 this object. */
4279 if (name_matcher != default_symbol_name_matcher
4280 && (std::find (matchers.begin (), matchers.end (), name_matcher)
4281 == matchers.end ()))
4282 matchers.push_back (name_matcher);
b5ec771e
PA
4283 }
4284}
4285
4286bool
4287gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4288{
4289 for (auto matches_name : m_symbol_name_matcher_funcs)
4290 if (matches_name (symbol_name, m_lookup_name, NULL))
4291 return true;
4292
4293 return false;
4294}
4295
e1ef7d7a
PA
4296/* Starting from a search name, return the string that finds the upper
4297 bound of all strings that start with SEARCH_NAME in a sorted name
4298 list. Returns the empty string to indicate that the upper bound is
4299 the end of the list. */
4300
4301static std::string
4302make_sort_after_prefix_name (const char *search_name)
4303{
4304 /* When looking to complete "func", we find the upper bound of all
4305 symbols that start with "func" by looking for where we'd insert
4306 the closest string that would follow "func" in lexicographical
4307 order. Usually, that's "func"-with-last-character-incremented,
4308 i.e. "fund". Mind non-ASCII characters, though. Usually those
4309 will be UTF-8 multi-byte sequences, but we can't be certain.
4310 Especially mind the 0xff character, which is a valid character in
4311 non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4312 rule out compilers allowing it in identifiers. Note that
4313 conveniently, strcmp/strcasecmp are specified to compare
4314 characters interpreted as unsigned char. So what we do is treat
4315 the whole string as a base 256 number composed of a sequence of
4316 base 256 "digits" and add 1 to it. I.e., adding 1 to 0xff wraps
4317 to 0, and carries 1 to the following more-significant position.
4318 If the very first character in SEARCH_NAME ends up incremented
4319 and carries/overflows, then the upper bound is the end of the
4320 list. The string after the empty string is also the empty
4321 string.
4322
4323 Some examples of this operation:
4324
4325 SEARCH_NAME => "+1" RESULT
4326
4327 "abc" => "abd"
4328 "ab\xff" => "ac"
4329 "\xff" "a" "\xff" => "\xff" "b"
4330 "\xff" => ""
4331 "\xff\xff" => ""
4332 "" => ""
4333
4334 Then, with these symbols for example:
4335
4336 func
4337 func1
4338 fund
4339
4340 completing "func" looks for symbols between "func" and
4341 "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4342 which finds "func" and "func1", but not "fund".
4343
4344 And with:
4345
4346 funcÿ (Latin1 'ÿ' [0xff])
4347 funcÿ1
4348 fund
4349
4350 completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4351 (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4352
4353 And with:
4354
4355 ÿÿ (Latin1 'ÿ' [0xff])
4356 ÿÿ1
4357
4358 completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4359 the end of the list.
4360 */
4361 std::string after = search_name;
4362 while (!after.empty () && (unsigned char) after.back () == 0xff)
4363 after.pop_back ();
4364 if (!after.empty ())
4365 after.back () = (unsigned char) after.back () + 1;
4366 return after;
4367}
4368
5c58de74 4369/* See declaration. */
61d96d7e 4370
5c58de74
PA
4371std::pair<std::vector<name_component>::const_iterator,
4372 std::vector<name_component>::const_iterator>
44ed8f3e 4373mapped_index_base::find_name_components_bounds
5c58de74 4374 (const lookup_name_info &lookup_name_without_params) const
3f563c84 4375{
5c58de74
PA
4376 auto *name_cmp
4377 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
3f563c84
PA
4378
4379 const char *cplus
c62446b1 4380 = lookup_name_without_params.cplus ().lookup_name ().c_str ();
9291a0cd 4381
3f563c84
PA
4382 /* Comparison function object for lower_bound that matches against a
4383 given symbol name. */
4384 auto lookup_compare_lower = [&] (const name_component &elem,
4385 const char *name)
4386 {
5c58de74 4387 const char *elem_qualified = this->symbol_name_at (elem.idx);
3f563c84
PA
4388 const char *elem_name = elem_qualified + elem.name_offset;
4389 return name_cmp (elem_name, name) < 0;
4390 };
4391
4392 /* Comparison function object for upper_bound that matches against a
4393 given symbol name. */
4394 auto lookup_compare_upper = [&] (const char *name,
4395 const name_component &elem)
4396 {
5c58de74 4397 const char *elem_qualified = this->symbol_name_at (elem.idx);
3f563c84
PA
4398 const char *elem_name = elem_qualified + elem.name_offset;
4399 return name_cmp (name, elem_name) < 0;
4400 };
4401
5c58de74
PA
4402 auto begin = this->name_components.begin ();
4403 auto end = this->name_components.end ();
3f563c84
PA
4404
4405 /* Find the lower bound. */
4406 auto lower = [&] ()
4407 {
5c58de74 4408 if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
3f563c84
PA
4409 return begin;
4410 else
4411 return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4412 } ();
4413
4414 /* Find the upper bound. */
4415 auto upper = [&] ()
4416 {
5c58de74 4417 if (lookup_name_without_params.completion_mode ())
3f563c84 4418 {
e1ef7d7a
PA
4419 /* In completion mode, we want UPPER to point past all
4420 symbols names that have the same prefix. I.e., with
4421 these symbols, and completing "func":
4422
4423 function << lower bound
4424 function1
4425 other_function << upper bound
4426
4427 We find the upper bound by looking for the insertion
4428 point of "func"-with-last-character-incremented,
4429 i.e. "fund". */
4430 std::string after = make_sort_after_prefix_name (cplus);
4431 if (after.empty ())
3f563c84 4432 return end;
e6b2f5ef
PA
4433 return std::lower_bound (lower, end, after.c_str (),
4434 lookup_compare_lower);
3f563c84
PA
4435 }
4436 else
4437 return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4438 } ();
4439
5c58de74
PA
4440 return {lower, upper};
4441}
4442
4443/* See declaration. */
4444
4445void
44ed8f3e 4446mapped_index_base::build_name_components ()
5c58de74
PA
4447{
4448 if (!this->name_components.empty ())
4449 return;
4450
4451 this->name_components_casing = case_sensitivity;
4452 auto *name_cmp
4453 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4454
4455 /* The code below only knows how to break apart components of C++
4456 symbol names (and other languages that use '::' as
4457 namespace/module separator). If we add support for wild matching
4458 to some language that uses some other operator (E.g., Ada, Go and
4459 D use '.'), then we'll need to try splitting the symbol name
4460 according to that language too. Note that Ada does support wild
4461 matching, but doesn't currently support .gdb_index. */
44ed8f3e
PA
4462 auto count = this->symbol_name_count ();
4463 for (offset_type idx = 0; idx < count; idx++)
5c58de74 4464 {
44ed8f3e 4465 if (this->symbol_name_slot_invalid (idx))
5c58de74
PA
4466 continue;
4467
4468 const char *name = this->symbol_name_at (idx);
4469
4470 /* Add each name component to the name component table. */
4471 unsigned int previous_len = 0;
4472 for (unsigned int current_len = cp_find_first_component (name);
4473 name[current_len] != '\0';
4474 current_len += cp_find_first_component (name + current_len))
4475 {
4476 gdb_assert (name[current_len] == ':');
4477 this->name_components.push_back ({previous_len, idx});
4478 /* Skip the '::'. */
4479 current_len += 2;
4480 previous_len = current_len;
4481 }
4482 this->name_components.push_back ({previous_len, idx});
4483 }
4484
4485 /* Sort name_components elements by name. */
4486 auto name_comp_compare = [&] (const name_component &left,
4487 const name_component &right)
4488 {
4489 const char *left_qualified = this->symbol_name_at (left.idx);
4490 const char *right_qualified = this->symbol_name_at (right.idx);
4491
4492 const char *left_name = left_qualified + left.name_offset;
4493 const char *right_name = right_qualified + right.name_offset;
4494
4495 return name_cmp (left_name, right_name) < 0;
4496 };
4497
4498 std::sort (this->name_components.begin (),
4499 this->name_components.end (),
4500 name_comp_compare);
4501}
4502
4503/* Helper for dw2_expand_symtabs_matching that works with a
44ed8f3e
PA
4504 mapped_index_base instead of the containing objfile. This is split
4505 to a separate function in order to be able to unit test the
4506 name_components matching using a mock mapped_index_base. For each
5c58de74 4507 symbol name that matches, calls MATCH_CALLBACK, passing it the
44ed8f3e 4508 symbol's index in the mapped_index_base symbol table. */
5c58de74
PA
4509
4510static void
4511dw2_expand_symtabs_matching_symbol
44ed8f3e 4512 (mapped_index_base &index,
5c58de74
PA
4513 const lookup_name_info &lookup_name_in,
4514 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4515 enum search_domain kind,
4516 gdb::function_view<void (offset_type)> match_callback)
4517{
4518 lookup_name_info lookup_name_without_params
4519 = lookup_name_in.make_ignore_params ();
4520 gdb_index_symbol_name_matcher lookup_name_matcher
4521 (lookup_name_without_params);
4522
4523 /* Build the symbol name component sorted vector, if we haven't
4524 yet. */
4525 index.build_name_components ();
4526
4527 auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4528
3f563c84
PA
4529 /* Now for each symbol name in range, check to see if we have a name
4530 match, and if so, call the MATCH_CALLBACK callback. */
4531
4532 /* The same symbol may appear more than once in the range though.
4533 E.g., if we're looking for symbols that complete "w", and we have
4534 a symbol named "w1::w2", we'll find the two name components for
4535 that same symbol in the range. To be sure we only call the
4536 callback once per symbol, we first collect the symbol name
4537 indexes that matched in a temporary vector and ignore
4538 duplicates. */
4539 std::vector<offset_type> matches;
5c58de74 4540 matches.reserve (std::distance (bounds.first, bounds.second));
3f563c84 4541
5c58de74 4542 for (; bounds.first != bounds.second; ++bounds.first)
3f563c84 4543 {
5c58de74 4544 const char *qualified = index.symbol_name_at (bounds.first->idx);
3f563c84
PA
4545
4546 if (!lookup_name_matcher.matches (qualified)
4547 || (symbol_matcher != NULL && !symbol_matcher (qualified)))
9291a0cd
TT
4548 continue;
4549
5c58de74 4550 matches.push_back (bounds.first->idx);
3f563c84
PA
4551 }
4552
4553 std::sort (matches.begin (), matches.end ());
4554
4555 /* Finally call the callback, once per match. */
4556 ULONGEST prev = -1;
4557 for (offset_type idx : matches)
4558 {
4559 if (prev != idx)
4560 {
4561 match_callback (idx);
4562 prev = idx;
4563 }
4564 }
4565
4566 /* Above we use a type wider than idx's for 'prev', since 0 and
4567 (offset_type)-1 are both possible values. */
4568 static_assert (sizeof (prev) > sizeof (offset_type), "");
4569}
4570
c62446b1
PA
4571#if GDB_SELF_TEST
4572
4573namespace selftests { namespace dw2_expand_symtabs_matching {
4574
a3c5fafd
PA
4575/* A mock .gdb_index/.debug_names-like name index table, enough to
4576 exercise dw2_expand_symtabs_matching_symbol, which works with the
4577 mapped_index_base interface. Builds an index from the symbol list
4578 passed as parameter to the constructor. */
4579class mock_mapped_index : public mapped_index_base
c62446b1
PA
4580{
4581public:
a3c5fafd
PA
4582 mock_mapped_index (gdb::array_view<const char *> symbols)
4583 : m_symbol_table (symbols)
c62446b1
PA
4584 {}
4585
a3c5fafd 4586 DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
c62446b1 4587
a3c5fafd 4588 /* Return the number of names in the symbol table. */
632e107b 4589 size_t symbol_name_count () const override
c62446b1 4590 {
a3c5fafd 4591 return m_symbol_table.size ();
c62446b1
PA
4592 }
4593
a3c5fafd 4594 /* Get the name of the symbol at IDX in the symbol table. */
632e107b 4595 const char *symbol_name_at (offset_type idx) const override
a3c5fafd
PA
4596 {
4597 return m_symbol_table[idx];
4598 }
c62446b1 4599
a3c5fafd
PA
4600private:
4601 gdb::array_view<const char *> m_symbol_table;
c62446b1
PA
4602};
4603
4604/* Convenience function that converts a NULL pointer to a "<null>"
4605 string, to pass to print routines. */
4606
4607static const char *
4608string_or_null (const char *str)
4609{
4610 return str != NULL ? str : "<null>";
4611}
4612
4613/* Check if a lookup_name_info built from
4614 NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4615 index. EXPECTED_LIST is the list of expected matches, in expected
4616 matching order. If no match expected, then an empty list is
4617 specified. Returns true on success. On failure prints a warning
4618 indicating the file:line that failed, and returns false. */
4619
4620static bool
4621check_match (const char *file, int line,
4622 mock_mapped_index &mock_index,
4623 const char *name, symbol_name_match_type match_type,
4624 bool completion_mode,
4625 std::initializer_list<const char *> expected_list)
4626{
4627 lookup_name_info lookup_name (name, match_type, completion_mode);
4628
4629 bool matched = true;
4630
4631 auto mismatch = [&] (const char *expected_str,
4632 const char *got)
4633 {
4634 warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4635 "expected=\"%s\", got=\"%s\"\n"),
4636 file, line,
4637 (match_type == symbol_name_match_type::FULL
4638 ? "FULL" : "WILD"),
4639 name, string_or_null (expected_str), string_or_null (got));
4640 matched = false;
4641 };
4642
4643 auto expected_it = expected_list.begin ();
4644 auto expected_end = expected_list.end ();
4645
a3c5fafd 4646 dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
c62446b1
PA
4647 NULL, ALL_DOMAIN,
4648 [&] (offset_type idx)
4649 {
a3c5fafd 4650 const char *matched_name = mock_index.symbol_name_at (idx);
c62446b1
PA
4651 const char *expected_str
4652 = expected_it == expected_end ? NULL : *expected_it++;
4653
4654 if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4655 mismatch (expected_str, matched_name);
4656 });
4657
4658 const char *expected_str
4659 = expected_it == expected_end ? NULL : *expected_it++;
4660 if (expected_str != NULL)
4661 mismatch (expected_str, NULL);
4662
4663 return matched;
4664}
4665
4666/* The symbols added to the mock mapped_index for testing (in
4667 canonical form). */
4668static const char *test_symbols[] = {
4669 "function",
4670 "std::bar",
4671 "std::zfunction",
4672 "std::zfunction2",
4673 "w1::w2",
4674 "ns::foo<char*>",
4675 "ns::foo<int>",
4676 "ns::foo<long>",
a20714ff
PA
4677 "ns2::tmpl<int>::foo2",
4678 "(anonymous namespace)::A::B::C",
c62446b1 4679
e1ef7d7a
PA
4680 /* These are used to check that the increment-last-char in the
4681 matching algorithm for completion doesn't match "t1_fund" when
4682 completing "t1_func". */
4683 "t1_func",
4684 "t1_func1",
4685 "t1_fund",
4686 "t1_fund1",
4687
4688 /* A UTF-8 name with multi-byte sequences to make sure that
4689 cp-name-parser understands this as a single identifier ("função"
4690 is "function" in PT). */
4691 u8"u8função",
4692
4693 /* \377 (0xff) is Latin1 'ÿ'. */
4694 "yfunc\377",
4695
4696 /* \377 (0xff) is Latin1 'ÿ'. */
4697 "\377",
4698 "\377\377123",
4699
c62446b1
PA
4700 /* A name with all sorts of complications. Starts with "z" to make
4701 it easier for the completion tests below. */
4702#define Z_SYM_NAME \
4703 "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4704 "::tuple<(anonymous namespace)::ui*, " \
4705 "std::default_delete<(anonymous namespace)::ui>, void>"
4706
4707 Z_SYM_NAME
4708};
4709
a3c5fafd
PA
4710/* Returns true if the mapped_index_base::find_name_component_bounds
4711 method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4712 in completion mode. */
5c58de74
PA
4713
4714static bool
a3c5fafd 4715check_find_bounds_finds (mapped_index_base &index,
5c58de74
PA
4716 const char *search_name,
4717 gdb::array_view<const char *> expected_syms)
4718{
4719 lookup_name_info lookup_name (search_name,
4720 symbol_name_match_type::FULL, true);
4721
4722 auto bounds = index.find_name_components_bounds (lookup_name);
4723
4724 size_t distance = std::distance (bounds.first, bounds.second);
4725 if (distance != expected_syms.size ())
4726 return false;
4727
4728 for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4729 {
4730 auto nc_elem = bounds.first + exp_elem;
4731 const char *qualified = index.symbol_name_at (nc_elem->idx);
4732 if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4733 return false;
4734 }
4735
4736 return true;
4737}
4738
4739/* Test the lower-level mapped_index::find_name_component_bounds
4740 method. */
4741
c62446b1 4742static void
5c58de74
PA
4743test_mapped_index_find_name_component_bounds ()
4744{
4745 mock_mapped_index mock_index (test_symbols);
4746
a3c5fafd 4747 mock_index.build_name_components ();
5c58de74
PA
4748
4749 /* Test the lower-level mapped_index::find_name_component_bounds
4750 method in completion mode. */
4751 {
4752 static const char *expected_syms[] = {
4753 "t1_func",
4754 "t1_func1",
5c58de74
PA
4755 };
4756
a3c5fafd 4757 SELF_CHECK (check_find_bounds_finds (mock_index,
5c58de74
PA
4758 "t1_func", expected_syms));
4759 }
4760
4761 /* Check that the increment-last-char in the name matching algorithm
4762 for completion doesn't get confused with Ansi1 'ÿ' / 0xff. */
4763 {
4764 static const char *expected_syms1[] = {
4765 "\377",
4766 "\377\377123",
4767 };
a3c5fafd 4768 SELF_CHECK (check_find_bounds_finds (mock_index,
5c58de74
PA
4769 "\377", expected_syms1));
4770
4771 static const char *expected_syms2[] = {
4772 "\377\377123",
4773 };
a3c5fafd 4774 SELF_CHECK (check_find_bounds_finds (mock_index,
5c58de74
PA
4775 "\377\377", expected_syms2));
4776 }
4777}
4778
4779/* Test dw2_expand_symtabs_matching_symbol. */
4780
4781static void
4782test_dw2_expand_symtabs_matching_symbol ()
c62446b1
PA
4783{
4784 mock_mapped_index mock_index (test_symbols);
4785
4786 /* We let all tests run until the end even if some fails, for debug
4787 convenience. */
4788 bool any_mismatch = false;
4789
4790 /* Create the expected symbols list (an initializer_list). Needed
4791 because lists have commas, and we need to pass them to CHECK,
4792 which is a macro. */
4793#define EXPECT(...) { __VA_ARGS__ }
4794
4795 /* Wrapper for check_match that passes down the current
4796 __FILE__/__LINE__. */
4797#define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST) \
4798 any_mismatch |= !check_match (__FILE__, __LINE__, \
4799 mock_index, \
4800 NAME, MATCH_TYPE, COMPLETION_MODE, \
4801 EXPECTED_LIST)
4802
4803 /* Identity checks. */
4804 for (const char *sym : test_symbols)
4805 {
4806 /* Should be able to match all existing symbols. */
4807 CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4808 EXPECT (sym));
4809
4810 /* Should be able to match all existing symbols with
4811 parameters. */
4812 std::string with_params = std::string (sym) + "(int)";
4813 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4814 EXPECT (sym));
4815
4816 /* Should be able to match all existing symbols with
4817 parameters and qualifiers. */
4818 with_params = std::string (sym) + " ( int ) const";
4819 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4820 EXPECT (sym));
4821
4822 /* This should really find sym, but cp-name-parser.y doesn't
4823 know about lvalue/rvalue qualifiers yet. */
4824 with_params = std::string (sym) + " ( int ) &&";
4825 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4826 {});
4827 }
4828
e1ef7d7a
PA
4829 /* Check that the name matching algorithm for completion doesn't get
4830 confused with Latin1 'ÿ' / 0xff. */
4831 {
4832 static const char str[] = "\377";
4833 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4834 EXPECT ("\377", "\377\377123"));
4835 }
4836
4837 /* Check that the increment-last-char in the matching algorithm for
4838 completion doesn't match "t1_fund" when completing "t1_func". */
4839 {
4840 static const char str[] = "t1_func";
4841 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4842 EXPECT ("t1_func", "t1_func1"));
4843 }
4844
c62446b1
PA
4845 /* Check that completion mode works at each prefix of the expected
4846 symbol name. */
4847 {
4848 static const char str[] = "function(int)";
4849 size_t len = strlen (str);
4850 std::string lookup;
4851
4852 for (size_t i = 1; i < len; i++)
4853 {
4854 lookup.assign (str, i);
4855 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4856 EXPECT ("function"));
4857 }
4858 }
4859
4860 /* While "w" is a prefix of both components, the match function
4861 should still only be called once. */
4862 {
4863 CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4864 EXPECT ("w1::w2"));
a20714ff
PA
4865 CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4866 EXPECT ("w1::w2"));
c62446b1
PA
4867 }
4868
4869 /* Same, with a "complicated" symbol. */
4870 {
4871 static const char str[] = Z_SYM_NAME;
4872 size_t len = strlen (str);
4873 std::string lookup;
4874
4875 for (size_t i = 1; i < len; i++)
4876 {
4877 lookup.assign (str, i);
4878 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4879 EXPECT (Z_SYM_NAME));
4880 }
4881 }
4882
4883 /* In FULL mode, an incomplete symbol doesn't match. */
4884 {
4885 CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4886 {});
4887 }
4888
4889 /* A complete symbol with parameters matches any overload, since the
4890 index has no overload info. */
4891 {
4892 CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4893 EXPECT ("std::zfunction", "std::zfunction2"));
a20714ff
PA
4894 CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4895 EXPECT ("std::zfunction", "std::zfunction2"));
4896 CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4897 EXPECT ("std::zfunction", "std::zfunction2"));
c62446b1
PA
4898 }
4899
4900 /* Check that whitespace is ignored appropriately. A symbol with a
4901 template argument list. */
4902 {
4903 static const char expected[] = "ns::foo<int>";
4904 CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4905 EXPECT (expected));
a20714ff
PA
4906 CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4907 EXPECT (expected));
c62446b1
PA
4908 }
4909
4910 /* Check that whitespace is ignored appropriately. A symbol with a
4911 template argument list that includes a pointer. */
4912 {
4913 static const char expected[] = "ns::foo<char*>";
4914 /* Try both completion and non-completion modes. */
4915 static const bool completion_mode[2] = {false, true};
4916 for (size_t i = 0; i < 2; i++)
4917 {
4918 CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4919 completion_mode[i], EXPECT (expected));
a20714ff
PA
4920 CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4921 completion_mode[i], EXPECT (expected));
c62446b1
PA
4922
4923 CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4924 completion_mode[i], EXPECT (expected));
a20714ff
PA
4925 CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4926 completion_mode[i], EXPECT (expected));
c62446b1
PA
4927 }
4928 }
4929
4930 {
4931 /* Check method qualifiers are ignored. */
4932 static const char expected[] = "ns::foo<char*>";
4933 CHECK_MATCH ("ns :: foo < char * > ( int ) const",
4934 symbol_name_match_type::FULL, true, EXPECT (expected));
4935 CHECK_MATCH ("ns :: foo < char * > ( int ) &&",
4936 symbol_name_match_type::FULL, true, EXPECT (expected));
a20714ff
PA
4937 CHECK_MATCH ("foo < char * > ( int ) const",
4938 symbol_name_match_type::WILD, true, EXPECT (expected));
4939 CHECK_MATCH ("foo < char * > ( int ) &&",
4940 symbol_name_match_type::WILD, true, EXPECT (expected));
c62446b1
PA
4941 }
4942
4943 /* Test lookup names that don't match anything. */
4944 {
a20714ff
PA
4945 CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4946 {});
4947
c62446b1
PA
4948 CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4949 {});
4950 }
4951
a20714ff
PA
4952 /* Some wild matching tests, exercising "(anonymous namespace)",
4953 which should not be confused with a parameter list. */
4954 {
4955 static const char *syms[] = {
4956 "A::B::C",
4957 "B::C",
4958 "C",
4959 "A :: B :: C ( int )",
4960 "B :: C ( int )",
4961 "C ( int )",
4962 };
4963
4964 for (const char *s : syms)
4965 {
4966 CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4967 EXPECT ("(anonymous namespace)::A::B::C"));
4968 }
4969 }
4970
4971 {
4972 static const char expected[] = "ns2::tmpl<int>::foo2";
4973 CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4974 EXPECT (expected));
4975 CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4976 EXPECT (expected));
4977 }
4978
c62446b1
PA
4979 SELF_CHECK (!any_mismatch);
4980
4981#undef EXPECT
4982#undef CHECK_MATCH
4983}
4984
5c58de74
PA
4985static void
4986run_test ()
4987{
4988 test_mapped_index_find_name_component_bounds ();
4989 test_dw2_expand_symtabs_matching_symbol ();
4990}
4991
c62446b1
PA
4992}} // namespace selftests::dw2_expand_symtabs_matching
4993
4994#endif /* GDB_SELF_TEST */
4995
4b514bc8
JK
4996/* If FILE_MATCHER is NULL or if PER_CU has
4997 dwarf2_per_cu_quick_data::MARK set (see
4998 dw_expand_symtabs_matching_file_matcher), expand the CU and call
4999 EXPANSION_NOTIFY on it. */
5000
5001static void
5002dw2_expand_symtabs_matching_one
5003 (struct dwarf2_per_cu_data *per_cu,
5004 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5005 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5006{
5007 if (file_matcher == NULL || per_cu->v.quick->mark)
5008 {
5009 bool symtab_was_null
5010 = (per_cu->v.quick->compunit_symtab == NULL);
5011
58f0c718 5012 dw2_instantiate_symtab (per_cu, false);
4b514bc8
JK
5013
5014 if (expansion_notify != NULL
5015 && symtab_was_null
5016 && per_cu->v.quick->compunit_symtab != NULL)
5017 expansion_notify (per_cu->v.quick->compunit_symtab);
5018 }
5019}
5020
3f563c84
PA
5021/* Helper for dw2_expand_matching symtabs. Called on each symbol
5022 matched, to expand corresponding CUs that were marked. IDX is the
5023 index of the symbol name that matched. */
5024
5025static void
5026dw2_expand_marked_cus
ed2dc618 5027 (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
3f563c84
PA
5028 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5029 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5030 search_domain kind)
5031{
3f563c84
PA
5032 offset_type *vec, vec_len, vec_idx;
5033 bool global_seen = false;
ed2dc618 5034 mapped_index &index = *dwarf2_per_objfile->index_table;
3f563c84 5035
61920122 5036 vec = (offset_type *) (index.constant_pool
f00a2de2 5037 + MAYBE_SWAP (index.symbol_table[idx].vec));
61920122
PA
5038 vec_len = MAYBE_SWAP (vec[0]);
5039 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5040 {
61920122
PA
5041 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5042 /* This value is only valid for index versions >= 7. */
5043 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5044 gdb_index_symbol_kind symbol_kind =
5045 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5046 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5047 /* Only check the symbol attributes if they're present.
5048 Indices prior to version 7 don't record them,
5049 and indices >= 7 may elide them for certain symbols
5050 (gold does this). */
5051 int attrs_valid =
5052 (index.version >= 7
5053 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5054
5055 /* Work around gold/15646. */
5056 if (attrs_valid)
9291a0cd 5057 {
61920122
PA
5058 if (!is_static && global_seen)
5059 continue;
5060 if (!is_static)
5061 global_seen = true;
5062 }
3190f0c6 5063
61920122
PA
5064 /* Only check the symbol's kind if it has one. */
5065 if (attrs_valid)
5066 {
5067 switch (kind)
8943b874 5068 {
61920122
PA
5069 case VARIABLES_DOMAIN:
5070 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5071 continue;
5072 break;
5073 case FUNCTIONS_DOMAIN:
5074 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
8943b874 5075 continue;
61920122
PA
5076 break;
5077 case TYPES_DOMAIN:
5078 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5079 continue;
5080 break;
5081 default:
5082 break;
8943b874 5083 }
61920122 5084 }
8943b874 5085
61920122 5086 /* Don't crash on bad data. */
b76e467d 5087 if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 5088 + dwarf2_per_objfile->all_type_units.size ()))
61920122 5089 {
b98664d3 5090 complaint (_(".gdb_index entry has bad CU index"
ed2dc618
SM
5091 " [in module %s]"),
5092 objfile_name (dwarf2_per_objfile->objfile));
61920122
PA
5093 continue;
5094 }
5095
ff4c9fec 5096 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
4b514bc8
JK
5097 dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5098 expansion_notify);
61920122
PA
5099 }
5100}
5101
4b514bc8
JK
5102/* If FILE_MATCHER is non-NULL, set all the
5103 dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5104 that match FILE_MATCHER. */
5105
61920122 5106static void
4b514bc8 5107dw_expand_symtabs_matching_file_matcher
ed2dc618
SM
5108 (struct dwarf2_per_objfile *dwarf2_per_objfile,
5109 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
61920122 5110{
4b514bc8 5111 if (file_matcher == NULL)
61920122
PA
5112 return;
5113
4b514bc8
JK
5114 objfile *const objfile = dwarf2_per_objfile->objfile;
5115
5116 htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5117 htab_eq_pointer,
5118 NULL, xcalloc, xfree));
5119 htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
61920122
PA
5120 htab_eq_pointer,
5121 NULL, xcalloc, xfree));
61920122 5122
4b514bc8
JK
5123 /* The rule is CUs specify all the files, including those used by
5124 any TU, so there's no need to scan TUs here. */
61920122 5125
b76e467d 5126 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
927aa2e7 5127 {
927aa2e7
JK
5128 QUIT;
5129
5130 per_cu->v.quick->mark = 0;
5131
5132 /* We only need to look at symtabs not already expanded. */
5133 if (per_cu->v.quick->compunit_symtab)
5134 continue;
5135
b76e467d 5136 quick_file_names *file_data = dw2_get_file_names (per_cu);
927aa2e7
JK
5137 if (file_data == NULL)
5138 continue;
5139
5140 if (htab_find (visited_not_found.get (), file_data) != NULL)
5141 continue;
5142 else if (htab_find (visited_found.get (), file_data) != NULL)
5143 {
5144 per_cu->v.quick->mark = 1;
5145 continue;
5146 }
5147
b76e467d 5148 for (int j = 0; j < file_data->num_file_names; ++j)
927aa2e7
JK
5149 {
5150 const char *this_real_name;
5151
5152 if (file_matcher (file_data->file_names[j], false))
5153 {
5154 per_cu->v.quick->mark = 1;
5155 break;
5156 }
5157
5158 /* Before we invoke realpath, which can get expensive when many
5159 files are involved, do a quick comparison of the basenames. */
5160 if (!basenames_may_differ
5161 && !file_matcher (lbasename (file_data->file_names[j]),
5162 true))
5163 continue;
5164
5165 this_real_name = dw2_get_real_path (objfile, file_data, j);
5166 if (file_matcher (this_real_name, false))
5167 {
5168 per_cu->v.quick->mark = 1;
5169 break;
5170 }
5171 }
5172
b76e467d
SM
5173 void **slot = htab_find_slot (per_cu->v.quick->mark
5174 ? visited_found.get ()
5175 : visited_not_found.get (),
5176 file_data, INSERT);
927aa2e7
JK
5177 *slot = file_data;
5178 }
5179}
5180
5181static void
5182dw2_expand_symtabs_matching
5183 (struct objfile *objfile,
5184 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5185 const lookup_name_info &lookup_name,
5186 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5187 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5188 enum search_domain kind)
5189{
ed2dc618
SM
5190 struct dwarf2_per_objfile *dwarf2_per_objfile
5191 = get_dwarf2_per_objfile (objfile);
927aa2e7
JK
5192
5193 /* index_table is NULL if OBJF_READNOW. */
5194 if (!dwarf2_per_objfile->index_table)
5195 return;
5196
ed2dc618 5197 dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
927aa2e7
JK
5198
5199 mapped_index &index = *dwarf2_per_objfile->index_table;
5200
5201 dw2_expand_symtabs_matching_symbol (index, lookup_name,
5202 symbol_matcher,
5203 kind, [&] (offset_type idx)
5204 {
ed2dc618 5205 dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
927aa2e7
JK
5206 expansion_notify, kind);
5207 });
5208}
5209
5210/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5211 symtab. */
5212
5213static struct compunit_symtab *
5214recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5215 CORE_ADDR pc)
5216{
5217 int i;
5218
5219 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5220 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5221 return cust;
5222
5223 if (cust->includes == NULL)
5224 return NULL;
5225
5226 for (i = 0; cust->includes[i]; ++i)
5227 {
5228 struct compunit_symtab *s = cust->includes[i];
5229
5230 s = recursively_find_pc_sect_compunit_symtab (s, pc);
5231 if (s != NULL)
5232 return s;
5233 }
5234
5235 return NULL;
5236}
5237
5238static struct compunit_symtab *
5239dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5240 struct bound_minimal_symbol msymbol,
5241 CORE_ADDR pc,
5242 struct obj_section *section,
5243 int warn_if_readin)
5244{
5245 struct dwarf2_per_cu_data *data;
5246 struct compunit_symtab *result;
5247
927aa2e7
JK
5248 if (!objfile->psymtabs_addrmap)
5249 return NULL;
5250
79748972
TT
5251 CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5252 SECT_OFF_TEXT (objfile));
927aa2e7 5253 data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
79748972 5254 pc - baseaddr);
927aa2e7
JK
5255 if (!data)
5256 return NULL;
5257
5258 if (warn_if_readin && data->v.quick->compunit_symtab)
5259 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5260 paddress (get_objfile_arch (objfile), pc));
5261
5262 result
58f0c718
TT
5263 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5264 false),
927aa2e7
JK
5265 pc);
5266 gdb_assert (result != NULL);
5267 return result;
5268}
5269
5270static void
5271dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5272 void *data, int need_fullname)
5273{
ed2dc618
SM
5274 struct dwarf2_per_objfile *dwarf2_per_objfile
5275 = get_dwarf2_per_objfile (objfile);
927aa2e7
JK
5276
5277 if (!dwarf2_per_objfile->filenames_cache)
5278 {
5279 dwarf2_per_objfile->filenames_cache.emplace ();
5280
5281 htab_up visited (htab_create_alloc (10,
5282 htab_hash_pointer, htab_eq_pointer,
5283 NULL, xcalloc, xfree));
5284
5285 /* The rule is CUs specify all the files, including those used
5286 by any TU, so there's no need to scan TUs here. We can
5287 ignore file names coming from already-expanded CUs. */
5288
b76e467d 5289 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
927aa2e7 5290 {
927aa2e7
JK
5291 if (per_cu->v.quick->compunit_symtab)
5292 {
5293 void **slot = htab_find_slot (visited.get (),
5294 per_cu->v.quick->file_names,
5295 INSERT);
5296
5297 *slot = per_cu->v.quick->file_names;
5298 }
5299 }
5300
b76e467d 5301 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
927aa2e7 5302 {
927aa2e7
JK
5303 /* We only need to look at symtabs not already expanded. */
5304 if (per_cu->v.quick->compunit_symtab)
5305 continue;
5306
b76e467d 5307 quick_file_names *file_data = dw2_get_file_names (per_cu);
927aa2e7
JK
5308 if (file_data == NULL)
5309 continue;
5310
b76e467d 5311 void **slot = htab_find_slot (visited.get (), file_data, INSERT);
927aa2e7
JK
5312 if (*slot)
5313 {
5314 /* Already visited. */
5315 continue;
5316 }
5317 *slot = file_data;
5318
5319 for (int j = 0; j < file_data->num_file_names; ++j)
5320 {
5321 const char *filename = file_data->file_names[j];
5322 dwarf2_per_objfile->filenames_cache->seen (filename);
5323 }
5324 }
5325 }
5326
5327 dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5328 {
5329 gdb::unique_xmalloc_ptr<char> this_real_name;
5330
5331 if (need_fullname)
5332 this_real_name = gdb_realpath (filename);
5333 (*fun) (filename, this_real_name.get (), data);
5334 });
5335}
5336
5337static int
5338dw2_has_symbols (struct objfile *objfile)
5339{
5340 return 1;
5341}
5342
5343const struct quick_symbol_functions dwarf2_gdb_index_functions =
5344{
5345 dw2_has_symbols,
5346 dw2_find_last_source_symtab,
5347 dw2_forget_cached_source_info,
5348 dw2_map_symtabs_matching_filename,
5349 dw2_lookup_symbol,
5350 dw2_print_stats,
5351 dw2_dump,
927aa2e7
JK
5352 dw2_expand_symtabs_for_function,
5353 dw2_expand_all_symtabs,
5354 dw2_expand_symtabs_with_fullname,
5355 dw2_map_matching_symbols,
5356 dw2_expand_symtabs_matching,
5357 dw2_find_pc_sect_compunit_symtab,
5358 NULL,
5359 dw2_map_symbol_filenames
5360};
5361
5362/* DWARF-5 debug_names reader. */
5363
5364/* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension. */
5365static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5366
5367/* A helper function that reads the .debug_names section in SECTION
5368 and fills in MAP. FILENAME is the name of the file containing the
5369 section; it is used for error reporting.
5370
5371 Returns true if all went well, false otherwise. */
5372
5373static bool
5374read_debug_names_from_section (struct objfile *objfile,
5375 const char *filename,
5376 struct dwarf2_section_info *section,
5377 mapped_debug_names &map)
5378{
5379 if (dwarf2_section_empty_p (section))
5380 return false;
5381
5382 /* Older elfutils strip versions could keep the section in the main
5383 executable while splitting it for the separate debug info file. */
5384 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5385 return false;
5386
5387 dwarf2_read_section (objfile, section);
5388
5389 map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5390
5391 const gdb_byte *addr = section->buffer;
5392
5393 bfd *const abfd = get_section_bfd_owner (section);
5394
5395 unsigned int bytes_read;
5396 LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5397 addr += bytes_read;
5398
5399 map.dwarf5_is_dwarf64 = bytes_read != 4;
5400 map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5401 if (bytes_read + length != section->size)
5402 {
5403 /* There may be multiple per-CU indices. */
5404 warning (_("Section .debug_names in %s length %s does not match "
5405 "section length %s, ignoring .debug_names."),
5406 filename, plongest (bytes_read + length),
5407 pulongest (section->size));
5408 return false;
5409 }
5410
5411 /* The version number. */
5412 uint16_t version = read_2_bytes (abfd, addr);
5413 addr += 2;
5414 if (version != 5)
5415 {
5416 warning (_("Section .debug_names in %s has unsupported version %d, "
5417 "ignoring .debug_names."),
5418 filename, version);
5419 return false;
5420 }
5421
5422 /* Padding. */
5423 uint16_t padding = read_2_bytes (abfd, addr);
5424 addr += 2;
5425 if (padding != 0)
5426 {
5427 warning (_("Section .debug_names in %s has unsupported padding %d, "
5428 "ignoring .debug_names."),
5429 filename, padding);
5430 return false;
5431 }
5432
5433 /* comp_unit_count - The number of CUs in the CU list. */
5434 map.cu_count = read_4_bytes (abfd, addr);
5435 addr += 4;
5436
5437 /* local_type_unit_count - The number of TUs in the local TU
5438 list. */
5439 map.tu_count = read_4_bytes (abfd, addr);
5440 addr += 4;
5441
5442 /* foreign_type_unit_count - The number of TUs in the foreign TU
5443 list. */
5444 uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5445 addr += 4;
5446 if (foreign_tu_count != 0)
5447 {
5448 warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5449 "ignoring .debug_names."),
5450 filename, static_cast<unsigned long> (foreign_tu_count));
5451 return false;
5452 }
5453
5454 /* bucket_count - The number of hash buckets in the hash lookup
5455 table. */
5456 map.bucket_count = read_4_bytes (abfd, addr);
5457 addr += 4;
5458
5459 /* name_count - The number of unique names in the index. */
5460 map.name_count = read_4_bytes (abfd, addr);
5461 addr += 4;
5462
5463 /* abbrev_table_size - The size in bytes of the abbreviations
5464 table. */
5465 uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5466 addr += 4;
5467
5468 /* augmentation_string_size - The size in bytes of the augmentation
5469 string. This value is rounded up to a multiple of 4. */
5470 uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5471 addr += 4;
5472 map.augmentation_is_gdb = ((augmentation_string_size
5473 == sizeof (dwarf5_augmentation))
5474 && memcmp (addr, dwarf5_augmentation,
5475 sizeof (dwarf5_augmentation)) == 0);
5476 augmentation_string_size += (-augmentation_string_size) & 3;
5477 addr += augmentation_string_size;
5478
5479 /* List of CUs */
5480 map.cu_table_reordered = addr;
5481 addr += map.cu_count * map.offset_size;
5482
5483 /* List of Local TUs */
5484 map.tu_table_reordered = addr;
5485 addr += map.tu_count * map.offset_size;
5486
5487 /* Hash Lookup Table */
5488 map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5489 addr += map.bucket_count * 4;
5490 map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5491 addr += map.name_count * 4;
5492
5493 /* Name Table */
5494 map.name_table_string_offs_reordered = addr;
5495 addr += map.name_count * map.offset_size;
5496 map.name_table_entry_offs_reordered = addr;
5497 addr += map.name_count * map.offset_size;
5498
5499 const gdb_byte *abbrev_table_start = addr;
5500 for (;;)
5501 {
927aa2e7
JK
5502 const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5503 addr += bytes_read;
5504 if (index_num == 0)
5505 break;
5506
5507 const auto insertpair
5508 = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5509 if (!insertpair.second)
5510 {
5511 warning (_("Section .debug_names in %s has duplicate index %s, "
5512 "ignoring .debug_names."),
5513 filename, pulongest (index_num));
5514 return false;
5515 }
5516 mapped_debug_names::index_val &indexval = insertpair.first->second;
5517 indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5518 addr += bytes_read;
5519
5520 for (;;)
5521 {
5522 mapped_debug_names::index_val::attr attr;
5523 attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5524 addr += bytes_read;
5525 attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5526 addr += bytes_read;
5527 if (attr.form == DW_FORM_implicit_const)
5528 {
5529 attr.implicit_const = read_signed_leb128 (abfd, addr,
5530 &bytes_read);
5531 addr += bytes_read;
5532 }
5533 if (attr.dw_idx == 0 && attr.form == 0)
5534 break;
5535 indexval.attr_vec.push_back (std::move (attr));
5536 }
5537 }
5538 if (addr != abbrev_table_start + abbrev_table_size)
5539 {
5540 warning (_("Section .debug_names in %s has abbreviation_table "
5541 "of size %zu vs. written as %u, ignoring .debug_names."),
5542 filename, addr - abbrev_table_start, abbrev_table_size);
5543 return false;
5544 }
5545 map.entry_pool = addr;
5546
5547 return true;
5548}
5549
5550/* A helper for create_cus_from_debug_names that handles the MAP's CU
5551 list. */
5552
5553static void
ed2dc618 5554create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
927aa2e7
JK
5555 const mapped_debug_names &map,
5556 dwarf2_section_info &section,
b76e467d 5557 bool is_dwz)
927aa2e7
JK
5558{
5559 sect_offset sect_off_prev;
5560 for (uint32_t i = 0; i <= map.cu_count; ++i)
5561 {
5562 sect_offset sect_off_next;
5563 if (i < map.cu_count)
5564 {
5565 sect_off_next
5566 = (sect_offset) (extract_unsigned_integer
5567 (map.cu_table_reordered + i * map.offset_size,
5568 map.offset_size,
5569 map.dwarf5_byte_order));
5570 }
5571 else
5572 sect_off_next = (sect_offset) section.size;
5573 if (i >= 1)
5574 {
5575 const ULONGEST length = sect_off_next - sect_off_prev;
b76e467d 5576 dwarf2_per_cu_data *per_cu
ed2dc618 5577 = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
927aa2e7 5578 sect_off_prev, length);
b76e467d 5579 dwarf2_per_objfile->all_comp_units.push_back (per_cu);
927aa2e7
JK
5580 }
5581 sect_off_prev = sect_off_next;
5582 }
5583}
5584
5585/* Read the CU list from the mapped index, and use it to create all
ed2dc618 5586 the CU objects for this dwarf2_per_objfile. */
927aa2e7
JK
5587
5588static void
ed2dc618 5589create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
927aa2e7
JK
5590 const mapped_debug_names &map,
5591 const mapped_debug_names &dwz_map)
5592{
b76e467d
SM
5593 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5594 dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
927aa2e7 5595
ed2dc618
SM
5596 create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5597 dwarf2_per_objfile->info,
b76e467d 5598 false /* is_dwz */);
927aa2e7
JK
5599
5600 if (dwz_map.cu_count == 0)
5601 return;
5602
ed2dc618
SM
5603 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5604 create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
b76e467d 5605 true /* is_dwz */);
927aa2e7
JK
5606}
5607
5608/* Read .debug_names. If everything went ok, initialize the "quick"
5609 elements of all the CUs and return true. Otherwise, return false. */
5610
5611static bool
ed2dc618 5612dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
927aa2e7 5613{
22ca247e
TT
5614 std::unique_ptr<mapped_debug_names> map
5615 (new mapped_debug_names (dwarf2_per_objfile));
ed2dc618
SM
5616 mapped_debug_names dwz_map (dwarf2_per_objfile);
5617 struct objfile *objfile = dwarf2_per_objfile->objfile;
927aa2e7
JK
5618
5619 if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5620 &dwarf2_per_objfile->debug_names,
22ca247e 5621 *map))
927aa2e7
JK
5622 return false;
5623
5624 /* Don't use the index if it's empty. */
22ca247e 5625 if (map->name_count == 0)
927aa2e7
JK
5626 return false;
5627
5628 /* If there is a .dwz file, read it so we can get its CU list as
5629 well. */
ed2dc618 5630 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
927aa2e7
JK
5631 if (dwz != NULL)
5632 {
5633 if (!read_debug_names_from_section (objfile,
5634 bfd_get_filename (dwz->dwz_bfd),
5635 &dwz->debug_names, dwz_map))
5636 {
5637 warning (_("could not read '.debug_names' section from %s; skipping"),
5638 bfd_get_filename (dwz->dwz_bfd));
5639 return false;
5640 }
5641 }
5642
22ca247e 5643 create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
927aa2e7 5644
22ca247e 5645 if (map->tu_count != 0)
927aa2e7
JK
5646 {
5647 /* We can only handle a single .debug_types when we have an
5648 index. */
5649 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5650 return false;
5651
5652 dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5653 dwarf2_per_objfile->types, 0);
5654
5655 create_signatured_type_table_from_debug_names
22ca247e 5656 (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
927aa2e7
JK
5657 }
5658
ed2dc618
SM
5659 create_addrmap_from_aranges (dwarf2_per_objfile,
5660 &dwarf2_per_objfile->debug_aranges);
927aa2e7 5661
22ca247e 5662 dwarf2_per_objfile->debug_names_table = std::move (map);
927aa2e7
JK
5663 dwarf2_per_objfile->using_index = 1;
5664 dwarf2_per_objfile->quick_file_names_table =
b76e467d 5665 create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
927aa2e7
JK
5666
5667 return true;
5668}
5669
927aa2e7
JK
5670/* Type used to manage iterating over all CUs looking for a symbol for
5671 .debug_names. */
5672
5673class dw2_debug_names_iterator
5674{
5675public:
5676 /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5677 BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
5678 dw2_debug_names_iterator (const mapped_debug_names &map,
5679 bool want_specific_block,
5680 block_enum block_index, domain_enum domain,
5681 const char *name)
5682 : m_map (map), m_want_specific_block (want_specific_block),
5683 m_block_index (block_index), m_domain (domain),
5684 m_addr (find_vec_in_debug_names (map, name))
5685 {}
5686
5687 dw2_debug_names_iterator (const mapped_debug_names &map,
5688 search_domain search, uint32_t namei)
5689 : m_map (map),
5690 m_search (search),
5691 m_addr (find_vec_in_debug_names (map, namei))
5692 {}
5693
5694 /* Return the next matching CU or NULL if there are no more. */
5695 dwarf2_per_cu_data *next ();
5696
5697private:
5698 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5699 const char *name);
5700 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5701 uint32_t namei);
5702
5703 /* The internalized form of .debug_names. */
5704 const mapped_debug_names &m_map;
5705
5706 /* If true, only look for symbols that match BLOCK_INDEX. */
5707 const bool m_want_specific_block = false;
5708
5709 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5710 Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5711 value. */
5712 const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5713
5714 /* The kind of symbol we're looking for. */
5715 const domain_enum m_domain = UNDEF_DOMAIN;
5716 const search_domain m_search = ALL_DOMAIN;
5717
5718 /* The list of CUs from the index entry of the symbol, or NULL if
5719 not found. */
5720 const gdb_byte *m_addr;
5721};
5722
5723const char *
5724mapped_debug_names::namei_to_name (uint32_t namei) const
5725{
5726 const ULONGEST namei_string_offs
5727 = extract_unsigned_integer ((name_table_string_offs_reordered
5728 + namei * offset_size),
5729 offset_size,
5730 dwarf5_byte_order);
5731 return read_indirect_string_at_offset
ed2dc618 5732 (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
927aa2e7
JK
5733}
5734
5735/* Find a slot in .debug_names for the object named NAME. If NAME is
5736 found, return pointer to its pool data. If NAME cannot be found,
5737 return NULL. */
5738
5739const gdb_byte *
5740dw2_debug_names_iterator::find_vec_in_debug_names
5741 (const mapped_debug_names &map, const char *name)
5742{
5743 int (*cmp) (const char *, const char *);
5744
5745 if (current_language->la_language == language_cplus
5746 || current_language->la_language == language_fortran
5747 || current_language->la_language == language_d)
5748 {
5749 /* NAME is already canonical. Drop any qualifiers as
5750 .debug_names does not contain any. */
5751
5752 if (strchr (name, '(') != NULL)
5753 {
5754 gdb::unique_xmalloc_ptr<char> without_params
5755 = cp_remove_params (name);
5756
5757 if (without_params != NULL)
5758 {
5759 name = without_params.get();
5760 }
5761 }
5762 }
5763
5764 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5765
5766 const uint32_t full_hash = dwarf5_djb_hash (name);
5767 uint32_t namei
5768 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5769 (map.bucket_table_reordered
5770 + (full_hash % map.bucket_count)), 4,
5771 map.dwarf5_byte_order);
5772 if (namei == 0)
5773 return NULL;
5774 --namei;
5775 if (namei >= map.name_count)
5776 {
b98664d3 5777 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
927aa2e7
JK
5778 "[in module %s]"),
5779 namei, map.name_count,
ed2dc618 5780 objfile_name (map.dwarf2_per_objfile->objfile));
927aa2e7
JK
5781 return NULL;
5782 }
5783
5784 for (;;)
5785 {
5786 const uint32_t namei_full_hash
5787 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5788 (map.hash_table_reordered + namei), 4,
5789 map.dwarf5_byte_order);
5790 if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5791 return NULL;
5792
5793 if (full_hash == namei_full_hash)
5794 {
5795 const char *const namei_string = map.namei_to_name (namei);
5796
5797#if 0 /* An expensive sanity check. */
5798 if (namei_full_hash != dwarf5_djb_hash (namei_string))
5799 {
b98664d3 5800 complaint (_("Wrong .debug_names hash for string at index %u "
927aa2e7
JK
5801 "[in module %s]"),
5802 namei, objfile_name (dwarf2_per_objfile->objfile));
5803 return NULL;
5804 }
5805#endif
5806
5807 if (cmp (namei_string, name) == 0)
5808 {
5809 const ULONGEST namei_entry_offs
5810 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5811 + namei * map.offset_size),
5812 map.offset_size, map.dwarf5_byte_order);
5813 return map.entry_pool + namei_entry_offs;
5814 }
5815 }
5816
5817 ++namei;
5818 if (namei >= map.name_count)
5819 return NULL;
5820 }
5821}
5822
5823const gdb_byte *
5824dw2_debug_names_iterator::find_vec_in_debug_names
5825 (const mapped_debug_names &map, uint32_t namei)
5826{
5827 if (namei >= map.name_count)
5828 {
b98664d3 5829 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
927aa2e7
JK
5830 "[in module %s]"),
5831 namei, map.name_count,
ed2dc618 5832 objfile_name (map.dwarf2_per_objfile->objfile));
927aa2e7
JK
5833 return NULL;
5834 }
5835
5836 const ULONGEST namei_entry_offs
5837 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5838 + namei * map.offset_size),
5839 map.offset_size, map.dwarf5_byte_order);
5840 return map.entry_pool + namei_entry_offs;
5841}
5842
5843/* See dw2_debug_names_iterator. */
5844
5845dwarf2_per_cu_data *
5846dw2_debug_names_iterator::next ()
5847{
5848 if (m_addr == NULL)
5849 return NULL;
5850
ed2dc618
SM
5851 struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5852 struct objfile *objfile = dwarf2_per_objfile->objfile;
5853 bfd *const abfd = objfile->obfd;
927aa2e7
JK
5854
5855 again:
5856
5857 unsigned int bytes_read;
5858 const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5859 m_addr += bytes_read;
5860 if (abbrev == 0)
5861 return NULL;
5862
5863 const auto indexval_it = m_map.abbrev_map.find (abbrev);
5864 if (indexval_it == m_map.abbrev_map.cend ())
5865 {
b98664d3 5866 complaint (_("Wrong .debug_names undefined abbrev code %s "
927aa2e7 5867 "[in module %s]"),
ed2dc618 5868 pulongest (abbrev), objfile_name (objfile));
927aa2e7
JK
5869 return NULL;
5870 }
5871 const mapped_debug_names::index_val &indexval = indexval_it->second;
5872 bool have_is_static = false;
5873 bool is_static;
5874 dwarf2_per_cu_data *per_cu = NULL;
5875 for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5876 {
5877 ULONGEST ull;
5878 switch (attr.form)
5879 {
5880 case DW_FORM_implicit_const:
5881 ull = attr.implicit_const;
5882 break;
5883 case DW_FORM_flag_present:
5884 ull = 1;
5885 break;
5886 case DW_FORM_udata:
5887 ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5888 m_addr += bytes_read;
5889 break;
5890 default:
b98664d3 5891 complaint (_("Unsupported .debug_names form %s [in module %s]"),
927aa2e7 5892 dwarf_form_name (attr.form),
ed2dc618 5893 objfile_name (objfile));
927aa2e7
JK
5894 return NULL;
5895 }
5896 switch (attr.dw_idx)
5897 {
5898 case DW_IDX_compile_unit:
5899 /* Don't crash on bad data. */
b76e467d 5900 if (ull >= dwarf2_per_objfile->all_comp_units.size ())
927aa2e7 5901 {
b98664d3 5902 complaint (_(".debug_names entry has bad CU index %s"
927aa2e7
JK
5903 " [in module %s]"),
5904 pulongest (ull),
5905 objfile_name (dwarf2_per_objfile->objfile));
5906 continue;
5907 }
ff4c9fec 5908 per_cu = dwarf2_per_objfile->get_cutu (ull);
927aa2e7 5909 break;
8af5c486
JK
5910 case DW_IDX_type_unit:
5911 /* Don't crash on bad data. */
b2bdb8cf 5912 if (ull >= dwarf2_per_objfile->all_type_units.size ())
8af5c486 5913 {
b98664d3 5914 complaint (_(".debug_names entry has bad TU index %s"
8af5c486
JK
5915 " [in module %s]"),
5916 pulongest (ull),
5917 objfile_name (dwarf2_per_objfile->objfile));
5918 continue;
5919 }
ff4c9fec 5920 per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
8af5c486 5921 break;
927aa2e7
JK
5922 case DW_IDX_GNU_internal:
5923 if (!m_map.augmentation_is_gdb)
5924 break;
5925 have_is_static = true;
5926 is_static = true;
5927 break;
5928 case DW_IDX_GNU_external:
5929 if (!m_map.augmentation_is_gdb)
5930 break;
5931 have_is_static = true;
5932 is_static = false;
5933 break;
5934 }
5935 }
5936
5937 /* Skip if already read in. */
5938 if (per_cu->v.quick->compunit_symtab)
5939 goto again;
5940
5941 /* Check static vs global. */
5942 if (have_is_static)
5943 {
5944 const bool want_static = m_block_index != GLOBAL_BLOCK;
5945 if (m_want_specific_block && want_static != is_static)
5946 goto again;
5947 }
5948
5949 /* Match dw2_symtab_iter_next, symbol_kind
5950 and debug_names::psymbol_tag. */
5951 switch (m_domain)
5952 {
5953 case VAR_DOMAIN:
5954 switch (indexval.dwarf_tag)
5955 {
5956 case DW_TAG_variable:
5957 case DW_TAG_subprogram:
5958 /* Some types are also in VAR_DOMAIN. */
5959 case DW_TAG_typedef:
5960 case DW_TAG_structure_type:
5961 break;
5962 default:
5963 goto again;
5964 }
5965 break;
5966 case STRUCT_DOMAIN:
5967 switch (indexval.dwarf_tag)
5968 {
5969 case DW_TAG_typedef:
5970 case DW_TAG_structure_type:
5971 break;
5972 default:
5973 goto again;
5974 }
5975 break;
5976 case LABEL_DOMAIN:
5977 switch (indexval.dwarf_tag)
5978 {
5979 case 0:
5980 case DW_TAG_variable:
5981 break;
5982 default:
5983 goto again;
5984 }
5985 break;
5986 default:
5987 break;
5988 }
5989
5990 /* Match dw2_expand_symtabs_matching, symbol_kind and
5991 debug_names::psymbol_tag. */
5992 switch (m_search)
4b514bc8 5993 {
927aa2e7
JK
5994 case VARIABLES_DOMAIN:
5995 switch (indexval.dwarf_tag)
4b514bc8 5996 {
927aa2e7
JK
5997 case DW_TAG_variable:
5998 break;
5999 default:
6000 goto again;
4b514bc8 6001 }
927aa2e7
JK
6002 break;
6003 case FUNCTIONS_DOMAIN:
6004 switch (indexval.dwarf_tag)
4b514bc8 6005 {
927aa2e7
JK
6006 case DW_TAG_subprogram:
6007 break;
6008 default:
6009 goto again;
4b514bc8 6010 }
927aa2e7
JK
6011 break;
6012 case TYPES_DOMAIN:
6013 switch (indexval.dwarf_tag)
6014 {
6015 case DW_TAG_typedef:
6016 case DW_TAG_structure_type:
6017 break;
6018 default:
6019 goto again;
6020 }
6021 break;
6022 default:
6023 break;
4b514bc8 6024 }
927aa2e7
JK
6025
6026 return per_cu;
4b514bc8 6027}
61920122 6028
927aa2e7
JK
6029static struct compunit_symtab *
6030dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6031 const char *name, domain_enum domain)
4b514bc8 6032{
927aa2e7 6033 const block_enum block_index = static_cast<block_enum> (block_index_int);
ed2dc618
SM
6034 struct dwarf2_per_objfile *dwarf2_per_objfile
6035 = get_dwarf2_per_objfile (objfile);
61920122 6036
927aa2e7
JK
6037 const auto &mapp = dwarf2_per_objfile->debug_names_table;
6038 if (!mapp)
61920122 6039 {
927aa2e7
JK
6040 /* index is NULL if OBJF_READNOW. */
6041 return NULL;
6042 }
6043 const auto &map = *mapp;
9291a0cd 6044
927aa2e7
JK
6045 dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6046 block_index, domain, name);
9703b513 6047
927aa2e7
JK
6048 struct compunit_symtab *stab_best = NULL;
6049 struct dwarf2_per_cu_data *per_cu;
6050 while ((per_cu = iter.next ()) != NULL)
6051 {
6052 struct symbol *sym, *with_opaque = NULL;
58f0c718 6053 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
927aa2e7
JK
6054 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6055 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
9703b513 6056
927aa2e7
JK
6057 sym = block_find_symbol (block, name, domain,
6058 block_find_non_opaque_type_preferred,
6059 &with_opaque);
9703b513 6060
927aa2e7
JK
6061 /* Some caution must be observed with overloaded functions and
6062 methods, since the index will not contain any overload
6063 information (but NAME might contain it). */
a3ec0bb1 6064
927aa2e7
JK
6065 if (sym != NULL
6066 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6067 return stab;
6068 if (with_opaque != NULL
6069 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6070 stab_best = stab;
9703b513 6071
927aa2e7 6072 /* Keep looking through other CUs. */
9703b513
TT
6073 }
6074
927aa2e7 6075 return stab_best;
9703b513
TT
6076}
6077
927aa2e7
JK
6078/* This dumps minimal information about .debug_names. It is called
6079 via "mt print objfiles". The gdb.dwarf2/gdb-index.exp testcase
6080 uses this to verify that .debug_names has been loaded. */
9291a0cd 6081
927aa2e7
JK
6082static void
6083dw2_debug_names_dump (struct objfile *objfile)
6084{
ed2dc618
SM
6085 struct dwarf2_per_objfile *dwarf2_per_objfile
6086 = get_dwarf2_per_objfile (objfile);
6087
927aa2e7
JK
6088 gdb_assert (dwarf2_per_objfile->using_index);
6089 printf_filtered (".debug_names:");
6090 if (dwarf2_per_objfile->debug_names_table)
6091 printf_filtered (" exists\n");
6092 else
6093 printf_filtered (" faked for \"readnow\"\n");
6094 printf_filtered ("\n");
9291a0cd
TT
6095}
6096
9291a0cd 6097static void
927aa2e7
JK
6098dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6099 const char *func_name)
9291a0cd 6100{
ed2dc618
SM
6101 struct dwarf2_per_objfile *dwarf2_per_objfile
6102 = get_dwarf2_per_objfile (objfile);
ae2de4f8 6103
927aa2e7
JK
6104 /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW. */
6105 if (dwarf2_per_objfile->debug_names_table)
24c79950 6106 {
927aa2e7 6107 const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
24c79950 6108
927aa2e7
JK
6109 /* Note: It doesn't matter what we pass for block_index here. */
6110 dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6111 GLOBAL_BLOCK, VAR_DOMAIN, func_name);
24c79950 6112
927aa2e7
JK
6113 struct dwarf2_per_cu_data *per_cu;
6114 while ((per_cu = iter.next ()) != NULL)
58f0c718 6115 dw2_instantiate_symtab (per_cu, false);
927aa2e7
JK
6116 }
6117}
24c79950 6118
927aa2e7
JK
6119static void
6120dw2_debug_names_expand_symtabs_matching
6121 (struct objfile *objfile,
6122 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6123 const lookup_name_info &lookup_name,
6124 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6125 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6126 enum search_domain kind)
6127{
ed2dc618
SM
6128 struct dwarf2_per_objfile *dwarf2_per_objfile
6129 = get_dwarf2_per_objfile (objfile);
9291a0cd 6130
927aa2e7
JK
6131 /* debug_names_table is NULL if OBJF_READNOW. */
6132 if (!dwarf2_per_objfile->debug_names_table)
6133 return;
9291a0cd 6134
ed2dc618 6135 dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
24c79950 6136
44ed8f3e 6137 mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
bbf2f4df 6138
44ed8f3e
PA
6139 dw2_expand_symtabs_matching_symbol (map, lookup_name,
6140 symbol_matcher,
6141 kind, [&] (offset_type namei)
927aa2e7 6142 {
927aa2e7
JK
6143 /* The name was matched, now expand corresponding CUs that were
6144 marked. */
6145 dw2_debug_names_iterator iter (map, kind, namei);
bbf2f4df 6146
927aa2e7
JK
6147 struct dwarf2_per_cu_data *per_cu;
6148 while ((per_cu = iter.next ()) != NULL)
6149 dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6150 expansion_notify);
44ed8f3e 6151 });
9291a0cd
TT
6152}
6153
927aa2e7 6154const struct quick_symbol_functions dwarf2_debug_names_functions =
9291a0cd
TT
6155{
6156 dw2_has_symbols,
6157 dw2_find_last_source_symtab,
6158 dw2_forget_cached_source_info,
f8eba3c6 6159 dw2_map_symtabs_matching_filename,
927aa2e7 6160 dw2_debug_names_lookup_symbol,
9291a0cd 6161 dw2_print_stats,
927aa2e7 6162 dw2_debug_names_dump,
927aa2e7 6163 dw2_debug_names_expand_symtabs_for_function,
9291a0cd 6164 dw2_expand_all_symtabs,
652a8996 6165 dw2_expand_symtabs_with_fullname,
40658b94 6166 dw2_map_matching_symbols,
927aa2e7 6167 dw2_debug_names_expand_symtabs_matching,
43f3e411 6168 dw2_find_pc_sect_compunit_symtab,
71a3c369 6169 NULL,
9291a0cd
TT
6170 dw2_map_symbol_filenames
6171};
6172
4485a1c1
SM
6173/* Get the content of the .gdb_index section of OBJ. SECTION_OWNER should point
6174 to either a dwarf2_per_objfile or dwz_file object. */
6175
6176template <typename T>
6177static gdb::array_view<const gdb_byte>
6178get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6179{
6180 dwarf2_section_info *section = &section_owner->gdb_index;
6181
6182 if (dwarf2_section_empty_p (section))
6183 return {};
6184
6185 /* Older elfutils strip versions could keep the section in the main
6186 executable while splitting it for the separate debug info file. */
6187 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6188 return {};
6189
6190 dwarf2_read_section (obj, section);
6191
8bebfcda
PA
6192 /* dwarf2_section_info::size is a bfd_size_type, while
6193 gdb::array_view works with size_t. On 32-bit hosts, with
6194 --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
6195 is 32-bit. So we need an explicit narrowing conversion here.
6196 This is fine, because it's impossible to allocate or mmap an
6197 array/buffer larger than what size_t can represent. */
6198 return gdb::make_array_view (section->buffer, section->size);
4485a1c1
SM
6199}
6200
87d6a7aa
SM
6201/* Lookup the index cache for the contents of the index associated to
6202 DWARF2_OBJ. */
6203
6204static gdb::array_view<const gdb_byte>
6205get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6206{
6207 const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6208 if (build_id == nullptr)
6209 return {};
6210
6211 return global_index_cache.lookup_gdb_index (build_id,
6212 &dwarf2_obj->index_cache_res);
6213}
6214
6215/* Same as the above, but for DWZ. */
6216
6217static gdb::array_view<const gdb_byte>
6218get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6219{
6220 const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6221 if (build_id == nullptr)
6222 return {};
6223
6224 return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6225}
6226
3c0aa29a 6227/* See symfile.h. */
9291a0cd 6228
3c0aa29a
PA
6229bool
6230dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
9291a0cd 6231{
ed2dc618
SM
6232 struct dwarf2_per_objfile *dwarf2_per_objfile
6233 = get_dwarf2_per_objfile (objfile);
6234
9291a0cd
TT
6235 /* If we're about to read full symbols, don't bother with the
6236 indices. In this case we also don't care if some other debug
6237 format is making psymtabs, because they are all about to be
6238 expanded anyway. */
6239 if ((objfile->flags & OBJF_READNOW))
6240 {
9291a0cd 6241 dwarf2_per_objfile->using_index = 1;
ed2dc618
SM
6242 create_all_comp_units (dwarf2_per_objfile);
6243 create_all_type_units (dwarf2_per_objfile);
b76e467d
SM
6244 dwarf2_per_objfile->quick_file_names_table
6245 = create_quick_file_names_table
6246 (dwarf2_per_objfile->all_comp_units.size ());
9291a0cd 6247
b76e467d 6248 for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 6249 + dwarf2_per_objfile->all_type_units.size ()); ++i)
9291a0cd 6250 {
ff4c9fec 6251 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
9291a0cd 6252
e254ef6a
DE
6253 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6254 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
6255 }
6256
6257 /* Return 1 so that gdb sees the "quick" functions. However,
6258 these functions will be no-ops because we will have expanded
6259 all symtabs. */
3c0aa29a
PA
6260 *index_kind = dw_index_kind::GDB_INDEX;
6261 return true;
9291a0cd
TT
6262 }
6263
ed2dc618 6264 if (dwarf2_read_debug_names (dwarf2_per_objfile))
3c0aa29a
PA
6265 {
6266 *index_kind = dw_index_kind::DEBUG_NAMES;
6267 return true;
6268 }
927aa2e7 6269
4485a1c1
SM
6270 if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6271 get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6272 get_gdb_index_contents_from_section<dwz_file>))
3c0aa29a
PA
6273 {
6274 *index_kind = dw_index_kind::GDB_INDEX;
6275 return true;
6276 }
9291a0cd 6277
87d6a7aa
SM
6278 /* ... otherwise, try to find the index in the index cache. */
6279 if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6280 get_gdb_index_contents_from_cache,
6281 get_gdb_index_contents_from_cache_dwz))
6282 {
6283 global_index_cache.hit ();
6284 *index_kind = dw_index_kind::GDB_INDEX;
6285 return true;
6286 }
6287
6288 global_index_cache.miss ();
3c0aa29a 6289 return false;
9291a0cd
TT
6290}
6291
6292\f
6293
dce234bc
PP
6294/* Build a partial symbol table. */
6295
6296void
f29dff0a 6297dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 6298{
ed2dc618
SM
6299 struct dwarf2_per_objfile *dwarf2_per_objfile
6300 = get_dwarf2_per_objfile (objfile);
c9bf0622 6301
af5bf4ad
SM
6302 if (objfile->global_psymbols.capacity () == 0
6303 && objfile->static_psymbols.capacity () == 0)
6304 init_psymbol_list (objfile, 1024);
c906108c 6305
492d29ea 6306 TRY
c9bf0622
TT
6307 {
6308 /* This isn't really ideal: all the data we allocate on the
6309 objfile's obstack is still uselessly kept around. However,
6310 freeing it seems unsafe. */
906768f9 6311 psymtab_discarder psymtabs (objfile);
ed2dc618 6312 dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
906768f9 6313 psymtabs.keep ();
87d6a7aa
SM
6314
6315 /* (maybe) store an index in the cache. */
6316 global_index_cache.store (dwarf2_per_objfile);
c9bf0622 6317 }
492d29ea
PA
6318 CATCH (except, RETURN_MASK_ERROR)
6319 {
6320 exception_print (gdb_stderr, except);
6321 }
6322 END_CATCH
c906108c 6323}
c906108c 6324
1ce1cefd
DE
6325/* Return the total length of the CU described by HEADER. */
6326
6327static unsigned int
6328get_cu_length (const struct comp_unit_head *header)
6329{
6330 return header->initial_length_size + header->length;
6331}
6332
9c541725 6333/* Return TRUE if SECT_OFF is within CU_HEADER. */
45452591 6334
9c541725
PA
6335static inline bool
6336offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
45452591 6337{
9c541725
PA
6338 sect_offset bottom = cu_header->sect_off;
6339 sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
9a619af0 6340
9c541725 6341 return sect_off >= bottom && sect_off < top;
45452591
DE
6342}
6343
3b80fe9b
DE
6344/* Find the base address of the compilation unit for range lists and
6345 location lists. It will normally be specified by DW_AT_low_pc.
6346 In DWARF-3 draft 4, the base address could be overridden by
6347 DW_AT_entry_pc. It's been removed, but GCC still uses this for
6348 compilation units with discontinuous ranges. */
6349
6350static void
6351dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6352{
6353 struct attribute *attr;
6354
6355 cu->base_known = 0;
6356 cu->base_address = 0;
6357
6358 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6359 if (attr)
6360 {
31aa7e4e 6361 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
6362 cu->base_known = 1;
6363 }
6364 else
6365 {
6366 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6367 if (attr)
6368 {
31aa7e4e 6369 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
6370 cu->base_known = 1;
6371 }
6372 }
6373}
6374
93311388 6375/* Read in the comp unit header information from the debug_info at info_ptr.
43988095 6376 Use rcuh_kind::COMPILE as the default type if not known by the caller.
93311388
DE
6377 NOTE: This leaves members offset, first_die_offset to be filled in
6378 by the caller. */
107d2387 6379
d521ce57 6380static const gdb_byte *
107d2387 6381read_comp_unit_head (struct comp_unit_head *cu_header,
43988095
JK
6382 const gdb_byte *info_ptr,
6383 struct dwarf2_section_info *section,
6384 rcuh_kind section_kind)
107d2387
AC
6385{
6386 int signed_addr;
891d2f0b 6387 unsigned int bytes_read;
43988095
JK
6388 const char *filename = get_section_file_name (section);
6389 bfd *abfd = get_section_bfd_owner (section);
c764a876
DE
6390
6391 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6392 cu_header->initial_length_size = bytes_read;
6393 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 6394 info_ptr += bytes_read;
107d2387 6395 cu_header->version = read_2_bytes (abfd, info_ptr);
1ea5da02
TV
6396 if (cu_header->version < 2 || cu_header->version > 5)
6397 error (_("Dwarf Error: wrong version in compilation unit header "
6398 "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6399 cu_header->version, filename);
107d2387 6400 info_ptr += 2;
43988095
JK
6401 if (cu_header->version < 5)
6402 switch (section_kind)
6403 {
6404 case rcuh_kind::COMPILE:
6405 cu_header->unit_type = DW_UT_compile;
6406 break;
6407 case rcuh_kind::TYPE:
6408 cu_header->unit_type = DW_UT_type;
6409 break;
6410 default:
6411 internal_error (__FILE__, __LINE__,
6412 _("read_comp_unit_head: invalid section_kind"));
6413 }
6414 else
6415 {
6416 cu_header->unit_type = static_cast<enum dwarf_unit_type>
6417 (read_1_byte (abfd, info_ptr));
6418 info_ptr += 1;
6419 switch (cu_header->unit_type)
6420 {
6421 case DW_UT_compile:
6422 if (section_kind != rcuh_kind::COMPILE)
6423 error (_("Dwarf Error: wrong unit_type in compilation unit header "
6424 "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6425 filename);
6426 break;
6427 case DW_UT_type:
6428 section_kind = rcuh_kind::TYPE;
6429 break;
6430 default:
6431 error (_("Dwarf Error: wrong unit_type in compilation unit header "
6432 "(is %d, should be %d or %d) [in module %s]"),
6433 cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6434 }
6435
6436 cu_header->addr_size = read_1_byte (abfd, info_ptr);
6437 info_ptr += 1;
6438 }
9c541725
PA
6439 cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6440 cu_header,
6441 &bytes_read);
613e1657 6442 info_ptr += bytes_read;
43988095
JK
6443 if (cu_header->version < 5)
6444 {
6445 cu_header->addr_size = read_1_byte (abfd, info_ptr);
6446 info_ptr += 1;
6447 }
107d2387
AC
6448 signed_addr = bfd_get_sign_extend_vma (abfd);
6449 if (signed_addr < 0)
8e65ff28 6450 internal_error (__FILE__, __LINE__,
e2e0b3e5 6451 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 6452 cu_header->signed_addr_p = signed_addr;
c764a876 6453
43988095
JK
6454 if (section_kind == rcuh_kind::TYPE)
6455 {
6456 LONGEST type_offset;
6457
6458 cu_header->signature = read_8_bytes (abfd, info_ptr);
6459 info_ptr += 8;
6460
6461 type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6462 info_ptr += bytes_read;
9c541725
PA
6463 cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6464 if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
43988095
JK
6465 error (_("Dwarf Error: Too big type_offset in compilation unit "
6466 "header (is %s) [in module %s]"), plongest (type_offset),
6467 filename);
6468 }
6469
107d2387
AC
6470 return info_ptr;
6471}
6472
36586728
TT
6473/* Helper function that returns the proper abbrev section for
6474 THIS_CU. */
6475
6476static struct dwarf2_section_info *
6477get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6478{
6479 struct dwarf2_section_info *abbrev;
ed2dc618 6480 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
36586728
TT
6481
6482 if (this_cu->is_dwz)
ed2dc618 6483 abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
36586728
TT
6484 else
6485 abbrev = &dwarf2_per_objfile->abbrev;
6486
6487 return abbrev;
6488}
6489
9ff913ba
DE
6490/* Subroutine of read_and_check_comp_unit_head and
6491 read_and_check_type_unit_head to simplify them.
6492 Perform various error checking on the header. */
6493
6494static void
ed2dc618
SM
6495error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6496 struct comp_unit_head *header,
4bdcc0c1
DE
6497 struct dwarf2_section_info *section,
6498 struct dwarf2_section_info *abbrev_section)
9ff913ba 6499{
a32a8923 6500 const char *filename = get_section_file_name (section);
9ff913ba 6501
9c541725 6502 if (to_underlying (header->abbrev_sect_off)
36586728 6503 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9d8780f0
SM
6504 error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6505 "(offset %s + 6) [in module %s]"),
6506 sect_offset_str (header->abbrev_sect_off),
6507 sect_offset_str (header->sect_off),
9ff913ba
DE
6508 filename);
6509
9c541725 6510 /* Cast to ULONGEST to use 64-bit arithmetic when possible to
9ff913ba 6511 avoid potential 32-bit overflow. */
9c541725 6512 if (((ULONGEST) header->sect_off + get_cu_length (header))
9ff913ba 6513 > section->size)
9c541725 6514 error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
9d8780f0
SM
6515 "(offset %s + 0) [in module %s]"),
6516 header->length, sect_offset_str (header->sect_off),
9ff913ba
DE
6517 filename);
6518}
6519
6520/* Read in a CU/TU header and perform some basic error checking.
6521 The contents of the header are stored in HEADER.
6522 The result is a pointer to the start of the first DIE. */
adabb602 6523
d521ce57 6524static const gdb_byte *
ed2dc618
SM
6525read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6526 struct comp_unit_head *header,
9ff913ba 6527 struct dwarf2_section_info *section,
4bdcc0c1 6528 struct dwarf2_section_info *abbrev_section,
d521ce57 6529 const gdb_byte *info_ptr,
43988095 6530 rcuh_kind section_kind)
72bf9492 6531{
d521ce57 6532 const gdb_byte *beg_of_comp_unit = info_ptr;
72bf9492 6533
9c541725 6534 header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
adabb602 6535
43988095 6536 info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
9ff913ba 6537
9c541725 6538 header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
348e048f 6539
ed2dc618
SM
6540 error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6541 abbrev_section);
9ff913ba
DE
6542
6543 return info_ptr;
348e048f
DE
6544}
6545
f4dc4d17
DE
6546/* Fetch the abbreviation table offset from a comp or type unit header. */
6547
6548static sect_offset
ed2dc618
SM
6549read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6550 struct dwarf2_section_info *section,
9c541725 6551 sect_offset sect_off)
f4dc4d17 6552{
a32a8923 6553 bfd *abfd = get_section_bfd_owner (section);
d521ce57 6554 const gdb_byte *info_ptr;
ac298888 6555 unsigned int initial_length_size, offset_size;
43988095 6556 uint16_t version;
f4dc4d17
DE
6557
6558 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
9c541725 6559 info_ptr = section->buffer + to_underlying (sect_off);
ac298888 6560 read_initial_length (abfd, info_ptr, &initial_length_size);
f4dc4d17 6561 offset_size = initial_length_size == 4 ? 4 : 8;
43988095
JK
6562 info_ptr += initial_length_size;
6563
6564 version = read_2_bytes (abfd, info_ptr);
6565 info_ptr += 2;
6566 if (version >= 5)
6567 {
6568 /* Skip unit type and address size. */
6569 info_ptr += 2;
6570 }
6571
9c541725 6572 return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
f4dc4d17
DE
6573}
6574
aaa75496
JB
6575/* Allocate a new partial symtab for file named NAME and mark this new
6576 partial symtab as being an include of PST. */
6577
6578static void
d521ce57 6579dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
6580 struct objfile *objfile)
6581{
6582 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6583
fbd9ab74
JK
6584 if (!IS_ABSOLUTE_PATH (subpst->filename))
6585 {
6586 /* It shares objfile->objfile_obstack. */
6587 subpst->dirname = pst->dirname;
6588 }
6589
8d749320
SM
6590 subpst->dependencies
6591 = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
aaa75496
JB
6592 subpst->dependencies[0] = pst;
6593 subpst->number_of_dependencies = 1;
6594
6595 subpst->globals_offset = 0;
6596 subpst->n_global_syms = 0;
6597 subpst->statics_offset = 0;
6598 subpst->n_static_syms = 0;
43f3e411 6599 subpst->compunit_symtab = NULL;
aaa75496
JB
6600 subpst->read_symtab = pst->read_symtab;
6601 subpst->readin = 0;
6602
6603 /* No private part is necessary for include psymtabs. This property
6604 can be used to differentiate between such include psymtabs and
10b3939b 6605 the regular ones. */
58a9656e 6606 subpst->read_symtab_private = NULL;
aaa75496
JB
6607}
6608
6609/* Read the Line Number Program data and extract the list of files
6610 included by the source file represented by PST. Build an include
d85a05f0 6611 partial symtab for each of these included files. */
aaa75496
JB
6612
6613static void
6614dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
6615 struct die_info *die,
6616 struct partial_symtab *pst)
aaa75496 6617{
fff8551c 6618 line_header_up lh;
d85a05f0 6619 struct attribute *attr;
aaa75496 6620
d85a05f0
DJ
6621 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6622 if (attr)
9c541725 6623 lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
aaa75496
JB
6624 if (lh == NULL)
6625 return; /* No linetable, so no includes. */
6626
79748972
TT
6627 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). Also note
6628 that we pass in the raw text_low here; that is ok because we're
6629 only decoding the line table to make include partial symtabs, and
6630 so the addresses aren't really used. */
4ae976d1 6631 dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
79748972 6632 pst->raw_text_low (), 1);
aaa75496
JB
6633}
6634
348e048f 6635static hashval_t
52dc124a 6636hash_signatured_type (const void *item)
348e048f 6637{
9a3c8263
SM
6638 const struct signatured_type *sig_type
6639 = (const struct signatured_type *) item;
9a619af0 6640
348e048f 6641 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 6642 return sig_type->signature;
348e048f
DE
6643}
6644
6645static int
52dc124a 6646eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f 6647{
9a3c8263
SM
6648 const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6649 const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
9a619af0 6650
348e048f
DE
6651 return lhs->signature == rhs->signature;
6652}
6653
1fd400ff
TT
6654/* Allocate a hash table for signatured types. */
6655
6656static htab_t
673bfd45 6657allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
6658{
6659 return htab_create_alloc_ex (41,
52dc124a
DE
6660 hash_signatured_type,
6661 eq_signatured_type,
1fd400ff
TT
6662 NULL,
6663 &objfile->objfile_obstack,
6664 hashtab_obstack_allocate,
6665 dummy_obstack_deallocate);
6666}
6667
d467dd73 6668/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
6669
6670static int
d467dd73 6671add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff 6672{
9a3c8263 6673 struct signatured_type *sigt = (struct signatured_type *) *slot;
b2bdb8cf
SM
6674 std::vector<signatured_type *> *all_type_units
6675 = (std::vector<signatured_type *> *) datum;
1fd400ff 6676
b2bdb8cf 6677 all_type_units->push_back (sigt);
1fd400ff
TT
6678
6679 return 1;
6680}
6681
78d4d2c5 6682/* A helper for create_debug_types_hash_table. Read types from SECTION
43988095
JK
6683 and fill them into TYPES_HTAB. It will process only type units,
6684 therefore DW_UT_type. */
c88ee1f0 6685
78d4d2c5 6686static void
ed2dc618
SM
6687create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6688 struct dwo_file *dwo_file,
43988095
JK
6689 dwarf2_section_info *section, htab_t &types_htab,
6690 rcuh_kind section_kind)
348e048f 6691{
3019eac3 6692 struct objfile *objfile = dwarf2_per_objfile->objfile;
4bdcc0c1 6693 struct dwarf2_section_info *abbrev_section;
78d4d2c5
JK
6694 bfd *abfd;
6695 const gdb_byte *info_ptr, *end_ptr;
348e048f 6696
4bdcc0c1
DE
6697 abbrev_section = (dwo_file != NULL
6698 ? &dwo_file->sections.abbrev
6699 : &dwarf2_per_objfile->abbrev);
6700
b4f54984 6701 if (dwarf_read_debug)
43988095
JK
6702 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6703 get_section_name (section),
a32a8923 6704 get_section_file_name (abbrev_section));
09406207 6705
78d4d2c5
JK
6706 dwarf2_read_section (objfile, section);
6707 info_ptr = section->buffer;
348e048f 6708
78d4d2c5
JK
6709 if (info_ptr == NULL)
6710 return;
348e048f 6711
78d4d2c5
JK
6712 /* We can't set abfd until now because the section may be empty or
6713 not present, in which case the bfd is unknown. */
6714 abfd = get_section_bfd_owner (section);
348e048f 6715
78d4d2c5
JK
6716 /* We don't use init_cutu_and_read_dies_simple, or some such, here
6717 because we don't need to read any dies: the signature is in the
6718 header. */
3019eac3 6719
78d4d2c5
JK
6720 end_ptr = info_ptr + section->size;
6721 while (info_ptr < end_ptr)
6722 {
78d4d2c5
JK
6723 struct signatured_type *sig_type;
6724 struct dwo_unit *dwo_tu;
6725 void **slot;
6726 const gdb_byte *ptr = info_ptr;
6727 struct comp_unit_head header;
6728 unsigned int length;
8b70b953 6729
9c541725 6730 sect_offset sect_off = (sect_offset) (ptr - section->buffer);
348e048f 6731
a49dd8dd
JK
6732 /* Initialize it due to a false compiler warning. */
6733 header.signature = -1;
9c541725 6734 header.type_cu_offset_in_tu = (cu_offset) -1;
a49dd8dd 6735
78d4d2c5
JK
6736 /* We need to read the type's signature in order to build the hash
6737 table, but we don't need anything else just yet. */
348e048f 6738
ed2dc618 6739 ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
43988095 6740 abbrev_section, ptr, section_kind);
348e048f 6741
78d4d2c5 6742 length = get_cu_length (&header);
6caca83c 6743
78d4d2c5
JK
6744 /* Skip dummy type units. */
6745 if (ptr >= info_ptr + length
43988095
JK
6746 || peek_abbrev_code (abfd, ptr) == 0
6747 || header.unit_type != DW_UT_type)
78d4d2c5
JK
6748 {
6749 info_ptr += length;
6750 continue;
6751 }
dee91e82 6752
78d4d2c5
JK
6753 if (types_htab == NULL)
6754 {
6755 if (dwo_file)
6756 types_htab = allocate_dwo_unit_table (objfile);
6757 else
6758 types_htab = allocate_signatured_type_table (objfile);
6759 }
8b70b953 6760
78d4d2c5
JK
6761 if (dwo_file)
6762 {
6763 sig_type = NULL;
6764 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6765 struct dwo_unit);
6766 dwo_tu->dwo_file = dwo_file;
43988095 6767 dwo_tu->signature = header.signature;
9c541725 6768 dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
78d4d2c5 6769 dwo_tu->section = section;
9c541725 6770 dwo_tu->sect_off = sect_off;
78d4d2c5
JK
6771 dwo_tu->length = length;
6772 }
6773 else
6774 {
6775 /* N.B.: type_offset is not usable if this type uses a DWO file.
6776 The real type_offset is in the DWO file. */
6777 dwo_tu = NULL;
6778 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6779 struct signatured_type);
43988095 6780 sig_type->signature = header.signature;
9c541725 6781 sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
e3b94546 6782 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
78d4d2c5
JK
6783 sig_type->per_cu.is_debug_types = 1;
6784 sig_type->per_cu.section = section;
9c541725 6785 sig_type->per_cu.sect_off = sect_off;
78d4d2c5
JK
6786 sig_type->per_cu.length = length;
6787 }
6788
6789 slot = htab_find_slot (types_htab,
6790 dwo_file ? (void*) dwo_tu : (void *) sig_type,
6791 INSERT);
6792 gdb_assert (slot != NULL);
6793 if (*slot != NULL)
6794 {
9c541725 6795 sect_offset dup_sect_off;
0349ea22 6796
3019eac3
DE
6797 if (dwo_file)
6798 {
78d4d2c5
JK
6799 const struct dwo_unit *dup_tu
6800 = (const struct dwo_unit *) *slot;
6801
9c541725 6802 dup_sect_off = dup_tu->sect_off;
3019eac3
DE
6803 }
6804 else
6805 {
78d4d2c5
JK
6806 const struct signatured_type *dup_tu
6807 = (const struct signatured_type *) *slot;
6808
9c541725 6809 dup_sect_off = dup_tu->per_cu.sect_off;
3019eac3 6810 }
8b70b953 6811
b98664d3 6812 complaint (_("debug type entry at offset %s is duplicate to"
9d8780f0
SM
6813 " the entry at offset %s, signature %s"),
6814 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
43988095 6815 hex_string (header.signature));
78d4d2c5
JK
6816 }
6817 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
3019eac3 6818
78d4d2c5 6819 if (dwarf_read_debug > 1)
9d8780f0
SM
6820 fprintf_unfiltered (gdb_stdlog, " offset %s, signature %s\n",
6821 sect_offset_str (sect_off),
43988095 6822 hex_string (header.signature));
3019eac3 6823
78d4d2c5
JK
6824 info_ptr += length;
6825 }
6826}
3019eac3 6827
78d4d2c5
JK
6828/* Create the hash table of all entries in the .debug_types
6829 (or .debug_types.dwo) section(s).
6830 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6831 otherwise it is NULL.
b3c8eb43 6832
78d4d2c5 6833 The result is a pointer to the hash table or NULL if there are no types.
348e048f 6834
78d4d2c5 6835 Note: This function processes DWO files only, not DWP files. */
348e048f 6836
78d4d2c5 6837static void
ed2dc618
SM
6838create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6839 struct dwo_file *dwo_file,
78d4d2c5
JK
6840 VEC (dwarf2_section_info_def) *types,
6841 htab_t &types_htab)
6842{
6843 int ix;
6844 struct dwarf2_section_info *section;
6845
6846 if (VEC_empty (dwarf2_section_info_def, types))
6847 return;
348e048f 6848
78d4d2c5
JK
6849 for (ix = 0;
6850 VEC_iterate (dwarf2_section_info_def, types, ix, section);
6851 ++ix)
ed2dc618
SM
6852 create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6853 types_htab, rcuh_kind::TYPE);
3019eac3
DE
6854}
6855
6856/* Create the hash table of all entries in the .debug_types section,
6857 and initialize all_type_units.
6858 The result is zero if there is an error (e.g. missing .debug_types section),
6859 otherwise non-zero. */
6860
6861static int
ed2dc618 6862create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
3019eac3 6863{
78d4d2c5 6864 htab_t types_htab = NULL;
3019eac3 6865
ed2dc618
SM
6866 create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6867 &dwarf2_per_objfile->info, types_htab,
43988095 6868 rcuh_kind::COMPILE);
ed2dc618
SM
6869 create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6870 dwarf2_per_objfile->types, types_htab);
3019eac3
DE
6871 if (types_htab == NULL)
6872 {
6873 dwarf2_per_objfile->signatured_types = NULL;
6874 return 0;
6875 }
6876
348e048f
DE
6877 dwarf2_per_objfile->signatured_types = types_htab;
6878
b2bdb8cf
SM
6879 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6880 dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6881
6882 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6883 &dwarf2_per_objfile->all_type_units);
1fd400ff 6884
348e048f
DE
6885 return 1;
6886}
6887
6aa5f3a6
DE
6888/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6889 If SLOT is non-NULL, it is the entry to use in the hash table.
6890 Otherwise we find one. */
6891
6892static struct signatured_type *
ed2dc618
SM
6893add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6894 void **slot)
6aa5f3a6
DE
6895{
6896 struct objfile *objfile = dwarf2_per_objfile->objfile;
6aa5f3a6 6897
b2bdb8cf
SM
6898 if (dwarf2_per_objfile->all_type_units.size ()
6899 == dwarf2_per_objfile->all_type_units.capacity ())
6900 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6aa5f3a6 6901
b2bdb8cf
SM
6902 signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6903 struct signatured_type);
6904
6905 dwarf2_per_objfile->all_type_units.push_back (sig_type);
6aa5f3a6
DE
6906 sig_type->signature = sig;
6907 sig_type->per_cu.is_debug_types = 1;
6908 if (dwarf2_per_objfile->using_index)
6909 {
6910 sig_type->per_cu.v.quick =
6911 OBSTACK_ZALLOC (&objfile->objfile_obstack,
6912 struct dwarf2_per_cu_quick_data);
6913 }
6914
6915 if (slot == NULL)
6916 {
6917 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6918 sig_type, INSERT);
6919 }
6920 gdb_assert (*slot == NULL);
6921 *slot = sig_type;
6922 /* The rest of sig_type must be filled in by the caller. */
6923 return sig_type;
6924}
6925
a2ce51a0
DE
6926/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6927 Fill in SIG_ENTRY with DWO_ENTRY. */
6928
6929static void
ed2dc618 6930fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
a2ce51a0
DE
6931 struct signatured_type *sig_entry,
6932 struct dwo_unit *dwo_entry)
6933{
7ee85ab1 6934 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
6935 gdb_assert (! sig_entry->per_cu.queued);
6936 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
6937 if (dwarf2_per_objfile->using_index)
6938 {
6939 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 6940 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
6941 }
6942 else
6943 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0 6944 gdb_assert (sig_entry->signature == dwo_entry->signature);
9c541725 6945 gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
a2ce51a0 6946 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
6947 gdb_assert (sig_entry->dwo_unit == NULL);
6948
6949 sig_entry->per_cu.section = dwo_entry->section;
9c541725 6950 sig_entry->per_cu.sect_off = dwo_entry->sect_off;
7ee85ab1
DE
6951 sig_entry->per_cu.length = dwo_entry->length;
6952 sig_entry->per_cu.reading_dwo_directly = 1;
e3b94546 6953 sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
a2ce51a0
DE
6954 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6955 sig_entry->dwo_unit = dwo_entry;
6956}
6957
6958/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
6959 If we haven't read the TU yet, create the signatured_type data structure
6960 for a TU to be read in directly from a DWO file, bypassing the stub.
6961 This is the "Stay in DWO Optimization": When there is no DWP file and we're
6962 using .gdb_index, then when reading a CU we want to stay in the DWO file
6963 containing that CU. Otherwise we could end up reading several other DWO
6964 files (due to comdat folding) to process the transitive closure of all the
6965 mentioned TUs, and that can be slow. The current DWO file will have every
6966 type signature that it needs.
a2ce51a0
DE
6967 We only do this for .gdb_index because in the psymtab case we already have
6968 to read all the DWOs to build the type unit groups. */
6969
6970static struct signatured_type *
6971lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6972{
518817b3
SM
6973 struct dwarf2_per_objfile *dwarf2_per_objfile
6974 = cu->per_cu->dwarf2_per_objfile;
a2ce51a0
DE
6975 struct objfile *objfile = dwarf2_per_objfile->objfile;
6976 struct dwo_file *dwo_file;
6977 struct dwo_unit find_dwo_entry, *dwo_entry;
6978 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 6979 void **slot;
a2ce51a0
DE
6980
6981 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6982
6aa5f3a6
DE
6983 /* If TU skeletons have been removed then we may not have read in any
6984 TUs yet. */
6985 if (dwarf2_per_objfile->signatured_types == NULL)
6986 {
6987 dwarf2_per_objfile->signatured_types
6988 = allocate_signatured_type_table (objfile);
6989 }
a2ce51a0
DE
6990
6991 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
6992 Use the global signatured_types array to do our own comdat-folding
6993 of types. If this is the first time we're reading this TU, and
6994 the TU has an entry in .gdb_index, replace the recorded data from
6995 .gdb_index with this TU. */
a2ce51a0 6996
a2ce51a0 6997 find_sig_entry.signature = sig;
6aa5f3a6
DE
6998 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6999 &find_sig_entry, INSERT);
9a3c8263 7000 sig_entry = (struct signatured_type *) *slot;
7ee85ab1
DE
7001
7002 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
7003 read. Don't reassign the global entry to point to this DWO if that's
7004 the case. Also note that if the TU is already being read, it may not
7005 have come from a DWO, the program may be a mix of Fission-compiled
7006 code and non-Fission-compiled code. */
7007
7008 /* Have we already tried to read this TU?
7009 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7010 needn't exist in the global table yet). */
7011 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
7012 return sig_entry;
7013
6aa5f3a6
DE
7014 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7015 dwo_unit of the TU itself. */
7016 dwo_file = cu->dwo_unit->dwo_file;
7017
a2ce51a0
DE
7018 /* Ok, this is the first time we're reading this TU. */
7019 if (dwo_file->tus == NULL)
7020 return NULL;
7021 find_dwo_entry.signature = sig;
9a3c8263 7022 dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
a2ce51a0
DE
7023 if (dwo_entry == NULL)
7024 return NULL;
7025
6aa5f3a6
DE
7026 /* If the global table doesn't have an entry for this TU, add one. */
7027 if (sig_entry == NULL)
ed2dc618 7028 sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
6aa5f3a6 7029
ed2dc618 7030 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
89e63ee4 7031 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
7032 return sig_entry;
7033}
7034
a2ce51a0
DE
7035/* Subroutine of lookup_signatured_type.
7036 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
7037 then try the DWP file. If the TU stub (skeleton) has been removed then
7038 it won't be in .gdb_index. */
a2ce51a0
DE
7039
7040static struct signatured_type *
7041lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7042{
518817b3
SM
7043 struct dwarf2_per_objfile *dwarf2_per_objfile
7044 = cu->per_cu->dwarf2_per_objfile;
a2ce51a0 7045 struct objfile *objfile = dwarf2_per_objfile->objfile;
ed2dc618 7046 struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
a2ce51a0
DE
7047 struct dwo_unit *dwo_entry;
7048 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 7049 void **slot;
a2ce51a0
DE
7050
7051 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7052 gdb_assert (dwp_file != NULL);
7053
6aa5f3a6
DE
7054 /* If TU skeletons have been removed then we may not have read in any
7055 TUs yet. */
7056 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 7057 {
6aa5f3a6
DE
7058 dwarf2_per_objfile->signatured_types
7059 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
7060 }
7061
6aa5f3a6
DE
7062 find_sig_entry.signature = sig;
7063 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7064 &find_sig_entry, INSERT);
9a3c8263 7065 sig_entry = (struct signatured_type *) *slot;
6aa5f3a6
DE
7066
7067 /* Have we already tried to read this TU?
7068 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7069 needn't exist in the global table yet). */
7070 if (sig_entry != NULL)
7071 return sig_entry;
7072
a2ce51a0
DE
7073 if (dwp_file->tus == NULL)
7074 return NULL;
ed2dc618 7075 dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
57d63ce2 7076 sig, 1 /* is_debug_types */);
a2ce51a0
DE
7077 if (dwo_entry == NULL)
7078 return NULL;
7079
ed2dc618
SM
7080 sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7081 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
a2ce51a0 7082
a2ce51a0
DE
7083 return sig_entry;
7084}
7085
380bca97 7086/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
7087 Returns NULL if signature SIG is not present in the table.
7088 It is up to the caller to complain about this. */
348e048f
DE
7089
7090static struct signatured_type *
a2ce51a0 7091lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 7092{
518817b3
SM
7093 struct dwarf2_per_objfile *dwarf2_per_objfile
7094 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 7095
a2ce51a0
DE
7096 if (cu->dwo_unit
7097 && dwarf2_per_objfile->using_index)
7098 {
7099 /* We're in a DWO/DWP file, and we're using .gdb_index.
7100 These cases require special processing. */
ed2dc618 7101 if (get_dwp_file (dwarf2_per_objfile) == NULL)
a2ce51a0
DE
7102 return lookup_dwo_signatured_type (cu, sig);
7103 else
7104 return lookup_dwp_signatured_type (cu, sig);
7105 }
7106 else
7107 {
7108 struct signatured_type find_entry, *entry;
348e048f 7109
a2ce51a0
DE
7110 if (dwarf2_per_objfile->signatured_types == NULL)
7111 return NULL;
7112 find_entry.signature = sig;
9a3c8263
SM
7113 entry = ((struct signatured_type *)
7114 htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
a2ce51a0
DE
7115 return entry;
7116 }
348e048f 7117}
42e7ad6c
DE
7118\f
7119/* Low level DIE reading support. */
348e048f 7120
d85a05f0
DJ
7121/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
7122
7123static void
7124init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 7125 struct dwarf2_cu *cu,
3019eac3 7126 struct dwarf2_section_info *section,
685af9cd
TT
7127 struct dwo_file *dwo_file,
7128 struct abbrev_table *abbrev_table)
d85a05f0 7129{
fceca515 7130 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 7131 reader->abfd = get_section_bfd_owner (section);
d85a05f0 7132 reader->cu = cu;
3019eac3 7133 reader->dwo_file = dwo_file;
dee91e82
DE
7134 reader->die_section = section;
7135 reader->buffer = section->buffer;
f664829e 7136 reader->buffer_end = section->buffer + section->size;
a2ce51a0 7137 reader->comp_dir = NULL;
685af9cd 7138 reader->abbrev_table = abbrev_table;
d85a05f0
DJ
7139}
7140
b0c7bfa9
DE
7141/* Subroutine of init_cutu_and_read_dies to simplify it.
7142 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7143 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7144 already.
7145
7146 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7147 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
7148 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7149 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
7150 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
7151 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
7152 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7153 are filled in with the info of the DIE from the DWO file.
685af9cd
TT
7154 *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7155 from the dwo. Since *RESULT_READER references this abbrev table, it must be
7156 kept around for at least as long as *RESULT_READER.
7157
b0c7bfa9
DE
7158 The result is non-zero if a valid (non-dummy) DIE was found. */
7159
7160static int
7161read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7162 struct dwo_unit *dwo_unit,
b0c7bfa9 7163 struct die_info *stub_comp_unit_die,
a2ce51a0 7164 const char *stub_comp_dir,
b0c7bfa9 7165 struct die_reader_specs *result_reader,
d521ce57 7166 const gdb_byte **result_info_ptr,
b0c7bfa9 7167 struct die_info **result_comp_unit_die,
685af9cd
TT
7168 int *result_has_children,
7169 abbrev_table_up *result_dwo_abbrev_table)
b0c7bfa9 7170{
ed2dc618 7171 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
b0c7bfa9
DE
7172 struct objfile *objfile = dwarf2_per_objfile->objfile;
7173 struct dwarf2_cu *cu = this_cu->cu;
b0c7bfa9 7174 bfd *abfd;
d521ce57 7175 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
7176 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7177 int i,num_extra_attrs;
7178 struct dwarf2_section_info *dwo_abbrev_section;
7179 struct attribute *attr;
7180 struct die_info *comp_unit_die;
7181
b0aeadb3
DE
7182 /* At most one of these may be provided. */
7183 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 7184
b0c7bfa9
DE
7185 /* These attributes aren't processed until later:
7186 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
7187 DW_AT_comp_dir is used now, to find the DWO file, but it is also
7188 referenced later. However, these attributes are found in the stub
7189 which we won't have later. In order to not impose this complication
7190 on the rest of the code, we read them here and copy them to the
7191 DWO CU/TU die. */
b0c7bfa9
DE
7192
7193 stmt_list = NULL;
7194 low_pc = NULL;
7195 high_pc = NULL;
7196 ranges = NULL;
7197 comp_dir = NULL;
7198
7199 if (stub_comp_unit_die != NULL)
7200 {
7201 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7202 DWO file. */
7203 if (! this_cu->is_debug_types)
7204 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7205 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7206 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7207 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7208 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7209
7210 /* There should be a DW_AT_addr_base attribute here (if needed).
7211 We need the value before we can process DW_FORM_GNU_addr_index. */
7212 cu->addr_base = 0;
7213 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7214 if (attr)
7215 cu->addr_base = DW_UNSND (attr);
7216
7217 /* There should be a DW_AT_ranges_base attribute here (if needed).
7218 We need the value before we can process DW_AT_ranges. */
7219 cu->ranges_base = 0;
7220 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7221 if (attr)
7222 cu->ranges_base = DW_UNSND (attr);
7223 }
a2ce51a0
DE
7224 else if (stub_comp_dir != NULL)
7225 {
7226 /* Reconstruct the comp_dir attribute to simplify the code below. */
8d749320 7227 comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
a2ce51a0
DE
7228 comp_dir->name = DW_AT_comp_dir;
7229 comp_dir->form = DW_FORM_string;
7230 DW_STRING_IS_CANONICAL (comp_dir) = 0;
7231 DW_STRING (comp_dir) = stub_comp_dir;
7232 }
b0c7bfa9
DE
7233
7234 /* Set up for reading the DWO CU/TU. */
7235 cu->dwo_unit = dwo_unit;
685af9cd 7236 dwarf2_section_info *section = dwo_unit->section;
b0c7bfa9 7237 dwarf2_read_section (objfile, section);
a32a8923 7238 abfd = get_section_bfd_owner (section);
9c541725
PA
7239 begin_info_ptr = info_ptr = (section->buffer
7240 + to_underlying (dwo_unit->sect_off));
b0c7bfa9 7241 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
b0c7bfa9
DE
7242
7243 if (this_cu->is_debug_types)
7244 {
b0c7bfa9
DE
7245 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7246
ed2dc618
SM
7247 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7248 &cu->header, section,
b0c7bfa9 7249 dwo_abbrev_section,
43988095 7250 info_ptr, rcuh_kind::TYPE);
a2ce51a0 7251 /* This is not an assert because it can be caused by bad debug info. */
43988095 7252 if (sig_type->signature != cu->header.signature)
a2ce51a0
DE
7253 {
7254 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
9d8780f0 7255 " TU at offset %s [in module %s]"),
a2ce51a0 7256 hex_string (sig_type->signature),
43988095 7257 hex_string (cu->header.signature),
9d8780f0 7258 sect_offset_str (dwo_unit->sect_off),
a2ce51a0
DE
7259 bfd_get_filename (abfd));
7260 }
9c541725 7261 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
b0c7bfa9
DE
7262 /* For DWOs coming from DWP files, we don't know the CU length
7263 nor the type's offset in the TU until now. */
7264 dwo_unit->length = get_cu_length (&cu->header);
9c541725 7265 dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
b0c7bfa9
DE
7266
7267 /* Establish the type offset that can be used to lookup the type.
7268 For DWO files, we don't know it until now. */
9c541725
PA
7269 sig_type->type_offset_in_section
7270 = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
b0c7bfa9
DE
7271 }
7272 else
7273 {
ed2dc618
SM
7274 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7275 &cu->header, section,
b0c7bfa9 7276 dwo_abbrev_section,
43988095 7277 info_ptr, rcuh_kind::COMPILE);
9c541725 7278 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
b0c7bfa9
DE
7279 /* For DWOs coming from DWP files, we don't know the CU length
7280 until now. */
7281 dwo_unit->length = get_cu_length (&cu->header);
7282 }
7283
685af9cd
TT
7284 *result_dwo_abbrev_table
7285 = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7286 cu->header.abbrev_sect_off);
7287 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7288 result_dwo_abbrev_table->get ());
b0c7bfa9
DE
7289
7290 /* Read in the die, but leave space to copy over the attributes
7291 from the stub. This has the benefit of simplifying the rest of
7292 the code - all the work to maintain the illusion of a single
7293 DW_TAG_{compile,type}_unit DIE is done here. */
7294 num_extra_attrs = ((stmt_list != NULL)
7295 + (low_pc != NULL)
7296 + (high_pc != NULL)
7297 + (ranges != NULL)
7298 + (comp_dir != NULL));
7299 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7300 result_has_children, num_extra_attrs);
7301
7302 /* Copy over the attributes from the stub to the DIE we just read in. */
7303 comp_unit_die = *result_comp_unit_die;
7304 i = comp_unit_die->num_attrs;
7305 if (stmt_list != NULL)
7306 comp_unit_die->attrs[i++] = *stmt_list;
7307 if (low_pc != NULL)
7308 comp_unit_die->attrs[i++] = *low_pc;
7309 if (high_pc != NULL)
7310 comp_unit_die->attrs[i++] = *high_pc;
7311 if (ranges != NULL)
7312 comp_unit_die->attrs[i++] = *ranges;
7313 if (comp_dir != NULL)
7314 comp_unit_die->attrs[i++] = *comp_dir;
7315 comp_unit_die->num_attrs += num_extra_attrs;
7316
b4f54984 7317 if (dwarf_die_debug)
bf6af496
DE
7318 {
7319 fprintf_unfiltered (gdb_stdlog,
7320 "Read die from %s@0x%x of %s:\n",
a32a8923 7321 get_section_name (section),
bf6af496
DE
7322 (unsigned) (begin_info_ptr - section->buffer),
7323 bfd_get_filename (abfd));
b4f54984 7324 dump_die (comp_unit_die, dwarf_die_debug);
bf6af496
DE
7325 }
7326
a2ce51a0
DE
7327 /* Save the comp_dir attribute. If there is no DWP file then we'll read
7328 TUs by skipping the stub and going directly to the entry in the DWO file.
7329 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7330 to get it via circuitous means. Blech. */
7331 if (comp_dir != NULL)
7332 result_reader->comp_dir = DW_STRING (comp_dir);
7333
b0c7bfa9
DE
7334 /* Skip dummy compilation units. */
7335 if (info_ptr >= begin_info_ptr + dwo_unit->length
7336 || peek_abbrev_code (abfd, info_ptr) == 0)
7337 return 0;
7338
7339 *result_info_ptr = info_ptr;
7340 return 1;
7341}
7342
7343/* Subroutine of init_cutu_and_read_dies to simplify it.
7344 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 7345 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
7346
7347static struct dwo_unit *
7348lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7349 struct die_info *comp_unit_die)
7350{
7351 struct dwarf2_cu *cu = this_cu->cu;
b0c7bfa9
DE
7352 ULONGEST signature;
7353 struct dwo_unit *dwo_unit;
7354 const char *comp_dir, *dwo_name;
7355
a2ce51a0
DE
7356 gdb_assert (cu != NULL);
7357
b0c7bfa9 7358 /* Yeah, we look dwo_name up again, but it simplifies the code. */
7d45c7c3
KB
7359 dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7360 comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
b0c7bfa9
DE
7361
7362 if (this_cu->is_debug_types)
7363 {
7364 struct signatured_type *sig_type;
7365
7366 /* Since this_cu is the first member of struct signatured_type,
7367 we can go from a pointer to one to a pointer to the other. */
7368 sig_type = (struct signatured_type *) this_cu;
7369 signature = sig_type->signature;
7370 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7371 }
7372 else
7373 {
7374 struct attribute *attr;
7375
7376 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7377 if (! attr)
7378 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7379 " [in module %s]"),
e3b94546 7380 dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
b0c7bfa9
DE
7381 signature = DW_UNSND (attr);
7382 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7383 signature);
7384 }
7385
b0c7bfa9
DE
7386 return dwo_unit;
7387}
7388
a2ce51a0 7389/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6 7390 See it for a description of the parameters.
fcd3b13d 7391 Read a TU directly from a DWO file, bypassing the stub. */
a2ce51a0
DE
7392
7393static void
6aa5f3a6
DE
7394init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7395 int use_existing_cu, int keep,
a2ce51a0
DE
7396 die_reader_func_ftype *die_reader_func,
7397 void *data)
7398{
fcd3b13d 7399 std::unique_ptr<dwarf2_cu> new_cu;
a2ce51a0 7400 struct signatured_type *sig_type;
a2ce51a0
DE
7401 struct die_reader_specs reader;
7402 const gdb_byte *info_ptr;
7403 struct die_info *comp_unit_die;
7404 int has_children;
ed2dc618 7405 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
a2ce51a0
DE
7406
7407 /* Verify we can do the following downcast, and that we have the
7408 data we need. */
7409 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7410 sig_type = (struct signatured_type *) this_cu;
7411 gdb_assert (sig_type->dwo_unit != NULL);
7412
6aa5f3a6
DE
7413 if (use_existing_cu && this_cu->cu != NULL)
7414 {
7415 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
6aa5f3a6
DE
7416 /* There's no need to do the rereading_dwo_cu handling that
7417 init_cutu_and_read_dies does since we don't read the stub. */
7418 }
7419 else
7420 {
7421 /* If !use_existing_cu, this_cu->cu must be NULL. */
7422 gdb_assert (this_cu->cu == NULL);
fcd3b13d 7423 new_cu.reset (new dwarf2_cu (this_cu));
6aa5f3a6
DE
7424 }
7425
7426 /* A future optimization, if needed, would be to use an existing
7427 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
7428 could share abbrev tables. */
a2ce51a0 7429
685af9cd
TT
7430 /* The abbreviation table used by READER, this must live at least as long as
7431 READER. */
7432 abbrev_table_up dwo_abbrev_table;
7433
a2ce51a0 7434 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
a2ce51a0
DE
7435 NULL /* stub_comp_unit_die */,
7436 sig_type->dwo_unit->dwo_file->comp_dir,
7437 &reader, &info_ptr,
685af9cd
TT
7438 &comp_unit_die, &has_children,
7439 &dwo_abbrev_table) == 0)
a2ce51a0
DE
7440 {
7441 /* Dummy die. */
a2ce51a0
DE
7442 return;
7443 }
7444
7445 /* All the "real" work is done here. */
7446 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7447
6aa5f3a6 7448 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
7449 but the alternative is making the latter more complex.
7450 This function is only for the special case of using DWO files directly:
7451 no point in overly complicating the general case just to handle this. */
fcd3b13d 7452 if (new_cu != NULL && keep)
a2ce51a0 7453 {
fcd3b13d
SM
7454 /* Link this CU into read_in_chain. */
7455 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7456 dwarf2_per_objfile->read_in_chain = this_cu;
7457 /* The chain owns it now. */
7458 new_cu.release ();
a2ce51a0 7459 }
a2ce51a0
DE
7460}
7461
fd820528 7462/* Initialize a CU (or TU) and read its DIEs.
3019eac3 7463 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 7464
f4dc4d17
DE
7465 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7466 Otherwise the table specified in the comp unit header is read in and used.
7467 This is an optimization for when we already have the abbrev table.
7468
dee91e82
DE
7469 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7470 Otherwise, a new CU is allocated with xmalloc.
7471
7472 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7473 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
7474
7475 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 7476 linker) then DIE_READER_FUNC will not get called. */
aaa75496 7477
70221824 7478static void
fd820528 7479init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 7480 struct abbrev_table *abbrev_table,
fd820528 7481 int use_existing_cu, int keep,
58f0c718 7482 bool skip_partial,
fd820528
DE
7483 die_reader_func_ftype *die_reader_func,
7484 void *data)
c906108c 7485{
ed2dc618 7486 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
dee91e82 7487 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 7488 struct dwarf2_section_info *section = this_cu->section;
a32a8923 7489 bfd *abfd = get_section_bfd_owner (section);
dee91e82 7490 struct dwarf2_cu *cu;
d521ce57 7491 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 7492 struct die_reader_specs reader;
d85a05f0 7493 struct die_info *comp_unit_die;
dee91e82 7494 int has_children;
d85a05f0 7495 struct attribute *attr;
dee91e82 7496 struct signatured_type *sig_type = NULL;
4bdcc0c1 7497 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
7498 /* Non-zero if CU currently points to a DWO file and we need to
7499 reread it. When this happens we need to reread the skeleton die
a2ce51a0 7500 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 7501 int rereading_dwo_cu = 0;
c906108c 7502
b4f54984 7503 if (dwarf_die_debug)
9d8780f0 7504 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
09406207 7505 this_cu->is_debug_types ? "type" : "comp",
9d8780f0 7506 sect_offset_str (this_cu->sect_off));
09406207 7507
dee91e82
DE
7508 if (use_existing_cu)
7509 gdb_assert (keep);
23745b47 7510
a2ce51a0
DE
7511 /* If we're reading a TU directly from a DWO file, including a virtual DWO
7512 file (instead of going through the stub), short-circuit all of this. */
7513 if (this_cu->reading_dwo_directly)
7514 {
7515 /* Narrow down the scope of possibilities to have to understand. */
7516 gdb_assert (this_cu->is_debug_types);
7517 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
7518 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7519 die_reader_func, data);
a2ce51a0
DE
7520 return;
7521 }
7522
dee91e82
DE
7523 /* This is cheap if the section is already read in. */
7524 dwarf2_read_section (objfile, section);
7525
9c541725 7526 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
36586728
TT
7527
7528 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82 7529
fcd3b13d 7530 std::unique_ptr<dwarf2_cu> new_cu;
dee91e82
DE
7531 if (use_existing_cu && this_cu->cu != NULL)
7532 {
7533 cu = this_cu->cu;
42e7ad6c
DE
7534 /* If this CU is from a DWO file we need to start over, we need to
7535 refetch the attributes from the skeleton CU.
7536 This could be optimized by retrieving those attributes from when we
7537 were here the first time: the previous comp_unit_die was stored in
7538 comp_unit_obstack. But there's no data yet that we need this
7539 optimization. */
7540 if (cu->dwo_unit != NULL)
7541 rereading_dwo_cu = 1;
dee91e82
DE
7542 }
7543 else
7544 {
7545 /* If !use_existing_cu, this_cu->cu must be NULL. */
7546 gdb_assert (this_cu->cu == NULL);
fcd3b13d
SM
7547 new_cu.reset (new dwarf2_cu (this_cu));
7548 cu = new_cu.get ();
42e7ad6c 7549 }
dee91e82 7550
b0c7bfa9 7551 /* Get the header. */
9c541725 7552 if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
42e7ad6c
DE
7553 {
7554 /* We already have the header, there's no need to read it in again. */
9c541725 7555 info_ptr += to_underlying (cu->header.first_die_cu_offset);
42e7ad6c
DE
7556 }
7557 else
7558 {
3019eac3 7559 if (this_cu->is_debug_types)
dee91e82 7560 {
ed2dc618
SM
7561 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7562 &cu->header, section,
4bdcc0c1 7563 abbrev_section, info_ptr,
43988095 7564 rcuh_kind::TYPE);
dee91e82 7565
42e7ad6c
DE
7566 /* Since per_cu is the first member of struct signatured_type,
7567 we can go from a pointer to one to a pointer to the other. */
7568 sig_type = (struct signatured_type *) this_cu;
43988095 7569 gdb_assert (sig_type->signature == cu->header.signature);
9c541725
PA
7570 gdb_assert (sig_type->type_offset_in_tu
7571 == cu->header.type_cu_offset_in_tu);
7572 gdb_assert (this_cu->sect_off == cu->header.sect_off);
dee91e82 7573
42e7ad6c
DE
7574 /* LENGTH has not been set yet for type units if we're
7575 using .gdb_index. */
1ce1cefd 7576 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
7577
7578 /* Establish the type offset that can be used to lookup the type. */
9c541725
PA
7579 sig_type->type_offset_in_section =
7580 this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
43988095
JK
7581
7582 this_cu->dwarf_version = cu->header.version;
dee91e82
DE
7583 }
7584 else
7585 {
ed2dc618
SM
7586 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7587 &cu->header, section,
4bdcc0c1 7588 abbrev_section,
43988095
JK
7589 info_ptr,
7590 rcuh_kind::COMPILE);
dee91e82 7591
9c541725 7592 gdb_assert (this_cu->sect_off == cu->header.sect_off);
1ce1cefd 7593 gdb_assert (this_cu->length == get_cu_length (&cu->header));
43988095 7594 this_cu->dwarf_version = cu->header.version;
dee91e82
DE
7595 }
7596 }
10b3939b 7597
6caca83c 7598 /* Skip dummy compilation units. */
dee91e82 7599 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c 7600 || peek_abbrev_code (abfd, info_ptr) == 0)
fcd3b13d 7601 return;
6caca83c 7602
433df2d4
DE
7603 /* If we don't have them yet, read the abbrevs for this compilation unit.
7604 And if we need to read them now, make sure they're freed when we're
685af9cd
TT
7605 done (own the table through ABBREV_TABLE_HOLDER). */
7606 abbrev_table_up abbrev_table_holder;
f4dc4d17 7607 if (abbrev_table != NULL)
685af9cd
TT
7608 gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7609 else
f4dc4d17 7610 {
685af9cd
TT
7611 abbrev_table_holder
7612 = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7613 cu->header.abbrev_sect_off);
7614 abbrev_table = abbrev_table_holder.get ();
42e7ad6c 7615 }
af703f96 7616
dee91e82 7617 /* Read the top level CU/TU die. */
685af9cd 7618 init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
dee91e82 7619 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 7620
58f0c718
TT
7621 if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7622 return;
7623
b0c7bfa9 7624 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
685af9cd
TT
7625 from the DWO file. read_cutu_die_from_dwo will allocate the abbreviation
7626 table from the DWO file and pass the ownership over to us. It will be
7627 referenced from READER, so we must make sure to free it after we're done
7628 with READER.
7629
b0c7bfa9
DE
7630 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7631 DWO CU, that this test will fail (the attribute will not be present). */
3019eac3 7632 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
685af9cd 7633 abbrev_table_up dwo_abbrev_table;
3019eac3
DE
7634 if (attr)
7635 {
3019eac3 7636 struct dwo_unit *dwo_unit;
b0c7bfa9 7637 struct die_info *dwo_comp_unit_die;
3019eac3
DE
7638
7639 if (has_children)
6a506a2d 7640 {
b98664d3 7641 complaint (_("compilation unit with DW_AT_GNU_dwo_name"
9d8780f0
SM
7642 " has children (offset %s) [in module %s]"),
7643 sect_offset_str (this_cu->sect_off),
7644 bfd_get_filename (abfd));
6a506a2d 7645 }
b0c7bfa9 7646 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 7647 if (dwo_unit != NULL)
3019eac3 7648 {
6a506a2d 7649 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
a2ce51a0 7650 comp_unit_die, NULL,
6a506a2d 7651 &reader, &info_ptr,
685af9cd
TT
7652 &dwo_comp_unit_die, &has_children,
7653 &dwo_abbrev_table) == 0)
6a506a2d
DE
7654 {
7655 /* Dummy die. */
6a506a2d
DE
7656 return;
7657 }
7658 comp_unit_die = dwo_comp_unit_die;
7659 }
7660 else
7661 {
7662 /* Yikes, we couldn't find the rest of the DIE, we only have
7663 the stub. A complaint has already been logged. There's
7664 not much more we can do except pass on the stub DIE to
7665 die_reader_func. We don't want to throw an error on bad
7666 debug info. */
3019eac3
DE
7667 }
7668 }
7669
b0c7bfa9 7670 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
7671 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7672
b0c7bfa9 7673 /* Done, clean up. */
fcd3b13d 7674 if (new_cu != NULL && keep)
348e048f 7675 {
fcd3b13d
SM
7676 /* Link this CU into read_in_chain. */
7677 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7678 dwarf2_per_objfile->read_in_chain = this_cu;
7679 /* The chain owns it now. */
7680 new_cu.release ();
348e048f 7681 }
dee91e82
DE
7682}
7683
33e80786
DE
7684/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7685 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7686 to have already done the lookup to find the DWO file).
dee91e82
DE
7687
7688 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 7689 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
7690
7691 We fill in THIS_CU->length.
7692
7693 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7694 linker) then DIE_READER_FUNC will not get called.
7695
7696 THIS_CU->cu is always freed when done.
3019eac3
DE
7697 This is done in order to not leave THIS_CU->cu in a state where we have
7698 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
7699
7700static void
7701init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 7702 struct dwo_file *dwo_file,
dee91e82
DE
7703 die_reader_func_ftype *die_reader_func,
7704 void *data)
7705{
ed2dc618 7706 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
dee91e82 7707 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 7708 struct dwarf2_section_info *section = this_cu->section;
a32a8923 7709 bfd *abfd = get_section_bfd_owner (section);
33e80786 7710 struct dwarf2_section_info *abbrev_section;
d521ce57 7711 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 7712 struct die_reader_specs reader;
dee91e82
DE
7713 struct die_info *comp_unit_die;
7714 int has_children;
7715
b4f54984 7716 if (dwarf_die_debug)
9d8780f0 7717 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
09406207 7718 this_cu->is_debug_types ? "type" : "comp",
9d8780f0 7719 sect_offset_str (this_cu->sect_off));
09406207 7720
dee91e82
DE
7721 gdb_assert (this_cu->cu == NULL);
7722
33e80786
DE
7723 abbrev_section = (dwo_file != NULL
7724 ? &dwo_file->sections.abbrev
7725 : get_abbrev_section_for_cu (this_cu));
7726
dee91e82
DE
7727 /* This is cheap if the section is already read in. */
7728 dwarf2_read_section (objfile, section);
7729
fcd3b13d 7730 struct dwarf2_cu cu (this_cu);
dee91e82 7731
9c541725 7732 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
ed2dc618
SM
7733 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7734 &cu.header, section,
4bdcc0c1 7735 abbrev_section, info_ptr,
43988095
JK
7736 (this_cu->is_debug_types
7737 ? rcuh_kind::TYPE
7738 : rcuh_kind::COMPILE));
dee91e82 7739
1ce1cefd 7740 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
7741
7742 /* Skip dummy compilation units. */
7743 if (info_ptr >= begin_info_ptr + this_cu->length
7744 || peek_abbrev_code (abfd, info_ptr) == 0)
fcd3b13d 7745 return;
72bf9492 7746
685af9cd
TT
7747 abbrev_table_up abbrev_table
7748 = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7749 cu.header.abbrev_sect_off);
dee91e82 7750
685af9cd 7751 init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
dee91e82
DE
7752 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7753
7754 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
dee91e82
DE
7755}
7756
3019eac3
DE
7757/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7758 does not lookup the specified DWO file.
7759 This cannot be used to read DWO files.
dee91e82
DE
7760
7761 THIS_CU->cu is always freed when done.
3019eac3
DE
7762 This is done in order to not leave THIS_CU->cu in a state where we have
7763 to care whether it refers to the "main" CU or the DWO CU.
7764 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
7765
7766static void
7767init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7768 die_reader_func_ftype *die_reader_func,
7769 void *data)
7770{
33e80786 7771 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 7772}
0018ea6f
DE
7773\f
7774/* Type Unit Groups.
dee91e82 7775
0018ea6f
DE
7776 Type Unit Groups are a way to collapse the set of all TUs (type units) into
7777 a more manageable set. The grouping is done by DW_AT_stmt_list entry
7778 so that all types coming from the same compilation (.o file) are grouped
7779 together. A future step could be to put the types in the same symtab as
7780 the CU the types ultimately came from. */
ff013f42 7781
f4dc4d17
DE
7782static hashval_t
7783hash_type_unit_group (const void *item)
7784{
9a3c8263
SM
7785 const struct type_unit_group *tu_group
7786 = (const struct type_unit_group *) item;
f4dc4d17 7787
094b34ac 7788 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 7789}
348e048f
DE
7790
7791static int
f4dc4d17 7792eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 7793{
9a3c8263
SM
7794 const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7795 const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
348e048f 7796
094b34ac 7797 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 7798}
348e048f 7799
f4dc4d17
DE
7800/* Allocate a hash table for type unit groups. */
7801
7802static htab_t
ed2dc618 7803allocate_type_unit_groups_table (struct objfile *objfile)
f4dc4d17
DE
7804{
7805 return htab_create_alloc_ex (3,
7806 hash_type_unit_group,
7807 eq_type_unit_group,
7808 NULL,
ed2dc618 7809 &objfile->objfile_obstack,
f4dc4d17
DE
7810 hashtab_obstack_allocate,
7811 dummy_obstack_deallocate);
7812}
dee91e82 7813
f4dc4d17
DE
7814/* Type units that don't have DW_AT_stmt_list are grouped into their own
7815 partial symtabs. We combine several TUs per psymtab to not let the size
7816 of any one psymtab grow too big. */
7817#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7818#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 7819
094b34ac 7820/* Helper routine for get_type_unit_group.
f4dc4d17
DE
7821 Create the type_unit_group object used to hold one or more TUs. */
7822
7823static struct type_unit_group *
094b34ac 7824create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17 7825{
518817b3
SM
7826 struct dwarf2_per_objfile *dwarf2_per_objfile
7827 = cu->per_cu->dwarf2_per_objfile;
f4dc4d17 7828 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 7829 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 7830 struct type_unit_group *tu_group;
f4dc4d17
DE
7831
7832 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7833 struct type_unit_group);
094b34ac 7834 per_cu = &tu_group->per_cu;
518817b3 7835 per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
f4dc4d17 7836
094b34ac
DE
7837 if (dwarf2_per_objfile->using_index)
7838 {
7839 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7840 struct dwarf2_per_cu_quick_data);
094b34ac
DE
7841 }
7842 else
7843 {
9c541725 7844 unsigned int line_offset = to_underlying (line_offset_struct);
094b34ac 7845 struct partial_symtab *pst;
528e1572 7846 std::string name;
094b34ac
DE
7847
7848 /* Give the symtab a useful name for debug purposes. */
7849 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
528e1572
SM
7850 name = string_printf ("<type_units_%d>",
7851 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
094b34ac 7852 else
528e1572 7853 name = string_printf ("<type_units_at_0x%x>", line_offset);
094b34ac 7854
528e1572 7855 pst = create_partial_symtab (per_cu, name.c_str ());
094b34ac 7856 pst->anonymous = 1;
094b34ac 7857 }
f4dc4d17 7858
094b34ac 7859 tu_group->hash.dwo_unit = cu->dwo_unit;
9c541725 7860 tu_group->hash.line_sect_off = line_offset_struct;
f4dc4d17
DE
7861
7862 return tu_group;
7863}
7864
094b34ac
DE
7865/* Look up the type_unit_group for type unit CU, and create it if necessary.
7866 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
7867
7868static struct type_unit_group *
ff39bb5e 7869get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17 7870{
518817b3
SM
7871 struct dwarf2_per_objfile *dwarf2_per_objfile
7872 = cu->per_cu->dwarf2_per_objfile;
f4dc4d17
DE
7873 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7874 struct type_unit_group *tu_group;
7875 void **slot;
7876 unsigned int line_offset;
7877 struct type_unit_group type_unit_group_for_lookup;
7878
7879 if (dwarf2_per_objfile->type_unit_groups == NULL)
7880 {
7881 dwarf2_per_objfile->type_unit_groups =
ed2dc618 7882 allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
f4dc4d17
DE
7883 }
7884
7885 /* Do we need to create a new group, or can we use an existing one? */
7886
7887 if (stmt_list)
7888 {
7889 line_offset = DW_UNSND (stmt_list);
7890 ++tu_stats->nr_symtab_sharers;
7891 }
7892 else
7893 {
7894 /* Ugh, no stmt_list. Rare, but we have to handle it.
7895 We can do various things here like create one group per TU or
7896 spread them over multiple groups to split up the expansion work.
7897 To avoid worst case scenarios (too many groups or too large groups)
7898 we, umm, group them in bunches. */
7899 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7900 | (tu_stats->nr_stmt_less_type_units
7901 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7902 ++tu_stats->nr_stmt_less_type_units;
7903 }
7904
094b34ac 7905 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
9c541725 7906 type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
f4dc4d17
DE
7907 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7908 &type_unit_group_for_lookup, INSERT);
7909 if (*slot != NULL)
7910 {
9a3c8263 7911 tu_group = (struct type_unit_group *) *slot;
f4dc4d17
DE
7912 gdb_assert (tu_group != NULL);
7913 }
7914 else
7915 {
9c541725 7916 sect_offset line_offset_struct = (sect_offset) line_offset;
094b34ac 7917 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
7918 *slot = tu_group;
7919 ++tu_stats->nr_symtabs;
7920 }
7921
7922 return tu_group;
7923}
0018ea6f
DE
7924\f
7925/* Partial symbol tables. */
7926
7927/* Create a psymtab named NAME and assign it to PER_CU.
7928
7929 The caller must fill in the following details:
7930 dirname, textlow, texthigh. */
7931
7932static struct partial_symtab *
7933create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7934{
e3b94546 7935 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
0018ea6f
DE
7936 struct partial_symtab *pst;
7937
18a94d75 7938 pst = start_psymtab_common (objfile, name, 0,
af5bf4ad
SM
7939 objfile->global_psymbols,
7940 objfile->static_psymbols);
0018ea6f
DE
7941
7942 pst->psymtabs_addrmap_supported = 1;
7943
7944 /* This is the glue that links PST into GDB's symbol API. */
7945 pst->read_symtab_private = per_cu;
7946 pst->read_symtab = dwarf2_read_symtab;
7947 per_cu->v.psymtab = pst;
7948
7949 return pst;
7950}
7951
b93601f3
TT
7952/* The DATA object passed to process_psymtab_comp_unit_reader has this
7953 type. */
7954
7955struct process_psymtab_comp_unit_data
7956{
7957 /* True if we are reading a DW_TAG_partial_unit. */
7958
7959 int want_partial_unit;
7960
7961 /* The "pretend" language that is used if the CU doesn't declare a
7962 language. */
7963
7964 enum language pretend_language;
7965};
7966
0018ea6f
DE
7967/* die_reader_func for process_psymtab_comp_unit. */
7968
7969static void
7970process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7971 const gdb_byte *info_ptr,
0018ea6f
DE
7972 struct die_info *comp_unit_die,
7973 int has_children,
7974 void *data)
7975{
7976 struct dwarf2_cu *cu = reader->cu;
518817b3 7977 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a 7978 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f 7979 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0018ea6f
DE
7980 CORE_ADDR baseaddr;
7981 CORE_ADDR best_lowpc = 0, best_highpc = 0;
7982 struct partial_symtab *pst;
3a2b436a 7983 enum pc_bounds_kind cu_bounds_kind;
0018ea6f 7984 const char *filename;
9a3c8263
SM
7985 struct process_psymtab_comp_unit_data *info
7986 = (struct process_psymtab_comp_unit_data *) data;
0018ea6f 7987
b93601f3 7988 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
7989 return;
7990
7991 gdb_assert (! per_cu->is_debug_types);
7992
b93601f3 7993 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f 7994
0018ea6f 7995 /* Allocate a new partial symbol table structure. */
7d45c7c3
KB
7996 filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7997 if (filename == NULL)
0018ea6f 7998 filename = "";
0018ea6f
DE
7999
8000 pst = create_partial_symtab (per_cu, filename);
8001
8002 /* This must be done before calling dwarf2_build_include_psymtabs. */
7d45c7c3 8003 pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
0018ea6f
DE
8004
8005 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8006
8007 dwarf2_find_base_address (comp_unit_die, cu);
8008
8009 /* Possibly set the default values of LOWPC and HIGHPC from
8010 `DW_AT_ranges'. */
3a2b436a
JK
8011 cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8012 &best_highpc, cu, pst);
8013 if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
79748972
TT
8014 {
8015 CORE_ADDR low
8016 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8017 - baseaddr);
8018 CORE_ADDR high
8019 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8020 - baseaddr - 1);
8021 /* Store the contiguous range if it is not empty; it can be
8022 empty for CUs with no code. */
8023 addrmap_set_empty (objfile->psymtabs_addrmap, low, high, pst);
8024 }
0018ea6f
DE
8025
8026 /* Check if comp unit has_children.
8027 If so, read the rest of the partial symbols from this comp unit.
8028 If not, there's no more debug_info for this comp unit. */
8029 if (has_children)
8030 {
8031 struct partial_die_info *first_die;
8032 CORE_ADDR lowpc, highpc;
8033
8034 lowpc = ((CORE_ADDR) -1);
8035 highpc = ((CORE_ADDR) 0);
8036
8037 first_die = load_partial_dies (reader, info_ptr, 1);
8038
8039 scan_partial_symbols (first_die, &lowpc, &highpc,
e385593e 8040 cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
0018ea6f
DE
8041
8042 /* If we didn't find a lowpc, set it to highpc to avoid
8043 complaints from `maint check'. */
8044 if (lowpc == ((CORE_ADDR) -1))
8045 lowpc = highpc;
8046
8047 /* If the compilation unit didn't have an explicit address range,
8048 then use the information extracted from its child dies. */
e385593e 8049 if (cu_bounds_kind <= PC_BOUNDS_INVALID)
0018ea6f
DE
8050 {
8051 best_lowpc = lowpc;
8052 best_highpc = highpc;
8053 }
8054 }
4ae976d1 8055 pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
79748972
TT
8056 best_lowpc + baseaddr)
8057 - baseaddr);
4ae976d1 8058 pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
79748972
TT
8059 best_highpc + baseaddr)
8060 - baseaddr);
0018ea6f 8061
8763cede 8062 end_psymtab_common (objfile, pst);
0018ea6f
DE
8063
8064 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8065 {
8066 int i;
8067 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8068 struct dwarf2_per_cu_data *iter;
8069
8070 /* Fill in 'dependencies' here; we fill in 'users' in a
8071 post-pass. */
8072 pst->number_of_dependencies = len;
8d749320
SM
8073 pst->dependencies =
8074 XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
0018ea6f
DE
8075 for (i = 0;
8076 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8077 i, iter);
8078 ++i)
8079 pst->dependencies[i] = iter->v.psymtab;
8080
8081 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8082 }
8083
8084 /* Get the list of files included in the current compilation unit,
8085 and build a psymtab for each of them. */
8086 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8087
b4f54984 8088 if (dwarf_read_debug)
b926417a
TT
8089 fprintf_unfiltered (gdb_stdlog,
8090 "Psymtab for %s unit @%s: %s - %s"
8091 ", %d global, %d static syms\n",
8092 per_cu->is_debug_types ? "type" : "comp",
8093 sect_offset_str (per_cu->sect_off),
8094 paddress (gdbarch, pst->text_low (objfile)),
8095 paddress (gdbarch, pst->text_high (objfile)),
8096 pst->n_global_syms, pst->n_static_syms);
0018ea6f
DE
8097}
8098
8099/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8100 Process compilation unit THIS_CU for a psymtab. */
8101
8102static void
8103process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
8104 int want_partial_unit,
8105 enum language pretend_language)
0018ea6f
DE
8106{
8107 /* If this compilation unit was already read in, free the
8108 cached copy in order to read it in again. This is
8109 necessary because we skipped some symbols when we first
8110 read in the compilation unit (see load_partial_dies).
8111 This problem could be avoided, but the benefit is unclear. */
8112 if (this_cu->cu != NULL)
8113 free_one_cached_comp_unit (this_cu);
8114
f1902523 8115 if (this_cu->is_debug_types)
58f0c718
TT
8116 init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8117 build_type_psymtabs_reader, NULL);
f1902523
JK
8118 else
8119 {
8120 process_psymtab_comp_unit_data info;
8121 info.want_partial_unit = want_partial_unit;
8122 info.pretend_language = pretend_language;
58f0c718 8123 init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
f1902523
JK
8124 process_psymtab_comp_unit_reader, &info);
8125 }
0018ea6f
DE
8126
8127 /* Age out any secondary CUs. */
ed2dc618 8128 age_cached_comp_units (this_cu->dwarf2_per_objfile);
0018ea6f 8129}
f4dc4d17
DE
8130
8131/* Reader function for build_type_psymtabs. */
8132
8133static void
8134build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 8135 const gdb_byte *info_ptr,
f4dc4d17
DE
8136 struct die_info *type_unit_die,
8137 int has_children,
8138 void *data)
8139{
ed2dc618 8140 struct dwarf2_per_objfile *dwarf2_per_objfile
518817b3 8141 = reader->cu->per_cu->dwarf2_per_objfile;
f4dc4d17
DE
8142 struct objfile *objfile = dwarf2_per_objfile->objfile;
8143 struct dwarf2_cu *cu = reader->cu;
8144 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 8145 struct signatured_type *sig_type;
f4dc4d17
DE
8146 struct type_unit_group *tu_group;
8147 struct attribute *attr;
8148 struct partial_die_info *first_die;
8149 CORE_ADDR lowpc, highpc;
8150 struct partial_symtab *pst;
8151
8152 gdb_assert (data == NULL);
0186c6a7
DE
8153 gdb_assert (per_cu->is_debug_types);
8154 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8155
8156 if (! has_children)
8157 return;
8158
8159 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 8160 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 8161
0186c6a7 8162 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
8163
8164 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
f4dc4d17
DE
8165 pst = create_partial_symtab (per_cu, "");
8166 pst->anonymous = 1;
8167
8168 first_die = load_partial_dies (reader, info_ptr, 1);
8169
8170 lowpc = (CORE_ADDR) -1;
8171 highpc = (CORE_ADDR) 0;
8172 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8173
8763cede 8174 end_psymtab_common (objfile, pst);
f4dc4d17
DE
8175}
8176
73051182
DE
8177/* Struct used to sort TUs by their abbreviation table offset. */
8178
8179struct tu_abbrev_offset
8180{
b2bdb8cf
SM
8181 tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8182 : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8183 {}
8184
8185 signatured_type *sig_type;
73051182
DE
8186 sect_offset abbrev_offset;
8187};
8188
484cf504 8189/* Helper routine for build_type_psymtabs_1, passed to std::sort. */
73051182 8190
484cf504
TT
8191static bool
8192sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8193 const struct tu_abbrev_offset &b)
73051182 8194{
484cf504 8195 return a.abbrev_offset < b.abbrev_offset;
73051182
DE
8196}
8197
8198/* Efficiently read all the type units.
8199 This does the bulk of the work for build_type_psymtabs.
8200
8201 The efficiency is because we sort TUs by the abbrev table they use and
8202 only read each abbrev table once. In one program there are 200K TUs
8203 sharing 8K abbrev tables.
8204
8205 The main purpose of this function is to support building the
8206 dwarf2_per_objfile->type_unit_groups table.
8207 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8208 can collapse the search space by grouping them by stmt_list.
8209 The savings can be significant, in the same program from above the 200K TUs
8210 share 8K stmt_list tables.
8211
8212 FUNC is expected to call get_type_unit_group, which will create the
8213 struct type_unit_group if necessary and add it to
8214 dwarf2_per_objfile->type_unit_groups. */
8215
8216static void
ed2dc618 8217build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
73051182 8218{
73051182 8219 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
685af9cd 8220 abbrev_table_up abbrev_table;
73051182 8221 sect_offset abbrev_offset;
73051182
DE
8222
8223 /* It's up to the caller to not call us multiple times. */
8224 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8225
b2bdb8cf 8226 if (dwarf2_per_objfile->all_type_units.empty ())
73051182
DE
8227 return;
8228
8229 /* TUs typically share abbrev tables, and there can be way more TUs than
8230 abbrev tables. Sort by abbrev table to reduce the number of times we
8231 read each abbrev table in.
8232 Alternatives are to punt or to maintain a cache of abbrev tables.
8233 This is simpler and efficient enough for now.
8234
8235 Later we group TUs by their DW_AT_stmt_list value (as this defines the
8236 symtab to use). Typically TUs with the same abbrev offset have the same
8237 stmt_list value too so in practice this should work well.
8238
8239 The basic algorithm here is:
8240
8241 sort TUs by abbrev table
8242 for each TU with same abbrev table:
8243 read abbrev table if first user
8244 read TU top level DIE
8245 [IWBN if DWO skeletons had DW_AT_stmt_list]
8246 call FUNC */
8247
b4f54984 8248 if (dwarf_read_debug)
73051182
DE
8249 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8250
8251 /* Sort in a separate table to maintain the order of all_type_units
8252 for .gdb_index: TU indices directly index all_type_units. */
b2bdb8cf
SM
8253 std::vector<tu_abbrev_offset> sorted_by_abbrev;
8254 sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8255
8256 for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8257 sorted_by_abbrev.emplace_back
8258 (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8259 sig_type->per_cu.section,
8260 sig_type->per_cu.sect_off));
73051182 8261
484cf504
TT
8262 std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8263 sort_tu_by_abbrev_offset);
73051182 8264
9c541725 8265 abbrev_offset = (sect_offset) ~(unsigned) 0;
73051182 8266
b2bdb8cf 8267 for (const tu_abbrev_offset &tu : sorted_by_abbrev)
73051182 8268 {
73051182
DE
8269 /* Switch to the next abbrev table if necessary. */
8270 if (abbrev_table == NULL
b2bdb8cf 8271 || tu.abbrev_offset != abbrev_offset)
73051182 8272 {
b2bdb8cf 8273 abbrev_offset = tu.abbrev_offset;
73051182 8274 abbrev_table =
ed2dc618
SM
8275 abbrev_table_read_table (dwarf2_per_objfile,
8276 &dwarf2_per_objfile->abbrev,
73051182
DE
8277 abbrev_offset);
8278 ++tu_stats->nr_uniq_abbrev_tables;
8279 }
8280
b2bdb8cf 8281 init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
58f0c718 8282 0, 0, false, build_type_psymtabs_reader, NULL);
73051182 8283 }
6aa5f3a6 8284}
73051182 8285
6aa5f3a6
DE
8286/* Print collected type unit statistics. */
8287
8288static void
ed2dc618 8289print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
6aa5f3a6
DE
8290{
8291 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8292
8293 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
b2bdb8cf
SM
8294 fprintf_unfiltered (gdb_stdlog, " %zu TUs\n",
8295 dwarf2_per_objfile->all_type_units.size ());
6aa5f3a6
DE
8296 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
8297 tu_stats->nr_uniq_abbrev_tables);
8298 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
8299 tu_stats->nr_symtabs);
8300 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
8301 tu_stats->nr_symtab_sharers);
8302 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
8303 tu_stats->nr_stmt_less_type_units);
8304 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
8305 tu_stats->nr_all_type_units_reallocs);
73051182
DE
8306}
8307
f4dc4d17
DE
8308/* Traversal function for build_type_psymtabs. */
8309
8310static int
8311build_type_psymtab_dependencies (void **slot, void *info)
8312{
ed2dc618
SM
8313 struct dwarf2_per_objfile *dwarf2_per_objfile
8314 = (struct dwarf2_per_objfile *) info;
f4dc4d17
DE
8315 struct objfile *objfile = dwarf2_per_objfile->objfile;
8316 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 8317 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 8318 struct partial_symtab *pst = per_cu->v.psymtab;
0186c6a7
DE
8319 int len = VEC_length (sig_type_ptr, tu_group->tus);
8320 struct signatured_type *iter;
f4dc4d17
DE
8321 int i;
8322
8323 gdb_assert (len > 0);
0186c6a7 8324 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
8325
8326 pst->number_of_dependencies = len;
8d749320
SM
8327 pst->dependencies =
8328 XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
f4dc4d17 8329 for (i = 0;
0186c6a7 8330 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
f4dc4d17
DE
8331 ++i)
8332 {
0186c6a7
DE
8333 gdb_assert (iter->per_cu.is_debug_types);
8334 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 8335 iter->type_unit_group = tu_group;
f4dc4d17
DE
8336 }
8337
0186c6a7 8338 VEC_free (sig_type_ptr, tu_group->tus);
348e048f
DE
8339
8340 return 1;
8341}
8342
8343/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8344 Build partial symbol tables for the .debug_types comp-units. */
8345
8346static void
ed2dc618 8347build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
348e048f 8348{
ed2dc618 8349 if (! create_all_type_units (dwarf2_per_objfile))
348e048f
DE
8350 return;
8351
ed2dc618 8352 build_type_psymtabs_1 (dwarf2_per_objfile);
6aa5f3a6 8353}
f4dc4d17 8354
6aa5f3a6
DE
8355/* Traversal function for process_skeletonless_type_unit.
8356 Read a TU in a DWO file and build partial symbols for it. */
8357
8358static int
8359process_skeletonless_type_unit (void **slot, void *info)
8360{
8361 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
ed2dc618
SM
8362 struct dwarf2_per_objfile *dwarf2_per_objfile
8363 = (struct dwarf2_per_objfile *) info;
6aa5f3a6
DE
8364 struct signatured_type find_entry, *entry;
8365
8366 /* If this TU doesn't exist in the global table, add it and read it in. */
8367
8368 if (dwarf2_per_objfile->signatured_types == NULL)
8369 {
8370 dwarf2_per_objfile->signatured_types
ed2dc618 8371 = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
6aa5f3a6
DE
8372 }
8373
8374 find_entry.signature = dwo_unit->signature;
8375 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8376 INSERT);
8377 /* If we've already seen this type there's nothing to do. What's happening
8378 is we're doing our own version of comdat-folding here. */
8379 if (*slot != NULL)
8380 return 1;
8381
8382 /* This does the job that create_all_type_units would have done for
8383 this TU. */
ed2dc618
SM
8384 entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8385 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
6aa5f3a6
DE
8386 *slot = entry;
8387
8388 /* This does the job that build_type_psymtabs_1 would have done. */
58f0c718 8389 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
6aa5f3a6
DE
8390 build_type_psymtabs_reader, NULL);
8391
8392 return 1;
8393}
8394
8395/* Traversal function for process_skeletonless_type_units. */
8396
8397static int
8398process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8399{
8400 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8401
8402 if (dwo_file->tus != NULL)
8403 {
8404 htab_traverse_noresize (dwo_file->tus,
8405 process_skeletonless_type_unit, info);
8406 }
8407
8408 return 1;
8409}
8410
8411/* Scan all TUs of DWO files, verifying we've processed them.
8412 This is needed in case a TU was emitted without its skeleton.
8413 Note: This can't be done until we know what all the DWO files are. */
8414
8415static void
ed2dc618 8416process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6aa5f3a6
DE
8417{
8418 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
ed2dc618 8419 if (get_dwp_file (dwarf2_per_objfile) == NULL
6aa5f3a6
DE
8420 && dwarf2_per_objfile->dwo_files != NULL)
8421 {
8422 htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8423 process_dwo_file_for_skeletonless_type_units,
ed2dc618 8424 dwarf2_per_objfile);
6aa5f3a6 8425 }
348e048f
DE
8426}
8427
ed2dc618 8428/* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE. */
95554aad
TT
8429
8430static void
ed2dc618 8431set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
95554aad 8432{
b76e467d 8433 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
95554aad 8434 {
95554aad 8435 struct partial_symtab *pst = per_cu->v.psymtab;
95554aad 8436
36586728
TT
8437 if (pst == NULL)
8438 continue;
8439
b76e467d 8440 for (int j = 0; j < pst->number_of_dependencies; ++j)
95554aad
TT
8441 {
8442 /* Set the 'user' field only if it is not already set. */
8443 if (pst->dependencies[j]->user == NULL)
8444 pst->dependencies[j]->user = pst;
8445 }
8446 }
8447}
8448
93311388
DE
8449/* Build the partial symbol table by doing a quick pass through the
8450 .debug_info and .debug_abbrev sections. */
72bf9492 8451
93311388 8452static void
ed2dc618 8453dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
93311388 8454{
ed2dc618 8455 struct objfile *objfile = dwarf2_per_objfile->objfile;
93311388 8456
b4f54984 8457 if (dwarf_read_debug)
45cfd468
DE
8458 {
8459 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 8460 objfile_name (objfile));
45cfd468
DE
8461 }
8462
98bfdba5
PA
8463 dwarf2_per_objfile->reading_partial_symbols = 1;
8464
be391dca 8465 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 8466
93311388
DE
8467 /* Any cached compilation units will be linked by the per-objfile
8468 read_in_chain. Make sure to free them when we're done. */
11ed8cad 8469 free_cached_comp_units freer (dwarf2_per_objfile);
72bf9492 8470
ed2dc618 8471 build_type_psymtabs (dwarf2_per_objfile);
348e048f 8472
ed2dc618 8473 create_all_comp_units (dwarf2_per_objfile);
c906108c 8474
60606b2c
TT
8475 /* Create a temporary address map on a temporary obstack. We later
8476 copy this to the final obstack. */
8268c778 8477 auto_obstack temp_obstack;
791afaa2
TT
8478
8479 scoped_restore save_psymtabs_addrmap
8480 = make_scoped_restore (&objfile->psymtabs_addrmap,
8481 addrmap_create_mutable (&temp_obstack));
72bf9492 8482
b76e467d
SM
8483 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8484 process_psymtab_comp_unit (per_cu, 0, language_minimal);
ff013f42 8485
6aa5f3a6 8486 /* This has to wait until we read the CUs, we need the list of DWOs. */
ed2dc618 8487 process_skeletonless_type_units (dwarf2_per_objfile);
6aa5f3a6
DE
8488
8489 /* Now that all TUs have been processed we can fill in the dependencies. */
8490 if (dwarf2_per_objfile->type_unit_groups != NULL)
8491 {
8492 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
ed2dc618 8493 build_type_psymtab_dependencies, dwarf2_per_objfile);
6aa5f3a6
DE
8494 }
8495
b4f54984 8496 if (dwarf_read_debug)
ed2dc618 8497 print_tu_stats (dwarf2_per_objfile);
6aa5f3a6 8498
ed2dc618 8499 set_partial_user (dwarf2_per_objfile);
95554aad 8500
ff013f42
JK
8501 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8502 &objfile->objfile_obstack);
791afaa2
TT
8503 /* At this point we want to keep the address map. */
8504 save_psymtabs_addrmap.release ();
ff013f42 8505
b4f54984 8506 if (dwarf_read_debug)
45cfd468 8507 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 8508 objfile_name (objfile));
ae038cb0
DJ
8509}
8510
3019eac3 8511/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
8512
8513static void
dee91e82 8514load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 8515 const gdb_byte *info_ptr,
dee91e82
DE
8516 struct die_info *comp_unit_die,
8517 int has_children,
8518 void *data)
ae038cb0 8519{
dee91e82 8520 struct dwarf2_cu *cu = reader->cu;
ae038cb0 8521
95554aad 8522 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 8523
ae038cb0
DJ
8524 /* Check if comp unit has_children.
8525 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 8526 If not, there's no more debug_info for this comp unit. */
d85a05f0 8527 if (has_children)
dee91e82
DE
8528 load_partial_dies (reader, info_ptr, 0);
8529}
98bfdba5 8530
dee91e82
DE
8531/* Load the partial DIEs for a secondary CU into memory.
8532 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 8533
dee91e82
DE
8534static void
8535load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8536{
58f0c718 8537 init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
f4dc4d17 8538 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
8539}
8540
ae038cb0 8541static void
ed2dc618 8542read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
36586728 8543 struct dwarf2_section_info *section,
f1902523 8544 struct dwarf2_section_info *abbrev_section,
b76e467d 8545 unsigned int is_dwz)
ae038cb0 8546{
d521ce57 8547 const gdb_byte *info_ptr;
ed2dc618 8548 struct objfile *objfile = dwarf2_per_objfile->objfile;
be391dca 8549
b4f54984 8550 if (dwarf_read_debug)
bf6af496 8551 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
8552 get_section_name (section),
8553 get_section_file_name (section));
bf6af496 8554
36586728 8555 dwarf2_read_section (objfile, section);
ae038cb0 8556
36586728 8557 info_ptr = section->buffer;
6e70227d 8558
36586728 8559 while (info_ptr < section->buffer + section->size)
ae038cb0 8560 {
ae038cb0 8561 struct dwarf2_per_cu_data *this_cu;
ae038cb0 8562
9c541725 8563 sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
ae038cb0 8564
f1902523 8565 comp_unit_head cu_header;
ed2dc618
SM
8566 read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8567 abbrev_section, info_ptr,
8568 rcuh_kind::COMPILE);
ae038cb0
DJ
8569
8570 /* Save the compilation unit for later lookup. */
f1902523
JK
8571 if (cu_header.unit_type != DW_UT_type)
8572 {
8573 this_cu = XOBNEW (&objfile->objfile_obstack,
8574 struct dwarf2_per_cu_data);
8575 memset (this_cu, 0, sizeof (*this_cu));
8576 }
8577 else
8578 {
8579 auto sig_type = XOBNEW (&objfile->objfile_obstack,
8580 struct signatured_type);
8581 memset (sig_type, 0, sizeof (*sig_type));
8582 sig_type->signature = cu_header.signature;
8583 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8584 this_cu = &sig_type->per_cu;
8585 }
8586 this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
9c541725 8587 this_cu->sect_off = sect_off;
f1902523 8588 this_cu->length = cu_header.length + cu_header.initial_length_size;
36586728 8589 this_cu->is_dwz = is_dwz;
e3b94546 8590 this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8a0459fd 8591 this_cu->section = section;
ae038cb0 8592
b76e467d 8593 dwarf2_per_objfile->all_comp_units.push_back (this_cu);
ae038cb0
DJ
8594
8595 info_ptr = info_ptr + this_cu->length;
8596 }
36586728
TT
8597}
8598
8599/* Create a list of all compilation units in OBJFILE.
8600 This is only done for -readnow and building partial symtabs. */
8601
8602static void
ed2dc618 8603create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
36586728 8604{
b76e467d 8605 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
ed2dc618 8606 read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
b76e467d 8607 &dwarf2_per_objfile->abbrev, 0);
36586728 8608
b76e467d 8609 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
4db1a1dc 8610 if (dwz != NULL)
ed2dc618 8611 read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
b76e467d 8612 1);
c906108c
SS
8613}
8614
5734ee8b 8615/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 8616 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 8617 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
8618 DW_AT_ranges). See the comments of add_partial_subprogram on how
8619 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 8620
72bf9492
DJ
8621static void
8622scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
8623 CORE_ADDR *highpc, int set_addrmap,
8624 struct dwarf2_cu *cu)
c906108c 8625{
72bf9492 8626 struct partial_die_info *pdi;
c906108c 8627
91c24f0a
DC
8628 /* Now, march along the PDI's, descending into ones which have
8629 interesting children but skipping the children of the other ones,
8630 until we reach the end of the compilation unit. */
c906108c 8631
72bf9492 8632 pdi = first_die;
91c24f0a 8633
72bf9492
DJ
8634 while (pdi != NULL)
8635 {
52356b79 8636 pdi->fixup (cu);
c906108c 8637
f55ee35c 8638 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
8639 children, so we need to look at them. Ditto for anonymous
8640 enums. */
933c6fe4 8641
72bf9492 8642 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad 8643 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
b1dc1806
XR
8644 || pdi->tag == DW_TAG_imported_unit
8645 || pdi->tag == DW_TAG_inlined_subroutine)
c906108c 8646 {
72bf9492 8647 switch (pdi->tag)
c906108c
SS
8648 {
8649 case DW_TAG_subprogram:
b1dc1806 8650 case DW_TAG_inlined_subroutine:
cdc07690 8651 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 8652 break;
72929c62 8653 case DW_TAG_constant:
c906108c
SS
8654 case DW_TAG_variable:
8655 case DW_TAG_typedef:
91c24f0a 8656 case DW_TAG_union_type:
72bf9492 8657 if (!pdi->is_declaration)
63d06c5c 8658 {
72bf9492 8659 add_partial_symbol (pdi, cu);
63d06c5c
DC
8660 }
8661 break;
c906108c 8662 case DW_TAG_class_type:
680b30c7 8663 case DW_TAG_interface_type:
c906108c 8664 case DW_TAG_structure_type:
72bf9492 8665 if (!pdi->is_declaration)
c906108c 8666 {
72bf9492 8667 add_partial_symbol (pdi, cu);
c906108c 8668 }
b7fee5a3
KS
8669 if ((cu->language == language_rust
8670 || cu->language == language_cplus) && pdi->has_children)
e98c9e7c
TT
8671 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8672 set_addrmap, cu);
c906108c 8673 break;
91c24f0a 8674 case DW_TAG_enumeration_type:
72bf9492
DJ
8675 if (!pdi->is_declaration)
8676 add_partial_enumeration (pdi, cu);
c906108c
SS
8677 break;
8678 case DW_TAG_base_type:
a02abb62 8679 case DW_TAG_subrange_type:
c906108c 8680 /* File scope base type definitions are added to the partial
c5aa993b 8681 symbol table. */
72bf9492 8682 add_partial_symbol (pdi, cu);
c906108c 8683 break;
d9fa45fe 8684 case DW_TAG_namespace:
cdc07690 8685 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 8686 break;
5d7cb8df 8687 case DW_TAG_module:
cdc07690 8688 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 8689 break;
95554aad
TT
8690 case DW_TAG_imported_unit:
8691 {
8692 struct dwarf2_per_cu_data *per_cu;
8693
f4dc4d17
DE
8694 /* For now we don't handle imported units in type units. */
8695 if (cu->per_cu->is_debug_types)
8696 {
8697 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8698 " supported in type units [in module %s]"),
518817b3 8699 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
f4dc4d17
DE
8700 }
8701
e3b94546
SM
8702 per_cu = dwarf2_find_containing_comp_unit
8703 (pdi->d.sect_off, pdi->is_dwz,
518817b3 8704 cu->per_cu->dwarf2_per_objfile);
95554aad
TT
8705
8706 /* Go read the partial unit, if needed. */
8707 if (per_cu->v.psymtab == NULL)
b93601f3 8708 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 8709
f4dc4d17 8710 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 8711 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
8712 }
8713 break;
74921315
KS
8714 case DW_TAG_imported_declaration:
8715 add_partial_symbol (pdi, cu);
8716 break;
c906108c
SS
8717 default:
8718 break;
8719 }
8720 }
8721
72bf9492
DJ
8722 /* If the die has a sibling, skip to the sibling. */
8723
8724 pdi = pdi->die_sibling;
8725 }
8726}
8727
8728/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 8729
72bf9492 8730 Normally, this is simple. For C++, the parent DIE's fully scoped
9c37b5ae 8731 name is concatenated with "::" and the partial DIE's name.
72bf9492
DJ
8732 Enumerators are an exception; they use the scope of their parent
8733 enumeration type, i.e. the name of the enumeration type is not
8734 prepended to the enumerator.
91c24f0a 8735
72bf9492
DJ
8736 There are two complexities. One is DW_AT_specification; in this
8737 case "parent" means the parent of the target of the specification,
8738 instead of the direct parent of the DIE. The other is compilers
8739 which do not emit DW_TAG_namespace; in this case we try to guess
8740 the fully qualified name of structure types from their members'
8741 linkage names. This must be done using the DIE's children rather
8742 than the children of any DW_AT_specification target. We only need
8743 to do this for structures at the top level, i.e. if the target of
8744 any DW_AT_specification (if any; otherwise the DIE itself) does not
8745 have a parent. */
8746
8747/* Compute the scope prefix associated with PDI's parent, in
8748 compilation unit CU. The result will be allocated on CU's
8749 comp_unit_obstack, or a copy of the already allocated PDI->NAME
8750 field. NULL is returned if no prefix is necessary. */
15d034d0 8751static const char *
72bf9492
DJ
8752partial_die_parent_scope (struct partial_die_info *pdi,
8753 struct dwarf2_cu *cu)
8754{
15d034d0 8755 const char *grandparent_scope;
72bf9492 8756 struct partial_die_info *parent, *real_pdi;
91c24f0a 8757
72bf9492
DJ
8758 /* We need to look at our parent DIE; if we have a DW_AT_specification,
8759 then this means the parent of the specification DIE. */
8760
8761 real_pdi = pdi;
72bf9492 8762 while (real_pdi->has_specification)
36586728
TT
8763 real_pdi = find_partial_die (real_pdi->spec_offset,
8764 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
8765
8766 parent = real_pdi->die_parent;
8767 if (parent == NULL)
8768 return NULL;
8769
8770 if (parent->scope_set)
8771 return parent->scope;
8772
52356b79 8773 parent->fixup (cu);
72bf9492 8774
10b3939b 8775 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 8776
acebe513
UW
8777 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8778 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8779 Work around this problem here. */
8780 if (cu->language == language_cplus
6e70227d 8781 && parent->tag == DW_TAG_namespace
acebe513
UW
8782 && strcmp (parent->name, "::") == 0
8783 && grandparent_scope == NULL)
8784 {
8785 parent->scope = NULL;
8786 parent->scope_set = 1;
8787 return NULL;
8788 }
8789
9c6c53f7
SA
8790 if (pdi->tag == DW_TAG_enumerator)
8791 /* Enumerators should not get the name of the enumeration as a prefix. */
8792 parent->scope = grandparent_scope;
8793 else if (parent->tag == DW_TAG_namespace
f55ee35c 8794 || parent->tag == DW_TAG_module
72bf9492
DJ
8795 || parent->tag == DW_TAG_structure_type
8796 || parent->tag == DW_TAG_class_type
680b30c7 8797 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
8798 || parent->tag == DW_TAG_union_type
8799 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
8800 {
8801 if (grandparent_scope == NULL)
8802 parent->scope = parent->name;
8803 else
3e43a32a
MS
8804 parent->scope = typename_concat (&cu->comp_unit_obstack,
8805 grandparent_scope,
f55ee35c 8806 parent->name, 0, cu);
72bf9492 8807 }
72bf9492
DJ
8808 else
8809 {
8810 /* FIXME drow/2004-04-01: What should we be doing with
8811 function-local names? For partial symbols, we should probably be
8812 ignoring them. */
b98664d3 8813 complaint (_("unhandled containing DIE tag %d for DIE at %s"),
9d8780f0 8814 parent->tag, sect_offset_str (pdi->sect_off));
72bf9492 8815 parent->scope = grandparent_scope;
c906108c
SS
8816 }
8817
72bf9492
DJ
8818 parent->scope_set = 1;
8819 return parent->scope;
8820}
8821
8822/* Return the fully scoped name associated with PDI, from compilation unit
8823 CU. The result will be allocated with malloc. */
4568ecf9 8824
72bf9492
DJ
8825static char *
8826partial_die_full_name (struct partial_die_info *pdi,
8827 struct dwarf2_cu *cu)
8828{
15d034d0 8829 const char *parent_scope;
72bf9492 8830
98bfdba5
PA
8831 /* If this is a template instantiation, we can not work out the
8832 template arguments from partial DIEs. So, unfortunately, we have
8833 to go through the full DIEs. At least any work we do building
8834 types here will be reused if full symbols are loaded later. */
8835 if (pdi->has_template_arguments)
8836 {
52356b79 8837 pdi->fixup (cu);
98bfdba5
PA
8838
8839 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8840 {
8841 struct die_info *die;
8842 struct attribute attr;
8843 struct dwarf2_cu *ref_cu = cu;
8844
b64f50a1 8845 /* DW_FORM_ref_addr is using section offset. */
b4069958 8846 attr.name = (enum dwarf_attribute) 0;
98bfdba5 8847 attr.form = DW_FORM_ref_addr;
9c541725 8848 attr.u.unsnd = to_underlying (pdi->sect_off);
98bfdba5
PA
8849 die = follow_die_ref (NULL, &attr, &ref_cu);
8850
8851 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8852 }
8853 }
8854
72bf9492
DJ
8855 parent_scope = partial_die_parent_scope (pdi, cu);
8856 if (parent_scope == NULL)
8857 return NULL;
8858 else
f55ee35c 8859 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
8860}
8861
8862static void
72bf9492 8863add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 8864{
518817b3
SM
8865 struct dwarf2_per_objfile *dwarf2_per_objfile
8866 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 8867 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 8868 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 8869 CORE_ADDR addr = 0;
15d034d0 8870 const char *actual_name = NULL;
e142c38c 8871 CORE_ADDR baseaddr;
15d034d0 8872 char *built_actual_name;
e142c38c
DJ
8873
8874 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 8875
15d034d0
TT
8876 built_actual_name = partial_die_full_name (pdi, cu);
8877 if (built_actual_name != NULL)
8878 actual_name = built_actual_name;
63d06c5c 8879
72bf9492
DJ
8880 if (actual_name == NULL)
8881 actual_name = pdi->name;
8882
c906108c
SS
8883 switch (pdi->tag)
8884 {
b1dc1806 8885 case DW_TAG_inlined_subroutine:
c906108c 8886 case DW_TAG_subprogram:
79748972
TT
8887 addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8888 - baseaddr);
2cfa0c8d 8889 if (pdi->is_external || cu->language == language_ada)
c906108c 8890 {
2cfa0c8d
JB
8891 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8892 of the global scope. But in Ada, we want to be able to access
8893 nested procedures globally. So all Ada subprograms are stored
8894 in the global scope. */
f47fb265 8895 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8896 built_actual_name != NULL,
f47fb265 8897 VAR_DOMAIN, LOC_BLOCK,
79748972 8898 SECT_OFF_TEXT (objfile),
f47fb265 8899 &objfile->global_psymbols,
79748972
TT
8900 addr,
8901 cu->language, objfile);
c906108c
SS
8902 }
8903 else
8904 {
f47fb265 8905 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8906 built_actual_name != NULL,
f47fb265 8907 VAR_DOMAIN, LOC_BLOCK,
79748972 8908 SECT_OFF_TEXT (objfile),
f47fb265 8909 &objfile->static_psymbols,
1762568f 8910 addr, cu->language, objfile);
c906108c 8911 }
0c1b455e
TT
8912
8913 if (pdi->main_subprogram && actual_name != NULL)
8914 set_objfile_main_name (objfile, actual_name, cu->language);
c906108c 8915 break;
72929c62
JB
8916 case DW_TAG_constant:
8917 {
af5bf4ad 8918 std::vector<partial_symbol *> *list;
72929c62
JB
8919
8920 if (pdi->is_external)
8921 list = &objfile->global_psymbols;
8922 else
8923 list = &objfile->static_psymbols;
f47fb265 8924 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8925 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
79748972 8926 -1, list, 0, cu->language, objfile);
72929c62
JB
8927 }
8928 break;
c906108c 8929 case DW_TAG_variable:
95554aad
TT
8930 if (pdi->d.locdesc)
8931 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 8932
95554aad 8933 if (pdi->d.locdesc
caac4577
JG
8934 && addr == 0
8935 && !dwarf2_per_objfile->has_section_at_zero)
8936 {
8937 /* A global or static variable may also have been stripped
8938 out by the linker if unused, in which case its address
8939 will be nullified; do not add such variables into partial
8940 symbol table then. */
8941 }
8942 else if (pdi->is_external)
c906108c
SS
8943 {
8944 /* Global Variable.
8945 Don't enter into the minimal symbol tables as there is
8946 a minimal symbol table entry from the ELF symbols already.
8947 Enter into partial symbol table if it has a location
8948 descriptor or a type.
8949 If the location descriptor is missing, new_symbol will create
8950 a LOC_UNRESOLVED symbol, the address of the variable will then
8951 be determined from the minimal symbol table whenever the variable
8952 is referenced.
8953 The address for the partial symbol table entry is not
8954 used by GDB, but it comes in handy for debugging partial symbol
8955 table building. */
8956
95554aad 8957 if (pdi->d.locdesc || pdi->has_type)
f47fb265 8958 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8959 built_actual_name != NULL,
f47fb265 8960 VAR_DOMAIN, LOC_STATIC,
79748972 8961 SECT_OFF_TEXT (objfile),
f47fb265 8962 &objfile->global_psymbols,
79748972 8963 addr, cu->language, objfile);
c906108c
SS
8964 }
8965 else
8966 {
ff908ebf
AW
8967 int has_loc = pdi->d.locdesc != NULL;
8968
8969 /* Static Variable. Skip symbols whose value we cannot know (those
8970 without location descriptors or constant values). */
8971 if (!has_loc && !pdi->has_const_value)
decbce07 8972 {
15d034d0 8973 xfree (built_actual_name);
decbce07
MS
8974 return;
8975 }
ff908ebf 8976
f47fb265 8977 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8978 built_actual_name != NULL,
f47fb265 8979 VAR_DOMAIN, LOC_STATIC,
79748972 8980 SECT_OFF_TEXT (objfile),
f47fb265 8981 &objfile->static_psymbols,
79748972 8982 has_loc ? addr : 0,
f47fb265 8983 cu->language, objfile);
c906108c
SS
8984 }
8985 break;
8986 case DW_TAG_typedef:
8987 case DW_TAG_base_type:
a02abb62 8988 case DW_TAG_subrange_type:
38d518c9 8989 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8990 built_actual_name != NULL,
79748972 8991 VAR_DOMAIN, LOC_TYPEDEF, -1,
c906108c 8992 &objfile->static_psymbols,
1762568f 8993 0, cu->language, objfile);
c906108c 8994 break;
74921315 8995 case DW_TAG_imported_declaration:
72bf9492
DJ
8996 case DW_TAG_namespace:
8997 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8998 built_actual_name != NULL,
79748972 8999 VAR_DOMAIN, LOC_TYPEDEF, -1,
72bf9492 9000 &objfile->global_psymbols,
1762568f 9001 0, cu->language, objfile);
72bf9492 9002 break;
530e8392
KB
9003 case DW_TAG_module:
9004 add_psymbol_to_list (actual_name, strlen (actual_name),
9005 built_actual_name != NULL,
79748972 9006 MODULE_DOMAIN, LOC_TYPEDEF, -1,
530e8392 9007 &objfile->global_psymbols,
1762568f 9008 0, cu->language, objfile);
530e8392 9009 break;
c906108c 9010 case DW_TAG_class_type:
680b30c7 9011 case DW_TAG_interface_type:
c906108c
SS
9012 case DW_TAG_structure_type:
9013 case DW_TAG_union_type:
9014 case DW_TAG_enumeration_type:
fa4028e9
JB
9015 /* Skip external references. The DWARF standard says in the section
9016 about "Structure, Union, and Class Type Entries": "An incomplete
9017 structure, union or class type is represented by a structure,
9018 union or class entry that does not have a byte size attribute
9019 and that has a DW_AT_declaration attribute." */
9020 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 9021 {
15d034d0 9022 xfree (built_actual_name);
decbce07
MS
9023 return;
9024 }
fa4028e9 9025
63d06c5c
DC
9026 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9027 static vs. global. */
38d518c9 9028 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 9029 built_actual_name != NULL,
79748972 9030 STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9c37b5ae 9031 cu->language == language_cplus
63d06c5c
DC
9032 ? &objfile->global_psymbols
9033 : &objfile->static_psymbols,
1762568f 9034 0, cu->language, objfile);
c906108c 9035
c906108c
SS
9036 break;
9037 case DW_TAG_enumerator:
38d518c9 9038 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 9039 built_actual_name != NULL,
79748972 9040 VAR_DOMAIN, LOC_CONST, -1,
9c37b5ae 9041 cu->language == language_cplus
f6fe98ef
DJ
9042 ? &objfile->global_psymbols
9043 : &objfile->static_psymbols,
1762568f 9044 0, cu->language, objfile);
c906108c
SS
9045 break;
9046 default:
9047 break;
9048 }
5c4e30ca 9049
15d034d0 9050 xfree (built_actual_name);
c906108c
SS
9051}
9052
5c4e30ca
DC
9053/* Read a partial die corresponding to a namespace; also, add a symbol
9054 corresponding to that namespace to the symbol table. NAMESPACE is
9055 the name of the enclosing namespace. */
91c24f0a 9056
72bf9492
DJ
9057static void
9058add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 9059 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 9060 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 9061{
72bf9492 9062 /* Add a symbol for the namespace. */
e7c27a73 9063
72bf9492 9064 add_partial_symbol (pdi, cu);
5c4e30ca
DC
9065
9066 /* Now scan partial symbols in that namespace. */
9067
91c24f0a 9068 if (pdi->has_children)
cdc07690 9069 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
9070}
9071
5d7cb8df
JK
9072/* Read a partial die corresponding to a Fortran module. */
9073
9074static void
9075add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 9076 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 9077{
530e8392
KB
9078 /* Add a symbol for the namespace. */
9079
9080 add_partial_symbol (pdi, cu);
9081
f55ee35c 9082 /* Now scan partial symbols in that module. */
5d7cb8df
JK
9083
9084 if (pdi->has_children)
cdc07690 9085 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
9086}
9087
b1dc1806
XR
9088/* Read a partial die corresponding to a subprogram or an inlined
9089 subprogram and create a partial symbol for that subprogram.
9090 When the CU language allows it, this routine also defines a partial
9091 symbol for each nested subprogram that this subprogram contains.
9092 If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9093 Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
6e70227d 9094
cdc07690
YQ
9095 PDI may also be a lexical block, in which case we simply search
9096 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
9097 Again, this is only performed when the CU language allows this
9098 type of definitions. */
9099
9100static void
9101add_partial_subprogram (struct partial_die_info *pdi,
9102 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 9103 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58 9104{
b1dc1806 9105 if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
bc30ff58
JB
9106 {
9107 if (pdi->has_pc_info)
9108 {
9109 if (pdi->lowpc < *lowpc)
9110 *lowpc = pdi->lowpc;
9111 if (pdi->highpc > *highpc)
9112 *highpc = pdi->highpc;
cdc07690 9113 if (set_addrmap)
5734ee8b 9114 {
518817b3 9115 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a
MR
9116 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9117 CORE_ADDR baseaddr;
b926417a
TT
9118 CORE_ADDR this_highpc;
9119 CORE_ADDR this_lowpc;
5734ee8b
DJ
9120
9121 baseaddr = ANOFFSET (objfile->section_offsets,
9122 SECT_OFF_TEXT (objfile));
b926417a
TT
9123 this_lowpc
9124 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9125 pdi->lowpc + baseaddr)
9126 - baseaddr);
9127 this_highpc
9128 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9129 pdi->highpc + baseaddr)
9130 - baseaddr);
9131 addrmap_set_empty (objfile->psymtabs_addrmap,
9132 this_lowpc, this_highpc - 1,
9291a0cd 9133 cu->per_cu->v.psymtab);
5734ee8b 9134 }
481860b3
GB
9135 }
9136
9137 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9138 {
bc30ff58 9139 if (!pdi->is_declaration)
e8d05480
JB
9140 /* Ignore subprogram DIEs that do not have a name, they are
9141 illegal. Do not emit a complaint at this point, we will
9142 do so when we convert this psymtab into a symtab. */
9143 if (pdi->name)
9144 add_partial_symbol (pdi, cu);
bc30ff58
JB
9145 }
9146 }
6e70227d 9147
bc30ff58
JB
9148 if (! pdi->has_children)
9149 return;
9150
9151 if (cu->language == language_ada)
9152 {
9153 pdi = pdi->die_child;
9154 while (pdi != NULL)
9155 {
52356b79 9156 pdi->fixup (cu);
bc30ff58 9157 if (pdi->tag == DW_TAG_subprogram
b1dc1806 9158 || pdi->tag == DW_TAG_inlined_subroutine
bc30ff58 9159 || pdi->tag == DW_TAG_lexical_block)
cdc07690 9160 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
9161 pdi = pdi->die_sibling;
9162 }
9163 }
9164}
9165
91c24f0a
DC
9166/* Read a partial die corresponding to an enumeration type. */
9167
72bf9492
DJ
9168static void
9169add_partial_enumeration (struct partial_die_info *enum_pdi,
9170 struct dwarf2_cu *cu)
91c24f0a 9171{
72bf9492 9172 struct partial_die_info *pdi;
91c24f0a
DC
9173
9174 if (enum_pdi->name != NULL)
72bf9492
DJ
9175 add_partial_symbol (enum_pdi, cu);
9176
9177 pdi = enum_pdi->die_child;
9178 while (pdi)
91c24f0a 9179 {
72bf9492 9180 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
b98664d3 9181 complaint (_("malformed enumerator DIE ignored"));
91c24f0a 9182 else
72bf9492
DJ
9183 add_partial_symbol (pdi, cu);
9184 pdi = pdi->die_sibling;
91c24f0a 9185 }
91c24f0a
DC
9186}
9187
6caca83c
CC
9188/* Return the initial uleb128 in the die at INFO_PTR. */
9189
9190static unsigned int
d521ce57 9191peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
9192{
9193 unsigned int bytes_read;
9194
9195 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9196}
9197
685af9cd
TT
9198/* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9199 READER::CU. Use READER::ABBREV_TABLE to lookup any abbreviation.
9200
4bb7a0a7
DJ
9201 Return the corresponding abbrev, or NULL if the number is zero (indicating
9202 an empty DIE). In either case *BYTES_READ will be set to the length of
9203 the initial number. */
9204
9205static struct abbrev_info *
685af9cd
TT
9206peek_die_abbrev (const die_reader_specs &reader,
9207 const gdb_byte *info_ptr, unsigned int *bytes_read)
4bb7a0a7 9208{
685af9cd 9209 dwarf2_cu *cu = reader.cu;
518817b3 9210 bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
685af9cd
TT
9211 unsigned int abbrev_number
9212 = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
4bb7a0a7
DJ
9213
9214 if (abbrev_number == 0)
9215 return NULL;
9216
685af9cd 9217 abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
4bb7a0a7
DJ
9218 if (!abbrev)
9219 {
422b9917 9220 error (_("Dwarf Error: Could not find abbrev number %d in %s"
9d8780f0 9221 " at offset %s [in module %s]"),
422b9917 9222 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9d8780f0 9223 sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
4bb7a0a7
DJ
9224 }
9225
9226 return abbrev;
9227}
9228
93311388
DE
9229/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9230 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
9231 DIE. Any children of the skipped DIEs will also be skipped. */
9232
d521ce57
TT
9233static const gdb_byte *
9234skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 9235{
4bb7a0a7
DJ
9236 while (1)
9237 {
685af9cd
TT
9238 unsigned int bytes_read;
9239 abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9240
4bb7a0a7
DJ
9241 if (abbrev == NULL)
9242 return info_ptr + bytes_read;
9243 else
dee91e82 9244 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
9245 }
9246}
9247
93311388
DE
9248/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9249 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
9250 abbrev corresponding to that skipped uleb128 should be passed in
9251 ABBREV. Returns a pointer to this DIE's sibling, skipping any
9252 children. */
9253
d521ce57
TT
9254static const gdb_byte *
9255skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 9256 struct abbrev_info *abbrev)
4bb7a0a7
DJ
9257{
9258 unsigned int bytes_read;
9259 struct attribute attr;
dee91e82
DE
9260 bfd *abfd = reader->abfd;
9261 struct dwarf2_cu *cu = reader->cu;
d521ce57 9262 const gdb_byte *buffer = reader->buffer;
f664829e 9263 const gdb_byte *buffer_end = reader->buffer_end;
4bb7a0a7
DJ
9264 unsigned int form, i;
9265
9266 for (i = 0; i < abbrev->num_attrs; i++)
9267 {
9268 /* The only abbrev we care about is DW_AT_sibling. */
9269 if (abbrev->attrs[i].name == DW_AT_sibling)
9270 {
dee91e82 9271 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 9272 if (attr.form == DW_FORM_ref_addr)
b98664d3 9273 complaint (_("ignoring absolute DW_AT_sibling"));
4bb7a0a7 9274 else
b9502d3f 9275 {
9c541725
PA
9276 sect_offset off = dwarf2_get_ref_die_offset (&attr);
9277 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
b9502d3f
WN
9278
9279 if (sibling_ptr < info_ptr)
b98664d3 9280 complaint (_("DW_AT_sibling points backwards"));
22869d73
KS
9281 else if (sibling_ptr > reader->buffer_end)
9282 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
9283 else
9284 return sibling_ptr;
9285 }
4bb7a0a7
DJ
9286 }
9287
9288 /* If it isn't DW_AT_sibling, skip this attribute. */
9289 form = abbrev->attrs[i].form;
9290 skip_attribute:
9291 switch (form)
9292 {
4bb7a0a7 9293 case DW_FORM_ref_addr:
ae411497
TT
9294 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9295 and later it is offset sized. */
9296 if (cu->header.version == 2)
9297 info_ptr += cu->header.addr_size;
9298 else
9299 info_ptr += cu->header.offset_size;
9300 break;
36586728
TT
9301 case DW_FORM_GNU_ref_alt:
9302 info_ptr += cu->header.offset_size;
9303 break;
ae411497 9304 case DW_FORM_addr:
4bb7a0a7
DJ
9305 info_ptr += cu->header.addr_size;
9306 break;
9307 case DW_FORM_data1:
9308 case DW_FORM_ref1:
9309 case DW_FORM_flag:
9310 info_ptr += 1;
9311 break;
2dc7f7b3 9312 case DW_FORM_flag_present:
43988095 9313 case DW_FORM_implicit_const:
2dc7f7b3 9314 break;
4bb7a0a7
DJ
9315 case DW_FORM_data2:
9316 case DW_FORM_ref2:
9317 info_ptr += 2;
9318 break;
9319 case DW_FORM_data4:
9320 case DW_FORM_ref4:
9321 info_ptr += 4;
9322 break;
9323 case DW_FORM_data8:
9324 case DW_FORM_ref8:
55f1336d 9325 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
9326 info_ptr += 8;
9327 break;
0224619f
JK
9328 case DW_FORM_data16:
9329 info_ptr += 16;
9330 break;
4bb7a0a7 9331 case DW_FORM_string:
9b1c24c8 9332 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
9333 info_ptr += bytes_read;
9334 break;
2dc7f7b3 9335 case DW_FORM_sec_offset:
4bb7a0a7 9336 case DW_FORM_strp:
36586728 9337 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
9338 info_ptr += cu->header.offset_size;
9339 break;
2dc7f7b3 9340 case DW_FORM_exprloc:
4bb7a0a7
DJ
9341 case DW_FORM_block:
9342 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9343 info_ptr += bytes_read;
9344 break;
9345 case DW_FORM_block1:
9346 info_ptr += 1 + read_1_byte (abfd, info_ptr);
9347 break;
9348 case DW_FORM_block2:
9349 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9350 break;
9351 case DW_FORM_block4:
9352 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9353 break;
9354 case DW_FORM_sdata:
9355 case DW_FORM_udata:
9356 case DW_FORM_ref_udata:
3019eac3
DE
9357 case DW_FORM_GNU_addr_index:
9358 case DW_FORM_GNU_str_index:
d521ce57 9359 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
9360 break;
9361 case DW_FORM_indirect:
9362 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9363 info_ptr += bytes_read;
9364 /* We need to continue parsing from here, so just go back to
9365 the top. */
9366 goto skip_attribute;
9367
9368 default:
3e43a32a
MS
9369 error (_("Dwarf Error: Cannot handle %s "
9370 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
9371 dwarf_form_name (form),
9372 bfd_get_filename (abfd));
9373 }
9374 }
9375
9376 if (abbrev->has_children)
dee91e82 9377 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
9378 else
9379 return info_ptr;
9380}
9381
93311388 9382/* Locate ORIG_PDI's sibling.
dee91e82 9383 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 9384
d521ce57 9385static const gdb_byte *
dee91e82
DE
9386locate_pdi_sibling (const struct die_reader_specs *reader,
9387 struct partial_die_info *orig_pdi,
d521ce57 9388 const gdb_byte *info_ptr)
91c24f0a
DC
9389{
9390 /* Do we know the sibling already? */
72bf9492 9391
91c24f0a
DC
9392 if (orig_pdi->sibling)
9393 return orig_pdi->sibling;
9394
9395 /* Are there any children to deal with? */
9396
9397 if (!orig_pdi->has_children)
9398 return info_ptr;
9399
4bb7a0a7 9400 /* Skip the children the long way. */
91c24f0a 9401
dee91e82 9402 return skip_children (reader, info_ptr);
91c24f0a
DC
9403}
9404
257e7a09 9405/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 9406 not NULL. */
c906108c
SS
9407
9408static void
257e7a09
YQ
9409dwarf2_read_symtab (struct partial_symtab *self,
9410 struct objfile *objfile)
c906108c 9411{
ed2dc618
SM
9412 struct dwarf2_per_objfile *dwarf2_per_objfile
9413 = get_dwarf2_per_objfile (objfile);
9414
257e7a09 9415 if (self->readin)
c906108c 9416 {
442e4d9c 9417 warning (_("bug: psymtab for %s is already read in."),
257e7a09 9418 self->filename);
442e4d9c
YQ
9419 }
9420 else
9421 {
9422 if (info_verbose)
c906108c 9423 {
442e4d9c 9424 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 9425 self->filename);
442e4d9c 9426 gdb_flush (gdb_stdout);
c906108c 9427 }
c906108c 9428
442e4d9c
YQ
9429 /* If this psymtab is constructed from a debug-only objfile, the
9430 has_section_at_zero flag will not necessarily be correct. We
9431 can get the correct value for this flag by looking at the data
9432 associated with the (presumably stripped) associated objfile. */
9433 if (objfile->separate_debug_objfile_backlink)
9434 {
9435 struct dwarf2_per_objfile *dpo_backlink
ed2dc618 9436 = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9a619af0 9437
442e4d9c
YQ
9438 dwarf2_per_objfile->has_section_at_zero
9439 = dpo_backlink->has_section_at_zero;
9440 }
b2ab525c 9441
442e4d9c 9442 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 9443
257e7a09 9444 psymtab_to_symtab_1 (self);
c906108c 9445
442e4d9c
YQ
9446 /* Finish up the debug error message. */
9447 if (info_verbose)
9448 printf_filtered (_("done.\n"));
c906108c 9449 }
95554aad 9450
ed2dc618 9451 process_cu_includes (dwarf2_per_objfile);
c906108c 9452}
9cdd5dbd
DE
9453\f
9454/* Reading in full CUs. */
c906108c 9455
10b3939b
DJ
9456/* Add PER_CU to the queue. */
9457
9458static void
95554aad
TT
9459queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9460 enum language pretend_language)
10b3939b
DJ
9461{
9462 struct dwarf2_queue_item *item;
9463
9464 per_cu->queued = 1;
8d749320 9465 item = XNEW (struct dwarf2_queue_item);
10b3939b 9466 item->per_cu = per_cu;
95554aad 9467 item->pretend_language = pretend_language;
10b3939b
DJ
9468 item->next = NULL;
9469
9470 if (dwarf2_queue == NULL)
9471 dwarf2_queue = item;
9472 else
9473 dwarf2_queue_tail->next = item;
9474
9475 dwarf2_queue_tail = item;
9476}
9477
89e63ee4
DE
9478/* If PER_CU is not yet queued, add it to the queue.
9479 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9480 dependency.
0907af0c 9481 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
9482 meaning either PER_CU is already queued or it is already loaded.
9483
9484 N.B. There is an invariant here that if a CU is queued then it is loaded.
9485 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
9486
9487static int
89e63ee4 9488maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
9489 struct dwarf2_per_cu_data *per_cu,
9490 enum language pretend_language)
9491{
9492 /* We may arrive here during partial symbol reading, if we need full
9493 DIEs to process an unusual case (e.g. template arguments). Do
9494 not queue PER_CU, just tell our caller to load its DIEs. */
ed2dc618 9495 if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
0907af0c
DE
9496 {
9497 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9498 return 1;
9499 return 0;
9500 }
9501
9502 /* Mark the dependence relation so that we don't flush PER_CU
9503 too early. */
89e63ee4
DE
9504 if (dependent_cu != NULL)
9505 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
9506
9507 /* If it's already on the queue, we have nothing to do. */
9508 if (per_cu->queued)
9509 return 0;
9510
9511 /* If the compilation unit is already loaded, just mark it as
9512 used. */
9513 if (per_cu->cu != NULL)
9514 {
9515 per_cu->cu->last_used = 0;
9516 return 0;
9517 }
9518
9519 /* Add it to the queue. */
9520 queue_comp_unit (per_cu, pretend_language);
9521
9522 return 1;
9523}
9524
10b3939b
DJ
9525/* Process the queue. */
9526
9527static void
ed2dc618 9528process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
10b3939b
DJ
9529{
9530 struct dwarf2_queue_item *item, *next_item;
9531
b4f54984 9532 if (dwarf_read_debug)
45cfd468
DE
9533 {
9534 fprintf_unfiltered (gdb_stdlog,
9535 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 9536 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
9537 }
9538
03dd20cc
DJ
9539 /* The queue starts out with one item, but following a DIE reference
9540 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
9541 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9542 {
cc12ce38
DE
9543 if ((dwarf2_per_objfile->using_index
9544 ? !item->per_cu->v.quick->compunit_symtab
9545 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9546 /* Skip dummy CUs. */
9547 && item->per_cu->cu != NULL)
f4dc4d17
DE
9548 {
9549 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 9550 unsigned int debug_print_threshold;
247f5c4f 9551 char buf[100];
f4dc4d17 9552
247f5c4f 9553 if (per_cu->is_debug_types)
f4dc4d17 9554 {
247f5c4f
DE
9555 struct signatured_type *sig_type =
9556 (struct signatured_type *) per_cu;
9557
9d8780f0 9558 sprintf (buf, "TU %s at offset %s",
73be47f5 9559 hex_string (sig_type->signature),
9d8780f0 9560 sect_offset_str (per_cu->sect_off));
73be47f5
DE
9561 /* There can be 100s of TUs.
9562 Only print them in verbose mode. */
9563 debug_print_threshold = 2;
f4dc4d17 9564 }
247f5c4f 9565 else
73be47f5 9566 {
9d8780f0
SM
9567 sprintf (buf, "CU at offset %s",
9568 sect_offset_str (per_cu->sect_off));
73be47f5
DE
9569 debug_print_threshold = 1;
9570 }
247f5c4f 9571
b4f54984 9572 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 9573 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
9574
9575 if (per_cu->is_debug_types)
9576 process_full_type_unit (per_cu, item->pretend_language);
9577 else
9578 process_full_comp_unit (per_cu, item->pretend_language);
9579
b4f54984 9580 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 9581 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 9582 }
10b3939b
DJ
9583
9584 item->per_cu->queued = 0;
9585 next_item = item->next;
9586 xfree (item);
9587 }
9588
9589 dwarf2_queue_tail = NULL;
45cfd468 9590
b4f54984 9591 if (dwarf_read_debug)
45cfd468
DE
9592 {
9593 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 9594 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 9595 }
10b3939b
DJ
9596}
9597
10b3939b
DJ
9598/* Read in full symbols for PST, and anything it depends on. */
9599
c906108c 9600static void
fba45db2 9601psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 9602{
10b3939b 9603 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
9604 int i;
9605
95554aad
TT
9606 if (pst->readin)
9607 return;
9608
aaa75496 9609 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
9610 if (!pst->dependencies[i]->readin
9611 && pst->dependencies[i]->user == NULL)
aaa75496
JB
9612 {
9613 /* Inform about additional files that need to be read in. */
9614 if (info_verbose)
9615 {
a3f17187 9616 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
9617 fputs_filtered (" ", gdb_stdout);
9618 wrap_here ("");
9619 fputs_filtered ("and ", gdb_stdout);
9620 wrap_here ("");
9621 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 9622 wrap_here (""); /* Flush output. */
aaa75496
JB
9623 gdb_flush (gdb_stdout);
9624 }
9625 psymtab_to_symtab_1 (pst->dependencies[i]);
9626 }
9627
9a3c8263 9628 per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
10b3939b
DJ
9629
9630 if (per_cu == NULL)
aaa75496
JB
9631 {
9632 /* It's an include file, no symbols to read for it.
9633 Everything is in the parent symtab. */
9634 pst->readin = 1;
9635 return;
9636 }
c906108c 9637
58f0c718 9638 dw2_do_instantiate_symtab (per_cu, false);
10b3939b
DJ
9639}
9640
dee91e82
DE
9641/* Trivial hash function for die_info: the hash value of a DIE
9642 is its offset in .debug_info for this objfile. */
10b3939b 9643
dee91e82
DE
9644static hashval_t
9645die_hash (const void *item)
10b3939b 9646{
9a3c8263 9647 const struct die_info *die = (const struct die_info *) item;
6502dd73 9648
9c541725 9649 return to_underlying (die->sect_off);
dee91e82 9650}
63d06c5c 9651
dee91e82
DE
9652/* Trivial comparison function for die_info structures: two DIEs
9653 are equal if they have the same offset. */
98bfdba5 9654
dee91e82
DE
9655static int
9656die_eq (const void *item_lhs, const void *item_rhs)
9657{
9a3c8263
SM
9658 const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9659 const struct die_info *die_rhs = (const struct die_info *) item_rhs;
c906108c 9660
9c541725 9661 return die_lhs->sect_off == die_rhs->sect_off;
dee91e82 9662}
c906108c 9663
dee91e82
DE
9664/* die_reader_func for load_full_comp_unit.
9665 This is identical to read_signatured_type_reader,
9666 but is kept separate for now. */
c906108c 9667
dee91e82
DE
9668static void
9669load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 9670 const gdb_byte *info_ptr,
dee91e82
DE
9671 struct die_info *comp_unit_die,
9672 int has_children,
9673 void *data)
9674{
9675 struct dwarf2_cu *cu = reader->cu;
9a3c8263 9676 enum language *language_ptr = (enum language *) data;
6caca83c 9677
dee91e82
DE
9678 gdb_assert (cu->die_hash == NULL);
9679 cu->die_hash =
9680 htab_create_alloc_ex (cu->header.length / 12,
9681 die_hash,
9682 die_eq,
9683 NULL,
9684 &cu->comp_unit_obstack,
9685 hashtab_obstack_allocate,
9686 dummy_obstack_deallocate);
e142c38c 9687
dee91e82
DE
9688 if (has_children)
9689 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9690 &info_ptr, comp_unit_die);
9691 cu->dies = comp_unit_die;
9692 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
9693
9694 /* We try not to read any attributes in this function, because not
9cdd5dbd 9695 all CUs needed for references have been loaded yet, and symbol
10b3939b 9696 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
9697 or we won't be able to build types correctly.
9698 Similarly, if we do not read the producer, we can not apply
9699 producer-specific interpretation. */
95554aad 9700 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 9701}
10b3939b 9702
dee91e82 9703/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 9704
dee91e82 9705static void
95554aad 9706load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
58f0c718 9707 bool skip_partial,
95554aad 9708 enum language pretend_language)
dee91e82 9709{
3019eac3 9710 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 9711
58f0c718 9712 init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
f4dc4d17 9713 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
9714}
9715
3da10d80
KS
9716/* Add a DIE to the delayed physname list. */
9717
9718static void
9719add_to_method_list (struct type *type, int fnfield_index, int index,
9720 const char *name, struct die_info *die,
9721 struct dwarf2_cu *cu)
9722{
9723 struct delayed_method_info mi;
9724 mi.type = type;
9725 mi.fnfield_index = fnfield_index;
9726 mi.index = index;
9727 mi.name = name;
9728 mi.die = die;
c89b44cd 9729 cu->method_list.push_back (mi);
3da10d80
KS
9730}
9731
3693fdb3
PA
9732/* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9733 "const" / "volatile". If so, decrements LEN by the length of the
9734 modifier and return true. Otherwise return false. */
9735
9736template<size_t N>
9737static bool
9738check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9739{
9740 size_t mod_len = sizeof (mod) - 1;
9741 if (len > mod_len && startswith (physname + (len - mod_len), mod))
9742 {
9743 len -= mod_len;
9744 return true;
9745 }
9746 return false;
9747}
9748
3da10d80
KS
9749/* Compute the physnames of any methods on the CU's method list.
9750
9751 The computation of method physnames is delayed in order to avoid the
9752 (bad) condition that one of the method's formal parameters is of an as yet
9753 incomplete type. */
9754
9755static void
9756compute_delayed_physnames (struct dwarf2_cu *cu)
9757{
3693fdb3 9758 /* Only C++ delays computing physnames. */
c89b44cd 9759 if (cu->method_list.empty ())
3693fdb3
PA
9760 return;
9761 gdb_assert (cu->language == language_cplus);
9762
52941706 9763 for (const delayed_method_info &mi : cu->method_list)
3da10d80 9764 {
1d06ead6 9765 const char *physname;
3da10d80 9766 struct fn_fieldlist *fn_flp
c89b44cd
TT
9767 = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9768 physname = dwarf2_physname (mi.name, mi.die, cu);
9769 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
005e54bb 9770 = physname ? physname : "";
3693fdb3
PA
9771
9772 /* Since there's no tag to indicate whether a method is a
9773 const/volatile overload, extract that information out of the
9774 demangled name. */
9775 if (physname != NULL)
9776 {
9777 size_t len = strlen (physname);
9778
9779 while (1)
9780 {
9781 if (physname[len] == ')') /* shortcut */
9782 break;
9783 else if (check_modifier (physname, len, " const"))
c89b44cd 9784 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
3693fdb3 9785 else if (check_modifier (physname, len, " volatile"))
c89b44cd 9786 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
3693fdb3
PA
9787 else
9788 break;
9789 }
9790 }
3da10d80 9791 }
c89b44cd
TT
9792
9793 /* The list is no longer needed. */
9794 cu->method_list.clear ();
3da10d80
KS
9795}
9796
380618d6
KS
9797/* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
9798 the same as all other symbols in LISTHEAD. If a new symbol is added
9799 with a different language, this function asserts. */
9800
9801static inline void
9802dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
9803{
9804 /* Only assert if LISTHEAD already contains symbols of a different
9805 language (dict_create_hashed/insert_symbol_hashed requires that all
9806 symbols in this list are of the same language). */
9807 gdb_assert ((*listhead) == NULL
9808 || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
9809 == SYMBOL_LANGUAGE (symbol)));
9810
9811 add_symbol_to_list (symbol, listhead);
9812}
9813
a766d390
DE
9814/* Go objects should be embedded in a DW_TAG_module DIE,
9815 and it's not clear if/how imported objects will appear.
9816 To keep Go support simple until that's worked out,
9817 go back through what we've read and create something usable.
9818 We could do this while processing each DIE, and feels kinda cleaner,
9819 but that way is more invasive.
9820 This is to, for example, allow the user to type "p var" or "b main"
9821 without having to specify the package name, and allow lookups
9822 of module.object to work in contexts that use the expression
9823 parser. */
9824
9825static void
9826fixup_go_packaging (struct dwarf2_cu *cu)
9827{
9828 char *package_name = NULL;
9829 struct pending *list;
9830 int i;
9831
804d2729
TT
9832 for (list = *cu->builder->get_global_symbols ();
9833 list != NULL;
9834 list = list->next)
a766d390
DE
9835 {
9836 for (i = 0; i < list->nsyms; ++i)
9837 {
9838 struct symbol *sym = list->symbol[i];
9839
9840 if (SYMBOL_LANGUAGE (sym) == language_go
9841 && SYMBOL_CLASS (sym) == LOC_BLOCK)
9842 {
9843 char *this_package_name = go_symbol_package_name (sym);
9844
9845 if (this_package_name == NULL)
9846 continue;
9847 if (package_name == NULL)
9848 package_name = this_package_name;
9849 else
9850 {
518817b3
SM
9851 struct objfile *objfile
9852 = cu->per_cu->dwarf2_per_objfile->objfile;
a766d390 9853 if (strcmp (package_name, this_package_name) != 0)
b98664d3 9854 complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
9855 (symbol_symtab (sym) != NULL
9856 ? symtab_to_filename_for_display
9857 (symbol_symtab (sym))
e3b94546 9858 : objfile_name (objfile)),
a766d390
DE
9859 this_package_name, package_name);
9860 xfree (this_package_name);
9861 }
9862 }
9863 }
9864 }
9865
9866 if (package_name != NULL)
9867 {
518817b3 9868 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
34a68019 9869 const char *saved_package_name
224c3ddb
SM
9870 = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9871 package_name,
9872 strlen (package_name));
19f392bc
UW
9873 struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9874 saved_package_name);
a766d390
DE
9875 struct symbol *sym;
9876
e623cf5d 9877 sym = allocate_symbol (objfile);
f85f34ed 9878 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
9879 SYMBOL_SET_NAMES (sym, saved_package_name,
9880 strlen (saved_package_name), 0, objfile);
a766d390
DE
9881 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9882 e.g., "main" finds the "main" module and not C's main(). */
9883 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 9884 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
9885 SYMBOL_TYPE (sym) = type;
9886
380618d6 9887 dw2_add_symbol_to_list (sym, cu->builder->get_global_symbols ());
a766d390
DE
9888
9889 xfree (package_name);
9890 }
9891}
9892
c9317f21
TT
9893/* Allocate a fully-qualified name consisting of the two parts on the
9894 obstack. */
9895
9896static const char *
9897rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9898{
9899 return obconcat (obstack, p1, "::", p2, (char *) NULL);
9900}
9901
9902/* A helper that allocates a struct discriminant_info to attach to a
9903 union type. */
9904
9905static struct discriminant_info *
9906alloc_discriminant_info (struct type *type, int discriminant_index,
9907 int default_index)
9908{
9909 gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
c7b15a66
TT
9910 gdb_assert (discriminant_index == -1
9911 || (discriminant_index >= 0
9912 && discriminant_index < TYPE_NFIELDS (type)));
c9317f21 9913 gdb_assert (default_index == -1
c7b15a66 9914 || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
c9317f21
TT
9915
9916 TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9917
9918 struct discriminant_info *disc
9919 = ((struct discriminant_info *)
9920 TYPE_ZALLOC (type,
9921 offsetof (struct discriminant_info, discriminants)
9922 + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9923 disc->default_index = default_index;
9924 disc->discriminant_index = discriminant_index;
9925
9926 struct dynamic_prop prop;
9927 prop.kind = PROP_UNDEFINED;
9928 prop.data.baton = disc;
9929
9930 add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9931
9932 return disc;
9933}
9934
9935/* Some versions of rustc emitted enums in an unusual way.
9936
9937 Ordinary enums were emitted as unions. The first element of each
9938 structure in the union was named "RUST$ENUM$DISR". This element
9939 held the discriminant.
9940
9941 These versions of Rust also implemented the "non-zero"
9942 optimization. When the enum had two values, and one is empty and
9943 the other holds a pointer that cannot be zero, the pointer is used
9944 as the discriminant, with a zero value meaning the empty variant.
9945 Here, the union's first member is of the form
9946 RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9947 where the fieldnos are the indices of the fields that should be
9948 traversed in order to find the field (which may be several fields deep)
9949 and the variantname is the name of the variant of the case when the
9950 field is zero.
9951
9952 This function recognizes whether TYPE is of one of these forms,
9953 and, if so, smashes it to be a variant type. */
9954
9955static void
9956quirk_rust_enum (struct type *type, struct objfile *objfile)
9957{
9958 gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9959
9960 /* We don't need to deal with empty enums. */
9961 if (TYPE_NFIELDS (type) == 0)
9962 return;
9963
9964#define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9965 if (TYPE_NFIELDS (type) == 1
9966 && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9967 {
9968 const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9969
9970 /* Decode the field name to find the offset of the
9971 discriminant. */
9972 ULONGEST bit_offset = 0;
9973 struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9974 while (name[0] >= '0' && name[0] <= '9')
9975 {
9976 char *tail;
9977 unsigned long index = strtoul (name, &tail, 10);
9978 name = tail;
9979 if (*name != '$'
9980 || index >= TYPE_NFIELDS (field_type)
9981 || (TYPE_FIELD_LOC_KIND (field_type, index)
9982 != FIELD_LOC_KIND_BITPOS))
9983 {
b98664d3 9984 complaint (_("Could not parse Rust enum encoding string \"%s\""
c9317f21
TT
9985 "[in module %s]"),
9986 TYPE_FIELD_NAME (type, 0),
9987 objfile_name (objfile));
9988 return;
9989 }
9990 ++name;
9991
9992 bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9993 field_type = TYPE_FIELD_TYPE (field_type, index);
9994 }
9995
9996 /* Make a union to hold the variants. */
9997 struct type *union_type = alloc_type (objfile);
9998 TYPE_CODE (union_type) = TYPE_CODE_UNION;
9999 TYPE_NFIELDS (union_type) = 3;
10000 TYPE_FIELDS (union_type)
10001 = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
10002 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
2b4424c3 10003 set_type_align (union_type, TYPE_RAW_ALIGN (type));
c9317f21
TT
10004
10005 /* Put the discriminant must at index 0. */
10006 TYPE_FIELD_TYPE (union_type, 0) = field_type;
10007 TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10008 TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10009 SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10010
10011 /* The order of fields doesn't really matter, so put the real
10012 field at index 1 and the data-less field at index 2. */
10013 struct discriminant_info *disc
10014 = alloc_discriminant_info (union_type, 0, 1);
10015 TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10016 TYPE_FIELD_NAME (union_type, 1)
10017 = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10018 TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10019 = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10020 TYPE_FIELD_NAME (union_type, 1));
10021
10022 const char *dataless_name
10023 = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10024 name);
10025 struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10026 dataless_name);
10027 TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10028 /* NAME points into the original discriminant name, which
10029 already has the correct lifetime. */
10030 TYPE_FIELD_NAME (union_type, 2) = name;
10031 SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10032 disc->discriminants[2] = 0;
10033
10034 /* Smash this type to be a structure type. We have to do this
10035 because the type has already been recorded. */
10036 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10037 TYPE_NFIELDS (type) = 1;
10038 TYPE_FIELDS (type)
10039 = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10040
10041 /* Install the variant part. */
10042 TYPE_FIELD_TYPE (type, 0) = union_type;
10043 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10044 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10045 }
10046 else if (TYPE_NFIELDS (type) == 1)
10047 {
10048 /* We assume that a union with a single field is a univariant
10049 enum. */
10050 /* Smash this type to be a structure type. We have to do this
10051 because the type has already been recorded. */
10052 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10053
10054 /* Make a union to hold the variants. */
10055 struct type *union_type = alloc_type (objfile);
10056 TYPE_CODE (union_type) = TYPE_CODE_UNION;
10057 TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10058 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
2b4424c3 10059 set_type_align (union_type, TYPE_RAW_ALIGN (type));
c9317f21
TT
10060 TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10061
10062 struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10063 const char *variant_name
10064 = rust_last_path_segment (TYPE_NAME (field_type));
10065 TYPE_FIELD_NAME (union_type, 0) = variant_name;
10066 TYPE_NAME (field_type)
10067 = rust_fully_qualify (&objfile->objfile_obstack,
c7b15a66 10068 TYPE_NAME (type), variant_name);
c9317f21
TT
10069
10070 /* Install the union in the outer struct type. */
10071 TYPE_NFIELDS (type) = 1;
10072 TYPE_FIELDS (type)
10073 = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10074 TYPE_FIELD_TYPE (type, 0) = union_type;
10075 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10076 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10077
10078 alloc_discriminant_info (union_type, -1, 0);
10079 }
10080 else
10081 {
10082 struct type *disr_type = nullptr;
10083 for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10084 {
10085 disr_type = TYPE_FIELD_TYPE (type, i);
10086
a037790e
TT
10087 if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10088 {
10089 /* All fields of a true enum will be structs. */
10090 return;
10091 }
10092 else if (TYPE_NFIELDS (disr_type) == 0)
c9317f21
TT
10093 {
10094 /* Could be data-less variant, so keep going. */
a037790e 10095 disr_type = nullptr;
c9317f21
TT
10096 }
10097 else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10098 "RUST$ENUM$DISR") != 0)
10099 {
10100 /* Not a Rust enum. */
10101 return;
10102 }
10103 else
10104 {
10105 /* Found one. */
10106 break;
10107 }
10108 }
10109
10110 /* If we got here without a discriminant, then it's probably
10111 just a union. */
10112 if (disr_type == nullptr)
10113 return;
10114
10115 /* Smash this type to be a structure type. We have to do this
10116 because the type has already been recorded. */
10117 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10118
10119 /* Make a union to hold the variants. */
10120 struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10121 struct type *union_type = alloc_type (objfile);
10122 TYPE_CODE (union_type) = TYPE_CODE_UNION;
10123 TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10124 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
2b4424c3 10125 set_type_align (union_type, TYPE_RAW_ALIGN (type));
c9317f21
TT
10126 TYPE_FIELDS (union_type)
10127 = (struct field *) TYPE_ZALLOC (union_type,
10128 (TYPE_NFIELDS (union_type)
10129 * sizeof (struct field)));
10130
10131 memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10132 TYPE_NFIELDS (type) * sizeof (struct field));
10133
10134 /* Install the discriminant at index 0 in the union. */
10135 TYPE_FIELD (union_type, 0) = *disr_field;
10136 TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10137 TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10138
10139 /* Install the union in the outer struct type. */
10140 TYPE_FIELD_TYPE (type, 0) = union_type;
10141 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10142 TYPE_NFIELDS (type) = 1;
10143
10144 /* Set the size and offset of the union type. */
10145 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10146
10147 /* We need a way to find the correct discriminant given a
10148 variant name. For convenience we build a map here. */
10149 struct type *enum_type = FIELD_TYPE (*disr_field);
10150 std::unordered_map<std::string, ULONGEST> discriminant_map;
10151 for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10152 {
10153 if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10154 {
10155 const char *name
10156 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10157 discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10158 }
10159 }
10160
10161 int n_fields = TYPE_NFIELDS (union_type);
10162 struct discriminant_info *disc
10163 = alloc_discriminant_info (union_type, 0, -1);
10164 /* Skip the discriminant here. */
10165 for (int i = 1; i < n_fields; ++i)
10166 {
10167 /* Find the final word in the name of this variant's type.
10168 That name can be used to look up the correct
10169 discriminant. */
10170 const char *variant_name
10171 = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10172 i)));
10173
10174 auto iter = discriminant_map.find (variant_name);
10175 if (iter != discriminant_map.end ())
10176 disc->discriminants[i] = iter->second;
10177
bedda9ac 10178 /* Remove the discriminant field, if it exists. */
c9317f21 10179 struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
bedda9ac
TT
10180 if (TYPE_NFIELDS (sub_type) > 0)
10181 {
10182 --TYPE_NFIELDS (sub_type);
10183 ++TYPE_FIELDS (sub_type);
10184 }
c9317f21
TT
10185 TYPE_FIELD_NAME (union_type, i) = variant_name;
10186 TYPE_NAME (sub_type)
10187 = rust_fully_qualify (&objfile->objfile_obstack,
10188 TYPE_NAME (type), variant_name);
10189 }
10190 }
10191}
10192
10193/* Rewrite some Rust unions to be structures with variants parts. */
10194
10195static void
10196rust_union_quirks (struct dwarf2_cu *cu)
10197{
10198 gdb_assert (cu->language == language_rust);
52941706
SM
10199 for (type *type_ : cu->rust_unions)
10200 quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
2d79090e
TT
10201 /* We don't need this any more. */
10202 cu->rust_unions.clear ();
c9317f21
TT
10203}
10204
95554aad
TT
10205/* Return the symtab for PER_CU. This works properly regardless of
10206 whether we're using the index or psymtabs. */
10207
43f3e411
DE
10208static struct compunit_symtab *
10209get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad 10210{
ed2dc618 10211 return (per_cu->dwarf2_per_objfile->using_index
43f3e411
DE
10212 ? per_cu->v.quick->compunit_symtab
10213 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
10214}
10215
10216/* A helper function for computing the list of all symbol tables
10217 included by PER_CU. */
10218
10219static void
4c39bc03 10220recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
ec94af83 10221 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 10222 struct dwarf2_per_cu_data *per_cu,
43f3e411 10223 struct compunit_symtab *immediate_parent)
95554aad
TT
10224{
10225 void **slot;
10226 int ix;
43f3e411 10227 struct compunit_symtab *cust;
95554aad
TT
10228 struct dwarf2_per_cu_data *iter;
10229
10230 slot = htab_find_slot (all_children, per_cu, INSERT);
10231 if (*slot != NULL)
10232 {
10233 /* This inclusion and its children have been processed. */
10234 return;
10235 }
10236
10237 *slot = per_cu;
10238 /* Only add a CU if it has a symbol table. */
43f3e411
DE
10239 cust = get_compunit_symtab (per_cu);
10240 if (cust != NULL)
ec94af83
DE
10241 {
10242 /* If this is a type unit only add its symbol table if we haven't
10243 seen it yet (type unit per_cu's can share symtabs). */
10244 if (per_cu->is_debug_types)
10245 {
43f3e411 10246 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
10247 if (*slot == NULL)
10248 {
43f3e411 10249 *slot = cust;
4c39bc03 10250 result->push_back (cust);
43f3e411
DE
10251 if (cust->user == NULL)
10252 cust->user = immediate_parent;
ec94af83
DE
10253 }
10254 }
10255 else
f9125b6c 10256 {
4c39bc03 10257 result->push_back (cust);
43f3e411
DE
10258 if (cust->user == NULL)
10259 cust->user = immediate_parent;
f9125b6c 10260 }
ec94af83 10261 }
95554aad
TT
10262
10263 for (ix = 0;
796a7ff8 10264 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 10265 ++ix)
ec94af83
DE
10266 {
10267 recursively_compute_inclusions (result, all_children,
43f3e411 10268 all_type_symtabs, iter, cust);
ec94af83 10269 }
95554aad
TT
10270}
10271
43f3e411 10272/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
10273 PER_CU. */
10274
10275static void
43f3e411 10276compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 10277{
f4dc4d17
DE
10278 gdb_assert (! per_cu->is_debug_types);
10279
796a7ff8 10280 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
10281 {
10282 int ix, len;
ec94af83 10283 struct dwarf2_per_cu_data *per_cu_iter;
4c39bc03 10284 std::vector<compunit_symtab *> result_symtabs;
ec94af83 10285 htab_t all_children, all_type_symtabs;
43f3e411 10286 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
10287
10288 /* If we don't have a symtab, we can just skip this case. */
43f3e411 10289 if (cust == NULL)
95554aad
TT
10290 return;
10291
10292 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10293 NULL, xcalloc, xfree);
ec94af83
DE
10294 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10295 NULL, xcalloc, xfree);
95554aad
TT
10296
10297 for (ix = 0;
796a7ff8 10298 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 10299 ix, per_cu_iter);
95554aad 10300 ++ix)
ec94af83
DE
10301 {
10302 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 10303 all_type_symtabs, per_cu_iter,
43f3e411 10304 cust);
ec94af83 10305 }
95554aad 10306
ec94af83 10307 /* Now we have a transitive closure of all the included symtabs. */
4c39bc03 10308 len = result_symtabs.size ();
43f3e411 10309 cust->includes
ed2dc618 10310 = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
8d749320 10311 struct compunit_symtab *, len + 1);
4c39bc03
TT
10312 memcpy (cust->includes, result_symtabs.data (),
10313 len * sizeof (compunit_symtab *));
43f3e411 10314 cust->includes[len] = NULL;
95554aad 10315
95554aad 10316 htab_delete (all_children);
ec94af83 10317 htab_delete (all_type_symtabs);
95554aad
TT
10318 }
10319}
10320
10321/* Compute the 'includes' field for the symtabs of all the CUs we just
10322 read. */
10323
10324static void
ed2dc618 10325process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
95554aad 10326{
71b73764 10327 for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
f4dc4d17
DE
10328 {
10329 if (! iter->is_debug_types)
43f3e411 10330 compute_compunit_symtab_includes (iter);
f4dc4d17 10331 }
95554aad 10332
c5d0225d 10333 dwarf2_per_objfile->just_read_cus.clear ();
95554aad
TT
10334}
10335
9cdd5dbd 10336/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
10337 already been loaded into memory. */
10338
10339static void
95554aad
TT
10340process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10341 enum language pretend_language)
10b3939b 10342{
10b3939b 10343 struct dwarf2_cu *cu = per_cu->cu;
ed2dc618
SM
10344 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10345 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 10346 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 10347 CORE_ADDR lowpc, highpc;
43f3e411 10348 struct compunit_symtab *cust;
10b3939b 10349 CORE_ADDR baseaddr;
4359dff1 10350 struct block *static_block;
3e29f34a 10351 CORE_ADDR addr;
10b3939b
DJ
10352
10353 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10354
c89b44cd
TT
10355 /* Clear the list here in case something was left over. */
10356 cu->method_list.clear ();
10b3939b 10357
95554aad
TT
10358 cu->language = pretend_language;
10359 cu->language_defn = language_def (cu->language);
10360
c906108c 10361 /* Do line number decoding in read_file_scope () */
10b3939b 10362 process_die (cu->dies, cu);
c906108c 10363
a766d390
DE
10364 /* For now fudge the Go package. */
10365 if (cu->language == language_go)
10366 fixup_go_packaging (cu);
10367
3da10d80
KS
10368 /* Now that we have processed all the DIEs in the CU, all the types
10369 should be complete, and it should now be safe to compute all of the
10370 physnames. */
10371 compute_delayed_physnames (cu);
3da10d80 10372
c9317f21
TT
10373 if (cu->language == language_rust)
10374 rust_union_quirks (cu);
10375
fae299cd
DC
10376 /* Some compilers don't define a DW_AT_high_pc attribute for the
10377 compilation unit. If the DW_AT_high_pc is missing, synthesize
10378 it, by scanning the DIE's below the compilation unit. */
10b3939b 10379 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 10380
3e29f34a 10381 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
804d2729 10382 static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
10383
10384 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10385 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10386 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
10387 addrmap to help ensure it has an accurate map of pc values belonging to
10388 this comp unit. */
10389 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10390
804d2729
TT
10391 cust = cu->builder->end_symtab_from_static_block (static_block,
10392 SECT_OFF_TEXT (objfile),
10393 0);
c906108c 10394
43f3e411 10395 if (cust != NULL)
c906108c 10396 {
df15bd07 10397 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 10398
8be455d7
JK
10399 /* Set symtab language to language from DW_AT_language. If the
10400 compilation is from a C file generated by language preprocessors, do
10401 not set the language if it was already deduced by start_subfile. */
43f3e411 10402 if (!(cu->language == language_c
40e3ad0e 10403 && COMPUNIT_FILETABS (cust)->language != language_unknown))
43f3e411 10404 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
10405
10406 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
10407 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
10408 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
10409 there were bugs in prologue debug info, fixed later in GCC-4.5
10410 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
10411
10412 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10413 needed, it would be wrong due to missing DW_AT_producer there.
10414
10415 Still one can confuse GDB by using non-standard GCC compilation
10416 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10417 */
ab260dad 10418 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 10419 cust->locations_valid = 1;
e0d00bc7
JK
10420
10421 if (gcc_4_minor >= 5)
43f3e411 10422 cust->epilogue_unwind_valid = 1;
96408a79 10423
43f3e411 10424 cust->call_site_htab = cu->call_site_htab;
c906108c 10425 }
9291a0cd
TT
10426
10427 if (dwarf2_per_objfile->using_index)
43f3e411 10428 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
10429 else
10430 {
10431 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 10432 pst->compunit_symtab = cust;
9291a0cd
TT
10433 pst->readin = 1;
10434 }
c906108c 10435
95554aad 10436 /* Push it for inclusion processing later. */
c5d0225d 10437 dwarf2_per_objfile->just_read_cus.push_back (per_cu);
804d2729
TT
10438
10439 /* Not needed any more. */
10440 cu->builder.reset ();
f4dc4d17 10441}
45cfd468 10442
f4dc4d17
DE
10443/* Generate full symbol information for type unit PER_CU, whose DIEs have
10444 already been loaded into memory. */
10445
10446static void
10447process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10448 enum language pretend_language)
10449{
10450 struct dwarf2_cu *cu = per_cu->cu;
ed2dc618
SM
10451 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10452 struct objfile *objfile = dwarf2_per_objfile->objfile;
43f3e411 10453 struct compunit_symtab *cust;
0186c6a7
DE
10454 struct signatured_type *sig_type;
10455
10456 gdb_assert (per_cu->is_debug_types);
10457 sig_type = (struct signatured_type *) per_cu;
f4dc4d17 10458
c89b44cd
TT
10459 /* Clear the list here in case something was left over. */
10460 cu->method_list.clear ();
f4dc4d17 10461
f4dc4d17
DE
10462 cu->language = pretend_language;
10463 cu->language_defn = language_def (cu->language);
10464
10465 /* The symbol tables are set up in read_type_unit_scope. */
10466 process_die (cu->dies, cu);
10467
10468 /* For now fudge the Go package. */
10469 if (cu->language == language_go)
10470 fixup_go_packaging (cu);
10471
10472 /* Now that we have processed all the DIEs in the CU, all the types
10473 should be complete, and it should now be safe to compute all of the
10474 physnames. */
10475 compute_delayed_physnames (cu);
f4dc4d17 10476
c9317f21
TT
10477 if (cu->language == language_rust)
10478 rust_union_quirks (cu);
10479
f4dc4d17
DE
10480 /* TUs share symbol tables.
10481 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
10482 of it with end_expandable_symtab. Otherwise, complete the addition of
10483 this TU's symbols to the existing symtab. */
43f3e411 10484 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 10485 {
804d2729 10486 cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
43f3e411 10487 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 10488
43f3e411 10489 if (cust != NULL)
f4dc4d17
DE
10490 {
10491 /* Set symtab language to language from DW_AT_language. If the
10492 compilation is from a C file generated by language preprocessors,
10493 do not set the language if it was already deduced by
10494 start_subfile. */
43f3e411
DE
10495 if (!(cu->language == language_c
10496 && COMPUNIT_FILETABS (cust)->language != language_c))
10497 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
10498 }
10499 }
10500 else
10501 {
804d2729 10502 cu->builder->augment_type_symtab ();
43f3e411 10503 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
10504 }
10505
10506 if (dwarf2_per_objfile->using_index)
43f3e411 10507 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
10508 else
10509 {
10510 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 10511 pst->compunit_symtab = cust;
f4dc4d17 10512 pst->readin = 1;
45cfd468 10513 }
804d2729
TT
10514
10515 /* Not needed any more. */
10516 cu->builder.reset ();
c906108c
SS
10517}
10518
95554aad
TT
10519/* Process an imported unit DIE. */
10520
10521static void
10522process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10523{
10524 struct attribute *attr;
10525
f4dc4d17
DE
10526 /* For now we don't handle imported units in type units. */
10527 if (cu->per_cu->is_debug_types)
10528 {
10529 error (_("Dwarf Error: DW_TAG_imported_unit is not"
10530 " supported in type units [in module %s]"),
518817b3 10531 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
f4dc4d17
DE
10532 }
10533
95554aad
TT
10534 attr = dwarf2_attr (die, DW_AT_import, cu);
10535 if (attr != NULL)
10536 {
9c541725
PA
10537 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10538 bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10539 dwarf2_per_cu_data *per_cu
e3b94546 10540 = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
518817b3 10541 cu->per_cu->dwarf2_per_objfile);
95554aad 10542
69d751e3 10543 /* If necessary, add it to the queue and load its DIEs. */
95554aad 10544 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
58f0c718 10545 load_full_comp_unit (per_cu, false, cu->language);
95554aad 10546
796a7ff8 10547 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
10548 per_cu);
10549 }
10550}
10551
4c8aa72d
PA
10552/* RAII object that represents a process_die scope: i.e.,
10553 starts/finishes processing a DIE. */
10554class process_die_scope
adde2bff 10555{
4c8aa72d
PA
10556public:
10557 process_die_scope (die_info *die, dwarf2_cu *cu)
10558 : m_die (die), m_cu (cu)
10559 {
10560 /* We should only be processing DIEs not already in process. */
10561 gdb_assert (!m_die->in_process);
10562 m_die->in_process = true;
10563 }
8c3cb9fa 10564
4c8aa72d
PA
10565 ~process_die_scope ()
10566 {
10567 m_die->in_process = false;
10568
10569 /* If we're done processing the DIE for the CU that owns the line
10570 header, we don't need the line header anymore. */
10571 if (m_cu->line_header_die_owner == m_die)
10572 {
10573 delete m_cu->line_header;
10574 m_cu->line_header = NULL;
10575 m_cu->line_header_die_owner = NULL;
10576 }
10577 }
10578
10579private:
10580 die_info *m_die;
10581 dwarf2_cu *m_cu;
10582};
adde2bff 10583
c906108c
SS
10584/* Process a die and its children. */
10585
10586static void
e7c27a73 10587process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 10588{
4c8aa72d 10589 process_die_scope scope (die, cu);
adde2bff 10590
c906108c
SS
10591 switch (die->tag)
10592 {
10593 case DW_TAG_padding:
10594 break;
10595 case DW_TAG_compile_unit:
95554aad 10596 case DW_TAG_partial_unit:
e7c27a73 10597 read_file_scope (die, cu);
c906108c 10598 break;
348e048f
DE
10599 case DW_TAG_type_unit:
10600 read_type_unit_scope (die, cu);
10601 break;
c906108c 10602 case DW_TAG_subprogram:
c906108c 10603 case DW_TAG_inlined_subroutine:
edb3359d 10604 read_func_scope (die, cu);
c906108c
SS
10605 break;
10606 case DW_TAG_lexical_block:
14898363
L
10607 case DW_TAG_try_block:
10608 case DW_TAG_catch_block:
e7c27a73 10609 read_lexical_block_scope (die, cu);
c906108c 10610 break;
216f72a1 10611 case DW_TAG_call_site:
96408a79
SA
10612 case DW_TAG_GNU_call_site:
10613 read_call_site_scope (die, cu);
10614 break;
c906108c 10615 case DW_TAG_class_type:
680b30c7 10616 case DW_TAG_interface_type:
c906108c
SS
10617 case DW_TAG_structure_type:
10618 case DW_TAG_union_type:
134d01f1 10619 process_structure_scope (die, cu);
c906108c
SS
10620 break;
10621 case DW_TAG_enumeration_type:
134d01f1 10622 process_enumeration_scope (die, cu);
c906108c 10623 break;
134d01f1 10624
f792889a
DJ
10625 /* These dies have a type, but processing them does not create
10626 a symbol or recurse to process the children. Therefore we can
10627 read them on-demand through read_type_die. */
c906108c 10628 case DW_TAG_subroutine_type:
72019c9c 10629 case DW_TAG_set_type:
c906108c 10630 case DW_TAG_array_type:
c906108c 10631 case DW_TAG_pointer_type:
c906108c 10632 case DW_TAG_ptr_to_member_type:
c906108c 10633 case DW_TAG_reference_type:
4297a3f0 10634 case DW_TAG_rvalue_reference_type:
c906108c 10635 case DW_TAG_string_type:
c906108c 10636 break;
134d01f1 10637
c906108c 10638 case DW_TAG_base_type:
a02abb62 10639 case DW_TAG_subrange_type:
cb249c71 10640 case DW_TAG_typedef:
134d01f1
DJ
10641 /* Add a typedef symbol for the type definition, if it has a
10642 DW_AT_name. */
f792889a 10643 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 10644 break;
c906108c 10645 case DW_TAG_common_block:
e7c27a73 10646 read_common_block (die, cu);
c906108c
SS
10647 break;
10648 case DW_TAG_common_inclusion:
10649 break;
d9fa45fe 10650 case DW_TAG_namespace:
9068261f 10651 cu->processing_has_namespace_info = true;
e7c27a73 10652 read_namespace (die, cu);
d9fa45fe 10653 break;
5d7cb8df 10654 case DW_TAG_module:
9068261f 10655 cu->processing_has_namespace_info = true;
5d7cb8df
JK
10656 read_module (die, cu);
10657 break;
d9fa45fe 10658 case DW_TAG_imported_declaration:
9068261f 10659 cu->processing_has_namespace_info = true;
74921315
KS
10660 if (read_namespace_alias (die, cu))
10661 break;
86a73007
TT
10662 /* The declaration is not a global namespace alias. */
10663 /* Fall through. */
d9fa45fe 10664 case DW_TAG_imported_module:
9068261f 10665 cu->processing_has_namespace_info = true;
27aa8d6a
SW
10666 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10667 || cu->language != language_fortran))
b98664d3 10668 complaint (_("Tag '%s' has unexpected children"),
27aa8d6a
SW
10669 dwarf_tag_name (die->tag));
10670 read_import_statement (die, cu);
d9fa45fe 10671 break;
95554aad
TT
10672
10673 case DW_TAG_imported_unit:
10674 process_imported_unit_die (die, cu);
10675 break;
10676
71a3c369
TT
10677 case DW_TAG_variable:
10678 read_variable (die, cu);
10679 break;
10680
c906108c 10681 default:
e7c27a73 10682 new_symbol (die, NULL, cu);
c906108c
SS
10683 break;
10684 }
10685}
ca69b9e6
DE
10686\f
10687/* DWARF name computation. */
c906108c 10688
94af9270
KS
10689/* A helper function for dwarf2_compute_name which determines whether DIE
10690 needs to have the name of the scope prepended to the name listed in the
10691 die. */
10692
10693static int
10694die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10695{
1c809c68
TT
10696 struct attribute *attr;
10697
94af9270
KS
10698 switch (die->tag)
10699 {
10700 case DW_TAG_namespace:
10701 case DW_TAG_typedef:
10702 case DW_TAG_class_type:
10703 case DW_TAG_interface_type:
10704 case DW_TAG_structure_type:
10705 case DW_TAG_union_type:
10706 case DW_TAG_enumeration_type:
10707 case DW_TAG_enumerator:
10708 case DW_TAG_subprogram:
08a76f8a 10709 case DW_TAG_inlined_subroutine:
94af9270 10710 case DW_TAG_member:
74921315 10711 case DW_TAG_imported_declaration:
94af9270
KS
10712 return 1;
10713
10714 case DW_TAG_variable:
c2b0a229 10715 case DW_TAG_constant:
94af9270
KS
10716 /* We only need to prefix "globally" visible variables. These include
10717 any variable marked with DW_AT_external or any variable that
10718 lives in a namespace. [Variables in anonymous namespaces
10719 require prefixing, but they are not DW_AT_external.] */
10720
10721 if (dwarf2_attr (die, DW_AT_specification, cu))
10722 {
10723 struct dwarf2_cu *spec_cu = cu;
9a619af0 10724
94af9270
KS
10725 return die_needs_namespace (die_specification (die, &spec_cu),
10726 spec_cu);
10727 }
10728
1c809c68 10729 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
10730 if (attr == NULL && die->parent->tag != DW_TAG_namespace
10731 && die->parent->tag != DW_TAG_module)
1c809c68
TT
10732 return 0;
10733 /* A variable in a lexical block of some kind does not need a
10734 namespace, even though in C++ such variables may be external
10735 and have a mangled name. */
10736 if (die->parent->tag == DW_TAG_lexical_block
10737 || die->parent->tag == DW_TAG_try_block
1054b214
TT
10738 || die->parent->tag == DW_TAG_catch_block
10739 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
10740 return 0;
10741 return 1;
94af9270
KS
10742
10743 default:
10744 return 0;
10745 }
10746}
10747
73b9be8b
KS
10748/* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10749 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
10750 defined for the given DIE. */
10751
10752static struct attribute *
10753dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10754{
10755 struct attribute *attr;
10756
10757 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10758 if (attr == NULL)
10759 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10760
10761 return attr;
10762}
10763
10764/* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10765 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
10766 defined for the given DIE. */
10767
10768static const char *
10769dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10770{
10771 const char *linkage_name;
10772
10773 linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10774 if (linkage_name == NULL)
10775 linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10776
10777 return linkage_name;
10778}
10779
94af9270 10780/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390 10781 compute the physname for the object, which include a method's:
9c37b5ae 10782 - formal parameters (C++),
a766d390 10783 - receiver type (Go),
a766d390
DE
10784
10785 The term "physname" is a bit confusing.
10786 For C++, for example, it is the demangled name.
10787 For Go, for example, it's the mangled name.
94af9270 10788
af6b7be1
JB
10789 For Ada, return the DIE's linkage name rather than the fully qualified
10790 name. PHYSNAME is ignored..
10791
94af9270
KS
10792 The result is allocated on the objfile_obstack and canonicalized. */
10793
10794static const char *
15d034d0
TT
10795dwarf2_compute_name (const char *name,
10796 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
10797 int physname)
10798{
518817b3 10799 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
bb5ed363 10800
94af9270
KS
10801 if (name == NULL)
10802 name = dwarf2_name (die, cu);
10803
2ee7123e
DE
10804 /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10805 but otherwise compute it by typename_concat inside GDB.
10806 FIXME: Actually this is not really true, or at least not always true.
10807 It's all very confusing. SYMBOL_SET_NAMES doesn't try to demangle
5e2db402 10808 Fortran names because there is no mangling standard. So new_symbol
2ee7123e
DE
10809 will set the demangled name to the result of dwarf2_full_name, and it is
10810 the demangled name that GDB uses if it exists. */
f55ee35c
JK
10811 if (cu->language == language_ada
10812 || (cu->language == language_fortran && physname))
10813 {
10814 /* For Ada unit, we prefer the linkage name over the name, as
10815 the former contains the exported name, which the user expects
10816 to be able to reference. Ideally, we want the user to be able
10817 to reference this entity using either natural or linkage name,
10818 but we haven't started looking at this enhancement yet. */
73b9be8b 10819 const char *linkage_name = dw2_linkage_name (die, cu);
f55ee35c 10820
2ee7123e
DE
10821 if (linkage_name != NULL)
10822 return linkage_name;
f55ee35c
JK
10823 }
10824
94af9270
KS
10825 /* These are the only languages we know how to qualify names in. */
10826 if (name != NULL
9c37b5ae 10827 && (cu->language == language_cplus
c44af4eb
TT
10828 || cu->language == language_fortran || cu->language == language_d
10829 || cu->language == language_rust))
94af9270
KS
10830 {
10831 if (die_needs_namespace (die, cu))
10832 {
0d5cff50 10833 const char *prefix;
34a68019 10834 const char *canonical_name = NULL;
94af9270 10835
d7e74731
PA
10836 string_file buf;
10837
94af9270 10838 prefix = determine_prefix (die, cu);
94af9270
KS
10839 if (*prefix != '\0')
10840 {
f55ee35c
JK
10841 char *prefixed_name = typename_concat (NULL, prefix, name,
10842 physname, cu);
9a619af0 10843
d7e74731 10844 buf.puts (prefixed_name);
94af9270
KS
10845 xfree (prefixed_name);
10846 }
10847 else
d7e74731 10848 buf.puts (name);
94af9270 10849
98bfdba5
PA
10850 /* Template parameters may be specified in the DIE's DW_AT_name, or
10851 as children with DW_TAG_template_type_param or
10852 DW_TAG_value_type_param. If the latter, add them to the name
10853 here. If the name already has template parameters, then
10854 skip this step; some versions of GCC emit both, and
10855 it is more efficient to use the pre-computed name.
10856
10857 Something to keep in mind about this process: it is very
10858 unlikely, or in some cases downright impossible, to produce
10859 something that will match the mangled name of a function.
10860 If the definition of the function has the same debug info,
10861 we should be able to match up with it anyway. But fallbacks
10862 using the minimal symbol, for instance to find a method
10863 implemented in a stripped copy of libstdc++, will not work.
10864 If we do not have debug info for the definition, we will have to
10865 match them up some other way.
10866
10867 When we do name matching there is a related problem with function
10868 templates; two instantiated function templates are allowed to
10869 differ only by their return types, which we do not add here. */
10870
10871 if (cu->language == language_cplus && strchr (name, '<') == NULL)
10872 {
10873 struct attribute *attr;
10874 struct die_info *child;
10875 int first = 1;
10876
10877 die->building_fullname = 1;
10878
10879 for (child = die->child; child != NULL; child = child->sibling)
10880 {
10881 struct type *type;
12df843f 10882 LONGEST value;
d521ce57 10883 const gdb_byte *bytes;
98bfdba5
PA
10884 struct dwarf2_locexpr_baton *baton;
10885 struct value *v;
10886
10887 if (child->tag != DW_TAG_template_type_param
10888 && child->tag != DW_TAG_template_value_param)
10889 continue;
10890
10891 if (first)
10892 {
d7e74731 10893 buf.puts ("<");
98bfdba5
PA
10894 first = 0;
10895 }
10896 else
d7e74731 10897 buf.puts (", ");
98bfdba5
PA
10898
10899 attr = dwarf2_attr (child, DW_AT_type, cu);
10900 if (attr == NULL)
10901 {
b98664d3 10902 complaint (_("template parameter missing DW_AT_type"));
d7e74731 10903 buf.puts ("UNKNOWN_TYPE");
98bfdba5
PA
10904 continue;
10905 }
10906 type = die_type (child, cu);
10907
10908 if (child->tag == DW_TAG_template_type_param)
10909 {
c1ec8cea
TT
10910 c_print_type (type, "", &buf, -1, 0, cu->language,
10911 &type_print_raw_options);
98bfdba5
PA
10912 continue;
10913 }
10914
10915 attr = dwarf2_attr (child, DW_AT_const_value, cu);
10916 if (attr == NULL)
10917 {
b98664d3 10918 complaint (_("template parameter missing "
3e43a32a 10919 "DW_AT_const_value"));
d7e74731 10920 buf.puts ("UNKNOWN_VALUE");
98bfdba5
PA
10921 continue;
10922 }
10923
10924 dwarf2_const_value_attr (attr, type, name,
10925 &cu->comp_unit_obstack, cu,
10926 &value, &bytes, &baton);
10927
10928 if (TYPE_NOSIGN (type))
10929 /* GDB prints characters as NUMBER 'CHAR'. If that's
10930 changed, this can use value_print instead. */
d7e74731 10931 c_printchar (value, type, &buf);
98bfdba5
PA
10932 else
10933 {
10934 struct value_print_options opts;
10935
10936 if (baton != NULL)
10937 v = dwarf2_evaluate_loc_desc (type, NULL,
10938 baton->data,
10939 baton->size,
10940 baton->per_cu);
10941 else if (bytes != NULL)
10942 {
10943 v = allocate_value (type);
10944 memcpy (value_contents_writeable (v), bytes,
10945 TYPE_LENGTH (type));
10946 }
10947 else
10948 v = value_from_longest (type, value);
10949
3e43a32a
MS
10950 /* Specify decimal so that we do not depend on
10951 the radix. */
98bfdba5
PA
10952 get_formatted_print_options (&opts, 'd');
10953 opts.raw = 1;
d7e74731 10954 value_print (v, &buf, &opts);
98bfdba5 10955 release_value (v);
98bfdba5
PA
10956 }
10957 }
10958
10959 die->building_fullname = 0;
10960
10961 if (!first)
10962 {
10963 /* Close the argument list, with a space if necessary
10964 (nested templates). */
d7e74731
PA
10965 if (!buf.empty () && buf.string ().back () == '>')
10966 buf.puts (" >");
98bfdba5 10967 else
d7e74731 10968 buf.puts (">");
98bfdba5
PA
10969 }
10970 }
10971
9c37b5ae 10972 /* For C++ methods, append formal parameter type
94af9270 10973 information, if PHYSNAME. */
6e70227d 10974
94af9270 10975 if (physname && die->tag == DW_TAG_subprogram
9c37b5ae 10976 && cu->language == language_cplus)
94af9270
KS
10977 {
10978 struct type *type = read_type_die (die, cu);
10979
d7e74731 10980 c_type_print_args (type, &buf, 1, cu->language,
79d43c61 10981 &type_print_raw_options);
94af9270 10982
9c37b5ae 10983 if (cu->language == language_cplus)
94af9270 10984 {
60430eff
DJ
10985 /* Assume that an artificial first parameter is
10986 "this", but do not crash if it is not. RealView
10987 marks unnamed (and thus unused) parameters as
10988 artificial; there is no way to differentiate
10989 the two cases. */
94af9270
KS
10990 if (TYPE_NFIELDS (type) > 0
10991 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 10992 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
10993 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10994 0))))
d7e74731 10995 buf.puts (" const");
94af9270
KS
10996 }
10997 }
10998
d7e74731 10999 const std::string &intermediate_name = buf.string ();
94af9270
KS
11000
11001 if (cu->language == language_cplus)
34a68019 11002 canonical_name
322a8516 11003 = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
34a68019
TT
11004 &objfile->per_bfd->storage_obstack);
11005
11006 /* If we only computed INTERMEDIATE_NAME, or if
11007 INTERMEDIATE_NAME is already canonical, then we need to
11008 copy it to the appropriate obstack. */
322a8516 11009 if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
224c3ddb
SM
11010 name = ((const char *)
11011 obstack_copy0 (&objfile->per_bfd->storage_obstack,
322a8516
PA
11012 intermediate_name.c_str (),
11013 intermediate_name.length ()));
34a68019
TT
11014 else
11015 name = canonical_name;
94af9270
KS
11016 }
11017 }
11018
11019 return name;
11020}
11021
0114d602
DJ
11022/* Return the fully qualified name of DIE, based on its DW_AT_name.
11023 If scope qualifiers are appropriate they will be added. The result
34a68019 11024 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
11025 not have a name. NAME may either be from a previous call to
11026 dwarf2_name or NULL.
11027
9c37b5ae 11028 The output string will be canonicalized (if C++). */
0114d602
DJ
11029
11030static const char *
15d034d0 11031dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 11032{
94af9270
KS
11033 return dwarf2_compute_name (name, die, cu, 0);
11034}
0114d602 11035
94af9270
KS
11036/* Construct a physname for the given DIE in CU. NAME may either be
11037 from a previous call to dwarf2_name or NULL. The result will be
11038 allocated on the objfile_objstack or NULL if the DIE does not have a
11039 name.
0114d602 11040
9c37b5ae 11041 The output string will be canonicalized (if C++). */
0114d602 11042
94af9270 11043static const char *
15d034d0 11044dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 11045{
518817b3 11046 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
900e11f9 11047 const char *retval, *mangled = NULL, *canon = NULL;
900e11f9
JK
11048 int need_copy = 1;
11049
11050 /* In this case dwarf2_compute_name is just a shortcut not building anything
11051 on its own. */
11052 if (!die_needs_namespace (die, cu))
11053 return dwarf2_compute_name (name, die, cu, 1);
11054
73b9be8b 11055 mangled = dw2_linkage_name (die, cu);
900e11f9 11056
e98c9e7c
TT
11057 /* rustc emits invalid values for DW_AT_linkage_name. Ignore these.
11058 See https://github.com/rust-lang/rust/issues/32925. */
11059 if (cu->language == language_rust && mangled != NULL
11060 && strchr (mangled, '{') != NULL)
11061 mangled = NULL;
11062
900e11f9
JK
11063 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11064 has computed. */
791afaa2 11065 gdb::unique_xmalloc_ptr<char> demangled;
7d45c7c3 11066 if (mangled != NULL)
900e11f9 11067 {
900e11f9 11068
59cc4834
JB
11069 if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11070 {
11071 /* Do nothing (do not demangle the symbol name). */
11072 }
11073 else if (cu->language == language_go)
a766d390 11074 {
5e2db402
TT
11075 /* This is a lie, but we already lie to the caller new_symbol.
11076 new_symbol assumes we return the mangled name.
a766d390 11077 This just undoes that lie until things are cleaned up. */
a766d390
DE
11078 }
11079 else
11080 {
0eb876f5
JB
11081 /* Use DMGL_RET_DROP for C++ template functions to suppress
11082 their return type. It is easier for GDB users to search
11083 for such functions as `name(params)' than `long name(params)'.
11084 In such case the minimal symbol names do not match the full
11085 symbol names but for template functions there is never a need
11086 to look up their definition from their declaration so
11087 the only disadvantage remains the minimal symbol variant
11088 `long name(params)' does not have the proper inferior type. */
791afaa2
TT
11089 demangled.reset (gdb_demangle (mangled,
11090 (DMGL_PARAMS | DMGL_ANSI
11091 | DMGL_RET_DROP)));
a766d390 11092 }
900e11f9 11093 if (demangled)
791afaa2 11094 canon = demangled.get ();
900e11f9
JK
11095 else
11096 {
11097 canon = mangled;
11098 need_copy = 0;
11099 }
11100 }
11101
11102 if (canon == NULL || check_physname)
11103 {
11104 const char *physname = dwarf2_compute_name (name, die, cu, 1);
11105
11106 if (canon != NULL && strcmp (physname, canon) != 0)
11107 {
11108 /* It may not mean a bug in GDB. The compiler could also
11109 compute DW_AT_linkage_name incorrectly. But in such case
11110 GDB would need to be bug-to-bug compatible. */
11111
b98664d3 11112 complaint (_("Computed physname <%s> does not match demangled <%s> "
9d8780f0
SM
11113 "(from linkage <%s>) - DIE at %s [in module %s]"),
11114 physname, canon, mangled, sect_offset_str (die->sect_off),
4262abfb 11115 objfile_name (objfile));
900e11f9
JK
11116
11117 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11118 is available here - over computed PHYSNAME. It is safer
11119 against both buggy GDB and buggy compilers. */
11120
11121 retval = canon;
11122 }
11123 else
11124 {
11125 retval = physname;
11126 need_copy = 0;
11127 }
11128 }
11129 else
11130 retval = canon;
11131
11132 if (need_copy)
224c3ddb
SM
11133 retval = ((const char *)
11134 obstack_copy0 (&objfile->per_bfd->storage_obstack,
11135 retval, strlen (retval)));
900e11f9 11136
900e11f9 11137 return retval;
0114d602
DJ
11138}
11139
74921315
KS
11140/* Inspect DIE in CU for a namespace alias. If one exists, record
11141 a new symbol for it.
11142
11143 Returns 1 if a namespace alias was recorded, 0 otherwise. */
11144
11145static int
11146read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11147{
11148 struct attribute *attr;
11149
11150 /* If the die does not have a name, this is not a namespace
11151 alias. */
11152 attr = dwarf2_attr (die, DW_AT_name, cu);
11153 if (attr != NULL)
11154 {
11155 int num;
11156 struct die_info *d = die;
11157 struct dwarf2_cu *imported_cu = cu;
11158
11159 /* If the compiler has nested DW_AT_imported_declaration DIEs,
11160 keep inspecting DIEs until we hit the underlying import. */
11161#define MAX_NESTED_IMPORTED_DECLARATIONS 100
11162 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11163 {
11164 attr = dwarf2_attr (d, DW_AT_import, cu);
11165 if (attr == NULL)
11166 break;
11167
11168 d = follow_die_ref (d, attr, &imported_cu);
11169 if (d->tag != DW_TAG_imported_declaration)
11170 break;
11171 }
11172
11173 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11174 {
b98664d3 11175 complaint (_("DIE at %s has too many recursively imported "
9d8780f0 11176 "declarations"), sect_offset_str (d->sect_off));
74921315
KS
11177 return 0;
11178 }
11179
11180 if (attr != NULL)
11181 {
11182 struct type *type;
9c541725 11183 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
74921315 11184
9c541725 11185 type = get_die_type_at_offset (sect_off, cu->per_cu);
74921315
KS
11186 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11187 {
11188 /* This declaration is a global namespace alias. Add
11189 a symbol for it whose type is the aliased namespace. */
11190 new_symbol (die, type, cu);
11191 return 1;
11192 }
11193 }
11194 }
11195
11196 return 0;
11197}
11198
22cee43f 11199/* Return the using directives repository (global or local?) to use in the
804d2729 11200 current context for CU.
22cee43f
PMR
11201
11202 For Ada, imported declarations can materialize renamings, which *may* be
11203 global. However it is impossible (for now?) in DWARF to distinguish
11204 "external" imported declarations and "static" ones. As all imported
11205 declarations seem to be static in all other languages, make them all CU-wide
11206 global only in Ada. */
11207
11208static struct using_direct **
804d2729 11209using_directives (struct dwarf2_cu *cu)
22cee43f 11210{
804d2729
TT
11211 if (cu->language == language_ada && cu->builder->outermost_context_p ())
11212 return cu->builder->get_global_using_directives ();
22cee43f 11213 else
804d2729 11214 return cu->builder->get_local_using_directives ();
22cee43f
PMR
11215}
11216
27aa8d6a
SW
11217/* Read the import statement specified by the given die and record it. */
11218
11219static void
11220read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11221{
518817b3 11222 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
27aa8d6a 11223 struct attribute *import_attr;
32019081 11224 struct die_info *imported_die, *child_die;
de4affc9 11225 struct dwarf2_cu *imported_cu;
27aa8d6a 11226 const char *imported_name;
794684b6 11227 const char *imported_name_prefix;
13387711
SW
11228 const char *canonical_name;
11229 const char *import_alias;
11230 const char *imported_declaration = NULL;
794684b6 11231 const char *import_prefix;
eb1e02fd 11232 std::vector<const char *> excludes;
13387711 11233
27aa8d6a
SW
11234 import_attr = dwarf2_attr (die, DW_AT_import, cu);
11235 if (import_attr == NULL)
11236 {
b98664d3 11237 complaint (_("Tag '%s' has no DW_AT_import"),
27aa8d6a
SW
11238 dwarf_tag_name (die->tag));
11239 return;
11240 }
11241
de4affc9
CC
11242 imported_cu = cu;
11243 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11244 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
11245 if (imported_name == NULL)
11246 {
11247 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11248
11249 The import in the following code:
11250 namespace A
11251 {
11252 typedef int B;
11253 }
11254
11255 int main ()
11256 {
11257 using A::B;
11258 B b;
11259 return b;
11260 }
11261
11262 ...
11263 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11264 <52> DW_AT_decl_file : 1
11265 <53> DW_AT_decl_line : 6
11266 <54> DW_AT_import : <0x75>
11267 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11268 <59> DW_AT_name : B
11269 <5b> DW_AT_decl_file : 1
11270 <5c> DW_AT_decl_line : 2
11271 <5d> DW_AT_type : <0x6e>
11272 ...
11273 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11274 <76> DW_AT_byte_size : 4
11275 <77> DW_AT_encoding : 5 (signed)
11276
11277 imports the wrong die ( 0x75 instead of 0x58 ).
11278 This case will be ignored until the gcc bug is fixed. */
11279 return;
11280 }
11281
82856980
SW
11282 /* Figure out the local name after import. */
11283 import_alias = dwarf2_name (die, cu);
27aa8d6a 11284
794684b6
SW
11285 /* Figure out where the statement is being imported to. */
11286 import_prefix = determine_prefix (die, cu);
11287
11288 /* Figure out what the scope of the imported die is and prepend it
11289 to the name of the imported die. */
de4affc9 11290 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 11291
f55ee35c
JK
11292 if (imported_die->tag != DW_TAG_namespace
11293 && imported_die->tag != DW_TAG_module)
794684b6 11294 {
13387711
SW
11295 imported_declaration = imported_name;
11296 canonical_name = imported_name_prefix;
794684b6 11297 }
13387711 11298 else if (strlen (imported_name_prefix) > 0)
12aaed36 11299 canonical_name = obconcat (&objfile->objfile_obstack,
45280282
IB
11300 imported_name_prefix,
11301 (cu->language == language_d ? "." : "::"),
11302 imported_name, (char *) NULL);
13387711
SW
11303 else
11304 canonical_name = imported_name;
794684b6 11305
32019081
JK
11306 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11307 for (child_die = die->child; child_die && child_die->tag;
11308 child_die = sibling_die (child_die))
11309 {
11310 /* DWARF-4: A Fortran use statement with a “rename list” may be
11311 represented by an imported module entry with an import attribute
11312 referring to the module and owned entries corresponding to those
11313 entities that are renamed as part of being imported. */
11314
11315 if (child_die->tag != DW_TAG_imported_declaration)
11316 {
b98664d3 11317 complaint (_("child DW_TAG_imported_declaration expected "
9d8780f0
SM
11318 "- DIE at %s [in module %s]"),
11319 sect_offset_str (child_die->sect_off),
11320 objfile_name (objfile));
32019081
JK
11321 continue;
11322 }
11323
11324 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11325 if (import_attr == NULL)
11326 {
b98664d3 11327 complaint (_("Tag '%s' has no DW_AT_import"),
32019081
JK
11328 dwarf_tag_name (child_die->tag));
11329 continue;
11330 }
11331
11332 imported_cu = cu;
11333 imported_die = follow_die_ref_or_sig (child_die, import_attr,
11334 &imported_cu);
11335 imported_name = dwarf2_name (imported_die, imported_cu);
11336 if (imported_name == NULL)
11337 {
b98664d3 11338 complaint (_("child DW_TAG_imported_declaration has unknown "
9d8780f0
SM
11339 "imported name - DIE at %s [in module %s]"),
11340 sect_offset_str (child_die->sect_off),
11341 objfile_name (objfile));
32019081
JK
11342 continue;
11343 }
11344
eb1e02fd 11345 excludes.push_back (imported_name);
32019081
JK
11346
11347 process_die (child_die, cu);
11348 }
11349
804d2729 11350 add_using_directive (using_directives (cu),
22cee43f
PMR
11351 import_prefix,
11352 canonical_name,
11353 import_alias,
11354 imported_declaration,
11355 excludes,
11356 0,
11357 &objfile->objfile_obstack);
27aa8d6a
SW
11358}
11359
5230b05a
WT
11360/* ICC<14 does not output the required DW_AT_declaration on incomplete
11361 types, but gives them a size of zero. Starting with version 14,
11362 ICC is compatible with GCC. */
11363
9068261f 11364static bool
5230b05a
WT
11365producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11366{
11367 if (!cu->checked_producer)
11368 check_producer (cu);
11369
11370 return cu->producer_is_icc_lt_14;
11371}
11372
eb77c9df
AB
11373/* ICC generates a DW_AT_type for C void functions. This was observed on
11374 ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11375 which says that void functions should not have a DW_AT_type. */
11376
11377static bool
11378producer_is_icc (struct dwarf2_cu *cu)
11379{
11380 if (!cu->checked_producer)
11381 check_producer (cu);
11382
11383 return cu->producer_is_icc;
11384}
11385
1b80a9fa
JK
11386/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11387 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11388 this, it was first present in GCC release 4.3.0. */
11389
9068261f 11390static bool
1b80a9fa
JK
11391producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11392{
11393 if (!cu->checked_producer)
11394 check_producer (cu);
11395
11396 return cu->producer_is_gcc_lt_4_3;
11397}
11398
d721ba37
PA
11399static file_and_directory
11400find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
9291a0cd 11401{
d721ba37
PA
11402 file_and_directory res;
11403
9291a0cd
TT
11404 /* Find the filename. Do not use dwarf2_name here, since the filename
11405 is not a source language identifier. */
d721ba37
PA
11406 res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11407 res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
9291a0cd 11408
d721ba37
PA
11409 if (res.comp_dir == NULL
11410 && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11411 && IS_ABSOLUTE_PATH (res.name))
9291a0cd 11412 {
d721ba37
PA
11413 res.comp_dir_storage = ldirname (res.name);
11414 if (!res.comp_dir_storage.empty ())
11415 res.comp_dir = res.comp_dir_storage.c_str ();
9291a0cd 11416 }
d721ba37 11417 if (res.comp_dir != NULL)
9291a0cd
TT
11418 {
11419 /* Irix 6.2 native cc prepends <machine>.: to the compilation
11420 directory, get rid of it. */
d721ba37 11421 const char *cp = strchr (res.comp_dir, ':');
9291a0cd 11422
d721ba37
PA
11423 if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11424 res.comp_dir = cp + 1;
9291a0cd
TT
11425 }
11426
d721ba37
PA
11427 if (res.name == NULL)
11428 res.name = "<unknown>";
11429
11430 return res;
9291a0cd
TT
11431}
11432
f4dc4d17
DE
11433/* Handle DW_AT_stmt_list for a compilation unit.
11434 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
11435 COMP_DIR is the compilation directory. LOWPC is passed to
11436 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
11437
11438static void
11439handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 11440 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 11441{
518817b3
SM
11442 struct dwarf2_per_objfile *dwarf2_per_objfile
11443 = cu->per_cu->dwarf2_per_objfile;
527f3840 11444 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 11445 struct attribute *attr;
527f3840
JK
11446 struct line_header line_header_local;
11447 hashval_t line_header_local_hash;
527f3840
JK
11448 void **slot;
11449 int decode_mapping;
2ab95328 11450
f4dc4d17
DE
11451 gdb_assert (! cu->per_cu->is_debug_types);
11452
2ab95328 11453 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
11454 if (attr == NULL)
11455 return;
11456
9c541725 11457 sect_offset line_offset = (sect_offset) DW_UNSND (attr);
527f3840
JK
11458
11459 /* The line header hash table is only created if needed (it exists to
11460 prevent redundant reading of the line table for partial_units).
11461 If we're given a partial_unit, we'll need it. If we're given a
11462 compile_unit, then use the line header hash table if it's already
11463 created, but don't create one just yet. */
11464
11465 if (dwarf2_per_objfile->line_header_hash == NULL
11466 && die->tag == DW_TAG_partial_unit)
2ab95328 11467 {
527f3840
JK
11468 dwarf2_per_objfile->line_header_hash
11469 = htab_create_alloc_ex (127, line_header_hash_voidp,
11470 line_header_eq_voidp,
11471 free_line_header_voidp,
11472 &objfile->objfile_obstack,
11473 hashtab_obstack_allocate,
11474 dummy_obstack_deallocate);
11475 }
2ab95328 11476
9c541725 11477 line_header_local.sect_off = line_offset;
527f3840
JK
11478 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11479 line_header_local_hash = line_header_hash (&line_header_local);
11480 if (dwarf2_per_objfile->line_header_hash != NULL)
11481 {
11482 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11483 &line_header_local,
11484 line_header_local_hash, NO_INSERT);
11485
11486 /* For DW_TAG_compile_unit we need info like symtab::linetable which
11487 is not present in *SLOT (since if there is something in *SLOT then
11488 it will be for a partial_unit). */
11489 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 11490 {
527f3840 11491 gdb_assert (*slot != NULL);
9a3c8263 11492 cu->line_header = (struct line_header *) *slot;
527f3840 11493 return;
dee91e82 11494 }
2ab95328 11495 }
527f3840
JK
11496
11497 /* dwarf_decode_line_header does not yet provide sufficient information.
11498 We always have to call also dwarf_decode_lines for it. */
fff8551c
PA
11499 line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11500 if (lh == NULL)
527f3840 11501 return;
4c8aa72d
PA
11502
11503 cu->line_header = lh.release ();
11504 cu->line_header_die_owner = die;
527f3840
JK
11505
11506 if (dwarf2_per_objfile->line_header_hash == NULL)
11507 slot = NULL;
11508 else
11509 {
11510 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11511 &line_header_local,
11512 line_header_local_hash, INSERT);
11513 gdb_assert (slot != NULL);
11514 }
11515 if (slot != NULL && *slot == NULL)
11516 {
11517 /* This newly decoded line number information unit will be owned
11518 by line_header_hash hash table. */
11519 *slot = cu->line_header;
4c8aa72d 11520 cu->line_header_die_owner = NULL;
527f3840
JK
11521 }
11522 else
11523 {
11524 /* We cannot free any current entry in (*slot) as that struct line_header
11525 may be already used by multiple CUs. Create only temporary decoded
11526 line_header for this CU - it may happen at most once for each line
11527 number information unit. And if we're not using line_header_hash
11528 then this is what we want as well. */
11529 gdb_assert (die->tag != DW_TAG_partial_unit);
527f3840
JK
11530 }
11531 decode_mapping = (die->tag != DW_TAG_partial_unit);
11532 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11533 decode_mapping);
fff8551c 11534
2ab95328
TT
11535}
11536
95554aad 11537/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 11538
c906108c 11539static void
e7c27a73 11540read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11541{
518817b3
SM
11542 struct dwarf2_per_objfile *dwarf2_per_objfile
11543 = cu->per_cu->dwarf2_per_objfile;
dee91e82 11544 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 11545 struct gdbarch *gdbarch = get_objfile_arch (objfile);
2acceee2 11546 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
11547 CORE_ADDR highpc = ((CORE_ADDR) 0);
11548 struct attribute *attr;
c906108c 11549 struct die_info *child_die;
e142c38c 11550 CORE_ADDR baseaddr;
6e70227d 11551
380618d6 11552 prepare_one_comp_unit (cu, die, cu->language);
e142c38c 11553 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 11554
fae299cd 11555 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
11556
11557 /* If we didn't find a lowpc, set it to highpc to avoid complaints
11558 from finish_block. */
2acceee2 11559 if (lowpc == ((CORE_ADDR) -1))
c906108c 11560 lowpc = highpc;
3e29f34a 11561 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 11562
d721ba37 11563 file_and_directory fnd = find_file_and_directory (die, cu);
e1024ff1 11564
f4b8a18d
KW
11565 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11566 standardised yet. As a workaround for the language detection we fall
11567 back to the DW_AT_producer string. */
11568 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11569 cu->language = language_opencl;
11570
3019eac3
DE
11571 /* Similar hack for Go. */
11572 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11573 set_cu_language (DW_LANG_Go, cu);
11574
d721ba37 11575 dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
3019eac3
DE
11576
11577 /* Decode line number information if present. We do this before
11578 processing child DIEs, so that the line header table is available
11579 for DW_AT_decl_file. */
d721ba37 11580 handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
3019eac3
DE
11581
11582 /* Process all dies in compilation unit. */
11583 if (die->child != NULL)
11584 {
11585 child_die = die->child;
11586 while (child_die && child_die->tag)
11587 {
11588 process_die (child_die, cu);
11589 child_die = sibling_die (child_die);
11590 }
11591 }
11592
11593 /* Decode macro information, if present. Dwarf 2 macro information
11594 refers to information in the line number info statement program
11595 header, so we can only read it if we've read the header
11596 successfully. */
0af92d60
JK
11597 attr = dwarf2_attr (die, DW_AT_macros, cu);
11598 if (attr == NULL)
11599 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
3019eac3
DE
11600 if (attr && cu->line_header)
11601 {
11602 if (dwarf2_attr (die, DW_AT_macro_info, cu))
b98664d3 11603 complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
3019eac3 11604
43f3e411 11605 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
11606 }
11607 else
11608 {
11609 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11610 if (attr && cu->line_header)
11611 {
11612 unsigned int macro_offset = DW_UNSND (attr);
11613
43f3e411 11614 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
11615 }
11616 }
3019eac3
DE
11617}
11618
f4dc4d17
DE
11619/* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11620 Create the set of symtabs used by this TU, or if this TU is sharing
11621 symtabs with another TU and the symtabs have already been created
11622 then restore those symtabs in the line header.
11623 We don't need the pc/line-number mapping for type units. */
3019eac3
DE
11624
11625static void
f4dc4d17 11626setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
3019eac3 11627{
f4dc4d17
DE
11628 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11629 struct type_unit_group *tu_group;
11630 int first_time;
3019eac3 11631 struct attribute *attr;
9c541725 11632 unsigned int i;
0186c6a7 11633 struct signatured_type *sig_type;
3019eac3 11634
f4dc4d17 11635 gdb_assert (per_cu->is_debug_types);
0186c6a7 11636 sig_type = (struct signatured_type *) per_cu;
3019eac3 11637
f4dc4d17 11638 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
3019eac3 11639
f4dc4d17 11640 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 11641 per_cu->type_unit_group may not have been set up yet. */
0186c6a7
DE
11642 if (sig_type->type_unit_group == NULL)
11643 sig_type->type_unit_group = get_type_unit_group (cu, attr);
11644 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
11645
11646 /* If we've already processed this stmt_list there's no real need to
11647 do it again, we could fake it and just recreate the part we need
11648 (file name,index -> symtab mapping). If data shows this optimization
11649 is useful we can do it then. */
43f3e411 11650 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
11651
11652 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11653 debug info. */
fff8551c 11654 line_header_up lh;
f4dc4d17 11655 if (attr != NULL)
3019eac3 11656 {
9c541725 11657 sect_offset line_offset = (sect_offset) DW_UNSND (attr);
f4dc4d17
DE
11658 lh = dwarf_decode_line_header (line_offset, cu);
11659 }
11660 if (lh == NULL)
11661 {
11662 if (first_time)
11663 dwarf2_start_symtab (cu, "", NULL, 0);
11664 else
11665 {
11666 gdb_assert (tu_group->symtabs == NULL);
804d2729
TT
11667 gdb_assert (cu->builder == nullptr);
11668 struct compunit_symtab *cust = tu_group->compunit_symtab;
11669 cu->builder.reset (new struct buildsym_compunit
11670 (COMPUNIT_OBJFILE (cust), "",
11671 COMPUNIT_DIRNAME (cust),
11672 compunit_language (cust),
11673 0, cust));
f4dc4d17 11674 }
f4dc4d17 11675 return;
3019eac3
DE
11676 }
11677
4c8aa72d
PA
11678 cu->line_header = lh.release ();
11679 cu->line_header_die_owner = die;
3019eac3 11680
f4dc4d17
DE
11681 if (first_time)
11682 {
43f3e411 11683 struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
3019eac3 11684
1fd60fc0
DE
11685 /* Note: We don't assign tu_group->compunit_symtab yet because we're
11686 still initializing it, and our caller (a few levels up)
11687 process_full_type_unit still needs to know if this is the first
11688 time. */
11689
4c8aa72d
PA
11690 tu_group->num_symtabs = cu->line_header->file_names.size ();
11691 tu_group->symtabs = XNEWVEC (struct symtab *,
11692 cu->line_header->file_names.size ());
3019eac3 11693
4c8aa72d 11694 for (i = 0; i < cu->line_header->file_names.size (); ++i)
f4dc4d17 11695 {
4c8aa72d 11696 file_entry &fe = cu->line_header->file_names[i];
3019eac3 11697
804d2729 11698 dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
3019eac3 11699
804d2729 11700 if (cu->builder->get_current_subfile ()->symtab == NULL)
f4dc4d17 11701 {
4c8aa72d
PA
11702 /* NOTE: start_subfile will recognize when it's been
11703 passed a file it has already seen. So we can't
11704 assume there's a simple mapping from
11705 cu->line_header->file_names to subfiles, plus
11706 cu->line_header->file_names may contain dups. */
804d2729
TT
11707 cu->builder->get_current_subfile ()->symtab
11708 = allocate_symtab (cust,
11709 cu->builder->get_current_subfile ()->name);
f4dc4d17
DE
11710 }
11711
804d2729 11712 fe.symtab = cu->builder->get_current_subfile ()->symtab;
8c43009f 11713 tu_group->symtabs[i] = fe.symtab;
f4dc4d17
DE
11714 }
11715 }
11716 else
3019eac3 11717 {
804d2729
TT
11718 gdb_assert (cu->builder == nullptr);
11719 struct compunit_symtab *cust = tu_group->compunit_symtab;
11720 cu->builder.reset (new struct buildsym_compunit
11721 (COMPUNIT_OBJFILE (cust), "",
11722 COMPUNIT_DIRNAME (cust),
11723 compunit_language (cust),
11724 0, cust));
f4dc4d17 11725
4c8aa72d 11726 for (i = 0; i < cu->line_header->file_names.size (); ++i)
f4dc4d17 11727 {
4c8aa72d 11728 file_entry &fe = cu->line_header->file_names[i];
f4dc4d17 11729
4c8aa72d 11730 fe.symtab = tu_group->symtabs[i];
f4dc4d17 11731 }
3019eac3
DE
11732 }
11733
f4dc4d17
DE
11734 /* The main symtab is allocated last. Type units don't have DW_AT_name
11735 so they don't have a "real" (so to speak) symtab anyway.
11736 There is later code that will assign the main symtab to all symbols
11737 that don't have one. We need to handle the case of a symbol with a
11738 missing symtab (DW_AT_decl_file) anyway. */
11739}
3019eac3 11740
f4dc4d17
DE
11741/* Process DW_TAG_type_unit.
11742 For TUs we want to skip the first top level sibling if it's not the
11743 actual type being defined by this TU. In this case the first top
11744 level sibling is there to provide context only. */
3019eac3 11745
f4dc4d17
DE
11746static void
11747read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11748{
11749 struct die_info *child_die;
3019eac3 11750
f4dc4d17
DE
11751 prepare_one_comp_unit (cu, die, language_minimal);
11752
11753 /* Initialize (or reinitialize) the machinery for building symtabs.
11754 We do this before processing child DIEs, so that the line header table
11755 is available for DW_AT_decl_file. */
11756 setup_type_unit_groups (die, cu);
11757
11758 if (die->child != NULL)
11759 {
11760 child_die = die->child;
11761 while (child_die && child_die->tag)
11762 {
11763 process_die (child_die, cu);
11764 child_die = sibling_die (child_die);
11765 }
11766 }
3019eac3
DE
11767}
11768\f
80626a55
DE
11769/* DWO/DWP files.
11770
11771 http://gcc.gnu.org/wiki/DebugFission
11772 http://gcc.gnu.org/wiki/DebugFissionDWP
11773
11774 To simplify handling of both DWO files ("object" files with the DWARF info)
11775 and DWP files (a file with the DWOs packaged up into one file), we treat
11776 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
11777
11778static hashval_t
11779hash_dwo_file (const void *item)
11780{
9a3c8263 11781 const struct dwo_file *dwo_file = (const struct dwo_file *) item;
a2ce51a0 11782 hashval_t hash;
3019eac3 11783
a2ce51a0
DE
11784 hash = htab_hash_string (dwo_file->dwo_name);
11785 if (dwo_file->comp_dir != NULL)
11786 hash += htab_hash_string (dwo_file->comp_dir);
11787 return hash;
3019eac3
DE
11788}
11789
11790static int
11791eq_dwo_file (const void *item_lhs, const void *item_rhs)
11792{
9a3c8263
SM
11793 const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11794 const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
3019eac3 11795
a2ce51a0
DE
11796 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11797 return 0;
11798 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11799 return lhs->comp_dir == rhs->comp_dir;
11800 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
11801}
11802
11803/* Allocate a hash table for DWO files. */
11804
11805static htab_t
ed2dc618 11806allocate_dwo_file_hash_table (struct objfile *objfile)
3019eac3 11807{
3019eac3
DE
11808 return htab_create_alloc_ex (41,
11809 hash_dwo_file,
11810 eq_dwo_file,
11811 NULL,
11812 &objfile->objfile_obstack,
11813 hashtab_obstack_allocate,
11814 dummy_obstack_deallocate);
11815}
11816
80626a55
DE
11817/* Lookup DWO file DWO_NAME. */
11818
11819static void **
ed2dc618
SM
11820lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11821 const char *dwo_name,
11822 const char *comp_dir)
80626a55
DE
11823{
11824 struct dwo_file find_entry;
11825 void **slot;
11826
11827 if (dwarf2_per_objfile->dwo_files == NULL)
ed2dc618
SM
11828 dwarf2_per_objfile->dwo_files
11829 = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
80626a55
DE
11830
11831 memset (&find_entry, 0, sizeof (find_entry));
0ac5b59e
DE
11832 find_entry.dwo_name = dwo_name;
11833 find_entry.comp_dir = comp_dir;
80626a55
DE
11834 slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11835
11836 return slot;
11837}
11838
3019eac3
DE
11839static hashval_t
11840hash_dwo_unit (const void *item)
11841{
9a3c8263 11842 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
3019eac3
DE
11843
11844 /* This drops the top 32 bits of the id, but is ok for a hash. */
11845 return dwo_unit->signature;
11846}
11847
11848static int
11849eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11850{
9a3c8263
SM
11851 const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11852 const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
3019eac3
DE
11853
11854 /* The signature is assumed to be unique within the DWO file.
11855 So while object file CU dwo_id's always have the value zero,
11856 that's OK, assuming each object file DWO file has only one CU,
11857 and that's the rule for now. */
11858 return lhs->signature == rhs->signature;
11859}
11860
11861/* Allocate a hash table for DWO CUs,TUs.
11862 There is one of these tables for each of CUs,TUs for each DWO file. */
11863
11864static htab_t
11865allocate_dwo_unit_table (struct objfile *objfile)
11866{
11867 /* Start out with a pretty small number.
11868 Generally DWO files contain only one CU and maybe some TUs. */
11869 return htab_create_alloc_ex (3,
11870 hash_dwo_unit,
11871 eq_dwo_unit,
11872 NULL,
11873 &objfile->objfile_obstack,
11874 hashtab_obstack_allocate,
11875 dummy_obstack_deallocate);
11876}
11877
80626a55 11878/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 11879
19c3d4c9 11880struct create_dwo_cu_data
3019eac3
DE
11881{
11882 struct dwo_file *dwo_file;
19c3d4c9 11883 struct dwo_unit dwo_unit;
3019eac3
DE
11884};
11885
19c3d4c9 11886/* die_reader_func for create_dwo_cu. */
3019eac3
DE
11887
11888static void
19c3d4c9
DE
11889create_dwo_cu_reader (const struct die_reader_specs *reader,
11890 const gdb_byte *info_ptr,
11891 struct die_info *comp_unit_die,
11892 int has_children,
11893 void *datap)
3019eac3
DE
11894{
11895 struct dwarf2_cu *cu = reader->cu;
9c541725 11896 sect_offset sect_off = cu->per_cu->sect_off;
8a0459fd 11897 struct dwarf2_section_info *section = cu->per_cu->section;
9a3c8263 11898 struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
3019eac3 11899 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 11900 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 11901 struct attribute *attr;
3019eac3
DE
11902
11903 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11904 if (attr == NULL)
11905 {
b98664d3 11906 complaint (_("Dwarf Error: debug entry at offset %s is missing"
19c3d4c9 11907 " its dwo_id [in module %s]"),
9d8780f0 11908 sect_offset_str (sect_off), dwo_file->dwo_name);
3019eac3
DE
11909 return;
11910 }
11911
3019eac3
DE
11912 dwo_unit->dwo_file = dwo_file;
11913 dwo_unit->signature = DW_UNSND (attr);
8a0459fd 11914 dwo_unit->section = section;
9c541725 11915 dwo_unit->sect_off = sect_off;
3019eac3
DE
11916 dwo_unit->length = cu->per_cu->length;
11917
b4f54984 11918 if (dwarf_read_debug)
9d8780f0
SM
11919 fprintf_unfiltered (gdb_stdlog, " offset %s, dwo_id %s\n",
11920 sect_offset_str (sect_off),
9c541725 11921 hex_string (dwo_unit->signature));
3019eac3
DE
11922}
11923
33c5cd75 11924/* Create the dwo_units for the CUs in a DWO_FILE.
19c3d4c9 11925 Note: This function processes DWO files only, not DWP files. */
3019eac3 11926
33c5cd75 11927static void
ed2dc618
SM
11928create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11929 struct dwo_file &dwo_file, dwarf2_section_info &section,
33c5cd75 11930 htab_t &cus_htab)
3019eac3
DE
11931{
11932 struct objfile *objfile = dwarf2_per_objfile->objfile;
d521ce57 11933 const gdb_byte *info_ptr, *end_ptr;
3019eac3 11934
33c5cd75
DB
11935 dwarf2_read_section (objfile, &section);
11936 info_ptr = section.buffer;
3019eac3
DE
11937
11938 if (info_ptr == NULL)
33c5cd75 11939 return;
3019eac3 11940
b4f54984 11941 if (dwarf_read_debug)
19c3d4c9
DE
11942 {
11943 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
33c5cd75
DB
11944 get_section_name (&section),
11945 get_section_file_name (&section));
19c3d4c9 11946 }
3019eac3 11947
33c5cd75 11948 end_ptr = info_ptr + section.size;
3019eac3
DE
11949 while (info_ptr < end_ptr)
11950 {
11951 struct dwarf2_per_cu_data per_cu;
33c5cd75
DB
11952 struct create_dwo_cu_data create_dwo_cu_data;
11953 struct dwo_unit *dwo_unit;
11954 void **slot;
11955 sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
3019eac3 11956
19c3d4c9
DE
11957 memset (&create_dwo_cu_data.dwo_unit, 0,
11958 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3 11959 memset (&per_cu, 0, sizeof (per_cu));
e3b94546 11960 per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3019eac3 11961 per_cu.is_debug_types = 0;
33c5cd75
DB
11962 per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11963 per_cu.section = &section;
c5ed0576 11964 create_dwo_cu_data.dwo_file = &dwo_file;
33c5cd75
DB
11965
11966 init_cutu_and_read_dies_no_follow (
11967 &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11968 info_ptr += per_cu.length;
11969
11970 // If the unit could not be parsed, skip it.
11971 if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11972 continue;
3019eac3 11973
33c5cd75
DB
11974 if (cus_htab == NULL)
11975 cus_htab = allocate_dwo_unit_table (objfile);
19c3d4c9 11976
33c5cd75
DB
11977 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11978 *dwo_unit = create_dwo_cu_data.dwo_unit;
11979 slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11980 gdb_assert (slot != NULL);
11981 if (*slot != NULL)
19c3d4c9 11982 {
33c5cd75
DB
11983 const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11984 sect_offset dup_sect_off = dup_cu->sect_off;
19c3d4c9 11985
b98664d3 11986 complaint (_("debug cu entry at offset %s is duplicate to"
9d8780f0
SM
11987 " the entry at offset %s, signature %s"),
11988 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
33c5cd75 11989 hex_string (dwo_unit->signature));
19c3d4c9 11990 }
33c5cd75 11991 *slot = (void *)dwo_unit;
3019eac3 11992 }
3019eac3
DE
11993}
11994
80626a55
DE
11995/* DWP file .debug_{cu,tu}_index section format:
11996 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11997
d2415c6c
DE
11998 DWP Version 1:
11999
80626a55
DE
12000 Both index sections have the same format, and serve to map a 64-bit
12001 signature to a set of section numbers. Each section begins with a header,
12002 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
12003 indexes, and a pool of 32-bit section numbers. The index sections will be
12004 aligned at 8-byte boundaries in the file.
12005
d2415c6c
DE
12006 The index section header consists of:
12007
12008 V, 32 bit version number
12009 -, 32 bits unused
12010 N, 32 bit number of compilation units or type units in the index
12011 M, 32 bit number of slots in the hash table
80626a55 12012
d2415c6c 12013 Numbers are recorded using the byte order of the application binary.
80626a55 12014
d2415c6c
DE
12015 The hash table begins at offset 16 in the section, and consists of an array
12016 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
12017 order of the application binary). Unused slots in the hash table are 0.
12018 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 12019
d2415c6c
DE
12020 The parallel table begins immediately after the hash table
12021 (at offset 16 + 8 * M from the beginning of the section), and consists of an
12022 array of 32-bit indexes (using the byte order of the application binary),
12023 corresponding 1-1 with slots in the hash table. Each entry in the parallel
12024 table contains a 32-bit index into the pool of section numbers. For unused
12025 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 12026
73869dc2
DE
12027 The pool of section numbers begins immediately following the hash table
12028 (at offset 16 + 12 * M from the beginning of the section). The pool of
12029 section numbers consists of an array of 32-bit words (using the byte order
12030 of the application binary). Each item in the array is indexed starting
12031 from 0. The hash table entry provides the index of the first section
12032 number in the set. Additional section numbers in the set follow, and the
12033 set is terminated by a 0 entry (section number 0 is not used in ELF).
12034
12035 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12036 section must be the first entry in the set, and the .debug_abbrev.dwo must
12037 be the second entry. Other members of the set may follow in any order.
12038
12039 ---
12040
12041 DWP Version 2:
12042
12043 DWP Version 2 combines all the .debug_info, etc. sections into one,
12044 and the entries in the index tables are now offsets into these sections.
12045 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
12046 section.
12047
12048 Index Section Contents:
12049 Header
12050 Hash Table of Signatures dwp_hash_table.hash_table
12051 Parallel Table of Indices dwp_hash_table.unit_table
12052 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
12053 Table of Section Sizes dwp_hash_table.v2.sizes
12054
12055 The index section header consists of:
12056
12057 V, 32 bit version number
12058 L, 32 bit number of columns in the table of section offsets
12059 N, 32 bit number of compilation units or type units in the index
12060 M, 32 bit number of slots in the hash table
12061
12062 Numbers are recorded using the byte order of the application binary.
12063
12064 The hash table has the same format as version 1.
12065 The parallel table of indices has the same format as version 1,
12066 except that the entries are origin-1 indices into the table of sections
12067 offsets and the table of section sizes.
12068
12069 The table of offsets begins immediately following the parallel table
12070 (at offset 16 + 12 * M from the beginning of the section). The table is
12071 a two-dimensional array of 32-bit words (using the byte order of the
12072 application binary), with L columns and N+1 rows, in row-major order.
12073 Each row in the array is indexed starting from 0. The first row provides
12074 a key to the remaining rows: each column in this row provides an identifier
12075 for a debug section, and the offsets in the same column of subsequent rows
12076 refer to that section. The section identifiers are:
12077
12078 DW_SECT_INFO 1 .debug_info.dwo
12079 DW_SECT_TYPES 2 .debug_types.dwo
12080 DW_SECT_ABBREV 3 .debug_abbrev.dwo
12081 DW_SECT_LINE 4 .debug_line.dwo
12082 DW_SECT_LOC 5 .debug_loc.dwo
12083 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
12084 DW_SECT_MACINFO 7 .debug_macinfo.dwo
12085 DW_SECT_MACRO 8 .debug_macro.dwo
12086
12087 The offsets provided by the CU and TU index sections are the base offsets
12088 for the contributions made by each CU or TU to the corresponding section
12089 in the package file. Each CU and TU header contains an abbrev_offset
12090 field, used to find the abbreviations table for that CU or TU within the
12091 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12092 be interpreted as relative to the base offset given in the index section.
12093 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12094 should be interpreted as relative to the base offset for .debug_line.dwo,
12095 and offsets into other debug sections obtained from DWARF attributes should
12096 also be interpreted as relative to the corresponding base offset.
12097
12098 The table of sizes begins immediately following the table of offsets.
12099 Like the table of offsets, it is a two-dimensional array of 32-bit words,
12100 with L columns and N rows, in row-major order. Each row in the array is
12101 indexed starting from 1 (row 0 is shared by the two tables).
12102
12103 ---
12104
12105 Hash table lookup is handled the same in version 1 and 2:
12106
12107 We assume that N and M will not exceed 2^32 - 1.
12108 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12109
d2415c6c
DE
12110 Given a 64-bit compilation unit signature or a type signature S, an entry
12111 in the hash table is located as follows:
80626a55 12112
d2415c6c
DE
12113 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12114 the low-order k bits all set to 1.
80626a55 12115
d2415c6c 12116 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 12117
d2415c6c
DE
12118 3) If the hash table entry at index H matches the signature, use that
12119 entry. If the hash table entry at index H is unused (all zeroes),
12120 terminate the search: the signature is not present in the table.
80626a55 12121
d2415c6c 12122 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 12123
d2415c6c 12124 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 12125 to stop at an unused slot or find the match. */
80626a55
DE
12126
12127/* Create a hash table to map DWO IDs to their CU/TU entry in
12128 .debug_{info,types}.dwo in DWP_FILE.
12129 Returns NULL if there isn't one.
12130 Note: This function processes DWP files only, not DWO files. */
12131
12132static struct dwp_hash_table *
ed2dc618
SM
12133create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12134 struct dwp_file *dwp_file, int is_debug_types)
80626a55
DE
12135{
12136 struct objfile *objfile = dwarf2_per_objfile->objfile;
400174b1 12137 bfd *dbfd = dwp_file->dbfd.get ();
948f8e3d 12138 const gdb_byte *index_ptr, *index_end;
80626a55 12139 struct dwarf2_section_info *index;
73869dc2 12140 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
12141 struct dwp_hash_table *htab;
12142
12143 if (is_debug_types)
12144 index = &dwp_file->sections.tu_index;
12145 else
12146 index = &dwp_file->sections.cu_index;
12147
12148 if (dwarf2_section_empty_p (index))
12149 return NULL;
12150 dwarf2_read_section (objfile, index);
12151
12152 index_ptr = index->buffer;
12153 index_end = index_ptr + index->size;
12154
12155 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
12156 index_ptr += 4;
12157 if (version == 2)
12158 nr_columns = read_4_bytes (dbfd, index_ptr);
12159 else
12160 nr_columns = 0;
12161 index_ptr += 4;
80626a55
DE
12162 nr_units = read_4_bytes (dbfd, index_ptr);
12163 index_ptr += 4;
12164 nr_slots = read_4_bytes (dbfd, index_ptr);
12165 index_ptr += 4;
12166
73869dc2 12167 if (version != 1 && version != 2)
80626a55 12168 {
21aa081e 12169 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 12170 " [in module %s]"),
21aa081e 12171 pulongest (version), dwp_file->name);
80626a55
DE
12172 }
12173 if (nr_slots != (nr_slots & -nr_slots))
12174 {
21aa081e 12175 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 12176 " is not power of 2 [in module %s]"),
21aa081e 12177 pulongest (nr_slots), dwp_file->name);
80626a55
DE
12178 }
12179
12180 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
12181 htab->version = version;
12182 htab->nr_columns = nr_columns;
80626a55
DE
12183 htab->nr_units = nr_units;
12184 htab->nr_slots = nr_slots;
12185 htab->hash_table = index_ptr;
12186 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
12187
12188 /* Exit early if the table is empty. */
12189 if (nr_slots == 0 || nr_units == 0
12190 || (version == 2 && nr_columns == 0))
12191 {
12192 /* All must be zero. */
12193 if (nr_slots != 0 || nr_units != 0
12194 || (version == 2 && nr_columns != 0))
12195 {
b98664d3 12196 complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
73869dc2
DE
12197 " all zero [in modules %s]"),
12198 dwp_file->name);
12199 }
12200 return htab;
12201 }
12202
12203 if (version == 1)
12204 {
12205 htab->section_pool.v1.indices =
12206 htab->unit_table + sizeof (uint32_t) * nr_slots;
12207 /* It's harder to decide whether the section is too small in v1.
12208 V1 is deprecated anyway so we punt. */
12209 }
12210 else
12211 {
12212 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12213 int *ids = htab->section_pool.v2.section_ids;
04fd5eed 12214 size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
73869dc2
DE
12215 /* Reverse map for error checking. */
12216 int ids_seen[DW_SECT_MAX + 1];
12217 int i;
12218
12219 if (nr_columns < 2)
12220 {
12221 error (_("Dwarf Error: bad DWP hash table, too few columns"
12222 " in section table [in module %s]"),
12223 dwp_file->name);
12224 }
12225 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12226 {
12227 error (_("Dwarf Error: bad DWP hash table, too many columns"
12228 " in section table [in module %s]"),
12229 dwp_file->name);
12230 }
04fd5eed
GB
12231 memset (ids, 255, sizeof_ids);
12232 memset (ids_seen, 255, sizeof (ids_seen));
73869dc2
DE
12233 for (i = 0; i < nr_columns; ++i)
12234 {
12235 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12236
12237 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12238 {
12239 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12240 " in section table [in module %s]"),
12241 id, dwp_file->name);
12242 }
12243 if (ids_seen[id] != -1)
12244 {
12245 error (_("Dwarf Error: bad DWP hash table, duplicate section"
12246 " id %d in section table [in module %s]"),
12247 id, dwp_file->name);
12248 }
12249 ids_seen[id] = i;
12250 ids[i] = id;
12251 }
12252 /* Must have exactly one info or types section. */
12253 if (((ids_seen[DW_SECT_INFO] != -1)
12254 + (ids_seen[DW_SECT_TYPES] != -1))
12255 != 1)
12256 {
12257 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12258 " DWO info/types section [in module %s]"),
12259 dwp_file->name);
12260 }
12261 /* Must have an abbrev section. */
12262 if (ids_seen[DW_SECT_ABBREV] == -1)
12263 {
12264 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12265 " section [in module %s]"),
12266 dwp_file->name);
12267 }
12268 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12269 htab->section_pool.v2.sizes =
12270 htab->section_pool.v2.offsets + (sizeof (uint32_t)
12271 * nr_units * nr_columns);
12272 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12273 * nr_units * nr_columns))
12274 > index_end)
12275 {
12276 error (_("Dwarf Error: DWP index section is corrupt (too small)"
12277 " [in module %s]"),
12278 dwp_file->name);
12279 }
12280 }
80626a55
DE
12281
12282 return htab;
12283}
12284
12285/* Update SECTIONS with the data from SECTP.
12286
12287 This function is like the other "locate" section routines that are
12288 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 12289 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
12290
12291 The result is non-zero for success, or zero if an error was found. */
12292
12293static int
73869dc2
DE
12294locate_v1_virtual_dwo_sections (asection *sectp,
12295 struct virtual_v1_dwo_sections *sections)
80626a55
DE
12296{
12297 const struct dwop_section_names *names = &dwop_section_names;
12298
12299 if (section_is_p (sectp->name, &names->abbrev_dwo))
12300 {
12301 /* There can be only one. */
049412e3 12302 if (sections->abbrev.s.section != NULL)
80626a55 12303 return 0;
049412e3 12304 sections->abbrev.s.section = sectp;
80626a55
DE
12305 sections->abbrev.size = bfd_get_section_size (sectp);
12306 }
12307 else if (section_is_p (sectp->name, &names->info_dwo)
12308 || section_is_p (sectp->name, &names->types_dwo))
12309 {
12310 /* There can be only one. */
049412e3 12311 if (sections->info_or_types.s.section != NULL)
80626a55 12312 return 0;
049412e3 12313 sections->info_or_types.s.section = sectp;
80626a55
DE
12314 sections->info_or_types.size = bfd_get_section_size (sectp);
12315 }
12316 else if (section_is_p (sectp->name, &names->line_dwo))
12317 {
12318 /* There can be only one. */
049412e3 12319 if (sections->line.s.section != NULL)
80626a55 12320 return 0;
049412e3 12321 sections->line.s.section = sectp;
80626a55
DE
12322 sections->line.size = bfd_get_section_size (sectp);
12323 }
12324 else if (section_is_p (sectp->name, &names->loc_dwo))
12325 {
12326 /* There can be only one. */
049412e3 12327 if (sections->loc.s.section != NULL)
80626a55 12328 return 0;
049412e3 12329 sections->loc.s.section = sectp;
80626a55
DE
12330 sections->loc.size = bfd_get_section_size (sectp);
12331 }
12332 else if (section_is_p (sectp->name, &names->macinfo_dwo))
12333 {
12334 /* There can be only one. */
049412e3 12335 if (sections->macinfo.s.section != NULL)
80626a55 12336 return 0;
049412e3 12337 sections->macinfo.s.section = sectp;
80626a55
DE
12338 sections->macinfo.size = bfd_get_section_size (sectp);
12339 }
12340 else if (section_is_p (sectp->name, &names->macro_dwo))
12341 {
12342 /* There can be only one. */
049412e3 12343 if (sections->macro.s.section != NULL)
80626a55 12344 return 0;
049412e3 12345 sections->macro.s.section = sectp;
80626a55
DE
12346 sections->macro.size = bfd_get_section_size (sectp);
12347 }
12348 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12349 {
12350 /* There can be only one. */
049412e3 12351 if (sections->str_offsets.s.section != NULL)
80626a55 12352 return 0;
049412e3 12353 sections->str_offsets.s.section = sectp;
80626a55
DE
12354 sections->str_offsets.size = bfd_get_section_size (sectp);
12355 }
12356 else
12357 {
12358 /* No other kind of section is valid. */
12359 return 0;
12360 }
12361
12362 return 1;
12363}
12364
73869dc2
DE
12365/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12366 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12367 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12368 This is for DWP version 1 files. */
80626a55
DE
12369
12370static struct dwo_unit *
ed2dc618
SM
12371create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12372 struct dwp_file *dwp_file,
73869dc2
DE
12373 uint32_t unit_index,
12374 const char *comp_dir,
12375 ULONGEST signature, int is_debug_types)
80626a55
DE
12376{
12377 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
12378 const struct dwp_hash_table *dwp_htab =
12379 is_debug_types ? dwp_file->tus : dwp_file->cus;
400174b1 12380 bfd *dbfd = dwp_file->dbfd.get ();
80626a55
DE
12381 const char *kind = is_debug_types ? "TU" : "CU";
12382 struct dwo_file *dwo_file;
12383 struct dwo_unit *dwo_unit;
73869dc2 12384 struct virtual_v1_dwo_sections sections;
80626a55 12385 void **dwo_file_slot;
80626a55
DE
12386 int i;
12387
73869dc2
DE
12388 gdb_assert (dwp_file->version == 1);
12389
b4f54984 12390 if (dwarf_read_debug)
80626a55 12391 {
73869dc2 12392 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
80626a55 12393 kind,
73869dc2 12394 pulongest (unit_index), hex_string (signature),
80626a55
DE
12395 dwp_file->name);
12396 }
12397
19ac8c2e 12398 /* Fetch the sections of this DWO unit.
80626a55
DE
12399 Put a limit on the number of sections we look for so that bad data
12400 doesn't cause us to loop forever. */
12401
73869dc2 12402#define MAX_NR_V1_DWO_SECTIONS \
80626a55
DE
12403 (1 /* .debug_info or .debug_types */ \
12404 + 1 /* .debug_abbrev */ \
12405 + 1 /* .debug_line */ \
12406 + 1 /* .debug_loc */ \
12407 + 1 /* .debug_str_offsets */ \
19ac8c2e 12408 + 1 /* .debug_macro or .debug_macinfo */ \
80626a55
DE
12409 + 1 /* trailing zero */)
12410
12411 memset (&sections, 0, sizeof (sections));
80626a55 12412
73869dc2 12413 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
80626a55
DE
12414 {
12415 asection *sectp;
12416 uint32_t section_nr =
12417 read_4_bytes (dbfd,
73869dc2
DE
12418 dwp_htab->section_pool.v1.indices
12419 + (unit_index + i) * sizeof (uint32_t));
80626a55
DE
12420
12421 if (section_nr == 0)
12422 break;
12423 if (section_nr >= dwp_file->num_sections)
12424 {
12425 error (_("Dwarf Error: bad DWP hash table, section number too large"
12426 " [in module %s]"),
12427 dwp_file->name);
12428 }
12429
12430 sectp = dwp_file->elf_sections[section_nr];
73869dc2 12431 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
80626a55
DE
12432 {
12433 error (_("Dwarf Error: bad DWP hash table, invalid section found"
12434 " [in module %s]"),
12435 dwp_file->name);
12436 }
12437 }
12438
12439 if (i < 2
a32a8923
DE
12440 || dwarf2_section_empty_p (&sections.info_or_types)
12441 || dwarf2_section_empty_p (&sections.abbrev))
80626a55
DE
12442 {
12443 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12444 " [in module %s]"),
12445 dwp_file->name);
12446 }
73869dc2 12447 if (i == MAX_NR_V1_DWO_SECTIONS)
80626a55
DE
12448 {
12449 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12450 " [in module %s]"),
12451 dwp_file->name);
12452 }
12453
12454 /* It's easier for the rest of the code if we fake a struct dwo_file and
12455 have dwo_unit "live" in that. At least for now.
12456
12457 The DWP file can be made up of a random collection of CUs and TUs.
c766f7ec 12458 However, for each CU + set of TUs that came from the same original DWO
57d63ce2
DE
12459 file, we can combine them back into a virtual DWO file to save space
12460 (fewer struct dwo_file objects to allocate). Remember that for really
80626a55
DE
12461 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12462
791afaa2
TT
12463 std::string virtual_dwo_name =
12464 string_printf ("virtual-dwo/%d-%d-%d-%d",
12465 get_section_id (&sections.abbrev),
12466 get_section_id (&sections.line),
12467 get_section_id (&sections.loc),
12468 get_section_id (&sections.str_offsets));
80626a55 12469 /* Can we use an existing virtual DWO file? */
ed2dc618
SM
12470 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12471 virtual_dwo_name.c_str (),
12472 comp_dir);
80626a55
DE
12473 /* Create one if necessary. */
12474 if (*dwo_file_slot == NULL)
12475 {
b4f54984 12476 if (dwarf_read_debug)
80626a55
DE
12477 {
12478 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
791afaa2 12479 virtual_dwo_name.c_str ());
80626a55
DE
12480 }
12481 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
224c3ddb
SM
12482 dwo_file->dwo_name
12483 = (const char *) obstack_copy0 (&objfile->objfile_obstack,
791afaa2
TT
12484 virtual_dwo_name.c_str (),
12485 virtual_dwo_name.size ());
0ac5b59e 12486 dwo_file->comp_dir = comp_dir;
80626a55
DE
12487 dwo_file->sections.abbrev = sections.abbrev;
12488 dwo_file->sections.line = sections.line;
12489 dwo_file->sections.loc = sections.loc;
12490 dwo_file->sections.macinfo = sections.macinfo;
12491 dwo_file->sections.macro = sections.macro;
12492 dwo_file->sections.str_offsets = sections.str_offsets;
12493 /* The "str" section is global to the entire DWP file. */
12494 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 12495 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
12496 there's no need to record it in dwo_file.
12497 Also, we can't simply record type sections in dwo_file because
12498 we record a pointer into the vector in dwo_unit. As we collect more
12499 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
12500 for it, invalidating all copies of pointers into the previous
12501 contents. */
80626a55
DE
12502 *dwo_file_slot = dwo_file;
12503 }
12504 else
12505 {
b4f54984 12506 if (dwarf_read_debug)
80626a55
DE
12507 {
12508 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
791afaa2 12509 virtual_dwo_name.c_str ());
80626a55 12510 }
9a3c8263 12511 dwo_file = (struct dwo_file *) *dwo_file_slot;
80626a55 12512 }
80626a55
DE
12513
12514 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12515 dwo_unit->dwo_file = dwo_file;
12516 dwo_unit->signature = signature;
8d749320
SM
12517 dwo_unit->section =
12518 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
8a0459fd 12519 *dwo_unit->section = sections.info_or_types;
57d63ce2 12520 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
12521
12522 return dwo_unit;
12523}
12524
73869dc2
DE
12525/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12526 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12527 piece within that section used by a TU/CU, return a virtual section
12528 of just that piece. */
12529
12530static struct dwarf2_section_info
ed2dc618
SM
12531create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12532 struct dwarf2_section_info *section,
73869dc2
DE
12533 bfd_size_type offset, bfd_size_type size)
12534{
12535 struct dwarf2_section_info result;
12536 asection *sectp;
12537
12538 gdb_assert (section != NULL);
12539 gdb_assert (!section->is_virtual);
12540
12541 memset (&result, 0, sizeof (result));
12542 result.s.containing_section = section;
12543 result.is_virtual = 1;
12544
12545 if (size == 0)
12546 return result;
12547
12548 sectp = get_section_bfd_section (section);
12549
12550 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12551 bounds of the real section. This is a pretty-rare event, so just
12552 flag an error (easier) instead of a warning and trying to cope. */
12553 if (sectp == NULL
12554 || offset + size > bfd_get_section_size (sectp))
12555 {
73869dc2
DE
12556 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12557 " in section %s [in module %s]"),
12558 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12559 objfile_name (dwarf2_per_objfile->objfile));
12560 }
12561
12562 result.virtual_offset = offset;
12563 result.size = size;
12564 return result;
12565}
12566
12567/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12568 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12569 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12570 This is for DWP version 2 files. */
12571
12572static struct dwo_unit *
ed2dc618
SM
12573create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12574 struct dwp_file *dwp_file,
73869dc2
DE
12575 uint32_t unit_index,
12576 const char *comp_dir,
12577 ULONGEST signature, int is_debug_types)
12578{
12579 struct objfile *objfile = dwarf2_per_objfile->objfile;
12580 const struct dwp_hash_table *dwp_htab =
12581 is_debug_types ? dwp_file->tus : dwp_file->cus;
400174b1 12582 bfd *dbfd = dwp_file->dbfd.get ();
73869dc2
DE
12583 const char *kind = is_debug_types ? "TU" : "CU";
12584 struct dwo_file *dwo_file;
12585 struct dwo_unit *dwo_unit;
12586 struct virtual_v2_dwo_sections sections;
12587 void **dwo_file_slot;
73869dc2
DE
12588 int i;
12589
12590 gdb_assert (dwp_file->version == 2);
12591
b4f54984 12592 if (dwarf_read_debug)
73869dc2
DE
12593 {
12594 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12595 kind,
12596 pulongest (unit_index), hex_string (signature),
12597 dwp_file->name);
12598 }
12599
12600 /* Fetch the section offsets of this DWO unit. */
12601
12602 memset (&sections, 0, sizeof (sections));
73869dc2
DE
12603
12604 for (i = 0; i < dwp_htab->nr_columns; ++i)
12605 {
12606 uint32_t offset = read_4_bytes (dbfd,
12607 dwp_htab->section_pool.v2.offsets
12608 + (((unit_index - 1) * dwp_htab->nr_columns
12609 + i)
12610 * sizeof (uint32_t)));
12611 uint32_t size = read_4_bytes (dbfd,
12612 dwp_htab->section_pool.v2.sizes
12613 + (((unit_index - 1) * dwp_htab->nr_columns
12614 + i)
12615 * sizeof (uint32_t)));
12616
12617 switch (dwp_htab->section_pool.v2.section_ids[i])
12618 {
12619 case DW_SECT_INFO:
12620 case DW_SECT_TYPES:
12621 sections.info_or_types_offset = offset;
12622 sections.info_or_types_size = size;
12623 break;
12624 case DW_SECT_ABBREV:
12625 sections.abbrev_offset = offset;
12626 sections.abbrev_size = size;
12627 break;
12628 case DW_SECT_LINE:
12629 sections.line_offset = offset;
12630 sections.line_size = size;
12631 break;
12632 case DW_SECT_LOC:
12633 sections.loc_offset = offset;
12634 sections.loc_size = size;
12635 break;
12636 case DW_SECT_STR_OFFSETS:
12637 sections.str_offsets_offset = offset;
12638 sections.str_offsets_size = size;
12639 break;
12640 case DW_SECT_MACINFO:
12641 sections.macinfo_offset = offset;
12642 sections.macinfo_size = size;
12643 break;
12644 case DW_SECT_MACRO:
12645 sections.macro_offset = offset;
12646 sections.macro_size = size;
12647 break;
12648 }
12649 }
12650
12651 /* It's easier for the rest of the code if we fake a struct dwo_file and
12652 have dwo_unit "live" in that. At least for now.
12653
12654 The DWP file can be made up of a random collection of CUs and TUs.
12655 However, for each CU + set of TUs that came from the same original DWO
12656 file, we can combine them back into a virtual DWO file to save space
12657 (fewer struct dwo_file objects to allocate). Remember that for really
12658 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12659
791afaa2
TT
12660 std::string virtual_dwo_name =
12661 string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12662 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12663 (long) (sections.line_size ? sections.line_offset : 0),
12664 (long) (sections.loc_size ? sections.loc_offset : 0),
12665 (long) (sections.str_offsets_size
12666 ? sections.str_offsets_offset : 0));
73869dc2 12667 /* Can we use an existing virtual DWO file? */
ed2dc618
SM
12668 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12669 virtual_dwo_name.c_str (),
12670 comp_dir);
73869dc2
DE
12671 /* Create one if necessary. */
12672 if (*dwo_file_slot == NULL)
12673 {
b4f54984 12674 if (dwarf_read_debug)
73869dc2
DE
12675 {
12676 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
791afaa2 12677 virtual_dwo_name.c_str ());
73869dc2
DE
12678 }
12679 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
224c3ddb
SM
12680 dwo_file->dwo_name
12681 = (const char *) obstack_copy0 (&objfile->objfile_obstack,
791afaa2
TT
12682 virtual_dwo_name.c_str (),
12683 virtual_dwo_name.size ());
73869dc2
DE
12684 dwo_file->comp_dir = comp_dir;
12685 dwo_file->sections.abbrev =
ed2dc618 12686 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
73869dc2
DE
12687 sections.abbrev_offset, sections.abbrev_size);
12688 dwo_file->sections.line =
ed2dc618 12689 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
73869dc2
DE
12690 sections.line_offset, sections.line_size);
12691 dwo_file->sections.loc =
ed2dc618 12692 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
73869dc2
DE
12693 sections.loc_offset, sections.loc_size);
12694 dwo_file->sections.macinfo =
ed2dc618 12695 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
73869dc2
DE
12696 sections.macinfo_offset, sections.macinfo_size);
12697 dwo_file->sections.macro =
ed2dc618 12698 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
73869dc2
DE
12699 sections.macro_offset, sections.macro_size);
12700 dwo_file->sections.str_offsets =
ed2dc618
SM
12701 create_dwp_v2_section (dwarf2_per_objfile,
12702 &dwp_file->sections.str_offsets,
73869dc2
DE
12703 sections.str_offsets_offset,
12704 sections.str_offsets_size);
12705 /* The "str" section is global to the entire DWP file. */
12706 dwo_file->sections.str = dwp_file->sections.str;
12707 /* The info or types section is assigned below to dwo_unit,
12708 there's no need to record it in dwo_file.
12709 Also, we can't simply record type sections in dwo_file because
12710 we record a pointer into the vector in dwo_unit. As we collect more
12711 types we'll grow the vector and eventually have to reallocate space
12712 for it, invalidating all copies of pointers into the previous
12713 contents. */
12714 *dwo_file_slot = dwo_file;
12715 }
12716 else
12717 {
b4f54984 12718 if (dwarf_read_debug)
73869dc2
DE
12719 {
12720 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
791afaa2 12721 virtual_dwo_name.c_str ());
73869dc2 12722 }
9a3c8263 12723 dwo_file = (struct dwo_file *) *dwo_file_slot;
73869dc2 12724 }
73869dc2
DE
12725
12726 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12727 dwo_unit->dwo_file = dwo_file;
12728 dwo_unit->signature = signature;
8d749320
SM
12729 dwo_unit->section =
12730 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
ed2dc618
SM
12731 *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12732 is_debug_types
73869dc2
DE
12733 ? &dwp_file->sections.types
12734 : &dwp_file->sections.info,
12735 sections.info_or_types_offset,
12736 sections.info_or_types_size);
12737 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
12738
12739 return dwo_unit;
12740}
12741
57d63ce2
DE
12742/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12743 Returns NULL if the signature isn't found. */
80626a55
DE
12744
12745static struct dwo_unit *
ed2dc618
SM
12746lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12747 struct dwp_file *dwp_file, const char *comp_dir,
57d63ce2 12748 ULONGEST signature, int is_debug_types)
80626a55 12749{
57d63ce2
DE
12750 const struct dwp_hash_table *dwp_htab =
12751 is_debug_types ? dwp_file->tus : dwp_file->cus;
400174b1 12752 bfd *dbfd = dwp_file->dbfd.get ();
57d63ce2 12753 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
12754 uint32_t hash = signature & mask;
12755 uint32_t hash2 = ((signature >> 32) & mask) | 1;
12756 unsigned int i;
12757 void **slot;
870f88f7 12758 struct dwo_unit find_dwo_cu;
80626a55
DE
12759
12760 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12761 find_dwo_cu.signature = signature;
19ac8c2e
DE
12762 slot = htab_find_slot (is_debug_types
12763 ? dwp_file->loaded_tus
12764 : dwp_file->loaded_cus,
12765 &find_dwo_cu, INSERT);
80626a55
DE
12766
12767 if (*slot != NULL)
9a3c8263 12768 return (struct dwo_unit *) *slot;
80626a55
DE
12769
12770 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 12771 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
12772 {
12773 ULONGEST signature_in_table;
12774
12775 signature_in_table =
57d63ce2 12776 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
12777 if (signature_in_table == signature)
12778 {
57d63ce2
DE
12779 uint32_t unit_index =
12780 read_4_bytes (dbfd,
12781 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 12782
73869dc2
DE
12783 if (dwp_file->version == 1)
12784 {
ed2dc618
SM
12785 *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12786 dwp_file, unit_index,
73869dc2
DE
12787 comp_dir, signature,
12788 is_debug_types);
12789 }
12790 else
12791 {
ed2dc618
SM
12792 *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12793 dwp_file, unit_index,
73869dc2
DE
12794 comp_dir, signature,
12795 is_debug_types);
12796 }
9a3c8263 12797 return (struct dwo_unit *) *slot;
80626a55
DE
12798 }
12799 if (signature_in_table == 0)
12800 return NULL;
12801 hash = (hash + hash2) & mask;
12802 }
12803
12804 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12805 " [in module %s]"),
12806 dwp_file->name);
12807}
12808
ab5088bf 12809/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
12810 Open the file specified by FILE_NAME and hand it off to BFD for
12811 preliminary analysis. Return a newly initialized bfd *, which
12812 includes a canonicalized copy of FILE_NAME.
80626a55 12813 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
12814 SEARCH_CWD is true if the current directory is to be searched.
12815 It will be searched before debug-file-directory.
13aaf454
DE
12816 If successful, the file is added to the bfd include table of the
12817 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 12818 If unable to find/open the file, return NULL.
3019eac3
DE
12819 NOTE: This function is derived from symfile_bfd_open. */
12820
192b62ce 12821static gdb_bfd_ref_ptr
ed2dc618
SM
12822try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12823 const char *file_name, int is_dwp, int search_cwd)
3019eac3 12824{
24b9144d 12825 int desc;
9c02c129
DE
12826 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
12827 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
12828 to debug_file_directory. */
e0cc99a6 12829 const char *search_path;
9c02c129
DE
12830 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12831
e0cc99a6 12832 gdb::unique_xmalloc_ptr<char> search_path_holder;
6ac97d4c
DE
12833 if (search_cwd)
12834 {
12835 if (*debug_file_directory != '\0')
e0cc99a6
TT
12836 {
12837 search_path_holder.reset (concat (".", dirname_separator_string,
12838 debug_file_directory,
12839 (char *) NULL));
12840 search_path = search_path_holder.get ();
12841 }
6ac97d4c 12842 else
e0cc99a6 12843 search_path = ".";
6ac97d4c 12844 }
9c02c129 12845 else
e0cc99a6 12846 search_path = debug_file_directory;
3019eac3 12847
24b9144d 12848 openp_flags flags = OPF_RETURN_REALPATH;
80626a55
DE
12849 if (is_dwp)
12850 flags |= OPF_SEARCH_IN_PATH;
e0cc99a6
TT
12851
12852 gdb::unique_xmalloc_ptr<char> absolute_name;
9c02c129 12853 desc = openp (search_path, flags, file_name,
3019eac3
DE
12854 O_RDONLY | O_BINARY, &absolute_name);
12855 if (desc < 0)
12856 return NULL;
12857
e0cc99a6
TT
12858 gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12859 gnutarget, desc));
9c02c129
DE
12860 if (sym_bfd == NULL)
12861 return NULL;
192b62ce 12862 bfd_set_cacheable (sym_bfd.get (), 1);
3019eac3 12863
192b62ce
TT
12864 if (!bfd_check_format (sym_bfd.get (), bfd_object))
12865 return NULL;
3019eac3 12866
13aaf454
DE
12867 /* Success. Record the bfd as having been included by the objfile's bfd.
12868 This is important because things like demangled_names_hash lives in the
12869 objfile's per_bfd space and may have references to things like symbol
12870 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
192b62ce 12871 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
13aaf454 12872
3019eac3
DE
12873 return sym_bfd;
12874}
12875
ab5088bf 12876/* Try to open DWO file FILE_NAME.
3019eac3
DE
12877 COMP_DIR is the DW_AT_comp_dir attribute.
12878 The result is the bfd handle of the file.
12879 If there is a problem finding or opening the file, return NULL.
12880 Upon success, the canonicalized path of the file is stored in the bfd,
12881 same as symfile_bfd_open. */
12882
192b62ce 12883static gdb_bfd_ref_ptr
ed2dc618
SM
12884open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12885 const char *file_name, const char *comp_dir)
3019eac3 12886{
80626a55 12887 if (IS_ABSOLUTE_PATH (file_name))
ed2dc618
SM
12888 return try_open_dwop_file (dwarf2_per_objfile, file_name,
12889 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
12890
12891 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
12892
12893 if (comp_dir != NULL)
12894 {
b36cec19
PA
12895 char *path_to_try = concat (comp_dir, SLASH_STRING,
12896 file_name, (char *) NULL);
3019eac3
DE
12897
12898 /* NOTE: If comp_dir is a relative path, this will also try the
12899 search path, which seems useful. */
ed2dc618
SM
12900 gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12901 path_to_try,
12902 0 /*is_dwp*/,
192b62ce 12903 1 /*search_cwd*/));
3019eac3
DE
12904 xfree (path_to_try);
12905 if (abfd != NULL)
12906 return abfd;
12907 }
12908
12909 /* That didn't work, try debug-file-directory, which, despite its name,
12910 is a list of paths. */
12911
12912 if (*debug_file_directory == '\0')
12913 return NULL;
12914
ed2dc618
SM
12915 return try_open_dwop_file (dwarf2_per_objfile, file_name,
12916 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
12917}
12918
80626a55
DE
12919/* This function is mapped across the sections and remembers the offset and
12920 size of each of the DWO debugging sections we are interested in. */
12921
12922static void
12923dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12924{
9a3c8263 12925 struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
80626a55
DE
12926 const struct dwop_section_names *names = &dwop_section_names;
12927
12928 if (section_is_p (sectp->name, &names->abbrev_dwo))
12929 {
049412e3 12930 dwo_sections->abbrev.s.section = sectp;
80626a55
DE
12931 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12932 }
12933 else if (section_is_p (sectp->name, &names->info_dwo))
12934 {
049412e3 12935 dwo_sections->info.s.section = sectp;
80626a55
DE
12936 dwo_sections->info.size = bfd_get_section_size (sectp);
12937 }
12938 else if (section_is_p (sectp->name, &names->line_dwo))
12939 {
049412e3 12940 dwo_sections->line.s.section = sectp;
80626a55
DE
12941 dwo_sections->line.size = bfd_get_section_size (sectp);
12942 }
12943 else if (section_is_p (sectp->name, &names->loc_dwo))
12944 {
049412e3 12945 dwo_sections->loc.s.section = sectp;
80626a55
DE
12946 dwo_sections->loc.size = bfd_get_section_size (sectp);
12947 }
12948 else if (section_is_p (sectp->name, &names->macinfo_dwo))
12949 {
049412e3 12950 dwo_sections->macinfo.s.section = sectp;
80626a55
DE
12951 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12952 }
12953 else if (section_is_p (sectp->name, &names->macro_dwo))
12954 {
049412e3 12955 dwo_sections->macro.s.section = sectp;
80626a55
DE
12956 dwo_sections->macro.size = bfd_get_section_size (sectp);
12957 }
12958 else if (section_is_p (sectp->name, &names->str_dwo))
12959 {
049412e3 12960 dwo_sections->str.s.section = sectp;
80626a55
DE
12961 dwo_sections->str.size = bfd_get_section_size (sectp);
12962 }
12963 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12964 {
049412e3 12965 dwo_sections->str_offsets.s.section = sectp;
80626a55
DE
12966 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12967 }
12968 else if (section_is_p (sectp->name, &names->types_dwo))
12969 {
12970 struct dwarf2_section_info type_section;
12971
12972 memset (&type_section, 0, sizeof (type_section));
049412e3 12973 type_section.s.section = sectp;
80626a55
DE
12974 type_section.size = bfd_get_section_size (sectp);
12975 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12976 &type_section);
12977 }
12978}
12979
ab5088bf 12980/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 12981 by PER_CU. This is for the non-DWP case.
80626a55 12982 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
12983
12984static struct dwo_file *
0ac5b59e
DE
12985open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12986 const char *dwo_name, const char *comp_dir)
3019eac3 12987{
ed2dc618 12988 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
3019eac3 12989 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 12990
ed2dc618 12991 gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
80626a55
DE
12992 if (dbfd == NULL)
12993 {
b4f54984 12994 if (dwarf_read_debug)
80626a55
DE
12995 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12996 return NULL;
12997 }
263db9a1
TT
12998
12999 /* We use a unique pointer here, despite the obstack allocation,
13000 because a dwo_file needs some cleanup if it is abandoned. */
13001 dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
13002 struct dwo_file));
0ac5b59e
DE
13003 dwo_file->dwo_name = dwo_name;
13004 dwo_file->comp_dir = comp_dir;
192b62ce 13005 dwo_file->dbfd = dbfd.release ();
3019eac3 13006
192b62ce
TT
13007 bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
13008 &dwo_file->sections);
3019eac3 13009
ed2dc618
SM
13010 create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
13011 dwo_file->cus);
3019eac3 13012
263db9a1 13013 create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
ed2dc618 13014 dwo_file->sections.types, dwo_file->tus);
3019eac3 13015
b4f54984 13016 if (dwarf_read_debug)
80626a55
DE
13017 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13018
263db9a1 13019 return dwo_file.release ();
3019eac3
DE
13020}
13021
80626a55 13022/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
13023 size of each of the DWP debugging sections common to version 1 and 2 that
13024 we are interested in. */
3019eac3 13025
80626a55 13026static void
73869dc2
DE
13027dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13028 void *dwp_file_ptr)
3019eac3 13029{
9a3c8263 13030 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
80626a55
DE
13031 const struct dwop_section_names *names = &dwop_section_names;
13032 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 13033
80626a55 13034 /* Record the ELF section number for later lookup: this is what the
73869dc2 13035 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
13036 gdb_assert (elf_section_nr < dwp_file->num_sections);
13037 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 13038
80626a55
DE
13039 /* Look for specific sections that we need. */
13040 if (section_is_p (sectp->name, &names->str_dwo))
13041 {
049412e3 13042 dwp_file->sections.str.s.section = sectp;
80626a55
DE
13043 dwp_file->sections.str.size = bfd_get_section_size (sectp);
13044 }
13045 else if (section_is_p (sectp->name, &names->cu_index))
13046 {
049412e3 13047 dwp_file->sections.cu_index.s.section = sectp;
80626a55
DE
13048 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13049 }
13050 else if (section_is_p (sectp->name, &names->tu_index))
13051 {
049412e3 13052 dwp_file->sections.tu_index.s.section = sectp;
80626a55
DE
13053 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13054 }
13055}
3019eac3 13056
73869dc2
DE
13057/* This function is mapped across the sections and remembers the offset and
13058 size of each of the DWP version 2 debugging sections that we are interested
13059 in. This is split into a separate function because we don't know if we
13060 have version 1 or 2 until we parse the cu_index/tu_index sections. */
13061
13062static void
13063dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13064{
9a3c8263 13065 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
73869dc2
DE
13066 const struct dwop_section_names *names = &dwop_section_names;
13067 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13068
13069 /* Record the ELF section number for later lookup: this is what the
13070 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
13071 gdb_assert (elf_section_nr < dwp_file->num_sections);
13072 dwp_file->elf_sections[elf_section_nr] = sectp;
13073
13074 /* Look for specific sections that we need. */
13075 if (section_is_p (sectp->name, &names->abbrev_dwo))
13076 {
049412e3 13077 dwp_file->sections.abbrev.s.section = sectp;
73869dc2
DE
13078 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13079 }
13080 else if (section_is_p (sectp->name, &names->info_dwo))
13081 {
049412e3 13082 dwp_file->sections.info.s.section = sectp;
73869dc2
DE
13083 dwp_file->sections.info.size = bfd_get_section_size (sectp);
13084 }
13085 else if (section_is_p (sectp->name, &names->line_dwo))
13086 {
049412e3 13087 dwp_file->sections.line.s.section = sectp;
73869dc2
DE
13088 dwp_file->sections.line.size = bfd_get_section_size (sectp);
13089 }
13090 else if (section_is_p (sectp->name, &names->loc_dwo))
13091 {
049412e3 13092 dwp_file->sections.loc.s.section = sectp;
73869dc2
DE
13093 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13094 }
13095 else if (section_is_p (sectp->name, &names->macinfo_dwo))
13096 {
049412e3 13097 dwp_file->sections.macinfo.s.section = sectp;
73869dc2
DE
13098 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13099 }
13100 else if (section_is_p (sectp->name, &names->macro_dwo))
13101 {
049412e3 13102 dwp_file->sections.macro.s.section = sectp;
73869dc2
DE
13103 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13104 }
13105 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13106 {
049412e3 13107 dwp_file->sections.str_offsets.s.section = sectp;
73869dc2
DE
13108 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13109 }
13110 else if (section_is_p (sectp->name, &names->types_dwo))
13111 {
049412e3 13112 dwp_file->sections.types.s.section = sectp;
73869dc2
DE
13113 dwp_file->sections.types.size = bfd_get_section_size (sectp);
13114 }
13115}
13116
80626a55 13117/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 13118
80626a55
DE
13119static hashval_t
13120hash_dwp_loaded_cutus (const void *item)
13121{
9a3c8263 13122 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
3019eac3 13123
80626a55
DE
13124 /* This drops the top 32 bits of the signature, but is ok for a hash. */
13125 return dwo_unit->signature;
3019eac3
DE
13126}
13127
80626a55 13128/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 13129
80626a55
DE
13130static int
13131eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 13132{
9a3c8263
SM
13133 const struct dwo_unit *dua = (const struct dwo_unit *) a;
13134 const struct dwo_unit *dub = (const struct dwo_unit *) b;
3019eac3 13135
80626a55
DE
13136 return dua->signature == dub->signature;
13137}
3019eac3 13138
80626a55 13139/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 13140
80626a55
DE
13141static htab_t
13142allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13143{
13144 return htab_create_alloc_ex (3,
13145 hash_dwp_loaded_cutus,
13146 eq_dwp_loaded_cutus,
13147 NULL,
13148 &objfile->objfile_obstack,
13149 hashtab_obstack_allocate,
13150 dummy_obstack_deallocate);
13151}
3019eac3 13152
ab5088bf
DE
13153/* Try to open DWP file FILE_NAME.
13154 The result is the bfd handle of the file.
13155 If there is a problem finding or opening the file, return NULL.
13156 Upon success, the canonicalized path of the file is stored in the bfd,
13157 same as symfile_bfd_open. */
13158
192b62ce 13159static gdb_bfd_ref_ptr
ed2dc618
SM
13160open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13161 const char *file_name)
ab5088bf 13162{
ed2dc618
SM
13163 gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13164 1 /*is_dwp*/,
192b62ce 13165 1 /*search_cwd*/));
6ac97d4c
DE
13166 if (abfd != NULL)
13167 return abfd;
13168
13169 /* Work around upstream bug 15652.
13170 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13171 [Whether that's a "bug" is debatable, but it is getting in our way.]
13172 We have no real idea where the dwp file is, because gdb's realpath-ing
13173 of the executable's path may have discarded the needed info.
13174 [IWBN if the dwp file name was recorded in the executable, akin to
13175 .gnu_debuglink, but that doesn't exist yet.]
13176 Strip the directory from FILE_NAME and search again. */
13177 if (*debug_file_directory != '\0')
13178 {
13179 /* Don't implicitly search the current directory here.
13180 If the user wants to search "." to handle this case,
13181 it must be added to debug-file-directory. */
ed2dc618
SM
13182 return try_open_dwop_file (dwarf2_per_objfile,
13183 lbasename (file_name), 1 /*is_dwp*/,
6ac97d4c
DE
13184 0 /*search_cwd*/);
13185 }
13186
13187 return NULL;
ab5088bf
DE
13188}
13189
80626a55
DE
13190/* Initialize the use of the DWP file for the current objfile.
13191 By convention the name of the DWP file is ${objfile}.dwp.
13192 The result is NULL if it can't be found. */
a766d390 13193
400174b1 13194static std::unique_ptr<struct dwp_file>
ed2dc618 13195open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
80626a55
DE
13196{
13197 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55 13198
82bf32bc
JK
13199 /* Try to find first .dwp for the binary file before any symbolic links
13200 resolving. */
6c447423
DE
13201
13202 /* If the objfile is a debug file, find the name of the real binary
13203 file and get the name of dwp file from there. */
d721ba37 13204 std::string dwp_name;
6c447423
DE
13205 if (objfile->separate_debug_objfile_backlink != NULL)
13206 {
13207 struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13208 const char *backlink_basename = lbasename (backlink->original_name);
6c447423 13209
d721ba37 13210 dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
6c447423
DE
13211 }
13212 else
d721ba37
PA
13213 dwp_name = objfile->original_name;
13214
13215 dwp_name += ".dwp";
80626a55 13216
ed2dc618 13217 gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
82bf32bc
JK
13218 if (dbfd == NULL
13219 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13220 {
13221 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
d721ba37
PA
13222 dwp_name = objfile_name (objfile);
13223 dwp_name += ".dwp";
ed2dc618 13224 dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
82bf32bc
JK
13225 }
13226
80626a55
DE
13227 if (dbfd == NULL)
13228 {
b4f54984 13229 if (dwarf_read_debug)
d721ba37 13230 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
400174b1 13231 return std::unique_ptr<dwp_file> ();
3019eac3 13232 }
400174b1
TT
13233
13234 const char *name = bfd_get_filename (dbfd.get ());
13235 std::unique_ptr<struct dwp_file> dwp_file
13236 (new struct dwp_file (name, std::move (dbfd)));
c906108c 13237
80626a55 13238 /* +1: section 0 is unused */
192b62ce 13239 dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
80626a55
DE
13240 dwp_file->elf_sections =
13241 OBSTACK_CALLOC (&objfile->objfile_obstack,
13242 dwp_file->num_sections, asection *);
13243
400174b1
TT
13244 bfd_map_over_sections (dwp_file->dbfd.get (),
13245 dwarf2_locate_common_dwp_sections,
13246 dwp_file.get ());
80626a55 13247
400174b1
TT
13248 dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13249 0);
80626a55 13250
400174b1
TT
13251 dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13252 1);
80626a55 13253
73869dc2 13254 /* The DWP file version is stored in the hash table. Oh well. */
08302ed2
DE
13255 if (dwp_file->cus && dwp_file->tus
13256 && dwp_file->cus->version != dwp_file->tus->version)
73869dc2
DE
13257 {
13258 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 13259 pretty bizarre. We use pulongest here because that's the established
4d65956b 13260 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
13261 error (_("Dwarf Error: DWP file CU version %s doesn't match"
13262 " TU version %s [in DWP file %s]"),
13263 pulongest (dwp_file->cus->version),
d721ba37 13264 pulongest (dwp_file->tus->version), dwp_name.c_str ());
73869dc2 13265 }
08302ed2
DE
13266
13267 if (dwp_file->cus)
13268 dwp_file->version = dwp_file->cus->version;
13269 else if (dwp_file->tus)
13270 dwp_file->version = dwp_file->tus->version;
13271 else
13272 dwp_file->version = 2;
73869dc2
DE
13273
13274 if (dwp_file->version == 2)
400174b1
TT
13275 bfd_map_over_sections (dwp_file->dbfd.get (),
13276 dwarf2_locate_v2_dwp_sections,
13277 dwp_file.get ());
73869dc2 13278
19ac8c2e
DE
13279 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13280 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 13281
b4f54984 13282 if (dwarf_read_debug)
80626a55
DE
13283 {
13284 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13285 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
13286 " %s CUs, %s TUs\n",
13287 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13288 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
13289 }
13290
13291 return dwp_file;
3019eac3 13292}
c906108c 13293
ab5088bf
DE
13294/* Wrapper around open_and_init_dwp_file, only open it once. */
13295
13296static struct dwp_file *
ed2dc618 13297get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
ab5088bf
DE
13298{
13299 if (! dwarf2_per_objfile->dwp_checked)
13300 {
ed2dc618
SM
13301 dwarf2_per_objfile->dwp_file
13302 = open_and_init_dwp_file (dwarf2_per_objfile);
ab5088bf
DE
13303 dwarf2_per_objfile->dwp_checked = 1;
13304 }
400174b1 13305 return dwarf2_per_objfile->dwp_file.get ();
ab5088bf
DE
13306}
13307
80626a55
DE
13308/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13309 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13310 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 13311 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
13312 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13313
13314 This is called, for example, when wanting to read a variable with a
13315 complex location. Therefore we don't want to do file i/o for every call.
13316 Therefore we don't want to look for a DWO file on every call.
13317 Therefore we first see if we've already seen SIGNATURE in a DWP file,
13318 then we check if we've already seen DWO_NAME, and only THEN do we check
13319 for a DWO file.
13320
1c658ad5 13321 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 13322 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 13323
3019eac3 13324static struct dwo_unit *
80626a55
DE
13325lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13326 const char *dwo_name, const char *comp_dir,
13327 ULONGEST signature, int is_debug_types)
3019eac3 13328{
ed2dc618 13329 struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
3019eac3 13330 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
13331 const char *kind = is_debug_types ? "TU" : "CU";
13332 void **dwo_file_slot;
3019eac3 13333 struct dwo_file *dwo_file;
80626a55 13334 struct dwp_file *dwp_file;
cb1df416 13335
6a506a2d
DE
13336 /* First see if there's a DWP file.
13337 If we have a DWP file but didn't find the DWO inside it, don't
13338 look for the original DWO file. It makes gdb behave differently
13339 depending on whether one is debugging in the build tree. */
cf2c3c16 13340
ed2dc618 13341 dwp_file = get_dwp_file (dwarf2_per_objfile);
80626a55 13342 if (dwp_file != NULL)
cf2c3c16 13343 {
80626a55
DE
13344 const struct dwp_hash_table *dwp_htab =
13345 is_debug_types ? dwp_file->tus : dwp_file->cus;
13346
13347 if (dwp_htab != NULL)
13348 {
13349 struct dwo_unit *dwo_cutu =
ed2dc618 13350 lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
57d63ce2 13351 signature, is_debug_types);
80626a55
DE
13352
13353 if (dwo_cutu != NULL)
13354 {
b4f54984 13355 if (dwarf_read_debug)
80626a55
DE
13356 {
13357 fprintf_unfiltered (gdb_stdlog,
13358 "Virtual DWO %s %s found: @%s\n",
13359 kind, hex_string (signature),
13360 host_address_to_string (dwo_cutu));
13361 }
13362 return dwo_cutu;
13363 }
13364 }
13365 }
6a506a2d 13366 else
80626a55 13367 {
6a506a2d 13368 /* No DWP file, look for the DWO file. */
80626a55 13369
ed2dc618
SM
13370 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13371 dwo_name, comp_dir);
6a506a2d 13372 if (*dwo_file_slot == NULL)
80626a55 13373 {
6a506a2d
DE
13374 /* Read in the file and build a table of the CUs/TUs it contains. */
13375 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 13376 }
6a506a2d 13377 /* NOTE: This will be NULL if unable to open the file. */
9a3c8263 13378 dwo_file = (struct dwo_file *) *dwo_file_slot;
3019eac3 13379
6a506a2d 13380 if (dwo_file != NULL)
19c3d4c9 13381 {
6a506a2d
DE
13382 struct dwo_unit *dwo_cutu = NULL;
13383
13384 if (is_debug_types && dwo_file->tus)
13385 {
13386 struct dwo_unit find_dwo_cutu;
13387
13388 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13389 find_dwo_cutu.signature = signature;
9a3c8263
SM
13390 dwo_cutu
13391 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
6a506a2d 13392 }
33c5cd75 13393 else if (!is_debug_types && dwo_file->cus)
80626a55 13394 {
33c5cd75
DB
13395 struct dwo_unit find_dwo_cutu;
13396
13397 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13398 find_dwo_cutu.signature = signature;
13399 dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13400 &find_dwo_cutu);
6a506a2d
DE
13401 }
13402
13403 if (dwo_cutu != NULL)
13404 {
b4f54984 13405 if (dwarf_read_debug)
6a506a2d
DE
13406 {
13407 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13408 kind, dwo_name, hex_string (signature),
13409 host_address_to_string (dwo_cutu));
13410 }
13411 return dwo_cutu;
80626a55
DE
13412 }
13413 }
2e276125 13414 }
9cdd5dbd 13415
80626a55
DE
13416 /* We didn't find it. This could mean a dwo_id mismatch, or
13417 someone deleted the DWO/DWP file, or the search path isn't set up
13418 correctly to find the file. */
13419
b4f54984 13420 if (dwarf_read_debug)
80626a55
DE
13421 {
13422 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13423 kind, dwo_name, hex_string (signature));
13424 }
3019eac3 13425
6656a72d
DE
13426 /* This is a warning and not a complaint because it can be caused by
13427 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
13428 {
13429 /* Print the name of the DWP file if we looked there, helps the user
13430 better diagnose the problem. */
791afaa2 13431 std::string dwp_text;
43942612
DE
13432
13433 if (dwp_file != NULL)
791afaa2
TT
13434 dwp_text = string_printf (" [in DWP file %s]",
13435 lbasename (dwp_file->name));
43942612 13436
9d8780f0 13437 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
43942612
DE
13438 " [in module %s]"),
13439 kind, dwo_name, hex_string (signature),
791afaa2 13440 dwp_text.c_str (),
43942612 13441 this_unit->is_debug_types ? "TU" : "CU",
9d8780f0 13442 sect_offset_str (this_unit->sect_off), objfile_name (objfile));
43942612 13443 }
3019eac3 13444 return NULL;
5fb290d7
DJ
13445}
13446
80626a55
DE
13447/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13448 See lookup_dwo_cutu_unit for details. */
13449
13450static struct dwo_unit *
13451lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13452 const char *dwo_name, const char *comp_dir,
13453 ULONGEST signature)
13454{
13455 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13456}
13457
13458/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13459 See lookup_dwo_cutu_unit for details. */
13460
13461static struct dwo_unit *
13462lookup_dwo_type_unit (struct signatured_type *this_tu,
13463 const char *dwo_name, const char *comp_dir)
13464{
13465 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13466}
13467
89e63ee4
DE
13468/* Traversal function for queue_and_load_all_dwo_tus. */
13469
13470static int
13471queue_and_load_dwo_tu (void **slot, void *info)
13472{
13473 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13474 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13475 ULONGEST signature = dwo_unit->signature;
13476 struct signatured_type *sig_type =
13477 lookup_dwo_signatured_type (per_cu->cu, signature);
13478
13479 if (sig_type != NULL)
13480 {
13481 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13482
13483 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13484 a real dependency of PER_CU on SIG_TYPE. That is detected later
13485 while processing PER_CU. */
13486 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13487 load_full_type_unit (sig_cu);
13488 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13489 }
13490
13491 return 1;
13492}
13493
13494/* Queue all TUs contained in the DWO of PER_CU to be read in.
13495 The DWO may have the only definition of the type, though it may not be
13496 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
13497 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
13498
13499static void
13500queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13501{
13502 struct dwo_unit *dwo_unit;
13503 struct dwo_file *dwo_file;
13504
13505 gdb_assert (!per_cu->is_debug_types);
ed2dc618 13506 gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
89e63ee4
DE
13507 gdb_assert (per_cu->cu != NULL);
13508
13509 dwo_unit = per_cu->cu->dwo_unit;
13510 gdb_assert (dwo_unit != NULL);
13511
13512 dwo_file = dwo_unit->dwo_file;
13513 if (dwo_file->tus != NULL)
13514 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13515}
13516
3019eac3 13517/* Free all resources associated with DWO_FILE.
5dafb3d1 13518 Close the DWO file and munmap the sections. */
348e048f
DE
13519
13520static void
5dafb3d1 13521free_dwo_file (struct dwo_file *dwo_file)
348e048f 13522{
5c6fa7ab 13523 /* Note: dbfd is NULL for virtual DWO files. */
80626a55 13524 gdb_bfd_unref (dwo_file->dbfd);
348e048f 13525
3019eac3
DE
13526 VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13527}
348e048f 13528
3019eac3 13529/* Traversal function for free_dwo_files. */
2ab95328 13530
3019eac3
DE
13531static int
13532free_dwo_file_from_slot (void **slot, void *info)
13533{
13534 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
348e048f 13535
5dafb3d1 13536 free_dwo_file (dwo_file);
348e048f 13537
3019eac3
DE
13538 return 1;
13539}
348e048f 13540
3019eac3 13541/* Free all resources associated with DWO_FILES. */
348e048f 13542
3019eac3
DE
13543static void
13544free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13545{
13546 htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
348e048f 13547}
3019eac3
DE
13548\f
13549/* Read in various DIEs. */
348e048f 13550
d389af10 13551/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
13552 Inherit only the children of the DW_AT_abstract_origin DIE not being
13553 already referenced by DW_AT_abstract_origin from the children of the
13554 current DIE. */
d389af10
JK
13555
13556static void
13557inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13558{
13559 struct die_info *child_die;
791afaa2 13560 sect_offset *offsetp;
d389af10
JK
13561 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
13562 struct die_info *origin_die;
13563 /* Iterator of the ORIGIN_DIE children. */
13564 struct die_info *origin_child_die;
d389af10 13565 struct attribute *attr;
cd02d79d
PA
13566 struct dwarf2_cu *origin_cu;
13567 struct pending **origin_previous_list_in_scope;
d389af10
JK
13568
13569 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13570 if (!attr)
13571 return;
13572
cd02d79d
PA
13573 /* Note that following die references may follow to a die in a
13574 different cu. */
13575
13576 origin_cu = cu;
13577 origin_die = follow_die_ref (die, attr, &origin_cu);
13578
13579 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13580 symbols in. */
13581 origin_previous_list_in_scope = origin_cu->list_in_scope;
13582 origin_cu->list_in_scope = cu->list_in_scope;
13583
edb3359d
DJ
13584 if (die->tag != origin_die->tag
13585 && !(die->tag == DW_TAG_inlined_subroutine
13586 && origin_die->tag == DW_TAG_subprogram))
b98664d3 13587 complaint (_("DIE %s and its abstract origin %s have different tags"),
9d8780f0
SM
13588 sect_offset_str (die->sect_off),
13589 sect_offset_str (origin_die->sect_off));
d389af10 13590
791afaa2 13591 std::vector<sect_offset> offsets;
d389af10 13592
3ea89b92
PMR
13593 for (child_die = die->child;
13594 child_die && child_die->tag;
13595 child_die = sibling_die (child_die))
13596 {
13597 struct die_info *child_origin_die;
13598 struct dwarf2_cu *child_origin_cu;
13599
13600 /* We are trying to process concrete instance entries:
216f72a1 13601 DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
3ea89b92
PMR
13602 it's not relevant to our analysis here. i.e. detecting DIEs that are
13603 present in the abstract instance but not referenced in the concrete
13604 one. */
216f72a1
JK
13605 if (child_die->tag == DW_TAG_call_site
13606 || child_die->tag == DW_TAG_GNU_call_site)
3ea89b92
PMR
13607 continue;
13608
c38f313d
DJ
13609 /* For each CHILD_DIE, find the corresponding child of
13610 ORIGIN_DIE. If there is more than one layer of
13611 DW_AT_abstract_origin, follow them all; there shouldn't be,
13612 but GCC versions at least through 4.4 generate this (GCC PR
13613 40573). */
3ea89b92
PMR
13614 child_origin_die = child_die;
13615 child_origin_cu = cu;
c38f313d
DJ
13616 while (1)
13617 {
cd02d79d
PA
13618 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13619 child_origin_cu);
c38f313d
DJ
13620 if (attr == NULL)
13621 break;
cd02d79d
PA
13622 child_origin_die = follow_die_ref (child_origin_die, attr,
13623 &child_origin_cu);
c38f313d
DJ
13624 }
13625
d389af10
JK
13626 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13627 counterpart may exist. */
c38f313d 13628 if (child_origin_die != child_die)
d389af10 13629 {
edb3359d
DJ
13630 if (child_die->tag != child_origin_die->tag
13631 && !(child_die->tag == DW_TAG_inlined_subroutine
13632 && child_origin_die->tag == DW_TAG_subprogram))
b98664d3 13633 complaint (_("Child DIE %s and its abstract origin %s have "
9c541725 13634 "different tags"),
9d8780f0
SM
13635 sect_offset_str (child_die->sect_off),
13636 sect_offset_str (child_origin_die->sect_off));
c38f313d 13637 if (child_origin_die->parent != origin_die)
b98664d3 13638 complaint (_("Child DIE %s and its abstract origin %s have "
9c541725 13639 "different parents"),
9d8780f0
SM
13640 sect_offset_str (child_die->sect_off),
13641 sect_offset_str (child_origin_die->sect_off));
c38f313d 13642 else
791afaa2 13643 offsets.push_back (child_origin_die->sect_off);
d389af10 13644 }
d389af10 13645 }
791afaa2
TT
13646 std::sort (offsets.begin (), offsets.end ());
13647 sect_offset *offsets_end = offsets.data () + offsets.size ();
13648 for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
9c541725 13649 if (offsetp[-1] == *offsetp)
b98664d3 13650 complaint (_("Multiple children of DIE %s refer "
9d8780f0
SM
13651 "to DIE %s as their abstract origin"),
13652 sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
d389af10 13653
791afaa2 13654 offsetp = offsets.data ();
d389af10
JK
13655 origin_child_die = origin_die->child;
13656 while (origin_child_die && origin_child_die->tag)
13657 {
13658 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1 13659 while (offsetp < offsets_end
9c541725 13660 && *offsetp < origin_child_die->sect_off)
d389af10 13661 offsetp++;
b64f50a1 13662 if (offsetp >= offsets_end
9c541725 13663 || *offsetp > origin_child_die->sect_off)
d389af10 13664 {
adde2bff
DE
13665 /* Found that ORIGIN_CHILD_DIE is really not referenced.
13666 Check whether we're already processing ORIGIN_CHILD_DIE.
13667 This can happen with mutually referenced abstract_origins.
13668 PR 16581. */
13669 if (!origin_child_die->in_process)
13670 process_die (origin_child_die, origin_cu);
d389af10
JK
13671 }
13672 origin_child_die = sibling_die (origin_child_die);
13673 }
cd02d79d 13674 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
13675}
13676
c906108c 13677static void
e7c27a73 13678read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13679{
518817b3 13680 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a 13681 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 13682 struct context_stack *newobj;
c906108c
SS
13683 CORE_ADDR lowpc;
13684 CORE_ADDR highpc;
13685 struct die_info *child_die;
edb3359d 13686 struct attribute *attr, *call_line, *call_file;
15d034d0 13687 const char *name;
e142c38c 13688 CORE_ADDR baseaddr;
801e3a5b 13689 struct block *block;
edb3359d 13690 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
2f4732b0 13691 std::vector<struct symbol *> template_args;
34eaf542 13692 struct template_symbol *templ_func = NULL;
edb3359d
DJ
13693
13694 if (inlined_func)
13695 {
13696 /* If we do not have call site information, we can't show the
13697 caller of this inlined function. That's too confusing, so
13698 only use the scope for local variables. */
13699 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13700 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13701 if (call_line == NULL || call_file == NULL)
13702 {
13703 read_lexical_block_scope (die, cu);
13704 return;
13705 }
13706 }
c906108c 13707
e142c38c
DJ
13708 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13709
94af9270 13710 name = dwarf2_name (die, cu);
c906108c 13711
e8d05480
JB
13712 /* Ignore functions with missing or empty names. These are actually
13713 illegal according to the DWARF standard. */
13714 if (name == NULL)
13715 {
b98664d3 13716 complaint (_("missing name for subprogram DIE at %s"),
9d8780f0 13717 sect_offset_str (die->sect_off));
e8d05480
JB
13718 return;
13719 }
13720
13721 /* Ignore functions with missing or invalid low and high pc attributes. */
3a2b436a 13722 if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
e385593e 13723 <= PC_BOUNDS_INVALID)
e8d05480 13724 {
ae4d0c03
PM
13725 attr = dwarf2_attr (die, DW_AT_external, cu);
13726 if (!attr || !DW_UNSND (attr))
b98664d3 13727 complaint (_("cannot get low and high bounds "
9d8780f0
SM
13728 "for subprogram DIE at %s"),
13729 sect_offset_str (die->sect_off));
e8d05480
JB
13730 return;
13731 }
c906108c 13732
3e29f34a
MR
13733 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13734 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 13735
34eaf542
TT
13736 /* If we have any template arguments, then we must allocate a
13737 different sort of symbol. */
13738 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13739 {
13740 if (child_die->tag == DW_TAG_template_type_param
13741 || child_die->tag == DW_TAG_template_value_param)
13742 {
e623cf5d 13743 templ_func = allocate_template_symbol (objfile);
cf724bc9 13744 templ_func->subclass = SYMBOL_TEMPLATE;
34eaf542
TT
13745 break;
13746 }
13747 }
13748
804d2729 13749 newobj = cu->builder->push_context (0, lowpc);
5e2db402
TT
13750 newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13751 (struct symbol *) templ_func);
4c2df51b 13752
4cecd739
DJ
13753 /* If there is a location expression for DW_AT_frame_base, record
13754 it. */
e142c38c 13755 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 13756 if (attr)
fe978cb0 13757 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 13758
63e43d3a
PMR
13759 /* If there is a location for the static link, record it. */
13760 newobj->static_link = NULL;
13761 attr = dwarf2_attr (die, DW_AT_static_link, cu);
13762 if (attr)
13763 {
224c3ddb
SM
13764 newobj->static_link
13765 = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
63e43d3a
PMR
13766 attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13767 }
13768
804d2729 13769 cu->list_in_scope = cu->builder->get_local_symbols ();
c906108c 13770
639d11d3 13771 if (die->child != NULL)
c906108c 13772 {
639d11d3 13773 child_die = die->child;
c906108c
SS
13774 while (child_die && child_die->tag)
13775 {
34eaf542
TT
13776 if (child_die->tag == DW_TAG_template_type_param
13777 || child_die->tag == DW_TAG_template_value_param)
13778 {
13779 struct symbol *arg = new_symbol (child_die, NULL, cu);
13780
f1078f66 13781 if (arg != NULL)
2f4732b0 13782 template_args.push_back (arg);
34eaf542
TT
13783 }
13784 else
13785 process_die (child_die, cu);
c906108c
SS
13786 child_die = sibling_die (child_die);
13787 }
13788 }
13789
d389af10
JK
13790 inherit_abstract_dies (die, cu);
13791
4a811a97
UW
13792 /* If we have a DW_AT_specification, we might need to import using
13793 directives from the context of the specification DIE. See the
13794 comment in determine_prefix. */
13795 if (cu->language == language_cplus
13796 && dwarf2_attr (die, DW_AT_specification, cu))
13797 {
13798 struct dwarf2_cu *spec_cu = cu;
13799 struct die_info *spec_die = die_specification (die, &spec_cu);
13800
13801 while (spec_die)
13802 {
13803 child_die = spec_die->child;
13804 while (child_die && child_die->tag)
13805 {
13806 if (child_die->tag == DW_TAG_imported_module)
13807 process_die (child_die, spec_cu);
13808 child_die = sibling_die (child_die);
13809 }
13810
13811 /* In some cases, GCC generates specification DIEs that
13812 themselves contain DW_AT_specification attributes. */
13813 spec_die = die_specification (spec_die, &spec_cu);
13814 }
13815 }
13816
804d2729 13817 struct context_stack cstk = cu->builder->pop_context ();
c906108c 13818 /* Make a block for the local symbols within. */
804d2729
TT
13819 block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13820 cstk.static_link, lowpc, highpc);
801e3a5b 13821
df8a16a1 13822 /* For C++, set the block's scope. */
45280282
IB
13823 if ((cu->language == language_cplus
13824 || cu->language == language_fortran
c44af4eb
TT
13825 || cu->language == language_d
13826 || cu->language == language_rust)
4d4ec4e5 13827 && cu->processing_has_namespace_info)
195a3f6c
TT
13828 block_set_scope (block, determine_prefix (die, cu),
13829 &objfile->objfile_obstack);
df8a16a1 13830
801e3a5b
JB
13831 /* If we have address ranges, record them. */
13832 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 13833
a60f3166 13834 gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
3e29f34a 13835
34eaf542 13836 /* Attach template arguments to function. */
2f4732b0 13837 if (!template_args.empty ())
34eaf542
TT
13838 {
13839 gdb_assert (templ_func != NULL);
13840
2f4732b0 13841 templ_func->n_template_arguments = template_args.size ();
34eaf542 13842 templ_func->template_arguments
8d749320
SM
13843 = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13844 templ_func->n_template_arguments);
34eaf542 13845 memcpy (templ_func->template_arguments,
2f4732b0 13846 template_args.data (),
34eaf542 13847 (templ_func->n_template_arguments * sizeof (struct symbol *)));
3e1d3d8c
TT
13848
13849 /* Make sure that the symtab is set on the new symbols. Even
13850 though they don't appear in this symtab directly, other parts
13851 of gdb assume that symbols do, and this is reasonably
13852 true. */
8634679f 13853 for (symbol *sym : template_args)
3e1d3d8c 13854 symbol_set_symtab (sym, symbol_symtab (templ_func));
34eaf542
TT
13855 }
13856
208d8187
JB
13857 /* In C++, we can have functions nested inside functions (e.g., when
13858 a function declares a class that has methods). This means that
13859 when we finish processing a function scope, we may need to go
13860 back to building a containing block's symbol lists. */
804d2729
TT
13861 *cu->builder->get_local_symbols () = cstk.locals;
13862 cu->builder->set_local_using_directives (cstk.local_using_directives);
208d8187 13863
921e78cf
JB
13864 /* If we've finished processing a top-level function, subsequent
13865 symbols go in the file symbol list. */
804d2729
TT
13866 if (cu->builder->outermost_context_p ())
13867 cu->list_in_scope = cu->builder->get_file_symbols ();
c906108c
SS
13868}
13869
13870/* Process all the DIES contained within a lexical block scope. Start
13871 a new scope, process the dies, and then close the scope. */
13872
13873static void
e7c27a73 13874read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13875{
518817b3 13876 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a 13877 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
13878 CORE_ADDR lowpc, highpc;
13879 struct die_info *child_die;
e142c38c
DJ
13880 CORE_ADDR baseaddr;
13881
13882 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
13883
13884 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
13885 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13886 as multiple lexical blocks? Handling children in a sane way would
6e70227d 13887 be nasty. Might be easier to properly extend generic blocks to
af34e669 13888 describe ranges. */
e385593e
JK
13889 switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13890 {
13891 case PC_BOUNDS_NOT_PRESENT:
13892 /* DW_TAG_lexical_block has no attributes, process its children as if
13893 there was no wrapping by that DW_TAG_lexical_block.
13894 GCC does no longer produces such DWARF since GCC r224161. */
13895 for (child_die = die->child;
13896 child_die != NULL && child_die->tag;
13897 child_die = sibling_die (child_die))
13898 process_die (child_die, cu);
13899 return;
13900 case PC_BOUNDS_INVALID:
13901 return;
13902 }
3e29f34a
MR
13903 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13904 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 13905
804d2729 13906 cu->builder->push_context (0, lowpc);
639d11d3 13907 if (die->child != NULL)
c906108c 13908 {
639d11d3 13909 child_die = die->child;
c906108c
SS
13910 while (child_die && child_die->tag)
13911 {
e7c27a73 13912 process_die (child_die, cu);
c906108c
SS
13913 child_die = sibling_die (child_die);
13914 }
13915 }
3ea89b92 13916 inherit_abstract_dies (die, cu);
804d2729 13917 struct context_stack cstk = cu->builder->pop_context ();
c906108c 13918
804d2729
TT
13919 if (*cu->builder->get_local_symbols () != NULL
13920 || (*cu->builder->get_local_using_directives ()) != NULL)
c906108c 13921 {
801e3a5b 13922 struct block *block
804d2729
TT
13923 = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13924 cstk.start_addr, highpc);
801e3a5b
JB
13925
13926 /* Note that recording ranges after traversing children, as we
13927 do here, means that recording a parent's ranges entails
13928 walking across all its children's ranges as they appear in
13929 the address map, which is quadratic behavior.
13930
13931 It would be nicer to record the parent's ranges before
13932 traversing its children, simply overriding whatever you find
13933 there. But since we don't even decide whether to create a
13934 block until after we've traversed its children, that's hard
13935 to do. */
13936 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 13937 }
804d2729
TT
13938 *cu->builder->get_local_symbols () = cstk.locals;
13939 cu->builder->set_local_using_directives (cstk.local_using_directives);
c906108c
SS
13940}
13941
216f72a1 13942/* Read in DW_TAG_call_site and insert it to CU->call_site_htab. */
96408a79
SA
13943
13944static void
13945read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13946{
518817b3 13947 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
96408a79
SA
13948 struct gdbarch *gdbarch = get_objfile_arch (objfile);
13949 CORE_ADDR pc, baseaddr;
13950 struct attribute *attr;
13951 struct call_site *call_site, call_site_local;
13952 void **slot;
13953 int nparams;
13954 struct die_info *child_die;
13955
13956 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13957
216f72a1
JK
13958 attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13959 if (attr == NULL)
13960 {
13961 /* This was a pre-DWARF-5 GNU extension alias
13962 for DW_AT_call_return_pc. */
13963 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13964 }
96408a79
SA
13965 if (!attr)
13966 {
b98664d3 13967 complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
9d8780f0
SM
13968 "DIE %s [in module %s]"),
13969 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79
SA
13970 return;
13971 }
31aa7e4e 13972 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 13973 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
13974
13975 if (cu->call_site_htab == NULL)
13976 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13977 NULL, &objfile->objfile_obstack,
13978 hashtab_obstack_allocate, NULL);
13979 call_site_local.pc = pc;
13980 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13981 if (*slot != NULL)
13982 {
b98664d3 13983 complaint (_("Duplicate PC %s for DW_TAG_call_site "
9d8780f0
SM
13984 "DIE %s [in module %s]"),
13985 paddress (gdbarch, pc), sect_offset_str (die->sect_off),
4262abfb 13986 objfile_name (objfile));
96408a79
SA
13987 return;
13988 }
13989
13990 /* Count parameters at the caller. */
13991
13992 nparams = 0;
13993 for (child_die = die->child; child_die && child_die->tag;
13994 child_die = sibling_die (child_die))
13995 {
216f72a1
JK
13996 if (child_die->tag != DW_TAG_call_site_parameter
13997 && child_die->tag != DW_TAG_GNU_call_site_parameter)
96408a79 13998 {
b98664d3 13999 complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
9d8780f0
SM
14000 "DW_TAG_call_site child DIE %s [in module %s]"),
14001 child_die->tag, sect_offset_str (child_die->sect_off),
4262abfb 14002 objfile_name (objfile));
96408a79
SA
14003 continue;
14004 }
14005
14006 nparams++;
14007 }
14008
224c3ddb
SM
14009 call_site
14010 = ((struct call_site *)
14011 obstack_alloc (&objfile->objfile_obstack,
14012 sizeof (*call_site)
14013 + (sizeof (*call_site->parameter) * (nparams - 1))));
96408a79
SA
14014 *slot = call_site;
14015 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14016 call_site->pc = pc;
14017
216f72a1
JK
14018 if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14019 || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
96408a79
SA
14020 {
14021 struct die_info *func_die;
14022
14023 /* Skip also over DW_TAG_inlined_subroutine. */
14024 for (func_die = die->parent;
14025 func_die && func_die->tag != DW_TAG_subprogram
14026 && func_die->tag != DW_TAG_subroutine_type;
14027 func_die = func_die->parent);
14028
216f72a1
JK
14029 /* DW_AT_call_all_calls is a superset
14030 of DW_AT_call_all_tail_calls. */
96408a79 14031 if (func_die
216f72a1 14032 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
96408a79 14033 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
216f72a1 14034 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
96408a79
SA
14035 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14036 {
14037 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14038 not complete. But keep CALL_SITE for look ups via call_site_htab,
14039 both the initial caller containing the real return address PC and
14040 the final callee containing the current PC of a chain of tail
14041 calls do not need to have the tail call list complete. But any
14042 function candidate for a virtual tail call frame searched via
14043 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14044 determined unambiguously. */
14045 }
14046 else
14047 {
14048 struct type *func_type = NULL;
14049
14050 if (func_die)
14051 func_type = get_die_type (func_die, cu);
14052 if (func_type != NULL)
14053 {
14054 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14055
14056 /* Enlist this call site to the function. */
14057 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14058 TYPE_TAIL_CALL_LIST (func_type) = call_site;
14059 }
14060 else
b98664d3 14061 complaint (_("Cannot find function owning DW_TAG_call_site "
9d8780f0
SM
14062 "DIE %s [in module %s]"),
14063 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79
SA
14064 }
14065 }
14066
216f72a1
JK
14067 attr = dwarf2_attr (die, DW_AT_call_target, cu);
14068 if (attr == NULL)
14069 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14070 if (attr == NULL)
14071 attr = dwarf2_attr (die, DW_AT_call_origin, cu);
96408a79 14072 if (attr == NULL)
216f72a1
JK
14073 {
14074 /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin. */
14075 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14076 }
96408a79
SA
14077 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14078 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14079 /* Keep NULL DWARF_BLOCK. */;
14080 else if (attr_form_is_block (attr))
14081 {
14082 struct dwarf2_locexpr_baton *dlbaton;
14083
8d749320 14084 dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
96408a79
SA
14085 dlbaton->data = DW_BLOCK (attr)->data;
14086 dlbaton->size = DW_BLOCK (attr)->size;
14087 dlbaton->per_cu = cu->per_cu;
14088
14089 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14090 }
7771576e 14091 else if (attr_form_is_ref (attr))
96408a79 14092 {
96408a79
SA
14093 struct dwarf2_cu *target_cu = cu;
14094 struct die_info *target_die;
14095
ac9ec31b 14096 target_die = follow_die_ref (die, attr, &target_cu);
518817b3 14097 gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
96408a79
SA
14098 if (die_is_declaration (target_die, target_cu))
14099 {
7d45c7c3 14100 const char *target_physname;
9112db09
JK
14101
14102 /* Prefer the mangled name; otherwise compute the demangled one. */
73b9be8b 14103 target_physname = dw2_linkage_name (target_die, target_cu);
7d45c7c3 14104 if (target_physname == NULL)
9112db09 14105 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79 14106 if (target_physname == NULL)
b98664d3 14107 complaint (_("DW_AT_call_target target DIE has invalid "
9d8780f0
SM
14108 "physname, for referencing DIE %s [in module %s]"),
14109 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79 14110 else
7d455152 14111 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
14112 }
14113 else
14114 {
14115 CORE_ADDR lowpc;
14116
14117 /* DW_AT_entry_pc should be preferred. */
3a2b436a 14118 if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
e385593e 14119 <= PC_BOUNDS_INVALID)
b98664d3 14120 complaint (_("DW_AT_call_target target DIE has invalid "
9d8780f0
SM
14121 "low pc, for referencing DIE %s [in module %s]"),
14122 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79 14123 else
3e29f34a
MR
14124 {
14125 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14126 SET_FIELD_PHYSADDR (call_site->target, lowpc);
14127 }
96408a79
SA
14128 }
14129 }
14130 else
b98664d3 14131 complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
9d8780f0
SM
14132 "block nor reference, for DIE %s [in module %s]"),
14133 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79
SA
14134
14135 call_site->per_cu = cu->per_cu;
14136
14137 for (child_die = die->child;
14138 child_die && child_die->tag;
14139 child_die = sibling_die (child_die))
14140 {
96408a79 14141 struct call_site_parameter *parameter;
1788b2d3 14142 struct attribute *loc, *origin;
96408a79 14143
216f72a1
JK
14144 if (child_die->tag != DW_TAG_call_site_parameter
14145 && child_die->tag != DW_TAG_GNU_call_site_parameter)
96408a79
SA
14146 {
14147 /* Already printed the complaint above. */
14148 continue;
14149 }
14150
14151 gdb_assert (call_site->parameter_count < nparams);
14152 parameter = &call_site->parameter[call_site->parameter_count];
14153
1788b2d3
JK
14154 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14155 specifies DW_TAG_formal_parameter. Value of the data assumed for the
216f72a1 14156 register is contained in DW_AT_call_value. */
96408a79 14157
24c5c679 14158 loc = dwarf2_attr (child_die, DW_AT_location, cu);
216f72a1
JK
14159 origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14160 if (origin == NULL)
14161 {
14162 /* This was a pre-DWARF-5 GNU extension alias
14163 for DW_AT_call_parameter. */
14164 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14165 }
7771576e 14166 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3 14167 {
1788b2d3 14168 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
9c541725
PA
14169
14170 sect_offset sect_off
14171 = (sect_offset) dwarf2_get_ref_die_offset (origin);
14172 if (!offset_in_cu_p (&cu->header, sect_off))
d76b7dbc
JK
14173 {
14174 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14175 binding can be done only inside one CU. Such referenced DIE
14176 therefore cannot be even moved to DW_TAG_partial_unit. */
b98664d3 14177 complaint (_("DW_AT_call_parameter offset is not in CU for "
9d8780f0
SM
14178 "DW_TAG_call_site child DIE %s [in module %s]"),
14179 sect_offset_str (child_die->sect_off),
9c541725 14180 objfile_name (objfile));
d76b7dbc
JK
14181 continue;
14182 }
9c541725
PA
14183 parameter->u.param_cu_off
14184 = (cu_offset) (sect_off - cu->header.sect_off);
1788b2d3
JK
14185 }
14186 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79 14187 {
b98664d3 14188 complaint (_("No DW_FORM_block* DW_AT_location for "
9d8780f0
SM
14189 "DW_TAG_call_site child DIE %s [in module %s]"),
14190 sect_offset_str (child_die->sect_off), objfile_name (objfile));
96408a79
SA
14191 continue;
14192 }
24c5c679 14193 else
96408a79 14194 {
24c5c679
JK
14195 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14196 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14197 if (parameter->u.dwarf_reg != -1)
14198 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14199 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14200 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14201 &parameter->u.fb_offset))
14202 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14203 else
14204 {
b98664d3 14205 complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
24c5c679 14206 "for DW_FORM_block* DW_AT_location is supported for "
9d8780f0 14207 "DW_TAG_call_site child DIE %s "
24c5c679 14208 "[in module %s]"),
9d8780f0 14209 sect_offset_str (child_die->sect_off),
9c541725 14210 objfile_name (objfile));
24c5c679
JK
14211 continue;
14212 }
96408a79
SA
14213 }
14214
216f72a1
JK
14215 attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14216 if (attr == NULL)
14217 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
96408a79
SA
14218 if (!attr_form_is_block (attr))
14219 {
b98664d3 14220 complaint (_("No DW_FORM_block* DW_AT_call_value for "
9d8780f0
SM
14221 "DW_TAG_call_site child DIE %s [in module %s]"),
14222 sect_offset_str (child_die->sect_off),
9c541725 14223 objfile_name (objfile));
96408a79
SA
14224 continue;
14225 }
14226 parameter->value = DW_BLOCK (attr)->data;
14227 parameter->value_size = DW_BLOCK (attr)->size;
14228
14229 /* Parameters are not pre-cleared by memset above. */
14230 parameter->data_value = NULL;
14231 parameter->data_value_size = 0;
14232 call_site->parameter_count++;
14233
216f72a1
JK
14234 attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14235 if (attr == NULL)
14236 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
96408a79
SA
14237 if (attr)
14238 {
14239 if (!attr_form_is_block (attr))
b98664d3 14240 complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
9d8780f0
SM
14241 "DW_TAG_call_site child DIE %s [in module %s]"),
14242 sect_offset_str (child_die->sect_off),
9c541725 14243 objfile_name (objfile));
96408a79
SA
14244 else
14245 {
14246 parameter->data_value = DW_BLOCK (attr)->data;
14247 parameter->data_value_size = DW_BLOCK (attr)->size;
14248 }
14249 }
14250 }
14251}
14252
71a3c369
TT
14253/* Helper function for read_variable. If DIE represents a virtual
14254 table, then return the type of the concrete object that is
14255 associated with the virtual table. Otherwise, return NULL. */
14256
14257static struct type *
14258rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14259{
14260 struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14261 if (attr == NULL)
14262 return NULL;
14263
14264 /* Find the type DIE. */
14265 struct die_info *type_die = NULL;
14266 struct dwarf2_cu *type_cu = cu;
14267
14268 if (attr_form_is_ref (attr))
14269 type_die = follow_die_ref (die, attr, &type_cu);
14270 if (type_die == NULL)
14271 return NULL;
14272
14273 if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14274 return NULL;
14275 return die_containing_type (type_die, type_cu);
14276}
14277
14278/* Read a variable (DW_TAG_variable) DIE and create a new symbol. */
14279
14280static void
14281read_variable (struct die_info *die, struct dwarf2_cu *cu)
14282{
14283 struct rust_vtable_symbol *storage = NULL;
14284
14285 if (cu->language == language_rust)
14286 {
14287 struct type *containing_type = rust_containing_type (die, cu);
14288
14289 if (containing_type != NULL)
14290 {
518817b3 14291 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
71a3c369
TT
14292
14293 storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14294 struct rust_vtable_symbol);
14295 initialize_objfile_symbol (storage);
14296 storage->concrete_type = containing_type;
cf724bc9 14297 storage->subclass = SYMBOL_RUST_VTABLE;
71a3c369
TT
14298 }
14299 }
14300
e4a62c65
TV
14301 struct symbol *res = new_symbol (die, NULL, cu, storage);
14302 struct attribute *abstract_origin
14303 = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14304 struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14305 if (res == NULL && loc && abstract_origin)
14306 {
14307 /* We have a variable without a name, but with a location and an abstract
14308 origin. This may be a concrete instance of an abstract variable
14309 referenced from an DW_OP_GNU_variable_value, so save it to find it back
14310 later. */
14311 struct dwarf2_cu *origin_cu = cu;
14312 struct die_info *origin_die
14313 = follow_die_ref (die, abstract_origin, &origin_cu);
14314 dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14315 dpo->abstract_to_concrete[origin_die].push_back (die);
14316 }
71a3c369
TT
14317}
14318
43988095
JK
14319/* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14320 reading .debug_rnglists.
14321 Callback's type should be:
14322 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14323 Return true if the attributes are present and valid, otherwise,
14324 return false. */
14325
14326template <typename Callback>
14327static bool
14328dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14329 Callback &&callback)
14330{
ed2dc618 14331 struct dwarf2_per_objfile *dwarf2_per_objfile
518817b3 14332 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 14333 struct objfile *objfile = dwarf2_per_objfile->objfile;
43988095 14334 bfd *obfd = objfile->obfd;
43988095
JK
14335 /* Base address selection entry. */
14336 CORE_ADDR base;
14337 int found_base;
43988095 14338 const gdb_byte *buffer;
43988095
JK
14339 CORE_ADDR baseaddr;
14340 bool overflow = false;
14341
14342 found_base = cu->base_known;
14343 base = cu->base_address;
14344
14345 dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14346 if (offset >= dwarf2_per_objfile->rnglists.size)
14347 {
b98664d3 14348 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
43988095
JK
14349 offset);
14350 return false;
14351 }
14352 buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14353
14354 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14355
14356 while (1)
14357 {
7814882a
JK
14358 /* Initialize it due to a false compiler warning. */
14359 CORE_ADDR range_beginning = 0, range_end = 0;
43988095
JK
14360 const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14361 + dwarf2_per_objfile->rnglists.size);
14362 unsigned int bytes_read;
14363
14364 if (buffer == buf_end)
14365 {
14366 overflow = true;
14367 break;
14368 }
14369 const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14370 switch (rlet)
14371 {
14372 case DW_RLE_end_of_list:
14373 break;
14374 case DW_RLE_base_address:
14375 if (buffer + cu->header.addr_size > buf_end)
14376 {
14377 overflow = true;
14378 break;
14379 }
14380 base = read_address (obfd, buffer, cu, &bytes_read);
14381 found_base = 1;
14382 buffer += bytes_read;
14383 break;
14384 case DW_RLE_start_length:
14385 if (buffer + cu->header.addr_size > buf_end)
14386 {
14387 overflow = true;
14388 break;
14389 }
14390 range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14391 buffer += bytes_read;
14392 range_end = (range_beginning
14393 + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14394 buffer += bytes_read;
14395 if (buffer > buf_end)
14396 {
14397 overflow = true;
14398 break;
14399 }
14400 break;
14401 case DW_RLE_offset_pair:
14402 range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14403 buffer += bytes_read;
14404 if (buffer > buf_end)
14405 {
14406 overflow = true;
14407 break;
14408 }
14409 range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14410 buffer += bytes_read;
14411 if (buffer > buf_end)
14412 {
14413 overflow = true;
14414 break;
14415 }
14416 break;
14417 case DW_RLE_start_end:
14418 if (buffer + 2 * cu->header.addr_size > buf_end)
14419 {
14420 overflow = true;
14421 break;
14422 }
14423 range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14424 buffer += bytes_read;
14425 range_end = read_address (obfd, buffer, cu, &bytes_read);
14426 buffer += bytes_read;
14427 break;
14428 default:
b98664d3 14429 complaint (_("Invalid .debug_rnglists data (no base address)"));
43988095
JK
14430 return false;
14431 }
14432 if (rlet == DW_RLE_end_of_list || overflow)
14433 break;
14434 if (rlet == DW_RLE_base_address)
14435 continue;
14436
14437 if (!found_base)
14438 {
14439 /* We have no valid base address for the ranges
14440 data. */
b98664d3 14441 complaint (_("Invalid .debug_rnglists data (no base address)"));
43988095
JK
14442 return false;
14443 }
14444
14445 if (range_beginning > range_end)
14446 {
14447 /* Inverted range entries are invalid. */
b98664d3 14448 complaint (_("Invalid .debug_rnglists data (inverted range)"));
43988095
JK
14449 return false;
14450 }
14451
14452 /* Empty range entries have no effect. */
14453 if (range_beginning == range_end)
14454 continue;
14455
14456 range_beginning += base;
14457 range_end += base;
14458
14459 /* A not-uncommon case of bad debug info.
14460 Don't pollute the addrmap with bad data. */
14461 if (range_beginning + baseaddr == 0
14462 && !dwarf2_per_objfile->has_section_at_zero)
14463 {
b98664d3 14464 complaint (_(".debug_rnglists entry has start address of zero"
43988095
JK
14465 " [in module %s]"), objfile_name (objfile));
14466 continue;
14467 }
14468
14469 callback (range_beginning, range_end);
14470 }
14471
14472 if (overflow)
14473 {
b98664d3 14474 complaint (_("Offset %d is not terminated "
43988095
JK
14475 "for DW_AT_ranges attribute"),
14476 offset);
14477 return false;
14478 }
14479
14480 return true;
14481}
14482
14483/* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14484 Callback's type should be:
14485 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
5f46c5a5 14486 Return 1 if the attributes are present and valid, otherwise, return 0. */
43039443 14487
43988095 14488template <typename Callback>
43039443 14489static int
5f46c5a5 14490dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
43988095 14491 Callback &&callback)
43039443 14492{
ed2dc618 14493 struct dwarf2_per_objfile *dwarf2_per_objfile
518817b3 14494 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 14495 struct objfile *objfile = dwarf2_per_objfile->objfile;
43039443
JK
14496 struct comp_unit_head *cu_header = &cu->header;
14497 bfd *obfd = objfile->obfd;
14498 unsigned int addr_size = cu_header->addr_size;
14499 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14500 /* Base address selection entry. */
14501 CORE_ADDR base;
14502 int found_base;
14503 unsigned int dummy;
d521ce57 14504 const gdb_byte *buffer;
ff013f42 14505 CORE_ADDR baseaddr;
43039443 14506
43988095
JK
14507 if (cu_header->version >= 5)
14508 return dwarf2_rnglists_process (offset, cu, callback);
14509
d00adf39
DE
14510 found_base = cu->base_known;
14511 base = cu->base_address;
43039443 14512
be391dca 14513 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 14514 if (offset >= dwarf2_per_objfile->ranges.size)
43039443 14515 {
b98664d3 14516 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
43039443
JK
14517 offset);
14518 return 0;
14519 }
dce234bc 14520 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443 14521
e7030f15 14522 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 14523
43039443
JK
14524 while (1)
14525 {
14526 CORE_ADDR range_beginning, range_end;
14527
14528 range_beginning = read_address (obfd, buffer, cu, &dummy);
14529 buffer += addr_size;
14530 range_end = read_address (obfd, buffer, cu, &dummy);
14531 buffer += addr_size;
14532 offset += 2 * addr_size;
14533
14534 /* An end of list marker is a pair of zero addresses. */
14535 if (range_beginning == 0 && range_end == 0)
14536 /* Found the end of list entry. */
14537 break;
14538
14539 /* Each base address selection entry is a pair of 2 values.
14540 The first is the largest possible address, the second is
14541 the base address. Check for a base address here. */
14542 if ((range_beginning & mask) == mask)
14543 {
28d2bfb9
AB
14544 /* If we found the largest possible address, then we already
14545 have the base address in range_end. */
14546 base = range_end;
43039443
JK
14547 found_base = 1;
14548 continue;
14549 }
14550
14551 if (!found_base)
14552 {
14553 /* We have no valid base address for the ranges
14554 data. */
b98664d3 14555 complaint (_("Invalid .debug_ranges data (no base address)"));
43039443
JK
14556 return 0;
14557 }
14558
9277c30c
UW
14559 if (range_beginning > range_end)
14560 {
14561 /* Inverted range entries are invalid. */
b98664d3 14562 complaint (_("Invalid .debug_ranges data (inverted range)"));
9277c30c
UW
14563 return 0;
14564 }
14565
14566 /* Empty range entries have no effect. */
14567 if (range_beginning == range_end)
14568 continue;
14569
43039443
JK
14570 range_beginning += base;
14571 range_end += base;
14572
01093045
DE
14573 /* A not-uncommon case of bad debug info.
14574 Don't pollute the addrmap with bad data. */
14575 if (range_beginning + baseaddr == 0
14576 && !dwarf2_per_objfile->has_section_at_zero)
14577 {
b98664d3 14578 complaint (_(".debug_ranges entry has start address of zero"
4262abfb 14579 " [in module %s]"), objfile_name (objfile));
01093045
DE
14580 continue;
14581 }
14582
5f46c5a5
JK
14583 callback (range_beginning, range_end);
14584 }
14585
14586 return 1;
14587}
14588
14589/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14590 Return 1 if the attributes are present and valid, otherwise, return 0.
14591 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
14592
14593static int
14594dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14595 CORE_ADDR *high_return, struct dwarf2_cu *cu,
14596 struct partial_symtab *ranges_pst)
14597{
518817b3 14598 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
5f46c5a5
JK
14599 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14600 const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14601 SECT_OFF_TEXT (objfile));
14602 int low_set = 0;
14603 CORE_ADDR low = 0;
14604 CORE_ADDR high = 0;
14605 int retval;
14606
14607 retval = dwarf2_ranges_process (offset, cu,
14608 [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14609 {
9277c30c 14610 if (ranges_pst != NULL)
3e29f34a
MR
14611 {
14612 CORE_ADDR lowpc;
14613 CORE_ADDR highpc;
14614
79748972
TT
14615 lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14616 range_beginning + baseaddr)
14617 - baseaddr);
14618 highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14619 range_end + baseaddr)
14620 - baseaddr);
3e29f34a
MR
14621 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14622 ranges_pst);
14623 }
ff013f42 14624
43039443
JK
14625 /* FIXME: This is recording everything as a low-high
14626 segment of consecutive addresses. We should have a
14627 data structure for discontiguous block ranges
14628 instead. */
14629 if (! low_set)
14630 {
14631 low = range_beginning;
14632 high = range_end;
14633 low_set = 1;
14634 }
14635 else
14636 {
14637 if (range_beginning < low)
14638 low = range_beginning;
14639 if (range_end > high)
14640 high = range_end;
14641 }
5f46c5a5
JK
14642 });
14643 if (!retval)
14644 return 0;
43039443
JK
14645
14646 if (! low_set)
14647 /* If the first entry is an end-of-list marker, the range
14648 describes an empty scope, i.e. no instructions. */
14649 return 0;
14650
14651 if (low_return)
14652 *low_return = low;
14653 if (high_return)
14654 *high_return = high;
14655 return 1;
14656}
14657
3a2b436a
JK
14658/* Get low and high pc attributes from a die. See enum pc_bounds_kind
14659 definition for the return value. *LOWPC and *HIGHPC are set iff
e385593e 14660 neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned. */
380bca97 14661
3a2b436a 14662static enum pc_bounds_kind
af34e669 14663dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
14664 CORE_ADDR *highpc, struct dwarf2_cu *cu,
14665 struct partial_symtab *pst)
c906108c 14666{
518817b3
SM
14667 struct dwarf2_per_objfile *dwarf2_per_objfile
14668 = cu->per_cu->dwarf2_per_objfile;
c906108c 14669 struct attribute *attr;
91da1414 14670 struct attribute *attr_high;
af34e669
DJ
14671 CORE_ADDR low = 0;
14672 CORE_ADDR high = 0;
e385593e 14673 enum pc_bounds_kind ret;
c906108c 14674
91da1414
MW
14675 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14676 if (attr_high)
af34e669 14677 {
e142c38c 14678 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 14679 if (attr)
91da1414 14680 {
31aa7e4e
JB
14681 low = attr_value_as_address (attr);
14682 high = attr_value_as_address (attr_high);
14683 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14684 high += low;
91da1414 14685 }
af34e669
DJ
14686 else
14687 /* Found high w/o low attribute. */
e385593e 14688 return PC_BOUNDS_INVALID;
af34e669
DJ
14689
14690 /* Found consecutive range of addresses. */
3a2b436a 14691 ret = PC_BOUNDS_HIGH_LOW;
af34e669 14692 }
c906108c 14693 else
af34e669 14694 {
e142c38c 14695 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
14696 if (attr != NULL)
14697 {
ab435259
DE
14698 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14699 We take advantage of the fact that DW_AT_ranges does not appear
14700 in DW_TAG_compile_unit of DWO files. */
14701 int need_ranges_base = die->tag != DW_TAG_compile_unit;
14702 unsigned int ranges_offset = (DW_UNSND (attr)
14703 + (need_ranges_base
14704 ? cu->ranges_base
14705 : 0));
2e3cf129 14706
af34e669 14707 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 14708 .debug_ranges section. */
2e3cf129 14709 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
e385593e 14710 return PC_BOUNDS_INVALID;
43039443 14711 /* Found discontinuous range of addresses. */
3a2b436a 14712 ret = PC_BOUNDS_RANGES;
af34e669 14713 }
e385593e
JK
14714 else
14715 return PC_BOUNDS_NOT_PRESENT;
af34e669 14716 }
c906108c 14717
48fbe735 14718 /* partial_die_info::read has also the strict LOW < HIGH requirement. */
9373cf26 14719 if (high <= low)
e385593e 14720 return PC_BOUNDS_INVALID;
c906108c
SS
14721
14722 /* When using the GNU linker, .gnu.linkonce. sections are used to
14723 eliminate duplicate copies of functions and vtables and such.
14724 The linker will arbitrarily choose one and discard the others.
14725 The AT_*_pc values for such functions refer to local labels in
14726 these sections. If the section from that file was discarded, the
14727 labels are not in the output, so the relocs get a value of 0.
14728 If this is a discarded function, mark the pc bounds as invalid,
14729 so that GDB will ignore it. */
72dca2f5 14730 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
e385593e 14731 return PC_BOUNDS_INVALID;
c906108c
SS
14732
14733 *lowpc = low;
96408a79
SA
14734 if (highpc)
14735 *highpc = high;
af34e669 14736 return ret;
c906108c
SS
14737}
14738
b084d499
JB
14739/* Assuming that DIE represents a subprogram DIE or a lexical block, get
14740 its low and high PC addresses. Do nothing if these addresses could not
14741 be determined. Otherwise, set LOWPC to the low address if it is smaller,
14742 and HIGHPC to the high address if greater than HIGHPC. */
14743
14744static void
14745dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14746 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14747 struct dwarf2_cu *cu)
14748{
14749 CORE_ADDR low, high;
14750 struct die_info *child = die->child;
14751
e385593e 14752 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
b084d499 14753 {
325fac50
PA
14754 *lowpc = std::min (*lowpc, low);
14755 *highpc = std::max (*highpc, high);
b084d499
JB
14756 }
14757
14758 /* If the language does not allow nested subprograms (either inside
14759 subprograms or lexical blocks), we're done. */
14760 if (cu->language != language_ada)
14761 return;
6e70227d 14762
b084d499
JB
14763 /* Check all the children of the given DIE. If it contains nested
14764 subprograms, then check their pc bounds. Likewise, we need to
14765 check lexical blocks as well, as they may also contain subprogram
14766 definitions. */
14767 while (child && child->tag)
14768 {
14769 if (child->tag == DW_TAG_subprogram
14770 || child->tag == DW_TAG_lexical_block)
14771 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14772 child = sibling_die (child);
14773 }
14774}
14775
fae299cd
DC
14776/* Get the low and high pc's represented by the scope DIE, and store
14777 them in *LOWPC and *HIGHPC. If the correct values can't be
14778 determined, set *LOWPC to -1 and *HIGHPC to 0. */
14779
14780static void
14781get_scope_pc_bounds (struct die_info *die,
14782 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14783 struct dwarf2_cu *cu)
14784{
14785 CORE_ADDR best_low = (CORE_ADDR) -1;
14786 CORE_ADDR best_high = (CORE_ADDR) 0;
14787 CORE_ADDR current_low, current_high;
14788
3a2b436a 14789 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
e385593e 14790 >= PC_BOUNDS_RANGES)
fae299cd
DC
14791 {
14792 best_low = current_low;
14793 best_high = current_high;
14794 }
14795 else
14796 {
14797 struct die_info *child = die->child;
14798
14799 while (child && child->tag)
14800 {
14801 switch (child->tag) {
14802 case DW_TAG_subprogram:
b084d499 14803 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
14804 break;
14805 case DW_TAG_namespace:
f55ee35c 14806 case DW_TAG_module:
fae299cd
DC
14807 /* FIXME: carlton/2004-01-16: Should we do this for
14808 DW_TAG_class_type/DW_TAG_structure_type, too? I think
14809 that current GCC's always emit the DIEs corresponding
14810 to definitions of methods of classes as children of a
14811 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14812 the DIEs giving the declarations, which could be
14813 anywhere). But I don't see any reason why the
14814 standards says that they have to be there. */
14815 get_scope_pc_bounds (child, &current_low, &current_high, cu);
14816
14817 if (current_low != ((CORE_ADDR) -1))
14818 {
325fac50
PA
14819 best_low = std::min (best_low, current_low);
14820 best_high = std::max (best_high, current_high);
fae299cd
DC
14821 }
14822 break;
14823 default:
0963b4bd 14824 /* Ignore. */
fae299cd
DC
14825 break;
14826 }
14827
14828 child = sibling_die (child);
14829 }
14830 }
14831
14832 *lowpc = best_low;
14833 *highpc = best_high;
14834}
14835
801e3a5b
JB
14836/* Record the address ranges for BLOCK, offset by BASEADDR, as given
14837 in DIE. */
380bca97 14838
801e3a5b
JB
14839static void
14840dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14841 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14842{
518817b3 14843 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a 14844 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 14845 struct attribute *attr;
91da1414 14846 struct attribute *attr_high;
801e3a5b 14847
91da1414
MW
14848 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14849 if (attr_high)
801e3a5b 14850 {
801e3a5b
JB
14851 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14852 if (attr)
14853 {
31aa7e4e
JB
14854 CORE_ADDR low = attr_value_as_address (attr);
14855 CORE_ADDR high = attr_value_as_address (attr_high);
14856
14857 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14858 high += low;
9a619af0 14859
3e29f34a
MR
14860 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14861 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
804d2729 14862 cu->builder->record_block_range (block, low, high - 1);
801e3a5b
JB
14863 }
14864 }
14865
14866 attr = dwarf2_attr (die, DW_AT_ranges, cu);
14867 if (attr)
14868 {
ab435259
DE
14869 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14870 We take advantage of the fact that DW_AT_ranges does not appear
14871 in DW_TAG_compile_unit of DWO files. */
14872 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
14873
14874 /* The value of the DW_AT_ranges attribute is the offset of the
14875 address range list in the .debug_ranges section. */
ab435259
DE
14876 unsigned long offset = (DW_UNSND (attr)
14877 + (need_ranges_base ? cu->ranges_base : 0));
801e3a5b 14878
2d5f09ec 14879 std::vector<blockrange> blockvec;
5f46c5a5
JK
14880 dwarf2_ranges_process (offset, cu,
14881 [&] (CORE_ADDR start, CORE_ADDR end)
14882 {
58fdfd2c
JK
14883 start += baseaddr;
14884 end += baseaddr;
5f46c5a5
JK
14885 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14886 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
804d2729 14887 cu->builder->record_block_range (block, start, end - 1);
2d5f09ec 14888 blockvec.emplace_back (start, end);
5f46c5a5 14889 });
2d5f09ec
KB
14890
14891 BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
801e3a5b
JB
14892 }
14893}
14894
685b1105
JK
14895/* Check whether the producer field indicates either of GCC < 4.6, or the
14896 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 14897
685b1105
JK
14898static void
14899check_producer (struct dwarf2_cu *cu)
60d5a603 14900{
38360086 14901 int major, minor;
60d5a603
JK
14902
14903 if (cu->producer == NULL)
14904 {
14905 /* For unknown compilers expect their behavior is DWARF version
14906 compliant.
14907
14908 GCC started to support .debug_types sections by -gdwarf-4 since
14909 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
14910 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14911 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14912 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 14913 }
b1ffba5a 14914 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 14915 {
38360086
MW
14916 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14917 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 14918 }
5230b05a 14919 else if (producer_is_icc (cu->producer, &major, &minor))
eb77c9df
AB
14920 {
14921 cu->producer_is_icc = true;
14922 cu->producer_is_icc_lt_14 = major < 14;
14923 }
c258c396
JD
14924 else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14925 cu->producer_is_codewarrior = true;
685b1105
JK
14926 else
14927 {
14928 /* For other non-GCC compilers, expect their behavior is DWARF version
14929 compliant. */
60d5a603
JK
14930 }
14931
9068261f 14932 cu->checked_producer = true;
685b1105 14933}
ba919b58 14934
685b1105
JK
14935/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14936 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14937 during 4.6.0 experimental. */
14938
9068261f 14939static bool
685b1105
JK
14940producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14941{
14942 if (!cu->checked_producer)
14943 check_producer (cu);
14944
14945 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
14946}
14947
c258c396
JD
14948
14949/* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14950 with incorrect is_stmt attributes. */
14951
14952static bool
14953producer_is_codewarrior (struct dwarf2_cu *cu)
14954{
14955 if (!cu->checked_producer)
14956 check_producer (cu);
14957
14958 return cu->producer_is_codewarrior;
14959}
14960
60d5a603
JK
14961/* Return the default accessibility type if it is not overriden by
14962 DW_AT_accessibility. */
14963
14964static enum dwarf_access_attribute
14965dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14966{
14967 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14968 {
14969 /* The default DWARF 2 accessibility for members is public, the default
14970 accessibility for inheritance is private. */
14971
14972 if (die->tag != DW_TAG_inheritance)
14973 return DW_ACCESS_public;
14974 else
14975 return DW_ACCESS_private;
14976 }
14977 else
14978 {
14979 /* DWARF 3+ defines the default accessibility a different way. The same
14980 rules apply now for DW_TAG_inheritance as for the members and it only
14981 depends on the container kind. */
14982
14983 if (die->parent->tag == DW_TAG_class_type)
14984 return DW_ACCESS_private;
14985 else
14986 return DW_ACCESS_public;
14987 }
14988}
14989
74ac6d43
TT
14990/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
14991 offset. If the attribute was not found return 0, otherwise return
14992 1. If it was found but could not properly be handled, set *OFFSET
14993 to 0. */
14994
14995static int
14996handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14997 LONGEST *offset)
14998{
14999 struct attribute *attr;
15000
15001 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
15002 if (attr != NULL)
15003 {
15004 *offset = 0;
15005
15006 /* Note that we do not check for a section offset first here.
15007 This is because DW_AT_data_member_location is new in DWARF 4,
15008 so if we see it, we can assume that a constant form is really
15009 a constant and not a section offset. */
15010 if (attr_form_is_constant (attr))
15011 *offset = dwarf2_get_attr_constant_value (attr, 0);
15012 else if (attr_form_is_section_offset (attr))
15013 dwarf2_complex_location_expr_complaint ();
15014 else if (attr_form_is_block (attr))
15015 *offset = decode_locdesc (DW_BLOCK (attr), cu);
15016 else
15017 dwarf2_complex_location_expr_complaint ();
15018
15019 return 1;
15020 }
15021
15022 return 0;
15023}
15024
c906108c
SS
15025/* Add an aggregate field to the field list. */
15026
15027static void
107d2387 15028dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 15029 struct dwarf2_cu *cu)
6e70227d 15030{
518817b3 15031 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
5e2b427d 15032 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
15033 struct nextfield *new_field;
15034 struct attribute *attr;
15035 struct field *fp;
15d034d0 15036 const char *fieldname = "";
c906108c 15037
7d0ccb61
DJ
15038 if (die->tag == DW_TAG_inheritance)
15039 {
be2daae6
TT
15040 fip->baseclasses.emplace_back ();
15041 new_field = &fip->baseclasses.back ();
7d0ccb61
DJ
15042 }
15043 else
15044 {
be2daae6
TT
15045 fip->fields.emplace_back ();
15046 new_field = &fip->fields.back ();
7d0ccb61 15047 }
be2daae6 15048
c906108c
SS
15049 fip->nfields++;
15050
e142c38c 15051 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
15052 if (attr)
15053 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
15054 else
15055 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
15056 if (new_field->accessibility != DW_ACCESS_public)
15057 fip->non_public_fields = 1;
60d5a603 15058
e142c38c 15059 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
15060 if (attr)
15061 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
15062 else
15063 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
15064
15065 fp = &new_field->field;
a9a9bd0f 15066
e142c38c 15067 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 15068 {
74ac6d43
TT
15069 LONGEST offset;
15070
a9a9bd0f 15071 /* Data member other than a C++ static data member. */
6e70227d 15072
c906108c 15073 /* Get type of field. */
e7c27a73 15074 fp->type = die_type (die, cu);
c906108c 15075
d6a843b5 15076 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 15077
c906108c 15078 /* Get bit size of field (zero if none). */
e142c38c 15079 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
15080 if (attr)
15081 {
15082 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15083 }
15084 else
15085 {
15086 FIELD_BITSIZE (*fp) = 0;
15087 }
15088
15089 /* Get bit offset of field. */
74ac6d43
TT
15090 if (handle_data_member_location (die, cu, &offset))
15091 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 15092 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
15093 if (attr)
15094 {
5e2b427d 15095 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
15096 {
15097 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
15098 additional bit offset from the MSB of the containing
15099 anonymous object to the MSB of the field. We don't
15100 have to do anything special since we don't need to
15101 know the size of the anonymous object. */
f41f5e61 15102 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
15103 }
15104 else
15105 {
15106 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
15107 MSB of the anonymous object, subtract off the number of
15108 bits from the MSB of the field to the MSB of the
15109 object, and then subtract off the number of bits of
15110 the field itself. The result is the bit offset of
15111 the LSB of the field. */
c906108c
SS
15112 int anonymous_size;
15113 int bit_offset = DW_UNSND (attr);
15114
e142c38c 15115 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
15116 if (attr)
15117 {
15118 /* The size of the anonymous object containing
15119 the bit field is explicit, so use the
15120 indicated size (in bytes). */
15121 anonymous_size = DW_UNSND (attr);
15122 }
15123 else
15124 {
15125 /* The size of the anonymous object containing
15126 the bit field must be inferred from the type
15127 attribute of the data member containing the
15128 bit field. */
15129 anonymous_size = TYPE_LENGTH (fp->type);
15130 }
f41f5e61
PA
15131 SET_FIELD_BITPOS (*fp,
15132 (FIELD_BITPOS (*fp)
15133 + anonymous_size * bits_per_byte
15134 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
15135 }
15136 }
da5b30da
AA
15137 attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15138 if (attr != NULL)
15139 SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15140 + dwarf2_get_attr_constant_value (attr, 0)));
c906108c
SS
15141
15142 /* Get name of field. */
39cbfefa
DJ
15143 fieldname = dwarf2_name (die, cu);
15144 if (fieldname == NULL)
15145 fieldname = "";
d8151005
DJ
15146
15147 /* The name is already allocated along with this objfile, so we don't
15148 need to duplicate it for the type. */
15149 fp->name = fieldname;
c906108c
SS
15150
15151 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 15152 pointer or virtual base class pointer) to private. */
e142c38c 15153 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 15154 {
d48cc9dd 15155 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
15156 new_field->accessibility = DW_ACCESS_private;
15157 fip->non_public_fields = 1;
15158 }
15159 }
a9a9bd0f 15160 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 15161 {
a9a9bd0f
DC
15162 /* C++ static member. */
15163
15164 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15165 is a declaration, but all versions of G++ as of this writing
15166 (so through at least 3.2.1) incorrectly generate
15167 DW_TAG_variable tags. */
6e70227d 15168
ff355380 15169 const char *physname;
c906108c 15170
a9a9bd0f 15171 /* Get name of field. */
39cbfefa
DJ
15172 fieldname = dwarf2_name (die, cu);
15173 if (fieldname == NULL)
c906108c
SS
15174 return;
15175
254e6b9e 15176 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
15177 if (attr
15178 /* Only create a symbol if this is an external value.
15179 new_symbol checks this and puts the value in the global symbol
15180 table, which we want. If it is not external, new_symbol
15181 will try to put the value in cu->list_in_scope which is wrong. */
15182 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
15183 {
15184 /* A static const member, not much different than an enum as far as
15185 we're concerned, except that we can support more types. */
15186 new_symbol (die, NULL, cu);
15187 }
15188
2df3850c 15189 /* Get physical name. */
ff355380 15190 physname = dwarf2_physname (fieldname, die, cu);
c906108c 15191
d8151005
DJ
15192 /* The name is already allocated along with this objfile, so we don't
15193 need to duplicate it for the type. */
15194 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 15195 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 15196 FIELD_NAME (*fp) = fieldname;
c906108c
SS
15197 }
15198 else if (die->tag == DW_TAG_inheritance)
15199 {
74ac6d43 15200 LONGEST offset;
d4b96c9a 15201
74ac6d43
TT
15202 /* C++ base class field. */
15203 if (handle_data_member_location (die, cu, &offset))
15204 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 15205 FIELD_BITSIZE (*fp) = 0;
e7c27a73 15206 FIELD_TYPE (*fp) = die_type (die, cu);
a737d952 15207 FIELD_NAME (*fp) = TYPE_NAME (fp->type);
c906108c 15208 }
2ddeaf8a
TT
15209 else if (die->tag == DW_TAG_variant_part)
15210 {
15211 /* process_structure_scope will treat this DIE as a union. */
15212 process_structure_scope (die, cu);
15213
15214 /* The variant part is relative to the start of the enclosing
15215 structure. */
15216 SET_FIELD_BITPOS (*fp, 0);
15217 fp->type = get_die_type (die, cu);
15218 fp->artificial = 1;
15219 fp->name = "<<variant>>";
c8c81635
TT
15220
15221 /* Normally a DW_TAG_variant_part won't have a size, but our
15222 representation requires one, so set it to the maximum of the
15223 child sizes. */
15224 if (TYPE_LENGTH (fp->type) == 0)
15225 {
15226 unsigned max = 0;
15227 for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15228 if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15229 max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15230 TYPE_LENGTH (fp->type) = max;
15231 }
2ddeaf8a
TT
15232 }
15233 else
15234 gdb_assert_not_reached ("missing case in dwarf2_add_field");
c906108c
SS
15235}
15236
883fd55a
KS
15237/* Can the type given by DIE define another type? */
15238
15239static bool
15240type_can_define_types (const struct die_info *die)
15241{
15242 switch (die->tag)
15243 {
15244 case DW_TAG_typedef:
15245 case DW_TAG_class_type:
15246 case DW_TAG_structure_type:
15247 case DW_TAG_union_type:
15248 case DW_TAG_enumeration_type:
15249 return true;
15250
15251 default:
15252 return false;
15253 }
15254}
15255
15256/* Add a type definition defined in the scope of the FIP's class. */
98751a41
JK
15257
15258static void
883fd55a
KS
15259dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15260 struct dwarf2_cu *cu)
6e70227d 15261{
be2daae6
TT
15262 struct decl_field fp;
15263 memset (&fp, 0, sizeof (fp));
98751a41 15264
883fd55a 15265 gdb_assert (type_can_define_types (die));
98751a41 15266
883fd55a 15267 /* Get name of field. NULL is okay here, meaning an anonymous type. */
be2daae6
TT
15268 fp.name = dwarf2_name (die, cu);
15269 fp.type = read_type_die (die, cu);
98751a41 15270
c191a687
KS
15271 /* Save accessibility. */
15272 enum dwarf_access_attribute accessibility;
15273 struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15274 if (attr != NULL)
15275 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15276 else
15277 accessibility = dwarf2_default_access_attribute (die, cu);
15278 switch (accessibility)
15279 {
15280 case DW_ACCESS_public:
15281 /* The assumed value if neither private nor protected. */
15282 break;
15283 case DW_ACCESS_private:
be2daae6 15284 fp.is_private = 1;
c191a687
KS
15285 break;
15286 case DW_ACCESS_protected:
be2daae6 15287 fp.is_protected = 1;
c191a687
KS
15288 break;
15289 default:
b98664d3 15290 complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
c191a687
KS
15291 }
15292
883fd55a 15293 if (die->tag == DW_TAG_typedef)
be2daae6 15294 fip->typedef_field_list.push_back (fp);
883fd55a 15295 else
be2daae6 15296 fip->nested_types_list.push_back (fp);
98751a41
JK
15297}
15298
c906108c
SS
15299/* Create the vector of fields, and attach it to the type. */
15300
15301static void
fba45db2 15302dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 15303 struct dwarf2_cu *cu)
c906108c
SS
15304{
15305 int nfields = fip->nfields;
15306
15307 /* Record the field count, allocate space for the array of fields,
15308 and create blank accessibility bitfields if necessary. */
15309 TYPE_NFIELDS (type) = nfields;
15310 TYPE_FIELDS (type) = (struct field *)
be2daae6 15311 TYPE_ZALLOC (type, sizeof (struct field) * nfields);
c906108c 15312
b4ba55a1 15313 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
15314 {
15315 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15316
15317 TYPE_FIELD_PRIVATE_BITS (type) =
15318 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15319 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15320
15321 TYPE_FIELD_PROTECTED_BITS (type) =
15322 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15323 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15324
774b6a14
TT
15325 TYPE_FIELD_IGNORE_BITS (type) =
15326 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15327 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
15328 }
15329
15330 /* If the type has baseclasses, allocate and clear a bit vector for
15331 TYPE_FIELD_VIRTUAL_BITS. */
be2daae6 15332 if (!fip->baseclasses.empty () && cu->language != language_ada)
c906108c 15333 {
be2daae6 15334 int num_bytes = B_BYTES (fip->baseclasses.size ());
fe1b8b76 15335 unsigned char *pointer;
c906108c
SS
15336
15337 ALLOCATE_CPLUS_STRUCT_TYPE (type);
224c3ddb 15338 pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
fe1b8b76 15339 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
be2daae6
TT
15340 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15341 TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
c906108c
SS
15342 }
15343
2ddeaf8a
TT
15344 if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15345 {
15346 struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15347
be2daae6 15348 for (int index = 0; index < nfields; ++index)
2ddeaf8a 15349 {
be2daae6
TT
15350 struct nextfield &field = fip->fields[index];
15351
15352 if (field.variant.is_discriminant)
2ddeaf8a 15353 di->discriminant_index = index;
be2daae6 15354 else if (field.variant.default_branch)
2ddeaf8a
TT
15355 di->default_index = index;
15356 else
be2daae6 15357 di->discriminants[index] = field.variant.discriminant_value;
2ddeaf8a
TT
15358 }
15359 }
15360
be2daae6
TT
15361 /* Copy the saved-up fields into the field vector. */
15362 for (int i = 0; i < nfields; ++i)
c906108c 15363 {
be2daae6
TT
15364 struct nextfield &field
15365 = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15366 : fip->fields[i - fip->baseclasses.size ()]);
7d0ccb61 15367
be2daae6
TT
15368 TYPE_FIELD (type, i) = field.field;
15369 switch (field.accessibility)
c906108c 15370 {
c5aa993b 15371 case DW_ACCESS_private:
b4ba55a1 15372 if (cu->language != language_ada)
be2daae6 15373 SET_TYPE_FIELD_PRIVATE (type, i);
c5aa993b 15374 break;
c906108c 15375
c5aa993b 15376 case DW_ACCESS_protected:
b4ba55a1 15377 if (cu->language != language_ada)
be2daae6 15378 SET_TYPE_FIELD_PROTECTED (type, i);
c5aa993b 15379 break;
c906108c 15380
c5aa993b
JM
15381 case DW_ACCESS_public:
15382 break;
c906108c 15383
c5aa993b
JM
15384 default:
15385 /* Unknown accessibility. Complain and treat it as public. */
15386 {
b98664d3 15387 complaint (_("unsupported accessibility %d"),
be2daae6 15388 field.accessibility);
c5aa993b
JM
15389 }
15390 break;
c906108c 15391 }
be2daae6 15392 if (i < fip->baseclasses.size ())
c906108c 15393 {
be2daae6 15394 switch (field.virtuality)
c906108c 15395 {
c5aa993b
JM
15396 case DW_VIRTUALITY_virtual:
15397 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 15398 if (cu->language == language_ada)
a73c6dcd 15399 error (_("unexpected virtuality in component of Ada type"));
be2daae6 15400 SET_TYPE_FIELD_VIRTUAL (type, i);
c5aa993b 15401 break;
c906108c
SS
15402 }
15403 }
c906108c
SS
15404 }
15405}
15406
7d27a96d
TT
15407/* Return true if this member function is a constructor, false
15408 otherwise. */
15409
15410static int
15411dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15412{
15413 const char *fieldname;
fe978cb0 15414 const char *type_name;
7d27a96d
TT
15415 int len;
15416
15417 if (die->parent == NULL)
15418 return 0;
15419
15420 if (die->parent->tag != DW_TAG_structure_type
15421 && die->parent->tag != DW_TAG_union_type
15422 && die->parent->tag != DW_TAG_class_type)
15423 return 0;
15424
15425 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
15426 type_name = dwarf2_name (die->parent, cu);
15427 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
15428 return 0;
15429
15430 len = strlen (fieldname);
fe978cb0
PA
15431 return (strncmp (fieldname, type_name, len) == 0
15432 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
15433}
15434
c906108c
SS
15435/* Add a member function to the proper fieldlist. */
15436
15437static void
107d2387 15438dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 15439 struct type *type, struct dwarf2_cu *cu)
c906108c 15440{
518817b3 15441 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 15442 struct attribute *attr;
c906108c 15443 int i;
be2daae6 15444 struct fnfieldlist *flp = nullptr;
c906108c 15445 struct fn_field *fnp;
15d034d0 15446 const char *fieldname;
f792889a 15447 struct type *this_type;
60d5a603 15448 enum dwarf_access_attribute accessibility;
c906108c 15449
b4ba55a1 15450 if (cu->language == language_ada)
a73c6dcd 15451 error (_("unexpected member function in Ada type"));
b4ba55a1 15452
2df3850c 15453 /* Get name of member function. */
39cbfefa
DJ
15454 fieldname = dwarf2_name (die, cu);
15455 if (fieldname == NULL)
2df3850c 15456 return;
c906108c 15457
c906108c 15458 /* Look up member function name in fieldlist. */
be2daae6 15459 for (i = 0; i < fip->fnfieldlists.size (); i++)
c906108c 15460 {
27bfe10e 15461 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
be2daae6
TT
15462 {
15463 flp = &fip->fnfieldlists[i];
15464 break;
15465 }
c906108c
SS
15466 }
15467
be2daae6
TT
15468 /* Create a new fnfieldlist if necessary. */
15469 if (flp == nullptr)
c906108c 15470 {
be2daae6
TT
15471 fip->fnfieldlists.emplace_back ();
15472 flp = &fip->fnfieldlists.back ();
c906108c 15473 flp->name = fieldname;
be2daae6 15474 i = fip->fnfieldlists.size () - 1;
c906108c
SS
15475 }
15476
be2daae6
TT
15477 /* Create a new member function field and add it to the vector of
15478 fnfieldlists. */
15479 flp->fnfields.emplace_back ();
15480 fnp = &flp->fnfields.back ();
3da10d80
KS
15481
15482 /* Delay processing of the physname until later. */
9c37b5ae 15483 if (cu->language == language_cplus)
be2daae6
TT
15484 add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15485 die, cu);
3da10d80
KS
15486 else
15487 {
1d06ead6 15488 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
15489 fnp->physname = physname ? physname : "";
15490 }
15491
c906108c 15492 fnp->type = alloc_type (objfile);
f792889a
DJ
15493 this_type = read_type_die (die, cu);
15494 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 15495 {
f792889a 15496 int nparams = TYPE_NFIELDS (this_type);
c906108c 15497
f792889a 15498 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
15499 of the method itself (TYPE_CODE_METHOD). */
15500 smash_to_method_type (fnp->type, type,
f792889a
DJ
15501 TYPE_TARGET_TYPE (this_type),
15502 TYPE_FIELDS (this_type),
15503 TYPE_NFIELDS (this_type),
15504 TYPE_VARARGS (this_type));
c906108c
SS
15505
15506 /* Handle static member functions.
c5aa993b 15507 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
15508 member functions. G++ helps GDB by marking the first
15509 parameter for non-static member functions (which is the this
15510 pointer) as artificial. We obtain this information from
15511 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 15512 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
15513 fnp->voffset = VOFFSET_STATIC;
15514 }
15515 else
b98664d3 15516 complaint (_("member function type missing for '%s'"),
3da10d80 15517 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
15518
15519 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 15520 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 15521 fnp->fcontext = die_containing_type (die, cu);
c906108c 15522
3e43a32a
MS
15523 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15524 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
15525
15526 /* Get accessibility. */
e142c38c 15527 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 15528 if (attr)
aead7601 15529 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
60d5a603
JK
15530 else
15531 accessibility = dwarf2_default_access_attribute (die, cu);
15532 switch (accessibility)
c906108c 15533 {
60d5a603
JK
15534 case DW_ACCESS_private:
15535 fnp->is_private = 1;
15536 break;
15537 case DW_ACCESS_protected:
15538 fnp->is_protected = 1;
15539 break;
c906108c
SS
15540 }
15541
b02dede2 15542 /* Check for artificial methods. */
e142c38c 15543 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
15544 if (attr && DW_UNSND (attr) != 0)
15545 fnp->is_artificial = 1;
15546
7d27a96d
TT
15547 fnp->is_constructor = dwarf2_is_constructor (die, cu);
15548
0d564a31 15549 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
15550 function. For older versions of GCC, this is an offset in the
15551 appropriate virtual table, as specified by DW_AT_containing_type.
15552 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
15553 to the object address. */
15554
e142c38c 15555 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 15556 if (attr)
8e19ed76 15557 {
aec5aa8b 15558 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 15559 {
aec5aa8b
TT
15560 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15561 {
15562 /* Old-style GCC. */
15563 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15564 }
15565 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15566 || (DW_BLOCK (attr)->size > 1
15567 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15568 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15569 {
aec5aa8b
TT
15570 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15571 if ((fnp->voffset % cu->header.addr_size) != 0)
15572 dwarf2_complex_location_expr_complaint ();
15573 else
15574 fnp->voffset /= cu->header.addr_size;
15575 fnp->voffset += 2;
15576 }
15577 else
15578 dwarf2_complex_location_expr_complaint ();
15579
15580 if (!fnp->fcontext)
7e993ebf
KS
15581 {
15582 /* If there is no `this' field and no DW_AT_containing_type,
15583 we cannot actually find a base class context for the
15584 vtable! */
15585 if (TYPE_NFIELDS (this_type) == 0
15586 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15587 {
b98664d3 15588 complaint (_("cannot determine context for virtual member "
9d8780f0
SM
15589 "function \"%s\" (offset %s)"),
15590 fieldname, sect_offset_str (die->sect_off));
7e993ebf
KS
15591 }
15592 else
15593 {
15594 fnp->fcontext
15595 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15596 }
15597 }
aec5aa8b 15598 }
3690dd37 15599 else if (attr_form_is_section_offset (attr))
8e19ed76 15600 {
4d3c2250 15601 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15602 }
15603 else
15604 {
4d3c2250
KB
15605 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15606 fieldname);
8e19ed76 15607 }
0d564a31 15608 }
d48cc9dd
DJ
15609 else
15610 {
15611 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15612 if (attr && DW_UNSND (attr))
15613 {
15614 /* GCC does this, as of 2008-08-25; PR debug/37237. */
b98664d3 15615 complaint (_("Member function \"%s\" (offset %s) is virtual "
3e43a32a 15616 "but the vtable offset is not specified"),
9d8780f0 15617 fieldname, sect_offset_str (die->sect_off));
9655fd1a 15618 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
15619 TYPE_CPLUS_DYNAMIC (type) = 1;
15620 }
15621 }
c906108c
SS
15622}
15623
15624/* Create the vector of member function fields, and attach it to the type. */
15625
15626static void
fba45db2 15627dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 15628 struct dwarf2_cu *cu)
c906108c 15629{
b4ba55a1 15630 if (cu->language == language_ada)
a73c6dcd 15631 error (_("unexpected member functions in Ada type"));
b4ba55a1 15632
c906108c
SS
15633 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15634 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
be2daae6
TT
15635 TYPE_ALLOC (type,
15636 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
c906108c 15637
be2daae6 15638 for (int i = 0; i < fip->fnfieldlists.size (); i++)
c906108c 15639 {
be2daae6 15640 struct fnfieldlist &nf = fip->fnfieldlists[i];
c906108c 15641 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
c906108c 15642
be2daae6
TT
15643 TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15644 TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
c906108c 15645 fn_flp->fn_fields = (struct fn_field *)
be2daae6
TT
15646 TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15647
15648 for (int k = 0; k < nf.fnfields.size (); ++k)
15649 fn_flp->fn_fields[k] = nf.fnfields[k];
c906108c
SS
15650 }
15651
be2daae6 15652 TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
c906108c
SS
15653}
15654
1168df01
JB
15655/* Returns non-zero if NAME is the name of a vtable member in CU's
15656 language, zero otherwise. */
15657static int
15658is_vtable_name (const char *name, struct dwarf2_cu *cu)
15659{
15660 static const char vptr[] = "_vptr";
15661
9c37b5ae
TT
15662 /* Look for the C++ form of the vtable. */
15663 if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
1168df01
JB
15664 return 1;
15665
15666 return 0;
15667}
15668
c0dd20ea 15669/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
15670 functions, with the ABI-specified layout. If TYPE describes
15671 such a structure, smash it into a member function type.
61049d3b
DJ
15672
15673 GCC shouldn't do this; it should just output pointer to member DIEs.
15674 This is GCC PR debug/28767. */
c0dd20ea 15675
0b92b5bb
TT
15676static void
15677quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 15678{
09e2d7c7 15679 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
15680
15681 /* Check for a structure with no name and two children. */
0b92b5bb
TT
15682 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15683 return;
c0dd20ea
DJ
15684
15685 /* Check for __pfn and __delta members. */
0b92b5bb
TT
15686 if (TYPE_FIELD_NAME (type, 0) == NULL
15687 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15688 || TYPE_FIELD_NAME (type, 1) == NULL
15689 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15690 return;
c0dd20ea
DJ
15691
15692 /* Find the type of the method. */
0b92b5bb 15693 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
15694 if (pfn_type == NULL
15695 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15696 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 15697 return;
c0dd20ea
DJ
15698
15699 /* Look for the "this" argument. */
15700 pfn_type = TYPE_TARGET_TYPE (pfn_type);
15701 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 15702 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 15703 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 15704 return;
c0dd20ea 15705
09e2d7c7 15706 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 15707 new_type = alloc_type (objfile);
09e2d7c7 15708 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
15709 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15710 TYPE_VARARGS (pfn_type));
0b92b5bb 15711 smash_to_methodptr_type (type, new_type);
c0dd20ea 15712}
1168df01 15713
2b4424c3
TT
15714/* If the DIE has a DW_AT_alignment attribute, return its value, doing
15715 appropriate error checking and issuing complaints if there is a
15716 problem. */
15717
15718static ULONGEST
15719get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15720{
15721 struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15722
15723 if (attr == nullptr)
15724 return 0;
15725
15726 if (!attr_form_is_constant (attr))
15727 {
b98664d3 15728 complaint (_("DW_AT_alignment must have constant form"
2b4424c3
TT
15729 " - DIE at %s [in module %s]"),
15730 sect_offset_str (die->sect_off),
15731 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15732 return 0;
15733 }
15734
15735 ULONGEST align;
15736 if (attr->form == DW_FORM_sdata)
15737 {
15738 LONGEST val = DW_SND (attr);
15739 if (val < 0)
15740 {
b98664d3 15741 complaint (_("DW_AT_alignment value must not be negative"
2b4424c3
TT
15742 " - DIE at %s [in module %s]"),
15743 sect_offset_str (die->sect_off),
15744 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15745 return 0;
15746 }
15747 align = val;
15748 }
15749 else
15750 align = DW_UNSND (attr);
15751
15752 if (align == 0)
15753 {
b98664d3 15754 complaint (_("DW_AT_alignment value must not be zero"
2b4424c3
TT
15755 " - DIE at %s [in module %s]"),
15756 sect_offset_str (die->sect_off),
15757 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15758 return 0;
15759 }
15760 if ((align & (align - 1)) != 0)
15761 {
b98664d3 15762 complaint (_("DW_AT_alignment value must be a power of 2"
2b4424c3
TT
15763 " - DIE at %s [in module %s]"),
15764 sect_offset_str (die->sect_off),
15765 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15766 return 0;
15767 }
15768
15769 return align;
15770}
15771
15772/* If the DIE has a DW_AT_alignment attribute, use its value to set
15773 the alignment for TYPE. */
15774
15775static void
15776maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15777 struct type *type)
15778{
15779 if (!set_type_align (type, get_alignment (cu, die)))
b98664d3 15780 complaint (_("DW_AT_alignment value too large"
2b4424c3
TT
15781 " - DIE at %s [in module %s]"),
15782 sect_offset_str (die->sect_off),
15783 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15784}
685b1105 15785
c906108c 15786/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
15787 (definition) to create a type for the structure or union. Fill in
15788 the type's name and general properties; the members will not be
83655187
DE
15789 processed until process_structure_scope. A symbol table entry for
15790 the type will also not be done until process_structure_scope (assuming
15791 the type has a name).
c906108c 15792
c767944b
DJ
15793 NOTE: we need to call these functions regardless of whether or not the
15794 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 15795 structure or union. This gets the type entered into our set of
83655187 15796 user defined types. */
c906108c 15797
f792889a 15798static struct type *
134d01f1 15799read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 15800{
518817b3 15801 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c
SS
15802 struct type *type;
15803 struct attribute *attr;
15d034d0 15804 const char *name;
c906108c 15805
348e048f
DE
15806 /* If the definition of this type lives in .debug_types, read that type.
15807 Don't follow DW_AT_specification though, that will take us back up
15808 the chain and we want to go down. */
45e58e77 15809 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
15810 if (attr)
15811 {
ac9ec31b 15812 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 15813
ac9ec31b 15814 /* The type's CU may not be the same as CU.
02142a6c 15815 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
15816 return set_die_type (die, type, cu);
15817 }
15818
c0dd20ea 15819 type = alloc_type (objfile);
c906108c 15820 INIT_CPLUS_SPECIFIC (type);
93311388 15821
39cbfefa
DJ
15822 name = dwarf2_name (die, cu);
15823 if (name != NULL)
c906108c 15824 {
987504bb 15825 if (cu->language == language_cplus
c44af4eb
TT
15826 || cu->language == language_d
15827 || cu->language == language_rust)
63d06c5c 15828 {
15d034d0 15829 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
15830
15831 /* dwarf2_full_name might have already finished building the DIE's
15832 type. If so, there is no need to continue. */
15833 if (get_die_type (die, cu) != NULL)
15834 return get_die_type (die, cu);
15835
e86ca25f 15836 TYPE_NAME (type) = full_name;
63d06c5c
DC
15837 }
15838 else
15839 {
d8151005
DJ
15840 /* The name is already allocated along with this objfile, so
15841 we don't need to duplicate it for the type. */
e86ca25f 15842 TYPE_NAME (type) = name;
63d06c5c 15843 }
c906108c
SS
15844 }
15845
15846 if (die->tag == DW_TAG_structure_type)
15847 {
15848 TYPE_CODE (type) = TYPE_CODE_STRUCT;
15849 }
15850 else if (die->tag == DW_TAG_union_type)
15851 {
15852 TYPE_CODE (type) = TYPE_CODE_UNION;
15853 }
2ddeaf8a
TT
15854 else if (die->tag == DW_TAG_variant_part)
15855 {
15856 TYPE_CODE (type) = TYPE_CODE_UNION;
15857 TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15858 }
c906108c
SS
15859 else
15860 {
4753d33b 15861 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
15862 }
15863
0cc2414c
TT
15864 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15865 TYPE_DECLARED_CLASS (type) = 1;
15866
e142c38c 15867 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
15868 if (attr)
15869 {
155bfbd3
JB
15870 if (attr_form_is_constant (attr))
15871 TYPE_LENGTH (type) = DW_UNSND (attr);
15872 else
15873 {
15874 /* For the moment, dynamic type sizes are not supported
15875 by GDB's struct type. The actual size is determined
15876 on-demand when resolving the type of a given object,
15877 so set the type's length to zero for now. Otherwise,
15878 we record an expression as the length, and that expression
15879 could lead to a very large value, which could eventually
15880 lead to us trying to allocate that much memory when creating
15881 a value of that type. */
15882 TYPE_LENGTH (type) = 0;
15883 }
c906108c
SS
15884 }
15885 else
15886 {
15887 TYPE_LENGTH (type) = 0;
15888 }
15889
2b4424c3
TT
15890 maybe_set_alignment (cu, die, type);
15891
5230b05a 15892 if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
685b1105 15893 {
5230b05a
WT
15894 /* ICC<14 does not output the required DW_AT_declaration on
15895 incomplete types, but gives them a size of zero. */
422b1cb0 15896 TYPE_STUB (type) = 1;
685b1105
JK
15897 }
15898 else
15899 TYPE_STUB_SUPPORTED (type) = 1;
15900
dc718098 15901 if (die_is_declaration (die, cu))
876cecd0 15902 TYPE_STUB (type) = 1;
a6c727b2
DJ
15903 else if (attr == NULL && die->child == NULL
15904 && producer_is_realview (cu->producer))
15905 /* RealView does not output the required DW_AT_declaration
15906 on incomplete types. */
15907 TYPE_STUB (type) = 1;
dc718098 15908
c906108c
SS
15909 /* We need to add the type field to the die immediately so we don't
15910 infinitely recurse when dealing with pointers to the structure
0963b4bd 15911 type within the structure itself. */
1c379e20 15912 set_die_type (die, type, cu);
c906108c 15913
7e314c57
JK
15914 /* set_die_type should be already done. */
15915 set_descriptive_type (type, die, cu);
15916
c767944b
DJ
15917 return type;
15918}
15919
2ddeaf8a
TT
15920/* A helper for process_structure_scope that handles a single member
15921 DIE. */
15922
15923static void
15924handle_struct_member_die (struct die_info *child_die, struct type *type,
15925 struct field_info *fi,
15926 std::vector<struct symbol *> *template_args,
15927 struct dwarf2_cu *cu)
15928{
15929 if (child_die->tag == DW_TAG_member
15930 || child_die->tag == DW_TAG_variable
15931 || child_die->tag == DW_TAG_variant_part)
15932 {
15933 /* NOTE: carlton/2002-11-05: A C++ static data member
15934 should be a DW_TAG_member that is a declaration, but
15935 all versions of G++ as of this writing (so through at
15936 least 3.2.1) incorrectly generate DW_TAG_variable
15937 tags for them instead. */
15938 dwarf2_add_field (fi, child_die, cu);
15939 }
15940 else if (child_die->tag == DW_TAG_subprogram)
15941 {
15942 /* Rust doesn't have member functions in the C++ sense.
15943 However, it does emit ordinary functions as children
15944 of a struct DIE. */
15945 if (cu->language == language_rust)
15946 read_func_scope (child_die, cu);
15947 else
15948 {
15949 /* C++ member function. */
15950 dwarf2_add_member_fn (fi, child_die, type, cu);
15951 }
15952 }
15953 else if (child_die->tag == DW_TAG_inheritance)
15954 {
15955 /* C++ base class field. */
15956 dwarf2_add_field (fi, child_die, cu);
15957 }
15958 else if (type_can_define_types (child_die))
15959 dwarf2_add_type_defn (fi, child_die, cu);
15960 else if (child_die->tag == DW_TAG_template_type_param
15961 || child_die->tag == DW_TAG_template_value_param)
15962 {
15963 struct symbol *arg = new_symbol (child_die, NULL, cu);
15964
15965 if (arg != NULL)
15966 template_args->push_back (arg);
15967 }
15968 else if (child_die->tag == DW_TAG_variant)
15969 {
15970 /* In a variant we want to get the discriminant and also add a
15971 field for our sole member child. */
15972 struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15973
15974 for (struct die_info *variant_child = child_die->child;
15975 variant_child != NULL;
15976 variant_child = sibling_die (variant_child))
15977 {
15978 if (variant_child->tag == DW_TAG_member)
15979 {
15980 handle_struct_member_die (variant_child, type, fi,
15981 template_args, cu);
15982 /* Only handle the one. */
15983 break;
15984 }
15985 }
15986
15987 /* We don't handle this but we might as well report it if we see
15988 it. */
15989 if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
b98664d3 15990 complaint (_("DW_AT_discr_list is not supported yet"
2ddeaf8a
TT
15991 " - DIE at %s [in module %s]"),
15992 sect_offset_str (child_die->sect_off),
15993 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15994
15995 /* The first field was just added, so we can stash the
15996 discriminant there. */
be2daae6 15997 gdb_assert (!fi->fields.empty ());
2ddeaf8a 15998 if (discr == NULL)
be2daae6 15999 fi->fields.back ().variant.default_branch = true;
2ddeaf8a 16000 else
be2daae6 16001 fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
2ddeaf8a
TT
16002 }
16003}
16004
c767944b
DJ
16005/* Finish creating a structure or union type, including filling in
16006 its members and creating a symbol for it. */
16007
16008static void
16009process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
16010{
518817b3 16011 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
ca040673 16012 struct die_info *child_die;
c767944b
DJ
16013 struct type *type;
16014
16015 type = get_die_type (die, cu);
16016 if (type == NULL)
16017 type = read_structure_type (die, cu);
16018
2ddeaf8a
TT
16019 /* When reading a DW_TAG_variant_part, we need to notice when we
16020 read the discriminant member, so we can record it later in the
16021 discriminant_info. */
16022 bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
16023 sect_offset discr_offset;
3e1d3d8c 16024 bool has_template_parameters = false;
2ddeaf8a
TT
16025
16026 if (is_variant_part)
16027 {
16028 struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16029 if (discr == NULL)
16030 {
16031 /* Maybe it's a univariant form, an extension we support.
16032 In this case arrange not to check the offset. */
16033 is_variant_part = false;
16034 }
16035 else if (attr_form_is_ref (discr))
16036 {
16037 struct dwarf2_cu *target_cu = cu;
16038 struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16039
16040 discr_offset = target_die->sect_off;
16041 }
16042 else
16043 {
b98664d3 16044 complaint (_("DW_AT_discr does not have DIE reference form"
2ddeaf8a
TT
16045 " - DIE at %s [in module %s]"),
16046 sect_offset_str (die->sect_off),
16047 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16048 is_variant_part = false;
16049 }
16050 }
16051
e142c38c 16052 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
16053 {
16054 struct field_info fi;
2f4732b0 16055 std::vector<struct symbol *> template_args;
c906108c 16056
639d11d3 16057 child_die = die->child;
c906108c
SS
16058
16059 while (child_die && child_die->tag)
16060 {
2ddeaf8a 16061 handle_struct_member_die (child_die, type, &fi, &template_args, cu);
34eaf542 16062
2ddeaf8a 16063 if (is_variant_part && discr_offset == child_die->sect_off)
be2daae6 16064 fi.fields.back ().variant.is_discriminant = true;
34eaf542 16065
c906108c
SS
16066 child_die = sibling_die (child_die);
16067 }
16068
34eaf542 16069 /* Attach template arguments to type. */
2f4732b0 16070 if (!template_args.empty ())
34eaf542 16071 {
3e1d3d8c 16072 has_template_parameters = true;
34eaf542 16073 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2f4732b0 16074 TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
34eaf542 16075 TYPE_TEMPLATE_ARGUMENTS (type)
8d749320
SM
16076 = XOBNEWVEC (&objfile->objfile_obstack,
16077 struct symbol *,
16078 TYPE_N_TEMPLATE_ARGUMENTS (type));
34eaf542 16079 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
2f4732b0 16080 template_args.data (),
34eaf542
TT
16081 (TYPE_N_TEMPLATE_ARGUMENTS (type)
16082 * sizeof (struct symbol *)));
34eaf542
TT
16083 }
16084
c906108c
SS
16085 /* Attach fields and member functions to the type. */
16086 if (fi.nfields)
e7c27a73 16087 dwarf2_attach_fields_to_type (&fi, type, cu);
be2daae6 16088 if (!fi.fnfieldlists.empty ())
c906108c 16089 {
e7c27a73 16090 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 16091
c5aa993b 16092 /* Get the type which refers to the base class (possibly this
c906108c 16093 class itself) which contains the vtable pointer for the current
0d564a31
DJ
16094 class from the DW_AT_containing_type attribute. This use of
16095 DW_AT_containing_type is a GNU extension. */
c906108c 16096
e142c38c 16097 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 16098 {
e7c27a73 16099 struct type *t = die_containing_type (die, cu);
c906108c 16100
ae6ae975 16101 set_type_vptr_basetype (type, t);
c906108c
SS
16102 if (type == t)
16103 {
c906108c
SS
16104 int i;
16105
16106 /* Our own class provides vtbl ptr. */
16107 for (i = TYPE_NFIELDS (t) - 1;
16108 i >= TYPE_N_BASECLASSES (t);
16109 --i)
16110 {
0d5cff50 16111 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 16112
1168df01 16113 if (is_vtable_name (fieldname, cu))
c906108c 16114 {
ae6ae975 16115 set_type_vptr_fieldno (type, i);
c906108c
SS
16116 break;
16117 }
16118 }
16119
16120 /* Complain if virtual function table field not found. */
16121 if (i < TYPE_N_BASECLASSES (t))
b98664d3 16122 complaint (_("virtual function table pointer "
3e43a32a 16123 "not found when defining class '%s'"),
e86ca25f 16124 TYPE_NAME (type) ? TYPE_NAME (type) : "");
c906108c
SS
16125 }
16126 else
16127 {
ae6ae975 16128 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
16129 }
16130 }
f6235d4c 16131 else if (cu->producer
61012eef 16132 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
16133 {
16134 /* The IBM XLC compiler does not provide direct indication
16135 of the containing type, but the vtable pointer is
16136 always named __vfp. */
16137
16138 int i;
16139
16140 for (i = TYPE_NFIELDS (type) - 1;
16141 i >= TYPE_N_BASECLASSES (type);
16142 --i)
16143 {
16144 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16145 {
ae6ae975
DE
16146 set_type_vptr_fieldno (type, i);
16147 set_type_vptr_basetype (type, type);
f6235d4c
EZ
16148 break;
16149 }
16150 }
16151 }
c906108c 16152 }
98751a41
JK
16153
16154 /* Copy fi.typedef_field_list linked list elements content into the
16155 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
be2daae6 16156 if (!fi.typedef_field_list.empty ())
98751a41 16157 {
be2daae6 16158 int count = fi.typedef_field_list.size ();
98751a41 16159
a0d7a4ff 16160 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41 16161 TYPE_TYPEDEF_FIELD_ARRAY (type)
883fd55a 16162 = ((struct decl_field *)
be2daae6
TT
16163 TYPE_ALLOC (type,
16164 sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16165 TYPE_TYPEDEF_FIELD_COUNT (type) = count;
6e70227d 16166
be2daae6
TT
16167 for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16168 TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
98751a41 16169 }
c767944b 16170
883fd55a
KS
16171 /* Copy fi.nested_types_list linked list elements content into the
16172 allocated array TYPE_NESTED_TYPES_ARRAY (type). */
be2daae6 16173 if (!fi.nested_types_list.empty () && cu->language != language_ada)
883fd55a 16174 {
be2daae6 16175 int count = fi.nested_types_list.size ();
883fd55a
KS
16176
16177 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16178 TYPE_NESTED_TYPES_ARRAY (type)
16179 = ((struct decl_field *)
be2daae6
TT
16180 TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16181 TYPE_NESTED_TYPES_COUNT (type) = count;
883fd55a 16182
be2daae6
TT
16183 for (int i = 0; i < fi.nested_types_list.size (); ++i)
16184 TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
883fd55a 16185 }
c906108c 16186 }
63d06c5c 16187
bb5ed363 16188 quirk_gcc_member_function_pointer (type, objfile);
c9317f21
TT
16189 if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16190 cu->rust_unions.push_back (type);
0b92b5bb 16191
90aeadfc
DC
16192 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16193 snapshots) has been known to create a die giving a declaration
16194 for a class that has, as a child, a die giving a definition for a
16195 nested class. So we have to process our children even if the
16196 current die is a declaration. Normally, of course, a declaration
16197 won't have any children at all. */
134d01f1 16198
ca040673
DE
16199 child_die = die->child;
16200
90aeadfc
DC
16201 while (child_die != NULL && child_die->tag)
16202 {
16203 if (child_die->tag == DW_TAG_member
16204 || child_die->tag == DW_TAG_variable
34eaf542
TT
16205 || child_die->tag == DW_TAG_inheritance
16206 || child_die->tag == DW_TAG_template_value_param
16207 || child_die->tag == DW_TAG_template_type_param)
134d01f1 16208 {
90aeadfc 16209 /* Do nothing. */
134d01f1 16210 }
90aeadfc
DC
16211 else
16212 process_die (child_die, cu);
134d01f1 16213
90aeadfc 16214 child_die = sibling_die (child_die);
134d01f1
DJ
16215 }
16216
fa4028e9
JB
16217 /* Do not consider external references. According to the DWARF standard,
16218 these DIEs are identified by the fact that they have no byte_size
16219 attribute, and a declaration attribute. */
16220 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16221 || !die_is_declaration (die, cu))
3e1d3d8c
TT
16222 {
16223 struct symbol *sym = new_symbol (die, type, cu);
16224
16225 if (has_template_parameters)
16226 {
16227 /* Make sure that the symtab is set on the new symbols.
16228 Even though they don't appear in this symtab directly,
16229 other parts of gdb assume that symbols do, and this is
16230 reasonably true. */
16231 for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16232 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16233 symbol_symtab (sym));
16234 }
16235 }
134d01f1
DJ
16236}
16237
55426c9d
JB
16238/* Assuming DIE is an enumeration type, and TYPE is its associated type,
16239 update TYPE using some information only available in DIE's children. */
16240
16241static void
16242update_enumeration_type_from_children (struct die_info *die,
16243 struct type *type,
16244 struct dwarf2_cu *cu)
16245{
60f7655a 16246 struct die_info *child_die;
55426c9d
JB
16247 int unsigned_enum = 1;
16248 int flag_enum = 1;
16249 ULONGEST mask = 0;
55426c9d 16250
8268c778 16251 auto_obstack obstack;
55426c9d 16252
60f7655a
DE
16253 for (child_die = die->child;
16254 child_die != NULL && child_die->tag;
16255 child_die = sibling_die (child_die))
55426c9d
JB
16256 {
16257 struct attribute *attr;
16258 LONGEST value;
16259 const gdb_byte *bytes;
16260 struct dwarf2_locexpr_baton *baton;
16261 const char *name;
60f7655a 16262
55426c9d
JB
16263 if (child_die->tag != DW_TAG_enumerator)
16264 continue;
16265
16266 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16267 if (attr == NULL)
16268 continue;
16269
16270 name = dwarf2_name (child_die, cu);
16271 if (name == NULL)
16272 name = "<anonymous enumerator>";
16273
16274 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16275 &value, &bytes, &baton);
16276 if (value < 0)
16277 {
16278 unsigned_enum = 0;
16279 flag_enum = 0;
16280 }
16281 else if ((mask & value) != 0)
16282 flag_enum = 0;
16283 else
16284 mask |= value;
16285
16286 /* If we already know that the enum type is neither unsigned, nor
16287 a flag type, no need to look at the rest of the enumerates. */
16288 if (!unsigned_enum && !flag_enum)
16289 break;
55426c9d
JB
16290 }
16291
16292 if (unsigned_enum)
16293 TYPE_UNSIGNED (type) = 1;
16294 if (flag_enum)
16295 TYPE_FLAG_ENUM (type) = 1;
55426c9d
JB
16296}
16297
134d01f1
DJ
16298/* Given a DW_AT_enumeration_type die, set its type. We do not
16299 complete the type's fields yet, or create any symbols. */
c906108c 16300
f792889a 16301static struct type *
134d01f1 16302read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 16303{
518817b3 16304 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 16305 struct type *type;
c906108c 16306 struct attribute *attr;
0114d602 16307 const char *name;
134d01f1 16308
348e048f
DE
16309 /* If the definition of this type lives in .debug_types, read that type.
16310 Don't follow DW_AT_specification though, that will take us back up
16311 the chain and we want to go down. */
45e58e77 16312 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
16313 if (attr)
16314 {
ac9ec31b 16315 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 16316
ac9ec31b 16317 /* The type's CU may not be the same as CU.
02142a6c 16318 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
16319 return set_die_type (die, type, cu);
16320 }
16321
c906108c
SS
16322 type = alloc_type (objfile);
16323
16324 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 16325 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 16326 if (name != NULL)
e86ca25f 16327 TYPE_NAME (type) = name;
c906108c 16328
0626fc76
TT
16329 attr = dwarf2_attr (die, DW_AT_type, cu);
16330 if (attr != NULL)
16331 {
16332 struct type *underlying_type = die_type (die, cu);
16333
16334 TYPE_TARGET_TYPE (type) = underlying_type;
16335 }
16336
e142c38c 16337 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
16338 if (attr)
16339 {
16340 TYPE_LENGTH (type) = DW_UNSND (attr);
16341 }
16342 else
16343 {
16344 TYPE_LENGTH (type) = 0;
16345 }
16346
2b4424c3
TT
16347 maybe_set_alignment (cu, die, type);
16348
137033e9
JB
16349 /* The enumeration DIE can be incomplete. In Ada, any type can be
16350 declared as private in the package spec, and then defined only
16351 inside the package body. Such types are known as Taft Amendment
16352 Types. When another package uses such a type, an incomplete DIE
16353 may be generated by the compiler. */
02eb380e 16354 if (die_is_declaration (die, cu))
876cecd0 16355 TYPE_STUB (type) = 1;
02eb380e 16356
0626fc76
TT
16357 /* Finish the creation of this type by using the enum's children.
16358 We must call this even when the underlying type has been provided
16359 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
16360 update_enumeration_type_from_children (die, type, cu);
16361
0626fc76
TT
16362 /* If this type has an underlying type that is not a stub, then we
16363 may use its attributes. We always use the "unsigned" attribute
16364 in this situation, because ordinarily we guess whether the type
16365 is unsigned -- but the guess can be wrong and the underlying type
16366 can tell us the reality. However, we defer to a local size
16367 attribute if one exists, because this lets the compiler override
16368 the underlying type if needed. */
16369 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16370 {
16371 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16372 if (TYPE_LENGTH (type) == 0)
16373 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
2b4424c3
TT
16374 if (TYPE_RAW_ALIGN (type) == 0
16375 && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16376 set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
0626fc76
TT
16377 }
16378
3d567982
TT
16379 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16380
f792889a 16381 return set_die_type (die, type, cu);
134d01f1
DJ
16382}
16383
16384/* Given a pointer to a die which begins an enumeration, process all
16385 the dies that define the members of the enumeration, and create the
16386 symbol for the enumeration type.
16387
16388 NOTE: We reverse the order of the element list. */
16389
16390static void
16391process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16392{
f792889a 16393 struct type *this_type;
134d01f1 16394
f792889a
DJ
16395 this_type = get_die_type (die, cu);
16396 if (this_type == NULL)
16397 this_type = read_enumeration_type (die, cu);
9dc481d3 16398
639d11d3 16399 if (die->child != NULL)
c906108c 16400 {
9dc481d3
DE
16401 struct die_info *child_die;
16402 struct symbol *sym;
16403 struct field *fields = NULL;
16404 int num_fields = 0;
15d034d0 16405 const char *name;
9dc481d3 16406
639d11d3 16407 child_die = die->child;
c906108c
SS
16408 while (child_die && child_die->tag)
16409 {
16410 if (child_die->tag != DW_TAG_enumerator)
16411 {
e7c27a73 16412 process_die (child_die, cu);
c906108c
SS
16413 }
16414 else
16415 {
39cbfefa
DJ
16416 name = dwarf2_name (child_die, cu);
16417 if (name)
c906108c 16418 {
f792889a 16419 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
16420
16421 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16422 {
16423 fields = (struct field *)
16424 xrealloc (fields,
16425 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 16426 * sizeof (struct field));
c906108c
SS
16427 }
16428
3567439c 16429 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 16430 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 16431 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
16432 FIELD_BITSIZE (fields[num_fields]) = 0;
16433
16434 num_fields++;
16435 }
16436 }
16437
16438 child_die = sibling_die (child_die);
16439 }
16440
16441 if (num_fields)
16442 {
f792889a
DJ
16443 TYPE_NFIELDS (this_type) = num_fields;
16444 TYPE_FIELDS (this_type) = (struct field *)
16445 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16446 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 16447 sizeof (struct field) * num_fields);
b8c9b27d 16448 xfree (fields);
c906108c 16449 }
c906108c 16450 }
134d01f1 16451
6c83ed52
TT
16452 /* If we are reading an enum from a .debug_types unit, and the enum
16453 is a declaration, and the enum is not the signatured type in the
16454 unit, then we do not want to add a symbol for it. Adding a
16455 symbol would in some cases obscure the true definition of the
16456 enum, giving users an incomplete type when the definition is
16457 actually available. Note that we do not want to do this for all
16458 enums which are just declarations, because C++0x allows forward
16459 enum declarations. */
3019eac3 16460 if (cu->per_cu->is_debug_types
6c83ed52
TT
16461 && die_is_declaration (die, cu))
16462 {
52dc124a 16463 struct signatured_type *sig_type;
6c83ed52 16464
c0f78cd4 16465 sig_type = (struct signatured_type *) cu->per_cu;
9c541725
PA
16466 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16467 if (sig_type->type_offset_in_section != die->sect_off)
6c83ed52
TT
16468 return;
16469 }
16470
f792889a 16471 new_symbol (die, this_type, cu);
c906108c
SS
16472}
16473
16474/* Extract all information from a DW_TAG_array_type DIE and put it in
16475 the DIE's type field. For now, this only handles one dimensional
16476 arrays. */
16477
f792889a 16478static struct type *
e7c27a73 16479read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 16480{
518817b3 16481 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 16482 struct die_info *child_die;
7e314c57 16483 struct type *type;
c906108c 16484 struct type *element_type, *range_type, *index_type;
c906108c 16485 struct attribute *attr;
15d034d0 16486 const char *name;
a405673c 16487 struct dynamic_prop *byte_stride_prop = NULL;
dc53a7ad 16488 unsigned int bit_stride = 0;
c906108c 16489
e7c27a73 16490 element_type = die_type (die, cu);
c906108c 16491
7e314c57
JK
16492 /* The die_type call above may have already set the type for this DIE. */
16493 type = get_die_type (die, cu);
16494 if (type)
16495 return type;
16496
dc53a7ad
JB
16497 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16498 if (attr != NULL)
a405673c
JB
16499 {
16500 int stride_ok;
16501
16502 byte_stride_prop
16503 = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16504 stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16505 if (!stride_ok)
16506 {
b98664d3 16507 complaint (_("unable to read array DW_AT_byte_stride "
9d8780f0
SM
16508 " - DIE at %s [in module %s]"),
16509 sect_offset_str (die->sect_off),
518817b3 16510 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
a405673c
JB
16511 /* Ignore this attribute. We will likely not be able to print
16512 arrays of this type correctly, but there is little we can do
16513 to help if we cannot read the attribute's value. */
16514 byte_stride_prop = NULL;
16515 }
16516 }
dc53a7ad
JB
16517
16518 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16519 if (attr != NULL)
16520 bit_stride = DW_UNSND (attr);
16521
c906108c
SS
16522 /* Irix 6.2 native cc creates array types without children for
16523 arrays with unspecified length. */
639d11d3 16524 if (die->child == NULL)
c906108c 16525 {
46bf5051 16526 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 16527 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad 16528 type = create_array_type_with_stride (NULL, element_type, range_type,
a405673c 16529 byte_stride_prop, bit_stride);
f792889a 16530 return set_die_type (die, type, cu);
c906108c
SS
16531 }
16532
791afaa2 16533 std::vector<struct type *> range_types;
639d11d3 16534 child_die = die->child;
c906108c
SS
16535 while (child_die && child_die->tag)
16536 {
16537 if (child_die->tag == DW_TAG_subrange_type)
16538 {
f792889a 16539 struct type *child_type = read_type_die (child_die, cu);
9a619af0 16540
f792889a 16541 if (child_type != NULL)
a02abb62 16542 {
0963b4bd
MS
16543 /* The range type was succesfully read. Save it for the
16544 array type creation. */
791afaa2 16545 range_types.push_back (child_type);
a02abb62 16546 }
c906108c
SS
16547 }
16548 child_die = sibling_die (child_die);
16549 }
16550
16551 /* Dwarf2 dimensions are output from left to right, create the
16552 necessary array types in backwards order. */
7ca2d3a3 16553
c906108c 16554 type = element_type;
7ca2d3a3
DL
16555
16556 if (read_array_order (die, cu) == DW_ORD_col_major)
16557 {
16558 int i = 0;
9a619af0 16559
791afaa2 16560 while (i < range_types.size ())
dc53a7ad 16561 type = create_array_type_with_stride (NULL, type, range_types[i++],
a405673c 16562 byte_stride_prop, bit_stride);
7ca2d3a3
DL
16563 }
16564 else
16565 {
791afaa2 16566 size_t ndim = range_types.size ();
7ca2d3a3 16567 while (ndim-- > 0)
dc53a7ad 16568 type = create_array_type_with_stride (NULL, type, range_types[ndim],
a405673c 16569 byte_stride_prop, bit_stride);
7ca2d3a3 16570 }
c906108c 16571
f5f8a009
EZ
16572 /* Understand Dwarf2 support for vector types (like they occur on
16573 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
16574 array type. This is not part of the Dwarf2/3 standard yet, but a
16575 custom vendor extension. The main difference between a regular
16576 array and the vector variant is that vectors are passed by value
16577 to functions. */
e142c38c 16578 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 16579 if (attr)
ea37ba09 16580 make_vector_type (type);
f5f8a009 16581
dbc98a8b
KW
16582 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
16583 implementation may choose to implement triple vectors using this
16584 attribute. */
16585 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16586 if (attr)
16587 {
16588 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16589 TYPE_LENGTH (type) = DW_UNSND (attr);
16590 else
b98664d3 16591 complaint (_("DW_AT_byte_size for array type smaller "
3e43a32a 16592 "than the total size of elements"));
dbc98a8b
KW
16593 }
16594
39cbfefa
DJ
16595 name = dwarf2_name (die, cu);
16596 if (name)
16597 TYPE_NAME (type) = name;
6e70227d 16598
2b4424c3
TT
16599 maybe_set_alignment (cu, die, type);
16600
0963b4bd 16601 /* Install the type in the die. */
7e314c57
JK
16602 set_die_type (die, type, cu);
16603
16604 /* set_die_type should be already done. */
b4ba55a1
JB
16605 set_descriptive_type (type, die, cu);
16606
7e314c57 16607 return type;
c906108c
SS
16608}
16609
7ca2d3a3 16610static enum dwarf_array_dim_ordering
6e70227d 16611read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
16612{
16613 struct attribute *attr;
16614
16615 attr = dwarf2_attr (die, DW_AT_ordering, cu);
16616
aead7601
SM
16617 if (attr)
16618 return (enum dwarf_array_dim_ordering) DW_SND (attr);
7ca2d3a3 16619
0963b4bd
MS
16620 /* GNU F77 is a special case, as at 08/2004 array type info is the
16621 opposite order to the dwarf2 specification, but data is still
16622 laid out as per normal fortran.
7ca2d3a3 16623
0963b4bd
MS
16624 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16625 version checking. */
7ca2d3a3 16626
905e0470
PM
16627 if (cu->language == language_fortran
16628 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
16629 {
16630 return DW_ORD_row_major;
16631 }
16632
6e70227d 16633 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
16634 {
16635 case array_column_major:
16636 return DW_ORD_col_major;
16637 case array_row_major:
16638 default:
16639 return DW_ORD_row_major;
16640 };
16641}
16642
72019c9c 16643/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 16644 the DIE's type field. */
72019c9c 16645
f792889a 16646static struct type *
72019c9c
GM
16647read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16648{
7e314c57
JK
16649 struct type *domain_type, *set_type;
16650 struct attribute *attr;
f792889a 16651
7e314c57
JK
16652 domain_type = die_type (die, cu);
16653
16654 /* The die_type call above may have already set the type for this DIE. */
16655 set_type = get_die_type (die, cu);
16656 if (set_type)
16657 return set_type;
16658
16659 set_type = create_set_type (NULL, domain_type);
16660
16661 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
16662 if (attr)
16663 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 16664
2b4424c3
TT
16665 maybe_set_alignment (cu, die, set_type);
16666
f792889a 16667 return set_die_type (die, set_type, cu);
72019c9c 16668}
7ca2d3a3 16669
0971de02
TT
16670/* A helper for read_common_block that creates a locexpr baton.
16671 SYM is the symbol which we are marking as computed.
16672 COMMON_DIE is the DIE for the common block.
16673 COMMON_LOC is the location expression attribute for the common
16674 block itself.
16675 MEMBER_LOC is the location expression attribute for the particular
16676 member of the common block that we are processing.
16677 CU is the CU from which the above come. */
16678
16679static void
16680mark_common_block_symbol_computed (struct symbol *sym,
16681 struct die_info *common_die,
16682 struct attribute *common_loc,
16683 struct attribute *member_loc,
16684 struct dwarf2_cu *cu)
16685{
518817b3
SM
16686 struct dwarf2_per_objfile *dwarf2_per_objfile
16687 = cu->per_cu->dwarf2_per_objfile;
0971de02
TT
16688 struct objfile *objfile = dwarf2_per_objfile->objfile;
16689 struct dwarf2_locexpr_baton *baton;
16690 gdb_byte *ptr;
16691 unsigned int cu_off;
16692 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16693 LONGEST offset = 0;
16694
16695 gdb_assert (common_loc && member_loc);
16696 gdb_assert (attr_form_is_block (common_loc));
16697 gdb_assert (attr_form_is_block (member_loc)
16698 || attr_form_is_constant (member_loc));
16699
8d749320 16700 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
0971de02
TT
16701 baton->per_cu = cu->per_cu;
16702 gdb_assert (baton->per_cu);
16703
16704 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16705
16706 if (attr_form_is_constant (member_loc))
16707 {
16708 offset = dwarf2_get_attr_constant_value (member_loc, 0);
16709 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16710 }
16711 else
16712 baton->size += DW_BLOCK (member_loc)->size;
16713
224c3ddb 16714 ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
0971de02
TT
16715 baton->data = ptr;
16716
16717 *ptr++ = DW_OP_call4;
9c541725 16718 cu_off = common_die->sect_off - cu->per_cu->sect_off;
0971de02
TT
16719 store_unsigned_integer (ptr, 4, byte_order, cu_off);
16720 ptr += 4;
16721
16722 if (attr_form_is_constant (member_loc))
16723 {
16724 *ptr++ = DW_OP_addr;
16725 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16726 ptr += cu->header.addr_size;
16727 }
16728 else
16729 {
16730 /* We have to copy the data here, because DW_OP_call4 will only
16731 use a DW_AT_location attribute. */
16732 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16733 ptr += DW_BLOCK (member_loc)->size;
16734 }
16735
16736 *ptr++ = DW_OP_plus;
16737 gdb_assert (ptr - baton->data == baton->size);
16738
0971de02 16739 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 16740 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
16741}
16742
4357ac6c
TT
16743/* Create appropriate locally-scoped variables for all the
16744 DW_TAG_common_block entries. Also create a struct common_block
16745 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
16746 is used to sepate the common blocks name namespace from regular
16747 variable names. */
c906108c
SS
16748
16749static void
e7c27a73 16750read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 16751{
0971de02
TT
16752 struct attribute *attr;
16753
16754 attr = dwarf2_attr (die, DW_AT_location, cu);
16755 if (attr)
16756 {
16757 /* Support the .debug_loc offsets. */
16758 if (attr_form_is_block (attr))
16759 {
16760 /* Ok. */
16761 }
16762 else if (attr_form_is_section_offset (attr))
16763 {
16764 dwarf2_complex_location_expr_complaint ();
16765 attr = NULL;
16766 }
16767 else
16768 {
16769 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16770 "common block member");
16771 attr = NULL;
16772 }
16773 }
16774
639d11d3 16775 if (die->child != NULL)
c906108c 16776 {
518817b3 16777 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
4357ac6c
TT
16778 struct die_info *child_die;
16779 size_t n_entries = 0, size;
16780 struct common_block *common_block;
16781 struct symbol *sym;
74ac6d43 16782
4357ac6c
TT
16783 for (child_die = die->child;
16784 child_die && child_die->tag;
16785 child_die = sibling_die (child_die))
16786 ++n_entries;
16787
16788 size = (sizeof (struct common_block)
16789 + (n_entries - 1) * sizeof (struct symbol *));
224c3ddb
SM
16790 common_block
16791 = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16792 size);
4357ac6c
TT
16793 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16794 common_block->n_entries = 0;
16795
16796 for (child_die = die->child;
16797 child_die && child_die->tag;
16798 child_die = sibling_die (child_die))
16799 {
16800 /* Create the symbol in the DW_TAG_common_block block in the current
16801 symbol scope. */
e7c27a73 16802 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
16803 if (sym != NULL)
16804 {
16805 struct attribute *member_loc;
16806
16807 common_block->contents[common_block->n_entries++] = sym;
16808
16809 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16810 cu);
16811 if (member_loc)
16812 {
16813 /* GDB has handled this for a long time, but it is
16814 not specified by DWARF. It seems to have been
16815 emitted by gfortran at least as recently as:
16816 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
b98664d3 16817 complaint (_("Variable in common block has "
0971de02 16818 "DW_AT_data_member_location "
9d8780f0
SM
16819 "- DIE at %s [in module %s]"),
16820 sect_offset_str (child_die->sect_off),
518817b3 16821 objfile_name (objfile));
0971de02
TT
16822
16823 if (attr_form_is_section_offset (member_loc))
16824 dwarf2_complex_location_expr_complaint ();
16825 else if (attr_form_is_constant (member_loc)
16826 || attr_form_is_block (member_loc))
16827 {
16828 if (attr)
16829 mark_common_block_symbol_computed (sym, die, attr,
16830 member_loc, cu);
16831 }
16832 else
16833 dwarf2_complex_location_expr_complaint ();
16834 }
16835 }
c906108c 16836 }
4357ac6c
TT
16837
16838 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16839 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
16840 }
16841}
16842
0114d602 16843/* Create a type for a C++ namespace. */
d9fa45fe 16844
0114d602
DJ
16845static struct type *
16846read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 16847{
518817b3 16848 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
0114d602 16849 const char *previous_prefix, *name;
9219021c 16850 int is_anonymous;
0114d602
DJ
16851 struct type *type;
16852
16853 /* For extensions, reuse the type of the original namespace. */
16854 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16855 {
16856 struct die_info *ext_die;
16857 struct dwarf2_cu *ext_cu = cu;
9a619af0 16858
0114d602
DJ
16859 ext_die = dwarf2_extension (die, &ext_cu);
16860 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
16861
16862 /* EXT_CU may not be the same as CU.
02142a6c 16863 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
16864 return set_die_type (die, type, cu);
16865 }
9219021c 16866
e142c38c 16867 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
16868
16869 /* Now build the name of the current namespace. */
16870
0114d602
DJ
16871 previous_prefix = determine_prefix (die, cu);
16872 if (previous_prefix[0] != '\0')
16873 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 16874 previous_prefix, name, 0, cu);
0114d602
DJ
16875
16876 /* Create the type. */
19f392bc 16877 type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
0114d602 16878
60531b24 16879 return set_die_type (die, type, cu);
0114d602
DJ
16880}
16881
22cee43f 16882/* Read a namespace scope. */
0114d602
DJ
16883
16884static void
16885read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16886{
518817b3 16887 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
0114d602 16888 int is_anonymous;
9219021c 16889
5c4e30ca
DC
16890 /* Add a symbol associated to this if we haven't seen the namespace
16891 before. Also, add a using directive if it's an anonymous
16892 namespace. */
9219021c 16893
f2f0e013 16894 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
16895 {
16896 struct type *type;
16897
0114d602 16898 type = read_type_die (die, cu);
e7c27a73 16899 new_symbol (die, type, cu);
5c4e30ca 16900
e8e80198 16901 namespace_name (die, &is_anonymous, cu);
5c4e30ca 16902 if (is_anonymous)
0114d602
DJ
16903 {
16904 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 16905
eb1e02fd 16906 std::vector<const char *> excludes;
804d2729 16907 add_using_directive (using_directives (cu),
22cee43f 16908 previous_prefix, TYPE_NAME (type), NULL,
eb1e02fd 16909 NULL, excludes, 0, &objfile->objfile_obstack);
0114d602 16910 }
5c4e30ca 16911 }
9219021c 16912
639d11d3 16913 if (die->child != NULL)
d9fa45fe 16914 {
639d11d3 16915 struct die_info *child_die = die->child;
6e70227d 16916
d9fa45fe
DC
16917 while (child_die && child_die->tag)
16918 {
e7c27a73 16919 process_die (child_die, cu);
d9fa45fe
DC
16920 child_die = sibling_die (child_die);
16921 }
16922 }
38d518c9
EZ
16923}
16924
f55ee35c
JK
16925/* Read a Fortran module as type. This DIE can be only a declaration used for
16926 imported module. Still we need that type as local Fortran "use ... only"
16927 declaration imports depend on the created type in determine_prefix. */
16928
16929static struct type *
16930read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16931{
518817b3 16932 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15d034d0 16933 const char *module_name;
f55ee35c
JK
16934 struct type *type;
16935
16936 module_name = dwarf2_name (die, cu);
16937 if (!module_name)
b98664d3 16938 complaint (_("DW_TAG_module has no name, offset %s"),
9d8780f0 16939 sect_offset_str (die->sect_off));
19f392bc 16940 type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
f55ee35c 16941
f55ee35c
JK
16942 return set_die_type (die, type, cu);
16943}
16944
5d7cb8df
JK
16945/* Read a Fortran module. */
16946
16947static void
16948read_module (struct die_info *die, struct dwarf2_cu *cu)
16949{
16950 struct die_info *child_die = die->child;
530e8392
KB
16951 struct type *type;
16952
16953 type = read_type_die (die, cu);
16954 new_symbol (die, type, cu);
5d7cb8df 16955
5d7cb8df
JK
16956 while (child_die && child_die->tag)
16957 {
16958 process_die (child_die, cu);
16959 child_die = sibling_die (child_die);
16960 }
16961}
16962
38d518c9
EZ
16963/* Return the name of the namespace represented by DIE. Set
16964 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16965 namespace. */
16966
16967static const char *
e142c38c 16968namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
16969{
16970 struct die_info *current_die;
16971 const char *name = NULL;
16972
16973 /* Loop through the extensions until we find a name. */
16974
16975 for (current_die = die;
16976 current_die != NULL;
f2f0e013 16977 current_die = dwarf2_extension (die, &cu))
38d518c9 16978 {
96553a0c
DE
16979 /* We don't use dwarf2_name here so that we can detect the absence
16980 of a name -> anonymous namespace. */
7d45c7c3 16981 name = dwarf2_string_attr (die, DW_AT_name, cu);
96553a0c 16982
38d518c9
EZ
16983 if (name != NULL)
16984 break;
16985 }
16986
16987 /* Is it an anonymous namespace? */
16988
16989 *is_anonymous = (name == NULL);
16990 if (*is_anonymous)
2b1dbab0 16991 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
16992
16993 return name;
d9fa45fe
DC
16994}
16995
c906108c
SS
16996/* Extract all information from a DW_TAG_pointer_type DIE and add to
16997 the user defined type vector. */
16998
f792889a 16999static struct type *
e7c27a73 17000read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17001{
518817b3
SM
17002 struct gdbarch *gdbarch
17003 = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
e7c27a73 17004 struct comp_unit_head *cu_header = &cu->header;
c906108c 17005 struct type *type;
8b2dbe47
KB
17006 struct attribute *attr_byte_size;
17007 struct attribute *attr_address_class;
17008 int byte_size, addr_class;
7e314c57
JK
17009 struct type *target_type;
17010
17011 target_type = die_type (die, cu);
c906108c 17012
7e314c57
JK
17013 /* The die_type call above may have already set the type for this DIE. */
17014 type = get_die_type (die, cu);
17015 if (type)
17016 return type;
17017
17018 type = lookup_pointer_type (target_type);
8b2dbe47 17019
e142c38c 17020 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
17021 if (attr_byte_size)
17022 byte_size = DW_UNSND (attr_byte_size);
c906108c 17023 else
8b2dbe47
KB
17024 byte_size = cu_header->addr_size;
17025
e142c38c 17026 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
17027 if (attr_address_class)
17028 addr_class = DW_UNSND (attr_address_class);
17029 else
17030 addr_class = DW_ADDR_none;
17031
2b4424c3
TT
17032 ULONGEST alignment = get_alignment (cu, die);
17033
17034 /* If the pointer size, alignment, or address class is different
17035 than the default, create a type variant marked as such and set
17036 the length accordingly. */
17037 if (TYPE_LENGTH (type) != byte_size
17038 || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17039 && alignment != TYPE_RAW_ALIGN (type))
17040 || addr_class != DW_ADDR_none)
c906108c 17041 {
5e2b427d 17042 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
17043 {
17044 int type_flags;
17045
849957d9 17046 type_flags = gdbarch_address_class_type_flags
5e2b427d 17047 (gdbarch, byte_size, addr_class);
876cecd0
TT
17048 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17049 == 0);
8b2dbe47
KB
17050 type = make_type_with_address_space (type, type_flags);
17051 }
17052 else if (TYPE_LENGTH (type) != byte_size)
17053 {
b98664d3 17054 complaint (_("invalid pointer size %d"), byte_size);
8b2dbe47 17055 }
2b4424c3
TT
17056 else if (TYPE_RAW_ALIGN (type) != alignment)
17057 {
b98664d3 17058 complaint (_("Invalid DW_AT_alignment"
2b4424c3
TT
17059 " - DIE at %s [in module %s]"),
17060 sect_offset_str (die->sect_off),
17061 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17062 }
6e70227d 17063 else
9a619af0
MS
17064 {
17065 /* Should we also complain about unhandled address classes? */
17066 }
c906108c 17067 }
8b2dbe47
KB
17068
17069 TYPE_LENGTH (type) = byte_size;
2b4424c3 17070 set_type_align (type, alignment);
f792889a 17071 return set_die_type (die, type, cu);
c906108c
SS
17072}
17073
17074/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17075 the user defined type vector. */
17076
f792889a 17077static struct type *
e7c27a73 17078read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
17079{
17080 struct type *type;
17081 struct type *to_type;
17082 struct type *domain;
17083
e7c27a73
DJ
17084 to_type = die_type (die, cu);
17085 domain = die_containing_type (die, cu);
0d5de010 17086
7e314c57
JK
17087 /* The calls above may have already set the type for this DIE. */
17088 type = get_die_type (die, cu);
17089 if (type)
17090 return type;
17091
0d5de010
DJ
17092 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17093 type = lookup_methodptr_type (to_type);
7078baeb
TT
17094 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17095 {
518817b3
SM
17096 struct type *new_type
17097 = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
7078baeb
TT
17098
17099 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17100 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17101 TYPE_VARARGS (to_type));
17102 type = lookup_methodptr_type (new_type);
17103 }
0d5de010
DJ
17104 else
17105 type = lookup_memberptr_type (to_type, domain);
c906108c 17106
f792889a 17107 return set_die_type (die, type, cu);
c906108c
SS
17108}
17109
4297a3f0 17110/* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
c906108c
SS
17111 the user defined type vector. */
17112
f792889a 17113static struct type *
4297a3f0
AV
17114read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17115 enum type_code refcode)
c906108c 17116{
e7c27a73 17117 struct comp_unit_head *cu_header = &cu->header;
7e314c57 17118 struct type *type, *target_type;
c906108c
SS
17119 struct attribute *attr;
17120
4297a3f0
AV
17121 gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17122
7e314c57
JK
17123 target_type = die_type (die, cu);
17124
17125 /* The die_type call above may have already set the type for this DIE. */
17126 type = get_die_type (die, cu);
17127 if (type)
17128 return type;
17129
4297a3f0 17130 type = lookup_reference_type (target_type, refcode);
e142c38c 17131 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
17132 if (attr)
17133 {
17134 TYPE_LENGTH (type) = DW_UNSND (attr);
17135 }
17136 else
17137 {
107d2387 17138 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 17139 }
2b4424c3 17140 maybe_set_alignment (cu, die, type);
f792889a 17141 return set_die_type (die, type, cu);
c906108c
SS
17142}
17143
cf363f18
MW
17144/* Add the given cv-qualifiers to the element type of the array. GCC
17145 outputs DWARF type qualifiers that apply to an array, not the
17146 element type. But GDB relies on the array element type to carry
17147 the cv-qualifiers. This mimics section 6.7.3 of the C99
17148 specification. */
17149
17150static struct type *
17151add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17152 struct type *base_type, int cnst, int voltl)
17153{
17154 struct type *el_type, *inner_array;
17155
17156 base_type = copy_type (base_type);
17157 inner_array = base_type;
17158
17159 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17160 {
17161 TYPE_TARGET_TYPE (inner_array) =
17162 copy_type (TYPE_TARGET_TYPE (inner_array));
17163 inner_array = TYPE_TARGET_TYPE (inner_array);
17164 }
17165
17166 el_type = TYPE_TARGET_TYPE (inner_array);
17167 cnst |= TYPE_CONST (el_type);
17168 voltl |= TYPE_VOLATILE (el_type);
17169 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17170
17171 return set_die_type (die, base_type, cu);
17172}
17173
f792889a 17174static struct type *
e7c27a73 17175read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17176{
f792889a 17177 struct type *base_type, *cv_type;
c906108c 17178
e7c27a73 17179 base_type = die_type (die, cu);
7e314c57
JK
17180
17181 /* The die_type call above may have already set the type for this DIE. */
17182 cv_type = get_die_type (die, cu);
17183 if (cv_type)
17184 return cv_type;
17185
2f608a3a
KW
17186 /* In case the const qualifier is applied to an array type, the element type
17187 is so qualified, not the array type (section 6.7.3 of C99). */
17188 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 17189 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 17190
f792889a
DJ
17191 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17192 return set_die_type (die, cv_type, cu);
c906108c
SS
17193}
17194
f792889a 17195static struct type *
e7c27a73 17196read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17197{
f792889a 17198 struct type *base_type, *cv_type;
c906108c 17199
e7c27a73 17200 base_type = die_type (die, cu);
7e314c57
JK
17201
17202 /* The die_type call above may have already set the type for this DIE. */
17203 cv_type = get_die_type (die, cu);
17204 if (cv_type)
17205 return cv_type;
17206
cf363f18
MW
17207 /* In case the volatile qualifier is applied to an array type, the
17208 element type is so qualified, not the array type (section 6.7.3
17209 of C99). */
17210 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17211 return add_array_cv_type (die, cu, base_type, 0, 1);
17212
f792889a
DJ
17213 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17214 return set_die_type (die, cv_type, cu);
c906108c
SS
17215}
17216
06d66ee9
TT
17217/* Handle DW_TAG_restrict_type. */
17218
17219static struct type *
17220read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17221{
17222 struct type *base_type, *cv_type;
17223
17224 base_type = die_type (die, cu);
17225
17226 /* The die_type call above may have already set the type for this DIE. */
17227 cv_type = get_die_type (die, cu);
17228 if (cv_type)
17229 return cv_type;
17230
17231 cv_type = make_restrict_type (base_type);
17232 return set_die_type (die, cv_type, cu);
17233}
17234
a2c2acaf
MW
17235/* Handle DW_TAG_atomic_type. */
17236
17237static struct type *
17238read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17239{
17240 struct type *base_type, *cv_type;
17241
17242 base_type = die_type (die, cu);
17243
17244 /* The die_type call above may have already set the type for this DIE. */
17245 cv_type = get_die_type (die, cu);
17246 if (cv_type)
17247 return cv_type;
17248
17249 cv_type = make_atomic_type (base_type);
17250 return set_die_type (die, cv_type, cu);
17251}
17252
c906108c
SS
17253/* Extract all information from a DW_TAG_string_type DIE and add to
17254 the user defined type vector. It isn't really a user defined type,
17255 but it behaves like one, with other DIE's using an AT_user_def_type
17256 attribute to reference it. */
17257
f792889a 17258static struct type *
e7c27a73 17259read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17260{
518817b3 17261 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3b7538c0 17262 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
17263 struct type *type, *range_type, *index_type, *char_type;
17264 struct attribute *attr;
17265 unsigned int length;
17266
e142c38c 17267 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
17268 if (attr)
17269 {
17270 length = DW_UNSND (attr);
17271 }
17272 else
17273 {
0963b4bd 17274 /* Check for the DW_AT_byte_size attribute. */
e142c38c 17275 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
17276 if (attr)
17277 {
17278 length = DW_UNSND (attr);
17279 }
17280 else
17281 {
17282 length = 1;
17283 }
c906108c 17284 }
6ccb9162 17285
46bf5051 17286 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 17287 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
17288 char_type = language_string_char_type (cu->language_defn, gdbarch);
17289 type = create_string_type (NULL, char_type, range_type);
6ccb9162 17290
f792889a 17291 return set_die_type (die, type, cu);
c906108c
SS
17292}
17293
4d804846
JB
17294/* Assuming that DIE corresponds to a function, returns nonzero
17295 if the function is prototyped. */
17296
17297static int
17298prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17299{
17300 struct attribute *attr;
17301
17302 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17303 if (attr && (DW_UNSND (attr) != 0))
17304 return 1;
17305
17306 /* The DWARF standard implies that the DW_AT_prototyped attribute
17307 is only meaninful for C, but the concept also extends to other
17308 languages that allow unprototyped functions (Eg: Objective C).
17309 For all other languages, assume that functions are always
17310 prototyped. */
17311 if (cu->language != language_c
17312 && cu->language != language_objc
17313 && cu->language != language_opencl)
17314 return 1;
17315
17316 /* RealView does not emit DW_AT_prototyped. We can not distinguish
17317 prototyped and unprototyped functions; default to prototyped,
17318 since that is more common in modern code (and RealView warns
17319 about unprototyped functions). */
17320 if (producer_is_realview (cu->producer))
17321 return 1;
17322
17323 return 0;
17324}
17325
c906108c
SS
17326/* Handle DIES due to C code like:
17327
17328 struct foo
c5aa993b
JM
17329 {
17330 int (*funcp)(int a, long l);
17331 int b;
17332 };
c906108c 17333
0963b4bd 17334 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 17335
f792889a 17336static struct type *
e7c27a73 17337read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17338{
518817b3 17339 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
0963b4bd
MS
17340 struct type *type; /* Type that this function returns. */
17341 struct type *ftype; /* Function that returns above type. */
c906108c
SS
17342 struct attribute *attr;
17343
e7c27a73 17344 type = die_type (die, cu);
7e314c57
JK
17345
17346 /* The die_type call above may have already set the type for this DIE. */
17347 ftype = get_die_type (die, cu);
17348 if (ftype)
17349 return ftype;
17350
0c8b41f1 17351 ftype = lookup_function_type (type);
c906108c 17352
4d804846 17353 if (prototyped_function_p (die, cu))
a6c727b2 17354 TYPE_PROTOTYPED (ftype) = 1;
c906108c 17355
c055b101
CV
17356 /* Store the calling convention in the type if it's available in
17357 the subroutine die. Otherwise set the calling convention to
17358 the default value DW_CC_normal. */
17359 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
17360 if (attr)
17361 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17362 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17363 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17364 else
17365 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 17366
743649fd
MW
17367 /* Record whether the function returns normally to its caller or not
17368 if the DWARF producer set that information. */
17369 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17370 if (attr && (DW_UNSND (attr) != 0))
17371 TYPE_NO_RETURN (ftype) = 1;
17372
76c10ea2
GM
17373 /* We need to add the subroutine type to the die immediately so
17374 we don't infinitely recurse when dealing with parameters
0963b4bd 17375 declared as the same subroutine type. */
76c10ea2 17376 set_die_type (die, ftype, cu);
6e70227d 17377
639d11d3 17378 if (die->child != NULL)
c906108c 17379 {
bb5ed363 17380 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 17381 struct die_info *child_die;
8072405b 17382 int nparams, iparams;
c906108c
SS
17383
17384 /* Count the number of parameters.
17385 FIXME: GDB currently ignores vararg functions, but knows about
17386 vararg member functions. */
8072405b 17387 nparams = 0;
639d11d3 17388 child_die = die->child;
c906108c
SS
17389 while (child_die && child_die->tag)
17390 {
17391 if (child_die->tag == DW_TAG_formal_parameter)
17392 nparams++;
17393 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 17394 TYPE_VARARGS (ftype) = 1;
c906108c
SS
17395 child_die = sibling_die (child_die);
17396 }
17397
17398 /* Allocate storage for parameters and fill them in. */
17399 TYPE_NFIELDS (ftype) = nparams;
17400 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 17401 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 17402
8072405b
JK
17403 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
17404 even if we error out during the parameters reading below. */
17405 for (iparams = 0; iparams < nparams; iparams++)
17406 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17407
17408 iparams = 0;
639d11d3 17409 child_die = die->child;
c906108c
SS
17410 while (child_die && child_die->tag)
17411 {
17412 if (child_die->tag == DW_TAG_formal_parameter)
17413 {
3ce3b1ba
PA
17414 struct type *arg_type;
17415
17416 /* DWARF version 2 has no clean way to discern C++
17417 static and non-static member functions. G++ helps
17418 GDB by marking the first parameter for non-static
17419 member functions (which is the this pointer) as
17420 artificial. We pass this information to
17421 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17422
17423 DWARF version 3 added DW_AT_object_pointer, which GCC
17424 4.5 does not yet generate. */
e142c38c 17425 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
17426 if (attr)
17427 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17428 else
9c37b5ae 17429 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
3ce3b1ba
PA
17430 arg_type = die_type (child_die, cu);
17431
17432 /* RealView does not mark THIS as const, which the testsuite
17433 expects. GCC marks THIS as const in method definitions,
17434 but not in the class specifications (GCC PR 43053). */
17435 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17436 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17437 {
17438 int is_this = 0;
17439 struct dwarf2_cu *arg_cu = cu;
17440 const char *name = dwarf2_name (child_die, cu);
17441
17442 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17443 if (attr)
17444 {
17445 /* If the compiler emits this, use it. */
17446 if (follow_die_ref (die, attr, &arg_cu) == child_die)
17447 is_this = 1;
17448 }
17449 else if (name && strcmp (name, "this") == 0)
17450 /* Function definitions will have the argument names. */
17451 is_this = 1;
17452 else if (name == NULL && iparams == 0)
17453 /* Declarations may not have the names, so like
17454 elsewhere in GDB, assume an artificial first
17455 argument is "this". */
17456 is_this = 1;
17457
17458 if (is_this)
17459 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17460 arg_type, 0);
17461 }
17462
17463 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
17464 iparams++;
17465 }
17466 child_die = sibling_die (child_die);
17467 }
17468 }
17469
76c10ea2 17470 return ftype;
c906108c
SS
17471}
17472
f792889a 17473static struct type *
e7c27a73 17474read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17475{
518817b3 17476 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
0114d602 17477 const char *name = NULL;
3c8e0968 17478 struct type *this_type, *target_type;
c906108c 17479
94af9270 17480 name = dwarf2_full_name (NULL, die, cu);
19f392bc
UW
17481 this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17482 TYPE_TARGET_STUB (this_type) = 1;
f792889a 17483 set_die_type (die, this_type, cu);
3c8e0968
DE
17484 target_type = die_type (die, cu);
17485 if (target_type != this_type)
17486 TYPE_TARGET_TYPE (this_type) = target_type;
17487 else
17488 {
17489 /* Self-referential typedefs are, it seems, not allowed by the DWARF
17490 spec and cause infinite loops in GDB. */
b98664d3 17491 complaint (_("Self-referential DW_TAG_typedef "
9d8780f0
SM
17492 "- DIE at %s [in module %s]"),
17493 sect_offset_str (die->sect_off), objfile_name (objfile));
3c8e0968
DE
17494 TYPE_TARGET_TYPE (this_type) = NULL;
17495 }
f792889a 17496 return this_type;
c906108c
SS
17497}
17498
9b790ce7
UW
17499/* Allocate a floating-point type of size BITS and name NAME. Pass NAME_HINT
17500 (which may be different from NAME) to the architecture back-end to allow
17501 it to guess the correct format if necessary. */
17502
17503static struct type *
17504dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17505 const char *name_hint)
17506{
17507 struct gdbarch *gdbarch = get_objfile_arch (objfile);
17508 const struct floatformat **format;
17509 struct type *type;
17510
17511 format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17512 if (format)
17513 type = init_float_type (objfile, bits, name, format);
17514 else
77b7c781 17515 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
9b790ce7
UW
17516
17517 return type;
17518}
17519
eb77c9df
AB
17520/* Allocate an integer type of size BITS and name NAME. */
17521
17522static struct type *
17523dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17524 int bits, int unsigned_p, const char *name)
17525{
17526 struct type *type;
17527
17528 /* Versions of Intel's C Compiler generate an integer type called "void"
17529 instead of using DW_TAG_unspecified_type. This has been seen on
17530 at least versions 14, 17, and 18. */
35ee2dc2
AB
17531 if (bits == 0 && producer_is_icc (cu) && name != nullptr
17532 && strcmp (name, "void") == 0)
eb77c9df
AB
17533 type = objfile_type (objfile)->builtin_void;
17534 else
17535 type = init_integer_type (objfile, bits, unsigned_p, name);
17536
17537 return type;
17538}
17539
c906108c
SS
17540/* Find a representation of a given base type and install
17541 it in the TYPE field of the die. */
17542
f792889a 17543static struct type *
e7c27a73 17544read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17545{
518817b3 17546 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c
SS
17547 struct type *type;
17548 struct attribute *attr;
19f392bc 17549 int encoding = 0, bits = 0;
15d034d0 17550 const char *name;
c906108c 17551
e142c38c 17552 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
17553 if (attr)
17554 {
17555 encoding = DW_UNSND (attr);
17556 }
e142c38c 17557 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
17558 if (attr)
17559 {
19f392bc 17560 bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
c906108c 17561 }
39cbfefa 17562 name = dwarf2_name (die, cu);
6ccb9162 17563 if (!name)
c906108c 17564 {
b98664d3 17565 complaint (_("DW_AT_name missing from DW_TAG_base_type"));
c906108c 17566 }
6ccb9162
UW
17567
17568 switch (encoding)
c906108c 17569 {
6ccb9162
UW
17570 case DW_ATE_address:
17571 /* Turn DW_ATE_address into a void * pointer. */
77b7c781 17572 type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
19f392bc 17573 type = init_pointer_type (objfile, bits, name, type);
6ccb9162
UW
17574 break;
17575 case DW_ATE_boolean:
19f392bc 17576 type = init_boolean_type (objfile, bits, 1, name);
6ccb9162
UW
17577 break;
17578 case DW_ATE_complex_float:
9b790ce7 17579 type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
19f392bc 17580 type = init_complex_type (objfile, name, type);
6ccb9162
UW
17581 break;
17582 case DW_ATE_decimal_float:
19f392bc 17583 type = init_decfloat_type (objfile, bits, name);
6ccb9162
UW
17584 break;
17585 case DW_ATE_float:
9b790ce7 17586 type = dwarf2_init_float_type (objfile, bits, name, name);
6ccb9162
UW
17587 break;
17588 case DW_ATE_signed:
eb77c9df 17589 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
6ccb9162
UW
17590 break;
17591 case DW_ATE_unsigned:
3b2b8fea
TT
17592 if (cu->language == language_fortran
17593 && name
61012eef 17594 && startswith (name, "character("))
19f392bc
UW
17595 type = init_character_type (objfile, bits, 1, name);
17596 else
eb77c9df 17597 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
6ccb9162
UW
17598 break;
17599 case DW_ATE_signed_char:
6e70227d 17600 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
17601 || cu->language == language_pascal
17602 || cu->language == language_fortran)
19f392bc
UW
17603 type = init_character_type (objfile, bits, 0, name);
17604 else
eb77c9df 17605 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
6ccb9162
UW
17606 break;
17607 case DW_ATE_unsigned_char:
868a0084 17608 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea 17609 || cu->language == language_pascal
c44af4eb
TT
17610 || cu->language == language_fortran
17611 || cu->language == language_rust)
19f392bc
UW
17612 type = init_character_type (objfile, bits, 1, name);
17613 else
eb77c9df 17614 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
6ccb9162 17615 break;
75079b2b 17616 case DW_ATE_UTF:
53e710ac
PA
17617 {
17618 gdbarch *arch = get_objfile_arch (objfile);
17619
17620 if (bits == 16)
17621 type = builtin_type (arch)->builtin_char16;
17622 else if (bits == 32)
17623 type = builtin_type (arch)->builtin_char32;
17624 else
17625 {
b98664d3 17626 complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
53e710ac 17627 bits);
eb77c9df 17628 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
53e710ac
PA
17629 }
17630 return set_die_type (die, type, cu);
17631 }
75079b2b
TT
17632 break;
17633
6ccb9162 17634 default:
b98664d3 17635 complaint (_("unsupported DW_AT_encoding: '%s'"),
6ccb9162 17636 dwarf_type_encoding_name (encoding));
77b7c781 17637 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
6ccb9162 17638 break;
c906108c 17639 }
6ccb9162 17640
0114d602 17641 if (name && strcmp (name, "char") == 0)
876cecd0 17642 TYPE_NOSIGN (type) = 1;
0114d602 17643
2b4424c3
TT
17644 maybe_set_alignment (cu, die, type);
17645
f792889a 17646 return set_die_type (die, type, cu);
c906108c
SS
17647}
17648
80180f79
SA
17649/* Parse dwarf attribute if it's a block, reference or constant and put the
17650 resulting value of the attribute into struct bound_prop.
17651 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
17652
17653static int
17654attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17655 struct dwarf2_cu *cu, struct dynamic_prop *prop)
17656{
17657 struct dwarf2_property_baton *baton;
518817b3
SM
17658 struct obstack *obstack
17659 = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
80180f79
SA
17660
17661 if (attr == NULL || prop == NULL)
17662 return 0;
17663
17664 if (attr_form_is_block (attr))
17665 {
8d749320 17666 baton = XOBNEW (obstack, struct dwarf2_property_baton);
80180f79
SA
17667 baton->referenced_type = NULL;
17668 baton->locexpr.per_cu = cu->per_cu;
17669 baton->locexpr.size = DW_BLOCK (attr)->size;
17670 baton->locexpr.data = DW_BLOCK (attr)->data;
17671 prop->data.baton = baton;
17672 prop->kind = PROP_LOCEXPR;
17673 gdb_assert (prop->data.baton != NULL);
17674 }
17675 else if (attr_form_is_ref (attr))
17676 {
17677 struct dwarf2_cu *target_cu = cu;
17678 struct die_info *target_die;
17679 struct attribute *target_attr;
17680
17681 target_die = follow_die_ref (die, attr, &target_cu);
17682 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
17683 if (target_attr == NULL)
17684 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17685 target_cu);
80180f79
SA
17686 if (target_attr == NULL)
17687 return 0;
17688
df25ebbd 17689 switch (target_attr->name)
80180f79 17690 {
df25ebbd
JB
17691 case DW_AT_location:
17692 if (attr_form_is_section_offset (target_attr))
17693 {
8d749320 17694 baton = XOBNEW (obstack, struct dwarf2_property_baton);
df25ebbd
JB
17695 baton->referenced_type = die_type (target_die, target_cu);
17696 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17697 prop->data.baton = baton;
17698 prop->kind = PROP_LOCLIST;
17699 gdb_assert (prop->data.baton != NULL);
17700 }
17701 else if (attr_form_is_block (target_attr))
17702 {
8d749320 17703 baton = XOBNEW (obstack, struct dwarf2_property_baton);
df25ebbd
JB
17704 baton->referenced_type = die_type (target_die, target_cu);
17705 baton->locexpr.per_cu = cu->per_cu;
17706 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17707 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17708 prop->data.baton = baton;
17709 prop->kind = PROP_LOCEXPR;
17710 gdb_assert (prop->data.baton != NULL);
17711 }
17712 else
17713 {
17714 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17715 "dynamic property");
17716 return 0;
17717 }
17718 break;
17719 case DW_AT_data_member_location:
17720 {
17721 LONGEST offset;
17722
17723 if (!handle_data_member_location (target_die, target_cu,
17724 &offset))
17725 return 0;
17726
8d749320 17727 baton = XOBNEW (obstack, struct dwarf2_property_baton);
6ad395a7
JB
17728 baton->referenced_type = read_type_die (target_die->parent,
17729 target_cu);
df25ebbd
JB
17730 baton->offset_info.offset = offset;
17731 baton->offset_info.type = die_type (target_die, target_cu);
17732 prop->data.baton = baton;
17733 prop->kind = PROP_ADDR_OFFSET;
17734 break;
17735 }
80180f79
SA
17736 }
17737 }
17738 else if (attr_form_is_constant (attr))
17739 {
17740 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17741 prop->kind = PROP_CONST;
17742 }
17743 else
17744 {
17745 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17746 dwarf2_name (die, cu));
17747 return 0;
17748 }
17749
17750 return 1;
17751}
17752
a02abb62
JB
17753/* Read the given DW_AT_subrange DIE. */
17754
f792889a 17755static struct type *
a02abb62
JB
17756read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17757{
4c9ad8c2 17758 struct type *base_type, *orig_base_type;
a02abb62
JB
17759 struct type *range_type;
17760 struct attribute *attr;
729efb13 17761 struct dynamic_prop low, high;
4fae6e18 17762 int low_default_is_valid;
c451ebe5 17763 int high_bound_is_count = 0;
15d034d0 17764 const char *name;
d359392f 17765 ULONGEST negative_mask;
e77813c8 17766
4c9ad8c2
TT
17767 orig_base_type = die_type (die, cu);
17768 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17769 whereas the real type might be. So, we use ORIG_BASE_TYPE when
17770 creating the range type, but we use the result of check_typedef
17771 when examining properties of the type. */
17772 base_type = check_typedef (orig_base_type);
a02abb62 17773
7e314c57
JK
17774 /* The die_type call above may have already set the type for this DIE. */
17775 range_type = get_die_type (die, cu);
17776 if (range_type)
17777 return range_type;
17778
729efb13
SA
17779 low.kind = PROP_CONST;
17780 high.kind = PROP_CONST;
17781 high.data.const_val = 0;
17782
4fae6e18
JK
17783 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17784 omitting DW_AT_lower_bound. */
17785 switch (cu->language)
6e70227d 17786 {
4fae6e18
JK
17787 case language_c:
17788 case language_cplus:
729efb13 17789 low.data.const_val = 0;
4fae6e18
JK
17790 low_default_is_valid = 1;
17791 break;
17792 case language_fortran:
729efb13 17793 low.data.const_val = 1;
4fae6e18
JK
17794 low_default_is_valid = 1;
17795 break;
17796 case language_d:
4fae6e18 17797 case language_objc:
c44af4eb 17798 case language_rust:
729efb13 17799 low.data.const_val = 0;
4fae6e18
JK
17800 low_default_is_valid = (cu->header.version >= 4);
17801 break;
17802 case language_ada:
17803 case language_m2:
17804 case language_pascal:
729efb13 17805 low.data.const_val = 1;
4fae6e18
JK
17806 low_default_is_valid = (cu->header.version >= 4);
17807 break;
17808 default:
729efb13 17809 low.data.const_val = 0;
4fae6e18
JK
17810 low_default_is_valid = 0;
17811 break;
a02abb62
JB
17812 }
17813
e142c38c 17814 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 17815 if (attr)
11c1ba78 17816 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18 17817 else if (!low_default_is_valid)
b98664d3 17818 complaint (_("Missing DW_AT_lower_bound "
9d8780f0
SM
17819 "- DIE at %s [in module %s]"),
17820 sect_offset_str (die->sect_off),
518817b3 17821 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
a02abb62 17822
506f5c41
TV
17823 struct attribute *attr_ub, *attr_count;
17824 attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 17825 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8 17826 {
506f5c41 17827 attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 17828 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 17829 {
c451ebe5
SA
17830 /* If bounds are constant do the final calculation here. */
17831 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17832 high.data.const_val = low.data.const_val + high.data.const_val - 1;
17833 else
17834 high_bound_is_count = 1;
c2ff108b 17835 }
506f5c41
TV
17836 else
17837 {
17838 if (attr_ub != NULL)
17839 complaint (_("Unresolved DW_AT_upper_bound "
17840 "- DIE at %s [in module %s]"),
17841 sect_offset_str (die->sect_off),
17842 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17843 if (attr_count != NULL)
17844 complaint (_("Unresolved DW_AT_count "
17845 "- DIE at %s [in module %s]"),
17846 sect_offset_str (die->sect_off),
17847 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17848 }
17849
e77813c8
PM
17850 }
17851
17852 /* Dwarf-2 specifications explicitly allows to create subrange types
17853 without specifying a base type.
17854 In that case, the base type must be set to the type of
17855 the lower bound, upper bound or count, in that order, if any of these
17856 three attributes references an object that has a type.
17857 If no base type is found, the Dwarf-2 specifications say that
17858 a signed integer type of size equal to the size of an address should
17859 be used.
17860 For the following C code: `extern char gdb_int [];'
17861 GCC produces an empty range DIE.
17862 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 17863 high bound or count are not yet handled by this code. */
e77813c8
PM
17864 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17865 {
518817b3 17866 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
e77813c8
PM
17867 struct gdbarch *gdbarch = get_objfile_arch (objfile);
17868 int addr_size = gdbarch_addr_bit (gdbarch) /8;
17869 struct type *int_type = objfile_type (objfile)->builtin_int;
17870
17871 /* Test "int", "long int", and "long long int" objfile types,
17872 and select the first one having a size above or equal to the
17873 architecture address size. */
17874 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17875 base_type = int_type;
17876 else
17877 {
17878 int_type = objfile_type (objfile)->builtin_long;
17879 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17880 base_type = int_type;
17881 else
17882 {
17883 int_type = objfile_type (objfile)->builtin_long_long;
17884 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17885 base_type = int_type;
17886 }
17887 }
17888 }
a02abb62 17889
dbb9c2b1
JB
17890 /* Normally, the DWARF producers are expected to use a signed
17891 constant form (Eg. DW_FORM_sdata) to express negative bounds.
17892 But this is unfortunately not always the case, as witnessed
17893 with GCC, for instance, where the ambiguous DW_FORM_dataN form
17894 is used instead. To work around that ambiguity, we treat
17895 the bounds as signed, and thus sign-extend their values, when
17896 the base type is signed. */
6e70227d 17897 negative_mask =
d359392f 17898 -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
729efb13
SA
17899 if (low.kind == PROP_CONST
17900 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17901 low.data.const_val |= negative_mask;
17902 if (high.kind == PROP_CONST
17903 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17904 high.data.const_val |= negative_mask;
43bbcdc2 17905
729efb13 17906 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 17907
c451ebe5
SA
17908 if (high_bound_is_count)
17909 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17910
c2ff108b
JK
17911 /* Ada expects an empty array on no boundary attributes. */
17912 if (attr == NULL && cu->language != language_ada)
729efb13 17913 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 17914
39cbfefa
DJ
17915 name = dwarf2_name (die, cu);
17916 if (name)
17917 TYPE_NAME (range_type) = name;
6e70227d 17918
e142c38c 17919 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
17920 if (attr)
17921 TYPE_LENGTH (range_type) = DW_UNSND (attr);
17922
2b4424c3
TT
17923 maybe_set_alignment (cu, die, range_type);
17924
7e314c57
JK
17925 set_die_type (die, range_type, cu);
17926
17927 /* set_die_type should be already done. */
b4ba55a1
JB
17928 set_descriptive_type (range_type, die, cu);
17929
7e314c57 17930 return range_type;
a02abb62 17931}
6e70227d 17932
f792889a 17933static struct type *
81a17f79
JB
17934read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17935{
17936 struct type *type;
81a17f79 17937
518817b3
SM
17938 type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17939 NULL);
0114d602 17940 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 17941
74a2f8ff
JB
17942 /* In Ada, an unspecified type is typically used when the description
17943 of the type is defered to a different unit. When encountering
17944 such a type, we treat it as a stub, and try to resolve it later on,
17945 when needed. */
17946 if (cu->language == language_ada)
17947 TYPE_STUB (type) = 1;
17948
f792889a 17949 return set_die_type (die, type, cu);
81a17f79 17950}
a02abb62 17951
639d11d3
DC
17952/* Read a single die and all its descendents. Set the die's sibling
17953 field to NULL; set other fields in the die correctly, and set all
17954 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
17955 location of the info_ptr after reading all of those dies. PARENT
17956 is the parent of the die in question. */
17957
17958static struct die_info *
dee91e82 17959read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
17960 const gdb_byte *info_ptr,
17961 const gdb_byte **new_info_ptr,
dee91e82 17962 struct die_info *parent)
639d11d3
DC
17963{
17964 struct die_info *die;
d521ce57 17965 const gdb_byte *cur_ptr;
639d11d3
DC
17966 int has_children;
17967
bf6af496 17968 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
17969 if (die == NULL)
17970 {
17971 *new_info_ptr = cur_ptr;
17972 return NULL;
17973 }
93311388 17974 store_in_ref_table (die, reader->cu);
639d11d3
DC
17975
17976 if (has_children)
bf6af496 17977 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
17978 else
17979 {
17980 die->child = NULL;
17981 *new_info_ptr = cur_ptr;
17982 }
17983
17984 die->sibling = NULL;
17985 die->parent = parent;
17986 return die;
17987}
17988
17989/* Read a die, all of its descendents, and all of its siblings; set
17990 all of the fields of all of the dies correctly. Arguments are as
17991 in read_die_and_children. */
17992
17993static struct die_info *
bf6af496 17994read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
17995 const gdb_byte *info_ptr,
17996 const gdb_byte **new_info_ptr,
bf6af496 17997 struct die_info *parent)
639d11d3
DC
17998{
17999 struct die_info *first_die, *last_sibling;
d521ce57 18000 const gdb_byte *cur_ptr;
639d11d3 18001
c906108c 18002 cur_ptr = info_ptr;
639d11d3
DC
18003 first_die = last_sibling = NULL;
18004
18005 while (1)
c906108c 18006 {
639d11d3 18007 struct die_info *die
dee91e82 18008 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 18009
1d325ec1 18010 if (die == NULL)
c906108c 18011 {
639d11d3
DC
18012 *new_info_ptr = cur_ptr;
18013 return first_die;
c906108c 18014 }
1d325ec1
DJ
18015
18016 if (!first_die)
18017 first_die = die;
c906108c 18018 else
1d325ec1
DJ
18019 last_sibling->sibling = die;
18020
18021 last_sibling = die;
c906108c 18022 }
c906108c
SS
18023}
18024
bf6af496
DE
18025/* Read a die, all of its descendents, and all of its siblings; set
18026 all of the fields of all of the dies correctly. Arguments are as
18027 in read_die_and_children.
18028 This the main entry point for reading a DIE and all its children. */
18029
18030static struct die_info *
18031read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
18032 const gdb_byte *info_ptr,
18033 const gdb_byte **new_info_ptr,
bf6af496
DE
18034 struct die_info *parent)
18035{
18036 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18037 new_info_ptr, parent);
18038
b4f54984 18039 if (dwarf_die_debug)
bf6af496
DE
18040 {
18041 fprintf_unfiltered (gdb_stdlog,
18042 "Read die from %s@0x%x of %s:\n",
a32a8923 18043 get_section_name (reader->die_section),
bf6af496
DE
18044 (unsigned) (info_ptr - reader->die_section->buffer),
18045 bfd_get_filename (reader->abfd));
b4f54984 18046 dump_die (die, dwarf_die_debug);
bf6af496
DE
18047 }
18048
18049 return die;
18050}
18051
3019eac3
DE
18052/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18053 attributes.
18054 The caller is responsible for filling in the extra attributes
18055 and updating (*DIEP)->num_attrs.
18056 Set DIEP to point to a newly allocated die with its information,
18057 except for its child, sibling, and parent fields.
18058 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 18059
d521ce57 18060static const gdb_byte *
3019eac3 18061read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 18062 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 18063 int *has_children, int num_extra_attrs)
93311388 18064{
b64f50a1 18065 unsigned int abbrev_number, bytes_read, i;
93311388
DE
18066 struct abbrev_info *abbrev;
18067 struct die_info *die;
18068 struct dwarf2_cu *cu = reader->cu;
18069 bfd *abfd = reader->abfd;
18070
9c541725 18071 sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
93311388
DE
18072 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18073 info_ptr += bytes_read;
18074 if (!abbrev_number)
18075 {
18076 *diep = NULL;
18077 *has_children = 0;
18078 return info_ptr;
18079 }
18080
685af9cd 18081 abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
93311388 18082 if (!abbrev)
348e048f
DE
18083 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18084 abbrev_number,
18085 bfd_get_filename (abfd));
18086
3019eac3 18087 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
9c541725 18088 die->sect_off = sect_off;
93311388
DE
18089 die->tag = abbrev->tag;
18090 die->abbrev = abbrev_number;
18091
3019eac3
DE
18092 /* Make the result usable.
18093 The caller needs to update num_attrs after adding the extra
18094 attributes. */
93311388
DE
18095 die->num_attrs = abbrev->num_attrs;
18096
18097 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
18098 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18099 info_ptr);
93311388
DE
18100
18101 *diep = die;
18102 *has_children = abbrev->has_children;
18103 return info_ptr;
18104}
18105
3019eac3
DE
18106/* Read a die and all its attributes.
18107 Set DIEP to point to a newly allocated die with its information,
18108 except for its child, sibling, and parent fields.
18109 Set HAS_CHILDREN to tell whether the die has children or not. */
18110
d521ce57 18111static const gdb_byte *
3019eac3 18112read_full_die (const struct die_reader_specs *reader,
d521ce57 18113 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
18114 int *has_children)
18115{
d521ce57 18116 const gdb_byte *result;
bf6af496
DE
18117
18118 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18119
b4f54984 18120 if (dwarf_die_debug)
bf6af496
DE
18121 {
18122 fprintf_unfiltered (gdb_stdlog,
18123 "Read die from %s@0x%x of %s:\n",
a32a8923 18124 get_section_name (reader->die_section),
bf6af496
DE
18125 (unsigned) (info_ptr - reader->die_section->buffer),
18126 bfd_get_filename (reader->abfd));
b4f54984 18127 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
18128 }
18129
18130 return result;
3019eac3 18131}
433df2d4
DE
18132\f
18133/* Abbreviation tables.
3019eac3 18134
433df2d4 18135 In DWARF version 2, the description of the debugging information is
c906108c
SS
18136 stored in a separate .debug_abbrev section. Before we read any
18137 dies from a section we read in all abbreviations and install them
433df2d4
DE
18138 in a hash table. */
18139
18140/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
18141
685af9cd
TT
18142struct abbrev_info *
18143abbrev_table::alloc_abbrev ()
433df2d4
DE
18144{
18145 struct abbrev_info *abbrev;
18146
685af9cd 18147 abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
433df2d4 18148 memset (abbrev, 0, sizeof (struct abbrev_info));
8d749320 18149
433df2d4
DE
18150 return abbrev;
18151}
18152
18153/* Add an abbreviation to the table. */
c906108c 18154
685af9cd
TT
18155void
18156abbrev_table::add_abbrev (unsigned int abbrev_number,
18157 struct abbrev_info *abbrev)
433df2d4
DE
18158{
18159 unsigned int hash_number;
18160
18161 hash_number = abbrev_number % ABBREV_HASH_SIZE;
4a17f768
YQ
18162 abbrev->next = m_abbrevs[hash_number];
18163 m_abbrevs[hash_number] = abbrev;
433df2d4 18164}
dee91e82 18165
433df2d4
DE
18166/* Look up an abbrev in the table.
18167 Returns NULL if the abbrev is not found. */
18168
685af9cd
TT
18169struct abbrev_info *
18170abbrev_table::lookup_abbrev (unsigned int abbrev_number)
c906108c 18171{
433df2d4
DE
18172 unsigned int hash_number;
18173 struct abbrev_info *abbrev;
18174
18175 hash_number = abbrev_number % ABBREV_HASH_SIZE;
4a17f768 18176 abbrev = m_abbrevs[hash_number];
433df2d4
DE
18177
18178 while (abbrev)
18179 {
18180 if (abbrev->number == abbrev_number)
18181 return abbrev;
18182 abbrev = abbrev->next;
18183 }
18184 return NULL;
18185}
18186
18187/* Read in an abbrev table. */
18188
685af9cd 18189static abbrev_table_up
ed2dc618
SM
18190abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18191 struct dwarf2_section_info *section,
9c541725 18192 sect_offset sect_off)
433df2d4
DE
18193{
18194 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 18195 bfd *abfd = get_section_bfd_owner (section);
d521ce57 18196 const gdb_byte *abbrev_ptr;
c906108c
SS
18197 struct abbrev_info *cur_abbrev;
18198 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 18199 unsigned int abbrev_form;
f3dd6933
DJ
18200 struct attr_abbrev *cur_attrs;
18201 unsigned int allocated_attrs;
c906108c 18202
685af9cd 18203 abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
c906108c 18204
433df2d4 18205 dwarf2_read_section (objfile, section);
9c541725 18206 abbrev_ptr = section->buffer + to_underlying (sect_off);
c906108c
SS
18207 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18208 abbrev_ptr += bytes_read;
18209
f3dd6933 18210 allocated_attrs = ATTR_ALLOC_CHUNK;
8d749320 18211 cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
6e70227d 18212
0963b4bd 18213 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
18214 while (abbrev_number)
18215 {
685af9cd 18216 cur_abbrev = abbrev_table->alloc_abbrev ();
c906108c
SS
18217
18218 /* read in abbrev header */
18219 cur_abbrev->number = abbrev_number;
aead7601
SM
18220 cur_abbrev->tag
18221 = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
c906108c
SS
18222 abbrev_ptr += bytes_read;
18223 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18224 abbrev_ptr += 1;
18225
18226 /* now read in declarations */
22d2f3ab 18227 for (;;)
c906108c 18228 {
43988095
JK
18229 LONGEST implicit_const;
18230
22d2f3ab
JK
18231 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18232 abbrev_ptr += bytes_read;
18233 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18234 abbrev_ptr += bytes_read;
43988095
JK
18235 if (abbrev_form == DW_FORM_implicit_const)
18236 {
18237 implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18238 &bytes_read);
18239 abbrev_ptr += bytes_read;
18240 }
18241 else
18242 {
18243 /* Initialize it due to a false compiler warning. */
18244 implicit_const = -1;
18245 }
22d2f3ab
JK
18246
18247 if (abbrev_name == 0)
18248 break;
18249
f3dd6933 18250 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 18251 {
f3dd6933
DJ
18252 allocated_attrs += ATTR_ALLOC_CHUNK;
18253 cur_attrs
224c3ddb 18254 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
c906108c 18255 }
ae038cb0 18256
aead7601
SM
18257 cur_attrs[cur_abbrev->num_attrs].name
18258 = (enum dwarf_attribute) abbrev_name;
22d2f3ab 18259 cur_attrs[cur_abbrev->num_attrs].form
aead7601 18260 = (enum dwarf_form) abbrev_form;
43988095 18261 cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
22d2f3ab 18262 ++cur_abbrev->num_attrs;
c906108c
SS
18263 }
18264
8d749320
SM
18265 cur_abbrev->attrs =
18266 XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18267 cur_abbrev->num_attrs);
f3dd6933
DJ
18268 memcpy (cur_abbrev->attrs, cur_attrs,
18269 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18270
685af9cd 18271 abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
c906108c
SS
18272
18273 /* Get next abbreviation.
18274 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
18275 always properly terminated with an abbrev number of 0.
18276 Exit loop if we encounter an abbreviation which we have
18277 already read (which means we are about to read the abbreviations
18278 for the next compile unit) or if the end of the abbreviation
18279 table is reached. */
433df2d4 18280 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
18281 break;
18282 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18283 abbrev_ptr += bytes_read;
685af9cd 18284 if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
c906108c
SS
18285 break;
18286 }
f3dd6933
DJ
18287
18288 xfree (cur_attrs);
433df2d4 18289 return abbrev_table;
c906108c
SS
18290}
18291
72bf9492
DJ
18292/* Returns nonzero if TAG represents a type that we might generate a partial
18293 symbol for. */
18294
18295static int
18296is_type_tag_for_partial (int tag)
18297{
18298 switch (tag)
18299 {
18300#if 0
18301 /* Some types that would be reasonable to generate partial symbols for,
18302 that we don't at present. */
18303 case DW_TAG_array_type:
18304 case DW_TAG_file_type:
18305 case DW_TAG_ptr_to_member_type:
18306 case DW_TAG_set_type:
18307 case DW_TAG_string_type:
18308 case DW_TAG_subroutine_type:
18309#endif
18310 case DW_TAG_base_type:
18311 case DW_TAG_class_type:
680b30c7 18312 case DW_TAG_interface_type:
72bf9492
DJ
18313 case DW_TAG_enumeration_type:
18314 case DW_TAG_structure_type:
18315 case DW_TAG_subrange_type:
18316 case DW_TAG_typedef:
18317 case DW_TAG_union_type:
18318 return 1;
18319 default:
18320 return 0;
18321 }
18322}
18323
18324/* Load all DIEs that are interesting for partial symbols into memory. */
18325
18326static struct partial_die_info *
dee91e82 18327load_partial_dies (const struct die_reader_specs *reader,
d521ce57 18328 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 18329{
dee91e82 18330 struct dwarf2_cu *cu = reader->cu;
518817b3 18331 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
72bf9492 18332 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
72bf9492 18333 unsigned int bytes_read;
5afb4e99 18334 unsigned int load_all = 0;
72bf9492
DJ
18335 int nesting_level = 1;
18336
18337 parent_die = NULL;
18338 last_die = NULL;
18339
7adf1e79
DE
18340 gdb_assert (cu->per_cu != NULL);
18341 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
18342 load_all = 1;
18343
72bf9492
DJ
18344 cu->partial_dies
18345 = htab_create_alloc_ex (cu->header.length / 12,
18346 partial_die_hash,
18347 partial_die_eq,
18348 NULL,
18349 &cu->comp_unit_obstack,
18350 hashtab_obstack_allocate,
18351 dummy_obstack_deallocate);
18352
72bf9492
DJ
18353 while (1)
18354 {
685af9cd 18355 abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
72bf9492
DJ
18356
18357 /* A NULL abbrev means the end of a series of children. */
18358 if (abbrev == NULL)
18359 {
18360 if (--nesting_level == 0)
cd9983dd
YQ
18361 return first_die;
18362
72bf9492
DJ
18363 info_ptr += bytes_read;
18364 last_die = parent_die;
18365 parent_die = parent_die->die_parent;
18366 continue;
18367 }
18368
98bfdba5
PA
18369 /* Check for template arguments. We never save these; if
18370 they're seen, we just mark the parent, and go on our way. */
18371 if (parent_die != NULL
18372 && cu->language == language_cplus
18373 && (abbrev->tag == DW_TAG_template_type_param
18374 || abbrev->tag == DW_TAG_template_value_param))
18375 {
18376 parent_die->has_template_arguments = 1;
18377
18378 if (!load_all)
18379 {
18380 /* We don't need a partial DIE for the template argument. */
dee91e82 18381 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
18382 continue;
18383 }
18384 }
18385
0d99eb77 18386 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
18387 Skip their other children. */
18388 if (!load_all
18389 && cu->language == language_cplus
18390 && parent_die != NULL
18391 && parent_die->tag == DW_TAG_subprogram)
18392 {
dee91e82 18393 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
18394 continue;
18395 }
18396
5afb4e99
DJ
18397 /* Check whether this DIE is interesting enough to save. Normally
18398 we would not be interested in members here, but there may be
18399 later variables referencing them via DW_AT_specification (for
18400 static members). */
18401 if (!load_all
18402 && !is_type_tag_for_partial (abbrev->tag)
72929c62 18403 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
18404 && abbrev->tag != DW_TAG_enumerator
18405 && abbrev->tag != DW_TAG_subprogram
b1dc1806 18406 && abbrev->tag != DW_TAG_inlined_subroutine
bc30ff58 18407 && abbrev->tag != DW_TAG_lexical_block
72bf9492 18408 && abbrev->tag != DW_TAG_variable
5afb4e99 18409 && abbrev->tag != DW_TAG_namespace
f55ee35c 18410 && abbrev->tag != DW_TAG_module
95554aad 18411 && abbrev->tag != DW_TAG_member
74921315
KS
18412 && abbrev->tag != DW_TAG_imported_unit
18413 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
18414 {
18415 /* Otherwise we skip to the next sibling, if any. */
dee91e82 18416 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
18417 continue;
18418 }
18419
6f06d47b
YQ
18420 struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18421 abbrev);
cd9983dd 18422
48fbe735 18423 info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
72bf9492
DJ
18424
18425 /* This two-pass algorithm for processing partial symbols has a
18426 high cost in cache pressure. Thus, handle some simple cases
18427 here which cover the majority of C partial symbols. DIEs
18428 which neither have specification tags in them, nor could have
18429 specification tags elsewhere pointing at them, can simply be
18430 processed and discarded.
18431
18432 This segment is also optional; scan_partial_symbols and
18433 add_partial_symbol will handle these DIEs if we chain
18434 them in normally. When compilers which do not emit large
18435 quantities of duplicate debug information are more common,
18436 this code can probably be removed. */
18437
18438 /* Any complete simple types at the top level (pretty much all
18439 of them, for a language without namespaces), can be processed
18440 directly. */
18441 if (parent_die == NULL
cd9983dd
YQ
18442 && pdi.has_specification == 0
18443 && pdi.is_declaration == 0
18444 && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18445 || pdi.tag == DW_TAG_base_type
18446 || pdi.tag == DW_TAG_subrange_type))
72bf9492 18447 {
cd9983dd
YQ
18448 if (building_psymtab && pdi.name != NULL)
18449 add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
79748972 18450 VAR_DOMAIN, LOC_TYPEDEF, -1,
bb5ed363 18451 &objfile->static_psymbols,
1762568f 18452 0, cu->language, objfile);
cd9983dd 18453 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
72bf9492
DJ
18454 continue;
18455 }
18456
d8228535
JK
18457 /* The exception for DW_TAG_typedef with has_children above is
18458 a workaround of GCC PR debug/47510. In the case of this complaint
a737d952 18459 type_name_or_error will error on such types later.
d8228535
JK
18460
18461 GDB skipped children of DW_TAG_typedef by the shortcut above and then
18462 it could not find the child DIEs referenced later, this is checked
18463 above. In correct DWARF DW_TAG_typedef should have no children. */
18464
cd9983dd 18465 if (pdi.tag == DW_TAG_typedef && pdi.has_children)
b98664d3 18466 complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
9d8780f0 18467 "- DIE at %s [in module %s]"),
cd9983dd 18468 sect_offset_str (pdi.sect_off), objfile_name (objfile));
d8228535 18469
72bf9492
DJ
18470 /* If we're at the second level, and we're an enumerator, and
18471 our parent has no specification (meaning possibly lives in a
18472 namespace elsewhere), then we can add the partial symbol now
18473 instead of queueing it. */
cd9983dd 18474 if (pdi.tag == DW_TAG_enumerator
72bf9492
DJ
18475 && parent_die != NULL
18476 && parent_die->die_parent == NULL
18477 && parent_die->tag == DW_TAG_enumeration_type
18478 && parent_die->has_specification == 0)
18479 {
cd9983dd 18480 if (pdi.name == NULL)
b98664d3 18481 complaint (_("malformed enumerator DIE ignored"));
72bf9492 18482 else if (building_psymtab)
cd9983dd 18483 add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
79748972 18484 VAR_DOMAIN, LOC_CONST, -1,
9c37b5ae 18485 cu->language == language_cplus
bb5ed363
DE
18486 ? &objfile->global_psymbols
18487 : &objfile->static_psymbols,
1762568f 18488 0, cu->language, objfile);
72bf9492 18489
cd9983dd 18490 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
72bf9492
DJ
18491 continue;
18492 }
18493
cd9983dd 18494 struct partial_die_info *part_die
6f06d47b 18495 = new (&cu->comp_unit_obstack) partial_die_info (pdi);
cd9983dd 18496
72bf9492
DJ
18497 /* We'll save this DIE so link it in. */
18498 part_die->die_parent = parent_die;
18499 part_die->die_sibling = NULL;
18500 part_die->die_child = NULL;
18501
18502 if (last_die && last_die == parent_die)
18503 last_die->die_child = part_die;
18504 else if (last_die)
18505 last_die->die_sibling = part_die;
18506
18507 last_die = part_die;
18508
18509 if (first_die == NULL)
18510 first_die = part_die;
18511
18512 /* Maybe add the DIE to the hash table. Not all DIEs that we
18513 find interesting need to be in the hash table, because we
18514 also have the parent/sibling/child chains; only those that we
18515 might refer to by offset later during partial symbol reading.
18516
18517 For now this means things that might have be the target of a
18518 DW_AT_specification, DW_AT_abstract_origin, or
18519 DW_AT_extension. DW_AT_extension will refer only to
18520 namespaces; DW_AT_abstract_origin refers to functions (and
18521 many things under the function DIE, but we do not recurse
18522 into function DIEs during partial symbol reading) and
18523 possibly variables as well; DW_AT_specification refers to
18524 declarations. Declarations ought to have the DW_AT_declaration
18525 flag. It happens that GCC forgets to put it in sometimes, but
18526 only for functions, not for types.
18527
18528 Adding more things than necessary to the hash table is harmless
18529 except for the performance cost. Adding too few will result in
5afb4e99
DJ
18530 wasted time in find_partial_die, when we reread the compilation
18531 unit with load_all_dies set. */
72bf9492 18532
5afb4e99 18533 if (load_all
72929c62 18534 || abbrev->tag == DW_TAG_constant
5afb4e99 18535 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
18536 || abbrev->tag == DW_TAG_variable
18537 || abbrev->tag == DW_TAG_namespace
18538 || part_die->is_declaration)
18539 {
18540 void **slot;
18541
18542 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
9c541725
PA
18543 to_underlying (part_die->sect_off),
18544 INSERT);
72bf9492
DJ
18545 *slot = part_die;
18546 }
18547
72bf9492 18548 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 18549 we have no reason to follow the children of structures; for other
98bfdba5
PA
18550 languages we have to, so that we can get at method physnames
18551 to infer fully qualified class names, for DW_AT_specification,
18552 and for C++ template arguments. For C++, we also look one level
18553 inside functions to find template arguments (if the name of the
18554 function does not already contain the template arguments).
bc30ff58
JB
18555
18556 For Ada, we need to scan the children of subprograms and lexical
18557 blocks as well because Ada allows the definition of nested
18558 entities that could be interesting for the debugger, such as
18559 nested subprograms for instance. */
72bf9492 18560 if (last_die->has_children
5afb4e99
DJ
18561 && (load_all
18562 || last_die->tag == DW_TAG_namespace
f55ee35c 18563 || last_die->tag == DW_TAG_module
72bf9492 18564 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
18565 || (cu->language == language_cplus
18566 && last_die->tag == DW_TAG_subprogram
18567 && (last_die->name == NULL
18568 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
18569 || (cu->language != language_c
18570 && (last_die->tag == DW_TAG_class_type
680b30c7 18571 || last_die->tag == DW_TAG_interface_type
72bf9492 18572 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
18573 || last_die->tag == DW_TAG_union_type))
18574 || (cu->language == language_ada
18575 && (last_die->tag == DW_TAG_subprogram
18576 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
18577 {
18578 nesting_level++;
18579 parent_die = last_die;
18580 continue;
18581 }
18582
18583 /* Otherwise we skip to the next sibling, if any. */
dee91e82 18584 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
18585
18586 /* Back to the top, do it again. */
18587 }
18588}
18589
6f06d47b
YQ
18590partial_die_info::partial_die_info (sect_offset sect_off_,
18591 struct abbrev_info *abbrev)
18592 : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18593{
18594}
18595
35cc7ed7
YQ
18596/* Read a minimal amount of information into the minimal die structure.
18597 INFO_PTR should point just after the initial uleb128 of a DIE. */
c906108c 18598
48fbe735
YQ
18599const gdb_byte *
18600partial_die_info::read (const struct die_reader_specs *reader,
18601 const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
c906108c 18602{
dee91e82 18603 struct dwarf2_cu *cu = reader->cu;
518817b3
SM
18604 struct dwarf2_per_objfile *dwarf2_per_objfile
18605 = cu->per_cu->dwarf2_per_objfile;
fa238c03 18606 unsigned int i;
c5aa993b 18607 int has_low_pc_attr = 0;
c906108c 18608 int has_high_pc_attr = 0;
91da1414 18609 int high_pc_relative = 0;
c906108c 18610
fd0a254f 18611 for (i = 0; i < abbrev.num_attrs; ++i)
c906108c 18612 {
48fbe735
YQ
18613 struct attribute attr;
18614
fd0a254f 18615 info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
c906108c
SS
18616
18617 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 18618 partial symbol table. */
c906108c
SS
18619 switch (attr.name)
18620 {
18621 case DW_AT_name:
48fbe735 18622 switch (tag)
71c25dea
TT
18623 {
18624 case DW_TAG_compile_unit:
95554aad 18625 case DW_TAG_partial_unit:
348e048f 18626 case DW_TAG_type_unit:
71c25dea
TT
18627 /* Compilation units have a DW_AT_name that is a filename, not
18628 a source language identifier. */
18629 case DW_TAG_enumeration_type:
18630 case DW_TAG_enumerator:
18631 /* These tags always have simple identifiers already; no need
18632 to canonicalize them. */
48fbe735 18633 name = DW_STRING (&attr);
71c25dea
TT
18634 break;
18635 default:
48fbe735
YQ
18636 {
18637 struct objfile *objfile = dwarf2_per_objfile->objfile;
18638
18639 name
18640 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18641 &objfile->per_bfd->storage_obstack);
18642 }
71c25dea
TT
18643 break;
18644 }
c906108c 18645 break;
31ef98ae 18646 case DW_AT_linkage_name:
c906108c 18647 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
18648 /* Note that both forms of linkage name might appear. We
18649 assume they will be the same, and we only store the last
18650 one we see. */
94af9270 18651 if (cu->language == language_ada)
48fbe735
YQ
18652 name = DW_STRING (&attr);
18653 linkage_name = DW_STRING (&attr);
c906108c
SS
18654 break;
18655 case DW_AT_low_pc:
18656 has_low_pc_attr = 1;
48fbe735 18657 lowpc = attr_value_as_address (&attr);
c906108c
SS
18658 break;
18659 case DW_AT_high_pc:
18660 has_high_pc_attr = 1;
48fbe735 18661 highpc = attr_value_as_address (&attr);
31aa7e4e
JB
18662 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18663 high_pc_relative = 1;
c906108c
SS
18664 break;
18665 case DW_AT_location:
0963b4bd 18666 /* Support the .debug_loc offsets. */
8e19ed76
PS
18667 if (attr_form_is_block (&attr))
18668 {
48fbe735 18669 d.locdesc = DW_BLOCK (&attr);
8e19ed76 18670 }
3690dd37 18671 else if (attr_form_is_section_offset (&attr))
8e19ed76 18672 {
4d3c2250 18673 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
18674 }
18675 else
18676 {
4d3c2250
KB
18677 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18678 "partial symbol information");
8e19ed76 18679 }
c906108c 18680 break;
c906108c 18681 case DW_AT_external:
48fbe735 18682 is_external = DW_UNSND (&attr);
c906108c
SS
18683 break;
18684 case DW_AT_declaration:
48fbe735 18685 is_declaration = DW_UNSND (&attr);
c906108c
SS
18686 break;
18687 case DW_AT_type:
48fbe735 18688 has_type = 1;
c906108c
SS
18689 break;
18690 case DW_AT_abstract_origin:
18691 case DW_AT_specification:
72bf9492 18692 case DW_AT_extension:
48fbe735
YQ
18693 has_specification = 1;
18694 spec_offset = dwarf2_get_ref_die_offset (&attr);
18695 spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
36586728 18696 || cu->per_cu->is_dwz);
c906108c
SS
18697 break;
18698 case DW_AT_sibling:
18699 /* Ignore absolute siblings, they might point outside of
18700 the current compile unit. */
18701 if (attr.form == DW_FORM_ref_addr)
b98664d3 18702 complaint (_("ignoring absolute DW_AT_sibling"));
c906108c 18703 else
b9502d3f 18704 {
48fbe735 18705 const gdb_byte *buffer = reader->buffer;
9c541725
PA
18706 sect_offset off = dwarf2_get_ref_die_offset (&attr);
18707 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
b9502d3f
WN
18708
18709 if (sibling_ptr < info_ptr)
b98664d3 18710 complaint (_("DW_AT_sibling points backwards"));
22869d73
KS
18711 else if (sibling_ptr > reader->buffer_end)
18712 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f 18713 else
48fbe735 18714 sibling = sibling_ptr;
b9502d3f 18715 }
c906108c 18716 break;
fa4028e9 18717 case DW_AT_byte_size:
48fbe735 18718 has_byte_size = 1;
fa4028e9 18719 break;
ff908ebf 18720 case DW_AT_const_value:
48fbe735 18721 has_const_value = 1;
ff908ebf 18722 break;
68511cec
CES
18723 case DW_AT_calling_convention:
18724 /* DWARF doesn't provide a way to identify a program's source-level
18725 entry point. DW_AT_calling_convention attributes are only meant
18726 to describe functions' calling conventions.
18727
18728 However, because it's a necessary piece of information in
0c1b455e
TT
18729 Fortran, and before DWARF 4 DW_CC_program was the only
18730 piece of debugging information whose definition refers to
18731 a 'main program' at all, several compilers marked Fortran
18732 main programs with DW_CC_program --- even when those
18733 functions use the standard calling conventions.
18734
18735 Although DWARF now specifies a way to provide this
18736 information, we support this practice for backward
18737 compatibility. */
68511cec 18738 if (DW_UNSND (&attr) == DW_CC_program
0c1b455e 18739 && cu->language == language_fortran)
48fbe735 18740 main_subprogram = 1;
68511cec 18741 break;
481860b3
GB
18742 case DW_AT_inline:
18743 if (DW_UNSND (&attr) == DW_INL_inlined
18744 || DW_UNSND (&attr) == DW_INL_declared_inlined)
48fbe735 18745 may_be_inlined = 1;
481860b3 18746 break;
95554aad
TT
18747
18748 case DW_AT_import:
48fbe735 18749 if (tag == DW_TAG_imported_unit)
36586728 18750 {
48fbe735
YQ
18751 d.sect_off = dwarf2_get_ref_die_offset (&attr);
18752 is_dwz = (attr.form == DW_FORM_GNU_ref_alt
36586728
TT
18753 || cu->per_cu->is_dwz);
18754 }
95554aad
TT
18755 break;
18756
0c1b455e 18757 case DW_AT_main_subprogram:
48fbe735 18758 main_subprogram = DW_UNSND (&attr);
0c1b455e
TT
18759 break;
18760
c906108c
SS
18761 default:
18762 break;
18763 }
18764 }
18765
91da1414 18766 if (high_pc_relative)
48fbe735 18767 highpc += lowpc;
91da1414 18768
9373cf26
JK
18769 if (has_low_pc_attr && has_high_pc_attr)
18770 {
18771 /* When using the GNU linker, .gnu.linkonce. sections are used to
18772 eliminate duplicate copies of functions and vtables and such.
18773 The linker will arbitrarily choose one and discard the others.
18774 The AT_*_pc values for such functions refer to local labels in
18775 these sections. If the section from that file was discarded, the
18776 labels are not in the output, so the relocs get a value of 0.
18777 If this is a discarded function, mark the pc bounds as invalid,
18778 so that GDB will ignore it. */
48fbe735 18779 if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
9373cf26 18780 {
48fbe735 18781 struct objfile *objfile = dwarf2_per_objfile->objfile;
bb5ed363 18782 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26 18783
b98664d3 18784 complaint (_("DW_AT_low_pc %s is zero "
9d8780f0 18785 "for DIE at %s [in module %s]"),
48fbe735
YQ
18786 paddress (gdbarch, lowpc),
18787 sect_offset_str (sect_off),
9d8780f0 18788 objfile_name (objfile));
9373cf26
JK
18789 }
18790 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
48fbe735 18791 else if (lowpc >= highpc)
9373cf26 18792 {
48fbe735 18793 struct objfile *objfile = dwarf2_per_objfile->objfile;
bb5ed363 18794 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26 18795
b98664d3 18796 complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
9d8780f0 18797 "for DIE at %s [in module %s]"),
48fbe735
YQ
18798 paddress (gdbarch, lowpc),
18799 paddress (gdbarch, highpc),
18800 sect_offset_str (sect_off),
9c541725 18801 objfile_name (objfile));
9373cf26
JK
18802 }
18803 else
48fbe735 18804 has_pc_info = 1;
9373cf26 18805 }
85cbf3d3 18806
c906108c
SS
18807 return info_ptr;
18808}
18809
72bf9492
DJ
18810/* Find a cached partial DIE at OFFSET in CU. */
18811
d590ff25
YQ
18812struct partial_die_info *
18813dwarf2_cu::find_partial_die (sect_offset sect_off)
72bf9492
DJ
18814{
18815 struct partial_die_info *lookup_die = NULL;
6f06d47b 18816 struct partial_die_info part_die (sect_off);
72bf9492 18817
9a3c8263 18818 lookup_die = ((struct partial_die_info *)
d590ff25 18819 htab_find_with_hash (partial_dies, &part_die,
9c541725 18820 to_underlying (sect_off)));
72bf9492 18821
72bf9492
DJ
18822 return lookup_die;
18823}
18824
348e048f
DE
18825/* Find a partial DIE at OFFSET, which may or may not be in CU,
18826 except in the case of .debug_types DIEs which do not reference
18827 outside their CU (they do however referencing other types via
55f1336d 18828 DW_FORM_ref_sig8). */
72bf9492
DJ
18829
18830static struct partial_die_info *
9c541725 18831find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 18832{
518817b3
SM
18833 struct dwarf2_per_objfile *dwarf2_per_objfile
18834 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 18835 struct objfile *objfile = dwarf2_per_objfile->objfile;
5afb4e99
DJ
18836 struct dwarf2_per_cu_data *per_cu = NULL;
18837 struct partial_die_info *pd = NULL;
72bf9492 18838
36586728 18839 if (offset_in_dwz == cu->per_cu->is_dwz
9c541725 18840 && offset_in_cu_p (&cu->header, sect_off))
5afb4e99 18841 {
d590ff25 18842 pd = cu->find_partial_die (sect_off);
5afb4e99
DJ
18843 if (pd != NULL)
18844 return pd;
0d99eb77
DE
18845 /* We missed recording what we needed.
18846 Load all dies and try again. */
18847 per_cu = cu->per_cu;
5afb4e99 18848 }
0d99eb77
DE
18849 else
18850 {
18851 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 18852 if (cu->per_cu->is_debug_types)
0d99eb77 18853 {
9d8780f0
SM
18854 error (_("Dwarf Error: Type Unit at offset %s contains"
18855 " external reference to offset %s [in module %s].\n"),
18856 sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
0d99eb77
DE
18857 bfd_get_filename (objfile->obfd));
18858 }
9c541725 18859 per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
ed2dc618 18860 dwarf2_per_objfile);
72bf9492 18861
0d99eb77
DE
18862 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18863 load_partial_comp_unit (per_cu);
ae038cb0 18864
0d99eb77 18865 per_cu->cu->last_used = 0;
d590ff25 18866 pd = per_cu->cu->find_partial_die (sect_off);
0d99eb77 18867 }
5afb4e99 18868
dee91e82
DE
18869 /* If we didn't find it, and not all dies have been loaded,
18870 load them all and try again. */
18871
5afb4e99
DJ
18872 if (pd == NULL && per_cu->load_all_dies == 0)
18873 {
5afb4e99 18874 per_cu->load_all_dies = 1;
fd820528
DE
18875
18876 /* This is nasty. When we reread the DIEs, somewhere up the call chain
18877 THIS_CU->cu may already be in use. So we can't just free it and
18878 replace its DIEs with the ones we read in. Instead, we leave those
18879 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18880 and clobber THIS_CU->cu->partial_dies with the hash table for the new
18881 set. */
dee91e82 18882 load_partial_comp_unit (per_cu);
5afb4e99 18883
d590ff25 18884 pd = per_cu->cu->find_partial_die (sect_off);
5afb4e99
DJ
18885 }
18886
18887 if (pd == NULL)
18888 internal_error (__FILE__, __LINE__,
9d8780f0 18889 _("could not find partial DIE %s "
3e43a32a 18890 "in cache [from module %s]\n"),
9d8780f0 18891 sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
5afb4e99 18892 return pd;
72bf9492
DJ
18893}
18894
abc72ce4
DE
18895/* See if we can figure out if the class lives in a namespace. We do
18896 this by looking for a member function; its demangled name will
18897 contain namespace info, if there is any. */
18898
18899static void
18900guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18901 struct dwarf2_cu *cu)
18902{
18903 /* NOTE: carlton/2003-10-07: Getting the info this way changes
18904 what template types look like, because the demangler
18905 frequently doesn't give the same name as the debug info. We
18906 could fix this by only using the demangled name to get the
18907 prefix (but see comment in read_structure_type). */
18908
18909 struct partial_die_info *real_pdi;
18910 struct partial_die_info *child_pdi;
18911
18912 /* If this DIE (this DIE's specification, if any) has a parent, then
18913 we should not do this. We'll prepend the parent's fully qualified
18914 name when we create the partial symbol. */
18915
18916 real_pdi = struct_pdi;
18917 while (real_pdi->has_specification)
36586728
TT
18918 real_pdi = find_partial_die (real_pdi->spec_offset,
18919 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
18920
18921 if (real_pdi->die_parent != NULL)
18922 return;
18923
18924 for (child_pdi = struct_pdi->die_child;
18925 child_pdi != NULL;
18926 child_pdi = child_pdi->die_sibling)
18927 {
18928 if (child_pdi->tag == DW_TAG_subprogram
18929 && child_pdi->linkage_name != NULL)
18930 {
18931 char *actual_class_name
18932 = language_class_name_from_physname (cu->language_defn,
18933 child_pdi->linkage_name);
18934 if (actual_class_name != NULL)
18935 {
518817b3 18936 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
abc72ce4 18937 struct_pdi->name
224c3ddb 18938 = ((const char *)
e3b94546 18939 obstack_copy0 (&objfile->per_bfd->storage_obstack,
224c3ddb
SM
18940 actual_class_name,
18941 strlen (actual_class_name)));
abc72ce4
DE
18942 xfree (actual_class_name);
18943 }
18944 break;
18945 }
18946 }
18947}
18948
52356b79
YQ
18949void
18950partial_die_info::fixup (struct dwarf2_cu *cu)
72bf9492 18951{
abc72ce4
DE
18952 /* Once we've fixed up a die, there's no point in doing so again.
18953 This also avoids a memory leak if we were to call
18954 guess_partial_die_structure_name multiple times. */
52356b79 18955 if (fixup_called)
abc72ce4
DE
18956 return;
18957
72bf9492
DJ
18958 /* If we found a reference attribute and the DIE has no name, try
18959 to find a name in the referred to DIE. */
18960
52356b79 18961 if (name == NULL && has_specification)
72bf9492
DJ
18962 {
18963 struct partial_die_info *spec_die;
72bf9492 18964
52356b79 18965 spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
72bf9492 18966
52356b79 18967 spec_die->fixup (cu);
72bf9492
DJ
18968
18969 if (spec_die->name)
18970 {
52356b79 18971 name = spec_die->name;
72bf9492
DJ
18972
18973 /* Copy DW_AT_external attribute if it is set. */
18974 if (spec_die->is_external)
52356b79 18975 is_external = spec_die->is_external;
72bf9492
DJ
18976 }
18977 }
18978
18979 /* Set default names for some unnamed DIEs. */
72bf9492 18980
52356b79
YQ
18981 if (name == NULL && tag == DW_TAG_namespace)
18982 name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 18983
abc72ce4
DE
18984 /* If there is no parent die to provide a namespace, and there are
18985 children, see if we can determine the namespace from their linkage
122d1940 18986 name. */
abc72ce4 18987 if (cu->language == language_cplus
518817b3
SM
18988 && !VEC_empty (dwarf2_section_info_def,
18989 cu->per_cu->dwarf2_per_objfile->types)
52356b79
YQ
18990 && die_parent == NULL
18991 && has_children
18992 && (tag == DW_TAG_class_type
18993 || tag == DW_TAG_structure_type
18994 || tag == DW_TAG_union_type))
18995 guess_partial_die_structure_name (this, cu);
abc72ce4 18996
53832f31
TT
18997 /* GCC might emit a nameless struct or union that has a linkage
18998 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
52356b79
YQ
18999 if (name == NULL
19000 && (tag == DW_TAG_class_type
19001 || tag == DW_TAG_interface_type
19002 || tag == DW_TAG_structure_type
19003 || tag == DW_TAG_union_type)
19004 && linkage_name != NULL)
53832f31
TT
19005 {
19006 char *demangled;
19007
52356b79 19008 demangled = gdb_demangle (linkage_name, DMGL_TYPES);
53832f31
TT
19009 if (demangled)
19010 {
96408a79
SA
19011 const char *base;
19012
19013 /* Strip any leading namespaces/classes, keep only the base name.
19014 DW_AT_name for named DIEs does not contain the prefixes. */
19015 base = strrchr (demangled, ':');
19016 if (base && base > demangled && base[-1] == ':')
19017 base++;
19018 else
19019 base = demangled;
19020
518817b3 19021 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
52356b79 19022 name
224c3ddb 19023 = ((const char *)
e3b94546 19024 obstack_copy0 (&objfile->per_bfd->storage_obstack,
224c3ddb 19025 base, strlen (base)));
53832f31
TT
19026 xfree (demangled);
19027 }
19028 }
19029
52356b79 19030 fixup_called = 1;
72bf9492
DJ
19031}
19032
a8329558 19033/* Read an attribute value described by an attribute form. */
c906108c 19034
d521ce57 19035static const gdb_byte *
dee91e82
DE
19036read_attribute_value (const struct die_reader_specs *reader,
19037 struct attribute *attr, unsigned form,
43988095 19038 LONGEST implicit_const, const gdb_byte *info_ptr)
c906108c 19039{
dee91e82 19040 struct dwarf2_cu *cu = reader->cu;
518817b3
SM
19041 struct dwarf2_per_objfile *dwarf2_per_objfile
19042 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 19043 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 19044 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 19045 bfd *abfd = reader->abfd;
e7c27a73 19046 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
19047 unsigned int bytes_read;
19048 struct dwarf_block *blk;
19049
aead7601 19050 attr->form = (enum dwarf_form) form;
a8329558 19051 switch (form)
c906108c 19052 {
c906108c 19053 case DW_FORM_ref_addr:
ae411497 19054 if (cu->header.version == 2)
4568ecf9 19055 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 19056 else
4568ecf9
DE
19057 DW_UNSND (attr) = read_offset (abfd, info_ptr,
19058 &cu->header, &bytes_read);
ae411497
TT
19059 info_ptr += bytes_read;
19060 break;
36586728
TT
19061 case DW_FORM_GNU_ref_alt:
19062 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19063 info_ptr += bytes_read;
19064 break;
ae411497 19065 case DW_FORM_addr:
e7c27a73 19066 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 19067 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 19068 info_ptr += bytes_read;
c906108c
SS
19069 break;
19070 case DW_FORM_block2:
7b5a2f43 19071 blk = dwarf_alloc_block (cu);
c906108c
SS
19072 blk->size = read_2_bytes (abfd, info_ptr);
19073 info_ptr += 2;
19074 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19075 info_ptr += blk->size;
19076 DW_BLOCK (attr) = blk;
19077 break;
19078 case DW_FORM_block4:
7b5a2f43 19079 blk = dwarf_alloc_block (cu);
c906108c
SS
19080 blk->size = read_4_bytes (abfd, info_ptr);
19081 info_ptr += 4;
19082 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19083 info_ptr += blk->size;
19084 DW_BLOCK (attr) = blk;
19085 break;
19086 case DW_FORM_data2:
19087 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19088 info_ptr += 2;
19089 break;
19090 case DW_FORM_data4:
19091 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19092 info_ptr += 4;
19093 break;
19094 case DW_FORM_data8:
19095 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19096 info_ptr += 8;
19097 break;
0224619f
JK
19098 case DW_FORM_data16:
19099 blk = dwarf_alloc_block (cu);
19100 blk->size = 16;
19101 blk->data = read_n_bytes (abfd, info_ptr, 16);
19102 info_ptr += 16;
19103 DW_BLOCK (attr) = blk;
19104 break;
2dc7f7b3
TT
19105 case DW_FORM_sec_offset:
19106 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19107 info_ptr += bytes_read;
19108 break;
c906108c 19109 case DW_FORM_string:
9b1c24c8 19110 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 19111 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
19112 info_ptr += bytes_read;
19113 break;
4bdf3d34 19114 case DW_FORM_strp:
36586728
TT
19115 if (!cu->per_cu->is_dwz)
19116 {
ed2dc618
SM
19117 DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19118 abfd, info_ptr, cu_header,
36586728
TT
19119 &bytes_read);
19120 DW_STRING_IS_CANONICAL (attr) = 0;
19121 info_ptr += bytes_read;
19122 break;
19123 }
19124 /* FALLTHROUGH */
43988095
JK
19125 case DW_FORM_line_strp:
19126 if (!cu->per_cu->is_dwz)
19127 {
ed2dc618
SM
19128 DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19129 abfd, info_ptr,
43988095
JK
19130 cu_header, &bytes_read);
19131 DW_STRING_IS_CANONICAL (attr) = 0;
19132 info_ptr += bytes_read;
19133 break;
19134 }
19135 /* FALLTHROUGH */
36586728
TT
19136 case DW_FORM_GNU_strp_alt:
19137 {
ed2dc618 19138 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
36586728
TT
19139 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19140 &bytes_read);
19141
ed2dc618
SM
19142 DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19143 dwz, str_offset);
36586728
TT
19144 DW_STRING_IS_CANONICAL (attr) = 0;
19145 info_ptr += bytes_read;
19146 }
4bdf3d34 19147 break;
2dc7f7b3 19148 case DW_FORM_exprloc:
c906108c 19149 case DW_FORM_block:
7b5a2f43 19150 blk = dwarf_alloc_block (cu);
c906108c
SS
19151 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19152 info_ptr += bytes_read;
19153 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19154 info_ptr += blk->size;
19155 DW_BLOCK (attr) = blk;
19156 break;
19157 case DW_FORM_block1:
7b5a2f43 19158 blk = dwarf_alloc_block (cu);
c906108c
SS
19159 blk->size = read_1_byte (abfd, info_ptr);
19160 info_ptr += 1;
19161 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19162 info_ptr += blk->size;
19163 DW_BLOCK (attr) = blk;
19164 break;
19165 case DW_FORM_data1:
19166 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19167 info_ptr += 1;
19168 break;
19169 case DW_FORM_flag:
19170 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19171 info_ptr += 1;
19172 break;
2dc7f7b3
TT
19173 case DW_FORM_flag_present:
19174 DW_UNSND (attr) = 1;
19175 break;
c906108c
SS
19176 case DW_FORM_sdata:
19177 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19178 info_ptr += bytes_read;
19179 break;
19180 case DW_FORM_udata:
19181 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19182 info_ptr += bytes_read;
19183 break;
19184 case DW_FORM_ref1:
9c541725 19185 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19186 + read_1_byte (abfd, info_ptr));
c906108c
SS
19187 info_ptr += 1;
19188 break;
19189 case DW_FORM_ref2:
9c541725 19190 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19191 + read_2_bytes (abfd, info_ptr));
c906108c
SS
19192 info_ptr += 2;
19193 break;
19194 case DW_FORM_ref4:
9c541725 19195 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19196 + read_4_bytes (abfd, info_ptr));
c906108c
SS
19197 info_ptr += 4;
19198 break;
613e1657 19199 case DW_FORM_ref8:
9c541725 19200 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19201 + read_8_bytes (abfd, info_ptr));
613e1657
KB
19202 info_ptr += 8;
19203 break;
55f1336d 19204 case DW_FORM_ref_sig8:
ac9ec31b 19205 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
19206 info_ptr += 8;
19207 break;
c906108c 19208 case DW_FORM_ref_udata:
9c541725 19209 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19210 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
19211 info_ptr += bytes_read;
19212 break;
c906108c 19213 case DW_FORM_indirect:
a8329558
KW
19214 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19215 info_ptr += bytes_read;
43988095
JK
19216 if (form == DW_FORM_implicit_const)
19217 {
19218 implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19219 info_ptr += bytes_read;
19220 }
19221 info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19222 info_ptr);
19223 break;
19224 case DW_FORM_implicit_const:
19225 DW_SND (attr) = implicit_const;
a8329558 19226 break;
3019eac3
DE
19227 case DW_FORM_GNU_addr_index:
19228 if (reader->dwo_file == NULL)
19229 {
19230 /* For now flag a hard error.
19231 Later we can turn this into a complaint. */
19232 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19233 dwarf_form_name (form),
19234 bfd_get_filename (abfd));
19235 }
19236 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19237 info_ptr += bytes_read;
19238 break;
19239 case DW_FORM_GNU_str_index:
19240 if (reader->dwo_file == NULL)
19241 {
19242 /* For now flag a hard error.
19243 Later we can turn this into a complaint if warranted. */
19244 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19245 dwarf_form_name (form),
19246 bfd_get_filename (abfd));
19247 }
19248 {
19249 ULONGEST str_index =
19250 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19251
342587c4 19252 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
19253 DW_STRING_IS_CANONICAL (attr) = 0;
19254 info_ptr += bytes_read;
19255 }
19256 break;
c906108c 19257 default:
8a3fe4f8 19258 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
19259 dwarf_form_name (form),
19260 bfd_get_filename (abfd));
c906108c 19261 }
28e94949 19262
36586728 19263 /* Super hack. */
7771576e 19264 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
19265 attr->form = DW_FORM_GNU_ref_alt;
19266
28e94949
JB
19267 /* We have seen instances where the compiler tried to emit a byte
19268 size attribute of -1 which ended up being encoded as an unsigned
19269 0xffffffff. Although 0xffffffff is technically a valid size value,
19270 an object of this size seems pretty unlikely so we can relatively
19271 safely treat these cases as if the size attribute was invalid and
19272 treat them as zero by default. */
19273 if (attr->name == DW_AT_byte_size
19274 && form == DW_FORM_data4
19275 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
19276 {
19277 complaint
b98664d3 19278 (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
43bbcdc2 19279 hex_string (DW_UNSND (attr)));
01c66ae6
JB
19280 DW_UNSND (attr) = 0;
19281 }
28e94949 19282
c906108c
SS
19283 return info_ptr;
19284}
19285
a8329558
KW
19286/* Read an attribute described by an abbreviated attribute. */
19287
d521ce57 19288static const gdb_byte *
dee91e82
DE
19289read_attribute (const struct die_reader_specs *reader,
19290 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 19291 const gdb_byte *info_ptr)
a8329558
KW
19292{
19293 attr->name = abbrev->name;
43988095
JK
19294 return read_attribute_value (reader, attr, abbrev->form,
19295 abbrev->implicit_const, info_ptr);
a8329558
KW
19296}
19297
0963b4bd 19298/* Read dwarf information from a buffer. */
c906108c
SS
19299
19300static unsigned int
a1855c1d 19301read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 19302{
fe1b8b76 19303 return bfd_get_8 (abfd, buf);
c906108c
SS
19304}
19305
19306static int
a1855c1d 19307read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 19308{
fe1b8b76 19309 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
19310}
19311
19312static unsigned int
a1855c1d 19313read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 19314{
fe1b8b76 19315 return bfd_get_16 (abfd, buf);
c906108c
SS
19316}
19317
21ae7a4d 19318static int
a1855c1d 19319read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
19320{
19321 return bfd_get_signed_16 (abfd, buf);
19322}
19323
c906108c 19324static unsigned int
a1855c1d 19325read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 19326{
fe1b8b76 19327 return bfd_get_32 (abfd, buf);
c906108c
SS
19328}
19329
21ae7a4d 19330static int
a1855c1d 19331read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
19332{
19333 return bfd_get_signed_32 (abfd, buf);
19334}
19335
93311388 19336static ULONGEST
a1855c1d 19337read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 19338{
fe1b8b76 19339 return bfd_get_64 (abfd, buf);
c906108c
SS
19340}
19341
19342static CORE_ADDR
d521ce57 19343read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 19344 unsigned int *bytes_read)
c906108c 19345{
e7c27a73 19346 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
19347 CORE_ADDR retval = 0;
19348
107d2387 19349 if (cu_header->signed_addr_p)
c906108c 19350 {
107d2387
AC
19351 switch (cu_header->addr_size)
19352 {
19353 case 2:
fe1b8b76 19354 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
19355 break;
19356 case 4:
fe1b8b76 19357 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
19358 break;
19359 case 8:
fe1b8b76 19360 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
19361 break;
19362 default:
8e65ff28 19363 internal_error (__FILE__, __LINE__,
e2e0b3e5 19364 _("read_address: bad switch, signed [in module %s]"),
659b0389 19365 bfd_get_filename (abfd));
107d2387
AC
19366 }
19367 }
19368 else
19369 {
19370 switch (cu_header->addr_size)
19371 {
19372 case 2:
fe1b8b76 19373 retval = bfd_get_16 (abfd, buf);
107d2387
AC
19374 break;
19375 case 4:
fe1b8b76 19376 retval = bfd_get_32 (abfd, buf);
107d2387
AC
19377 break;
19378 case 8:
fe1b8b76 19379 retval = bfd_get_64 (abfd, buf);
107d2387
AC
19380 break;
19381 default:
8e65ff28 19382 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
19383 _("read_address: bad switch, "
19384 "unsigned [in module %s]"),
659b0389 19385 bfd_get_filename (abfd));
107d2387 19386 }
c906108c 19387 }
64367e0a 19388
107d2387
AC
19389 *bytes_read = cu_header->addr_size;
19390 return retval;
c906108c
SS
19391}
19392
f7ef9339 19393/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
19394 specification allows the initial length to take up either 4 bytes
19395 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
19396 bytes describe the length and all offsets will be 8 bytes in length
19397 instead of 4.
19398
f7ef9339
KB
19399 An older, non-standard 64-bit format is also handled by this
19400 function. The older format in question stores the initial length
19401 as an 8-byte quantity without an escape value. Lengths greater
19402 than 2^32 aren't very common which means that the initial 4 bytes
19403 is almost always zero. Since a length value of zero doesn't make
19404 sense for the 32-bit format, this initial zero can be considered to
19405 be an escape value which indicates the presence of the older 64-bit
19406 format. As written, the code can't detect (old format) lengths
917c78fc
MK
19407 greater than 4GB. If it becomes necessary to handle lengths
19408 somewhat larger than 4GB, we could allow other small values (such
19409 as the non-sensical values of 1, 2, and 3) to also be used as
19410 escape values indicating the presence of the old format.
f7ef9339 19411
917c78fc
MK
19412 The value returned via bytes_read should be used to increment the
19413 relevant pointer after calling read_initial_length().
c764a876 19414
613e1657
KB
19415 [ Note: read_initial_length() and read_offset() are based on the
19416 document entitled "DWARF Debugging Information Format", revision
f7ef9339 19417 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
19418 from:
19419
f7ef9339 19420 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 19421
613e1657
KB
19422 This document is only a draft and is subject to change. (So beware.)
19423
f7ef9339 19424 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
19425 determined empirically by examining 64-bit ELF files produced by
19426 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
19427
19428 - Kevin, July 16, 2002
613e1657
KB
19429 ] */
19430
19431static LONGEST
d521ce57 19432read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 19433{
fe1b8b76 19434 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 19435
dd373385 19436 if (length == 0xffffffff)
613e1657 19437 {
fe1b8b76 19438 length = bfd_get_64 (abfd, buf + 4);
613e1657 19439 *bytes_read = 12;
613e1657 19440 }
dd373385 19441 else if (length == 0)
f7ef9339 19442 {
dd373385 19443 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 19444 length = bfd_get_64 (abfd, buf);
f7ef9339 19445 *bytes_read = 8;
f7ef9339 19446 }
613e1657
KB
19447 else
19448 {
19449 *bytes_read = 4;
613e1657
KB
19450 }
19451
c764a876
DE
19452 return length;
19453}
dd373385 19454
c764a876
DE
19455/* Cover function for read_initial_length.
19456 Returns the length of the object at BUF, and stores the size of the
19457 initial length in *BYTES_READ and stores the size that offsets will be in
19458 *OFFSET_SIZE.
19459 If the initial length size is not equivalent to that specified in
19460 CU_HEADER then issue a complaint.
19461 This is useful when reading non-comp-unit headers. */
dd373385 19462
c764a876 19463static LONGEST
d521ce57 19464read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
19465 const struct comp_unit_head *cu_header,
19466 unsigned int *bytes_read,
19467 unsigned int *offset_size)
19468{
19469 LONGEST length = read_initial_length (abfd, buf, bytes_read);
19470
19471 gdb_assert (cu_header->initial_length_size == 4
19472 || cu_header->initial_length_size == 8
19473 || cu_header->initial_length_size == 12);
19474
19475 if (cu_header->initial_length_size != *bytes_read)
b98664d3 19476 complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 19477
c764a876 19478 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 19479 return length;
613e1657
KB
19480}
19481
19482/* Read an offset from the data stream. The size of the offset is
917c78fc 19483 given by cu_header->offset_size. */
613e1657
KB
19484
19485static LONGEST
d521ce57
TT
19486read_offset (bfd *abfd, const gdb_byte *buf,
19487 const struct comp_unit_head *cu_header,
891d2f0b 19488 unsigned int *bytes_read)
c764a876
DE
19489{
19490 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 19491
c764a876
DE
19492 *bytes_read = cu_header->offset_size;
19493 return offset;
19494}
19495
19496/* Read an offset from the data stream. */
19497
19498static LONGEST
d521ce57 19499read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
19500{
19501 LONGEST retval = 0;
19502
c764a876 19503 switch (offset_size)
613e1657
KB
19504 {
19505 case 4:
fe1b8b76 19506 retval = bfd_get_32 (abfd, buf);
613e1657
KB
19507 break;
19508 case 8:
fe1b8b76 19509 retval = bfd_get_64 (abfd, buf);
613e1657
KB
19510 break;
19511 default:
8e65ff28 19512 internal_error (__FILE__, __LINE__,
c764a876 19513 _("read_offset_1: bad switch [in module %s]"),
659b0389 19514 bfd_get_filename (abfd));
613e1657
KB
19515 }
19516
917c78fc 19517 return retval;
613e1657
KB
19518}
19519
d521ce57
TT
19520static const gdb_byte *
19521read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
19522{
19523 /* If the size of a host char is 8 bits, we can return a pointer
19524 to the buffer, otherwise we have to copy the data to a buffer
19525 allocated on the temporary obstack. */
4bdf3d34 19526 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 19527 return buf;
c906108c
SS
19528}
19529
d521ce57
TT
19530static const char *
19531read_direct_string (bfd *abfd, const gdb_byte *buf,
19532 unsigned int *bytes_read_ptr)
c906108c
SS
19533{
19534 /* If the size of a host char is 8 bits, we can return a pointer
19535 to the string, otherwise we have to copy the string to a buffer
19536 allocated on the temporary obstack. */
4bdf3d34 19537 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
19538 if (*buf == '\0')
19539 {
19540 *bytes_read_ptr = 1;
19541 return NULL;
19542 }
d521ce57
TT
19543 *bytes_read_ptr = strlen ((const char *) buf) + 1;
19544 return (const char *) buf;
4bdf3d34
JJ
19545}
19546
43988095
JK
19547/* Return pointer to string at section SECT offset STR_OFFSET with error
19548 reporting strings FORM_NAME and SECT_NAME. */
19549
d521ce57 19550static const char *
ed2dc618
SM
19551read_indirect_string_at_offset_from (struct objfile *objfile,
19552 bfd *abfd, LONGEST str_offset,
43988095
JK
19553 struct dwarf2_section_info *sect,
19554 const char *form_name,
19555 const char *sect_name)
19556{
ed2dc618 19557 dwarf2_read_section (objfile, sect);
43988095
JK
19558 if (sect->buffer == NULL)
19559 error (_("%s used without %s section [in module %s]"),
19560 form_name, sect_name, bfd_get_filename (abfd));
19561 if (str_offset >= sect->size)
19562 error (_("%s pointing outside of %s section [in module %s]"),
19563 form_name, sect_name, bfd_get_filename (abfd));
4bdf3d34 19564 gdb_assert (HOST_CHAR_BIT == 8);
43988095 19565 if (sect->buffer[str_offset] == '\0')
4bdf3d34 19566 return NULL;
43988095
JK
19567 return (const char *) (sect->buffer + str_offset);
19568}
19569
19570/* Return pointer to string at .debug_str offset STR_OFFSET. */
19571
19572static const char *
ed2dc618
SM
19573read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19574 bfd *abfd, LONGEST str_offset)
43988095 19575{
ed2dc618
SM
19576 return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19577 abfd, str_offset,
43988095
JK
19578 &dwarf2_per_objfile->str,
19579 "DW_FORM_strp", ".debug_str");
19580}
19581
19582/* Return pointer to string at .debug_line_str offset STR_OFFSET. */
19583
19584static const char *
ed2dc618
SM
19585read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19586 bfd *abfd, LONGEST str_offset)
43988095 19587{
ed2dc618
SM
19588 return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19589 abfd, str_offset,
43988095
JK
19590 &dwarf2_per_objfile->line_str,
19591 "DW_FORM_line_strp",
19592 ".debug_line_str");
c906108c
SS
19593}
19594
36586728
TT
19595/* Read a string at offset STR_OFFSET in the .debug_str section from
19596 the .dwz file DWZ. Throw an error if the offset is too large. If
19597 the string consists of a single NUL byte, return NULL; otherwise
19598 return a pointer to the string. */
19599
d521ce57 19600static const char *
ed2dc618
SM
19601read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19602 LONGEST str_offset)
36586728 19603{
ed2dc618 19604 dwarf2_read_section (objfile, &dwz->str);
36586728
TT
19605
19606 if (dwz->str.buffer == NULL)
19607 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19608 "section [in module %s]"),
19609 bfd_get_filename (dwz->dwz_bfd));
19610 if (str_offset >= dwz->str.size)
19611 error (_("DW_FORM_GNU_strp_alt pointing outside of "
19612 ".debug_str section [in module %s]"),
19613 bfd_get_filename (dwz->dwz_bfd));
19614 gdb_assert (HOST_CHAR_BIT == 8);
19615 if (dwz->str.buffer[str_offset] == '\0')
19616 return NULL;
d521ce57 19617 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
19618}
19619
43988095
JK
19620/* Return pointer to string at .debug_str offset as read from BUF.
19621 BUF is assumed to be in a compilation unit described by CU_HEADER.
19622 Return *BYTES_READ_PTR count of bytes read from BUF. */
19623
d521ce57 19624static const char *
ed2dc618
SM
19625read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19626 const gdb_byte *buf,
cf2c3c16
TT
19627 const struct comp_unit_head *cu_header,
19628 unsigned int *bytes_read_ptr)
19629{
19630 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19631
ed2dc618 19632 return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
cf2c3c16
TT
19633}
19634
43988095
JK
19635/* Return pointer to string at .debug_line_str offset as read from BUF.
19636 BUF is assumed to be in a compilation unit described by CU_HEADER.
19637 Return *BYTES_READ_PTR count of bytes read from BUF. */
19638
19639static const char *
ed2dc618
SM
19640read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19641 bfd *abfd, const gdb_byte *buf,
43988095
JK
19642 const struct comp_unit_head *cu_header,
19643 unsigned int *bytes_read_ptr)
19644{
19645 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19646
ed2dc618
SM
19647 return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19648 str_offset);
43988095
JK
19649}
19650
19651ULONGEST
d521ce57 19652read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
43988095 19653 unsigned int *bytes_read_ptr)
c906108c 19654{
12df843f 19655 ULONGEST result;
ce5d95e1 19656 unsigned int num_read;
870f88f7 19657 int shift;
c906108c
SS
19658 unsigned char byte;
19659
19660 result = 0;
19661 shift = 0;
19662 num_read = 0;
c906108c
SS
19663 while (1)
19664 {
fe1b8b76 19665 byte = bfd_get_8 (abfd, buf);
c906108c
SS
19666 buf++;
19667 num_read++;
12df843f 19668 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
19669 if ((byte & 128) == 0)
19670 {
19671 break;
19672 }
19673 shift += 7;
19674 }
19675 *bytes_read_ptr = num_read;
19676 return result;
19677}
19678
12df843f 19679static LONGEST
d521ce57
TT
19680read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19681 unsigned int *bytes_read_ptr)
c906108c 19682{
4dd1b460 19683 ULONGEST result;
870f88f7 19684 int shift, num_read;
c906108c
SS
19685 unsigned char byte;
19686
19687 result = 0;
19688 shift = 0;
c906108c 19689 num_read = 0;
c906108c
SS
19690 while (1)
19691 {
fe1b8b76 19692 byte = bfd_get_8 (abfd, buf);
c906108c
SS
19693 buf++;
19694 num_read++;
4dd1b460 19695 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
19696 shift += 7;
19697 if ((byte & 128) == 0)
19698 {
19699 break;
19700 }
19701 }
77e0b926 19702 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
4dd1b460 19703 result |= -(((ULONGEST) 1) << shift);
c906108c
SS
19704 *bytes_read_ptr = num_read;
19705 return result;
19706}
19707
3019eac3
DE
19708/* Given index ADDR_INDEX in .debug_addr, fetch the value.
19709 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19710 ADDR_SIZE is the size of addresses from the CU header. */
19711
19712static CORE_ADDR
ed2dc618
SM
19713read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19714 unsigned int addr_index, ULONGEST addr_base, int addr_size)
3019eac3
DE
19715{
19716 struct objfile *objfile = dwarf2_per_objfile->objfile;
19717 bfd *abfd = objfile->obfd;
19718 const gdb_byte *info_ptr;
19719
19720 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19721 if (dwarf2_per_objfile->addr.buffer == NULL)
19722 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 19723 objfile_name (objfile));
3019eac3
DE
19724 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19725 error (_("DW_FORM_addr_index pointing outside of "
19726 ".debug_addr section [in module %s]"),
4262abfb 19727 objfile_name (objfile));
3019eac3
DE
19728 info_ptr = (dwarf2_per_objfile->addr.buffer
19729 + addr_base + addr_index * addr_size);
19730 if (addr_size == 4)
19731 return bfd_get_32 (abfd, info_ptr);
19732 else
19733 return bfd_get_64 (abfd, info_ptr);
19734}
19735
19736/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
19737
19738static CORE_ADDR
19739read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19740{
518817b3
SM
19741 return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19742 cu->addr_base, cu->header.addr_size);
3019eac3
DE
19743}
19744
19745/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
19746
19747static CORE_ADDR
d521ce57 19748read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
19749 unsigned int *bytes_read)
19750{
518817b3 19751 bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
3019eac3
DE
19752 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19753
19754 return read_addr_index (cu, addr_index);
19755}
19756
19757/* Data structure to pass results from dwarf2_read_addr_index_reader
19758 back to dwarf2_read_addr_index. */
19759
19760struct dwarf2_read_addr_index_data
19761{
19762 ULONGEST addr_base;
19763 int addr_size;
19764};
19765
19766/* die_reader_func for dwarf2_read_addr_index. */
19767
19768static void
19769dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 19770 const gdb_byte *info_ptr,
3019eac3
DE
19771 struct die_info *comp_unit_die,
19772 int has_children,
19773 void *data)
19774{
19775 struct dwarf2_cu *cu = reader->cu;
19776 struct dwarf2_read_addr_index_data *aidata =
19777 (struct dwarf2_read_addr_index_data *) data;
19778
19779 aidata->addr_base = cu->addr_base;
19780 aidata->addr_size = cu->header.addr_size;
19781}
19782
19783/* Given an index in .debug_addr, fetch the value.
19784 NOTE: This can be called during dwarf expression evaluation,
19785 long after the debug information has been read, and thus per_cu->cu
19786 may no longer exist. */
19787
19788CORE_ADDR
19789dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19790 unsigned int addr_index)
19791{
ed2dc618 19792 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
3019eac3
DE
19793 struct dwarf2_cu *cu = per_cu->cu;
19794 ULONGEST addr_base;
19795 int addr_size;
19796
3019eac3
DE
19797 /* We need addr_base and addr_size.
19798 If we don't have PER_CU->cu, we have to get it.
19799 Nasty, but the alternative is storing the needed info in PER_CU,
19800 which at this point doesn't seem justified: it's not clear how frequently
19801 it would get used and it would increase the size of every PER_CU.
19802 Entry points like dwarf2_per_cu_addr_size do a similar thing
19803 so we're not in uncharted territory here.
19804 Alas we need to be a bit more complicated as addr_base is contained
19805 in the DIE.
19806
19807 We don't need to read the entire CU(/TU).
19808 We just need the header and top level die.
a1b64ce1 19809
3019eac3 19810 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 19811 For now we skip this optimization. */
3019eac3
DE
19812
19813 if (cu != NULL)
19814 {
19815 addr_base = cu->addr_base;
19816 addr_size = cu->header.addr_size;
19817 }
19818 else
19819 {
19820 struct dwarf2_read_addr_index_data aidata;
19821
a1b64ce1
DE
19822 /* Note: We can't use init_cutu_and_read_dies_simple here,
19823 we need addr_base. */
58f0c718 19824 init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
a1b64ce1 19825 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
19826 addr_base = aidata.addr_base;
19827 addr_size = aidata.addr_size;
19828 }
19829
ed2dc618
SM
19830 return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19831 addr_size);
3019eac3
DE
19832}
19833
57d63ce2
DE
19834/* Given a DW_FORM_GNU_str_index, fetch the string.
19835 This is only used by the Fission support. */
3019eac3 19836
d521ce57 19837static const char *
342587c4 19838read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3 19839{
ed2dc618 19840 struct dwarf2_cu *cu = reader->cu;
518817b3
SM
19841 struct dwarf2_per_objfile *dwarf2_per_objfile
19842 = cu->per_cu->dwarf2_per_objfile;
3019eac3 19843 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 19844 const char *objf_name = objfile_name (objfile);
3019eac3 19845 bfd *abfd = objfile->obfd;
73869dc2
DE
19846 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19847 struct dwarf2_section_info *str_offsets_section =
19848 &reader->dwo_file->sections.str_offsets;
d521ce57 19849 const gdb_byte *info_ptr;
3019eac3 19850 ULONGEST str_offset;
57d63ce2 19851 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 19852
73869dc2
DE
19853 dwarf2_read_section (objfile, str_section);
19854 dwarf2_read_section (objfile, str_offsets_section);
19855 if (str_section->buffer == NULL)
57d63ce2 19856 error (_("%s used without .debug_str.dwo section"
9d8780f0
SM
19857 " in CU at offset %s [in module %s]"),
19858 form_name, sect_offset_str (cu->header.sect_off), objf_name);
73869dc2 19859 if (str_offsets_section->buffer == NULL)
57d63ce2 19860 error (_("%s used without .debug_str_offsets.dwo section"
9d8780f0
SM
19861 " in CU at offset %s [in module %s]"),
19862 form_name, sect_offset_str (cu->header.sect_off), objf_name);
73869dc2 19863 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 19864 error (_("%s pointing outside of .debug_str_offsets.dwo"
9d8780f0
SM
19865 " section in CU at offset %s [in module %s]"),
19866 form_name, sect_offset_str (cu->header.sect_off), objf_name);
73869dc2 19867 info_ptr = (str_offsets_section->buffer
3019eac3
DE
19868 + str_index * cu->header.offset_size);
19869 if (cu->header.offset_size == 4)
19870 str_offset = bfd_get_32 (abfd, info_ptr);
19871 else
19872 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 19873 if (str_offset >= str_section->size)
57d63ce2 19874 error (_("Offset from %s pointing outside of"
9d8780f0
SM
19875 " .debug_str.dwo section in CU at offset %s [in module %s]"),
19876 form_name, sect_offset_str (cu->header.sect_off), objf_name);
73869dc2 19877 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
19878}
19879
3019eac3
DE
19880/* Return the length of an LEB128 number in BUF. */
19881
19882static int
19883leb128_size (const gdb_byte *buf)
19884{
19885 const gdb_byte *begin = buf;
19886 gdb_byte byte;
19887
19888 while (1)
19889 {
19890 byte = *buf++;
19891 if ((byte & 128) == 0)
19892 return buf - begin;
19893 }
19894}
19895
c906108c 19896static void
e142c38c 19897set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
19898{
19899 switch (lang)
19900 {
19901 case DW_LANG_C89:
76bee0cc 19902 case DW_LANG_C99:
0cfd832f 19903 case DW_LANG_C11:
c906108c 19904 case DW_LANG_C:
d1be3247 19905 case DW_LANG_UPC:
e142c38c 19906 cu->language = language_c;
c906108c 19907 break;
9c37b5ae 19908 case DW_LANG_Java:
c906108c 19909 case DW_LANG_C_plus_plus:
0cfd832f
MW
19910 case DW_LANG_C_plus_plus_11:
19911 case DW_LANG_C_plus_plus_14:
e142c38c 19912 cu->language = language_cplus;
c906108c 19913 break;
6aecb9c2
JB
19914 case DW_LANG_D:
19915 cu->language = language_d;
19916 break;
c906108c
SS
19917 case DW_LANG_Fortran77:
19918 case DW_LANG_Fortran90:
b21b22e0 19919 case DW_LANG_Fortran95:
f7de9aab
MW
19920 case DW_LANG_Fortran03:
19921 case DW_LANG_Fortran08:
e142c38c 19922 cu->language = language_fortran;
c906108c 19923 break;
a766d390
DE
19924 case DW_LANG_Go:
19925 cu->language = language_go;
19926 break;
c906108c 19927 case DW_LANG_Mips_Assembler:
e142c38c 19928 cu->language = language_asm;
c906108c
SS
19929 break;
19930 case DW_LANG_Ada83:
8aaf0b47 19931 case DW_LANG_Ada95:
bc5f45f8
JB
19932 cu->language = language_ada;
19933 break;
72019c9c
GM
19934 case DW_LANG_Modula2:
19935 cu->language = language_m2;
19936 break;
fe8e67fd
PM
19937 case DW_LANG_Pascal83:
19938 cu->language = language_pascal;
19939 break;
22566fbd
DJ
19940 case DW_LANG_ObjC:
19941 cu->language = language_objc;
19942 break;
c44af4eb
TT
19943 case DW_LANG_Rust:
19944 case DW_LANG_Rust_old:
19945 cu->language = language_rust;
19946 break;
c906108c
SS
19947 case DW_LANG_Cobol74:
19948 case DW_LANG_Cobol85:
c906108c 19949 default:
e142c38c 19950 cu->language = language_minimal;
c906108c
SS
19951 break;
19952 }
e142c38c 19953 cu->language_defn = language_def (cu->language);
c906108c
SS
19954}
19955
19956/* Return the named attribute or NULL if not there. */
19957
19958static struct attribute *
e142c38c 19959dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 19960{
a48e046c 19961 for (;;)
c906108c 19962 {
a48e046c
TT
19963 unsigned int i;
19964 struct attribute *spec = NULL;
19965
19966 for (i = 0; i < die->num_attrs; ++i)
19967 {
19968 if (die->attrs[i].name == name)
19969 return &die->attrs[i];
19970 if (die->attrs[i].name == DW_AT_specification
19971 || die->attrs[i].name == DW_AT_abstract_origin)
19972 spec = &die->attrs[i];
19973 }
19974
19975 if (!spec)
19976 break;
c906108c 19977
f2f0e013 19978 die = follow_die_ref (die, spec, &cu);
f2f0e013 19979 }
c5aa993b 19980
c906108c
SS
19981 return NULL;
19982}
19983
348e048f
DE
19984/* Return the named attribute or NULL if not there,
19985 but do not follow DW_AT_specification, etc.
19986 This is for use in contexts where we're reading .debug_types dies.
19987 Following DW_AT_specification, DW_AT_abstract_origin will take us
19988 back up the chain, and we want to go down. */
19989
19990static struct attribute *
45e58e77 19991dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
19992{
19993 unsigned int i;
19994
19995 for (i = 0; i < die->num_attrs; ++i)
19996 if (die->attrs[i].name == name)
19997 return &die->attrs[i];
19998
19999 return NULL;
20000}
20001
7d45c7c3
KB
20002/* Return the string associated with a string-typed attribute, or NULL if it
20003 is either not found or is of an incorrect type. */
20004
20005static const char *
20006dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20007{
20008 struct attribute *attr;
20009 const char *str = NULL;
20010
20011 attr = dwarf2_attr (die, name, cu);
20012
20013 if (attr != NULL)
20014 {
43988095 20015 if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
b3340438
L
20016 || attr->form == DW_FORM_string
20017 || attr->form == DW_FORM_GNU_str_index
16eb6b2d 20018 || attr->form == DW_FORM_GNU_strp_alt)
7d45c7c3
KB
20019 str = DW_STRING (attr);
20020 else
b98664d3 20021 complaint (_("string type expected for attribute %s for "
9d8780f0
SM
20022 "DIE at %s in module %s"),
20023 dwarf_attr_name (name), sect_offset_str (die->sect_off),
518817b3 20024 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
7d45c7c3
KB
20025 }
20026
20027 return str;
20028}
20029
05cf31d1
JB
20030/* Return non-zero iff the attribute NAME is defined for the given DIE,
20031 and holds a non-zero value. This function should only be used for
2dc7f7b3 20032 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
20033
20034static int
20035dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20036{
20037 struct attribute *attr = dwarf2_attr (die, name, cu);
20038
20039 return (attr && DW_UNSND (attr));
20040}
20041
3ca72b44 20042static int
e142c38c 20043die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 20044{
05cf31d1
JB
20045 /* A DIE is a declaration if it has a DW_AT_declaration attribute
20046 which value is non-zero. However, we have to be careful with
20047 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20048 (via dwarf2_flag_true_p) follows this attribute. So we may
20049 end up accidently finding a declaration attribute that belongs
20050 to a different DIE referenced by the specification attribute,
20051 even though the given DIE does not have a declaration attribute. */
20052 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20053 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
20054}
20055
63d06c5c 20056/* Return the die giving the specification for DIE, if there is
f2f0e013 20057 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
20058 containing the return value on output. If there is no
20059 specification, but there is an abstract origin, that is
20060 returned. */
63d06c5c
DC
20061
20062static struct die_info *
f2f0e013 20063die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 20064{
f2f0e013
DJ
20065 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20066 *spec_cu);
63d06c5c 20067
edb3359d
DJ
20068 if (spec_attr == NULL)
20069 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20070
63d06c5c
DC
20071 if (spec_attr == NULL)
20072 return NULL;
20073 else
f2f0e013 20074 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 20075}
c906108c 20076
527f3840
JK
20077/* Stub for free_line_header to match void * callback types. */
20078
20079static void
20080free_line_header_voidp (void *arg)
20081{
9a3c8263 20082 struct line_header *lh = (struct line_header *) arg;
527f3840 20083
fff8551c 20084 delete lh;
527f3840
JK
20085}
20086
fff8551c
PA
20087void
20088line_header::add_include_dir (const char *include_dir)
c906108c 20089{
27e0867f 20090 if (dwarf_line_debug >= 2)
fff8551c
PA
20091 fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20092 include_dirs.size () + 1, include_dir);
27e0867f 20093
fff8551c 20094 include_dirs.push_back (include_dir);
debd256d 20095}
6e70227d 20096
fff8551c
PA
20097void
20098line_header::add_file_name (const char *name,
ecfb656c 20099 dir_index d_index,
fff8551c
PA
20100 unsigned int mod_time,
20101 unsigned int length)
debd256d 20102{
27e0867f
DE
20103 if (dwarf_line_debug >= 2)
20104 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
fff8551c 20105 (unsigned) file_names.size () + 1, name);
27e0867f 20106
ecfb656c 20107 file_names.emplace_back (name, d_index, mod_time, length);
debd256d 20108}
6e70227d 20109
83769d0b 20110/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
20111
20112static struct dwarf2_section_info *
20113get_debug_line_section (struct dwarf2_cu *cu)
20114{
20115 struct dwarf2_section_info *section;
518817b3
SM
20116 struct dwarf2_per_objfile *dwarf2_per_objfile
20117 = cu->per_cu->dwarf2_per_objfile;
36586728
TT
20118
20119 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20120 DWO file. */
20121 if (cu->dwo_unit && cu->per_cu->is_debug_types)
20122 section = &cu->dwo_unit->dwo_file->sections.line;
20123 else if (cu->per_cu->is_dwz)
20124 {
ed2dc618 20125 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
36586728
TT
20126
20127 section = &dwz->line;
20128 }
20129 else
20130 section = &dwarf2_per_objfile->line;
20131
20132 return section;
20133}
20134
43988095
JK
20135/* Read directory or file name entry format, starting with byte of
20136 format count entries, ULEB128 pairs of entry formats, ULEB128 of
20137 entries count and the entries themselves in the described entry
20138 format. */
20139
20140static void
ed2dc618
SM
20141read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20142 bfd *abfd, const gdb_byte **bufp,
43988095
JK
20143 struct line_header *lh,
20144 const struct comp_unit_head *cu_header,
20145 void (*callback) (struct line_header *lh,
20146 const char *name,
ecfb656c 20147 dir_index d_index,
43988095
JK
20148 unsigned int mod_time,
20149 unsigned int length))
20150{
20151 gdb_byte format_count, formati;
20152 ULONGEST data_count, datai;
20153 const gdb_byte *buf = *bufp;
20154 const gdb_byte *format_header_data;
43988095
JK
20155 unsigned int bytes_read;
20156
20157 format_count = read_1_byte (abfd, buf);
20158 buf += 1;
20159 format_header_data = buf;
20160 for (formati = 0; formati < format_count; formati++)
20161 {
20162 read_unsigned_leb128 (abfd, buf, &bytes_read);
20163 buf += bytes_read;
20164 read_unsigned_leb128 (abfd, buf, &bytes_read);
20165 buf += bytes_read;
20166 }
20167
20168 data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20169 buf += bytes_read;
20170 for (datai = 0; datai < data_count; datai++)
20171 {
20172 const gdb_byte *format = format_header_data;
20173 struct file_entry fe;
20174
43988095
JK
20175 for (formati = 0; formati < format_count; formati++)
20176 {
ecfb656c 20177 ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
43988095 20178 format += bytes_read;
43988095 20179
ecfb656c 20180 ULONGEST form = read_unsigned_leb128 (abfd, format, &bytes_read);
43988095 20181 format += bytes_read;
ecfb656c
PA
20182
20183 gdb::optional<const char *> string;
20184 gdb::optional<unsigned int> uint;
20185
43988095
JK
20186 switch (form)
20187 {
20188 case DW_FORM_string:
ecfb656c 20189 string.emplace (read_direct_string (abfd, buf, &bytes_read));
43988095
JK
20190 buf += bytes_read;
20191 break;
20192
20193 case DW_FORM_line_strp:
ed2dc618
SM
20194 string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20195 abfd, buf,
ecfb656c
PA
20196 cu_header,
20197 &bytes_read));
43988095
JK
20198 buf += bytes_read;
20199 break;
20200
20201 case DW_FORM_data1:
ecfb656c 20202 uint.emplace (read_1_byte (abfd, buf));
43988095
JK
20203 buf += 1;
20204 break;
20205
20206 case DW_FORM_data2:
ecfb656c 20207 uint.emplace (read_2_bytes (abfd, buf));
43988095
JK
20208 buf += 2;
20209 break;
20210
20211 case DW_FORM_data4:
ecfb656c 20212 uint.emplace (read_4_bytes (abfd, buf));
43988095
JK
20213 buf += 4;
20214 break;
20215
20216 case DW_FORM_data8:
ecfb656c 20217 uint.emplace (read_8_bytes (abfd, buf));
43988095
JK
20218 buf += 8;
20219 break;
20220
20221 case DW_FORM_udata:
ecfb656c 20222 uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
43988095
JK
20223 buf += bytes_read;
20224 break;
20225
20226 case DW_FORM_block:
20227 /* It is valid only for DW_LNCT_timestamp which is ignored by
20228 current GDB. */
20229 break;
20230 }
ecfb656c
PA
20231
20232 switch (content_type)
20233 {
20234 case DW_LNCT_path:
20235 if (string.has_value ())
20236 fe.name = *string;
20237 break;
20238 case DW_LNCT_directory_index:
20239 if (uint.has_value ())
20240 fe.d_index = (dir_index) *uint;
20241 break;
20242 case DW_LNCT_timestamp:
20243 if (uint.has_value ())
20244 fe.mod_time = *uint;
20245 break;
20246 case DW_LNCT_size:
20247 if (uint.has_value ())
20248 fe.length = *uint;
20249 break;
20250 case DW_LNCT_MD5:
20251 break;
20252 default:
b98664d3 20253 complaint (_("Unknown format content type %s"),
ecfb656c
PA
20254 pulongest (content_type));
20255 }
43988095
JK
20256 }
20257
ecfb656c 20258 callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
43988095
JK
20259 }
20260
20261 *bufp = buf;
20262}
20263
debd256d 20264/* Read the statement program header starting at OFFSET in
3019eac3 20265 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 20266 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
20267 Returns NULL if there is a problem reading the header, e.g., if it
20268 has a version we don't understand.
debd256d
JB
20269
20270 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
20271 the returned object point into the dwarf line section buffer,
20272 and must not be freed. */
ae2de4f8 20273
fff8551c 20274static line_header_up
9c541725 20275dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
debd256d 20276{
d521ce57 20277 const gdb_byte *line_ptr;
c764a876 20278 unsigned int bytes_read, offset_size;
debd256d 20279 int i;
d521ce57 20280 const char *cur_dir, *cur_file;
3019eac3
DE
20281 struct dwarf2_section_info *section;
20282 bfd *abfd;
518817b3
SM
20283 struct dwarf2_per_objfile *dwarf2_per_objfile
20284 = cu->per_cu->dwarf2_per_objfile;
3019eac3 20285
36586728 20286 section = get_debug_line_section (cu);
3019eac3
DE
20287 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20288 if (section->buffer == NULL)
debd256d 20289 {
3019eac3 20290 if (cu->dwo_unit && cu->per_cu->is_debug_types)
b98664d3 20291 complaint (_("missing .debug_line.dwo section"));
3019eac3 20292 else
b98664d3 20293 complaint (_("missing .debug_line section"));
debd256d
JB
20294 return 0;
20295 }
20296
fceca515
DE
20297 /* We can't do this until we know the section is non-empty.
20298 Only then do we know we have such a section. */
a32a8923 20299 abfd = get_section_bfd_owner (section);
fceca515 20300
a738430d
MK
20301 /* Make sure that at least there's room for the total_length field.
20302 That could be 12 bytes long, but we're just going to fudge that. */
9c541725 20303 if (to_underlying (sect_off) + 4 >= section->size)
debd256d 20304 {
4d3c2250 20305 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
20306 return 0;
20307 }
20308
fff8551c 20309 line_header_up lh (new line_header ());
debd256d 20310
9c541725 20311 lh->sect_off = sect_off;
527f3840
JK
20312 lh->offset_in_dwz = cu->per_cu->is_dwz;
20313
9c541725 20314 line_ptr = section->buffer + to_underlying (sect_off);
debd256d 20315
a738430d 20316 /* Read in the header. */
6e70227d 20317 lh->total_length =
c764a876
DE
20318 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20319 &bytes_read, &offset_size);
debd256d 20320 line_ptr += bytes_read;
3019eac3 20321 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 20322 {
4d3c2250 20323 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
20324 return 0;
20325 }
20326 lh->statement_program_end = line_ptr + lh->total_length;
20327 lh->version = read_2_bytes (abfd, line_ptr);
20328 line_ptr += 2;
43988095 20329 if (lh->version > 5)
cd366ee8
DE
20330 {
20331 /* This is a version we don't understand. The format could have
20332 changed in ways we don't handle properly so just punt. */
b98664d3 20333 complaint (_("unsupported version in .debug_line section"));
cd366ee8
DE
20334 return NULL;
20335 }
43988095
JK
20336 if (lh->version >= 5)
20337 {
20338 gdb_byte segment_selector_size;
20339
20340 /* Skip address size. */
20341 read_1_byte (abfd, line_ptr);
20342 line_ptr += 1;
20343
20344 segment_selector_size = read_1_byte (abfd, line_ptr);
20345 line_ptr += 1;
20346 if (segment_selector_size != 0)
20347 {
b98664d3 20348 complaint (_("unsupported segment selector size %u "
43988095
JK
20349 "in .debug_line section"),
20350 segment_selector_size);
20351 return NULL;
20352 }
20353 }
c764a876
DE
20354 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20355 line_ptr += offset_size;
debd256d
JB
20356 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20357 line_ptr += 1;
2dc7f7b3
TT
20358 if (lh->version >= 4)
20359 {
20360 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20361 line_ptr += 1;
20362 }
20363 else
20364 lh->maximum_ops_per_instruction = 1;
20365
20366 if (lh->maximum_ops_per_instruction == 0)
20367 {
20368 lh->maximum_ops_per_instruction = 1;
b98664d3 20369 complaint (_("invalid maximum_ops_per_instruction "
3e43a32a 20370 "in `.debug_line' section"));
2dc7f7b3
TT
20371 }
20372
debd256d
JB
20373 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20374 line_ptr += 1;
20375 lh->line_base = read_1_signed_byte (abfd, line_ptr);
20376 line_ptr += 1;
20377 lh->line_range = read_1_byte (abfd, line_ptr);
20378 line_ptr += 1;
20379 lh->opcode_base = read_1_byte (abfd, line_ptr);
20380 line_ptr += 1;
fff8551c 20381 lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
debd256d
JB
20382
20383 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
20384 for (i = 1; i < lh->opcode_base; ++i)
20385 {
20386 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20387 line_ptr += 1;
20388 }
20389
43988095 20390 if (lh->version >= 5)
debd256d 20391 {
43988095 20392 /* Read directory table. */
ed2dc618
SM
20393 read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20394 &cu->header,
b926417a 20395 [] (struct line_header *header, const char *name,
ecfb656c 20396 dir_index d_index, unsigned int mod_time,
fff8551c
PA
20397 unsigned int length)
20398 {
b926417a 20399 header->add_include_dir (name);
fff8551c 20400 });
debd256d 20401
43988095 20402 /* Read file name table. */
ed2dc618
SM
20403 read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20404 &cu->header,
b926417a 20405 [] (struct line_header *header, const char *name,
ecfb656c 20406 dir_index d_index, unsigned int mod_time,
fff8551c
PA
20407 unsigned int length)
20408 {
b926417a 20409 header->add_file_name (name, d_index, mod_time, length);
fff8551c 20410 });
43988095
JK
20411 }
20412 else
debd256d 20413 {
43988095
JK
20414 /* Read directory table. */
20415 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20416 {
20417 line_ptr += bytes_read;
fff8551c 20418 lh->add_include_dir (cur_dir);
43988095 20419 }
debd256d
JB
20420 line_ptr += bytes_read;
20421
43988095
JK
20422 /* Read file name table. */
20423 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20424 {
ecfb656c
PA
20425 unsigned int mod_time, length;
20426 dir_index d_index;
43988095
JK
20427
20428 line_ptr += bytes_read;
ecfb656c 20429 d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
43988095
JK
20430 line_ptr += bytes_read;
20431 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20432 line_ptr += bytes_read;
20433 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20434 line_ptr += bytes_read;
20435
ecfb656c 20436 lh->add_file_name (cur_file, d_index, mod_time, length);
43988095
JK
20437 }
20438 line_ptr += bytes_read;
debd256d 20439 }
6e70227d 20440 lh->statement_program_start = line_ptr;
debd256d 20441
3019eac3 20442 if (line_ptr > (section->buffer + section->size))
b98664d3 20443 complaint (_("line number info header doesn't "
3e43a32a 20444 "fit in `.debug_line' section"));
debd256d 20445
debd256d
JB
20446 return lh;
20447}
c906108c 20448
c6da4cef
DE
20449/* Subroutine of dwarf_decode_lines to simplify it.
20450 Return the file name of the psymtab for included file FILE_INDEX
20451 in line header LH of PST.
20452 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
c89b44cd
TT
20453 If space for the result is malloc'd, *NAME_HOLDER will be set.
20454 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename. */
c6da4cef 20455
d521ce57 20456static const char *
c6da4cef
DE
20457psymtab_include_file_name (const struct line_header *lh, int file_index,
20458 const struct partial_symtab *pst,
c89b44cd
TT
20459 const char *comp_dir,
20460 gdb::unique_xmalloc_ptr<char> *name_holder)
c6da4cef 20461{
8c43009f 20462 const file_entry &fe = lh->file_names[file_index];
d521ce57
TT
20463 const char *include_name = fe.name;
20464 const char *include_name_to_compare = include_name;
72b9f47f 20465 const char *pst_filename;
c6da4cef
DE
20466 int file_is_pst;
20467
8c43009f 20468 const char *dir_name = fe.include_dir (lh);
c6da4cef 20469
c89b44cd 20470 gdb::unique_xmalloc_ptr<char> hold_compare;
c6da4cef
DE
20471 if (!IS_ABSOLUTE_PATH (include_name)
20472 && (dir_name != NULL || comp_dir != NULL))
20473 {
20474 /* Avoid creating a duplicate psymtab for PST.
20475 We do this by comparing INCLUDE_NAME and PST_FILENAME.
20476 Before we do the comparison, however, we need to account
20477 for DIR_NAME and COMP_DIR.
20478 First prepend dir_name (if non-NULL). If we still don't
20479 have an absolute path prepend comp_dir (if non-NULL).
20480 However, the directory we record in the include-file's
20481 psymtab does not contain COMP_DIR (to match the
20482 corresponding symtab(s)).
20483
20484 Example:
20485
20486 bash$ cd /tmp
20487 bash$ gcc -g ./hello.c
20488 include_name = "hello.c"
20489 dir_name = "."
20490 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
20491 DW_AT_name = "./hello.c"
20492
20493 */
c6da4cef
DE
20494
20495 if (dir_name != NULL)
20496 {
c89b44cd
TT
20497 name_holder->reset (concat (dir_name, SLASH_STRING,
20498 include_name, (char *) NULL));
20499 include_name = name_holder->get ();
c6da4cef 20500 include_name_to_compare = include_name;
c6da4cef
DE
20501 }
20502 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20503 {
c89b44cd
TT
20504 hold_compare.reset (concat (comp_dir, SLASH_STRING,
20505 include_name, (char *) NULL));
20506 include_name_to_compare = hold_compare.get ();
c6da4cef
DE
20507 }
20508 }
20509
20510 pst_filename = pst->filename;
c89b44cd 20511 gdb::unique_xmalloc_ptr<char> copied_name;
c6da4cef
DE
20512 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20513 {
c89b44cd
TT
20514 copied_name.reset (concat (pst->dirname, SLASH_STRING,
20515 pst_filename, (char *) NULL));
20516 pst_filename = copied_name.get ();
c6da4cef
DE
20517 }
20518
1e3fad37 20519 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 20520
c6da4cef
DE
20521 if (file_is_pst)
20522 return NULL;
20523 return include_name;
20524}
20525
d9b3de22
DE
20526/* State machine to track the state of the line number program. */
20527
6f77053d 20528class lnp_state_machine
d9b3de22 20529{
6f77053d
PA
20530public:
20531 /* Initialize a machine state for the start of a line number
20532 program. */
804d2729
TT
20533 lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20534 bool record_lines_p);
6f77053d 20535
8c43009f
PA
20536 file_entry *current_file ()
20537 {
20538 /* lh->file_names is 0-based, but the file name numbers in the
20539 statement program are 1-based. */
6f77053d
PA
20540 return m_line_header->file_name_at (m_file);
20541 }
20542
20543 /* Record the line in the state machine. END_SEQUENCE is true if
20544 we're processing the end of a sequence. */
20545 void record_line (bool end_sequence);
20546
7ab6656f
OJ
20547 /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20548 nop-out rest of the lines in this sequence. */
6f77053d
PA
20549 void check_line_address (struct dwarf2_cu *cu,
20550 const gdb_byte *line_ptr,
7ab6656f 20551 CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
6f77053d
PA
20552
20553 void handle_set_discriminator (unsigned int discriminator)
20554 {
20555 m_discriminator = discriminator;
20556 m_line_has_non_zero_discriminator |= discriminator != 0;
20557 }
20558
20559 /* Handle DW_LNE_set_address. */
20560 void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20561 {
20562 m_op_index = 0;
20563 address += baseaddr;
20564 m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20565 }
20566
20567 /* Handle DW_LNS_advance_pc. */
20568 void handle_advance_pc (CORE_ADDR adjust);
20569
20570 /* Handle a special opcode. */
20571 void handle_special_opcode (unsigned char op_code);
20572
20573 /* Handle DW_LNS_advance_line. */
20574 void handle_advance_line (int line_delta)
20575 {
20576 advance_line (line_delta);
20577 }
20578
20579 /* Handle DW_LNS_set_file. */
20580 void handle_set_file (file_name_index file);
20581
20582 /* Handle DW_LNS_negate_stmt. */
20583 void handle_negate_stmt ()
20584 {
20585 m_is_stmt = !m_is_stmt;
20586 }
20587
20588 /* Handle DW_LNS_const_add_pc. */
20589 void handle_const_add_pc ();
20590
20591 /* Handle DW_LNS_fixed_advance_pc. */
20592 void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20593 {
20594 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20595 m_op_index = 0;
20596 }
20597
20598 /* Handle DW_LNS_copy. */
20599 void handle_copy ()
20600 {
20601 record_line (false);
20602 m_discriminator = 0;
20603 }
20604
20605 /* Handle DW_LNE_end_sequence. */
20606 void handle_end_sequence ()
20607 {
804d2729 20608 m_currently_recording_lines = true;
6f77053d
PA
20609 }
20610
20611private:
20612 /* Advance the line by LINE_DELTA. */
20613 void advance_line (int line_delta)
20614 {
20615 m_line += line_delta;
20616
20617 if (line_delta != 0)
20618 m_line_has_non_zero_discriminator = m_discriminator != 0;
8c43009f
PA
20619 }
20620
804d2729
TT
20621 struct dwarf2_cu *m_cu;
20622
6f77053d
PA
20623 gdbarch *m_gdbarch;
20624
20625 /* True if we're recording lines.
20626 Otherwise we're building partial symtabs and are just interested in
20627 finding include files mentioned by the line number program. */
20628 bool m_record_lines_p;
20629
8c43009f 20630 /* The line number header. */
6f77053d 20631 line_header *m_line_header;
8c43009f 20632
6f77053d
PA
20633 /* These are part of the standard DWARF line number state machine,
20634 and initialized according to the DWARF spec. */
d9b3de22 20635
6f77053d 20636 unsigned char m_op_index = 0;
8c43009f 20637 /* The line table index (1-based) of the current file. */
6f77053d
PA
20638 file_name_index m_file = (file_name_index) 1;
20639 unsigned int m_line = 1;
20640
20641 /* These are initialized in the constructor. */
20642
20643 CORE_ADDR m_address;
20644 bool m_is_stmt;
20645 unsigned int m_discriminator;
d9b3de22
DE
20646
20647 /* Additional bits of state we need to track. */
20648
20649 /* The last file that we called dwarf2_start_subfile for.
20650 This is only used for TLLs. */
6f77053d 20651 unsigned int m_last_file = 0;
d9b3de22 20652 /* The last file a line number was recorded for. */
6f77053d 20653 struct subfile *m_last_subfile = NULL;
d9b3de22 20654
804d2729
TT
20655 /* When true, record the lines we decode. */
20656 bool m_currently_recording_lines = false;
d9b3de22
DE
20657
20658 /* The last line number that was recorded, used to coalesce
20659 consecutive entries for the same line. This can happen, for
20660 example, when discriminators are present. PR 17276. */
6f77053d
PA
20661 unsigned int m_last_line = 0;
20662 bool m_line_has_non_zero_discriminator = false;
8c43009f 20663};
d9b3de22 20664
6f77053d
PA
20665void
20666lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20667{
20668 CORE_ADDR addr_adj = (((m_op_index + adjust)
20669 / m_line_header->maximum_ops_per_instruction)
20670 * m_line_header->minimum_instruction_length);
20671 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20672 m_op_index = ((m_op_index + adjust)
20673 % m_line_header->maximum_ops_per_instruction);
20674}
d9b3de22 20675
6f77053d
PA
20676void
20677lnp_state_machine::handle_special_opcode (unsigned char op_code)
d9b3de22 20678{
6f77053d
PA
20679 unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20680 CORE_ADDR addr_adj = (((m_op_index
20681 + (adj_opcode / m_line_header->line_range))
20682 / m_line_header->maximum_ops_per_instruction)
20683 * m_line_header->minimum_instruction_length);
20684 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20685 m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20686 % m_line_header->maximum_ops_per_instruction);
d9b3de22 20687
6f77053d
PA
20688 int line_delta = (m_line_header->line_base
20689 + (adj_opcode % m_line_header->line_range));
20690 advance_line (line_delta);
20691 record_line (false);
20692 m_discriminator = 0;
20693}
d9b3de22 20694
6f77053d
PA
20695void
20696lnp_state_machine::handle_set_file (file_name_index file)
20697{
20698 m_file = file;
20699
20700 const file_entry *fe = current_file ();
20701 if (fe == NULL)
20702 dwarf2_debug_line_missing_file_complaint ();
20703 else if (m_record_lines_p)
20704 {
20705 const char *dir = fe->include_dir (m_line_header);
20706
804d2729 20707 m_last_subfile = m_cu->builder->get_current_subfile ();
6f77053d 20708 m_line_has_non_zero_discriminator = m_discriminator != 0;
804d2729 20709 dwarf2_start_subfile (m_cu, fe->name, dir);
6f77053d
PA
20710 }
20711}
20712
20713void
20714lnp_state_machine::handle_const_add_pc ()
20715{
20716 CORE_ADDR adjust
20717 = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20718
20719 CORE_ADDR addr_adj
20720 = (((m_op_index + adjust)
20721 / m_line_header->maximum_ops_per_instruction)
20722 * m_line_header->minimum_instruction_length);
20723
20724 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20725 m_op_index = ((m_op_index + adjust)
20726 % m_line_header->maximum_ops_per_instruction);
20727}
d9b3de22 20728
a05a36a5
DE
20729/* Return non-zero if we should add LINE to the line number table.
20730 LINE is the line to add, LAST_LINE is the last line that was added,
20731 LAST_SUBFILE is the subfile for LAST_LINE.
20732 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20733 had a non-zero discriminator.
20734
20735 We have to be careful in the presence of discriminators.
20736 E.g., for this line:
20737
20738 for (i = 0; i < 100000; i++);
20739
20740 clang can emit four line number entries for that one line,
20741 each with a different discriminator.
20742 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20743
20744 However, we want gdb to coalesce all four entries into one.
20745 Otherwise the user could stepi into the middle of the line and
20746 gdb would get confused about whether the pc really was in the
20747 middle of the line.
20748
20749 Things are further complicated by the fact that two consecutive
20750 line number entries for the same line is a heuristic used by gcc
20751 to denote the end of the prologue. So we can't just discard duplicate
20752 entries, we have to be selective about it. The heuristic we use is
20753 that we only collapse consecutive entries for the same line if at least
20754 one of those entries has a non-zero discriminator. PR 17276.
20755
20756 Note: Addresses in the line number state machine can never go backwards
20757 within one sequence, thus this coalescing is ok. */
20758
20759static int
804d2729
TT
20760dwarf_record_line_p (struct dwarf2_cu *cu,
20761 unsigned int line, unsigned int last_line,
a05a36a5
DE
20762 int line_has_non_zero_discriminator,
20763 struct subfile *last_subfile)
20764{
804d2729 20765 if (cu->builder->get_current_subfile () != last_subfile)
a05a36a5
DE
20766 return 1;
20767 if (line != last_line)
20768 return 1;
20769 /* Same line for the same file that we've seen already.
20770 As a last check, for pr 17276, only record the line if the line
20771 has never had a non-zero discriminator. */
20772 if (!line_has_non_zero_discriminator)
20773 return 1;
20774 return 0;
20775}
20776
804d2729
TT
20777/* Use the CU's builder to record line number LINE beginning at
20778 address ADDRESS in the line table of subfile SUBFILE. */
252a6764
DE
20779
20780static void
d9b3de22
DE
20781dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20782 unsigned int line, CORE_ADDR address,
804d2729 20783 struct dwarf2_cu *cu)
252a6764
DE
20784{
20785 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20786
27e0867f
DE
20787 if (dwarf_line_debug)
20788 {
20789 fprintf_unfiltered (gdb_stdlog,
20790 "Recording line %u, file %s, address %s\n",
20791 line, lbasename (subfile->name),
20792 paddress (gdbarch, address));
20793 }
20794
804d2729
TT
20795 if (cu != nullptr)
20796 cu->builder->record_line (subfile, line, addr);
252a6764
DE
20797}
20798
20799/* Subroutine of dwarf_decode_lines_1 to simplify it.
20800 Mark the end of a set of line number records.
d9b3de22 20801 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
20802 If SUBFILE is NULL the request is ignored. */
20803
20804static void
20805dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
804d2729 20806 CORE_ADDR address, struct dwarf2_cu *cu)
252a6764 20807{
27e0867f
DE
20808 if (subfile == NULL)
20809 return;
20810
20811 if (dwarf_line_debug)
20812 {
20813 fprintf_unfiltered (gdb_stdlog,
20814 "Finishing current line, file %s, address %s\n",
20815 lbasename (subfile->name),
20816 paddress (gdbarch, address));
20817 }
20818
804d2729 20819 dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
d9b3de22
DE
20820}
20821
6f77053d
PA
20822void
20823lnp_state_machine::record_line (bool end_sequence)
d9b3de22 20824{
d9b3de22
DE
20825 if (dwarf_line_debug)
20826 {
20827 fprintf_unfiltered (gdb_stdlog,
20828 "Processing actual line %u: file %u,"
20829 " address %s, is_stmt %u, discrim %u\n",
6f77053d
PA
20830 m_line, to_underlying (m_file),
20831 paddress (m_gdbarch, m_address),
20832 m_is_stmt, m_discriminator);
d9b3de22
DE
20833 }
20834
6f77053d 20835 file_entry *fe = current_file ();
8c43009f
PA
20836
20837 if (fe == NULL)
d9b3de22
DE
20838 dwarf2_debug_line_missing_file_complaint ();
20839 /* For now we ignore lines not starting on an instruction boundary.
20840 But not when processing end_sequence for compatibility with the
20841 previous version of the code. */
6f77053d 20842 else if (m_op_index == 0 || end_sequence)
d9b3de22 20843 {
8c43009f 20844 fe->included_p = 1;
c258c396 20845 if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
d9b3de22 20846 {
804d2729
TT
20847 if (m_last_subfile != m_cu->builder->get_current_subfile ()
20848 || end_sequence)
d9b3de22 20849 {
804d2729
TT
20850 dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20851 m_currently_recording_lines ? m_cu : nullptr);
d9b3de22
DE
20852 }
20853
20854 if (!end_sequence)
20855 {
804d2729 20856 if (dwarf_record_line_p (m_cu, m_line, m_last_line,
6f77053d
PA
20857 m_line_has_non_zero_discriminator,
20858 m_last_subfile))
d9b3de22 20859 {
804d2729
TT
20860 dwarf_record_line_1 (m_gdbarch,
20861 m_cu->builder->get_current_subfile (),
6f77053d 20862 m_line, m_address,
804d2729 20863 m_currently_recording_lines ? m_cu : nullptr);
d9b3de22 20864 }
804d2729 20865 m_last_subfile = m_cu->builder->get_current_subfile ();
6f77053d 20866 m_last_line = m_line;
d9b3de22
DE
20867 }
20868 }
20869 }
20870}
20871
804d2729
TT
20872lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20873 line_header *lh, bool record_lines_p)
d9b3de22 20874{
804d2729 20875 m_cu = cu;
6f77053d
PA
20876 m_gdbarch = arch;
20877 m_record_lines_p = record_lines_p;
20878 m_line_header = lh;
d9b3de22 20879
804d2729 20880 m_currently_recording_lines = true;
d9b3de22 20881
d9b3de22
DE
20882 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20883 was a line entry for it so that the backend has a chance to adjust it
20884 and also record it in case it needs it. This is currently used by MIPS
20885 code, cf. `mips_adjust_dwarf2_line'. */
6f77053d
PA
20886 m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20887 m_is_stmt = lh->default_is_stmt;
20888 m_discriminator = 0;
252a6764
DE
20889}
20890
6f77053d
PA
20891void
20892lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20893 const gdb_byte *line_ptr,
7ab6656f 20894 CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
924c2928 20895{
7ab6656f
OJ
20896 /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20897 the pc range of the CU. However, we restrict the test to only ADDRESS
20898 values of zero to preserve GDB's previous behaviour which is to handle
20899 the specific case of a function being GC'd by the linker. */
924c2928 20900
7ab6656f 20901 if (address == 0 && address < unrelocated_lowpc)
924c2928
DE
20902 {
20903 /* This line table is for a function which has been
20904 GCd by the linker. Ignore it. PR gdb/12528 */
20905
518817b3 20906 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
924c2928
DE
20907 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20908
b98664d3 20909 complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
924c2928 20910 line_offset, objfile_name (objfile));
804d2729
TT
20911 m_currently_recording_lines = false;
20912 /* Note: m_currently_recording_lines is left as false until we see
20913 DW_LNE_end_sequence. */
924c2928
DE
20914 }
20915}
20916
f3f5162e 20917/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
20918 Process the line number information in LH.
20919 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20920 program in order to set included_p for every referenced header. */
debd256d 20921
c906108c 20922static void
43f3e411
DE
20923dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20924 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 20925{
d521ce57
TT
20926 const gdb_byte *line_ptr, *extended_end;
20927 const gdb_byte *line_end;
a8c50c1f 20928 unsigned int bytes_read, extended_len;
699ca60a 20929 unsigned char op_code, extended_op;
e142c38c 20930 CORE_ADDR baseaddr;
518817b3 20931 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
f3f5162e 20932 bfd *abfd = objfile->obfd;
fbf65064 20933 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6f77053d
PA
20934 /* True if we're recording line info (as opposed to building partial
20935 symtabs and just interested in finding include files mentioned by
20936 the line number program). */
20937 bool record_lines_p = !decode_for_pst_p;
e142c38c
DJ
20938
20939 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 20940
debd256d
JB
20941 line_ptr = lh->statement_program_start;
20942 line_end = lh->statement_program_end;
c906108c
SS
20943
20944 /* Read the statement sequences until there's nothing left. */
20945 while (line_ptr < line_end)
20946 {
6f77053d
PA
20947 /* The DWARF line number program state machine. Reset the state
20948 machine at the start of each sequence. */
804d2729 20949 lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
6f77053d 20950 bool end_sequence = false;
d9b3de22 20951
8c43009f 20952 if (record_lines_p)
c906108c 20953 {
8c43009f
PA
20954 /* Start a subfile for the current file of the state
20955 machine. */
20956 const file_entry *fe = state_machine.current_file ();
20957
20958 if (fe != NULL)
804d2729 20959 dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
c906108c
SS
20960 }
20961
a738430d 20962 /* Decode the table. */
d9b3de22 20963 while (line_ptr < line_end && !end_sequence)
c906108c
SS
20964 {
20965 op_code = read_1_byte (abfd, line_ptr);
20966 line_ptr += 1;
9aa1fe7e 20967
debd256d 20968 if (op_code >= lh->opcode_base)
6e70227d 20969 {
8e07a239 20970 /* Special opcode. */
6f77053d 20971 state_machine.handle_special_opcode (op_code);
9aa1fe7e
GK
20972 }
20973 else switch (op_code)
c906108c
SS
20974 {
20975 case DW_LNS_extended_op:
3e43a32a
MS
20976 extended_len = read_unsigned_leb128 (abfd, line_ptr,
20977 &bytes_read);
473b7be6 20978 line_ptr += bytes_read;
a8c50c1f 20979 extended_end = line_ptr + extended_len;
c906108c
SS
20980 extended_op = read_1_byte (abfd, line_ptr);
20981 line_ptr += 1;
20982 switch (extended_op)
20983 {
20984 case DW_LNE_end_sequence:
6f77053d
PA
20985 state_machine.handle_end_sequence ();
20986 end_sequence = true;
c906108c
SS
20987 break;
20988 case DW_LNE_set_address:
d9b3de22
DE
20989 {
20990 CORE_ADDR address
20991 = read_address (abfd, line_ptr, cu, &bytes_read);
d9b3de22 20992 line_ptr += bytes_read;
6f77053d
PA
20993
20994 state_machine.check_line_address (cu, line_ptr,
7ab6656f 20995 lowpc - baseaddr, address);
6f77053d 20996 state_machine.handle_set_address (baseaddr, address);
d9b3de22 20997 }
c906108c
SS
20998 break;
20999 case DW_LNE_define_file:
debd256d 21000 {
d521ce57 21001 const char *cur_file;
ecfb656c
PA
21002 unsigned int mod_time, length;
21003 dir_index dindex;
6e70227d 21004
3e43a32a
MS
21005 cur_file = read_direct_string (abfd, line_ptr,
21006 &bytes_read);
debd256d 21007 line_ptr += bytes_read;
ecfb656c 21008 dindex = (dir_index)
debd256d
JB
21009 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21010 line_ptr += bytes_read;
21011 mod_time =
21012 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21013 line_ptr += bytes_read;
21014 length =
21015 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21016 line_ptr += bytes_read;
ecfb656c 21017 lh->add_file_name (cur_file, dindex, mod_time, length);
debd256d 21018 }
c906108c 21019 break;
d0c6ba3d 21020 case DW_LNE_set_discriminator:
6f77053d
PA
21021 {
21022 /* The discriminator is not interesting to the
21023 debugger; just ignore it. We still need to
21024 check its value though:
21025 if there are consecutive entries for the same
21026 (non-prologue) line we want to coalesce them.
21027 PR 17276. */
21028 unsigned int discr
21029 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21030 line_ptr += bytes_read;
21031
21032 state_machine.handle_set_discriminator (discr);
21033 }
d0c6ba3d 21034 break;
c906108c 21035 default:
b98664d3 21036 complaint (_("mangled .debug_line section"));
debd256d 21037 return;
c906108c 21038 }
a8c50c1f
DJ
21039 /* Make sure that we parsed the extended op correctly. If e.g.
21040 we expected a different address size than the producer used,
21041 we may have read the wrong number of bytes. */
21042 if (line_ptr != extended_end)
21043 {
b98664d3 21044 complaint (_("mangled .debug_line section"));
a8c50c1f
DJ
21045 return;
21046 }
c906108c
SS
21047 break;
21048 case DW_LNS_copy:
6f77053d 21049 state_machine.handle_copy ();
c906108c
SS
21050 break;
21051 case DW_LNS_advance_pc:
2dc7f7b3
TT
21052 {
21053 CORE_ADDR adjust
21054 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
2dc7f7b3 21055 line_ptr += bytes_read;
6f77053d
PA
21056
21057 state_machine.handle_advance_pc (adjust);
2dc7f7b3 21058 }
c906108c
SS
21059 break;
21060 case DW_LNS_advance_line:
a05a36a5
DE
21061 {
21062 int line_delta
21063 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
a05a36a5 21064 line_ptr += bytes_read;
6f77053d
PA
21065
21066 state_machine.handle_advance_line (line_delta);
a05a36a5 21067 }
c906108c
SS
21068 break;
21069 case DW_LNS_set_file:
d9b3de22 21070 {
6f77053d 21071 file_name_index file
ecfb656c
PA
21072 = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21073 &bytes_read);
d9b3de22 21074 line_ptr += bytes_read;
8c43009f 21075
6f77053d 21076 state_machine.handle_set_file (file);
d9b3de22 21077 }
c906108c
SS
21078 break;
21079 case DW_LNS_set_column:
0ad93d4f 21080 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
21081 line_ptr += bytes_read;
21082 break;
21083 case DW_LNS_negate_stmt:
6f77053d 21084 state_machine.handle_negate_stmt ();
c906108c
SS
21085 break;
21086 case DW_LNS_set_basic_block:
c906108c 21087 break;
c2c6d25f
JM
21088 /* Add to the address register of the state machine the
21089 address increment value corresponding to special opcode
a738430d
MK
21090 255. I.e., this value is scaled by the minimum
21091 instruction length since special opcode 255 would have
b021a221 21092 scaled the increment. */
c906108c 21093 case DW_LNS_const_add_pc:
6f77053d 21094 state_machine.handle_const_add_pc ();
c906108c
SS
21095 break;
21096 case DW_LNS_fixed_advance_pc:
3e29f34a 21097 {
6f77053d 21098 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
3e29f34a 21099 line_ptr += 2;
6f77053d
PA
21100
21101 state_machine.handle_fixed_advance_pc (addr_adj);
3e29f34a 21102 }
c906108c 21103 break;
9aa1fe7e 21104 default:
a738430d
MK
21105 {
21106 /* Unknown standard opcode, ignore it. */
9aa1fe7e 21107 int i;
a738430d 21108
debd256d 21109 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
21110 {
21111 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21112 line_ptr += bytes_read;
21113 }
21114 }
c906108c
SS
21115 }
21116 }
d9b3de22
DE
21117
21118 if (!end_sequence)
21119 dwarf2_debug_line_missing_end_sequence_complaint ();
21120
21121 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21122 in which case we still finish recording the last line). */
6f77053d 21123 state_machine.record_line (true);
c906108c 21124 }
f3f5162e
DE
21125}
21126
21127/* Decode the Line Number Program (LNP) for the given line_header
21128 structure and CU. The actual information extracted and the type
21129 of structures created from the LNP depends on the value of PST.
21130
21131 1. If PST is NULL, then this procedure uses the data from the program
21132 to create all necessary symbol tables, and their linetables.
21133
21134 2. If PST is not NULL, this procedure reads the program to determine
21135 the list of files included by the unit represented by PST, and
21136 builds all the associated partial symbol tables.
21137
21138 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21139 It is used for relative paths in the line table.
21140 NOTE: When processing partial symtabs (pst != NULL),
21141 comp_dir == pst->dirname.
21142
21143 NOTE: It is important that psymtabs have the same file name (via strcmp)
21144 as the corresponding symtab. Since COMP_DIR is not used in the name of the
21145 symtab we don't use it in the name of the psymtabs we create.
21146 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
21147 A good testcase for this is mb-inline.exp.
21148
527f3840
JK
21149 LOWPC is the lowest address in CU (or 0 if not known).
21150
21151 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21152 for its PC<->lines mapping information. Otherwise only the filename
21153 table is read in. */
f3f5162e
DE
21154
21155static void
21156dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 21157 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 21158 CORE_ADDR lowpc, int decode_mapping)
f3f5162e 21159{
518817b3 21160 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
f3f5162e 21161 const int decode_for_pst_p = (pst != NULL);
f3f5162e 21162
527f3840
JK
21163 if (decode_mapping)
21164 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
21165
21166 if (decode_for_pst_p)
21167 {
21168 int file_index;
21169
21170 /* Now that we're done scanning the Line Header Program, we can
21171 create the psymtab of each included file. */
fff8551c 21172 for (file_index = 0; file_index < lh->file_names.size (); file_index++)
aaa75496
JB
21173 if (lh->file_names[file_index].included_p == 1)
21174 {
c89b44cd 21175 gdb::unique_xmalloc_ptr<char> name_holder;
d521ce57 21176 const char *include_name =
c89b44cd
TT
21177 psymtab_include_file_name (lh, file_index, pst, comp_dir,
21178 &name_holder);
c6da4cef 21179 if (include_name != NULL)
aaa75496
JB
21180 dwarf2_create_include_psymtab (include_name, pst, objfile);
21181 }
21182 }
cb1df416
DJ
21183 else
21184 {
21185 /* Make sure a symtab is created for every file, even files
21186 which contain only variables (i.e. no code with associated
21187 line numbers). */
804d2729 21188 struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
cb1df416 21189 int i;
cb1df416 21190
fff8551c 21191 for (i = 0; i < lh->file_names.size (); i++)
cb1df416 21192 {
8c43009f 21193 file_entry &fe = lh->file_names[i];
9a619af0 21194
804d2729 21195 dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
cb1df416 21196
804d2729 21197 if (cu->builder->get_current_subfile ()->symtab == NULL)
43f3e411 21198 {
804d2729
TT
21199 cu->builder->get_current_subfile ()->symtab
21200 = allocate_symtab (cust,
21201 cu->builder->get_current_subfile ()->name);
43f3e411 21202 }
804d2729 21203 fe.symtab = cu->builder->get_current_subfile ()->symtab;
cb1df416
DJ
21204 }
21205 }
c906108c
SS
21206}
21207
21208/* Start a subfile for DWARF. FILENAME is the name of the file and
21209 DIRNAME the name of the source directory which contains FILENAME
4d663531 21210 or NULL if not known.
c906108c
SS
21211 This routine tries to keep line numbers from identical absolute and
21212 relative file names in a common subfile.
21213
21214 Using the `list' example from the GDB testsuite, which resides in
21215 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21216 of /srcdir/list0.c yields the following debugging information for list0.c:
21217
c5aa993b 21218 DW_AT_name: /srcdir/list0.c
4d663531 21219 DW_AT_comp_dir: /compdir
357e46e7 21220 files.files[0].name: list0.h
c5aa993b 21221 files.files[0].dir: /srcdir
357e46e7 21222 files.files[1].name: list0.c
c5aa993b 21223 files.files[1].dir: /srcdir
c906108c
SS
21224
21225 The line number information for list0.c has to end up in a single
4f1520fb
FR
21226 subfile, so that `break /srcdir/list0.c:1' works as expected.
21227 start_subfile will ensure that this happens provided that we pass the
21228 concatenation of files.files[1].dir and files.files[1].name as the
21229 subfile's name. */
c906108c
SS
21230
21231static void
804d2729
TT
21232dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21233 const char *dirname)
c906108c 21234{
d521ce57 21235 char *copy = NULL;
4f1520fb 21236
4d663531 21237 /* In order not to lose the line information directory,
4f1520fb
FR
21238 we concatenate it to the filename when it makes sense.
21239 Note that the Dwarf3 standard says (speaking of filenames in line
21240 information): ``The directory index is ignored for file names
21241 that represent full path names''. Thus ignoring dirname in the
21242 `else' branch below isn't an issue. */
c906108c 21243
d5166ae1 21244 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
21245 {
21246 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21247 filename = copy;
21248 }
c906108c 21249
804d2729 21250 cu->builder->start_subfile (filename);
4f1520fb 21251
d521ce57
TT
21252 if (copy != NULL)
21253 xfree (copy);
c906108c
SS
21254}
21255
804d2729
TT
21256/* Start a symtab for DWARF. NAME, COMP_DIR, LOW_PC are passed to the
21257 buildsym_compunit constructor. */
f4dc4d17 21258
43f3e411 21259static struct compunit_symtab *
f4dc4d17 21260dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 21261 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 21262{
804d2729 21263 gdb_assert (cu->builder == nullptr);
43f3e411 21264
804d2729
TT
21265 cu->builder.reset (new struct buildsym_compunit
21266 (cu->per_cu->dwarf2_per_objfile->objfile,
21267 name, comp_dir, cu->language, low_pc));
93b8bea4 21268
804d2729
TT
21269 cu->list_in_scope = cu->builder->get_file_symbols ();
21270
21271 cu->builder->record_debugformat ("DWARF 2");
21272 cu->builder->record_producer (cu->producer);
f4dc4d17 21273
9068261f 21274 cu->processing_has_namespace_info = false;
43f3e411 21275
804d2729 21276 return cu->builder->get_compunit_symtab ();
f4dc4d17
DE
21277}
21278
4c2df51b
DJ
21279static void
21280var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 21281 struct dwarf2_cu *cu)
4c2df51b 21282{
518817b3 21283 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
e7c27a73
DJ
21284 struct comp_unit_head *cu_header = &cu->header;
21285
4c2df51b
DJ
21286 /* NOTE drow/2003-01-30: There used to be a comment and some special
21287 code here to turn a symbol with DW_AT_external and a
21288 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
21289 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21290 with some versions of binutils) where shared libraries could have
21291 relocations against symbols in their debug information - the
21292 minimal symbol would have the right address, but the debug info
21293 would not. It's no longer necessary, because we will explicitly
21294 apply relocations when we read in the debug information now. */
21295
21296 /* A DW_AT_location attribute with no contents indicates that a
21297 variable has been optimized away. */
21298 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21299 {
f1e6e072 21300 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
21301 return;
21302 }
21303
21304 /* Handle one degenerate form of location expression specially, to
21305 preserve GDB's previous behavior when section offsets are
3019eac3
DE
21306 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21307 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
21308
21309 if (attr_form_is_block (attr)
3019eac3
DE
21310 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21311 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21312 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21313 && (DW_BLOCK (attr)->size
21314 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 21315 {
891d2f0b 21316 unsigned int dummy;
4c2df51b 21317
3019eac3
DE
21318 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21319 SYMBOL_VALUE_ADDRESS (sym) =
21320 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21321 else
21322 SYMBOL_VALUE_ADDRESS (sym) =
21323 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 21324 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
21325 fixup_symbol_section (sym, objfile);
21326 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21327 SYMBOL_SECTION (sym));
4c2df51b
DJ
21328 return;
21329 }
21330
21331 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21332 expression evaluator, and use LOC_COMPUTED only when necessary
21333 (i.e. when the value of a register or memory location is
21334 referenced, or a thread-local block, etc.). Then again, it might
21335 not be worthwhile. I'm assuming that it isn't unless performance
21336 or memory numbers show me otherwise. */
21337
f1e6e072 21338 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 21339
f1e6e072 21340 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
9068261f 21341 cu->has_loclist = true;
4c2df51b
DJ
21342}
21343
c906108c
SS
21344/* Given a pointer to a DWARF information entry, figure out if we need
21345 to make a symbol table entry for it, and if so, create a new entry
21346 and return a pointer to it.
21347 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
21348 used the passed type.
21349 If SPACE is not NULL, use it to hold the new symbol. If it is
21350 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
21351
21352static struct symbol *
5e2db402
TT
21353new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21354 struct symbol *space)
c906108c 21355{
518817b3
SM
21356 struct dwarf2_per_objfile *dwarf2_per_objfile
21357 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 21358 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 21359 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 21360 struct symbol *sym = NULL;
15d034d0 21361 const char *name;
c906108c
SS
21362 struct attribute *attr = NULL;
21363 struct attribute *attr2 = NULL;
e142c38c 21364 CORE_ADDR baseaddr;
e37fd15a
SW
21365 struct pending **list_to_add = NULL;
21366
edb3359d 21367 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
21368
21369 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 21370
94af9270 21371 name = dwarf2_name (die, cu);
c906108c
SS
21372 if (name)
21373 {
94af9270 21374 const char *linkagename;
34eaf542 21375 int suppress_add = 0;
94af9270 21376
34eaf542
TT
21377 if (space)
21378 sym = space;
21379 else
e623cf5d 21380 sym = allocate_symbol (objfile);
c906108c 21381 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
21382
21383 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 21384 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
21385 linkagename = dwarf2_physname (name, die, cu);
21386 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 21387
f55ee35c
JK
21388 /* Fortran does not have mangling standard and the mangling does differ
21389 between gfortran, iFort etc. */
21390 if (cu->language == language_fortran
b250c185 21391 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 21392 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 21393 dwarf2_full_name (name, die, cu),
29df156d 21394 NULL);
f55ee35c 21395
c906108c 21396 /* Default assumptions.
c5aa993b 21397 Use the passed type or decode it from the die. */
176620f1 21398 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 21399 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
21400 if (type != NULL)
21401 SYMBOL_TYPE (sym) = type;
21402 else
e7c27a73 21403 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
21404 attr = dwarf2_attr (die,
21405 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21406 cu);
c906108c
SS
21407 if (attr)
21408 {
21409 SYMBOL_LINE (sym) = DW_UNSND (attr);
21410 }
cb1df416 21411
edb3359d
DJ
21412 attr = dwarf2_attr (die,
21413 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21414 cu);
cb1df416
DJ
21415 if (attr)
21416 {
ecfb656c 21417 file_name_index file_index = (file_name_index) DW_UNSND (attr);
8c43009f 21418 struct file_entry *fe;
9a619af0 21419
ecfb656c
PA
21420 if (cu->line_header != NULL)
21421 fe = cu->line_header->file_name_at (file_index);
8c43009f
PA
21422 else
21423 fe = NULL;
21424
21425 if (fe == NULL)
b98664d3 21426 complaint (_("file index out of range"));
8c43009f
PA
21427 else
21428 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
21429 }
21430
c906108c
SS
21431 switch (die->tag)
21432 {
21433 case DW_TAG_label:
e142c38c 21434 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 21435 if (attr)
3e29f34a
MR
21436 {
21437 CORE_ADDR addr;
21438
21439 addr = attr_value_as_address (attr);
21440 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21441 SYMBOL_VALUE_ADDRESS (sym) = addr;
21442 }
0f5238ed
TT
21443 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21444 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 21445 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
380618d6 21446 dw2_add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
21447 break;
21448 case DW_TAG_subprogram:
21449 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21450 finish_block. */
f1e6e072 21451 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 21452 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
21453 if ((attr2 && (DW_UNSND (attr2) != 0))
21454 || cu->language == language_ada)
c906108c 21455 {
2cfa0c8d
JB
21456 /* Subprograms marked external are stored as a global symbol.
21457 Ada subprograms, whether marked external or not, are always
21458 stored as a global symbol, because we want to be able to
21459 access them globally. For instance, we want to be able
21460 to break on a nested subprogram without having to
21461 specify the context. */
804d2729 21462 list_to_add = cu->builder->get_global_symbols ();
c906108c
SS
21463 }
21464 else
21465 {
e37fd15a 21466 list_to_add = cu->list_in_scope;
c906108c
SS
21467 }
21468 break;
edb3359d
DJ
21469 case DW_TAG_inlined_subroutine:
21470 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21471 finish_block. */
f1e6e072 21472 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 21473 SYMBOL_INLINED (sym) = 1;
481860b3 21474 list_to_add = cu->list_in_scope;
edb3359d 21475 break;
34eaf542
TT
21476 case DW_TAG_template_value_param:
21477 suppress_add = 1;
21478 /* Fall through. */
72929c62 21479 case DW_TAG_constant:
c906108c 21480 case DW_TAG_variable:
254e6b9e 21481 case DW_TAG_member:
0963b4bd
MS
21482 /* Compilation with minimal debug info may result in
21483 variables with missing type entries. Change the
21484 misleading `void' type to something sensible. */
c906108c 21485 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
46a4882b 21486 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
64c50499 21487
e142c38c 21488 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
21489 /* In the case of DW_TAG_member, we should only be called for
21490 static const members. */
21491 if (die->tag == DW_TAG_member)
21492 {
3863f96c
DE
21493 /* dwarf2_add_field uses die_is_declaration,
21494 so we do the same. */
254e6b9e
DE
21495 gdb_assert (die_is_declaration (die, cu));
21496 gdb_assert (attr);
21497 }
c906108c
SS
21498 if (attr)
21499 {
e7c27a73 21500 dwarf2_const_value (attr, sym, cu);
e142c38c 21501 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 21502 if (!suppress_add)
34eaf542
TT
21503 {
21504 if (attr2 && (DW_UNSND (attr2) != 0))
804d2729 21505 list_to_add = cu->builder->get_global_symbols ();
34eaf542 21506 else
e37fd15a 21507 list_to_add = cu->list_in_scope;
34eaf542 21508 }
c906108c
SS
21509 break;
21510 }
e142c38c 21511 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
21512 if (attr)
21513 {
e7c27a73 21514 var_decode_location (attr, sym, cu);
e142c38c 21515 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
21516
21517 /* Fortran explicitly imports any global symbols to the local
21518 scope by DW_TAG_common_block. */
21519 if (cu->language == language_fortran && die->parent
21520 && die->parent->tag == DW_TAG_common_block)
21521 attr2 = NULL;
21522
caac4577
JG
21523 if (SYMBOL_CLASS (sym) == LOC_STATIC
21524 && SYMBOL_VALUE_ADDRESS (sym) == 0
21525 && !dwarf2_per_objfile->has_section_at_zero)
21526 {
21527 /* When a static variable is eliminated by the linker,
21528 the corresponding debug information is not stripped
21529 out, but the variable address is set to null;
21530 do not add such variables into symbol table. */
21531 }
21532 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 21533 {
f55ee35c
JK
21534 /* Workaround gfortran PR debug/40040 - it uses
21535 DW_AT_location for variables in -fPIC libraries which may
21536 get overriden by other libraries/executable and get
21537 a different address. Resolve it by the minimal symbol
21538 which may come from inferior's executable using copy
21539 relocation. Make this workaround only for gfortran as for
21540 other compilers GDB cannot guess the minimal symbol
21541 Fortran mangling kind. */
21542 if (cu->language == language_fortran && die->parent
21543 && die->parent->tag == DW_TAG_module
21544 && cu->producer
28586665 21545 && startswith (cu->producer, "GNU Fortran"))
f1e6e072 21546 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 21547
1c809c68
TT
21548 /* A variable with DW_AT_external is never static,
21549 but it may be block-scoped. */
804d2729
TT
21550 list_to_add
21551 = (cu->list_in_scope == cu->builder->get_file_symbols ()
21552 ? cu->builder->get_global_symbols ()
21553 : cu->list_in_scope);
1c809c68 21554 }
c906108c 21555 else
e37fd15a 21556 list_to_add = cu->list_in_scope;
c906108c
SS
21557 }
21558 else
21559 {
21560 /* We do not know the address of this symbol.
c5aa993b
JM
21561 If it is an external symbol and we have type information
21562 for it, enter the symbol as a LOC_UNRESOLVED symbol.
21563 The address of the variable will then be determined from
21564 the minimal symbol table whenever the variable is
21565 referenced. */
e142c38c 21566 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
21567
21568 /* Fortran explicitly imports any global symbols to the local
21569 scope by DW_TAG_common_block. */
21570 if (cu->language == language_fortran && die->parent
21571 && die->parent->tag == DW_TAG_common_block)
21572 {
21573 /* SYMBOL_CLASS doesn't matter here because
21574 read_common_block is going to reset it. */
21575 if (!suppress_add)
21576 list_to_add = cu->list_in_scope;
21577 }
21578 else if (attr2 && (DW_UNSND (attr2) != 0)
21579 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 21580 {
0fe7935b
DJ
21581 /* A variable with DW_AT_external is never static, but it
21582 may be block-scoped. */
804d2729
TT
21583 list_to_add
21584 = (cu->list_in_scope == cu->builder->get_file_symbols ()
21585 ? cu->builder->get_global_symbols ()
21586 : cu->list_in_scope);
0fe7935b 21587
f1e6e072 21588 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 21589 }
442ddf59
JK
21590 else if (!die_is_declaration (die, cu))
21591 {
21592 /* Use the default LOC_OPTIMIZED_OUT class. */
21593 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
21594 if (!suppress_add)
21595 list_to_add = cu->list_in_scope;
442ddf59 21596 }
c906108c
SS
21597 }
21598 break;
21599 case DW_TAG_formal_parameter:
a60f3166
TT
21600 {
21601 /* If we are inside a function, mark this as an argument. If
21602 not, we might be looking at an argument to an inlined function
21603 when we do not have enough information to show inlined frames;
21604 pretend it's a local variable in that case so that the user can
21605 still see it. */
804d2729
TT
21606 struct context_stack *curr
21607 = cu->builder->get_current_context_stack ();
a60f3166
TT
21608 if (curr != nullptr && curr->name != nullptr)
21609 SYMBOL_IS_ARGUMENT (sym) = 1;
21610 attr = dwarf2_attr (die, DW_AT_location, cu);
21611 if (attr)
21612 {
21613 var_decode_location (attr, sym, cu);
21614 }
21615 attr = dwarf2_attr (die, DW_AT_const_value, cu);
21616 if (attr)
21617 {
21618 dwarf2_const_value (attr, sym, cu);
21619 }
f346a30d 21620
a60f3166
TT
21621 list_to_add = cu->list_in_scope;
21622 }
c906108c
SS
21623 break;
21624 case DW_TAG_unspecified_parameters:
21625 /* From varargs functions; gdb doesn't seem to have any
21626 interest in this information, so just ignore it for now.
21627 (FIXME?) */
21628 break;
34eaf542
TT
21629 case DW_TAG_template_type_param:
21630 suppress_add = 1;
21631 /* Fall through. */
c906108c 21632 case DW_TAG_class_type:
680b30c7 21633 case DW_TAG_interface_type:
c906108c
SS
21634 case DW_TAG_structure_type:
21635 case DW_TAG_union_type:
72019c9c 21636 case DW_TAG_set_type:
c906108c 21637 case DW_TAG_enumeration_type:
f1e6e072 21638 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 21639 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 21640
63d06c5c 21641 {
9c37b5ae 21642 /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
63d06c5c
DC
21643 really ever be static objects: otherwise, if you try
21644 to, say, break of a class's method and you're in a file
21645 which doesn't mention that class, it won't work unless
21646 the check for all static symbols in lookup_symbol_aux
21647 saves you. See the OtherFileClass tests in
21648 gdb.c++/namespace.exp. */
21649
e37fd15a 21650 if (!suppress_add)
34eaf542 21651 {
804d2729
TT
21652 list_to_add
21653 = (cu->list_in_scope == cu->builder->get_file_symbols ()
21654 && cu->language == language_cplus
21655 ? cu->builder->get_global_symbols ()
21656 : cu->list_in_scope);
63d06c5c 21657
64382290 21658 /* The semantics of C++ state that "struct foo {
9c37b5ae 21659 ... }" also defines a typedef for "foo". */
64382290 21660 if (cu->language == language_cplus
45280282 21661 || cu->language == language_ada
c44af4eb
TT
21662 || cu->language == language_d
21663 || cu->language == language_rust)
64382290
TT
21664 {
21665 /* The symbol's name is already allocated along
21666 with this objfile, so we don't need to
21667 duplicate it for the type. */
21668 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21669 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21670 }
63d06c5c
DC
21671 }
21672 }
c906108c
SS
21673 break;
21674 case DW_TAG_typedef:
f1e6e072 21675 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 21676 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 21677 list_to_add = cu->list_in_scope;
63d06c5c 21678 break;
c906108c 21679 case DW_TAG_base_type:
a02abb62 21680 case DW_TAG_subrange_type:
f1e6e072 21681 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 21682 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 21683 list_to_add = cu->list_in_scope;
c906108c
SS
21684 break;
21685 case DW_TAG_enumerator:
e142c38c 21686 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
21687 if (attr)
21688 {
e7c27a73 21689 dwarf2_const_value (attr, sym, cu);
c906108c 21690 }
63d06c5c
DC
21691 {
21692 /* NOTE: carlton/2003-11-10: See comment above in the
21693 DW_TAG_class_type, etc. block. */
21694
804d2729
TT
21695 list_to_add
21696 = (cu->list_in_scope == cu->builder->get_file_symbols ()
21697 && cu->language == language_cplus
21698 ? cu->builder->get_global_symbols ()
21699 : cu->list_in_scope);
63d06c5c 21700 }
c906108c 21701 break;
74921315 21702 case DW_TAG_imported_declaration:
5c4e30ca 21703 case DW_TAG_namespace:
f1e6e072 21704 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
804d2729 21705 list_to_add = cu->builder->get_global_symbols ();
5c4e30ca 21706 break;
530e8392
KB
21707 case DW_TAG_module:
21708 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21709 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
804d2729 21710 list_to_add = cu->builder->get_global_symbols ();
530e8392 21711 break;
4357ac6c 21712 case DW_TAG_common_block:
f1e6e072 21713 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c 21714 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
380618d6 21715 dw2_add_symbol_to_list (sym, cu->list_in_scope);
4357ac6c 21716 break;
c906108c
SS
21717 default:
21718 /* Not a tag we recognize. Hopefully we aren't processing
21719 trash data, but since we must specifically ignore things
21720 we don't recognize, there is nothing else we should do at
0963b4bd 21721 this point. */
b98664d3 21722 complaint (_("unsupported tag: '%s'"),
4d3c2250 21723 dwarf_tag_name (die->tag));
c906108c
SS
21724 break;
21725 }
df8a16a1 21726
e37fd15a
SW
21727 if (suppress_add)
21728 {
21729 sym->hash_next = objfile->template_symbols;
21730 objfile->template_symbols = sym;
21731 list_to_add = NULL;
21732 }
21733
21734 if (list_to_add != NULL)
380618d6 21735 dw2_add_symbol_to_list (sym, list_to_add);
e37fd15a 21736
df8a16a1
DJ
21737 /* For the benefit of old versions of GCC, check for anonymous
21738 namespaces based on the demangled name. */
4d4ec4e5 21739 if (!cu->processing_has_namespace_info
94af9270 21740 && cu->language == language_cplus)
804d2729 21741 cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
c906108c
SS
21742 }
21743 return (sym);
21744}
21745
98bfdba5
PA
21746/* Given an attr with a DW_FORM_dataN value in host byte order,
21747 zero-extend it as appropriate for the symbol's type. The DWARF
21748 standard (v4) is not entirely clear about the meaning of using
21749 DW_FORM_dataN for a constant with a signed type, where the type is
21750 wider than the data. The conclusion of a discussion on the DWARF
21751 list was that this is unspecified. We choose to always zero-extend
21752 because that is the interpretation long in use by GCC. */
c906108c 21753
98bfdba5 21754static gdb_byte *
ff39bb5e 21755dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 21756 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 21757{
518817b3 21758 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
e17a4113
UW
21759 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21760 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
21761 LONGEST l = DW_UNSND (attr);
21762
21763 if (bits < sizeof (*value) * 8)
21764 {
21765 l &= ((LONGEST) 1 << bits) - 1;
21766 *value = l;
21767 }
21768 else if (bits == sizeof (*value) * 8)
21769 *value = l;
21770 else
21771 {
224c3ddb 21772 gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
98bfdba5
PA
21773 store_unsigned_integer (bytes, bits / 8, byte_order, l);
21774 return bytes;
21775 }
21776
21777 return NULL;
21778}
21779
21780/* Read a constant value from an attribute. Either set *VALUE, or if
21781 the value does not fit in *VALUE, set *BYTES - either already
21782 allocated on the objfile obstack, or newly allocated on OBSTACK,
21783 or, set *BATON, if we translated the constant to a location
21784 expression. */
21785
21786static void
ff39bb5e 21787dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
21788 const char *name, struct obstack *obstack,
21789 struct dwarf2_cu *cu,
d521ce57 21790 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
21791 struct dwarf2_locexpr_baton **baton)
21792{
518817b3 21793 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
98bfdba5 21794 struct comp_unit_head *cu_header = &cu->header;
c906108c 21795 struct dwarf_block *blk;
98bfdba5
PA
21796 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21797 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21798
21799 *value = 0;
21800 *bytes = NULL;
21801 *baton = NULL;
c906108c
SS
21802
21803 switch (attr->form)
21804 {
21805 case DW_FORM_addr:
3019eac3 21806 case DW_FORM_GNU_addr_index:
ac56253d 21807 {
ac56253d
TT
21808 gdb_byte *data;
21809
98bfdba5
PA
21810 if (TYPE_LENGTH (type) != cu_header->addr_size)
21811 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 21812 cu_header->addr_size,
98bfdba5 21813 TYPE_LENGTH (type));
ac56253d
TT
21814 /* Symbols of this form are reasonably rare, so we just
21815 piggyback on the existing location code rather than writing
21816 a new implementation of symbol_computed_ops. */
8d749320 21817 *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
98bfdba5
PA
21818 (*baton)->per_cu = cu->per_cu;
21819 gdb_assert ((*baton)->per_cu);
ac56253d 21820
98bfdba5 21821 (*baton)->size = 2 + cu_header->addr_size;
224c3ddb 21822 data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
98bfdba5 21823 (*baton)->data = data;
ac56253d
TT
21824
21825 data[0] = DW_OP_addr;
21826 store_unsigned_integer (&data[1], cu_header->addr_size,
21827 byte_order, DW_ADDR (attr));
21828 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 21829 }
c906108c 21830 break;
4ac36638 21831 case DW_FORM_string:
93b5768b 21832 case DW_FORM_strp:
3019eac3 21833 case DW_FORM_GNU_str_index:
36586728 21834 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
21835 /* DW_STRING is already allocated on the objfile obstack, point
21836 directly to it. */
d521ce57 21837 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 21838 break;
c906108c
SS
21839 case DW_FORM_block1:
21840 case DW_FORM_block2:
21841 case DW_FORM_block4:
21842 case DW_FORM_block:
2dc7f7b3 21843 case DW_FORM_exprloc:
0224619f 21844 case DW_FORM_data16:
c906108c 21845 blk = DW_BLOCK (attr);
98bfdba5
PA
21846 if (TYPE_LENGTH (type) != blk->size)
21847 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21848 TYPE_LENGTH (type));
21849 *bytes = blk->data;
c906108c 21850 break;
2df3850c
JM
21851
21852 /* The DW_AT_const_value attributes are supposed to carry the
21853 symbol's value "represented as it would be on the target
21854 architecture." By the time we get here, it's already been
21855 converted to host endianness, so we just need to sign- or
21856 zero-extend it as appropriate. */
21857 case DW_FORM_data1:
3aef2284 21858 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 21859 break;
c906108c 21860 case DW_FORM_data2:
3aef2284 21861 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 21862 break;
c906108c 21863 case DW_FORM_data4:
3aef2284 21864 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 21865 break;
c906108c 21866 case DW_FORM_data8:
3aef2284 21867 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
21868 break;
21869
c906108c 21870 case DW_FORM_sdata:
663c44ac 21871 case DW_FORM_implicit_const:
98bfdba5 21872 *value = DW_SND (attr);
2df3850c
JM
21873 break;
21874
c906108c 21875 case DW_FORM_udata:
98bfdba5 21876 *value = DW_UNSND (attr);
c906108c 21877 break;
2df3850c 21878
c906108c 21879 default:
b98664d3 21880 complaint (_("unsupported const value attribute form: '%s'"),
4d3c2250 21881 dwarf_form_name (attr->form));
98bfdba5 21882 *value = 0;
c906108c
SS
21883 break;
21884 }
21885}
21886
2df3850c 21887
98bfdba5
PA
21888/* Copy constant value from an attribute to a symbol. */
21889
2df3850c 21890static void
ff39bb5e 21891dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 21892 struct dwarf2_cu *cu)
2df3850c 21893{
518817b3 21894 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
12df843f 21895 LONGEST value;
d521ce57 21896 const gdb_byte *bytes;
98bfdba5 21897 struct dwarf2_locexpr_baton *baton;
2df3850c 21898
98bfdba5
PA
21899 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21900 SYMBOL_PRINT_NAME (sym),
21901 &objfile->objfile_obstack, cu,
21902 &value, &bytes, &baton);
2df3850c 21903
98bfdba5
PA
21904 if (baton != NULL)
21905 {
98bfdba5 21906 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 21907 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
21908 }
21909 else if (bytes != NULL)
21910 {
21911 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 21912 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
21913 }
21914 else
21915 {
21916 SYMBOL_VALUE (sym) = value;
f1e6e072 21917 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 21918 }
2df3850c
JM
21919}
21920
c906108c
SS
21921/* Return the type of the die in question using its DW_AT_type attribute. */
21922
21923static struct type *
e7c27a73 21924die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 21925{
c906108c 21926 struct attribute *type_attr;
c906108c 21927
e142c38c 21928 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
21929 if (!type_attr)
21930 {
518817b3 21931 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 21932 /* A missing DW_AT_type represents a void type. */
518817b3 21933 return objfile_type (objfile)->builtin_void;
c906108c 21934 }
348e048f 21935
673bfd45 21936 return lookup_die_type (die, type_attr, cu);
c906108c
SS
21937}
21938
b4ba55a1
JB
21939/* True iff CU's producer generates GNAT Ada auxiliary information
21940 that allows to find parallel types through that information instead
21941 of having to do expensive parallel lookups by type name. */
21942
21943static int
21944need_gnat_info (struct dwarf2_cu *cu)
21945{
de4cb04a
JB
21946 /* Assume that the Ada compiler was GNAT, which always produces
21947 the auxiliary information. */
21948 return (cu->language == language_ada);
b4ba55a1
JB
21949}
21950
b4ba55a1
JB
21951/* Return the auxiliary type of the die in question using its
21952 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
21953 attribute is not present. */
21954
21955static struct type *
21956die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21957{
b4ba55a1 21958 struct attribute *type_attr;
b4ba55a1
JB
21959
21960 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21961 if (!type_attr)
21962 return NULL;
21963
673bfd45 21964 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
21965}
21966
21967/* If DIE has a descriptive_type attribute, then set the TYPE's
21968 descriptive type accordingly. */
21969
21970static void
21971set_descriptive_type (struct type *type, struct die_info *die,
21972 struct dwarf2_cu *cu)
21973{
21974 struct type *descriptive_type = die_descriptive_type (die, cu);
21975
21976 if (descriptive_type)
21977 {
21978 ALLOCATE_GNAT_AUX_TYPE (type);
21979 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21980 }
21981}
21982
c906108c
SS
21983/* Return the containing type of the die in question using its
21984 DW_AT_containing_type attribute. */
21985
21986static struct type *
e7c27a73 21987die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 21988{
c906108c 21989 struct attribute *type_attr;
518817b3 21990 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 21991
e142c38c 21992 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
21993 if (!type_attr)
21994 error (_("Dwarf Error: Problem turning containing type into gdb type "
518817b3 21995 "[in module %s]"), objfile_name (objfile));
33ac96f0 21996
673bfd45 21997 return lookup_die_type (die, type_attr, cu);
c906108c
SS
21998}
21999
ac9ec31b
DE
22000/* Return an error marker type to use for the ill formed type in DIE/CU. */
22001
22002static struct type *
22003build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22004{
518817b3
SM
22005 struct dwarf2_per_objfile *dwarf2_per_objfile
22006 = cu->per_cu->dwarf2_per_objfile;
ac9ec31b 22007 struct objfile *objfile = dwarf2_per_objfile->objfile;
528e1572 22008 char *saved;
ac9ec31b 22009
528e1572
SM
22010 std::string message
22011 = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22012 objfile_name (objfile),
22013 sect_offset_str (cu->header.sect_off),
22014 sect_offset_str (die->sect_off));
224c3ddb 22015 saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
528e1572 22016 message.c_str (), message.length ());
ac9ec31b 22017
19f392bc 22018 return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
ac9ec31b
DE
22019}
22020
673bfd45 22021/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
22022 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22023 DW_AT_containing_type.
673bfd45
DE
22024 If there is no type substitute an error marker. */
22025
c906108c 22026static struct type *
ff39bb5e 22027lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 22028 struct dwarf2_cu *cu)
c906108c 22029{
518817b3
SM
22030 struct dwarf2_per_objfile *dwarf2_per_objfile
22031 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 22032 struct objfile *objfile = dwarf2_per_objfile->objfile;
f792889a
DJ
22033 struct type *this_type;
22034
ac9ec31b
DE
22035 gdb_assert (attr->name == DW_AT_type
22036 || attr->name == DW_AT_GNAT_descriptive_type
22037 || attr->name == DW_AT_containing_type);
22038
673bfd45
DE
22039 /* First see if we have it cached. */
22040
36586728
TT
22041 if (attr->form == DW_FORM_GNU_ref_alt)
22042 {
22043 struct dwarf2_per_cu_data *per_cu;
9c541725 22044 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
36586728 22045
ed2dc618
SM
22046 per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22047 dwarf2_per_objfile);
9c541725 22048 this_type = get_die_type_at_offset (sect_off, per_cu);
36586728 22049 }
7771576e 22050 else if (attr_form_is_ref (attr))
673bfd45 22051 {
9c541725 22052 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
673bfd45 22053
9c541725 22054 this_type = get_die_type_at_offset (sect_off, cu->per_cu);
673bfd45 22055 }
55f1336d 22056 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 22057 {
ac9ec31b 22058 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 22059
ac9ec31b 22060 return get_signatured_type (die, signature, cu);
673bfd45
DE
22061 }
22062 else
22063 {
b98664d3 22064 complaint (_("Dwarf Error: Bad type attribute %s in DIE"
9d8780f0
SM
22065 " at %s [in module %s]"),
22066 dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
4262abfb 22067 objfile_name (objfile));
ac9ec31b 22068 return build_error_marker_type (cu, die);
673bfd45
DE
22069 }
22070
22071 /* If not cached we need to read it in. */
22072
22073 if (this_type == NULL)
22074 {
ac9ec31b 22075 struct die_info *type_die = NULL;
673bfd45
DE
22076 struct dwarf2_cu *type_cu = cu;
22077
7771576e 22078 if (attr_form_is_ref (attr))
ac9ec31b
DE
22079 type_die = follow_die_ref (die, attr, &type_cu);
22080 if (type_die == NULL)
22081 return build_error_marker_type (cu, die);
22082 /* If we find the type now, it's probably because the type came
3019eac3
DE
22083 from an inter-CU reference and the type's CU got expanded before
22084 ours. */
ac9ec31b 22085 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
22086 }
22087
22088 /* If we still don't have a type use an error marker. */
22089
22090 if (this_type == NULL)
ac9ec31b 22091 return build_error_marker_type (cu, die);
673bfd45 22092
f792889a 22093 return this_type;
c906108c
SS
22094}
22095
673bfd45
DE
22096/* Return the type in DIE, CU.
22097 Returns NULL for invalid types.
22098
02142a6c 22099 This first does a lookup in die_type_hash,
673bfd45
DE
22100 and only reads the die in if necessary.
22101
22102 NOTE: This can be called when reading in partial or full symbols. */
22103
f792889a 22104static struct type *
e7c27a73 22105read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 22106{
f792889a
DJ
22107 struct type *this_type;
22108
22109 this_type = get_die_type (die, cu);
22110 if (this_type)
22111 return this_type;
22112
673bfd45
DE
22113 return read_type_die_1 (die, cu);
22114}
22115
22116/* Read the type in DIE, CU.
22117 Returns NULL for invalid types. */
22118
22119static struct type *
22120read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22121{
22122 struct type *this_type = NULL;
22123
c906108c
SS
22124 switch (die->tag)
22125 {
22126 case DW_TAG_class_type:
680b30c7 22127 case DW_TAG_interface_type:
c906108c
SS
22128 case DW_TAG_structure_type:
22129 case DW_TAG_union_type:
f792889a 22130 this_type = read_structure_type (die, cu);
c906108c
SS
22131 break;
22132 case DW_TAG_enumeration_type:
f792889a 22133 this_type = read_enumeration_type (die, cu);
c906108c
SS
22134 break;
22135 case DW_TAG_subprogram:
22136 case DW_TAG_subroutine_type:
edb3359d 22137 case DW_TAG_inlined_subroutine:
f792889a 22138 this_type = read_subroutine_type (die, cu);
c906108c
SS
22139 break;
22140 case DW_TAG_array_type:
f792889a 22141 this_type = read_array_type (die, cu);
c906108c 22142 break;
72019c9c 22143 case DW_TAG_set_type:
f792889a 22144 this_type = read_set_type (die, cu);
72019c9c 22145 break;
c906108c 22146 case DW_TAG_pointer_type:
f792889a 22147 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
22148 break;
22149 case DW_TAG_ptr_to_member_type:
f792889a 22150 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
22151 break;
22152 case DW_TAG_reference_type:
4297a3f0
AV
22153 this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22154 break;
22155 case DW_TAG_rvalue_reference_type:
22156 this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
c906108c
SS
22157 break;
22158 case DW_TAG_const_type:
f792889a 22159 this_type = read_tag_const_type (die, cu);
c906108c
SS
22160 break;
22161 case DW_TAG_volatile_type:
f792889a 22162 this_type = read_tag_volatile_type (die, cu);
c906108c 22163 break;
06d66ee9
TT
22164 case DW_TAG_restrict_type:
22165 this_type = read_tag_restrict_type (die, cu);
22166 break;
c906108c 22167 case DW_TAG_string_type:
f792889a 22168 this_type = read_tag_string_type (die, cu);
c906108c
SS
22169 break;
22170 case DW_TAG_typedef:
f792889a 22171 this_type = read_typedef (die, cu);
c906108c 22172 break;
a02abb62 22173 case DW_TAG_subrange_type:
f792889a 22174 this_type = read_subrange_type (die, cu);
a02abb62 22175 break;
c906108c 22176 case DW_TAG_base_type:
f792889a 22177 this_type = read_base_type (die, cu);
c906108c 22178 break;
81a17f79 22179 case DW_TAG_unspecified_type:
f792889a 22180 this_type = read_unspecified_type (die, cu);
81a17f79 22181 break;
0114d602
DJ
22182 case DW_TAG_namespace:
22183 this_type = read_namespace_type (die, cu);
22184 break;
f55ee35c
JK
22185 case DW_TAG_module:
22186 this_type = read_module_type (die, cu);
22187 break;
a2c2acaf
MW
22188 case DW_TAG_atomic_type:
22189 this_type = read_tag_atomic_type (die, cu);
22190 break;
c906108c 22191 default:
b98664d3 22192 complaint (_("unexpected tag in read_type_die: '%s'"),
4d3c2250 22193 dwarf_tag_name (die->tag));
c906108c
SS
22194 break;
22195 }
63d06c5c 22196
f792889a 22197 return this_type;
63d06c5c
DC
22198}
22199
abc72ce4
DE
22200/* See if we can figure out if the class lives in a namespace. We do
22201 this by looking for a member function; its demangled name will
22202 contain namespace info, if there is any.
22203 Return the computed name or NULL.
22204 Space for the result is allocated on the objfile's obstack.
22205 This is the full-die version of guess_partial_die_structure_name.
22206 In this case we know DIE has no useful parent. */
22207
22208static char *
22209guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22210{
22211 struct die_info *spec_die;
22212 struct dwarf2_cu *spec_cu;
22213 struct die_info *child;
518817b3 22214 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
abc72ce4
DE
22215
22216 spec_cu = cu;
22217 spec_die = die_specification (die, &spec_cu);
22218 if (spec_die != NULL)
22219 {
22220 die = spec_die;
22221 cu = spec_cu;
22222 }
22223
22224 for (child = die->child;
22225 child != NULL;
22226 child = child->sibling)
22227 {
22228 if (child->tag == DW_TAG_subprogram)
22229 {
73b9be8b 22230 const char *linkage_name = dw2_linkage_name (child, cu);
abc72ce4 22231
7d45c7c3 22232 if (linkage_name != NULL)
abc72ce4
DE
22233 {
22234 char *actual_name
22235 = language_class_name_from_physname (cu->language_defn,
7d45c7c3 22236 linkage_name);
abc72ce4
DE
22237 char *name = NULL;
22238
22239 if (actual_name != NULL)
22240 {
15d034d0 22241 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
22242
22243 if (die_name != NULL
22244 && strcmp (die_name, actual_name) != 0)
22245 {
22246 /* Strip off the class name from the full name.
22247 We want the prefix. */
22248 int die_name_len = strlen (die_name);
22249 int actual_name_len = strlen (actual_name);
22250
22251 /* Test for '::' as a sanity check. */
22252 if (actual_name_len > die_name_len + 2
3e43a32a
MS
22253 && actual_name[actual_name_len
22254 - die_name_len - 1] == ':')
224c3ddb 22255 name = (char *) obstack_copy0 (
e3b94546 22256 &objfile->per_bfd->storage_obstack,
224c3ddb 22257 actual_name, actual_name_len - die_name_len - 2);
abc72ce4
DE
22258 }
22259 }
22260 xfree (actual_name);
22261 return name;
22262 }
22263 }
22264 }
22265
22266 return NULL;
22267}
22268
96408a79
SA
22269/* GCC might emit a nameless typedef that has a linkage name. Determine the
22270 prefix part in such case. See
22271 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
22272
a121b7c1 22273static const char *
96408a79
SA
22274anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22275{
22276 struct attribute *attr;
e6a959d6 22277 const char *base;
96408a79
SA
22278
22279 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22280 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22281 return NULL;
22282
7d45c7c3 22283 if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
96408a79
SA
22284 return NULL;
22285
73b9be8b 22286 attr = dw2_linkage_name_attr (die, cu);
96408a79
SA
22287 if (attr == NULL || DW_STRING (attr) == NULL)
22288 return NULL;
22289
22290 /* dwarf2_name had to be already called. */
22291 gdb_assert (DW_STRING_IS_CANONICAL (attr));
22292
22293 /* Strip the base name, keep any leading namespaces/classes. */
22294 base = strrchr (DW_STRING (attr), ':');
22295 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22296 return "";
22297
518817b3 22298 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
e3b94546 22299 return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
224c3ddb
SM
22300 DW_STRING (attr),
22301 &base[-1] - DW_STRING (attr));
96408a79
SA
22302}
22303
fdde2d81 22304/* Return the name of the namespace/class that DIE is defined within,
0114d602 22305 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 22306
0114d602
DJ
22307 For example, if we're within the method foo() in the following
22308 code:
22309
22310 namespace N {
22311 class C {
22312 void foo () {
22313 }
22314 };
22315 }
22316
22317 then determine_prefix on foo's die will return "N::C". */
fdde2d81 22318
0d5cff50 22319static const char *
e142c38c 22320determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 22321{
518817b3
SM
22322 struct dwarf2_per_objfile *dwarf2_per_objfile
22323 = cu->per_cu->dwarf2_per_objfile;
0114d602
DJ
22324 struct die_info *parent, *spec_die;
22325 struct dwarf2_cu *spec_cu;
22326 struct type *parent_type;
a121b7c1 22327 const char *retval;
63d06c5c 22328
9c37b5ae 22329 if (cu->language != language_cplus
c44af4eb
TT
22330 && cu->language != language_fortran && cu->language != language_d
22331 && cu->language != language_rust)
0114d602
DJ
22332 return "";
22333
96408a79
SA
22334 retval = anonymous_struct_prefix (die, cu);
22335 if (retval)
22336 return retval;
22337
0114d602
DJ
22338 /* We have to be careful in the presence of DW_AT_specification.
22339 For example, with GCC 3.4, given the code
22340
22341 namespace N {
22342 void foo() {
22343 // Definition of N::foo.
22344 }
22345 }
22346
22347 then we'll have a tree of DIEs like this:
22348
22349 1: DW_TAG_compile_unit
22350 2: DW_TAG_namespace // N
22351 3: DW_TAG_subprogram // declaration of N::foo
22352 4: DW_TAG_subprogram // definition of N::foo
22353 DW_AT_specification // refers to die #3
22354
22355 Thus, when processing die #4, we have to pretend that we're in
22356 the context of its DW_AT_specification, namely the contex of die
22357 #3. */
22358 spec_cu = cu;
22359 spec_die = die_specification (die, &spec_cu);
22360 if (spec_die == NULL)
22361 parent = die->parent;
22362 else
63d06c5c 22363 {
0114d602
DJ
22364 parent = spec_die->parent;
22365 cu = spec_cu;
63d06c5c 22366 }
0114d602
DJ
22367
22368 if (parent == NULL)
22369 return "";
98bfdba5
PA
22370 else if (parent->building_fullname)
22371 {
22372 const char *name;
22373 const char *parent_name;
22374
22375 /* It has been seen on RealView 2.2 built binaries,
22376 DW_TAG_template_type_param types actually _defined_ as
22377 children of the parent class:
22378
22379 enum E {};
22380 template class <class Enum> Class{};
22381 Class<enum E> class_e;
22382
22383 1: DW_TAG_class_type (Class)
22384 2: DW_TAG_enumeration_type (E)
22385 3: DW_TAG_enumerator (enum1:0)
22386 3: DW_TAG_enumerator (enum2:1)
22387 ...
22388 2: DW_TAG_template_type_param
22389 DW_AT_type DW_FORM_ref_udata (E)
22390
22391 Besides being broken debug info, it can put GDB into an
22392 infinite loop. Consider:
22393
22394 When we're building the full name for Class<E>, we'll start
22395 at Class, and go look over its template type parameters,
22396 finding E. We'll then try to build the full name of E, and
22397 reach here. We're now trying to build the full name of E,
22398 and look over the parent DIE for containing scope. In the
22399 broken case, if we followed the parent DIE of E, we'd again
22400 find Class, and once again go look at its template type
22401 arguments, etc., etc. Simply don't consider such parent die
22402 as source-level parent of this die (it can't be, the language
22403 doesn't allow it), and break the loop here. */
22404 name = dwarf2_name (die, cu);
22405 parent_name = dwarf2_name (parent, cu);
b98664d3 22406 complaint (_("template param type '%s' defined within parent '%s'"),
98bfdba5
PA
22407 name ? name : "<unknown>",
22408 parent_name ? parent_name : "<unknown>");
22409 return "";
22410 }
63d06c5c 22411 else
0114d602
DJ
22412 switch (parent->tag)
22413 {
63d06c5c 22414 case DW_TAG_namespace:
0114d602 22415 parent_type = read_type_die (parent, cu);
acebe513
UW
22416 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22417 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22418 Work around this problem here. */
22419 if (cu->language == language_cplus
e86ca25f 22420 && strcmp (TYPE_NAME (parent_type), "::") == 0)
acebe513 22421 return "";
0114d602 22422 /* We give a name to even anonymous namespaces. */
e86ca25f 22423 return TYPE_NAME (parent_type);
63d06c5c 22424 case DW_TAG_class_type:
680b30c7 22425 case DW_TAG_interface_type:
63d06c5c 22426 case DW_TAG_structure_type:
0114d602 22427 case DW_TAG_union_type:
f55ee35c 22428 case DW_TAG_module:
0114d602 22429 parent_type = read_type_die (parent, cu);
e86ca25f
TT
22430 if (TYPE_NAME (parent_type) != NULL)
22431 return TYPE_NAME (parent_type);
0114d602
DJ
22432 else
22433 /* An anonymous structure is only allowed non-static data
22434 members; no typedefs, no member functions, et cetera.
22435 So it does not need a prefix. */
22436 return "";
abc72ce4 22437 case DW_TAG_compile_unit:
95554aad 22438 case DW_TAG_partial_unit:
abc72ce4
DE
22439 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
22440 if (cu->language == language_cplus
8b70b953 22441 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
22442 && die->child != NULL
22443 && (die->tag == DW_TAG_class_type
22444 || die->tag == DW_TAG_structure_type
22445 || die->tag == DW_TAG_union_type))
22446 {
22447 char *name = guess_full_die_structure_name (die, cu);
22448 if (name != NULL)
22449 return name;
22450 }
22451 return "";
3d567982
TT
22452 case DW_TAG_enumeration_type:
22453 parent_type = read_type_die (parent, cu);
22454 if (TYPE_DECLARED_CLASS (parent_type))
22455 {
e86ca25f
TT
22456 if (TYPE_NAME (parent_type) != NULL)
22457 return TYPE_NAME (parent_type);
3d567982
TT
22458 return "";
22459 }
22460 /* Fall through. */
63d06c5c 22461 default:
8176b9b8 22462 return determine_prefix (parent, cu);
63d06c5c 22463 }
63d06c5c
DC
22464}
22465
3e43a32a
MS
22466/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22467 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
22468 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
22469 an obconcat, otherwise allocate storage for the result. The CU argument is
22470 used to determine the language and hence, the appropriate separator. */
987504bb 22471
f55ee35c 22472#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
22473
22474static char *
f55ee35c
JK
22475typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22476 int physname, struct dwarf2_cu *cu)
63d06c5c 22477{
f55ee35c 22478 const char *lead = "";
5c315b68 22479 const char *sep;
63d06c5c 22480
3e43a32a
MS
22481 if (suffix == NULL || suffix[0] == '\0'
22482 || prefix == NULL || prefix[0] == '\0')
987504bb 22483 sep = "";
45280282
IB
22484 else if (cu->language == language_d)
22485 {
22486 /* For D, the 'main' function could be defined in any module, but it
22487 should never be prefixed. */
22488 if (strcmp (suffix, "D main") == 0)
22489 {
22490 prefix = "";
22491 sep = "";
22492 }
22493 else
22494 sep = ".";
22495 }
f55ee35c
JK
22496 else if (cu->language == language_fortran && physname)
22497 {
22498 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
22499 DW_AT_MIPS_linkage_name is preferred and used instead. */
22500
22501 lead = "__";
22502 sep = "_MOD_";
22503 }
987504bb
JJ
22504 else
22505 sep = "::";
63d06c5c 22506
6dd47d34
DE
22507 if (prefix == NULL)
22508 prefix = "";
22509 if (suffix == NULL)
22510 suffix = "";
22511
987504bb
JJ
22512 if (obs == NULL)
22513 {
3e43a32a 22514 char *retval
224c3ddb
SM
22515 = ((char *)
22516 xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
9a619af0 22517
f55ee35c
JK
22518 strcpy (retval, lead);
22519 strcat (retval, prefix);
6dd47d34
DE
22520 strcat (retval, sep);
22521 strcat (retval, suffix);
63d06c5c
DC
22522 return retval;
22523 }
987504bb
JJ
22524 else
22525 {
22526 /* We have an obstack. */
f55ee35c 22527 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 22528 }
63d06c5c
DC
22529}
22530
c906108c
SS
22531/* Return sibling of die, NULL if no sibling. */
22532
f9aca02d 22533static struct die_info *
fba45db2 22534sibling_die (struct die_info *die)
c906108c 22535{
639d11d3 22536 return die->sibling;
c906108c
SS
22537}
22538
71c25dea
TT
22539/* Get name of a die, return NULL if not found. */
22540
15d034d0
TT
22541static const char *
22542dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
22543 struct obstack *obstack)
22544{
22545 if (name && cu->language == language_cplus)
22546 {
2f408ecb 22547 std::string canon_name = cp_canonicalize_string (name);
71c25dea 22548
2f408ecb 22549 if (!canon_name.empty ())
71c25dea 22550 {
2f408ecb
PA
22551 if (canon_name != name)
22552 name = (const char *) obstack_copy0 (obstack,
22553 canon_name.c_str (),
22554 canon_name.length ());
71c25dea
TT
22555 }
22556 }
22557
22558 return name;
c906108c
SS
22559}
22560
96553a0c
DE
22561/* Get name of a die, return NULL if not found.
22562 Anonymous namespaces are converted to their magic string. */
9219021c 22563
15d034d0 22564static const char *
e142c38c 22565dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
22566{
22567 struct attribute *attr;
518817b3 22568 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9219021c 22569
e142c38c 22570 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 22571 if ((!attr || !DW_STRING (attr))
96553a0c 22572 && die->tag != DW_TAG_namespace
53832f31
TT
22573 && die->tag != DW_TAG_class_type
22574 && die->tag != DW_TAG_interface_type
22575 && die->tag != DW_TAG_structure_type
22576 && die->tag != DW_TAG_union_type)
71c25dea
TT
22577 return NULL;
22578
22579 switch (die->tag)
22580 {
22581 case DW_TAG_compile_unit:
95554aad 22582 case DW_TAG_partial_unit:
71c25dea
TT
22583 /* Compilation units have a DW_AT_name that is a filename, not
22584 a source language identifier. */
22585 case DW_TAG_enumeration_type:
22586 case DW_TAG_enumerator:
22587 /* These tags always have simple identifiers already; no need
22588 to canonicalize them. */
22589 return DW_STRING (attr);
907af001 22590
96553a0c
DE
22591 case DW_TAG_namespace:
22592 if (attr != NULL && DW_STRING (attr) != NULL)
22593 return DW_STRING (attr);
22594 return CP_ANONYMOUS_NAMESPACE_STR;
22595
907af001
UW
22596 case DW_TAG_class_type:
22597 case DW_TAG_interface_type:
22598 case DW_TAG_structure_type:
22599 case DW_TAG_union_type:
22600 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22601 structures or unions. These were of the form "._%d" in GCC 4.1,
22602 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22603 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 22604 if (attr && DW_STRING (attr)
61012eef
GB
22605 && (startswith (DW_STRING (attr), "._")
22606 || startswith (DW_STRING (attr), "<anonymous")))
907af001 22607 return NULL;
53832f31
TT
22608
22609 /* GCC might emit a nameless typedef that has a linkage name. See
22610 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
22611 if (!attr || DW_STRING (attr) == NULL)
22612 {
df5c6c50 22613 char *demangled = NULL;
53832f31 22614
73b9be8b 22615 attr = dw2_linkage_name_attr (die, cu);
53832f31
TT
22616 if (attr == NULL || DW_STRING (attr) == NULL)
22617 return NULL;
22618
df5c6c50
JK
22619 /* Avoid demangling DW_STRING (attr) the second time on a second
22620 call for the same DIE. */
22621 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 22622 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
22623
22624 if (demangled)
22625 {
e6a959d6 22626 const char *base;
96408a79 22627
53832f31 22628 /* FIXME: we already did this for the partial symbol... */
34a68019 22629 DW_STRING (attr)
224c3ddb 22630 = ((const char *)
e3b94546 22631 obstack_copy0 (&objfile->per_bfd->storage_obstack,
224c3ddb 22632 demangled, strlen (demangled)));
53832f31
TT
22633 DW_STRING_IS_CANONICAL (attr) = 1;
22634 xfree (demangled);
96408a79
SA
22635
22636 /* Strip any leading namespaces/classes, keep only the base name.
22637 DW_AT_name for named DIEs does not contain the prefixes. */
22638 base = strrchr (DW_STRING (attr), ':');
22639 if (base && base > DW_STRING (attr) && base[-1] == ':')
22640 return &base[1];
22641 else
22642 return DW_STRING (attr);
53832f31
TT
22643 }
22644 }
907af001
UW
22645 break;
22646
71c25dea 22647 default:
907af001
UW
22648 break;
22649 }
22650
22651 if (!DW_STRING_IS_CANONICAL (attr))
22652 {
22653 DW_STRING (attr)
22654 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
e3b94546 22655 &objfile->per_bfd->storage_obstack);
907af001 22656 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 22657 }
907af001 22658 return DW_STRING (attr);
9219021c
DC
22659}
22660
22661/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
22662 is none. *EXT_CU is the CU containing DIE on input, and the CU
22663 containing the return value on output. */
9219021c
DC
22664
22665static struct die_info *
f2f0e013 22666dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
22667{
22668 struct attribute *attr;
9219021c 22669
f2f0e013 22670 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
22671 if (attr == NULL)
22672 return NULL;
22673
f2f0e013 22674 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
22675}
22676
c906108c
SS
22677/* Convert a DIE tag into its string name. */
22678
f39c6ffd 22679static const char *
aa1ee363 22680dwarf_tag_name (unsigned tag)
c906108c 22681{
f39c6ffd
TT
22682 const char *name = get_DW_TAG_name (tag);
22683
22684 if (name == NULL)
22685 return "DW_TAG_<unknown>";
22686
22687 return name;
c906108c
SS
22688}
22689
22690/* Convert a DWARF attribute code into its string name. */
22691
f39c6ffd 22692static const char *
aa1ee363 22693dwarf_attr_name (unsigned attr)
c906108c 22694{
f39c6ffd
TT
22695 const char *name;
22696
c764a876 22697#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
22698 if (attr == DW_AT_MIPS_fde)
22699 return "DW_AT_MIPS_fde";
22700#else
22701 if (attr == DW_AT_HP_block_index)
22702 return "DW_AT_HP_block_index";
c764a876 22703#endif
f39c6ffd
TT
22704
22705 name = get_DW_AT_name (attr);
22706
22707 if (name == NULL)
22708 return "DW_AT_<unknown>";
22709
22710 return name;
c906108c
SS
22711}
22712
22713/* Convert a DWARF value form code into its string name. */
22714
f39c6ffd 22715static const char *
aa1ee363 22716dwarf_form_name (unsigned form)
c906108c 22717{
f39c6ffd
TT
22718 const char *name = get_DW_FORM_name (form);
22719
22720 if (name == NULL)
22721 return "DW_FORM_<unknown>";
22722
22723 return name;
c906108c
SS
22724}
22725
a121b7c1 22726static const char *
fba45db2 22727dwarf_bool_name (unsigned mybool)
c906108c
SS
22728{
22729 if (mybool)
22730 return "TRUE";
22731 else
22732 return "FALSE";
22733}
22734
22735/* Convert a DWARF type code into its string name. */
22736
f39c6ffd 22737static const char *
aa1ee363 22738dwarf_type_encoding_name (unsigned enc)
c906108c 22739{
f39c6ffd 22740 const char *name = get_DW_ATE_name (enc);
c906108c 22741
f39c6ffd
TT
22742 if (name == NULL)
22743 return "DW_ATE_<unknown>";
c906108c 22744
f39c6ffd 22745 return name;
c906108c 22746}
c906108c 22747
f9aca02d 22748static void
d97bc12b 22749dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
22750{
22751 unsigned int i;
22752
d97bc12b 22753 print_spaces (indent, f);
9d8780f0 22754 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
9c541725 22755 dwarf_tag_name (die->tag), die->abbrev,
9d8780f0 22756 sect_offset_str (die->sect_off));
d97bc12b
DE
22757
22758 if (die->parent != NULL)
22759 {
22760 print_spaces (indent, f);
9d8780f0
SM
22761 fprintf_unfiltered (f, " parent at offset: %s\n",
22762 sect_offset_str (die->parent->sect_off));
d97bc12b
DE
22763 }
22764
22765 print_spaces (indent, f);
22766 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 22767 dwarf_bool_name (die->child != NULL));
c906108c 22768
d97bc12b
DE
22769 print_spaces (indent, f);
22770 fprintf_unfiltered (f, " attributes:\n");
22771
c906108c
SS
22772 for (i = 0; i < die->num_attrs; ++i)
22773 {
d97bc12b
DE
22774 print_spaces (indent, f);
22775 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
22776 dwarf_attr_name (die->attrs[i].name),
22777 dwarf_form_name (die->attrs[i].form));
d97bc12b 22778
c906108c
SS
22779 switch (die->attrs[i].form)
22780 {
c906108c 22781 case DW_FORM_addr:
3019eac3 22782 case DW_FORM_GNU_addr_index:
d97bc12b 22783 fprintf_unfiltered (f, "address: ");
5af949e3 22784 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
22785 break;
22786 case DW_FORM_block2:
22787 case DW_FORM_block4:
22788 case DW_FORM_block:
22789 case DW_FORM_block1:
56eb65bd
SP
22790 fprintf_unfiltered (f, "block: size %s",
22791 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 22792 break;
2dc7f7b3 22793 case DW_FORM_exprloc:
56eb65bd
SP
22794 fprintf_unfiltered (f, "expression: size %s",
22795 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 22796 break;
0224619f
JK
22797 case DW_FORM_data16:
22798 fprintf_unfiltered (f, "constant of 16 bytes");
22799 break;
4568ecf9
DE
22800 case DW_FORM_ref_addr:
22801 fprintf_unfiltered (f, "ref address: ");
22802 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22803 break;
36586728
TT
22804 case DW_FORM_GNU_ref_alt:
22805 fprintf_unfiltered (f, "alt ref address: ");
22806 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22807 break;
10b3939b
DJ
22808 case DW_FORM_ref1:
22809 case DW_FORM_ref2:
22810 case DW_FORM_ref4:
4568ecf9
DE
22811 case DW_FORM_ref8:
22812 case DW_FORM_ref_udata:
d97bc12b 22813 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 22814 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 22815 break;
c906108c
SS
22816 case DW_FORM_data1:
22817 case DW_FORM_data2:
22818 case DW_FORM_data4:
ce5d95e1 22819 case DW_FORM_data8:
c906108c
SS
22820 case DW_FORM_udata:
22821 case DW_FORM_sdata:
43bbcdc2
PH
22822 fprintf_unfiltered (f, "constant: %s",
22823 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 22824 break;
2dc7f7b3
TT
22825 case DW_FORM_sec_offset:
22826 fprintf_unfiltered (f, "section offset: %s",
22827 pulongest (DW_UNSND (&die->attrs[i])));
22828 break;
55f1336d 22829 case DW_FORM_ref_sig8:
ac9ec31b
DE
22830 fprintf_unfiltered (f, "signature: %s",
22831 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 22832 break;
c906108c 22833 case DW_FORM_string:
4bdf3d34 22834 case DW_FORM_strp:
43988095 22835 case DW_FORM_line_strp:
3019eac3 22836 case DW_FORM_GNU_str_index:
36586728 22837 case DW_FORM_GNU_strp_alt:
8285870a 22838 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 22839 DW_STRING (&die->attrs[i])
8285870a
JK
22840 ? DW_STRING (&die->attrs[i]) : "",
22841 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
22842 break;
22843 case DW_FORM_flag:
22844 if (DW_UNSND (&die->attrs[i]))
d97bc12b 22845 fprintf_unfiltered (f, "flag: TRUE");
c906108c 22846 else
d97bc12b 22847 fprintf_unfiltered (f, "flag: FALSE");
c906108c 22848 break;
2dc7f7b3
TT
22849 case DW_FORM_flag_present:
22850 fprintf_unfiltered (f, "flag: TRUE");
22851 break;
a8329558 22852 case DW_FORM_indirect:
0963b4bd
MS
22853 /* The reader will have reduced the indirect form to
22854 the "base form" so this form should not occur. */
3e43a32a
MS
22855 fprintf_unfiltered (f,
22856 "unexpected attribute form: DW_FORM_indirect");
a8329558 22857 break;
663c44ac
JK
22858 case DW_FORM_implicit_const:
22859 fprintf_unfiltered (f, "constant: %s",
22860 plongest (DW_SND (&die->attrs[i])));
22861 break;
c906108c 22862 default:
d97bc12b 22863 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 22864 die->attrs[i].form);
d97bc12b 22865 break;
c906108c 22866 }
d97bc12b 22867 fprintf_unfiltered (f, "\n");
c906108c
SS
22868 }
22869}
22870
f9aca02d 22871static void
d97bc12b 22872dump_die_for_error (struct die_info *die)
c906108c 22873{
d97bc12b
DE
22874 dump_die_shallow (gdb_stderr, 0, die);
22875}
22876
22877static void
22878dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22879{
22880 int indent = level * 4;
22881
22882 gdb_assert (die != NULL);
22883
22884 if (level >= max_level)
22885 return;
22886
22887 dump_die_shallow (f, indent, die);
22888
22889 if (die->child != NULL)
c906108c 22890 {
d97bc12b
DE
22891 print_spaces (indent, f);
22892 fprintf_unfiltered (f, " Children:");
22893 if (level + 1 < max_level)
22894 {
22895 fprintf_unfiltered (f, "\n");
22896 dump_die_1 (f, level + 1, max_level, die->child);
22897 }
22898 else
22899 {
3e43a32a
MS
22900 fprintf_unfiltered (f,
22901 " [not printed, max nesting level reached]\n");
d97bc12b
DE
22902 }
22903 }
22904
22905 if (die->sibling != NULL && level > 0)
22906 {
22907 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
22908 }
22909}
22910
d97bc12b
DE
22911/* This is called from the pdie macro in gdbinit.in.
22912 It's not static so gcc will keep a copy callable from gdb. */
22913
22914void
22915dump_die (struct die_info *die, int max_level)
22916{
22917 dump_die_1 (gdb_stdlog, 0, max_level, die);
22918}
22919
f9aca02d 22920static void
51545339 22921store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 22922{
51545339 22923 void **slot;
c906108c 22924
9c541725
PA
22925 slot = htab_find_slot_with_hash (cu->die_hash, die,
22926 to_underlying (die->sect_off),
b64f50a1 22927 INSERT);
51545339
DJ
22928
22929 *slot = die;
c906108c
SS
22930}
22931
b64f50a1
JK
22932/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
22933 required kind. */
22934
22935static sect_offset
ff39bb5e 22936dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 22937{
7771576e 22938 if (attr_form_is_ref (attr))
9c541725 22939 return (sect_offset) DW_UNSND (attr);
93311388 22940
b98664d3 22941 complaint (_("unsupported die ref attribute form: '%s'"),
93311388 22942 dwarf_form_name (attr->form));
9c541725 22943 return {};
c906108c
SS
22944}
22945
43bbcdc2
PH
22946/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
22947 * the value held by the attribute is not constant. */
a02abb62 22948
43bbcdc2 22949static LONGEST
ff39bb5e 22950dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62 22951{
663c44ac 22952 if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
a02abb62
JB
22953 return DW_SND (attr);
22954 else if (attr->form == DW_FORM_udata
22955 || attr->form == DW_FORM_data1
22956 || attr->form == DW_FORM_data2
22957 || attr->form == DW_FORM_data4
22958 || attr->form == DW_FORM_data8)
22959 return DW_UNSND (attr);
22960 else
22961 {
0224619f 22962 /* For DW_FORM_data16 see attr_form_is_constant. */
b98664d3 22963 complaint (_("Attribute value is not a constant (%s)"),
a02abb62
JB
22964 dwarf_form_name (attr->form));
22965 return default_value;
22966 }
22967}
22968
348e048f
DE
22969/* Follow reference or signature attribute ATTR of SRC_DIE.
22970 On entry *REF_CU is the CU of SRC_DIE.
22971 On exit *REF_CU is the CU of the result. */
22972
22973static struct die_info *
ff39bb5e 22974follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
22975 struct dwarf2_cu **ref_cu)
22976{
22977 struct die_info *die;
22978
7771576e 22979 if (attr_form_is_ref (attr))
348e048f 22980 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 22981 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
22982 die = follow_die_sig (src_die, attr, ref_cu);
22983 else
22984 {
22985 dump_die_for_error (src_die);
22986 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
518817b3 22987 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
348e048f
DE
22988 }
22989
22990 return die;
03dd20cc
DJ
22991}
22992
5c631832 22993/* Follow reference OFFSET.
673bfd45
DE
22994 On entry *REF_CU is the CU of the source die referencing OFFSET.
22995 On exit *REF_CU is the CU of the result.
22996 Returns NULL if OFFSET is invalid. */
f504f079 22997
f9aca02d 22998static struct die_info *
9c541725 22999follow_die_offset (sect_offset sect_off, int offset_in_dwz,
36586728 23000 struct dwarf2_cu **ref_cu)
c906108c 23001{
10b3939b 23002 struct die_info temp_die;
f2f0e013 23003 struct dwarf2_cu *target_cu, *cu = *ref_cu;
518817b3
SM
23004 struct dwarf2_per_objfile *dwarf2_per_objfile
23005 = cu->per_cu->dwarf2_per_objfile;
10b3939b 23006
348e048f
DE
23007 gdb_assert (cu->per_cu != NULL);
23008
98bfdba5
PA
23009 target_cu = cu;
23010
3019eac3 23011 if (cu->per_cu->is_debug_types)
348e048f
DE
23012 {
23013 /* .debug_types CUs cannot reference anything outside their CU.
23014 If they need to, they have to reference a signatured type via
55f1336d 23015 DW_FORM_ref_sig8. */
9c541725 23016 if (!offset_in_cu_p (&cu->header, sect_off))
5c631832 23017 return NULL;
348e048f 23018 }
36586728 23019 else if (offset_in_dwz != cu->per_cu->is_dwz
9c541725 23020 || !offset_in_cu_p (&cu->header, sect_off))
10b3939b
DJ
23021 {
23022 struct dwarf2_per_cu_data *per_cu;
9a619af0 23023
9c541725 23024 per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
ed2dc618 23025 dwarf2_per_objfile);
03dd20cc
DJ
23026
23027 /* If necessary, add it to the queue and load its DIEs. */
95554aad 23028 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
58f0c718 23029 load_full_comp_unit (per_cu, false, cu->language);
03dd20cc 23030
10b3939b
DJ
23031 target_cu = per_cu->cu;
23032 }
98bfdba5
PA
23033 else if (cu->dies == NULL)
23034 {
23035 /* We're loading full DIEs during partial symbol reading. */
23036 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
58f0c718 23037 load_full_comp_unit (cu->per_cu, false, language_minimal);
98bfdba5 23038 }
c906108c 23039
f2f0e013 23040 *ref_cu = target_cu;
9c541725 23041 temp_die.sect_off = sect_off;
9a3c8263 23042 return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
9c541725
PA
23043 &temp_die,
23044 to_underlying (sect_off));
5c631832 23045}
10b3939b 23046
5c631832
JK
23047/* Follow reference attribute ATTR of SRC_DIE.
23048 On entry *REF_CU is the CU of SRC_DIE.
23049 On exit *REF_CU is the CU of the result. */
23050
23051static struct die_info *
ff39bb5e 23052follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
23053 struct dwarf2_cu **ref_cu)
23054{
9c541725 23055 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
5c631832
JK
23056 struct dwarf2_cu *cu = *ref_cu;
23057 struct die_info *die;
23058
9c541725 23059 die = follow_die_offset (sect_off,
36586728
TT
23060 (attr->form == DW_FORM_GNU_ref_alt
23061 || cu->per_cu->is_dwz),
23062 ref_cu);
5c631832 23063 if (!die)
9d8780f0
SM
23064 error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23065 "at %s [in module %s]"),
23066 sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
518817b3 23067 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
348e048f 23068
5c631832
JK
23069 return die;
23070}
23071
9c541725 23072/* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
d83e736b 23073 Returned value is intended for DW_OP_call*. Returned
e3b94546
SM
23074 dwarf2_locexpr_baton->data has lifetime of
23075 PER_CU->DWARF2_PER_OBJFILE->OBJFILE. */
5c631832
JK
23076
23077struct dwarf2_locexpr_baton
9c541725 23078dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
8b9737bf
TT
23079 struct dwarf2_per_cu_data *per_cu,
23080 CORE_ADDR (*get_frame_pc) (void *baton),
e4a62c65 23081 void *baton, bool resolve_abstract_p)
5c631832 23082{
918dd910 23083 struct dwarf2_cu *cu;
5c631832
JK
23084 struct die_info *die;
23085 struct attribute *attr;
23086 struct dwarf2_locexpr_baton retval;
12359b5e
SM
23087 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23088 struct objfile *objfile = dwarf2_per_objfile->objfile;
8cf6f0b1 23089
918dd910 23090 if (per_cu->cu == NULL)
58f0c718 23091 load_cu (per_cu, false);
918dd910 23092 cu = per_cu->cu;
cc12ce38
DE
23093 if (cu == NULL)
23094 {
23095 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23096 Instead just throw an error, not much else we can do. */
9d8780f0
SM
23097 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23098 sect_offset_str (sect_off), objfile_name (objfile));
cc12ce38 23099 }
918dd910 23100
9c541725 23101 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
5c631832 23102 if (!die)
9d8780f0
SM
23103 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23104 sect_offset_str (sect_off), objfile_name (objfile));
5c631832
JK
23105
23106 attr = dwarf2_attr (die, DW_AT_location, cu);
e4a62c65
TV
23107 if (!attr && resolve_abstract_p
23108 && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23109 != dwarf2_per_objfile->abstract_to_concrete.end ()))
23110 {
23111 CORE_ADDR pc = (*get_frame_pc) (baton);
23112
23113 for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23114 {
23115 if (!cand->parent
23116 || cand->parent->tag != DW_TAG_subprogram)
23117 continue;
23118
23119 CORE_ADDR pc_low, pc_high;
23120 get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23121 if (pc_low == ((CORE_ADDR) -1)
23122 || !(pc_low <= pc && pc < pc_high))
23123 continue;
23124
23125 die = cand;
23126 attr = dwarf2_attr (die, DW_AT_location, cu);
23127 break;
23128 }
23129 }
23130
5c631832
JK
23131 if (!attr)
23132 {
e103e986
JK
23133 /* DWARF: "If there is no such attribute, then there is no effect.".
23134 DATA is ignored if SIZE is 0. */
5c631832 23135
e103e986 23136 retval.data = NULL;
5c631832
JK
23137 retval.size = 0;
23138 }
8cf6f0b1
TT
23139 else if (attr_form_is_section_offset (attr))
23140 {
23141 struct dwarf2_loclist_baton loclist_baton;
23142 CORE_ADDR pc = (*get_frame_pc) (baton);
23143 size_t size;
23144
23145 fill_in_loclist_baton (cu, &loclist_baton, attr);
23146
23147 retval.data = dwarf2_find_location_expression (&loclist_baton,
23148 &size, pc);
23149 retval.size = size;
23150 }
5c631832
JK
23151 else
23152 {
23153 if (!attr_form_is_block (attr))
9d8780f0 23154 error (_("Dwarf Error: DIE at %s referenced in module %s "
5c631832 23155 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
9d8780f0 23156 sect_offset_str (sect_off), objfile_name (objfile));
5c631832
JK
23157
23158 retval.data = DW_BLOCK (attr)->data;
23159 retval.size = DW_BLOCK (attr)->size;
23160 }
23161 retval.per_cu = cu->per_cu;
918dd910 23162
ed2dc618 23163 age_cached_comp_units (dwarf2_per_objfile);
918dd910 23164
5c631832 23165 return retval;
348e048f
DE
23166}
23167
8b9737bf
TT
23168/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23169 offset. */
23170
23171struct dwarf2_locexpr_baton
23172dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23173 struct dwarf2_per_cu_data *per_cu,
23174 CORE_ADDR (*get_frame_pc) (void *baton),
23175 void *baton)
23176{
9c541725 23177 sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
8b9737bf 23178
9c541725 23179 return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
8b9737bf
TT
23180}
23181
b6807d98
TT
23182/* Write a constant of a given type as target-ordered bytes into
23183 OBSTACK. */
23184
23185static const gdb_byte *
23186write_constant_as_bytes (struct obstack *obstack,
23187 enum bfd_endian byte_order,
23188 struct type *type,
23189 ULONGEST value,
23190 LONGEST *len)
23191{
23192 gdb_byte *result;
23193
23194 *len = TYPE_LENGTH (type);
224c3ddb 23195 result = (gdb_byte *) obstack_alloc (obstack, *len);
b6807d98
TT
23196 store_unsigned_integer (result, *len, byte_order, value);
23197
23198 return result;
23199}
23200
23201/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23202 pointer to the constant bytes and set LEN to the length of the
23203 data. If memory is needed, allocate it on OBSTACK. If the DIE
23204 does not have a DW_AT_const_value, return NULL. */
23205
23206const gdb_byte *
9c541725 23207dwarf2_fetch_constant_bytes (sect_offset sect_off,
b6807d98
TT
23208 struct dwarf2_per_cu_data *per_cu,
23209 struct obstack *obstack,
23210 LONGEST *len)
23211{
23212 struct dwarf2_cu *cu;
23213 struct die_info *die;
23214 struct attribute *attr;
23215 const gdb_byte *result = NULL;
23216 struct type *type;
23217 LONGEST value;
23218 enum bfd_endian byte_order;
e3b94546 23219 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
b6807d98 23220
b6807d98 23221 if (per_cu->cu == NULL)
58f0c718 23222 load_cu (per_cu, false);
b6807d98 23223 cu = per_cu->cu;
cc12ce38
DE
23224 if (cu == NULL)
23225 {
23226 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23227 Instead just throw an error, not much else we can do. */
9d8780f0
SM
23228 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23229 sect_offset_str (sect_off), objfile_name (objfile));
cc12ce38 23230 }
b6807d98 23231
9c541725 23232 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
b6807d98 23233 if (!die)
9d8780f0
SM
23234 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23235 sect_offset_str (sect_off), objfile_name (objfile));
b6807d98
TT
23236
23237 attr = dwarf2_attr (die, DW_AT_const_value, cu);
23238 if (attr == NULL)
23239 return NULL;
23240
e3b94546 23241 byte_order = (bfd_big_endian (objfile->obfd)
b6807d98
TT
23242 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23243
23244 switch (attr->form)
23245 {
23246 case DW_FORM_addr:
23247 case DW_FORM_GNU_addr_index:
23248 {
23249 gdb_byte *tem;
23250
23251 *len = cu->header.addr_size;
224c3ddb 23252 tem = (gdb_byte *) obstack_alloc (obstack, *len);
b6807d98
TT
23253 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23254 result = tem;
23255 }
23256 break;
23257 case DW_FORM_string:
23258 case DW_FORM_strp:
23259 case DW_FORM_GNU_str_index:
23260 case DW_FORM_GNU_strp_alt:
23261 /* DW_STRING is already allocated on the objfile obstack, point
23262 directly to it. */
23263 result = (const gdb_byte *) DW_STRING (attr);
23264 *len = strlen (DW_STRING (attr));
23265 break;
23266 case DW_FORM_block1:
23267 case DW_FORM_block2:
23268 case DW_FORM_block4:
23269 case DW_FORM_block:
23270 case DW_FORM_exprloc:
0224619f 23271 case DW_FORM_data16:
b6807d98
TT
23272 result = DW_BLOCK (attr)->data;
23273 *len = DW_BLOCK (attr)->size;
23274 break;
23275
23276 /* The DW_AT_const_value attributes are supposed to carry the
23277 symbol's value "represented as it would be on the target
23278 architecture." By the time we get here, it's already been
23279 converted to host endianness, so we just need to sign- or
23280 zero-extend it as appropriate. */
23281 case DW_FORM_data1:
23282 type = die_type (die, cu);
23283 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23284 if (result == NULL)
23285 result = write_constant_as_bytes (obstack, byte_order,
23286 type, value, len);
23287 break;
23288 case DW_FORM_data2:
23289 type = die_type (die, cu);
23290 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23291 if (result == NULL)
23292 result = write_constant_as_bytes (obstack, byte_order,
23293 type, value, len);
23294 break;
23295 case DW_FORM_data4:
23296 type = die_type (die, cu);
23297 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23298 if (result == NULL)
23299 result = write_constant_as_bytes (obstack, byte_order,
23300 type, value, len);
23301 break;
23302 case DW_FORM_data8:
23303 type = die_type (die, cu);
23304 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23305 if (result == NULL)
23306 result = write_constant_as_bytes (obstack, byte_order,
23307 type, value, len);
23308 break;
23309
23310 case DW_FORM_sdata:
663c44ac 23311 case DW_FORM_implicit_const:
b6807d98
TT
23312 type = die_type (die, cu);
23313 result = write_constant_as_bytes (obstack, byte_order,
23314 type, DW_SND (attr), len);
23315 break;
23316
23317 case DW_FORM_udata:
23318 type = die_type (die, cu);
23319 result = write_constant_as_bytes (obstack, byte_order,
23320 type, DW_UNSND (attr), len);
23321 break;
23322
23323 default:
b98664d3 23324 complaint (_("unsupported const value attribute form: '%s'"),
b6807d98
TT
23325 dwarf_form_name (attr->form));
23326 break;
23327 }
23328
23329 return result;
23330}
23331
7942e96e
AA
23332/* Return the type of the die at OFFSET in PER_CU. Return NULL if no
23333 valid type for this die is found. */
23334
23335struct type *
9c541725 23336dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
7942e96e
AA
23337 struct dwarf2_per_cu_data *per_cu)
23338{
23339 struct dwarf2_cu *cu;
23340 struct die_info *die;
23341
7942e96e 23342 if (per_cu->cu == NULL)
58f0c718 23343 load_cu (per_cu, false);
7942e96e
AA
23344 cu = per_cu->cu;
23345 if (!cu)
23346 return NULL;
23347
9c541725 23348 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
7942e96e
AA
23349 if (!die)
23350 return NULL;
23351
23352 return die_type (die, cu);
23353}
23354
8a9b8146
TT
23355/* Return the type of the DIE at DIE_OFFSET in the CU named by
23356 PER_CU. */
23357
23358struct type *
b64f50a1 23359dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
23360 struct dwarf2_per_cu_data *per_cu)
23361{
9c541725 23362 sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
b64f50a1 23363 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
23364}
23365
ac9ec31b 23366/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 23367 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
23368 On exit *REF_CU is the CU of the result.
23369 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
23370
23371static struct die_info *
ac9ec31b
DE
23372follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23373 struct dwarf2_cu **ref_cu)
348e048f 23374{
348e048f 23375 struct die_info temp_die;
348e048f
DE
23376 struct dwarf2_cu *sig_cu;
23377 struct die_info *die;
23378
ac9ec31b
DE
23379 /* While it might be nice to assert sig_type->type == NULL here,
23380 we can get here for DW_AT_imported_declaration where we need
23381 the DIE not the type. */
348e048f
DE
23382
23383 /* If necessary, add it to the queue and load its DIEs. */
23384
95554aad 23385 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 23386 read_signatured_type (sig_type);
348e048f 23387
348e048f 23388 sig_cu = sig_type->per_cu.cu;
69d751e3 23389 gdb_assert (sig_cu != NULL);
9c541725
PA
23390 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23391 temp_die.sect_off = sig_type->type_offset_in_section;
9a3c8263 23392 die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
9c541725 23393 to_underlying (temp_die.sect_off));
348e048f
DE
23394 if (die)
23395 {
ed2dc618 23396 struct dwarf2_per_objfile *dwarf2_per_objfile
518817b3 23397 = (*ref_cu)->per_cu->dwarf2_per_objfile;
ed2dc618 23398
796a7ff8
DE
23399 /* For .gdb_index version 7 keep track of included TUs.
23400 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
23401 if (dwarf2_per_objfile->index_table != NULL
23402 && dwarf2_per_objfile->index_table->version <= 7)
23403 {
23404 VEC_safe_push (dwarf2_per_cu_ptr,
23405 (*ref_cu)->per_cu->imported_symtabs,
23406 sig_cu->per_cu);
23407 }
23408
348e048f
DE
23409 *ref_cu = sig_cu;
23410 return die;
23411 }
23412
ac9ec31b
DE
23413 return NULL;
23414}
23415
23416/* Follow signatured type referenced by ATTR in SRC_DIE.
23417 On entry *REF_CU is the CU of SRC_DIE.
23418 On exit *REF_CU is the CU of the result.
23419 The result is the DIE of the type.
23420 If the referenced type cannot be found an error is thrown. */
23421
23422static struct die_info *
ff39bb5e 23423follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
23424 struct dwarf2_cu **ref_cu)
23425{
23426 ULONGEST signature = DW_SIGNATURE (attr);
23427 struct signatured_type *sig_type;
23428 struct die_info *die;
23429
23430 gdb_assert (attr->form == DW_FORM_ref_sig8);
23431
a2ce51a0 23432 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
23433 /* sig_type will be NULL if the signatured type is missing from
23434 the debug info. */
23435 if (sig_type == NULL)
23436 {
23437 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
9d8780f0
SM
23438 " from DIE at %s [in module %s]"),
23439 hex_string (signature), sect_offset_str (src_die->sect_off),
518817b3 23440 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
ac9ec31b
DE
23441 }
23442
23443 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23444 if (die == NULL)
23445 {
23446 dump_die_for_error (src_die);
23447 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
9d8780f0
SM
23448 " from DIE at %s [in module %s]"),
23449 hex_string (signature), sect_offset_str (src_die->sect_off),
518817b3 23450 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
ac9ec31b
DE
23451 }
23452
23453 return die;
23454}
23455
23456/* Get the type specified by SIGNATURE referenced in DIE/CU,
23457 reading in and processing the type unit if necessary. */
23458
23459static struct type *
23460get_signatured_type (struct die_info *die, ULONGEST signature,
23461 struct dwarf2_cu *cu)
23462{
518817b3
SM
23463 struct dwarf2_per_objfile *dwarf2_per_objfile
23464 = cu->per_cu->dwarf2_per_objfile;
ac9ec31b
DE
23465 struct signatured_type *sig_type;
23466 struct dwarf2_cu *type_cu;
23467 struct die_info *type_die;
23468 struct type *type;
23469
a2ce51a0 23470 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
23471 /* sig_type will be NULL if the signatured type is missing from
23472 the debug info. */
23473 if (sig_type == NULL)
23474 {
b98664d3 23475 complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
9d8780f0
SM
23476 " from DIE at %s [in module %s]"),
23477 hex_string (signature), sect_offset_str (die->sect_off),
4262abfb 23478 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
23479 return build_error_marker_type (cu, die);
23480 }
23481
23482 /* If we already know the type we're done. */
23483 if (sig_type->type != NULL)
23484 return sig_type->type;
23485
23486 type_cu = cu;
23487 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23488 if (type_die != NULL)
23489 {
23490 /* N.B. We need to call get_die_type to ensure only one type for this DIE
23491 is created. This is important, for example, because for c++ classes
23492 we need TYPE_NAME set which is only done by new_symbol. Blech. */
23493 type = read_type_die (type_die, type_cu);
23494 if (type == NULL)
23495 {
b98664d3 23496 complaint (_("Dwarf Error: Cannot build signatured type %s"
9d8780f0
SM
23497 " referenced from DIE at %s [in module %s]"),
23498 hex_string (signature), sect_offset_str (die->sect_off),
4262abfb 23499 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
23500 type = build_error_marker_type (cu, die);
23501 }
23502 }
23503 else
23504 {
b98664d3 23505 complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
9d8780f0
SM
23506 " from DIE at %s [in module %s]"),
23507 hex_string (signature), sect_offset_str (die->sect_off),
4262abfb 23508 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
23509 type = build_error_marker_type (cu, die);
23510 }
23511 sig_type->type = type;
23512
23513 return type;
23514}
23515
23516/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23517 reading in and processing the type unit if necessary. */
23518
23519static struct type *
ff39bb5e 23520get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 23521 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
23522{
23523 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 23524 if (attr_form_is_ref (attr))
ac9ec31b
DE
23525 {
23526 struct dwarf2_cu *type_cu = cu;
23527 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23528
23529 return read_type_die (type_die, type_cu);
23530 }
23531 else if (attr->form == DW_FORM_ref_sig8)
23532 {
23533 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23534 }
23535 else
23536 {
518817b3
SM
23537 struct dwarf2_per_objfile *dwarf2_per_objfile
23538 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 23539
b98664d3 23540 complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
9d8780f0
SM
23541 " at %s [in module %s]"),
23542 dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
4262abfb 23543 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
23544 return build_error_marker_type (cu, die);
23545 }
348e048f
DE
23546}
23547
e5fe5e75 23548/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
23549
23550static void
e5fe5e75 23551load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 23552{
52dc124a 23553 struct signatured_type *sig_type;
348e048f 23554
f4dc4d17
DE
23555 /* Caller is responsible for ensuring type_unit_groups don't get here. */
23556 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23557
6721b2ec
DE
23558 /* We have the per_cu, but we need the signatured_type.
23559 Fortunately this is an easy translation. */
23560 gdb_assert (per_cu->is_debug_types);
23561 sig_type = (struct signatured_type *) per_cu;
348e048f 23562
6721b2ec 23563 gdb_assert (per_cu->cu == NULL);
348e048f 23564
52dc124a 23565 read_signatured_type (sig_type);
348e048f 23566
6721b2ec 23567 gdb_assert (per_cu->cu != NULL);
348e048f
DE
23568}
23569
dee91e82
DE
23570/* die_reader_func for read_signatured_type.
23571 This is identical to load_full_comp_unit_reader,
23572 but is kept separate for now. */
348e048f
DE
23573
23574static void
dee91e82 23575read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 23576 const gdb_byte *info_ptr,
dee91e82
DE
23577 struct die_info *comp_unit_die,
23578 int has_children,
23579 void *data)
348e048f 23580{
dee91e82 23581 struct dwarf2_cu *cu = reader->cu;
348e048f 23582
dee91e82
DE
23583 gdb_assert (cu->die_hash == NULL);
23584 cu->die_hash =
23585 htab_create_alloc_ex (cu->header.length / 12,
23586 die_hash,
23587 die_eq,
23588 NULL,
23589 &cu->comp_unit_obstack,
23590 hashtab_obstack_allocate,
23591 dummy_obstack_deallocate);
348e048f 23592
dee91e82
DE
23593 if (has_children)
23594 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23595 &info_ptr, comp_unit_die);
23596 cu->dies = comp_unit_die;
23597 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
23598
23599 /* We try not to read any attributes in this function, because not
9cdd5dbd 23600 all CUs needed for references have been loaded yet, and symbol
348e048f 23601 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
23602 or we won't be able to build types correctly.
23603 Similarly, if we do not read the producer, we can not apply
23604 producer-specific interpretation. */
95554aad 23605 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 23606}
348e048f 23607
3019eac3
DE
23608/* Read in a signatured type and build its CU and DIEs.
23609 If the type is a stub for the real type in a DWO file,
23610 read in the real type from the DWO file as well. */
dee91e82
DE
23611
23612static void
23613read_signatured_type (struct signatured_type *sig_type)
23614{
23615 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 23616
3019eac3 23617 gdb_assert (per_cu->is_debug_types);
dee91e82 23618 gdb_assert (per_cu->cu == NULL);
348e048f 23619
58f0c718 23620 init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
f4dc4d17 23621 read_signatured_type_reader, NULL);
7ee85ab1 23622 sig_type->per_cu.tu_read = 1;
c906108c
SS
23623}
23624
c906108c
SS
23625/* Decode simple location descriptions.
23626 Given a pointer to a dwarf block that defines a location, compute
23627 the location and return the value.
23628
4cecd739
DJ
23629 NOTE drow/2003-11-18: This function is called in two situations
23630 now: for the address of static or global variables (partial symbols
23631 only) and for offsets into structures which are expected to be
23632 (more or less) constant. The partial symbol case should go away,
23633 and only the constant case should remain. That will let this
23634 function complain more accurately. A few special modes are allowed
23635 without complaint for global variables (for instance, global
23636 register values and thread-local values).
c906108c
SS
23637
23638 A location description containing no operations indicates that the
4cecd739 23639 object is optimized out. The return value is 0 for that case.
6b992462
DJ
23640 FIXME drow/2003-11-16: No callers check for this case any more; soon all
23641 callers will only want a very basic result and this can become a
21ae7a4d
JK
23642 complaint.
23643
23644 Note that stack[0] is unused except as a default error return. */
c906108c
SS
23645
23646static CORE_ADDR
e7c27a73 23647decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 23648{
518817b3 23649 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
56eb65bd
SP
23650 size_t i;
23651 size_t size = blk->size;
d521ce57 23652 const gdb_byte *data = blk->data;
21ae7a4d
JK
23653 CORE_ADDR stack[64];
23654 int stacki;
23655 unsigned int bytes_read, unsnd;
23656 gdb_byte op;
c906108c 23657
21ae7a4d
JK
23658 i = 0;
23659 stacki = 0;
23660 stack[stacki] = 0;
23661 stack[++stacki] = 0;
23662
23663 while (i < size)
23664 {
23665 op = data[i++];
23666 switch (op)
23667 {
23668 case DW_OP_lit0:
23669 case DW_OP_lit1:
23670 case DW_OP_lit2:
23671 case DW_OP_lit3:
23672 case DW_OP_lit4:
23673 case DW_OP_lit5:
23674 case DW_OP_lit6:
23675 case DW_OP_lit7:
23676 case DW_OP_lit8:
23677 case DW_OP_lit9:
23678 case DW_OP_lit10:
23679 case DW_OP_lit11:
23680 case DW_OP_lit12:
23681 case DW_OP_lit13:
23682 case DW_OP_lit14:
23683 case DW_OP_lit15:
23684 case DW_OP_lit16:
23685 case DW_OP_lit17:
23686 case DW_OP_lit18:
23687 case DW_OP_lit19:
23688 case DW_OP_lit20:
23689 case DW_OP_lit21:
23690 case DW_OP_lit22:
23691 case DW_OP_lit23:
23692 case DW_OP_lit24:
23693 case DW_OP_lit25:
23694 case DW_OP_lit26:
23695 case DW_OP_lit27:
23696 case DW_OP_lit28:
23697 case DW_OP_lit29:
23698 case DW_OP_lit30:
23699 case DW_OP_lit31:
23700 stack[++stacki] = op - DW_OP_lit0;
23701 break;
f1bea926 23702
21ae7a4d
JK
23703 case DW_OP_reg0:
23704 case DW_OP_reg1:
23705 case DW_OP_reg2:
23706 case DW_OP_reg3:
23707 case DW_OP_reg4:
23708 case DW_OP_reg5:
23709 case DW_OP_reg6:
23710 case DW_OP_reg7:
23711 case DW_OP_reg8:
23712 case DW_OP_reg9:
23713 case DW_OP_reg10:
23714 case DW_OP_reg11:
23715 case DW_OP_reg12:
23716 case DW_OP_reg13:
23717 case DW_OP_reg14:
23718 case DW_OP_reg15:
23719 case DW_OP_reg16:
23720 case DW_OP_reg17:
23721 case DW_OP_reg18:
23722 case DW_OP_reg19:
23723 case DW_OP_reg20:
23724 case DW_OP_reg21:
23725 case DW_OP_reg22:
23726 case DW_OP_reg23:
23727 case DW_OP_reg24:
23728 case DW_OP_reg25:
23729 case DW_OP_reg26:
23730 case DW_OP_reg27:
23731 case DW_OP_reg28:
23732 case DW_OP_reg29:
23733 case DW_OP_reg30:
23734 case DW_OP_reg31:
23735 stack[++stacki] = op - DW_OP_reg0;
23736 if (i < size)
23737 dwarf2_complex_location_expr_complaint ();
23738 break;
c906108c 23739
21ae7a4d
JK
23740 case DW_OP_regx:
23741 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23742 i += bytes_read;
23743 stack[++stacki] = unsnd;
23744 if (i < size)
23745 dwarf2_complex_location_expr_complaint ();
23746 break;
c906108c 23747
21ae7a4d
JK
23748 case DW_OP_addr:
23749 stack[++stacki] = read_address (objfile->obfd, &data[i],
23750 cu, &bytes_read);
23751 i += bytes_read;
23752 break;
d53d4ac5 23753
21ae7a4d
JK
23754 case DW_OP_const1u:
23755 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23756 i += 1;
23757 break;
23758
23759 case DW_OP_const1s:
23760 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23761 i += 1;
23762 break;
23763
23764 case DW_OP_const2u:
23765 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23766 i += 2;
23767 break;
23768
23769 case DW_OP_const2s:
23770 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23771 i += 2;
23772 break;
d53d4ac5 23773
21ae7a4d
JK
23774 case DW_OP_const4u:
23775 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23776 i += 4;
23777 break;
23778
23779 case DW_OP_const4s:
23780 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23781 i += 4;
23782 break;
23783
585861ea
JK
23784 case DW_OP_const8u:
23785 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23786 i += 8;
23787 break;
23788
21ae7a4d
JK
23789 case DW_OP_constu:
23790 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23791 &bytes_read);
23792 i += bytes_read;
23793 break;
23794
23795 case DW_OP_consts:
23796 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23797 i += bytes_read;
23798 break;
23799
23800 case DW_OP_dup:
23801 stack[stacki + 1] = stack[stacki];
23802 stacki++;
23803 break;
23804
23805 case DW_OP_plus:
23806 stack[stacki - 1] += stack[stacki];
23807 stacki--;
23808 break;
23809
23810 case DW_OP_plus_uconst:
23811 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23812 &bytes_read);
23813 i += bytes_read;
23814 break;
23815
23816 case DW_OP_minus:
23817 stack[stacki - 1] -= stack[stacki];
23818 stacki--;
23819 break;
23820
23821 case DW_OP_deref:
23822 /* If we're not the last op, then we definitely can't encode
23823 this using GDB's address_class enum. This is valid for partial
23824 global symbols, although the variable's address will be bogus
23825 in the psymtab. */
23826 if (i < size)
23827 dwarf2_complex_location_expr_complaint ();
23828 break;
23829
23830 case DW_OP_GNU_push_tls_address:
4aa4e28b 23831 case DW_OP_form_tls_address:
21ae7a4d
JK
23832 /* The top of the stack has the offset from the beginning
23833 of the thread control block at which the variable is located. */
23834 /* Nothing should follow this operator, so the top of stack would
23835 be returned. */
23836 /* This is valid for partial global symbols, but the variable's
585861ea
JK
23837 address will be bogus in the psymtab. Make it always at least
23838 non-zero to not look as a variable garbage collected by linker
23839 which have DW_OP_addr 0. */
21ae7a4d
JK
23840 if (i < size)
23841 dwarf2_complex_location_expr_complaint ();
585861ea 23842 stack[stacki]++;
21ae7a4d
JK
23843 break;
23844
23845 case DW_OP_GNU_uninit:
23846 break;
23847
3019eac3 23848 case DW_OP_GNU_addr_index:
49f6c839 23849 case DW_OP_GNU_const_index:
3019eac3
DE
23850 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23851 &bytes_read);
23852 i += bytes_read;
23853 break;
23854
21ae7a4d
JK
23855 default:
23856 {
f39c6ffd 23857 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
23858
23859 if (name)
b98664d3 23860 complaint (_("unsupported stack op: '%s'"),
21ae7a4d
JK
23861 name);
23862 else
b98664d3 23863 complaint (_("unsupported stack op: '%02x'"),
21ae7a4d
JK
23864 op);
23865 }
23866
23867 return (stack[stacki]);
d53d4ac5 23868 }
3c6e0cb3 23869
21ae7a4d
JK
23870 /* Enforce maximum stack depth of SIZE-1 to avoid writing
23871 outside of the allocated space. Also enforce minimum>0. */
23872 if (stacki >= ARRAY_SIZE (stack) - 1)
23873 {
b98664d3 23874 complaint (_("location description stack overflow"));
21ae7a4d
JK
23875 return 0;
23876 }
23877
23878 if (stacki <= 0)
23879 {
b98664d3 23880 complaint (_("location description stack underflow"));
21ae7a4d
JK
23881 return 0;
23882 }
23883 }
23884 return (stack[stacki]);
c906108c
SS
23885}
23886
23887/* memory allocation interface */
23888
c906108c 23889static struct dwarf_block *
7b5a2f43 23890dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c 23891{
8d749320 23892 return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
c906108c
SS
23893}
23894
c906108c 23895static struct die_info *
b60c80d6 23896dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
23897{
23898 struct die_info *die;
b60c80d6
DJ
23899 size_t size = sizeof (struct die_info);
23900
23901 if (num_attrs > 1)
23902 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 23903
b60c80d6 23904 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
23905 memset (die, 0, sizeof (struct die_info));
23906 return (die);
23907}
2e276125
JB
23908
23909\f
23910/* Macro support. */
23911
233d95b5
JK
23912/* Return file name relative to the compilation directory of file number I in
23913 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 23914 responsible for freeing it. */
233d95b5 23915
2e276125 23916static char *
233d95b5 23917file_file_name (int file, struct line_header *lh)
2e276125 23918{
6a83a1e6
EZ
23919 /* Is the file number a valid index into the line header's file name
23920 table? Remember that file numbers start with one, not zero. */
fff8551c 23921 if (1 <= file && file <= lh->file_names.size ())
6a83a1e6 23922 {
8c43009f 23923 const file_entry &fe = lh->file_names[file - 1];
6e70227d 23924
8c43009f
PA
23925 if (!IS_ABSOLUTE_PATH (fe.name))
23926 {
23927 const char *dir = fe.include_dir (lh);
23928 if (dir != NULL)
23929 return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23930 }
23931 return xstrdup (fe.name);
6a83a1e6 23932 }
2e276125
JB
23933 else
23934 {
6a83a1e6
EZ
23935 /* The compiler produced a bogus file number. We can at least
23936 record the macro definitions made in the file, even if we
23937 won't be able to find the file by name. */
23938 char fake_name[80];
9a619af0 23939
8c042590
PM
23940 xsnprintf (fake_name, sizeof (fake_name),
23941 "<bad macro file number %d>", file);
2e276125 23942
b98664d3 23943 complaint (_("bad file number in macro information (%d)"),
6a83a1e6 23944 file);
2e276125 23945
6a83a1e6 23946 return xstrdup (fake_name);
2e276125
JB
23947 }
23948}
23949
233d95b5
JK
23950/* Return the full name of file number I in *LH's file name table.
23951 Use COMP_DIR as the name of the current directory of the
23952 compilation. The result is allocated using xmalloc; the caller is
23953 responsible for freeing it. */
23954static char *
23955file_full_name (int file, struct line_header *lh, const char *comp_dir)
23956{
23957 /* Is the file number a valid index into the line header's file name
23958 table? Remember that file numbers start with one, not zero. */
fff8551c 23959 if (1 <= file && file <= lh->file_names.size ())
233d95b5
JK
23960 {
23961 char *relative = file_file_name (file, lh);
23962
23963 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23964 return relative;
b36cec19
PA
23965 return reconcat (relative, comp_dir, SLASH_STRING,
23966 relative, (char *) NULL);
233d95b5
JK
23967 }
23968 else
23969 return file_file_name (file, lh);
23970}
23971
2e276125
JB
23972
23973static struct macro_source_file *
804d2729
TT
23974macro_start_file (struct dwarf2_cu *cu,
23975 int file, int line,
2e276125 23976 struct macro_source_file *current_file,
43f3e411 23977 struct line_header *lh)
2e276125 23978{
233d95b5
JK
23979 /* File name relative to the compilation directory of this source file. */
23980 char *file_name = file_file_name (file, lh);
2e276125 23981
2e276125 23982 if (! current_file)
abc9d0dc 23983 {
fc474241
DE
23984 /* Note: We don't create a macro table for this compilation unit
23985 at all until we actually get a filename. */
804d2729 23986 struct macro_table *macro_table = cu->builder->get_macro_table ();
fc474241 23987
abc9d0dc
TT
23988 /* If we have no current file, then this must be the start_file
23989 directive for the compilation unit's main source file. */
fc474241
DE
23990 current_file = macro_set_main (macro_table, file_name);
23991 macro_define_special (macro_table);
abc9d0dc 23992 }
2e276125 23993 else
233d95b5 23994 current_file = macro_include (current_file, line, file_name);
2e276125 23995
233d95b5 23996 xfree (file_name);
6e70227d 23997
2e276125
JB
23998 return current_file;
23999}
24000
2e276125
JB
24001static const char *
24002consume_improper_spaces (const char *p, const char *body)
24003{
24004 if (*p == ' ')
24005 {
b98664d3 24006 complaint (_("macro definition contains spaces "
3e43a32a 24007 "in formal argument list:\n`%s'"),
4d3c2250 24008 body);
2e276125
JB
24009
24010 while (*p == ' ')
24011 p++;
24012 }
24013
24014 return p;
24015}
24016
24017
24018static void
24019parse_macro_definition (struct macro_source_file *file, int line,
24020 const char *body)
24021{
24022 const char *p;
24023
24024 /* The body string takes one of two forms. For object-like macro
24025 definitions, it should be:
24026
24027 <macro name> " " <definition>
24028
24029 For function-like macro definitions, it should be:
24030
24031 <macro name> "() " <definition>
24032 or
24033 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24034
24035 Spaces may appear only where explicitly indicated, and in the
24036 <definition>.
24037
24038 The Dwarf 2 spec says that an object-like macro's name is always
24039 followed by a space, but versions of GCC around March 2002 omit
6e70227d 24040 the space when the macro's definition is the empty string.
2e276125
JB
24041
24042 The Dwarf 2 spec says that there should be no spaces between the
24043 formal arguments in a function-like macro's formal argument list,
24044 but versions of GCC around March 2002 include spaces after the
24045 commas. */
24046
24047
24048 /* Find the extent of the macro name. The macro name is terminated
24049 by either a space or null character (for an object-like macro) or
24050 an opening paren (for a function-like macro). */
24051 for (p = body; *p; p++)
24052 if (*p == ' ' || *p == '(')
24053 break;
24054
24055 if (*p == ' ' || *p == '\0')
24056 {
24057 /* It's an object-like macro. */
24058 int name_len = p - body;
3f8a7804 24059 char *name = savestring (body, name_len);
2e276125
JB
24060 const char *replacement;
24061
24062 if (*p == ' ')
24063 replacement = body + name_len + 1;
24064 else
24065 {
4d3c2250 24066 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24067 replacement = body + name_len;
24068 }
6e70227d 24069
2e276125
JB
24070 macro_define_object (file, line, name, replacement);
24071
24072 xfree (name);
24073 }
24074 else if (*p == '(')
24075 {
24076 /* It's a function-like macro. */
3f8a7804 24077 char *name = savestring (body, p - body);
2e276125
JB
24078 int argc = 0;
24079 int argv_size = 1;
8d749320 24080 char **argv = XNEWVEC (char *, argv_size);
2e276125
JB
24081
24082 p++;
24083
24084 p = consume_improper_spaces (p, body);
24085
24086 /* Parse the formal argument list. */
24087 while (*p && *p != ')')
24088 {
24089 /* Find the extent of the current argument name. */
24090 const char *arg_start = p;
24091
24092 while (*p && *p != ',' && *p != ')' && *p != ' ')
24093 p++;
24094
24095 if (! *p || p == arg_start)
4d3c2250 24096 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24097 else
24098 {
24099 /* Make sure argv has room for the new argument. */
24100 if (argc >= argv_size)
24101 {
24102 argv_size *= 2;
224c3ddb 24103 argv = XRESIZEVEC (char *, argv, argv_size);
2e276125
JB
24104 }
24105
3f8a7804 24106 argv[argc++] = savestring (arg_start, p - arg_start);
2e276125
JB
24107 }
24108
24109 p = consume_improper_spaces (p, body);
24110
24111 /* Consume the comma, if present. */
24112 if (*p == ',')
24113 {
24114 p++;
24115
24116 p = consume_improper_spaces (p, body);
24117 }
24118 }
24119
24120 if (*p == ')')
24121 {
24122 p++;
24123
24124 if (*p == ' ')
24125 /* Perfectly formed definition, no complaints. */
24126 macro_define_function (file, line, name,
6e70227d 24127 argc, (const char **) argv,
2e276125
JB
24128 p + 1);
24129 else if (*p == '\0')
24130 {
24131 /* Complain, but do define it. */
4d3c2250 24132 dwarf2_macro_malformed_definition_complaint (body);
2e276125 24133 macro_define_function (file, line, name,
6e70227d 24134 argc, (const char **) argv,
2e276125
JB
24135 p);
24136 }
24137 else
24138 /* Just complain. */
4d3c2250 24139 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24140 }
24141 else
24142 /* Just complain. */
4d3c2250 24143 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24144
24145 xfree (name);
24146 {
24147 int i;
24148
24149 for (i = 0; i < argc; i++)
24150 xfree (argv[i]);
24151 }
24152 xfree (argv);
24153 }
24154 else
4d3c2250 24155 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24156}
24157
cf2c3c16
TT
24158/* Skip some bytes from BYTES according to the form given in FORM.
24159 Returns the new pointer. */
2e276125 24160
d521ce57
TT
24161static const gdb_byte *
24162skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
24163 enum dwarf_form form,
24164 unsigned int offset_size,
24165 struct dwarf2_section_info *section)
2e276125 24166{
cf2c3c16 24167 unsigned int bytes_read;
2e276125 24168
cf2c3c16 24169 switch (form)
2e276125 24170 {
cf2c3c16
TT
24171 case DW_FORM_data1:
24172 case DW_FORM_flag:
24173 ++bytes;
24174 break;
24175
24176 case DW_FORM_data2:
24177 bytes += 2;
24178 break;
24179
24180 case DW_FORM_data4:
24181 bytes += 4;
24182 break;
24183
24184 case DW_FORM_data8:
24185 bytes += 8;
24186 break;
24187
0224619f
JK
24188 case DW_FORM_data16:
24189 bytes += 16;
24190 break;
24191
cf2c3c16
TT
24192 case DW_FORM_string:
24193 read_direct_string (abfd, bytes, &bytes_read);
24194 bytes += bytes_read;
24195 break;
24196
24197 case DW_FORM_sec_offset:
24198 case DW_FORM_strp:
36586728 24199 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
24200 bytes += offset_size;
24201 break;
24202
24203 case DW_FORM_block:
24204 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24205 bytes += bytes_read;
24206 break;
24207
24208 case DW_FORM_block1:
24209 bytes += 1 + read_1_byte (abfd, bytes);
24210 break;
24211 case DW_FORM_block2:
24212 bytes += 2 + read_2_bytes (abfd, bytes);
24213 break;
24214 case DW_FORM_block4:
24215 bytes += 4 + read_4_bytes (abfd, bytes);
24216 break;
24217
24218 case DW_FORM_sdata:
24219 case DW_FORM_udata:
3019eac3
DE
24220 case DW_FORM_GNU_addr_index:
24221 case DW_FORM_GNU_str_index:
d521ce57 24222 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
24223 if (bytes == NULL)
24224 {
24225 dwarf2_section_buffer_overflow_complaint (section);
24226 return NULL;
24227 }
cf2c3c16
TT
24228 break;
24229
663c44ac
JK
24230 case DW_FORM_implicit_const:
24231 break;
24232
cf2c3c16
TT
24233 default:
24234 {
b98664d3 24235 complaint (_("invalid form 0x%x in `%s'"),
a32a8923 24236 form, get_section_name (section));
cf2c3c16
TT
24237 return NULL;
24238 }
2e276125
JB
24239 }
24240
cf2c3c16
TT
24241 return bytes;
24242}
757a13d0 24243
cf2c3c16
TT
24244/* A helper for dwarf_decode_macros that handles skipping an unknown
24245 opcode. Returns an updated pointer to the macro data buffer; or,
24246 on error, issues a complaint and returns NULL. */
757a13d0 24247
d521ce57 24248static const gdb_byte *
cf2c3c16 24249skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
24250 const gdb_byte **opcode_definitions,
24251 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
24252 bfd *abfd,
24253 unsigned int offset_size,
24254 struct dwarf2_section_info *section)
24255{
24256 unsigned int bytes_read, i;
24257 unsigned long arg;
d521ce57 24258 const gdb_byte *defn;
2e276125 24259
cf2c3c16 24260 if (opcode_definitions[opcode] == NULL)
2e276125 24261 {
b98664d3 24262 complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
cf2c3c16
TT
24263 opcode);
24264 return NULL;
24265 }
2e276125 24266
cf2c3c16
TT
24267 defn = opcode_definitions[opcode];
24268 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24269 defn += bytes_read;
2e276125 24270
cf2c3c16
TT
24271 for (i = 0; i < arg; ++i)
24272 {
aead7601
SM
24273 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24274 (enum dwarf_form) defn[i], offset_size,
f664829e 24275 section);
cf2c3c16
TT
24276 if (mac_ptr == NULL)
24277 {
24278 /* skip_form_bytes already issued the complaint. */
24279 return NULL;
24280 }
24281 }
757a13d0 24282
cf2c3c16
TT
24283 return mac_ptr;
24284}
757a13d0 24285
cf2c3c16
TT
24286/* A helper function which parses the header of a macro section.
24287 If the macro section is the extended (for now called "GNU") type,
24288 then this updates *OFFSET_SIZE. Returns a pointer to just after
24289 the header, or issues a complaint and returns NULL on error. */
757a13d0 24290
d521ce57
TT
24291static const gdb_byte *
24292dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 24293 bfd *abfd,
d521ce57 24294 const gdb_byte *mac_ptr,
cf2c3c16
TT
24295 unsigned int *offset_size,
24296 int section_is_gnu)
24297{
24298 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 24299
cf2c3c16
TT
24300 if (section_is_gnu)
24301 {
24302 unsigned int version, flags;
757a13d0 24303
cf2c3c16 24304 version = read_2_bytes (abfd, mac_ptr);
0af92d60 24305 if (version != 4 && version != 5)
cf2c3c16 24306 {
b98664d3 24307 complaint (_("unrecognized version `%d' in .debug_macro section"),
cf2c3c16
TT
24308 version);
24309 return NULL;
24310 }
24311 mac_ptr += 2;
757a13d0 24312
cf2c3c16
TT
24313 flags = read_1_byte (abfd, mac_ptr);
24314 ++mac_ptr;
24315 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 24316
cf2c3c16
TT
24317 if ((flags & 2) != 0)
24318 /* We don't need the line table offset. */
24319 mac_ptr += *offset_size;
757a13d0 24320
cf2c3c16
TT
24321 /* Vendor opcode descriptions. */
24322 if ((flags & 4) != 0)
24323 {
24324 unsigned int i, count;
757a13d0 24325
cf2c3c16
TT
24326 count = read_1_byte (abfd, mac_ptr);
24327 ++mac_ptr;
24328 for (i = 0; i < count; ++i)
24329 {
24330 unsigned int opcode, bytes_read;
24331 unsigned long arg;
24332
24333 opcode = read_1_byte (abfd, mac_ptr);
24334 ++mac_ptr;
24335 opcode_definitions[opcode] = mac_ptr;
24336 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24337 mac_ptr += bytes_read;
24338 mac_ptr += arg;
24339 }
757a13d0 24340 }
cf2c3c16 24341 }
757a13d0 24342
cf2c3c16
TT
24343 return mac_ptr;
24344}
757a13d0 24345
cf2c3c16 24346/* A helper for dwarf_decode_macros that handles the GNU extensions,
0af92d60 24347 including DW_MACRO_import. */
cf2c3c16
TT
24348
24349static void
804d2729 24350dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
ed2dc618 24351 bfd *abfd,
d521ce57 24352 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 24353 struct macro_source_file *current_file,
43f3e411 24354 struct line_header *lh,
cf2c3c16 24355 struct dwarf2_section_info *section,
36586728 24356 int section_is_gnu, int section_is_dwz,
cf2c3c16 24357 unsigned int offset_size,
8fc3fc34 24358 htab_t include_hash)
cf2c3c16 24359{
804d2729
TT
24360 struct dwarf2_per_objfile *dwarf2_per_objfile
24361 = cu->per_cu->dwarf2_per_objfile;
4d663531 24362 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
24363 enum dwarf_macro_record_type macinfo_type;
24364 int at_commandline;
d521ce57 24365 const gdb_byte *opcode_definitions[256];
757a13d0 24366
cf2c3c16
TT
24367 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24368 &offset_size, section_is_gnu);
24369 if (mac_ptr == NULL)
24370 {
24371 /* We already issued a complaint. */
24372 return;
24373 }
757a13d0
JK
24374
24375 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
24376 GDB is still reading the definitions from command line. First
24377 DW_MACINFO_start_file will need to be ignored as it was already executed
24378 to create CURRENT_FILE for the main source holding also the command line
24379 definitions. On first met DW_MACINFO_start_file this flag is reset to
24380 normally execute all the remaining DW_MACINFO_start_file macinfos. */
24381
24382 at_commandline = 1;
24383
24384 do
24385 {
24386 /* Do we at least have room for a macinfo type byte? */
24387 if (mac_ptr >= mac_end)
24388 {
f664829e 24389 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
24390 break;
24391 }
24392
aead7601 24393 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
757a13d0
JK
24394 mac_ptr++;
24395
cf2c3c16
TT
24396 /* Note that we rely on the fact that the corresponding GNU and
24397 DWARF constants are the same. */
132448f8
SM
24398 DIAGNOSTIC_PUSH
24399 DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
757a13d0
JK
24400 switch (macinfo_type)
24401 {
24402 /* A zero macinfo type indicates the end of the macro
24403 information. */
24404 case 0:
24405 break;
2e276125 24406
0af92d60
JK
24407 case DW_MACRO_define:
24408 case DW_MACRO_undef:
24409 case DW_MACRO_define_strp:
24410 case DW_MACRO_undef_strp:
24411 case DW_MACRO_define_sup:
24412 case DW_MACRO_undef_sup:
2e276125 24413 {
891d2f0b 24414 unsigned int bytes_read;
2e276125 24415 int line;
d521ce57 24416 const char *body;
cf2c3c16 24417 int is_define;
2e276125 24418
cf2c3c16
TT
24419 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24420 mac_ptr += bytes_read;
24421
0af92d60
JK
24422 if (macinfo_type == DW_MACRO_define
24423 || macinfo_type == DW_MACRO_undef)
cf2c3c16
TT
24424 {
24425 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24426 mac_ptr += bytes_read;
24427 }
24428 else
24429 {
24430 LONGEST str_offset;
24431
24432 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24433 mac_ptr += offset_size;
2e276125 24434
0af92d60
JK
24435 if (macinfo_type == DW_MACRO_define_sup
24436 || macinfo_type == DW_MACRO_undef_sup
f7a35f02 24437 || section_is_dwz)
36586728 24438 {
ed2dc618
SM
24439 struct dwz_file *dwz
24440 = dwarf2_get_dwz_file (dwarf2_per_objfile);
36586728 24441
ed2dc618
SM
24442 body = read_indirect_string_from_dwz (objfile,
24443 dwz, str_offset);
36586728
TT
24444 }
24445 else
ed2dc618
SM
24446 body = read_indirect_string_at_offset (dwarf2_per_objfile,
24447 abfd, str_offset);
cf2c3c16
TT
24448 }
24449
0af92d60
JK
24450 is_define = (macinfo_type == DW_MACRO_define
24451 || macinfo_type == DW_MACRO_define_strp
24452 || macinfo_type == DW_MACRO_define_sup);
2e276125 24453 if (! current_file)
757a13d0
JK
24454 {
24455 /* DWARF violation as no main source is present. */
b98664d3 24456 complaint (_("debug info with no main source gives macro %s "
757a13d0 24457 "on line %d: %s"),
cf2c3c16
TT
24458 is_define ? _("definition") : _("undefinition"),
24459 line, body);
757a13d0
JK
24460 break;
24461 }
3e43a32a
MS
24462 if ((line == 0 && !at_commandline)
24463 || (line != 0 && at_commandline))
b98664d3 24464 complaint (_("debug info gives %s macro %s with %s line %d: %s"),
757a13d0 24465 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 24466 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
24467 line == 0 ? _("zero") : _("non-zero"), line, body);
24468
cf2c3c16 24469 if (is_define)
757a13d0 24470 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
24471 else
24472 {
0af92d60
JK
24473 gdb_assert (macinfo_type == DW_MACRO_undef
24474 || macinfo_type == DW_MACRO_undef_strp
24475 || macinfo_type == DW_MACRO_undef_sup);
cf2c3c16
TT
24476 macro_undef (current_file, line, body);
24477 }
2e276125
JB
24478 }
24479 break;
24480
0af92d60 24481 case DW_MACRO_start_file:
2e276125 24482 {
891d2f0b 24483 unsigned int bytes_read;
2e276125
JB
24484 int line, file;
24485
24486 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24487 mac_ptr += bytes_read;
24488 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24489 mac_ptr += bytes_read;
24490
3e43a32a
MS
24491 if ((line == 0 && !at_commandline)
24492 || (line != 0 && at_commandline))
b98664d3 24493 complaint (_("debug info gives source %d included "
757a13d0
JK
24494 "from %s at %s line %d"),
24495 file, at_commandline ? _("command-line") : _("file"),
24496 line == 0 ? _("zero") : _("non-zero"), line);
24497
24498 if (at_commandline)
24499 {
0af92d60 24500 /* This DW_MACRO_start_file was executed in the
cf2c3c16 24501 pass one. */
757a13d0
JK
24502 at_commandline = 0;
24503 }
24504 else
804d2729
TT
24505 current_file = macro_start_file (cu, file, line, current_file,
24506 lh);
2e276125
JB
24507 }
24508 break;
24509
0af92d60 24510 case DW_MACRO_end_file:
2e276125 24511 if (! current_file)
b98664d3 24512 complaint (_("macro debug info has an unmatched "
3e43a32a 24513 "`close_file' directive"));
2e276125
JB
24514 else
24515 {
24516 current_file = current_file->included_by;
24517 if (! current_file)
24518 {
cf2c3c16 24519 enum dwarf_macro_record_type next_type;
2e276125
JB
24520
24521 /* GCC circa March 2002 doesn't produce the zero
24522 type byte marking the end of the compilation
24523 unit. Complain if it's not there, but exit no
24524 matter what. */
24525
24526 /* Do we at least have room for a macinfo type byte? */
24527 if (mac_ptr >= mac_end)
24528 {
f664829e 24529 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
24530 return;
24531 }
24532
24533 /* We don't increment mac_ptr here, so this is just
24534 a look-ahead. */
aead7601
SM
24535 next_type
24536 = (enum dwarf_macro_record_type) read_1_byte (abfd,
24537 mac_ptr);
2e276125 24538 if (next_type != 0)
b98664d3 24539 complaint (_("no terminating 0-type entry for "
3e43a32a 24540 "macros in `.debug_macinfo' section"));
2e276125
JB
24541
24542 return;
24543 }
24544 }
24545 break;
24546
0af92d60
JK
24547 case DW_MACRO_import:
24548 case DW_MACRO_import_sup:
cf2c3c16
TT
24549 {
24550 LONGEST offset;
8fc3fc34 24551 void **slot;
a036ba48
TT
24552 bfd *include_bfd = abfd;
24553 struct dwarf2_section_info *include_section = section;
d521ce57 24554 const gdb_byte *include_mac_end = mac_end;
a036ba48 24555 int is_dwz = section_is_dwz;
d521ce57 24556 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
24557
24558 offset = read_offset_1 (abfd, mac_ptr, offset_size);
24559 mac_ptr += offset_size;
24560
0af92d60 24561 if (macinfo_type == DW_MACRO_import_sup)
a036ba48 24562 {
ed2dc618 24563 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
a036ba48 24564
4d663531 24565 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 24566
a036ba48 24567 include_section = &dwz->macro;
a32a8923 24568 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
24569 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24570 is_dwz = 1;
24571 }
24572
24573 new_mac_ptr = include_section->buffer + offset;
24574 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24575
8fc3fc34
TT
24576 if (*slot != NULL)
24577 {
24578 /* This has actually happened; see
24579 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
b98664d3 24580 complaint (_("recursive DW_MACRO_import in "
8fc3fc34
TT
24581 ".debug_macro section"));
24582 }
24583 else
24584 {
d521ce57 24585 *slot = (void *) new_mac_ptr;
36586728 24586
804d2729 24587 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
43f3e411 24588 include_mac_end, current_file, lh,
36586728 24589 section, section_is_gnu, is_dwz,
4d663531 24590 offset_size, include_hash);
8fc3fc34 24591
d521ce57 24592 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 24593 }
cf2c3c16
TT
24594 }
24595 break;
24596
2e276125 24597 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
24598 if (!section_is_gnu)
24599 {
24600 unsigned int bytes_read;
2e276125 24601
ac298888
TT
24602 /* This reads the constant, but since we don't recognize
24603 any vendor extensions, we ignore it. */
24604 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
cf2c3c16
TT
24605 mac_ptr += bytes_read;
24606 read_direct_string (abfd, mac_ptr, &bytes_read);
24607 mac_ptr += bytes_read;
2e276125 24608
cf2c3c16
TT
24609 /* We don't recognize any vendor extensions. */
24610 break;
24611 }
24612 /* FALLTHROUGH */
24613
24614 default:
24615 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 24616 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
24617 section);
24618 if (mac_ptr == NULL)
24619 return;
24620 break;
2e276125 24621 }
132448f8 24622 DIAGNOSTIC_POP
757a13d0 24623 } while (macinfo_type != 0);
2e276125 24624}
8e19ed76 24625
cf2c3c16 24626static void
09262596 24627dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 24628 int section_is_gnu)
cf2c3c16 24629{
518817b3
SM
24630 struct dwarf2_per_objfile *dwarf2_per_objfile
24631 = cu->per_cu->dwarf2_per_objfile;
bb5ed363 24632 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
24633 struct line_header *lh = cu->line_header;
24634 bfd *abfd;
d521ce57 24635 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
24636 struct macro_source_file *current_file = 0;
24637 enum dwarf_macro_record_type macinfo_type;
24638 unsigned int offset_size = cu->header.offset_size;
d521ce57 24639 const gdb_byte *opcode_definitions[256];
8fc3fc34 24640 void **slot;
09262596
DE
24641 struct dwarf2_section_info *section;
24642 const char *section_name;
24643
24644 if (cu->dwo_unit != NULL)
24645 {
24646 if (section_is_gnu)
24647 {
24648 section = &cu->dwo_unit->dwo_file->sections.macro;
24649 section_name = ".debug_macro.dwo";
24650 }
24651 else
24652 {
24653 section = &cu->dwo_unit->dwo_file->sections.macinfo;
24654 section_name = ".debug_macinfo.dwo";
24655 }
24656 }
24657 else
24658 {
24659 if (section_is_gnu)
24660 {
24661 section = &dwarf2_per_objfile->macro;
24662 section_name = ".debug_macro";
24663 }
24664 else
24665 {
24666 section = &dwarf2_per_objfile->macinfo;
24667 section_name = ".debug_macinfo";
24668 }
24669 }
cf2c3c16 24670
bb5ed363 24671 dwarf2_read_section (objfile, section);
cf2c3c16
TT
24672 if (section->buffer == NULL)
24673 {
b98664d3 24674 complaint (_("missing %s section"), section_name);
cf2c3c16
TT
24675 return;
24676 }
a32a8923 24677 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
24678
24679 /* First pass: Find the name of the base filename.
24680 This filename is needed in order to process all macros whose definition
24681 (or undefinition) comes from the command line. These macros are defined
24682 before the first DW_MACINFO_start_file entry, and yet still need to be
24683 associated to the base file.
24684
24685 To determine the base file name, we scan the macro definitions until we
24686 reach the first DW_MACINFO_start_file entry. We then initialize
24687 CURRENT_FILE accordingly so that any macro definition found before the
24688 first DW_MACINFO_start_file can still be associated to the base file. */
24689
24690 mac_ptr = section->buffer + offset;
24691 mac_end = section->buffer + section->size;
24692
24693 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24694 &offset_size, section_is_gnu);
24695 if (mac_ptr == NULL)
24696 {
24697 /* We already issued a complaint. */
24698 return;
24699 }
24700
24701 do
24702 {
24703 /* Do we at least have room for a macinfo type byte? */
24704 if (mac_ptr >= mac_end)
24705 {
24706 /* Complaint is printed during the second pass as GDB will probably
24707 stop the first pass earlier upon finding
24708 DW_MACINFO_start_file. */
24709 break;
24710 }
24711
aead7601 24712 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
cf2c3c16
TT
24713 mac_ptr++;
24714
24715 /* Note that we rely on the fact that the corresponding GNU and
24716 DWARF constants are the same. */
132448f8
SM
24717 DIAGNOSTIC_PUSH
24718 DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
cf2c3c16
TT
24719 switch (macinfo_type)
24720 {
24721 /* A zero macinfo type indicates the end of the macro
24722 information. */
24723 case 0:
24724 break;
24725
0af92d60
JK
24726 case DW_MACRO_define:
24727 case DW_MACRO_undef:
cf2c3c16
TT
24728 /* Only skip the data by MAC_PTR. */
24729 {
24730 unsigned int bytes_read;
24731
24732 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24733 mac_ptr += bytes_read;
24734 read_direct_string (abfd, mac_ptr, &bytes_read);
24735 mac_ptr += bytes_read;
24736 }
24737 break;
24738
0af92d60 24739 case DW_MACRO_start_file:
cf2c3c16
TT
24740 {
24741 unsigned int bytes_read;
24742 int line, file;
24743
24744 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24745 mac_ptr += bytes_read;
24746 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24747 mac_ptr += bytes_read;
24748
804d2729 24749 current_file = macro_start_file (cu, file, line, current_file, lh);
cf2c3c16
TT
24750 }
24751 break;
24752
0af92d60 24753 case DW_MACRO_end_file:
cf2c3c16
TT
24754 /* No data to skip by MAC_PTR. */
24755 break;
24756
0af92d60
JK
24757 case DW_MACRO_define_strp:
24758 case DW_MACRO_undef_strp:
24759 case DW_MACRO_define_sup:
24760 case DW_MACRO_undef_sup:
cf2c3c16
TT
24761 {
24762 unsigned int bytes_read;
24763
24764 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24765 mac_ptr += bytes_read;
24766 mac_ptr += offset_size;
24767 }
24768 break;
24769
0af92d60
JK
24770 case DW_MACRO_import:
24771 case DW_MACRO_import_sup:
cf2c3c16 24772 /* Note that, according to the spec, a transparent include
0af92d60 24773 chain cannot call DW_MACRO_start_file. So, we can just
cf2c3c16
TT
24774 skip this opcode. */
24775 mac_ptr += offset_size;
24776 break;
24777
24778 case DW_MACINFO_vendor_ext:
24779 /* Only skip the data by MAC_PTR. */
24780 if (!section_is_gnu)
24781 {
24782 unsigned int bytes_read;
24783
24784 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24785 mac_ptr += bytes_read;
24786 read_direct_string (abfd, mac_ptr, &bytes_read);
24787 mac_ptr += bytes_read;
24788 }
24789 /* FALLTHROUGH */
24790
24791 default:
24792 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 24793 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
24794 section);
24795 if (mac_ptr == NULL)
24796 return;
24797 break;
24798 }
132448f8 24799 DIAGNOSTIC_POP
cf2c3c16
TT
24800 } while (macinfo_type != 0 && current_file == NULL);
24801
24802 /* Second pass: Process all entries.
24803
24804 Use the AT_COMMAND_LINE flag to determine whether we are still processing
24805 command-line macro definitions/undefinitions. This flag is unset when we
24806 reach the first DW_MACINFO_start_file entry. */
24807
fc4007c9
TT
24808 htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24809 htab_eq_pointer,
24810 NULL, xcalloc, xfree));
8fc3fc34 24811 mac_ptr = section->buffer + offset;
fc4007c9 24812 slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
d521ce57 24813 *slot = (void *) mac_ptr;
804d2729 24814 dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
43f3e411 24815 current_file, lh, section,
fc4007c9
TT
24816 section_is_gnu, 0, offset_size,
24817 include_hash.get ());
cf2c3c16
TT
24818}
24819
8e19ed76 24820/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 24821 if so return true else false. */
380bca97 24822
8e19ed76 24823static int
6e5a29e1 24824attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
24825{
24826 return (attr == NULL ? 0 :
24827 attr->form == DW_FORM_block1
24828 || attr->form == DW_FORM_block2
24829 || attr->form == DW_FORM_block4
2dc7f7b3
TT
24830 || attr->form == DW_FORM_block
24831 || attr->form == DW_FORM_exprloc);
8e19ed76 24832}
4c2df51b 24833
c6a0999f
JB
24834/* Return non-zero if ATTR's value is a section offset --- classes
24835 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24836 You may use DW_UNSND (attr) to retrieve such offsets.
24837
24838 Section 7.5.4, "Attribute Encodings", explains that no attribute
24839 may have a value that belongs to more than one of these classes; it
24840 would be ambiguous if we did, because we use the same forms for all
24841 of them. */
380bca97 24842
3690dd37 24843static int
6e5a29e1 24844attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
24845{
24846 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
24847 || attr->form == DW_FORM_data8
24848 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
24849}
24850
3690dd37
JB
24851/* Return non-zero if ATTR's value falls in the 'constant' class, or
24852 zero otherwise. When this function returns true, you can apply
24853 dwarf2_get_attr_constant_value to it.
24854
24855 However, note that for some attributes you must check
24856 attr_form_is_section_offset before using this test. DW_FORM_data4
24857 and DW_FORM_data8 are members of both the constant class, and of
24858 the classes that contain offsets into other debug sections
24859 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
24860 that, if an attribute's can be either a constant or one of the
24861 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
0224619f
JK
24862 taken as section offsets, not constants.
24863
24864 DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24865 cannot handle that. */
380bca97 24866
3690dd37 24867static int
6e5a29e1 24868attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
24869{
24870 switch (attr->form)
24871 {
24872 case DW_FORM_sdata:
24873 case DW_FORM_udata:
24874 case DW_FORM_data1:
24875 case DW_FORM_data2:
24876 case DW_FORM_data4:
24877 case DW_FORM_data8:
663c44ac 24878 case DW_FORM_implicit_const:
3690dd37
JB
24879 return 1;
24880 default:
24881 return 0;
24882 }
24883}
24884
7771576e
SA
24885
24886/* DW_ADDR is always stored already as sect_offset; despite for the forms
24887 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
24888
24889static int
6e5a29e1 24890attr_form_is_ref (const struct attribute *attr)
7771576e
SA
24891{
24892 switch (attr->form)
24893 {
24894 case DW_FORM_ref_addr:
24895 case DW_FORM_ref1:
24896 case DW_FORM_ref2:
24897 case DW_FORM_ref4:
24898 case DW_FORM_ref8:
24899 case DW_FORM_ref_udata:
24900 case DW_FORM_GNU_ref_alt:
24901 return 1;
24902 default:
24903 return 0;
24904 }
24905}
24906
3019eac3
DE
24907/* Return the .debug_loc section to use for CU.
24908 For DWO files use .debug_loc.dwo. */
24909
24910static struct dwarf2_section_info *
24911cu_debug_loc_section (struct dwarf2_cu *cu)
24912{
518817b3
SM
24913 struct dwarf2_per_objfile *dwarf2_per_objfile
24914 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 24915
3019eac3 24916 if (cu->dwo_unit)
43988095
JK
24917 {
24918 struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24919
24920 return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24921 }
24922 return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24923 : &dwarf2_per_objfile->loc);
3019eac3
DE
24924}
24925
8cf6f0b1
TT
24926/* A helper function that fills in a dwarf2_loclist_baton. */
24927
24928static void
24929fill_in_loclist_baton (struct dwarf2_cu *cu,
24930 struct dwarf2_loclist_baton *baton,
ff39bb5e 24931 const struct attribute *attr)
8cf6f0b1 24932{
518817b3
SM
24933 struct dwarf2_per_objfile *dwarf2_per_objfile
24934 = cu->per_cu->dwarf2_per_objfile;
3019eac3
DE
24935 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24936
24937 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
24938
24939 baton->per_cu = cu->per_cu;
24940 gdb_assert (baton->per_cu);
24941 /* We don't know how long the location list is, but make sure we
24942 don't run off the edge of the section. */
3019eac3
DE
24943 baton->size = section->size - DW_UNSND (attr);
24944 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 24945 baton->base_address = cu->base_address;
f664829e 24946 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
24947}
24948
4c2df51b 24949static void
ff39bb5e 24950dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 24951 struct dwarf2_cu *cu, int is_block)
4c2df51b 24952{
518817b3
SM
24953 struct dwarf2_per_objfile *dwarf2_per_objfile
24954 = cu->per_cu->dwarf2_per_objfile;
bb5ed363 24955 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 24956 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 24957
3690dd37 24958 if (attr_form_is_section_offset (attr)
3019eac3 24959 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
24960 the section. If so, fall through to the complaint in the
24961 other branch. */
3019eac3 24962 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 24963 {
0d53c4c4 24964 struct dwarf2_loclist_baton *baton;
4c2df51b 24965
8d749320 24966 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
4c2df51b 24967
8cf6f0b1 24968 fill_in_loclist_baton (cu, baton, attr);
be391dca 24969
d00adf39 24970 if (cu->base_known == 0)
b98664d3 24971 complaint (_("Location list used without "
3e43a32a 24972 "specifying the CU base address."));
4c2df51b 24973
f1e6e072
TT
24974 SYMBOL_ACLASS_INDEX (sym) = (is_block
24975 ? dwarf2_loclist_block_index
24976 : dwarf2_loclist_index);
0d53c4c4
DJ
24977 SYMBOL_LOCATION_BATON (sym) = baton;
24978 }
24979 else
24980 {
24981 struct dwarf2_locexpr_baton *baton;
24982
8d749320 24983 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
ae0d2f24
UW
24984 baton->per_cu = cu->per_cu;
24985 gdb_assert (baton->per_cu);
0d53c4c4
DJ
24986
24987 if (attr_form_is_block (attr))
24988 {
24989 /* Note that we're just copying the block's data pointer
24990 here, not the actual data. We're still pointing into the
6502dd73
DJ
24991 info_buffer for SYM's objfile; right now we never release
24992 that buffer, but when we do clean up properly this may
24993 need to change. */
0d53c4c4
DJ
24994 baton->size = DW_BLOCK (attr)->size;
24995 baton->data = DW_BLOCK (attr)->data;
24996 }
24997 else
24998 {
24999 dwarf2_invalid_attrib_class_complaint ("location description",
25000 SYMBOL_NATURAL_NAME (sym));
25001 baton->size = 0;
0d53c4c4 25002 }
6e70227d 25003
f1e6e072
TT
25004 SYMBOL_ACLASS_INDEX (sym) = (is_block
25005 ? dwarf2_locexpr_block_index
25006 : dwarf2_locexpr_index);
0d53c4c4
DJ
25007 SYMBOL_LOCATION_BATON (sym) = baton;
25008 }
4c2df51b 25009}
6502dd73 25010
9aa1f1e3
TT
25011/* Return the OBJFILE associated with the compilation unit CU. If CU
25012 came from a separate debuginfo file, then the master objfile is
25013 returned. */
ae0d2f24
UW
25014
25015struct objfile *
25016dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25017{
e3b94546 25018 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
ae0d2f24
UW
25019
25020 /* Return the master objfile, so that we can report and look up the
25021 correct file containing this variable. */
25022 if (objfile->separate_debug_objfile_backlink)
25023 objfile = objfile->separate_debug_objfile_backlink;
25024
25025 return objfile;
25026}
25027
96408a79
SA
25028/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25029 (CU_HEADERP is unused in such case) or prepare a temporary copy at
25030 CU_HEADERP first. */
25031
25032static const struct comp_unit_head *
25033per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25034 struct dwarf2_per_cu_data *per_cu)
25035{
d521ce57 25036 const gdb_byte *info_ptr;
96408a79
SA
25037
25038 if (per_cu->cu)
25039 return &per_cu->cu->header;
25040
9c541725 25041 info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
96408a79
SA
25042
25043 memset (cu_headerp, 0, sizeof (*cu_headerp));
43988095
JK
25044 read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25045 rcuh_kind::COMPILE);
96408a79
SA
25046
25047 return cu_headerp;
25048}
25049
ae0d2f24
UW
25050/* Return the address size given in the compilation unit header for CU. */
25051
98714339 25052int
ae0d2f24
UW
25053dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25054{
96408a79
SA
25055 struct comp_unit_head cu_header_local;
25056 const struct comp_unit_head *cu_headerp;
c471e790 25057
96408a79
SA
25058 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25059
25060 return cu_headerp->addr_size;
ae0d2f24
UW
25061}
25062
9eae7c52
TT
25063/* Return the offset size given in the compilation unit header for CU. */
25064
25065int
25066dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25067{
96408a79
SA
25068 struct comp_unit_head cu_header_local;
25069 const struct comp_unit_head *cu_headerp;
9c6c53f7 25070
96408a79
SA
25071 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25072
25073 return cu_headerp->offset_size;
25074}
25075
25076/* See its dwarf2loc.h declaration. */
25077
25078int
25079dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25080{
25081 struct comp_unit_head cu_header_local;
25082 const struct comp_unit_head *cu_headerp;
25083
25084 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25085
25086 if (cu_headerp->version == 2)
25087 return cu_headerp->addr_size;
25088 else
25089 return cu_headerp->offset_size;
181cebd4
JK
25090}
25091
9aa1f1e3
TT
25092/* Return the text offset of the CU. The returned offset comes from
25093 this CU's objfile. If this objfile came from a separate debuginfo
25094 file, then the offset may be different from the corresponding
25095 offset in the parent objfile. */
25096
25097CORE_ADDR
25098dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25099{
e3b94546 25100 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
9aa1f1e3
TT
25101
25102 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25103}
25104
43988095
JK
25105/* Return DWARF version number of PER_CU. */
25106
25107short
25108dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25109{
25110 return per_cu->dwarf_version;
25111}
25112
348e048f
DE
25113/* Locate the .debug_info compilation unit from CU's objfile which contains
25114 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
25115
25116static struct dwarf2_per_cu_data *
9c541725 25117dwarf2_find_containing_comp_unit (sect_offset sect_off,
36586728 25118 unsigned int offset_in_dwz,
ed2dc618 25119 struct dwarf2_per_objfile *dwarf2_per_objfile)
ae038cb0
DJ
25120{
25121 struct dwarf2_per_cu_data *this_cu;
25122 int low, high;
25123
ae038cb0 25124 low = 0;
b76e467d 25125 high = dwarf2_per_objfile->all_comp_units.size () - 1;
ae038cb0
DJ
25126 while (high > low)
25127 {
36586728 25128 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 25129 int mid = low + (high - low) / 2;
9a619af0 25130
36586728 25131 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
36586728 25132 if (mid_cu->is_dwz > offset_in_dwz
81fbbaf9 25133 || (mid_cu->is_dwz == offset_in_dwz
45b8ae0c 25134 && mid_cu->sect_off + mid_cu->length >= sect_off))
ae038cb0
DJ
25135 high = mid;
25136 else
25137 low = mid + 1;
25138 }
25139 gdb_assert (low == high);
36586728 25140 this_cu = dwarf2_per_objfile->all_comp_units[low];
45b8ae0c 25141 if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
ae038cb0 25142 {
36586728 25143 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8 25144 error (_("Dwarf Error: could not find partial DIE containing "
9d8780f0
SM
25145 "offset %s [in module %s]"),
25146 sect_offset_str (sect_off),
ed2dc618 25147 bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
10b3939b 25148
9c541725
PA
25149 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25150 <= sect_off);
ae038cb0
DJ
25151 return dwarf2_per_objfile->all_comp_units[low-1];
25152 }
25153 else
25154 {
25155 this_cu = dwarf2_per_objfile->all_comp_units[low];
b76e467d 25156 if (low == dwarf2_per_objfile->all_comp_units.size () - 1
9c541725 25157 && sect_off >= this_cu->sect_off + this_cu->length)
9d8780f0 25158 error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
9c541725 25159 gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
ae038cb0
DJ
25160 return this_cu;
25161 }
25162}
25163
23745b47 25164/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 25165
fcd3b13d
SM
25166dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25167 : per_cu (per_cu_),
9068261f
AB
25168 mark (false),
25169 has_loclist (false),
25170 checked_producer (false),
25171 producer_is_gxx_lt_4_6 (false),
25172 producer_is_gcc_lt_4_3 (false),
eb77c9df 25173 producer_is_icc (false),
9068261f 25174 producer_is_icc_lt_14 (false),
c258c396 25175 producer_is_codewarrior (false),
9068261f 25176 processing_has_namespace_info (false)
93311388 25177{
fcd3b13d
SM
25178 per_cu->cu = this;
25179}
25180
25181/* Destroy a dwarf2_cu. */
25182
25183dwarf2_cu::~dwarf2_cu ()
25184{
25185 per_cu->cu = NULL;
9816fde3
JK
25186}
25187
25188/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
25189
25190static void
95554aad
TT
25191prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25192 enum language pretend_language)
9816fde3
JK
25193{
25194 struct attribute *attr;
25195
25196 /* Set the language we're debugging. */
25197 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25198 if (attr)
25199 set_cu_language (DW_UNSND (attr), cu);
25200 else
9cded63f 25201 {
95554aad 25202 cu->language = pretend_language;
9cded63f
TT
25203 cu->language_defn = language_def (cu->language);
25204 }
dee91e82 25205
7d45c7c3 25206 cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
93311388
DE
25207}
25208
ae038cb0
DJ
25209/* Increase the age counter on each cached compilation unit, and free
25210 any that are too old. */
25211
25212static void
ed2dc618 25213age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
ae038cb0
DJ
25214{
25215 struct dwarf2_per_cu_data *per_cu, **last_chain;
25216
25217 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25218 per_cu = dwarf2_per_objfile->read_in_chain;
25219 while (per_cu != NULL)
25220 {
25221 per_cu->cu->last_used ++;
b4f54984 25222 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
25223 dwarf2_mark (per_cu->cu);
25224 per_cu = per_cu->cu->read_in_chain;
25225 }
25226
25227 per_cu = dwarf2_per_objfile->read_in_chain;
25228 last_chain = &dwarf2_per_objfile->read_in_chain;
25229 while (per_cu != NULL)
25230 {
25231 struct dwarf2_per_cu_data *next_cu;
25232
25233 next_cu = per_cu->cu->read_in_chain;
25234
25235 if (!per_cu->cu->mark)
25236 {
fcd3b13d 25237 delete per_cu->cu;
ae038cb0
DJ
25238 *last_chain = next_cu;
25239 }
25240 else
25241 last_chain = &per_cu->cu->read_in_chain;
25242
25243 per_cu = next_cu;
25244 }
25245}
25246
25247/* Remove a single compilation unit from the cache. */
25248
25249static void
dee91e82 25250free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
25251{
25252 struct dwarf2_per_cu_data *per_cu, **last_chain;
ed2dc618
SM
25253 struct dwarf2_per_objfile *dwarf2_per_objfile
25254 = target_per_cu->dwarf2_per_objfile;
ae038cb0
DJ
25255
25256 per_cu = dwarf2_per_objfile->read_in_chain;
25257 last_chain = &dwarf2_per_objfile->read_in_chain;
25258 while (per_cu != NULL)
25259 {
25260 struct dwarf2_per_cu_data *next_cu;
25261
25262 next_cu = per_cu->cu->read_in_chain;
25263
dee91e82 25264 if (per_cu == target_per_cu)
ae038cb0 25265 {
fcd3b13d 25266 delete per_cu->cu;
dee91e82 25267 per_cu->cu = NULL;
ae038cb0
DJ
25268 *last_chain = next_cu;
25269 break;
25270 }
25271 else
25272 last_chain = &per_cu->cu->read_in_chain;
25273
25274 per_cu = next_cu;
25275 }
25276}
25277
d95d3aef 25278/* Cleanup function for the dwarf2_per_objfile data. */
fe3e1990 25279
d95d3aef
TT
25280static void
25281dwarf2_free_objfile (struct objfile *objfile, void *datum)
fe3e1990 25282{
ed2dc618 25283 struct dwarf2_per_objfile *dwarf2_per_objfile
d95d3aef 25284 = static_cast<struct dwarf2_per_objfile *> (datum);
fe3e1990 25285
fd90ace4 25286 delete dwarf2_per_objfile;
fe3e1990
DJ
25287}
25288
dee91e82
DE
25289/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25290 We store these in a hash table separate from the DIEs, and preserve them
25291 when the DIEs are flushed out of cache.
25292
25293 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 25294 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
25295 or the type may come from a DWO file. Furthermore, while it's more logical
25296 to use per_cu->section+offset, with Fission the section with the data is in
25297 the DWO file but we don't know that section at the point we need it.
25298 We have to use something in dwarf2_per_cu_data (or the pointer to it)
25299 because we can enter the lookup routine, get_die_type_at_offset, from
25300 outside this file, and thus won't necessarily have PER_CU->cu.
25301 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 25302
dee91e82 25303struct dwarf2_per_cu_offset_and_type
1c379e20 25304{
dee91e82 25305 const struct dwarf2_per_cu_data *per_cu;
9c541725 25306 sect_offset sect_off;
1c379e20
DJ
25307 struct type *type;
25308};
25309
dee91e82 25310/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
25311
25312static hashval_t
dee91e82 25313per_cu_offset_and_type_hash (const void *item)
1c379e20 25314{
9a3c8263
SM
25315 const struct dwarf2_per_cu_offset_and_type *ofs
25316 = (const struct dwarf2_per_cu_offset_and_type *) item;
9a619af0 25317
9c541725 25318 return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
1c379e20
DJ
25319}
25320
dee91e82 25321/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
25322
25323static int
dee91e82 25324per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 25325{
9a3c8263
SM
25326 const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25327 = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25328 const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25329 = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
9a619af0 25330
dee91e82 25331 return (ofs_lhs->per_cu == ofs_rhs->per_cu
9c541725 25332 && ofs_lhs->sect_off == ofs_rhs->sect_off);
1c379e20
DJ
25333}
25334
25335/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
25336 table if necessary. For convenience, return TYPE.
25337
25338 The DIEs reading must have careful ordering to:
25339 * Not cause infite loops trying to read in DIEs as a prerequisite for
25340 reading current DIE.
25341 * Not trying to dereference contents of still incompletely read in types
25342 while reading in other DIEs.
25343 * Enable referencing still incompletely read in types just by a pointer to
25344 the type without accessing its fields.
25345
25346 Therefore caller should follow these rules:
25347 * Try to fetch any prerequisite types we may need to build this DIE type
25348 before building the type and calling set_die_type.
e71ec853 25349 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
25350 possible before fetching more types to complete the current type.
25351 * Make the type as complete as possible before fetching more types. */
1c379e20 25352
f792889a 25353static struct type *
1c379e20
DJ
25354set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25355{
518817b3
SM
25356 struct dwarf2_per_objfile *dwarf2_per_objfile
25357 = cu->per_cu->dwarf2_per_objfile;
dee91e82 25358 struct dwarf2_per_cu_offset_and_type **slot, ofs;
ed2dc618 25359 struct objfile *objfile = dwarf2_per_objfile->objfile;
3cdcd0ce
JB
25360 struct attribute *attr;
25361 struct dynamic_prop prop;
1c379e20 25362
b4ba55a1
JB
25363 /* For Ada types, make sure that the gnat-specific data is always
25364 initialized (if not already set). There are a few types where
25365 we should not be doing so, because the type-specific area is
25366 already used to hold some other piece of info (eg: TYPE_CODE_FLT
25367 where the type-specific area is used to store the floatformat).
25368 But this is not a problem, because the gnat-specific information
25369 is actually not needed for these types. */
25370 if (need_gnat_info (cu)
25371 && TYPE_CODE (type) != TYPE_CODE_FUNC
25372 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
25373 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25374 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25375 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
25376 && !HAVE_GNAT_AUX_INFO (type))
25377 INIT_GNAT_SPECIFIC (type);
25378
3f2f83dd
KB
25379 /* Read DW_AT_allocated and set in type. */
25380 attr = dwarf2_attr (die, DW_AT_allocated, cu);
25381 if (attr_form_is_block (attr))
25382 {
25383 if (attr_to_dynamic_prop (attr, die, cu, &prop))
50a82047 25384 add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
3f2f83dd
KB
25385 }
25386 else if (attr != NULL)
25387 {
b98664d3 25388 complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
9c541725 25389 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
9d8780f0 25390 sect_offset_str (die->sect_off));
3f2f83dd
KB
25391 }
25392
25393 /* Read DW_AT_associated and set in type. */
25394 attr = dwarf2_attr (die, DW_AT_associated, cu);
25395 if (attr_form_is_block (attr))
25396 {
25397 if (attr_to_dynamic_prop (attr, die, cu, &prop))
50a82047 25398 add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
3f2f83dd
KB
25399 }
25400 else if (attr != NULL)
25401 {
b98664d3 25402 complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
9c541725 25403 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
9d8780f0 25404 sect_offset_str (die->sect_off));
3f2f83dd
KB
25405 }
25406
3cdcd0ce
JB
25407 /* Read DW_AT_data_location and set in type. */
25408 attr = dwarf2_attr (die, DW_AT_data_location, cu);
25409 if (attr_to_dynamic_prop (attr, die, cu, &prop))
50a82047 25410 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
3cdcd0ce 25411
dee91e82 25412 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 25413 {
dee91e82
DE
25414 dwarf2_per_objfile->die_type_hash =
25415 htab_create_alloc_ex (127,
25416 per_cu_offset_and_type_hash,
25417 per_cu_offset_and_type_eq,
25418 NULL,
25419 &objfile->objfile_obstack,
25420 hashtab_obstack_allocate,
25421 dummy_obstack_deallocate);
f792889a 25422 }
1c379e20 25423
dee91e82 25424 ofs.per_cu = cu->per_cu;
9c541725 25425 ofs.sect_off = die->sect_off;
1c379e20 25426 ofs.type = type;
dee91e82
DE
25427 slot = (struct dwarf2_per_cu_offset_and_type **)
25428 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57 25429 if (*slot)
b98664d3 25430 complaint (_("A problem internal to GDB: DIE %s has type already set"),
9d8780f0 25431 sect_offset_str (die->sect_off));
8d749320
SM
25432 *slot = XOBNEW (&objfile->objfile_obstack,
25433 struct dwarf2_per_cu_offset_and_type);
1c379e20 25434 **slot = ofs;
f792889a 25435 return type;
1c379e20
DJ
25436}
25437
9c541725 25438/* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
02142a6c 25439 or return NULL if the die does not have a saved type. */
1c379e20
DJ
25440
25441static struct type *
9c541725 25442get_die_type_at_offset (sect_offset sect_off,
673bfd45 25443 struct dwarf2_per_cu_data *per_cu)
1c379e20 25444{
dee91e82 25445 struct dwarf2_per_cu_offset_and_type *slot, ofs;
ed2dc618 25446 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
f792889a 25447
dee91e82 25448 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 25449 return NULL;
1c379e20 25450
dee91e82 25451 ofs.per_cu = per_cu;
9c541725 25452 ofs.sect_off = sect_off;
9a3c8263
SM
25453 slot = ((struct dwarf2_per_cu_offset_and_type *)
25454 htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
1c379e20
DJ
25455 if (slot)
25456 return slot->type;
25457 else
25458 return NULL;
25459}
25460
02142a6c 25461/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
25462 or return NULL if DIE does not have a saved type. */
25463
25464static struct type *
25465get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25466{
9c541725 25467 return get_die_type_at_offset (die->sect_off, cu->per_cu);
673bfd45
DE
25468}
25469
10b3939b
DJ
25470/* Add a dependence relationship from CU to REF_PER_CU. */
25471
25472static void
25473dwarf2_add_dependence (struct dwarf2_cu *cu,
25474 struct dwarf2_per_cu_data *ref_per_cu)
25475{
25476 void **slot;
25477
25478 if (cu->dependencies == NULL)
25479 cu->dependencies
25480 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25481 NULL, &cu->comp_unit_obstack,
25482 hashtab_obstack_allocate,
25483 dummy_obstack_deallocate);
25484
25485 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25486 if (*slot == NULL)
25487 *slot = ref_per_cu;
25488}
1c379e20 25489
f504f079
DE
25490/* Subroutine of dwarf2_mark to pass to htab_traverse.
25491 Set the mark field in every compilation unit in the
ae038cb0
DJ
25492 cache that we must keep because we are keeping CU. */
25493
10b3939b
DJ
25494static int
25495dwarf2_mark_helper (void **slot, void *data)
25496{
25497 struct dwarf2_per_cu_data *per_cu;
25498
25499 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
25500
25501 /* cu->dependencies references may not yet have been ever read if QUIT aborts
25502 reading of the chain. As such dependencies remain valid it is not much
25503 useful to track and undo them during QUIT cleanups. */
25504 if (per_cu->cu == NULL)
25505 return 1;
25506
10b3939b
DJ
25507 if (per_cu->cu->mark)
25508 return 1;
9068261f 25509 per_cu->cu->mark = true;
10b3939b
DJ
25510
25511 if (per_cu->cu->dependencies != NULL)
25512 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25513
25514 return 1;
25515}
25516
f504f079
DE
25517/* Set the mark field in CU and in every other compilation unit in the
25518 cache that we must keep because we are keeping CU. */
25519
ae038cb0
DJ
25520static void
25521dwarf2_mark (struct dwarf2_cu *cu)
25522{
25523 if (cu->mark)
25524 return;
9068261f 25525 cu->mark = true;
10b3939b
DJ
25526 if (cu->dependencies != NULL)
25527 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
25528}
25529
25530static void
25531dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25532{
25533 while (per_cu)
25534 {
9068261f 25535 per_cu->cu->mark = false;
ae038cb0
DJ
25536 per_cu = per_cu->cu->read_in_chain;
25537 }
72bf9492
DJ
25538}
25539
72bf9492
DJ
25540/* Trivial hash function for partial_die_info: the hash value of a DIE
25541 is its offset in .debug_info for this objfile. */
25542
25543static hashval_t
25544partial_die_hash (const void *item)
25545{
9a3c8263
SM
25546 const struct partial_die_info *part_die
25547 = (const struct partial_die_info *) item;
9a619af0 25548
9c541725 25549 return to_underlying (part_die->sect_off);
72bf9492
DJ
25550}
25551
25552/* Trivial comparison function for partial_die_info structures: two DIEs
25553 are equal if they have the same offset. */
25554
25555static int
25556partial_die_eq (const void *item_lhs, const void *item_rhs)
25557{
9a3c8263
SM
25558 const struct partial_die_info *part_die_lhs
25559 = (const struct partial_die_info *) item_lhs;
25560 const struct partial_die_info *part_die_rhs
25561 = (const struct partial_die_info *) item_rhs;
9a619af0 25562
9c541725 25563 return part_die_lhs->sect_off == part_die_rhs->sect_off;
72bf9492
DJ
25564}
25565
3c3bb058
AB
25566struct cmd_list_element *set_dwarf_cmdlist;
25567struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
25568
25569static void
981a3fb3 25570set_dwarf_cmd (const char *args, int from_tty)
ae038cb0 25571{
b4f54984 25572 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 25573 gdb_stdout);
ae038cb0
DJ
25574}
25575
25576static void
981a3fb3 25577show_dwarf_cmd (const char *args, int from_tty)
6e70227d 25578{
b4f54984 25579 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
25580}
25581
cd4fb1b2 25582int dwarf_always_disassemble;
437afbb8 25583
437afbb8 25584static void
cd4fb1b2
SM
25585show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25586 struct cmd_list_element *c, const char *value)
9291a0cd 25587{
cd4fb1b2
SM
25588 fprintf_filtered (file,
25589 _("Whether to always disassemble "
25590 "DWARF expressions is %s.\n"),
25591 value);
9291a0cd
TT
25592}
25593
9291a0cd 25594static void
cd4fb1b2
SM
25595show_check_physname (struct ui_file *file, int from_tty,
25596 struct cmd_list_element *c, const char *value)
9291a0cd 25597{
cd4fb1b2
SM
25598 fprintf_filtered (file,
25599 _("Whether to check \"physname\" is %s.\n"),
25600 value);
9291a0cd
TT
25601}
25602
cd4fb1b2
SM
25603void
25604_initialize_dwarf2_read (void)
9291a0cd 25605{
d95d3aef
TT
25606 dwarf2_objfile_data_key
25607 = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
156942c7 25608
cd4fb1b2
SM
25609 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25610Set DWARF specific variables.\n\
25611Configure DWARF variables such as the cache size"),
25612 &set_dwarf_cmdlist, "maintenance set dwarf ",
25613 0/*allow-unknown*/, &maintenance_set_cmdlist);
156942c7 25614
cd4fb1b2
SM
25615 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25616Show DWARF specific variables\n\
25617Show DWARF variables such as the cache size"),
25618 &show_dwarf_cmdlist, "maintenance show dwarf ",
25619 0/*allow-unknown*/, &maintenance_show_cmdlist);
156942c7 25620
cd4fb1b2
SM
25621 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25622 &dwarf_max_cache_age, _("\
25623Set the upper bound on the age of cached DWARF compilation units."), _("\
25624Show the upper bound on the age of cached DWARF compilation units."), _("\
25625A higher limit means that cached compilation units will be stored\n\
25626in memory longer, and more total memory will be used. Zero disables\n\
25627caching, which can slow down startup."),
25628 NULL,
25629 show_dwarf_max_cache_age,
25630 &set_dwarf_cmdlist,
25631 &show_dwarf_cmdlist);
156942c7 25632
cd4fb1b2
SM
25633 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25634 &dwarf_always_disassemble, _("\
25635Set whether `info address' always disassembles DWARF expressions."), _("\
25636Show whether `info address' always disassembles DWARF expressions."), _("\
25637When enabled, DWARF expressions are always printed in an assembly-like\n\
25638syntax. When disabled, expressions will be printed in a more\n\
25639conversational style, when possible."),
25640 NULL,
25641 show_dwarf_always_disassemble,
25642 &set_dwarf_cmdlist,
25643 &show_dwarf_cmdlist);
9291a0cd 25644
cd4fb1b2
SM
25645 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25646Set debugging of the DWARF reader."), _("\
25647Show debugging of the DWARF reader."), _("\
25648When enabled (non-zero), debugging messages are printed during DWARF\n\
25649reading and symtab expansion. A value of 1 (one) provides basic\n\
25650information. A value greater than 1 provides more verbose information."),
25651 NULL,
25652 NULL,
25653 &setdebuglist, &showdebuglist);
9291a0cd 25654
cd4fb1b2
SM
25655 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25656Set debugging of the DWARF DIE reader."), _("\
25657Show debugging of the DWARF DIE reader."), _("\
25658When enabled (non-zero), DIEs are dumped after they are read in.\n\
25659The value is the maximum depth to print."),
25660 NULL,
25661 NULL,
25662 &setdebuglist, &showdebuglist);
9291a0cd 25663
cd4fb1b2
SM
25664 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25665Set debugging of the dwarf line reader."), _("\
25666Show debugging of the dwarf line reader."), _("\
25667When enabled (non-zero), line number entries are dumped as they are read in.\n\
25668A value of 1 (one) provides basic information.\n\
25669A value greater than 1 provides more verbose information."),
25670 NULL,
25671 NULL,
25672 &setdebuglist, &showdebuglist);
437afbb8 25673
cd4fb1b2
SM
25674 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25675Set cross-checking of \"physname\" code against demangler."), _("\
25676Show cross-checking of \"physname\" code against demangler."), _("\
25677When enabled, GDB's internal \"physname\" code is checked against\n\
25678the demangler."),
25679 NULL, show_check_physname,
25680 &setdebuglist, &showdebuglist);
900e11f9 25681
e615022a
DE
25682 add_setshow_boolean_cmd ("use-deprecated-index-sections",
25683 no_class, &use_deprecated_index_sections, _("\
25684Set whether to use deprecated gdb_index sections."), _("\
25685Show whether to use deprecated gdb_index sections."), _("\
25686When enabled, deprecated .gdb_index sections are used anyway.\n\
25687Normally they are ignored either because of a missing feature or\n\
25688performance issue.\n\
25689Warning: This option must be enabled before gdb reads the file."),
25690 NULL,
25691 NULL,
25692 &setlist, &showlist);
25693
f1e6e072
TT
25694 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25695 &dwarf2_locexpr_funcs);
25696 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25697 &dwarf2_loclist_funcs);
25698
25699 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25700 &dwarf2_block_frame_base_locexpr_funcs);
25701 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25702 &dwarf2_block_frame_base_loclist_funcs);
c62446b1
PA
25703
25704#if GDB_SELF_TEST
25705 selftests::register_test ("dw2_expand_symtabs_matching",
25706 selftests::dw2_expand_symtabs_matching::run_test);
25707#endif
6502dd73 25708}
This page took 7.343507 seconds and 4 git commands to generate.