gdb: Remove use of VEC from dwarf2read.c
[deliverable/binutils-gdb.git] / gdb / dwarf2read.c
CommitLineData
c906108c 1/* DWARF 2 debugging format support for GDB.
917c78fc 2
42a4f53d 3 Copyright (C) 1994-2019 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"
4de283e4 32#include "dwarf2read.h"
d55e5aa6
TT
33#include "dwarf-index-cache.h"
34#include "dwarf-index-common.h"
4de283e4
TT
35#include "bfd.h"
36#include "elf-bfd.h"
37#include "symtab.h"
38#include "gdbtypes.h"
39#include "objfiles.h"
d55e5aa6 40#include "dwarf2.h"
4de283e4
TT
41#include "buildsym.h"
42#include "demangle.h"
43#include "gdb-demangle.h"
4de283e4
TT
44#include "filenames.h" /* for DOSish file names */
45#include "macrotab.h"
46#include "language.h"
47#include "complaints.h"
d55e5aa6
TT
48#include "dwarf2expr.h"
49#include "dwarf2loc.h"
4de283e4
TT
50#include "cp-support.h"
51#include "hashtab.h"
52#include "command.h"
d55e5aa6 53#include "gdbcmd.h"
4de283e4
TT
54#include "block.h"
55#include "addrmap.h"
56#include "typeprint.h"
57#include "psympriv.h"
268a13a5 58#include "gdbsupport/vec.h"
4de283e4 59#include "c-lang.h"
d55e5aa6 60#include "go-lang.h"
4de283e4
TT
61#include "valprint.h"
62#include "gdbcore.h" /* for gnutarget */
63#include "gdb/gdb-index.h"
4de283e4
TT
64#include "gdb_bfd.h"
65#include "f-lang.h"
66#include "source.h"
4de283e4 67#include "build-id.h"
d55e5aa6 68#include "namespace.h"
268a13a5
TT
69#include "gdbsupport/function-view.h"
70#include "gdbsupport/gdb_optional.h"
71#include "gdbsupport/underlying.h"
268a13a5 72#include "gdbsupport/hash_enum.h"
4de283e4 73#include "filename-seen-cache.h"
b32b108a 74#include "producer.h"
4de283e4 75#include <fcntl.h>
4de283e4 76#include <algorithm>
4de283e4 77#include <unordered_map>
268a13a5 78#include "gdbsupport/selftest.h"
c9317f21 79#include "rust-lang.h"
268a13a5 80#include "gdbsupport/pathstuff.h"
437afbb8 81
73be47f5
DE
82/* When == 1, print basic high level tracing messages.
83 When > 1, be more verbose.
b4f54984
DE
84 This is in contrast to the low level DIE reading of dwarf_die_debug. */
85static unsigned int dwarf_read_debug = 0;
45cfd468 86
d97bc12b 87/* When non-zero, dump DIEs after they are read in. */
b4f54984 88static unsigned int dwarf_die_debug = 0;
d97bc12b 89
27e0867f
DE
90/* When non-zero, dump line number entries as they are read in. */
91static unsigned int dwarf_line_debug = 0;
92
491144b5
CB
93/* When true, cross-check physname against demangler. */
94static bool check_physname = false;
900e11f9 95
491144b5
CB
96/* When true, do not reject deprecated .gdb_index sections. */
97static bool use_deprecated_index_sections = false;
481860b3 98
5bfd760d 99static const struct objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
6502dd73 100
f1e6e072
TT
101/* The "aclass" indices for various kinds of computed DWARF symbols. */
102
103static int dwarf2_locexpr_index;
104static int dwarf2_loclist_index;
105static int dwarf2_locexpr_block_index;
106static int dwarf2_loclist_block_index;
107
3f563c84
PA
108/* An index into a (C++) symbol name component in a symbol name as
109 recorded in the mapped_index's symbol table. For each C++ symbol
110 in the symbol table, we record one entry for the start of each
111 component in the symbol in a table of name components, and then
112 sort the table, in order to be able to binary search symbol names,
113 ignoring leading namespaces, both completion and regular look up.
114 For example, for symbol "A::B::C", we'll have an entry that points
115 to "A::B::C", another that points to "B::C", and another for "C".
116 Note that function symbols in GDB index have no parameter
117 information, just the function/method names. You can convert a
118 name_component to a "const char *" using the
119 'mapped_index::symbol_name_at(offset_type)' method. */
120
121struct name_component
122{
123 /* Offset in the symbol name where the component starts. Stored as
124 a (32-bit) offset instead of a pointer to save memory and improve
125 locality on 64-bit architectures. */
126 offset_type name_offset;
127
128 /* The symbol's index in the symbol and constant pool tables of a
129 mapped_index. */
130 offset_type idx;
131};
132
44ed8f3e
PA
133/* Base class containing bits shared by both .gdb_index and
134 .debug_name indexes. */
135
136struct mapped_index_base
137{
22ca247e
TT
138 mapped_index_base () = default;
139 DISABLE_COPY_AND_ASSIGN (mapped_index_base);
140
44ed8f3e
PA
141 /* The name_component table (a sorted vector). See name_component's
142 description above. */
143 std::vector<name_component> name_components;
144
145 /* How NAME_COMPONENTS is sorted. */
146 enum case_sensitivity name_components_casing;
147
148 /* Return the number of names in the symbol table. */
149 virtual size_t symbol_name_count () const = 0;
150
151 /* Get the name of the symbol at IDX in the symbol table. */
152 virtual const char *symbol_name_at (offset_type idx) const = 0;
153
154 /* Return whether the name at IDX in the symbol table should be
155 ignored. */
156 virtual bool symbol_name_slot_invalid (offset_type idx) const
157 {
158 return false;
159 }
160
161 /* Build the symbol name component sorted vector, if we haven't
162 yet. */
163 void build_name_components ();
164
165 /* Returns the lower (inclusive) and upper (exclusive) bounds of the
166 possible matches for LN_NO_PARAMS in the name component
167 vector. */
168 std::pair<std::vector<name_component>::const_iterator,
169 std::vector<name_component>::const_iterator>
3b00ef10
TT
170 find_name_components_bounds (const lookup_name_info &ln_no_params,
171 enum language lang) const;
44ed8f3e
PA
172
173 /* Prevent deleting/destroying via a base class pointer. */
174protected:
175 ~mapped_index_base() = default;
176};
177
9291a0cd
TT
178/* A description of the mapped index. The file format is described in
179 a comment by the code that writes the index. */
fc898b42 180struct mapped_index final : public mapped_index_base
9291a0cd 181{
f00a2de2
PA
182 /* A slot/bucket in the symbol table hash. */
183 struct symbol_table_slot
184 {
185 const offset_type name;
186 const offset_type vec;
187 };
188
559a7a62 189 /* Index data format version. */
3063847f 190 int version = 0;
559a7a62 191
f00a2de2
PA
192 /* The address table data. */
193 gdb::array_view<const gdb_byte> address_table;
b11b1f88 194
3876f04e 195 /* The symbol table, implemented as a hash table. */
f00a2de2 196 gdb::array_view<symbol_table_slot> symbol_table;
b11b1f88 197
9291a0cd 198 /* A pointer to the constant pool. */
3063847f 199 const char *constant_pool = nullptr;
3f563c84 200
44ed8f3e
PA
201 bool symbol_name_slot_invalid (offset_type idx) const override
202 {
203 const auto &bucket = this->symbol_table[idx];
9ab08412 204 return bucket.name == 0 && bucket.vec == 0;
44ed8f3e 205 }
5c58de74 206
3f563c84
PA
207 /* Convenience method to get at the name of the symbol at IDX in the
208 symbol table. */
44ed8f3e 209 const char *symbol_name_at (offset_type idx) const override
f00a2de2 210 { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
5c58de74 211
44ed8f3e
PA
212 size_t symbol_name_count () const override
213 { return this->symbol_table.size (); }
9291a0cd
TT
214};
215
927aa2e7
JK
216/* A description of the mapped .debug_names.
217 Uninitialized map has CU_COUNT 0. */
fc898b42 218struct mapped_debug_names final : public mapped_index_base
927aa2e7 219{
ed2dc618
SM
220 mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
221 : dwarf2_per_objfile (dwarf2_per_objfile_)
222 {}
223
224 struct dwarf2_per_objfile *dwarf2_per_objfile;
927aa2e7
JK
225 bfd_endian dwarf5_byte_order;
226 bool dwarf5_is_dwarf64;
227 bool augmentation_is_gdb;
228 uint8_t offset_size;
229 uint32_t cu_count = 0;
230 uint32_t tu_count, bucket_count, name_count;
231 const gdb_byte *cu_table_reordered, *tu_table_reordered;
232 const uint32_t *bucket_table_reordered, *hash_table_reordered;
233 const gdb_byte *name_table_string_offs_reordered;
234 const gdb_byte *name_table_entry_offs_reordered;
235 const gdb_byte *entry_pool;
236
237 struct index_val
238 {
239 ULONGEST dwarf_tag;
240 struct attr
241 {
242 /* Attribute name DW_IDX_*. */
243 ULONGEST dw_idx;
244
245 /* Attribute form DW_FORM_*. */
246 ULONGEST form;
247
248 /* Value if FORM is DW_FORM_implicit_const. */
249 LONGEST implicit_const;
250 };
251 std::vector<attr> attr_vec;
252 };
253
254 std::unordered_map<ULONGEST, index_val> abbrev_map;
255
256 const char *namei_to_name (uint32_t namei) const;
44ed8f3e
PA
257
258 /* Implementation of the mapped_index_base virtual interface, for
259 the name_components cache. */
260
261 const char *symbol_name_at (offset_type idx) const override
262 { return namei_to_name (idx); }
263
264 size_t symbol_name_count () const override
265 { return this->name_count; }
927aa2e7
JK
266};
267
cd4fb1b2 268/* See dwarf2read.h. */
ed2dc618 269
cd4fb1b2 270dwarf2_per_objfile *
ed2dc618
SM
271get_dwarf2_per_objfile (struct objfile *objfile)
272{
5bfd760d 273 return dwarf2_objfile_data_key.get (objfile);
ed2dc618 274}
c906108c 275
251d32d9 276/* Default names of the debugging sections. */
c906108c 277
233a11ab
CS
278/* Note that if the debugging section has been compressed, it might
279 have a name like .zdebug_info. */
280
9cdd5dbd
DE
281static const struct dwarf2_debug_sections dwarf2_elf_names =
282{
251d32d9
TG
283 { ".debug_info", ".zdebug_info" },
284 { ".debug_abbrev", ".zdebug_abbrev" },
285 { ".debug_line", ".zdebug_line" },
286 { ".debug_loc", ".zdebug_loc" },
43988095 287 { ".debug_loclists", ".zdebug_loclists" },
251d32d9 288 { ".debug_macinfo", ".zdebug_macinfo" },
cf2c3c16 289 { ".debug_macro", ".zdebug_macro" },
251d32d9 290 { ".debug_str", ".zdebug_str" },
43988095 291 { ".debug_line_str", ".zdebug_line_str" },
251d32d9 292 { ".debug_ranges", ".zdebug_ranges" },
43988095 293 { ".debug_rnglists", ".zdebug_rnglists" },
251d32d9 294 { ".debug_types", ".zdebug_types" },
3019eac3 295 { ".debug_addr", ".zdebug_addr" },
251d32d9
TG
296 { ".debug_frame", ".zdebug_frame" },
297 { ".eh_frame", NULL },
24d3216f 298 { ".gdb_index", ".zgdb_index" },
927aa2e7
JK
299 { ".debug_names", ".zdebug_names" },
300 { ".debug_aranges", ".zdebug_aranges" },
24d3216f 301 23
251d32d9 302};
c906108c 303
80626a55 304/* List of DWO/DWP sections. */
3019eac3 305
80626a55 306static const struct dwop_section_names
3019eac3
DE
307{
308 struct dwarf2_section_names abbrev_dwo;
309 struct dwarf2_section_names info_dwo;
310 struct dwarf2_section_names line_dwo;
311 struct dwarf2_section_names loc_dwo;
43988095 312 struct dwarf2_section_names loclists_dwo;
09262596
DE
313 struct dwarf2_section_names macinfo_dwo;
314 struct dwarf2_section_names macro_dwo;
3019eac3
DE
315 struct dwarf2_section_names str_dwo;
316 struct dwarf2_section_names str_offsets_dwo;
317 struct dwarf2_section_names types_dwo;
80626a55
DE
318 struct dwarf2_section_names cu_index;
319 struct dwarf2_section_names tu_index;
3019eac3 320}
80626a55 321dwop_section_names =
3019eac3
DE
322{
323 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
324 { ".debug_info.dwo", ".zdebug_info.dwo" },
325 { ".debug_line.dwo", ".zdebug_line.dwo" },
326 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
43988095 327 { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
09262596
DE
328 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
329 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
3019eac3
DE
330 { ".debug_str.dwo", ".zdebug_str.dwo" },
331 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
332 { ".debug_types.dwo", ".zdebug_types.dwo" },
80626a55
DE
333 { ".debug_cu_index", ".zdebug_cu_index" },
334 { ".debug_tu_index", ".zdebug_tu_index" },
3019eac3
DE
335};
336
c906108c
SS
337/* local data types */
338
107d2387
AC
339/* The data in a compilation unit header, after target2host
340 translation, looks like this. */
c906108c 341struct comp_unit_head
a738430d 342{
c764a876 343 unsigned int length;
a738430d 344 short version;
a738430d
MK
345 unsigned char addr_size;
346 unsigned char signed_addr_p;
9c541725 347 sect_offset abbrev_sect_off;
57349743 348
a738430d
MK
349 /* Size of file offsets; either 4 or 8. */
350 unsigned int offset_size;
57349743 351
a738430d
MK
352 /* Size of the length field; either 4 or 12. */
353 unsigned int initial_length_size;
57349743 354
43988095
JK
355 enum dwarf_unit_type unit_type;
356
a738430d
MK
357 /* Offset to the first byte of this compilation unit header in the
358 .debug_info section, for resolving relative reference dies. */
9c541725 359 sect_offset sect_off;
57349743 360
d00adf39
DE
361 /* Offset to first die in this cu from the start of the cu.
362 This will be the first byte following the compilation unit header. */
9c541725 363 cu_offset first_die_cu_offset;
43988095 364
a084a2a6
AT
365
366 /* 64-bit signature of this unit. For type units, it denotes the signature of
367 the type (DW_UT_type in DWARF 4, additionally DW_UT_split_type in DWARF 5).
368 Also used in DWARF 5, to denote the dwo id when the unit type is
369 DW_UT_skeleton or DW_UT_split_compile. */
43988095
JK
370 ULONGEST signature;
371
372 /* For types, offset in the type's DIE of the type defined by this TU. */
9c541725 373 cu_offset type_cu_offset_in_tu;
a738430d 374};
c906108c 375
3da10d80
KS
376/* Type used for delaying computation of method physnames.
377 See comments for compute_delayed_physnames. */
378struct delayed_method_info
379{
380 /* The type to which the method is attached, i.e., its parent class. */
381 struct type *type;
382
383 /* The index of the method in the type's function fieldlists. */
384 int fnfield_index;
385
386 /* The index of the method in the fieldlist. */
387 int index;
388
389 /* The name of the DIE. */
390 const char *name;
391
392 /* The DIE associated with this method. */
393 struct die_info *die;
394};
395
e7c27a73
DJ
396/* Internal state when decoding a particular compilation unit. */
397struct dwarf2_cu
398{
fcd3b13d
SM
399 explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
400 ~dwarf2_cu ();
401
402 DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
403
c24bdb02
KS
404 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
405 Create the set of symtabs used by this TU, or if this TU is sharing
406 symtabs with another TU and the symtabs have already been created
407 then restore those symtabs in the line header.
408 We don't need the pc/line-number mapping for type units. */
409 void setup_type_unit_groups (struct die_info *die);
410
411 /* Start a symtab for DWARF. NAME, COMP_DIR, LOW_PC are passed to the
412 buildsym_compunit constructor. */
413 struct compunit_symtab *start_symtab (const char *name,
414 const char *comp_dir,
415 CORE_ADDR low_pc);
416
417 /* Reset the builder. */
418 void reset_builder () { m_builder.reset (); }
419
d00adf39 420 /* The header of the compilation unit. */
fcd3b13d 421 struct comp_unit_head header {};
e142c38c 422
d00adf39 423 /* Base address of this compilation unit. */
fcd3b13d 424 CORE_ADDR base_address = 0;
d00adf39
DE
425
426 /* Non-zero if base_address has been set. */
fcd3b13d 427 int base_known = 0;
d00adf39 428
e142c38c 429 /* The language we are debugging. */
fcd3b13d
SM
430 enum language language = language_unknown;
431 const struct language_defn *language_defn = nullptr;
e142c38c 432
fcd3b13d 433 const char *producer = nullptr;
b0f35d58 434
c24bdb02 435private:
804d2729
TT
436 /* The symtab builder for this CU. This is only non-NULL when full
437 symbols are being read. */
c24bdb02 438 std::unique_ptr<buildsym_compunit> m_builder;
804d2729 439
c24bdb02 440public:
e142c38c
DJ
441 /* The generic symbol table building routines have separate lists for
442 file scope symbols and all all other scopes (local scopes). So
443 we need to select the right one to pass to add_symbol_to_list().
444 We do it by keeping a pointer to the correct list in list_in_scope.
445
446 FIXME: The original dwarf code just treated the file scope as the
447 first local scope, and all other local scopes as nested local
448 scopes, and worked fine. Check to see if we really need to
449 distinguish these in buildsym.c. */
fcd3b13d 450 struct pending **list_in_scope = nullptr;
e142c38c 451
b64f50a1
JK
452 /* Hash table holding all the loaded partial DIEs
453 with partial_die->offset.SECT_OFF as hash. */
fcd3b13d 454 htab_t partial_dies = nullptr;
72bf9492
DJ
455
456 /* Storage for things with the same lifetime as this read-in compilation
457 unit, including partial DIEs. */
fcd3b13d 458 auto_obstack comp_unit_obstack;
72bf9492 459
ae038cb0
DJ
460 /* When multiple dwarf2_cu structures are living in memory, this field
461 chains them all together, so that they can be released efficiently.
462 We will probably also want a generation counter so that most-recently-used
463 compilation units are cached... */
fcd3b13d 464 struct dwarf2_per_cu_data *read_in_chain = nullptr;
ae038cb0 465
69d751e3 466 /* Backlink to our per_cu entry. */
ae038cb0
DJ
467 struct dwarf2_per_cu_data *per_cu;
468
469 /* How many compilation units ago was this CU last referenced? */
fcd3b13d 470 int last_used = 0;
ae038cb0 471
b64f50a1
JK
472 /* A hash table of DIE cu_offset for following references with
473 die_info->offset.sect_off as hash. */
fcd3b13d 474 htab_t die_hash = nullptr;
10b3939b
DJ
475
476 /* Full DIEs if read in. */
fcd3b13d 477 struct die_info *dies = nullptr;
10b3939b
DJ
478
479 /* A set of pointers to dwarf2_per_cu_data objects for compilation
480 units referenced by this one. Only set during full symbol processing;
481 partial symbol tables do not have dependencies. */
fcd3b13d 482 htab_t dependencies = nullptr;
10b3939b 483
cb1df416 484 /* Header data from the line table, during full symbol processing. */
fcd3b13d 485 struct line_header *line_header = nullptr;
4c8aa72d
PA
486 /* Non-NULL if LINE_HEADER is owned by this DWARF_CU. Otherwise,
487 it's owned by dwarf2_per_objfile::line_header_hash. If non-NULL,
488 this is the DW_TAG_compile_unit die for this CU. We'll hold on
489 to the line header as long as this DIE is being processed. See
490 process_die_scope. */
fcd3b13d 491 die_info *line_header_die_owner = nullptr;
cb1df416 492
3da10d80
KS
493 /* A list of methods which need to have physnames computed
494 after all type information has been read. */
c89b44cd 495 std::vector<delayed_method_info> method_list;
3da10d80 496
96408a79 497 /* To be copied to symtab->call_site_htab. */
fcd3b13d 498 htab_t call_site_htab = nullptr;
96408a79 499
034e5797
DE
500 /* Non-NULL if this CU came from a DWO file.
501 There is an invariant here that is important to remember:
502 Except for attributes copied from the top level DIE in the "main"
503 (or "stub") file in preparation for reading the DWO file
504 (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
505 Either there isn't a DWO file (in which case this is NULL and the point
506 is moot), or there is and either we're not going to read it (in which
507 case this is NULL) or there is and we are reading it (in which case this
508 is non-NULL). */
fcd3b13d 509 struct dwo_unit *dwo_unit = nullptr;
3019eac3
DE
510
511 /* The DW_AT_addr_base attribute if present, zero otherwise
512 (zero is a valid value though).
1dbab08b 513 Note this value comes from the Fission stub CU/TU's DIE. */
fcd3b13d 514 ULONGEST addr_base = 0;
3019eac3 515
2e3cf129
DE
516 /* The DW_AT_ranges_base attribute if present, zero otherwise
517 (zero is a valid value though).
1dbab08b 518 Note this value comes from the Fission stub CU/TU's DIE.
2e3cf129 519 Also note that the value is zero in the non-DWO case so this value can
ab435259
DE
520 be used without needing to know whether DWO files are in use or not.
521 N.B. This does not apply to DW_AT_ranges appearing in
522 DW_TAG_compile_unit dies. This is a bit of a wart, consider if ever
523 DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
524 DW_AT_ranges_base *would* have to be applied, and we'd have to care
525 whether the DW_AT_ranges attribute came from the skeleton or DWO. */
fcd3b13d 526 ULONGEST ranges_base = 0;
2e3cf129 527
c9317f21
TT
528 /* When reading debug info generated by older versions of rustc, we
529 have to rewrite some union types to be struct types with a
530 variant part. This rewriting must be done after the CU is fully
531 read in, because otherwise at the point of rewriting some struct
532 type might not have been fully processed. So, we keep a list of
533 all such types here and process them after expansion. */
534 std::vector<struct type *> rust_unions;
535
ae038cb0 536 /* Mark used when releasing cached dies. */
9068261f 537 bool mark : 1;
ae038cb0 538
8be455d7
JK
539 /* This CU references .debug_loc. See the symtab->locations_valid field.
540 This test is imperfect as there may exist optimized debug code not using
541 any location list and still facing inlining issues if handled as
542 unoptimized code. For a future better test see GCC PR other/32998. */
9068261f 543 bool has_loclist : 1;
ba919b58 544
9068261f 545 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is true
1b80a9fa
JK
546 if all the producer_is_* fields are valid. This information is cached
547 because profiling CU expansion showed excessive time spent in
548 producer_is_gxx_lt_4_6. */
9068261f
AB
549 bool checked_producer : 1;
550 bool producer_is_gxx_lt_4_6 : 1;
551 bool producer_is_gcc_lt_4_3 : 1;
eb77c9df 552 bool producer_is_icc : 1;
9068261f 553 bool producer_is_icc_lt_14 : 1;
c258c396 554 bool producer_is_codewarrior : 1;
4d4ec4e5 555
9068261f 556 /* When true, the file that we're processing is known to have
4d4ec4e5
TT
557 debugging info for C++ namespaces. GCC 3.3.x did not produce
558 this information, but later versions do. */
559
9068261f 560 bool processing_has_namespace_info : 1;
d590ff25
YQ
561
562 struct partial_die_info *find_partial_die (sect_offset sect_off);
c24bdb02
KS
563
564 /* If this CU was inherited by another CU (via specification,
565 abstract_origin, etc), this is the ancestor CU. */
566 dwarf2_cu *ancestor;
567
568 /* Get the buildsym_compunit for this CU. */
569 buildsym_compunit *get_builder ()
570 {
571 /* If this CU has a builder associated with it, use that. */
572 if (m_builder != nullptr)
573 return m_builder.get ();
574
575 /* Otherwise, search ancestors for a valid builder. */
576 if (ancestor != nullptr)
577 return ancestor->get_builder ();
578
579 return nullptr;
580 }
e7c27a73
DJ
581};
582
094b34ac
DE
583/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
584 This includes type_unit_group and quick_file_names. */
585
586struct stmt_list_hash
587{
588 /* The DWO unit this table is from or NULL if there is none. */
589 struct dwo_unit *dwo_unit;
590
591 /* Offset in .debug_line or .debug_line.dwo. */
9c541725 592 sect_offset line_sect_off;
094b34ac
DE
593};
594
f4dc4d17
DE
595/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
596 an object of this type. */
597
598struct type_unit_group
599{
0186c6a7 600 /* dwarf2read.c's main "handle" on a TU symtab.
f4dc4d17
DE
601 To simplify things we create an artificial CU that "includes" all the
602 type units using this stmt_list so that the rest of the code still has
603 a "per_cu" handle on the symtab.
604 This PER_CU is recognized by having no section. */
8a0459fd 605#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
094b34ac
DE
606 struct dwarf2_per_cu_data per_cu;
607
0186c6a7
DE
608 /* The TUs that share this DW_AT_stmt_list entry.
609 This is added to while parsing type units to build partial symtabs,
610 and is deleted afterwards and not used again. */
a8b3b8e9 611 std::vector<signatured_type *> *tus;
f4dc4d17 612
43f3e411 613 /* The compunit symtab.
094b34ac 614 Type units in a group needn't all be defined in the same source file,
43f3e411
DE
615 so we create an essentially anonymous symtab as the compunit symtab. */
616 struct compunit_symtab *compunit_symtab;
f4dc4d17 617
094b34ac
DE
618 /* The data used to construct the hash key. */
619 struct stmt_list_hash hash;
f4dc4d17
DE
620
621 /* The number of symtabs from the line header.
622 The value here must match line_header.num_file_names. */
623 unsigned int num_symtabs;
624
625 /* The symbol tables for this TU (obtained from the files listed in
626 DW_AT_stmt_list).
627 WARNING: The order of entries here must match the order of entries
628 in the line header. After the first TU using this type_unit_group, the
629 line header for the subsequent TUs is recreated from this. This is done
630 because we need to use the same symtabs for each TU using the same
631 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
632 there's no guarantee the line header doesn't have duplicate entries. */
633 struct symtab **symtabs;
634};
635
73869dc2 636/* These sections are what may appear in a (real or virtual) DWO file. */
3019eac3
DE
637
638struct dwo_sections
639{
640 struct dwarf2_section_info abbrev;
3019eac3
DE
641 struct dwarf2_section_info line;
642 struct dwarf2_section_info loc;
43988095 643 struct dwarf2_section_info loclists;
09262596
DE
644 struct dwarf2_section_info macinfo;
645 struct dwarf2_section_info macro;
3019eac3
DE
646 struct dwarf2_section_info str;
647 struct dwarf2_section_info str_offsets;
80626a55
DE
648 /* In the case of a virtual DWO file, these two are unused. */
649 struct dwarf2_section_info info;
fd5866f6 650 std::vector<dwarf2_section_info> types;
3019eac3
DE
651};
652
c88ee1f0 653/* CUs/TUs in DWP/DWO files. */
3019eac3
DE
654
655struct dwo_unit
656{
657 /* Backlink to the containing struct dwo_file. */
658 struct dwo_file *dwo_file;
659
660 /* The "id" that distinguishes this CU/TU.
661 .debug_info calls this "dwo_id", .debug_types calls this "signature".
662 Since signatures came first, we stick with it for consistency. */
663 ULONGEST signature;
664
665 /* The section this CU/TU lives in, in the DWO file. */
8a0459fd 666 struct dwarf2_section_info *section;
3019eac3 667
9c541725
PA
668 /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section. */
669 sect_offset sect_off;
3019eac3
DE
670 unsigned int length;
671
672 /* For types, offset in the type's DIE of the type defined by this TU. */
673 cu_offset type_offset_in_tu;
674};
675
73869dc2
DE
676/* include/dwarf2.h defines the DWP section codes.
677 It defines a max value but it doesn't define a min value, which we
678 use for error checking, so provide one. */
679
680enum dwp_v2_section_ids
681{
682 DW_SECT_MIN = 1
683};
684
80626a55 685/* Data for one DWO file.
57d63ce2
DE
686
687 This includes virtual DWO files (a virtual DWO file is a DWO file as it
688 appears in a DWP file). DWP files don't really have DWO files per se -
689 comdat folding of types "loses" the DWO file they came from, and from
690 a high level view DWP files appear to contain a mass of random types.
691 However, to maintain consistency with the non-DWP case we pretend DWP
692 files contain virtual DWO files, and we assign each TU with one virtual
693 DWO file (generally based on the line and abbrev section offsets -
694 a heuristic that seems to work in practice). */
3019eac3
DE
695
696struct dwo_file
697{
51ac9db5
SM
698 dwo_file () = default;
699 DISABLE_COPY_AND_ASSIGN (dwo_file);
700
0ac5b59e 701 /* The DW_AT_GNU_dwo_name attribute.
80626a55
DE
702 For virtual DWO files the name is constructed from the section offsets
703 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
704 from related CU+TUs. */
51ac9db5 705 const char *dwo_name = nullptr;
0ac5b59e
DE
706
707 /* The DW_AT_comp_dir attribute. */
51ac9db5 708 const char *comp_dir = nullptr;
3019eac3 709
80626a55
DE
710 /* The bfd, when the file is open. Otherwise this is NULL.
711 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
fb1eb2f9 712 gdb_bfd_ref_ptr dbfd;
3019eac3 713
73869dc2
DE
714 /* The sections that make up this DWO file.
715 Remember that for virtual DWO files in DWP V2, these are virtual
716 sections (for lack of a better name). */
51ac9db5 717 struct dwo_sections sections {};
3019eac3 718
33c5cd75
DB
719 /* The CUs in the file.
720 Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
721 an extension to handle LLVM's Link Time Optimization output (where
722 multiple source files may be compiled into a single object/dwo pair). */
51ac9db5 723 htab_t cus {};
3019eac3
DE
724
725 /* Table of TUs in the file.
726 Each element is a struct dwo_unit. */
51ac9db5 727 htab_t tus {};
3019eac3
DE
728};
729
80626a55
DE
730/* These sections are what may appear in a DWP file. */
731
732struct dwp_sections
733{
73869dc2 734 /* These are used by both DWP version 1 and 2. */
80626a55
DE
735 struct dwarf2_section_info str;
736 struct dwarf2_section_info cu_index;
737 struct dwarf2_section_info tu_index;
73869dc2
DE
738
739 /* These are only used by DWP version 2 files.
740 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
741 sections are referenced by section number, and are not recorded here.
742 In DWP version 2 there is at most one copy of all these sections, each
743 section being (effectively) comprised of the concatenation of all of the
744 individual sections that exist in the version 1 format.
745 To keep the code simple we treat each of these concatenated pieces as a
746 section itself (a virtual section?). */
747 struct dwarf2_section_info abbrev;
748 struct dwarf2_section_info info;
749 struct dwarf2_section_info line;
750 struct dwarf2_section_info loc;
751 struct dwarf2_section_info macinfo;
752 struct dwarf2_section_info macro;
753 struct dwarf2_section_info str_offsets;
754 struct dwarf2_section_info types;
80626a55
DE
755};
756
73869dc2
DE
757/* These sections are what may appear in a virtual DWO file in DWP version 1.
758 A virtual DWO file is a DWO file as it appears in a DWP file. */
80626a55 759
73869dc2 760struct virtual_v1_dwo_sections
80626a55
DE
761{
762 struct dwarf2_section_info abbrev;
763 struct dwarf2_section_info line;
764 struct dwarf2_section_info loc;
765 struct dwarf2_section_info macinfo;
766 struct dwarf2_section_info macro;
767 struct dwarf2_section_info str_offsets;
768 /* Each DWP hash table entry records one CU or one TU.
8a0459fd 769 That is recorded here, and copied to dwo_unit.section. */
80626a55
DE
770 struct dwarf2_section_info info_or_types;
771};
772
73869dc2
DE
773/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
774 In version 2, the sections of the DWO files are concatenated together
775 and stored in one section of that name. Thus each ELF section contains
776 several "virtual" sections. */
777
778struct virtual_v2_dwo_sections
779{
780 bfd_size_type abbrev_offset;
781 bfd_size_type abbrev_size;
782
783 bfd_size_type line_offset;
784 bfd_size_type line_size;
785
786 bfd_size_type loc_offset;
787 bfd_size_type loc_size;
788
789 bfd_size_type macinfo_offset;
790 bfd_size_type macinfo_size;
791
792 bfd_size_type macro_offset;
793 bfd_size_type macro_size;
794
795 bfd_size_type str_offsets_offset;
796 bfd_size_type str_offsets_size;
797
798 /* Each DWP hash table entry records one CU or one TU.
799 That is recorded here, and copied to dwo_unit.section. */
800 bfd_size_type info_or_types_offset;
801 bfd_size_type info_or_types_size;
802};
803
80626a55
DE
804/* Contents of DWP hash tables. */
805
806struct dwp_hash_table
807{
73869dc2 808 uint32_t version, nr_columns;
80626a55 809 uint32_t nr_units, nr_slots;
73869dc2
DE
810 const gdb_byte *hash_table, *unit_table;
811 union
812 {
813 struct
814 {
815 const gdb_byte *indices;
816 } v1;
817 struct
818 {
819 /* This is indexed by column number and gives the id of the section
820 in that column. */
821#define MAX_NR_V2_DWO_SECTIONS \
822 (1 /* .debug_info or .debug_types */ \
823 + 1 /* .debug_abbrev */ \
824 + 1 /* .debug_line */ \
825 + 1 /* .debug_loc */ \
826 + 1 /* .debug_str_offsets */ \
827 + 1 /* .debug_macro or .debug_macinfo */)
828 int section_ids[MAX_NR_V2_DWO_SECTIONS];
829 const gdb_byte *offsets;
830 const gdb_byte *sizes;
831 } v2;
832 } section_pool;
80626a55
DE
833};
834
835/* Data for one DWP file. */
836
837struct dwp_file
838{
400174b1
TT
839 dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
840 : name (name_),
841 dbfd (std::move (abfd))
842 {
843 }
844
80626a55
DE
845 /* Name of the file. */
846 const char *name;
847
73869dc2 848 /* File format version. */
400174b1 849 int version = 0;
73869dc2 850
93417882 851 /* The bfd. */
400174b1 852 gdb_bfd_ref_ptr dbfd;
80626a55
DE
853
854 /* Section info for this file. */
400174b1 855 struct dwp_sections sections {};
80626a55 856
57d63ce2 857 /* Table of CUs in the file. */
400174b1 858 const struct dwp_hash_table *cus = nullptr;
80626a55
DE
859
860 /* Table of TUs in the file. */
400174b1 861 const struct dwp_hash_table *tus = nullptr;
80626a55 862
19ac8c2e 863 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
400174b1
TT
864 htab_t loaded_cus {};
865 htab_t loaded_tus {};
80626a55 866
73869dc2
DE
867 /* Table to map ELF section numbers to their sections.
868 This is only needed for the DWP V1 file format. */
400174b1
TT
869 unsigned int num_sections = 0;
870 asection **elf_sections = nullptr;
80626a55
DE
871};
872
0963b4bd
MS
873/* Struct used to pass misc. parameters to read_die_and_children, et
874 al. which are used for both .debug_info and .debug_types dies.
875 All parameters here are unchanging for the life of the call. This
dee91e82 876 struct exists to abstract away the constant parameters of die reading. */
93311388
DE
877
878struct die_reader_specs
879{
a32a8923 880 /* The bfd of die_section. */
93311388
DE
881 bfd* abfd;
882
883 /* The CU of the DIE we are parsing. */
884 struct dwarf2_cu *cu;
885
80626a55 886 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
3019eac3
DE
887 struct dwo_file *dwo_file;
888
dee91e82 889 /* The section the die comes from.
3019eac3 890 This is either .debug_info or .debug_types, or the .dwo variants. */
dee91e82
DE
891 struct dwarf2_section_info *die_section;
892
893 /* die_section->buffer. */
d521ce57 894 const gdb_byte *buffer;
f664829e
DE
895
896 /* The end of the buffer. */
897 const gdb_byte *buffer_end;
a2ce51a0
DE
898
899 /* The value of the DW_AT_comp_dir attribute. */
900 const char *comp_dir;
685af9cd
TT
901
902 /* The abbreviation table to use when reading the DIEs. */
903 struct abbrev_table *abbrev_table;
93311388
DE
904};
905
fd820528 906/* Type of function passed to init_cutu_and_read_dies, et.al. */
dee91e82 907typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
d521ce57 908 const gdb_byte *info_ptr,
dee91e82
DE
909 struct die_info *comp_unit_die,
910 int has_children,
911 void *data);
912
ecfb656c
PA
913/* A 1-based directory index. This is a strong typedef to prevent
914 accidentally using a directory index as a 0-based index into an
915 array/vector. */
916enum class dir_index : unsigned int {};
917
918/* Likewise, a 1-based file name index. */
919enum class file_name_index : unsigned int {};
920
52059ffd
TT
921struct file_entry
922{
fff8551c
PA
923 file_entry () = default;
924
ecfb656c 925 file_entry (const char *name_, dir_index d_index_,
fff8551c
PA
926 unsigned int mod_time_, unsigned int length_)
927 : name (name_),
ecfb656c 928 d_index (d_index_),
fff8551c
PA
929 mod_time (mod_time_),
930 length (length_)
931 {}
932
ecfb656c
PA
933 /* Return the include directory at D_INDEX stored in LH. Returns
934 NULL if D_INDEX is out of bounds. */
8c43009f
PA
935 const char *include_dir (const line_header *lh) const;
936
fff8551c
PA
937 /* The file name. Note this is an observing pointer. The memory is
938 owned by debug_line_buffer. */
939 const char *name {};
940
8c43009f 941 /* The directory index (1-based). */
ecfb656c 942 dir_index d_index {};
fff8551c
PA
943
944 unsigned int mod_time {};
945
946 unsigned int length {};
947
948 /* True if referenced by the Line Number Program. */
949 bool included_p {};
950
83769d0b 951 /* The associated symbol table, if any. */
fff8551c 952 struct symtab *symtab {};
52059ffd
TT
953};
954
debd256d
JB
955/* The line number information for a compilation unit (found in the
956 .debug_line section) begins with a "statement program header",
957 which contains the following information. */
958struct line_header
959{
fff8551c
PA
960 line_header ()
961 : offset_in_dwz {}
962 {}
963
964 /* Add an entry to the include directory table. */
965 void add_include_dir (const char *include_dir);
966
967 /* Add an entry to the file name table. */
ecfb656c 968 void add_file_name (const char *name, dir_index d_index,
fff8551c
PA
969 unsigned int mod_time, unsigned int length);
970
ecfb656c 971 /* Return the include dir at INDEX (1-based). Returns NULL if INDEX
8c43009f 972 is out of bounds. */
ecfb656c 973 const char *include_dir_at (dir_index index) const
8c43009f 974 {
ecfb656c
PA
975 /* Convert directory index number (1-based) to vector index
976 (0-based). */
977 size_t vec_index = to_underlying (index) - 1;
978
979 if (vec_index >= include_dirs.size ())
8c43009f 980 return NULL;
ecfb656c 981 return include_dirs[vec_index];
8c43009f
PA
982 }
983
ecfb656c 984 /* Return the file name at INDEX (1-based). Returns NULL if INDEX
8c43009f 985 is out of bounds. */
ecfb656c 986 file_entry *file_name_at (file_name_index index)
8c43009f 987 {
ecfb656c
PA
988 /* Convert file name index number (1-based) to vector index
989 (0-based). */
990 size_t vec_index = to_underlying (index) - 1;
991
992 if (vec_index >= file_names.size ())
fff8551c 993 return NULL;
ecfb656c 994 return &file_names[vec_index];
fff8551c
PA
995 }
996
527f3840 997 /* Offset of line number information in .debug_line section. */
9c541725 998 sect_offset sect_off {};
527f3840
JK
999
1000 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
fff8551c
PA
1001 unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class. */
1002
1003 unsigned int total_length {};
1004 unsigned short version {};
1005 unsigned int header_length {};
1006 unsigned char minimum_instruction_length {};
1007 unsigned char maximum_ops_per_instruction {};
1008 unsigned char default_is_stmt {};
1009 int line_base {};
1010 unsigned char line_range {};
1011 unsigned char opcode_base {};
debd256d
JB
1012
1013 /* standard_opcode_lengths[i] is the number of operands for the
1014 standard opcode whose value is i. This means that
1015 standard_opcode_lengths[0] is unused, and the last meaningful
1016 element is standard_opcode_lengths[opcode_base - 1]. */
fff8551c 1017 std::unique_ptr<unsigned char[]> standard_opcode_lengths;
debd256d 1018
fff8551c
PA
1019 /* The include_directories table. Note these are observing
1020 pointers. The memory is owned by debug_line_buffer. */
1021 std::vector<const char *> include_dirs;
debd256d 1022
fff8551c
PA
1023 /* The file_names table. */
1024 std::vector<file_entry> file_names;
debd256d
JB
1025
1026 /* The start and end of the statement program following this
6502dd73 1027 header. These point into dwarf2_per_objfile->line_buffer. */
fff8551c 1028 const gdb_byte *statement_program_start {}, *statement_program_end {};
debd256d 1029};
c906108c 1030
fff8551c
PA
1031typedef std::unique_ptr<line_header> line_header_up;
1032
8c43009f
PA
1033const char *
1034file_entry::include_dir (const line_header *lh) const
1035{
ecfb656c 1036 return lh->include_dir_at (d_index);
8c43009f
PA
1037}
1038
c906108c 1039/* When we construct a partial symbol table entry we only
0963b4bd 1040 need this much information. */
6f06d47b 1041struct partial_die_info : public allocate_on_obstack
c906108c 1042 {
6f06d47b
YQ
1043 partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1044
1045 /* Disable assign but still keep copy ctor, which is needed
1046 load_partial_dies. */
1047 partial_die_info& operator=(const partial_die_info& rhs) = delete;
1048
52356b79
YQ
1049 /* Adjust the partial die before generating a symbol for it. This
1050 function may set the is_external flag or change the DIE's
1051 name. */
1052 void fixup (struct dwarf2_cu *cu);
1053
48fbe735
YQ
1054 /* Read a minimal amount of information into the minimal die
1055 structure. */
1056 const gdb_byte *read (const struct die_reader_specs *reader,
1057 const struct abbrev_info &abbrev,
1058 const gdb_byte *info_ptr);
1059
72bf9492 1060 /* Offset of this DIE. */
6f06d47b 1061 const sect_offset sect_off;
72bf9492
DJ
1062
1063 /* DWARF-2 tag for this DIE. */
6f06d47b 1064 const ENUM_BITFIELD(dwarf_tag) tag : 16;
72bf9492 1065
72bf9492 1066 /* Assorted flags describing the data found in this DIE. */
6f06d47b
YQ
1067 const unsigned int has_children : 1;
1068
72bf9492
DJ
1069 unsigned int is_external : 1;
1070 unsigned int is_declaration : 1;
1071 unsigned int has_type : 1;
1072 unsigned int has_specification : 1;
1073 unsigned int has_pc_info : 1;
481860b3 1074 unsigned int may_be_inlined : 1;
72bf9492 1075
0c1b455e
TT
1076 /* This DIE has been marked DW_AT_main_subprogram. */
1077 unsigned int main_subprogram : 1;
1078
72bf9492
DJ
1079 /* Flag set if the SCOPE field of this structure has been
1080 computed. */
1081 unsigned int scope_set : 1;
1082
fa4028e9
JB
1083 /* Flag set if the DIE has a byte_size attribute. */
1084 unsigned int has_byte_size : 1;
1085
ff908ebf
AW
1086 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1087 unsigned int has_const_value : 1;
1088
98bfdba5
PA
1089 /* Flag set if any of the DIE's children are template arguments. */
1090 unsigned int has_template_arguments : 1;
1091
52356b79 1092 /* Flag set if fixup has been called on this die. */
abc72ce4
DE
1093 unsigned int fixup_called : 1;
1094
36586728
TT
1095 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1096 unsigned int is_dwz : 1;
1097
1098 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1099 unsigned int spec_is_dwz : 1;
1100
72bf9492 1101 /* The name of this DIE. Normally the value of DW_AT_name, but
94af9270 1102 sometimes a default name for unnamed DIEs. */
6f06d47b 1103 const char *name = nullptr;
72bf9492 1104
abc72ce4 1105 /* The linkage name, if present. */
6f06d47b 1106 const char *linkage_name = nullptr;
abc72ce4 1107
72bf9492
DJ
1108 /* The scope to prepend to our children. This is generally
1109 allocated on the comp_unit_obstack, so will disappear
1110 when this compilation unit leaves the cache. */
6f06d47b 1111 const char *scope = nullptr;
72bf9492 1112
95554aad
TT
1113 /* Some data associated with the partial DIE. The tag determines
1114 which field is live. */
1115 union
1116 {
1117 /* The location description associated with this DIE, if any. */
1118 struct dwarf_block *locdesc;
1119 /* The offset of an import, for DW_TAG_imported_unit. */
9c541725 1120 sect_offset sect_off;
6f06d47b 1121 } d {};
72bf9492
DJ
1122
1123 /* If HAS_PC_INFO, the PC range associated with this DIE. */
6f06d47b
YQ
1124 CORE_ADDR lowpc = 0;
1125 CORE_ADDR highpc = 0;
72bf9492 1126
93311388 1127 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
72bf9492 1128 DW_AT_sibling, if any. */
48fbe735
YQ
1129 /* NOTE: This member isn't strictly necessary, partial_die_info::read
1130 could return DW_AT_sibling values to its caller load_partial_dies. */
6f06d47b 1131 const gdb_byte *sibling = nullptr;
72bf9492
DJ
1132
1133 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1134 DW_AT_specification (or DW_AT_abstract_origin or
1135 DW_AT_extension). */
6f06d47b 1136 sect_offset spec_offset {};
72bf9492
DJ
1137
1138 /* Pointers to this DIE's parent, first child, and next sibling,
1139 if any. */
6f06d47b
YQ
1140 struct partial_die_info *die_parent = nullptr;
1141 struct partial_die_info *die_child = nullptr;
1142 struct partial_die_info *die_sibling = nullptr;
1143
1144 friend struct partial_die_info *
1145 dwarf2_cu::find_partial_die (sect_offset sect_off);
1146
1147 private:
1148 /* Only need to do look up in dwarf2_cu::find_partial_die. */
1149 partial_die_info (sect_offset sect_off)
1150 : partial_die_info (sect_off, DW_TAG_padding, 0)
1151 {
1152 }
1153
1154 partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1155 int has_children_)
1156 : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1157 {
1158 is_external = 0;
1159 is_declaration = 0;
1160 has_type = 0;
1161 has_specification = 0;
1162 has_pc_info = 0;
1163 may_be_inlined = 0;
1164 main_subprogram = 0;
1165 scope_set = 0;
1166 has_byte_size = 0;
1167 has_const_value = 0;
1168 has_template_arguments = 0;
1169 fixup_called = 0;
1170 is_dwz = 0;
1171 spec_is_dwz = 0;
1172 }
c906108c
SS
1173 };
1174
0963b4bd 1175/* This data structure holds the information of an abbrev. */
c906108c
SS
1176struct abbrev_info
1177 {
1178 unsigned int number; /* number identifying abbrev */
1179 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
1180 unsigned short has_children; /* boolean */
1181 unsigned short num_attrs; /* number of attributes */
c906108c
SS
1182 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1183 struct abbrev_info *next; /* next in chain */
1184 };
1185
1186struct attr_abbrev
1187 {
9d25dd43
DE
1188 ENUM_BITFIELD(dwarf_attribute) name : 16;
1189 ENUM_BITFIELD(dwarf_form) form : 16;
43988095
JK
1190
1191 /* It is valid only if FORM is DW_FORM_implicit_const. */
1192 LONGEST implicit_const;
c906108c
SS
1193 };
1194
433df2d4
DE
1195/* Size of abbrev_table.abbrev_hash_table. */
1196#define ABBREV_HASH_SIZE 121
1197
1198/* Top level data structure to contain an abbreviation table. */
1199
1200struct abbrev_table
1201{
685af9cd
TT
1202 explicit abbrev_table (sect_offset off)
1203 : sect_off (off)
1204 {
4a17f768 1205 m_abbrevs =
685af9cd 1206 XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
4a17f768 1207 memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
685af9cd
TT
1208 }
1209
1210 DISABLE_COPY_AND_ASSIGN (abbrev_table);
1211
1212 /* Allocate space for a struct abbrev_info object in
1213 ABBREV_TABLE. */
1214 struct abbrev_info *alloc_abbrev ();
1215
1216 /* Add an abbreviation to the table. */
1217 void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1218
1219 /* Look up an abbrev in the table.
1220 Returns NULL if the abbrev is not found. */
1221
1222 struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1223
1224
f4dc4d17
DE
1225 /* Where the abbrev table came from.
1226 This is used as a sanity check when the table is used. */
685af9cd 1227 const sect_offset sect_off;
433df2d4
DE
1228
1229 /* Storage for the abbrev table. */
685af9cd 1230 auto_obstack abbrev_obstack;
433df2d4 1231
4a17f768
YQ
1232private:
1233
433df2d4
DE
1234 /* Hash table of abbrevs.
1235 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1236 It could be statically allocated, but the previous code didn't so we
1237 don't either. */
4a17f768 1238 struct abbrev_info **m_abbrevs;
433df2d4
DE
1239};
1240
685af9cd
TT
1241typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1242
0963b4bd 1243/* Attributes have a name and a value. */
b60c80d6
DJ
1244struct attribute
1245 {
9d25dd43 1246 ENUM_BITFIELD(dwarf_attribute) name : 16;
8285870a
JK
1247 ENUM_BITFIELD(dwarf_form) form : 15;
1248
1249 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1250 field should be in u.str (existing only for DW_STRING) but it is kept
1251 here for better struct attribute alignment. */
1252 unsigned int string_is_canonical : 1;
1253
b60c80d6
DJ
1254 union
1255 {
15d034d0 1256 const char *str;
b60c80d6 1257 struct dwarf_block *blk;
43bbcdc2
PH
1258 ULONGEST unsnd;
1259 LONGEST snd;
b60c80d6 1260 CORE_ADDR addr;
ac9ec31b 1261 ULONGEST signature;
b60c80d6
DJ
1262 }
1263 u;
1264 };
1265
0963b4bd 1266/* This data structure holds a complete die structure. */
c906108c
SS
1267struct die_info
1268 {
76815b17
DE
1269 /* DWARF-2 tag for this DIE. */
1270 ENUM_BITFIELD(dwarf_tag) tag : 16;
1271
1272 /* Number of attributes */
98bfdba5
PA
1273 unsigned char num_attrs;
1274
1275 /* True if we're presently building the full type name for the
1276 type derived from this DIE. */
1277 unsigned char building_fullname : 1;
76815b17 1278
adde2bff
DE
1279 /* True if this die is in process. PR 16581. */
1280 unsigned char in_process : 1;
1281
76815b17
DE
1282 /* Abbrev number */
1283 unsigned int abbrev;
1284
93311388 1285 /* Offset in .debug_info or .debug_types section. */
9c541725 1286 sect_offset sect_off;
78ba4af6
JB
1287
1288 /* The dies in a compilation unit form an n-ary tree. PARENT
1289 points to this die's parent; CHILD points to the first child of
1290 this node; and all the children of a given node are chained
4950bc1c 1291 together via their SIBLING fields. */
639d11d3
DC
1292 struct die_info *child; /* Its first child, if any. */
1293 struct die_info *sibling; /* Its next sibling, if any. */
1294 struct die_info *parent; /* Its parent, if any. */
c906108c 1295
b60c80d6
DJ
1296 /* An array of attributes, with NUM_ATTRS elements. There may be
1297 zero, but it's not common and zero-sized arrays are not
1298 sufficiently portable C. */
1299 struct attribute attrs[1];
c906108c
SS
1300 };
1301
0963b4bd 1302/* Get at parts of an attribute structure. */
c906108c
SS
1303
1304#define DW_STRING(attr) ((attr)->u.str)
8285870a 1305#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
c906108c
SS
1306#define DW_UNSND(attr) ((attr)->u.unsnd)
1307#define DW_BLOCK(attr) ((attr)->u.blk)
1308#define DW_SND(attr) ((attr)->u.snd)
1309#define DW_ADDR(attr) ((attr)->u.addr)
ac9ec31b 1310#define DW_SIGNATURE(attr) ((attr)->u.signature)
c906108c 1311
0963b4bd 1312/* Blocks are a bunch of untyped bytes. */
c906108c
SS
1313struct dwarf_block
1314 {
56eb65bd 1315 size_t size;
1d6edc3c
JK
1316
1317 /* Valid only if SIZE is not zero. */
d521ce57 1318 const gdb_byte *data;
c906108c
SS
1319 };
1320
c906108c
SS
1321#ifndef ATTR_ALLOC_CHUNK
1322#define ATTR_ALLOC_CHUNK 4
1323#endif
1324
c906108c
SS
1325/* Allocate fields for structs, unions and enums in this size. */
1326#ifndef DW_FIELD_ALLOC_CHUNK
1327#define DW_FIELD_ALLOC_CHUNK 4
1328#endif
1329
c906108c
SS
1330/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1331 but this would require a corresponding change in unpack_field_as_long
1332 and friends. */
1333static int bits_per_byte = 8;
1334
2ddeaf8a
TT
1335/* When reading a variant or variant part, we track a bit more
1336 information about the field, and store it in an object of this
1337 type. */
1338
1339struct variant_field
1340{
1341 /* If we see a DW_TAG_variant, then this will be the discriminant
1342 value. */
1343 ULONGEST discriminant_value;
1344 /* If we see a DW_TAG_variant, then this will be set if this is the
1345 default branch. */
1346 bool default_branch;
1347 /* While reading a DW_TAG_variant_part, this will be set if this
1348 field is the discriminant. */
1349 bool is_discriminant;
1350};
1351
52059ffd
TT
1352struct nextfield
1353{
be2daae6
TT
1354 int accessibility = 0;
1355 int virtuality = 0;
2ddeaf8a 1356 /* Extra information to describe a variant or variant part. */
be2daae6
TT
1357 struct variant_field variant {};
1358 struct field field {};
52059ffd
TT
1359};
1360
1361struct fnfieldlist
1362{
be2daae6
TT
1363 const char *name = nullptr;
1364 std::vector<struct fn_field> fnfields;
52059ffd
TT
1365};
1366
c906108c
SS
1367/* The routines that read and process dies for a C struct or C++ class
1368 pass lists of data member fields and lists of member function fields
1369 in an instance of a field_info structure, as defined below. */
1370struct field_info
c5aa993b 1371 {
0963b4bd 1372 /* List of data member and baseclasses fields. */
be2daae6
TT
1373 std::vector<struct nextfield> fields;
1374 std::vector<struct nextfield> baseclasses;
c906108c 1375
7d0ccb61 1376 /* Number of fields (including baseclasses). */
be2daae6 1377 int nfields = 0;
c906108c 1378
c5aa993b 1379 /* Set if the accesibility of one of the fields is not public. */
be2daae6 1380 int non_public_fields = 0;
c906108c 1381
c5aa993b
JM
1382 /* Member function fieldlist array, contains name of possibly overloaded
1383 member function, number of overloaded member functions and a pointer
1384 to the head of the member function field chain. */
be2daae6 1385 std::vector<struct fnfieldlist> fnfieldlists;
98751a41
JK
1386
1387 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1388 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
be2daae6 1389 std::vector<struct decl_field> typedef_field_list;
883fd55a
KS
1390
1391 /* Nested types defined by this class and the number of elements in this
1392 list. */
be2daae6 1393 std::vector<struct decl_field> nested_types_list;
c5aa993b 1394 };
c906108c 1395
10b3939b
DJ
1396/* One item on the queue of compilation units to read in full symbols
1397 for. */
1398struct dwarf2_queue_item
1399{
1400 struct dwarf2_per_cu_data *per_cu;
95554aad 1401 enum language pretend_language;
10b3939b
DJ
1402 struct dwarf2_queue_item *next;
1403};
1404
1405/* The current queue. */
1406static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1407
ae038cb0
DJ
1408/* Loaded secondary compilation units are kept in memory until they
1409 have not been referenced for the processing of this many
1410 compilation units. Set this to zero to disable caching. Cache
1411 sizes of up to at least twenty will improve startup time for
1412 typical inter-CU-reference binaries, at an obvious memory cost. */
b4f54984 1413static int dwarf_max_cache_age = 5;
920d2a44 1414static void
b4f54984
DE
1415show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1416 struct cmd_list_element *c, const char *value)
920d2a44 1417{
3e43a32a 1418 fprintf_filtered (file, _("The upper bound on the age of cached "
b4f54984 1419 "DWARF compilation units is %s.\n"),
920d2a44
AC
1420 value);
1421}
4390d890 1422\f
c906108c
SS
1423/* local function prototypes */
1424
a32a8923
DE
1425static const char *get_section_name (const struct dwarf2_section_info *);
1426
1427static const char *get_section_file_name (const struct dwarf2_section_info *);
1428
918dd910
JK
1429static void dwarf2_find_base_address (struct die_info *die,
1430 struct dwarf2_cu *cu);
1431
0018ea6f
DE
1432static struct partial_symtab *create_partial_symtab
1433 (struct dwarf2_per_cu_data *per_cu, const char *name);
1434
f1902523
JK
1435static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1436 const gdb_byte *info_ptr,
1437 struct die_info *type_unit_die,
1438 int has_children, void *data);
1439
ed2dc618
SM
1440static void dwarf2_build_psymtabs_hard
1441 (struct dwarf2_per_objfile *dwarf2_per_objfile);
c906108c 1442
72bf9492
DJ
1443static void scan_partial_symbols (struct partial_die_info *,
1444 CORE_ADDR *, CORE_ADDR *,
5734ee8b 1445 int, struct dwarf2_cu *);
c906108c 1446
72bf9492
DJ
1447static void add_partial_symbol (struct partial_die_info *,
1448 struct dwarf2_cu *);
63d06c5c 1449
72bf9492
DJ
1450static void add_partial_namespace (struct partial_die_info *pdi,
1451 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 1452 int set_addrmap, struct dwarf2_cu *cu);
63d06c5c 1453
5d7cb8df 1454static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 1455 CORE_ADDR *highpc, int set_addrmap,
5d7cb8df
JK
1456 struct dwarf2_cu *cu);
1457
72bf9492
DJ
1458static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1459 struct dwarf2_cu *cu);
91c24f0a 1460
bc30ff58
JB
1461static void add_partial_subprogram (struct partial_die_info *pdi,
1462 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 1463 int need_pc, struct dwarf2_cu *cu);
bc30ff58 1464
257e7a09
YQ
1465static void dwarf2_read_symtab (struct partial_symtab *,
1466 struct objfile *);
c906108c 1467
a14ed312 1468static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 1469
685af9cd 1470static abbrev_table_up abbrev_table_read_table
ed2dc618
SM
1471 (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1472 sect_offset);
433df2d4 1473
d521ce57 1474static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
6caca83c 1475
dee91e82 1476static struct partial_die_info *load_partial_dies
d521ce57 1477 (const struct die_reader_specs *, const gdb_byte *, int);
72bf9492 1478
fb816e8b
TV
1479/* A pair of partial_die_info and compilation unit. */
1480struct cu_partial_die_info
1481{
1482 /* The compilation unit of the partial_die_info. */
1483 struct dwarf2_cu *cu;
1484 /* A partial_die_info. */
1485 struct partial_die_info *pdi;
122cf0f2
AB
1486
1487 cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
1488 : cu (cu),
1489 pdi (pdi)
1490 { /* Nothhing. */ }
1491
1492private:
1493 cu_partial_die_info () = delete;
fb816e8b
TV
1494};
1495
122cf0f2
AB
1496static const struct cu_partial_die_info find_partial_die (sect_offset, int,
1497 struct dwarf2_cu *);
72bf9492 1498
d521ce57
TT
1499static const gdb_byte *read_attribute (const struct die_reader_specs *,
1500 struct attribute *, struct attr_abbrev *,
1501 const gdb_byte *);
a8329558 1502
a1855c1d 1503static unsigned int read_1_byte (bfd *, const gdb_byte *);
c906108c 1504
a1855c1d 1505static int read_1_signed_byte (bfd *, const gdb_byte *);
c906108c 1506
a1855c1d 1507static unsigned int read_2_bytes (bfd *, const gdb_byte *);
c906108c 1508
15f18d14
AT
1509/* Read the next three bytes (little-endian order) as an unsigned integer. */
1510static unsigned int read_3_bytes (bfd *, const gdb_byte *);
1511
a1855c1d 1512static unsigned int read_4_bytes (bfd *, const gdb_byte *);
c906108c 1513
a1855c1d 1514static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
c906108c 1515
d521ce57 1516static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 1517 unsigned int *);
c906108c 1518
d521ce57 1519static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
c764a876
DE
1520
1521static LONGEST read_checked_initial_length_and_offset
d521ce57 1522 (bfd *, const gdb_byte *, const struct comp_unit_head *,
c764a876 1523 unsigned int *, unsigned int *);
613e1657 1524
d521ce57
TT
1525static LONGEST read_offset (bfd *, const gdb_byte *,
1526 const struct comp_unit_head *,
c764a876
DE
1527 unsigned int *);
1528
d521ce57 1529static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
613e1657 1530
ed2dc618
SM
1531static sect_offset read_abbrev_offset
1532 (struct dwarf2_per_objfile *dwarf2_per_objfile,
1533 struct dwarf2_section_info *, sect_offset);
f4dc4d17 1534
d521ce57 1535static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
c906108c 1536
d521ce57 1537static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
c906108c 1538
ed2dc618
SM
1539static const char *read_indirect_string
1540 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1541 const struct comp_unit_head *, unsigned int *);
4bdf3d34 1542
ed2dc618
SM
1543static const char *read_indirect_line_string
1544 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1545 const struct comp_unit_head *, unsigned int *);
36586728 1546
ed2dc618
SM
1547static const char *read_indirect_string_at_offset
1548 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1549 LONGEST str_offset);
927aa2e7 1550
ed2dc618
SM
1551static const char *read_indirect_string_from_dwz
1552 (struct objfile *objfile, struct dwz_file *, LONGEST);
c906108c 1553
d521ce57 1554static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1555
d521ce57
TT
1556static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1557 const gdb_byte *,
3019eac3
DE
1558 unsigned int *);
1559
d521ce57 1560static const char *read_str_index (const struct die_reader_specs *reader,
342587c4 1561 ULONGEST str_index);
3019eac3 1562
e142c38c 1563static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 1564
e142c38c
DJ
1565static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1566 struct dwarf2_cu *);
c906108c 1567
348e048f 1568static struct attribute *dwarf2_attr_no_follow (struct die_info *,
45e58e77 1569 unsigned int);
348e048f 1570
7d45c7c3
KB
1571static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1572 struct dwarf2_cu *cu);
1573
a084a2a6
AT
1574static const char *dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu);
1575
05cf31d1
JB
1576static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1577 struct dwarf2_cu *cu);
1578
e142c38c 1579static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 1580
e142c38c 1581static struct die_info *die_specification (struct die_info *die,
f2f0e013 1582 struct dwarf2_cu **);
63d06c5c 1583
9c541725 1584static line_header_up dwarf_decode_line_header (sect_offset sect_off,
fff8551c 1585 struct dwarf2_cu *cu);
debd256d 1586
f3f5162e 1587static void dwarf_decode_lines (struct line_header *, const char *,
c3b7b696 1588 struct dwarf2_cu *, struct partial_symtab *,
527f3840 1589 CORE_ADDR, int decode_mapping);
c906108c 1590
804d2729
TT
1591static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1592 const char *);
c906108c 1593
a14ed312 1594static struct symbol *new_symbol (struct die_info *, struct type *,
5e2db402 1595 struct dwarf2_cu *, struct symbol * = NULL);
34eaf542 1596
ff39bb5e 1597static void dwarf2_const_value (const struct attribute *, struct symbol *,
e7c27a73 1598 struct dwarf2_cu *);
c906108c 1599
ff39bb5e 1600static void dwarf2_const_value_attr (const struct attribute *attr,
98bfdba5
PA
1601 struct type *type,
1602 const char *name,
1603 struct obstack *obstack,
12df843f 1604 struct dwarf2_cu *cu, LONGEST *value,
d521ce57 1605 const gdb_byte **bytes,
98bfdba5 1606 struct dwarf2_locexpr_baton **baton);
2df3850c 1607
e7c27a73 1608static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 1609
b4ba55a1
JB
1610static int need_gnat_info (struct dwarf2_cu *);
1611
3e43a32a
MS
1612static struct type *die_descriptive_type (struct die_info *,
1613 struct dwarf2_cu *);
b4ba55a1
JB
1614
1615static void set_descriptive_type (struct type *, struct die_info *,
1616 struct dwarf2_cu *);
1617
e7c27a73
DJ
1618static struct type *die_containing_type (struct die_info *,
1619 struct dwarf2_cu *);
c906108c 1620
ff39bb5e 1621static struct type *lookup_die_type (struct die_info *, const struct attribute *,
673bfd45 1622 struct dwarf2_cu *);
c906108c 1623
f792889a 1624static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 1625
673bfd45
DE
1626static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1627
0d5cff50 1628static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 1629
6e70227d 1630static char *typename_concat (struct obstack *obs, const char *prefix,
f55ee35c
JK
1631 const char *suffix, int physname,
1632 struct dwarf2_cu *cu);
63d06c5c 1633
e7c27a73 1634static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1635
348e048f
DE
1636static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1637
e7c27a73 1638static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1639
e7c27a73 1640static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1641
96408a79
SA
1642static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1643
71a3c369
TT
1644static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1645
ff013f42
JK
1646static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1647 struct dwarf2_cu *, struct partial_symtab *);
1648
3a2b436a 1649/* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
e385593e 1650 values. Keep the items ordered with increasing constraints compliance. */
3a2b436a
JK
1651enum pc_bounds_kind
1652{
e385593e 1653 /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found. */
3a2b436a
JK
1654 PC_BOUNDS_NOT_PRESENT,
1655
e385593e
JK
1656 /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1657 were present but they do not form a valid range of PC addresses. */
1658 PC_BOUNDS_INVALID,
1659
3a2b436a
JK
1660 /* Discontiguous range was found - that is DW_AT_ranges was found. */
1661 PC_BOUNDS_RANGES,
1662
1663 /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found. */
1664 PC_BOUNDS_HIGH_LOW,
1665};
1666
1667static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1668 CORE_ADDR *, CORE_ADDR *,
1669 struct dwarf2_cu *,
1670 struct partial_symtab *);
c906108c 1671
fae299cd
DC
1672static void get_scope_pc_bounds (struct die_info *,
1673 CORE_ADDR *, CORE_ADDR *,
1674 struct dwarf2_cu *);
1675
801e3a5b
JB
1676static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1677 CORE_ADDR, struct dwarf2_cu *);
1678
a14ed312 1679static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 1680 struct dwarf2_cu *);
c906108c 1681
a14ed312 1682static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 1683 struct type *, struct dwarf2_cu *);
c906108c 1684
a14ed312 1685static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 1686 struct die_info *, struct type *,
e7c27a73 1687 struct dwarf2_cu *);
c906108c 1688
a14ed312 1689static void dwarf2_attach_fn_fields_to_type (struct field_info *,
3e43a32a
MS
1690 struct type *,
1691 struct dwarf2_cu *);
c906108c 1692
134d01f1 1693static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1694
e7c27a73 1695static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 1696
e7c27a73 1697static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 1698
5d7cb8df
JK
1699static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1700
804d2729 1701static struct using_direct **using_directives (struct dwarf2_cu *cu);
22cee43f 1702
27aa8d6a
SW
1703static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1704
74921315
KS
1705static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1706
f55ee35c
JK
1707static struct type *read_module_type (struct die_info *die,
1708 struct dwarf2_cu *cu);
1709
38d518c9 1710static const char *namespace_name (struct die_info *die,
e142c38c 1711 int *is_anonymous, struct dwarf2_cu *);
38d518c9 1712
134d01f1 1713static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1714
e7c27a73 1715static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 1716
6e70227d 1717static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
7ca2d3a3
DL
1718 struct dwarf2_cu *);
1719
bf6af496 1720static struct die_info *read_die_and_siblings_1
d521ce57 1721 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
bf6af496 1722 struct die_info *);
639d11d3 1723
dee91e82 1724static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
d521ce57
TT
1725 const gdb_byte *info_ptr,
1726 const gdb_byte **new_info_ptr,
639d11d3
DC
1727 struct die_info *parent);
1728
d521ce57
TT
1729static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1730 struct die_info **, const gdb_byte *,
1731 int *, int);
3019eac3 1732
d521ce57
TT
1733static const gdb_byte *read_full_die (const struct die_reader_specs *,
1734 struct die_info **, const gdb_byte *,
1735 int *);
93311388 1736
e7c27a73 1737static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 1738
15d034d0
TT
1739static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1740 struct obstack *);
71c25dea 1741
15d034d0 1742static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 1743
15d034d0 1744static const char *dwarf2_full_name (const char *name,
98bfdba5
PA
1745 struct die_info *die,
1746 struct dwarf2_cu *cu);
1747
ca69b9e6
DE
1748static const char *dwarf2_physname (const char *name, struct die_info *die,
1749 struct dwarf2_cu *cu);
1750
e142c38c 1751static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 1752 struct dwarf2_cu **);
9219021c 1753
f39c6ffd 1754static const char *dwarf_tag_name (unsigned int);
c906108c 1755
f39c6ffd 1756static const char *dwarf_attr_name (unsigned int);
c906108c 1757
a084a2a6
AT
1758static const char *dwarf_unit_type_name (int unit_type);
1759
f39c6ffd 1760static const char *dwarf_form_name (unsigned int);
c906108c 1761
a121b7c1 1762static const char *dwarf_bool_name (unsigned int);
c906108c 1763
f39c6ffd 1764static const char *dwarf_type_encoding_name (unsigned int);
c906108c 1765
f9aca02d 1766static struct die_info *sibling_die (struct die_info *);
c906108c 1767
d97bc12b
DE
1768static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1769
1770static void dump_die_for_error (struct die_info *);
1771
1772static void dump_die_1 (struct ui_file *, int level, int max_level,
1773 struct die_info *);
c906108c 1774
d97bc12b 1775/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1776
51545339 1777static void store_in_ref_table (struct die_info *,
10b3939b 1778 struct dwarf2_cu *);
c906108c 1779
ff39bb5e 1780static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
c906108c 1781
ff39bb5e 1782static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
a02abb62 1783
348e048f 1784static struct die_info *follow_die_ref_or_sig (struct die_info *,
ff39bb5e 1785 const struct attribute *,
348e048f
DE
1786 struct dwarf2_cu **);
1787
10b3939b 1788static struct die_info *follow_die_ref (struct die_info *,
ff39bb5e 1789 const struct attribute *,
f2f0e013 1790 struct dwarf2_cu **);
c906108c 1791
348e048f 1792static struct die_info *follow_die_sig (struct die_info *,
ff39bb5e 1793 const struct attribute *,
348e048f
DE
1794 struct dwarf2_cu **);
1795
ac9ec31b
DE
1796static struct type *get_signatured_type (struct die_info *, ULONGEST,
1797 struct dwarf2_cu *);
1798
1799static struct type *get_DW_AT_signature_type (struct die_info *,
ff39bb5e 1800 const struct attribute *,
ac9ec31b
DE
1801 struct dwarf2_cu *);
1802
e5fe5e75 1803static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
348e048f 1804
52dc124a 1805static void read_signatured_type (struct signatured_type *);
348e048f 1806
63e43d3a
PMR
1807static int attr_to_dynamic_prop (const struct attribute *attr,
1808 struct die_info *die, struct dwarf2_cu *cu,
9a49df9d 1809 struct dynamic_prop *prop, struct type *type);
63e43d3a 1810
c906108c
SS
1811/* memory allocation interface */
1812
7b5a2f43 1813static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1814
b60c80d6 1815static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1816
43f3e411 1817static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2e276125 1818
6e5a29e1 1819static int attr_form_is_block (const struct attribute *);
8e19ed76 1820
6e5a29e1 1821static int attr_form_is_section_offset (const struct attribute *);
3690dd37 1822
6e5a29e1 1823static int attr_form_is_constant (const struct attribute *);
3690dd37 1824
6e5a29e1 1825static int attr_form_is_ref (const struct attribute *);
7771576e 1826
8cf6f0b1
TT
1827static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1828 struct dwarf2_loclist_baton *baton,
ff39bb5e 1829 const struct attribute *attr);
8cf6f0b1 1830
ff39bb5e 1831static void dwarf2_symbol_mark_computed (const struct attribute *attr,
93e7bd98 1832 struct symbol *sym,
f1e6e072
TT
1833 struct dwarf2_cu *cu,
1834 int is_block);
4c2df51b 1835
d521ce57
TT
1836static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1837 const gdb_byte *info_ptr,
1838 struct abbrev_info *abbrev);
4bb7a0a7 1839
72bf9492
DJ
1840static hashval_t partial_die_hash (const void *item);
1841
1842static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1843
ae038cb0 1844static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
ed2dc618
SM
1845 (sect_offset sect_off, unsigned int offset_in_dwz,
1846 struct dwarf2_per_objfile *dwarf2_per_objfile);
ae038cb0 1847
9816fde3 1848static void prepare_one_comp_unit (struct dwarf2_cu *cu,
95554aad
TT
1849 struct die_info *comp_unit_die,
1850 enum language pretend_language);
93311388 1851
ed2dc618 1852static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
ae038cb0 1853
dee91e82 1854static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
ae038cb0 1855
f792889a
DJ
1856static struct type *set_die_type (struct die_info *, struct type *,
1857 struct dwarf2_cu *);
1c379e20 1858
ed2dc618 1859static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
ae038cb0 1860
ed2dc618 1861static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1fd400ff 1862
58f0c718 1863static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
95554aad 1864 enum language);
10b3939b 1865
95554aad
TT
1866static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1867 enum language);
10b3939b 1868
f4dc4d17
DE
1869static void process_full_type_unit (struct dwarf2_per_cu_data *,
1870 enum language);
1871
10b3939b
DJ
1872static void dwarf2_add_dependence (struct dwarf2_cu *,
1873 struct dwarf2_per_cu_data *);
1874
ae038cb0
DJ
1875static void dwarf2_mark (struct dwarf2_cu *);
1876
1877static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1878
b64f50a1 1879static struct type *get_die_type_at_offset (sect_offset,
ac9ec31b 1880 struct dwarf2_per_cu_data *);
673bfd45 1881
f792889a 1882static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1883
95554aad
TT
1884static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1885 enum language pretend_language);
1886
ed2dc618 1887static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
9291a0cd 1888
9a49df9d
AB
1889static struct type *dwarf2_per_cu_addr_type (struct dwarf2_per_cu_data *per_cu);
1890static struct type *dwarf2_per_cu_addr_sized_int_type
1891 (struct dwarf2_per_cu_data *per_cu, bool unsigned_p);
1892
b303c6f6
AB
1893/* Class, the destructor of which frees all allocated queue entries. This
1894 will only have work to do if an error was thrown while processing the
1895 dwarf. If no error was thrown then the queue entries should have all
1896 been processed, and freed, as we went along. */
1897
1898class dwarf2_queue_guard
1899{
1900public:
1901 dwarf2_queue_guard () = default;
1902
1903 /* Free any entries remaining on the queue. There should only be
1904 entries left if we hit an error while processing the dwarf. */
1905 ~dwarf2_queue_guard ()
1906 {
1907 struct dwarf2_queue_item *item, *last;
1908
1909 item = dwarf2_queue;
1910 while (item)
1911 {
1912 /* Anything still marked queued is likely to be in an
1913 inconsistent state, so discard it. */
1914 if (item->per_cu->queued)
1915 {
1916 if (item->per_cu->cu != NULL)
1917 free_one_cached_comp_unit (item->per_cu);
1918 item->per_cu->queued = 0;
1919 }
1920
1921 last = item;
1922 item = item->next;
1923 xfree (last);
1924 }
1925
1926 dwarf2_queue = dwarf2_queue_tail = NULL;
1927 }
1928};
1929
d721ba37
PA
1930/* The return type of find_file_and_directory. Note, the enclosed
1931 string pointers are only valid while this object is valid. */
1932
1933struct file_and_directory
1934{
1935 /* The filename. This is never NULL. */
1936 const char *name;
1937
1938 /* The compilation directory. NULL if not known. If we needed to
1939 compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1940 points directly to the DW_AT_comp_dir string attribute owned by
1941 the obstack that owns the DIE. */
1942 const char *comp_dir;
1943
1944 /* If we needed to build a new string for comp_dir, this is what
1945 owns the storage. */
1946 std::string comp_dir_storage;
1947};
1948
1949static file_and_directory find_file_and_directory (struct die_info *die,
1950 struct dwarf2_cu *cu);
9291a0cd
TT
1951
1952static char *file_full_name (int file, struct line_header *lh,
1953 const char *comp_dir);
1954
43988095
JK
1955/* Expected enum dwarf_unit_type for read_comp_unit_head. */
1956enum class rcuh_kind { COMPILE, TYPE };
1957
d521ce57 1958static const gdb_byte *read_and_check_comp_unit_head
ed2dc618
SM
1959 (struct dwarf2_per_objfile* dwarf2_per_objfile,
1960 struct comp_unit_head *header,
36586728 1961 struct dwarf2_section_info *section,
d521ce57 1962 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
43988095 1963 rcuh_kind section_kind);
36586728 1964
fd820528 1965static void init_cutu_and_read_dies
f4dc4d17 1966 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
58f0c718 1967 int use_existing_cu, int keep, bool skip_partial,
3019eac3
DE
1968 die_reader_func_ftype *die_reader_func, void *data);
1969
dee91e82
DE
1970static void init_cutu_and_read_dies_simple
1971 (struct dwarf2_per_cu_data *this_cu,
1972 die_reader_func_ftype *die_reader_func, void *data);
9291a0cd 1973
673bfd45 1974static htab_t allocate_signatured_type_table (struct objfile *objfile);
1fd400ff 1975
3019eac3
DE
1976static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1977
57d63ce2 1978static struct dwo_unit *lookup_dwo_unit_in_dwp
ed2dc618
SM
1979 (struct dwarf2_per_objfile *dwarf2_per_objfile,
1980 struct dwp_file *dwp_file, const char *comp_dir,
57d63ce2 1981 ULONGEST signature, int is_debug_types);
a2ce51a0 1982
ed2dc618
SM
1983static struct dwp_file *get_dwp_file
1984 (struct dwarf2_per_objfile *dwarf2_per_objfile);
a2ce51a0 1985
3019eac3 1986static struct dwo_unit *lookup_dwo_comp_unit
a1855c1d 1987 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
3019eac3
DE
1988
1989static struct dwo_unit *lookup_dwo_type_unit
a1855c1d 1990 (struct signatured_type *, const char *, const char *);
3019eac3 1991
89e63ee4
DE
1992static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1993
263db9a1
TT
1994/* A unique pointer to a dwo_file. */
1995
51ac9db5 1996typedef std::unique_ptr<struct dwo_file> dwo_file_up;
263db9a1 1997
ed2dc618 1998static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
95554aad 1999
1b80a9fa 2000static void check_producer (struct dwarf2_cu *cu);
527f3840
JK
2001
2002static void free_line_header_voidp (void *arg);
4390d890
DE
2003\f
2004/* Various complaints about symbol reading that don't abort the process. */
2005
2006static void
2007dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2008{
b98664d3 2009 complaint (_("statement list doesn't fit in .debug_line section"));
4390d890
DE
2010}
2011
2012static void
2013dwarf2_debug_line_missing_file_complaint (void)
2014{
b98664d3 2015 complaint (_(".debug_line section has line data without a file"));
4390d890
DE
2016}
2017
2018static void
2019dwarf2_debug_line_missing_end_sequence_complaint (void)
2020{
b98664d3 2021 complaint (_(".debug_line section has line "
4390d890
DE
2022 "program sequence without an end"));
2023}
2024
2025static void
2026dwarf2_complex_location_expr_complaint (void)
2027{
b98664d3 2028 complaint (_("location expression too complex"));
4390d890
DE
2029}
2030
2031static void
2032dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2033 int arg3)
2034{
b98664d3 2035 complaint (_("const value length mismatch for '%s', got %d, expected %d"),
4390d890
DE
2036 arg1, arg2, arg3);
2037}
2038
2039static void
2040dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2041{
b98664d3 2042 complaint (_("debug info runs off end of %s section"
4390d890 2043 " [in module %s]"),
a32a8923
DE
2044 get_section_name (section),
2045 get_section_file_name (section));
4390d890 2046}
1b80a9fa 2047
4390d890
DE
2048static void
2049dwarf2_macro_malformed_definition_complaint (const char *arg1)
2050{
b98664d3 2051 complaint (_("macro debug info contains a "
4390d890
DE
2052 "malformed macro definition:\n`%s'"),
2053 arg1);
2054}
2055
2056static void
2057dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2058{
b98664d3 2059 complaint (_("invalid attribute class or form for '%s' in '%s'"),
4390d890
DE
2060 arg1, arg2);
2061}
527f3840
JK
2062
2063/* Hash function for line_header_hash. */
2064
2065static hashval_t
2066line_header_hash (const struct line_header *ofs)
2067{
9c541725 2068 return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
527f3840
JK
2069}
2070
2071/* Hash function for htab_create_alloc_ex for line_header_hash. */
2072
2073static hashval_t
2074line_header_hash_voidp (const void *item)
2075{
9a3c8263 2076 const struct line_header *ofs = (const struct line_header *) item;
527f3840
JK
2077
2078 return line_header_hash (ofs);
2079}
2080
2081/* Equality function for line_header_hash. */
2082
2083static int
2084line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2085{
9a3c8263
SM
2086 const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2087 const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
527f3840 2088
9c541725 2089 return (ofs_lhs->sect_off == ofs_rhs->sect_off
527f3840
JK
2090 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2091}
2092
4390d890 2093\f
9291a0cd 2094
31aa7e4e
JB
2095/* Read the given attribute value as an address, taking the attribute's
2096 form into account. */
2097
2098static CORE_ADDR
2099attr_value_as_address (struct attribute *attr)
2100{
2101 CORE_ADDR addr;
2102
336d760d
AT
2103 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_addrx
2104 && attr->form != DW_FORM_GNU_addr_index)
31aa7e4e
JB
2105 {
2106 /* Aside from a few clearly defined exceptions, attributes that
2107 contain an address must always be in DW_FORM_addr form.
2108 Unfortunately, some compilers happen to be violating this
2109 requirement by encoding addresses using other forms, such
2110 as DW_FORM_data4 for example. For those broken compilers,
2111 we try to do our best, without any guarantee of success,
2112 to interpret the address correctly. It would also be nice
2113 to generate a complaint, but that would require us to maintain
2114 a list of legitimate cases where a non-address form is allowed,
2115 as well as update callers to pass in at least the CU's DWARF
2116 version. This is more overhead than what we're willing to
2117 expand for a pretty rare case. */
2118 addr = DW_UNSND (attr);
2119 }
2120 else
2121 addr = DW_ADDR (attr);
2122
2123 return addr;
2124}
2125
330cdd98
PA
2126/* See declaration. */
2127
2128dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
4b610737
TT
2129 const dwarf2_debug_sections *names,
2130 bool can_copy_)
2131 : objfile (objfile_),
2132 can_copy (can_copy_)
330cdd98
PA
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
2143dwarf2_per_objfile::~dwarf2_per_objfile ()
2144{
2145 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
2146 free_cached_comp_units ();
2147
2148 if (quick_file_names_table)
2149 htab_delete (quick_file_names_table);
2150
2151 if (line_header_hash)
2152 htab_delete (line_header_hash);
2153
b76e467d 2154 for (dwarf2_per_cu_data *per_cu : all_comp_units)
ae640021 2155 per_cu->imported_symtabs_free ();
fc8e7e75 2156
b2bdb8cf 2157 for (signatured_type *sig_type : all_type_units)
ae640021 2158 sig_type->per_cu.imported_symtabs_free ();
fc8e7e75 2159
330cdd98
PA
2160 /* Everything else should be on the objfile obstack. */
2161}
2162
2163/* See declaration. */
2164
2165void
2166dwarf2_per_objfile::free_cached_comp_units ()
2167{
2168 dwarf2_per_cu_data *per_cu = read_in_chain;
2169 dwarf2_per_cu_data **last_chain = &read_in_chain;
2170 while (per_cu != NULL)
2171 {
2172 dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2173
fcd3b13d 2174 delete per_cu->cu;
330cdd98
PA
2175 *last_chain = next_cu;
2176 per_cu = next_cu;
2177 }
2178}
2179
11ed8cad
TT
2180/* A helper class that calls free_cached_comp_units on
2181 destruction. */
2182
2183class free_cached_comp_units
2184{
2185public:
2186
2187 explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2188 : m_per_objfile (per_objfile)
2189 {
2190 }
2191
2192 ~free_cached_comp_units ()
2193 {
2194 m_per_objfile->free_cached_comp_units ();
2195 }
2196
2197 DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2198
2199private:
2200
2201 dwarf2_per_objfile *m_per_objfile;
2202};
2203
c906108c 2204/* Try to locate the sections we need for DWARF 2 debugging
251d32d9
TG
2205 information and return true if we have enough to do something.
2206 NAMES points to the dwarf2 section names, or is NULL if the standard
4b610737
TT
2207 ELF names are used. CAN_COPY is true for formats where symbol
2208 interposition is possible and so symbol values must follow copy
2209 relocation rules. */
c906108c
SS
2210
2211int
251d32d9 2212dwarf2_has_info (struct objfile *objfile,
4b610737
TT
2213 const struct dwarf2_debug_sections *names,
2214 bool can_copy)
c906108c 2215{
97cbe998
SDJ
2216 if (objfile->flags & OBJF_READNEVER)
2217 return 0;
2218
ed2dc618
SM
2219 struct dwarf2_per_objfile *dwarf2_per_objfile
2220 = get_dwarf2_per_objfile (objfile);
2221
2222 if (dwarf2_per_objfile == NULL)
5bfd760d 2223 dwarf2_per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile,
4b610737
TT
2224 names,
2225 can_copy);
5bfd760d 2226
73869dc2 2227 return (!dwarf2_per_objfile->info.is_virtual
049412e3 2228 && dwarf2_per_objfile->info.s.section != NULL
73869dc2 2229 && !dwarf2_per_objfile->abbrev.is_virtual
049412e3 2230 && dwarf2_per_objfile->abbrev.s.section != NULL);
73869dc2
DE
2231}
2232
2233/* Return the containing section of virtual section SECTION. */
2234
2235static struct dwarf2_section_info *
2236get_containing_section (const struct dwarf2_section_info *section)
2237{
2238 gdb_assert (section->is_virtual);
2239 return section->s.containing_section;
c906108c
SS
2240}
2241
a32a8923
DE
2242/* Return the bfd owner of SECTION. */
2243
2244static struct bfd *
2245get_section_bfd_owner (const struct dwarf2_section_info *section)
2246{
73869dc2
DE
2247 if (section->is_virtual)
2248 {
2249 section = get_containing_section (section);
2250 gdb_assert (!section->is_virtual);
2251 }
049412e3 2252 return section->s.section->owner;
a32a8923
DE
2253}
2254
2255/* Return the bfd section of SECTION.
2256 Returns NULL if the section is not present. */
2257
2258static asection *
2259get_section_bfd_section (const struct dwarf2_section_info *section)
2260{
73869dc2
DE
2261 if (section->is_virtual)
2262 {
2263 section = get_containing_section (section);
2264 gdb_assert (!section->is_virtual);
2265 }
049412e3 2266 return section->s.section;
a32a8923
DE
2267}
2268
2269/* Return the name of SECTION. */
2270
2271static const char *
2272get_section_name (const struct dwarf2_section_info *section)
2273{
2274 asection *sectp = get_section_bfd_section (section);
2275
2276 gdb_assert (sectp != NULL);
fd361982 2277 return bfd_section_name (sectp);
a32a8923
DE
2278}
2279
2280/* Return the name of the file SECTION is in. */
2281
2282static const char *
2283get_section_file_name (const struct dwarf2_section_info *section)
2284{
2285 bfd *abfd = get_section_bfd_owner (section);
2286
2287 return bfd_get_filename (abfd);
2288}
2289
2290/* Return the id of SECTION.
2291 Returns 0 if SECTION doesn't exist. */
2292
2293static int
2294get_section_id (const struct dwarf2_section_info *section)
2295{
2296 asection *sectp = get_section_bfd_section (section);
2297
2298 if (sectp == NULL)
2299 return 0;
2300 return sectp->id;
2301}
2302
2303/* Return the flags of SECTION.
73869dc2 2304 SECTION (or containing section if this is a virtual section) must exist. */
a32a8923
DE
2305
2306static int
2307get_section_flags (const struct dwarf2_section_info *section)
2308{
2309 asection *sectp = get_section_bfd_section (section);
2310
2311 gdb_assert (sectp != NULL);
fd361982 2312 return bfd_section_flags (sectp);
a32a8923
DE
2313}
2314
251d32d9
TG
2315/* When loading sections, we look either for uncompressed section or for
2316 compressed section names. */
233a11ab
CS
2317
2318static int
251d32d9
TG
2319section_is_p (const char *section_name,
2320 const struct dwarf2_section_names *names)
233a11ab 2321{
251d32d9
TG
2322 if (names->normal != NULL
2323 && strcmp (section_name, names->normal) == 0)
2324 return 1;
2325 if (names->compressed != NULL
2326 && strcmp (section_name, names->compressed) == 0)
2327 return 1;
2328 return 0;
233a11ab
CS
2329}
2330
330cdd98 2331/* See declaration. */
c906108c 2332
330cdd98
PA
2333void
2334dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2335 const dwarf2_debug_sections &names)
c906108c 2336{
fd361982 2337 flagword aflag = bfd_section_flags (sectp);
251d32d9 2338
dc7650b8
JK
2339 if ((aflag & SEC_HAS_CONTENTS) == 0)
2340 {
2341 }
330cdd98 2342 else if (section_is_p (sectp->name, &names.info))
c906108c 2343 {
330cdd98 2344 this->info.s.section = sectp;
fd361982 2345 this->info.size = bfd_section_size (sectp);
c906108c 2346 }
330cdd98 2347 else if (section_is_p (sectp->name, &names.abbrev))
c906108c 2348 {
330cdd98 2349 this->abbrev.s.section = sectp;
fd361982 2350 this->abbrev.size = bfd_section_size (sectp);
c906108c 2351 }
330cdd98 2352 else if (section_is_p (sectp->name, &names.line))
c906108c 2353 {
330cdd98 2354 this->line.s.section = sectp;
fd361982 2355 this->line.size = bfd_section_size (sectp);
c906108c 2356 }
330cdd98 2357 else if (section_is_p (sectp->name, &names.loc))
c906108c 2358 {
330cdd98 2359 this->loc.s.section = sectp;
fd361982 2360 this->loc.size = bfd_section_size (sectp);
c906108c 2361 }
330cdd98 2362 else if (section_is_p (sectp->name, &names.loclists))
43988095 2363 {
330cdd98 2364 this->loclists.s.section = sectp;
fd361982 2365 this->loclists.size = bfd_section_size (sectp);
43988095 2366 }
330cdd98 2367 else if (section_is_p (sectp->name, &names.macinfo))
c906108c 2368 {
330cdd98 2369 this->macinfo.s.section = sectp;
fd361982 2370 this->macinfo.size = bfd_section_size (sectp);
c906108c 2371 }
330cdd98 2372 else if (section_is_p (sectp->name, &names.macro))
cf2c3c16 2373 {
330cdd98 2374 this->macro.s.section = sectp;
fd361982 2375 this->macro.size = bfd_section_size (sectp);
cf2c3c16 2376 }
330cdd98 2377 else if (section_is_p (sectp->name, &names.str))
c906108c 2378 {
330cdd98 2379 this->str.s.section = sectp;
fd361982 2380 this->str.size = bfd_section_size (sectp);
c906108c 2381 }
330cdd98 2382 else if (section_is_p (sectp->name, &names.line_str))
43988095 2383 {
330cdd98 2384 this->line_str.s.section = sectp;
fd361982 2385 this->line_str.size = bfd_section_size (sectp);
43988095 2386 }
330cdd98 2387 else if (section_is_p (sectp->name, &names.addr))
3019eac3 2388 {
330cdd98 2389 this->addr.s.section = sectp;
fd361982 2390 this->addr.size = bfd_section_size (sectp);
3019eac3 2391 }
330cdd98 2392 else if (section_is_p (sectp->name, &names.frame))
b6af0555 2393 {
330cdd98 2394 this->frame.s.section = sectp;
fd361982 2395 this->frame.size = bfd_section_size (sectp);
b6af0555 2396 }
330cdd98 2397 else if (section_is_p (sectp->name, &names.eh_frame))
b6af0555 2398 {
330cdd98 2399 this->eh_frame.s.section = sectp;
fd361982 2400 this->eh_frame.size = bfd_section_size (sectp);
b6af0555 2401 }
330cdd98 2402 else if (section_is_p (sectp->name, &names.ranges))
af34e669 2403 {
330cdd98 2404 this->ranges.s.section = sectp;
fd361982 2405 this->ranges.size = bfd_section_size (sectp);
af34e669 2406 }
330cdd98 2407 else if (section_is_p (sectp->name, &names.rnglists))
43988095 2408 {
330cdd98 2409 this->rnglists.s.section = sectp;
fd361982 2410 this->rnglists.size = bfd_section_size (sectp);
43988095 2411 }
330cdd98 2412 else if (section_is_p (sectp->name, &names.types))
348e048f 2413 {
8b70b953
TT
2414 struct dwarf2_section_info type_section;
2415
2416 memset (&type_section, 0, sizeof (type_section));
049412e3 2417 type_section.s.section = sectp;
fd361982 2418 type_section.size = bfd_section_size (sectp);
8b70b953 2419
fd5866f6 2420 this->types.push_back (type_section);
348e048f 2421 }
330cdd98 2422 else if (section_is_p (sectp->name, &names.gdb_index))
9291a0cd 2423 {
330cdd98 2424 this->gdb_index.s.section = sectp;
fd361982 2425 this->gdb_index.size = bfd_section_size (sectp);
9291a0cd 2426 }
927aa2e7
JK
2427 else if (section_is_p (sectp->name, &names.debug_names))
2428 {
2429 this->debug_names.s.section = sectp;
fd361982 2430 this->debug_names.size = bfd_section_size (sectp);
927aa2e7
JK
2431 }
2432 else if (section_is_p (sectp->name, &names.debug_aranges))
2433 {
2434 this->debug_aranges.s.section = sectp;
fd361982 2435 this->debug_aranges.size = bfd_section_size (sectp);
927aa2e7 2436 }
dce234bc 2437
fd361982
AM
2438 if ((bfd_section_flags (sectp) & (SEC_LOAD | SEC_ALLOC))
2439 && bfd_section_vma (sectp) == 0)
330cdd98 2440 this->has_section_at_zero = true;
c906108c
SS
2441}
2442
fceca515
DE
2443/* A helper function that decides whether a section is empty,
2444 or not present. */
9e0ac564
TT
2445
2446static int
19ac8c2e 2447dwarf2_section_empty_p (const struct dwarf2_section_info *section)
9e0ac564 2448{
73869dc2
DE
2449 if (section->is_virtual)
2450 return section->size == 0;
049412e3 2451 return section->s.section == NULL || section->size == 0;
9e0ac564
TT
2452}
2453
cd4fb1b2 2454/* See dwarf2read.h. */
c906108c 2455
cd4fb1b2
SM
2456void
2457dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
c906108c 2458{
a32a8923 2459 asection *sectp;
3019eac3 2460 bfd *abfd;
dce234bc 2461 gdb_byte *buf, *retbuf;
c906108c 2462
be391dca
TT
2463 if (info->readin)
2464 return;
dce234bc 2465 info->buffer = NULL;
dc4ccb6f 2466 info->readin = true;
188dd5d6 2467
9e0ac564 2468 if (dwarf2_section_empty_p (info))
dce234bc 2469 return;
c906108c 2470
a32a8923 2471 sectp = get_section_bfd_section (info);
3019eac3 2472
73869dc2
DE
2473 /* If this is a virtual section we need to read in the real one first. */
2474 if (info->is_virtual)
2475 {
2476 struct dwarf2_section_info *containing_section =
2477 get_containing_section (info);
2478
2479 gdb_assert (sectp != NULL);
2480 if ((sectp->flags & SEC_RELOC) != 0)
2481 {
2482 error (_("Dwarf Error: DWP format V2 with relocations is not"
2483 " supported in section %s [in module %s]"),
2484 get_section_name (info), get_section_file_name (info));
2485 }
2486 dwarf2_read_section (objfile, containing_section);
2487 /* Other code should have already caught virtual sections that don't
2488 fit. */
2489 gdb_assert (info->virtual_offset + info->size
2490 <= containing_section->size);
2491 /* If the real section is empty or there was a problem reading the
2492 section we shouldn't get here. */
2493 gdb_assert (containing_section->buffer != NULL);
2494 info->buffer = containing_section->buffer + info->virtual_offset;
2495 return;
2496 }
2497
4bf44c1c
TT
2498 /* If the section has relocations, we must read it ourselves.
2499 Otherwise we attach it to the BFD. */
2500 if ((sectp->flags & SEC_RELOC) == 0)
dce234bc 2501 {
d521ce57 2502 info->buffer = gdb_bfd_map_section (sectp, &info->size);
4bf44c1c 2503 return;
dce234bc 2504 }
dce234bc 2505
224c3ddb 2506 buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
4bf44c1c 2507 info->buffer = buf;
dce234bc
PP
2508
2509 /* When debugging .o files, we may need to apply relocations; see
2510 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2511 We never compress sections in .o files, so we only need to
2512 try this when the section is not compressed. */
ac8035ab 2513 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
dce234bc
PP
2514 if (retbuf != NULL)
2515 {
2516 info->buffer = retbuf;
2517 return;
2518 }
2519
a32a8923
DE
2520 abfd = get_section_bfd_owner (info);
2521 gdb_assert (abfd != NULL);
2522
dce234bc
PP
2523 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2524 || bfd_bread (buf, info->size, abfd) != info->size)
19ac8c2e
DE
2525 {
2526 error (_("Dwarf Error: Can't read DWARF data"
2527 " in section %s [in module %s]"),
fd361982 2528 bfd_section_name (sectp), bfd_get_filename (abfd));
19ac8c2e 2529 }
dce234bc
PP
2530}
2531
9e0ac564
TT
2532/* A helper function that returns the size of a section in a safe way.
2533 If you are positive that the section has been read before using the
2534 size, then it is safe to refer to the dwarf2_section_info object's
2535 "size" field directly. In other cases, you must call this
2536 function, because for compressed sections the size field is not set
2537 correctly until the section has been read. */
2538
2539static bfd_size_type
2540dwarf2_section_size (struct objfile *objfile,
2541 struct dwarf2_section_info *info)
2542{
2543 if (!info->readin)
2544 dwarf2_read_section (objfile, info);
2545 return info->size;
2546}
2547
dce234bc 2548/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
0963b4bd 2549 SECTION_NAME. */
af34e669 2550
dce234bc 2551void
3017a003
TG
2552dwarf2_get_section_info (struct objfile *objfile,
2553 enum dwarf2_section_enum sect,
d521ce57 2554 asection **sectp, const gdb_byte **bufp,
dce234bc
PP
2555 bfd_size_type *sizep)
2556{
5bfd760d 2557 struct dwarf2_per_objfile *data = dwarf2_objfile_data_key.get (objfile);
dce234bc 2558 struct dwarf2_section_info *info;
a3b2a86b
TT
2559
2560 /* We may see an objfile without any DWARF, in which case we just
2561 return nothing. */
2562 if (data == NULL)
2563 {
2564 *sectp = NULL;
2565 *bufp = NULL;
2566 *sizep = 0;
2567 return;
2568 }
3017a003
TG
2569 switch (sect)
2570 {
2571 case DWARF2_DEBUG_FRAME:
2572 info = &data->frame;
2573 break;
2574 case DWARF2_EH_FRAME:
2575 info = &data->eh_frame;
2576 break;
2577 default:
2578 gdb_assert_not_reached ("unexpected section");
2579 }
dce234bc 2580
9e0ac564 2581 dwarf2_read_section (objfile, info);
dce234bc 2582
a32a8923 2583 *sectp = get_section_bfd_section (info);
dce234bc
PP
2584 *bufp = info->buffer;
2585 *sizep = info->size;
2586}
2587
36586728
TT
2588/* A helper function to find the sections for a .dwz file. */
2589
2590static void
2591locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2592{
9a3c8263 2593 struct dwz_file *dwz_file = (struct dwz_file *) arg;
36586728
TT
2594
2595 /* Note that we only support the standard ELF names, because .dwz
2596 is ELF-only (at the time of writing). */
2597 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2598 {
049412e3 2599 dwz_file->abbrev.s.section = sectp;
fd361982 2600 dwz_file->abbrev.size = bfd_section_size (sectp);
36586728
TT
2601 }
2602 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2603 {
049412e3 2604 dwz_file->info.s.section = sectp;
fd361982 2605 dwz_file->info.size = bfd_section_size (sectp);
36586728
TT
2606 }
2607 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2608 {
049412e3 2609 dwz_file->str.s.section = sectp;
fd361982 2610 dwz_file->str.size = bfd_section_size (sectp);
36586728
TT
2611 }
2612 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2613 {
049412e3 2614 dwz_file->line.s.section = sectp;
fd361982 2615 dwz_file->line.size = bfd_section_size (sectp);
36586728
TT
2616 }
2617 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2618 {
049412e3 2619 dwz_file->macro.s.section = sectp;
fd361982 2620 dwz_file->macro.size = bfd_section_size (sectp);
36586728 2621 }
2ec9a5e0
TT
2622 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2623 {
049412e3 2624 dwz_file->gdb_index.s.section = sectp;
fd361982 2625 dwz_file->gdb_index.size = bfd_section_size (sectp);
2ec9a5e0 2626 }
927aa2e7
JK
2627 else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2628 {
2629 dwz_file->debug_names.s.section = sectp;
fd361982 2630 dwz_file->debug_names.size = bfd_section_size (sectp);
927aa2e7 2631 }
36586728
TT
2632}
2633
c4973306 2634/* See dwarf2read.h. */
36586728 2635
c4973306 2636struct dwz_file *
ed2dc618 2637dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
36586728 2638{
36586728 2639 const char *filename;
acd13123 2640 bfd_size_type buildid_len_arg;
dc294be5
TT
2641 size_t buildid_len;
2642 bfd_byte *buildid;
36586728
TT
2643
2644 if (dwarf2_per_objfile->dwz_file != NULL)
7ff8cb8c 2645 return dwarf2_per_objfile->dwz_file.get ();
36586728 2646
4db1a1dc 2647 bfd_set_error (bfd_error_no_error);
791afaa2
TT
2648 gdb::unique_xmalloc_ptr<char> data
2649 (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2650 &buildid_len_arg, &buildid));
4db1a1dc
TT
2651 if (data == NULL)
2652 {
2653 if (bfd_get_error () == bfd_error_no_error)
2654 return NULL;
2655 error (_("could not read '.gnu_debugaltlink' section: %s"),
2656 bfd_errmsg (bfd_get_error ()));
2657 }
791afaa2
TT
2658
2659 gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
36586728 2660
acd13123
TT
2661 buildid_len = (size_t) buildid_len_arg;
2662
791afaa2 2663 filename = data.get ();
d721ba37
PA
2664
2665 std::string abs_storage;
36586728
TT
2666 if (!IS_ABSOLUTE_PATH (filename))
2667 {
14278e1f
TT
2668 gdb::unique_xmalloc_ptr<char> abs
2669 = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
36586728 2670
14278e1f 2671 abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
d721ba37 2672 filename = abs_storage.c_str ();
36586728
TT
2673 }
2674
dc294be5
TT
2675 /* First try the file name given in the section. If that doesn't
2676 work, try to use the build-id instead. */
192b62ce 2677 gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
dc294be5 2678 if (dwz_bfd != NULL)
36586728 2679 {
192b62ce 2680 if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
0f58c9e8 2681 dwz_bfd.reset (nullptr);
36586728
TT
2682 }
2683
dc294be5
TT
2684 if (dwz_bfd == NULL)
2685 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2686
2687 if (dwz_bfd == NULL)
2688 error (_("could not find '.gnu_debugaltlink' file for %s"),
2689 objfile_name (dwarf2_per_objfile->objfile));
2690
7ff8cb8c
TT
2691 std::unique_ptr<struct dwz_file> result
2692 (new struct dwz_file (std::move (dwz_bfd)));
36586728 2693
7ff8cb8c
TT
2694 bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2695 result.get ());
36586728 2696
7ff8cb8c
TT
2697 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2698 result->dwz_bfd.get ());
2699 dwarf2_per_objfile->dwz_file = std::move (result);
2700 return dwarf2_per_objfile->dwz_file.get ();
36586728 2701}
9291a0cd 2702\f
7b9f3c50
DE
2703/* DWARF quick_symbols_functions support. */
2704
2705/* TUs can share .debug_line entries, and there can be a lot more TUs than
2706 unique line tables, so we maintain a separate table of all .debug_line
2707 derived entries to support the sharing.
2708 All the quick functions need is the list of file names. We discard the
2709 line_header when we're done and don't need to record it here. */
2710struct quick_file_names
2711{
094b34ac
DE
2712 /* The data used to construct the hash key. */
2713 struct stmt_list_hash hash;
7b9f3c50
DE
2714
2715 /* The number of entries in file_names, real_names. */
2716 unsigned int num_file_names;
2717
2718 /* The file names from the line table, after being run through
2719 file_full_name. */
2720 const char **file_names;
2721
2722 /* The file names from the line table after being run through
2723 gdb_realpath. These are computed lazily. */
2724 const char **real_names;
2725};
2726
2727/* When using the index (and thus not using psymtabs), each CU has an
2728 object of this type. This is used to hold information needed by
2729 the various "quick" methods. */
2730struct dwarf2_per_cu_quick_data
2731{
2732 /* The file table. This can be NULL if there was no file table
2733 or it's currently not read in.
2734 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2735 struct quick_file_names *file_names;
2736
2737 /* The corresponding symbol table. This is NULL if symbols for this
2738 CU have not yet been read. */
43f3e411 2739 struct compunit_symtab *compunit_symtab;
7b9f3c50
DE
2740
2741 /* A temporary mark bit used when iterating over all CUs in
2742 expand_symtabs_matching. */
2743 unsigned int mark : 1;
2744
2745 /* True if we've tried to read the file table and found there isn't one.
2746 There will be no point in trying to read it again next time. */
2747 unsigned int no_file_data : 1;
2748};
2749
094b34ac
DE
2750/* Utility hash function for a stmt_list_hash. */
2751
2752static hashval_t
2753hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2754{
2755 hashval_t v = 0;
2756
2757 if (stmt_list_hash->dwo_unit != NULL)
2758 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
9c541725 2759 v += to_underlying (stmt_list_hash->line_sect_off);
094b34ac
DE
2760 return v;
2761}
2762
2763/* Utility equality function for a stmt_list_hash. */
2764
2765static int
2766eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2767 const struct stmt_list_hash *rhs)
2768{
2769 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2770 return 0;
2771 if (lhs->dwo_unit != NULL
2772 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2773 return 0;
2774
9c541725 2775 return lhs->line_sect_off == rhs->line_sect_off;
094b34ac
DE
2776}
2777
7b9f3c50
DE
2778/* Hash function for a quick_file_names. */
2779
2780static hashval_t
2781hash_file_name_entry (const void *e)
2782{
9a3c8263
SM
2783 const struct quick_file_names *file_data
2784 = (const struct quick_file_names *) e;
7b9f3c50 2785
094b34ac 2786 return hash_stmt_list_entry (&file_data->hash);
7b9f3c50
DE
2787}
2788
2789/* Equality function for a quick_file_names. */
2790
2791static int
2792eq_file_name_entry (const void *a, const void *b)
2793{
9a3c8263
SM
2794 const struct quick_file_names *ea = (const struct quick_file_names *) a;
2795 const struct quick_file_names *eb = (const struct quick_file_names *) b;
7b9f3c50 2796
094b34ac 2797 return eq_stmt_list_entry (&ea->hash, &eb->hash);
7b9f3c50
DE
2798}
2799
2800/* Delete function for a quick_file_names. */
2801
2802static void
2803delete_file_name_entry (void *e)
2804{
9a3c8263 2805 struct quick_file_names *file_data = (struct quick_file_names *) e;
7b9f3c50
DE
2806 int i;
2807
2808 for (i = 0; i < file_data->num_file_names; ++i)
2809 {
2810 xfree ((void*) file_data->file_names[i]);
2811 if (file_data->real_names)
2812 xfree ((void*) file_data->real_names[i]);
2813 }
2814
2815 /* The space for the struct itself lives on objfile_obstack,
2816 so we don't free it here. */
2817}
2818
2819/* Create a quick_file_names hash table. */
2820
2821static htab_t
2822create_quick_file_names_table (unsigned int nr_initial_entries)
2823{
2824 return htab_create_alloc (nr_initial_entries,
2825 hash_file_name_entry, eq_file_name_entry,
2826 delete_file_name_entry, xcalloc, xfree);
2827}
9291a0cd 2828
918dd910
JK
2829/* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2830 have to be created afterwards. You should call age_cached_comp_units after
2831 processing PER_CU->CU. dw2_setup must have been already called. */
2832
2833static void
58f0c718 2834load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
918dd910 2835{
3019eac3 2836 if (per_cu->is_debug_types)
e5fe5e75 2837 load_full_type_unit (per_cu);
918dd910 2838 else
58f0c718 2839 load_full_comp_unit (per_cu, skip_partial, language_minimal);
918dd910 2840
cc12ce38
DE
2841 if (per_cu->cu == NULL)
2842 return; /* Dummy CU. */
2dc860c0
DE
2843
2844 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
918dd910
JK
2845}
2846
a0f42c21 2847/* Read in the symbols for PER_CU. */
2fdf6df6 2848
9291a0cd 2849static void
58f0c718 2850dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
9291a0cd 2851{
ed2dc618 2852 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
9291a0cd 2853
f4dc4d17
DE
2854 /* Skip type_unit_groups, reading the type units they contain
2855 is handled elsewhere. */
2856 if (IS_TYPE_UNIT_GROUP (per_cu))
2857 return;
2858
b303c6f6
AB
2859 /* The destructor of dwarf2_queue_guard frees any entries left on
2860 the queue. After this point we're guaranteed to leave this function
2861 with the dwarf queue empty. */
2862 dwarf2_queue_guard q_guard;
9291a0cd 2863
95554aad 2864 if (dwarf2_per_objfile->using_index
43f3e411 2865 ? per_cu->v.quick->compunit_symtab == NULL
95554aad
TT
2866 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2867 {
2868 queue_comp_unit (per_cu, language_minimal);
58f0c718 2869 load_cu (per_cu, skip_partial);
89e63ee4
DE
2870
2871 /* If we just loaded a CU from a DWO, and we're working with an index
2872 that may badly handle TUs, load all the TUs in that DWO as well.
2873 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2874 if (!per_cu->is_debug_types
cc12ce38 2875 && per_cu->cu != NULL
89e63ee4
DE
2876 && per_cu->cu->dwo_unit != NULL
2877 && dwarf2_per_objfile->index_table != NULL
2878 && dwarf2_per_objfile->index_table->version <= 7
2879 /* DWP files aren't supported yet. */
ed2dc618 2880 && get_dwp_file (dwarf2_per_objfile) == NULL)
89e63ee4 2881 queue_and_load_all_dwo_tus (per_cu);
95554aad 2882 }
9291a0cd 2883
ed2dc618 2884 process_queue (dwarf2_per_objfile);
9291a0cd
TT
2885
2886 /* Age the cache, releasing compilation units that have not
2887 been used recently. */
ed2dc618 2888 age_cached_comp_units (dwarf2_per_objfile);
9291a0cd
TT
2889}
2890
2891/* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2892 the objfile from which this CU came. Returns the resulting symbol
2893 table. */
2fdf6df6 2894
43f3e411 2895static struct compunit_symtab *
58f0c718 2896dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
9291a0cd 2897{
ed2dc618
SM
2898 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2899
95554aad 2900 gdb_assert (dwarf2_per_objfile->using_index);
43f3e411 2901 if (!per_cu->v.quick->compunit_symtab)
9291a0cd 2902 {
11ed8cad 2903 free_cached_comp_units freer (dwarf2_per_objfile);
c83dd867 2904 scoped_restore decrementer = increment_reading_symtab ();
58f0c718 2905 dw2_do_instantiate_symtab (per_cu, skip_partial);
ed2dc618 2906 process_cu_includes (dwarf2_per_objfile);
9291a0cd 2907 }
f194fefb 2908
43f3e411 2909 return per_cu->v.quick->compunit_symtab;
9291a0cd
TT
2910}
2911
ff4c9fec 2912/* See declaration. */
f4dc4d17 2913
ff4c9fec
SM
2914dwarf2_per_cu_data *
2915dwarf2_per_objfile::get_cutu (int index)
2916{
b76e467d 2917 if (index >= this->all_comp_units.size ())
ff4c9fec 2918 {
b76e467d 2919 index -= this->all_comp_units.size ();
b2bdb8cf 2920 gdb_assert (index < this->all_type_units.size ());
ff4c9fec
SM
2921 return &this->all_type_units[index]->per_cu;
2922 }
f4dc4d17 2923
ff4c9fec
SM
2924 return this->all_comp_units[index];
2925}
f4dc4d17 2926
ff4c9fec 2927/* See declaration. */
2fdf6df6 2928
ff4c9fec
SM
2929dwarf2_per_cu_data *
2930dwarf2_per_objfile::get_cu (int index)
1fd400ff 2931{
b76e467d 2932 gdb_assert (index >= 0 && index < this->all_comp_units.size ());
f4dc4d17 2933
ff4c9fec 2934 return this->all_comp_units[index];
f4dc4d17
DE
2935}
2936
ff4c9fec 2937/* See declaration. */
f4dc4d17 2938
ff4c9fec
SM
2939signatured_type *
2940dwarf2_per_objfile::get_tu (int index)
f4dc4d17 2941{
b2bdb8cf 2942 gdb_assert (index >= 0 && index < this->all_type_units.size ());
f4dc4d17 2943
ff4c9fec 2944 return this->all_type_units[index];
1fd400ff
TT
2945}
2946
4b514bc8
JK
2947/* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2948 objfile_obstack, and constructed with the specified field
2949 values. */
2950
2951static dwarf2_per_cu_data *
ed2dc618 2952create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
4b514bc8
JK
2953 struct dwarf2_section_info *section,
2954 int is_dwz,
2955 sect_offset sect_off, ULONGEST length)
2956{
ed2dc618 2957 struct objfile *objfile = dwarf2_per_objfile->objfile;
4b514bc8
JK
2958 dwarf2_per_cu_data *the_cu
2959 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2960 struct dwarf2_per_cu_data);
2961 the_cu->sect_off = sect_off;
2962 the_cu->length = length;
e3b94546 2963 the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
4b514bc8
JK
2964 the_cu->section = section;
2965 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2966 struct dwarf2_per_cu_quick_data);
2967 the_cu->is_dwz = is_dwz;
2968 return the_cu;
2969}
2970
2ec9a5e0
TT
2971/* A helper for create_cus_from_index that handles a given list of
2972 CUs. */
2fdf6df6 2973
74a0d9f6 2974static void
12359b5e 2975create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2ec9a5e0
TT
2976 const gdb_byte *cu_list, offset_type n_elements,
2977 struct dwarf2_section_info *section,
b76e467d 2978 int is_dwz)
9291a0cd 2979{
12359b5e 2980 for (offset_type i = 0; i < n_elements; i += 2)
9291a0cd 2981 {
74a0d9f6 2982 gdb_static_assert (sizeof (ULONGEST) >= 8);
9c541725
PA
2983
2984 sect_offset sect_off
2985 = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2986 ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
9291a0cd
TT
2987 cu_list += 2 * 8;
2988
b76e467d 2989 dwarf2_per_cu_data *per_cu
ed2dc618
SM
2990 = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
2991 sect_off, length);
b76e467d 2992 dwarf2_per_objfile->all_comp_units.push_back (per_cu);
9291a0cd 2993 }
9291a0cd
TT
2994}
2995
2ec9a5e0 2996/* Read the CU list from the mapped index, and use it to create all
74a0d9f6 2997 the CU objects for this objfile. */
2ec9a5e0 2998
74a0d9f6 2999static void
12359b5e 3000create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
2ec9a5e0
TT
3001 const gdb_byte *cu_list, offset_type cu_list_elements,
3002 const gdb_byte *dwz_list, offset_type dwz_elements)
3003{
b76e467d
SM
3004 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3005 dwarf2_per_objfile->all_comp_units.reserve
3006 ((cu_list_elements + dwz_elements) / 2);
2ec9a5e0 3007
12359b5e 3008 create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
b76e467d 3009 &dwarf2_per_objfile->info, 0);
2ec9a5e0
TT
3010
3011 if (dwz_elements == 0)
74a0d9f6 3012 return;
2ec9a5e0 3013
12359b5e
SM
3014 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3015 create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
b76e467d 3016 &dwz->info, 1);
2ec9a5e0
TT
3017}
3018
1fd400ff 3019/* Create the signatured type hash table from the index. */
673bfd45 3020
74a0d9f6 3021static void
12359b5e
SM
3022create_signatured_type_table_from_index
3023 (struct dwarf2_per_objfile *dwarf2_per_objfile,
3024 struct dwarf2_section_info *section,
3025 const gdb_byte *bytes,
3026 offset_type elements)
1fd400ff 3027{
12359b5e 3028 struct objfile *objfile = dwarf2_per_objfile->objfile;
1fd400ff 3029
b2bdb8cf
SM
3030 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3031 dwarf2_per_objfile->all_type_units.reserve (elements / 3);
1fd400ff 3032
12359b5e 3033 htab_t sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff 3034
12359b5e 3035 for (offset_type i = 0; i < elements; i += 3)
1fd400ff 3036 {
52dc124a 3037 struct signatured_type *sig_type;
9c541725 3038 ULONGEST signature;
1fd400ff 3039 void **slot;
9c541725 3040 cu_offset type_offset_in_tu;
1fd400ff 3041
74a0d9f6 3042 gdb_static_assert (sizeof (ULONGEST) >= 8);
9c541725
PA
3043 sect_offset sect_off
3044 = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3045 type_offset_in_tu
3046 = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3047 BFD_ENDIAN_LITTLE);
1fd400ff
TT
3048 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3049 bytes += 3 * 8;
3050
52dc124a 3051 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 3052 struct signatured_type);
52dc124a 3053 sig_type->signature = signature;
9c541725 3054 sig_type->type_offset_in_tu = type_offset_in_tu;
3019eac3 3055 sig_type->per_cu.is_debug_types = 1;
8a0459fd 3056 sig_type->per_cu.section = section;
9c541725 3057 sig_type->per_cu.sect_off = sect_off;
e3b94546 3058 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
52dc124a 3059 sig_type->per_cu.v.quick
1fd400ff
TT
3060 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3061 struct dwarf2_per_cu_quick_data);
3062
52dc124a
DE
3063 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3064 *slot = sig_type;
1fd400ff 3065
b2bdb8cf 3066 dwarf2_per_objfile->all_type_units.push_back (sig_type);
1fd400ff
TT
3067 }
3068
673bfd45 3069 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
3070}
3071
927aa2e7
JK
3072/* Create the signatured type hash table from .debug_names. */
3073
3074static void
3075create_signatured_type_table_from_debug_names
ed2dc618 3076 (struct dwarf2_per_objfile *dwarf2_per_objfile,
927aa2e7
JK
3077 const mapped_debug_names &map,
3078 struct dwarf2_section_info *section,
3079 struct dwarf2_section_info *abbrev_section)
3080{
ed2dc618
SM
3081 struct objfile *objfile = dwarf2_per_objfile->objfile;
3082
927aa2e7
JK
3083 dwarf2_read_section (objfile, section);
3084 dwarf2_read_section (objfile, abbrev_section);
3085
b2bdb8cf
SM
3086 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3087 dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
927aa2e7
JK
3088
3089 htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3090
3091 for (uint32_t i = 0; i < map.tu_count; ++i)
3092 {
3093 struct signatured_type *sig_type;
927aa2e7 3094 void **slot;
927aa2e7
JK
3095
3096 sect_offset sect_off
3097 = (sect_offset) (extract_unsigned_integer
3098 (map.tu_table_reordered + i * map.offset_size,
3099 map.offset_size,
3100 map.dwarf5_byte_order));
3101
3102 comp_unit_head cu_header;
ed2dc618
SM
3103 read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3104 abbrev_section,
927aa2e7
JK
3105 section->buffer + to_underlying (sect_off),
3106 rcuh_kind::TYPE);
3107
3108 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3109 struct signatured_type);
3110 sig_type->signature = cu_header.signature;
3111 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3112 sig_type->per_cu.is_debug_types = 1;
3113 sig_type->per_cu.section = section;
3114 sig_type->per_cu.sect_off = sect_off;
e3b94546 3115 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
927aa2e7
JK
3116 sig_type->per_cu.v.quick
3117 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3118 struct dwarf2_per_cu_quick_data);
3119
3120 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3121 *slot = sig_type;
3122
b2bdb8cf 3123 dwarf2_per_objfile->all_type_units.push_back (sig_type);
927aa2e7
JK
3124 }
3125
3126 dwarf2_per_objfile->signatured_types = sig_types_hash;
3127}
3128
9291a0cd
TT
3129/* Read the address map data from the mapped index, and use it to
3130 populate the objfile's psymtabs_addrmap. */
2fdf6df6 3131
9291a0cd 3132static void
ed2dc618
SM
3133create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3134 struct mapped_index *index)
9291a0cd 3135{
ed2dc618 3136 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 3137 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd 3138 const gdb_byte *iter, *end;
9291a0cd 3139 struct addrmap *mutable_map;
9291a0cd
TT
3140 CORE_ADDR baseaddr;
3141
8268c778
PA
3142 auto_obstack temp_obstack;
3143
9291a0cd
TT
3144 mutable_map = addrmap_create_mutable (&temp_obstack);
3145
f00a2de2
PA
3146 iter = index->address_table.data ();
3147 end = iter + index->address_table.size ();
9291a0cd
TT
3148
3149 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3150
3151 while (iter < end)
3152 {
3153 ULONGEST hi, lo, cu_index;
3154 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3155 iter += 8;
3156 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3157 iter += 8;
3158 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3159 iter += 4;
f652bce2 3160
24a55014 3161 if (lo > hi)
f652bce2 3162 {
b98664d3 3163 complaint (_(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 3164 hex_string (lo), hex_string (hi));
24a55014 3165 continue;
f652bce2 3166 }
24a55014 3167
b76e467d 3168 if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
f652bce2 3169 {
b98664d3 3170 complaint (_(".gdb_index address table has invalid CU number %u"),
f652bce2 3171 (unsigned) cu_index);
24a55014 3172 continue;
f652bce2 3173 }
24a55014 3174
79748972
TT
3175 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3176 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
ed2dc618 3177 addrmap_set_empty (mutable_map, lo, hi - 1,
ff4c9fec 3178 dwarf2_per_objfile->get_cu (cu_index));
9291a0cd
TT
3179 }
3180
d320c2b5 3181 objfile->partial_symtabs->psymtabs_addrmap
5923a04c 3182 = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
9291a0cd
TT
3183}
3184
927aa2e7
JK
3185/* Read the address map data from DWARF-5 .debug_aranges, and use it to
3186 populate the objfile's psymtabs_addrmap. */
3187
3188static void
ed2dc618 3189create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
927aa2e7
JK
3190 struct dwarf2_section_info *section)
3191{
ed2dc618 3192 struct objfile *objfile = dwarf2_per_objfile->objfile;
927aa2e7
JK
3193 bfd *abfd = objfile->obfd;
3194 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3195 const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3196 SECT_OFF_TEXT (objfile));
3197
3198 auto_obstack temp_obstack;
3199 addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3200
3201 std::unordered_map<sect_offset,
3202 dwarf2_per_cu_data *,
3203 gdb::hash_enum<sect_offset>>
3204 debug_info_offset_to_per_cu;
b76e467d 3205 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
927aa2e7 3206 {
927aa2e7
JK
3207 const auto insertpair
3208 = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3209 if (!insertpair.second)
3210 {
3211 warning (_("Section .debug_aranges in %s has duplicate "
9d8780f0
SM
3212 "debug_info_offset %s, ignoring .debug_aranges."),
3213 objfile_name (objfile), sect_offset_str (per_cu->sect_off));
927aa2e7
JK
3214 return;
3215 }
3216 }
3217
3218 dwarf2_read_section (objfile, section);
3219
3220 const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3221
3222 const gdb_byte *addr = section->buffer;
3223
3224 while (addr < section->buffer + section->size)
3225 {
3226 const gdb_byte *const entry_addr = addr;
3227 unsigned int bytes_read;
3228
3229 const LONGEST entry_length = read_initial_length (abfd, addr,
3230 &bytes_read);
3231 addr += bytes_read;
3232
3233 const gdb_byte *const entry_end = addr + entry_length;
3234 const bool dwarf5_is_dwarf64 = bytes_read != 4;
3235 const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3236 if (addr + entry_length > section->buffer + section->size)
3237 {
47e3f474 3238 warning (_("Section .debug_aranges in %s entry at offset %s "
927aa2e7
JK
3239 "length %s exceeds section length %s, "
3240 "ignoring .debug_aranges."),
47e3f474
TV
3241 objfile_name (objfile),
3242 plongest (entry_addr - section->buffer),
927aa2e7
JK
3243 plongest (bytes_read + entry_length),
3244 pulongest (section->size));
3245 return;
3246 }
3247
3248 /* The version number. */
3249 const uint16_t version = read_2_bytes (abfd, addr);
3250 addr += 2;
3251 if (version != 2)
3252 {
47e3f474 3253 warning (_("Section .debug_aranges in %s entry at offset %s "
927aa2e7 3254 "has unsupported version %d, ignoring .debug_aranges."),
47e3f474
TV
3255 objfile_name (objfile),
3256 plongest (entry_addr - section->buffer), version);
927aa2e7
JK
3257 return;
3258 }
3259
3260 const uint64_t debug_info_offset
3261 = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3262 addr += offset_size;
3263 const auto per_cu_it
3264 = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3265 if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3266 {
47e3f474 3267 warning (_("Section .debug_aranges in %s entry at offset %s "
927aa2e7
JK
3268 "debug_info_offset %s does not exists, "
3269 "ignoring .debug_aranges."),
47e3f474
TV
3270 objfile_name (objfile),
3271 plongest (entry_addr - section->buffer),
927aa2e7
JK
3272 pulongest (debug_info_offset));
3273 return;
3274 }
3275 dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3276
3277 const uint8_t address_size = *addr++;
3278 if (address_size < 1 || address_size > 8)
3279 {
47e3f474 3280 warning (_("Section .debug_aranges in %s entry at offset %s "
927aa2e7 3281 "address_size %u is invalid, ignoring .debug_aranges."),
47e3f474
TV
3282 objfile_name (objfile),
3283 plongest (entry_addr - section->buffer), address_size);
927aa2e7
JK
3284 return;
3285 }
3286
3287 const uint8_t segment_selector_size = *addr++;
3288 if (segment_selector_size != 0)
3289 {
47e3f474 3290 warning (_("Section .debug_aranges in %s entry at offset %s "
927aa2e7
JK
3291 "segment_selector_size %u is not supported, "
3292 "ignoring .debug_aranges."),
47e3f474
TV
3293 objfile_name (objfile),
3294 plongest (entry_addr - section->buffer),
927aa2e7
JK
3295 segment_selector_size);
3296 return;
3297 }
3298
3299 /* Must pad to an alignment boundary that is twice the address
3300 size. It is undocumented by the DWARF standard but GCC does
3301 use it. */
3302 for (size_t padding = ((-(addr - section->buffer))
3303 & (2 * address_size - 1));
3304 padding > 0; padding--)
3305 if (*addr++ != 0)
3306 {
47e3f474 3307 warning (_("Section .debug_aranges in %s entry at offset %s "
927aa2e7 3308 "padding is not zero, ignoring .debug_aranges."),
47e3f474
TV
3309 objfile_name (objfile),
3310 plongest (entry_addr - section->buffer));
927aa2e7
JK
3311 return;
3312 }
3313
3314 for (;;)
3315 {
3316 if (addr + 2 * address_size > entry_end)
3317 {
47e3f474 3318 warning (_("Section .debug_aranges in %s entry at offset %s "
927aa2e7
JK
3319 "address list is not properly terminated, "
3320 "ignoring .debug_aranges."),
47e3f474
TV
3321 objfile_name (objfile),
3322 plongest (entry_addr - section->buffer));
927aa2e7
JK
3323 return;
3324 }
3325 ULONGEST start = extract_unsigned_integer (addr, address_size,
3326 dwarf5_byte_order);
3327 addr += address_size;
3328 ULONGEST length = extract_unsigned_integer (addr, address_size,
3329 dwarf5_byte_order);
3330 addr += address_size;
3331 if (start == 0 && length == 0)
3332 break;
3333 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3334 {
3335 /* Symbol was eliminated due to a COMDAT group. */
3336 continue;
3337 }
3338 ULONGEST end = start + length;
79748972
TT
3339 start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3340 - baseaddr);
3341 end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3342 - baseaddr);
927aa2e7
JK
3343 addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3344 }
3345 }
3346
d320c2b5 3347 objfile->partial_symtabs->psymtabs_addrmap
5923a04c 3348 = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
927aa2e7
JK
3349}
3350
9291a0cd
TT
3351/* Find a slot in the mapped index INDEX for the object named NAME.
3352 If NAME is found, set *VEC_OUT to point to the CU vector in the
109483d9
PA
3353 constant pool and return true. If NAME cannot be found, return
3354 false. */
2fdf6df6 3355
109483d9 3356static bool
9291a0cd
TT
3357find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3358 offset_type **vec_out)
3359{
0cf03b49 3360 offset_type hash;
9291a0cd 3361 offset_type slot, step;
559a7a62 3362 int (*cmp) (const char *, const char *);
9291a0cd 3363
791afaa2 3364 gdb::unique_xmalloc_ptr<char> without_params;
0cf03b49 3365 if (current_language->la_language == language_cplus
45280282
IB
3366 || current_language->la_language == language_fortran
3367 || current_language->la_language == language_d)
0cf03b49
JK
3368 {
3369 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
3370 not contain any. */
a8719064 3371
72998fb3 3372 if (strchr (name, '(') != NULL)
0cf03b49 3373 {
109483d9 3374 without_params = cp_remove_params (name);
0cf03b49 3375
72998fb3 3376 if (without_params != NULL)
791afaa2 3377 name = without_params.get ();
0cf03b49
JK
3378 }
3379 }
3380
559a7a62 3381 /* Index version 4 did not support case insensitive searches. But the
feea76c2 3382 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
3383 simulate our NAME being searched is also lowercased. */
3384 hash = mapped_index_string_hash ((index->version == 4
3385 && case_sensitivity == case_sensitive_off
3386 ? 5 : index->version),
3387 name);
3388
f00a2de2
PA
3389 slot = hash & (index->symbol_table.size () - 1);
3390 step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
559a7a62 3391 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3392
3393 for (;;)
3394 {
9291a0cd 3395 const char *str;
f00a2de2
PA
3396
3397 const auto &bucket = index->symbol_table[slot];
3398 if (bucket.name == 0 && bucket.vec == 0)
109483d9 3399 return false;
9291a0cd 3400
f00a2de2 3401 str = index->constant_pool + MAYBE_SWAP (bucket.name);
559a7a62 3402 if (!cmp (name, str))
9291a0cd
TT
3403 {
3404 *vec_out = (offset_type *) (index->constant_pool
f00a2de2 3405 + MAYBE_SWAP (bucket.vec));
109483d9 3406 return true;
9291a0cd
TT
3407 }
3408
f00a2de2 3409 slot = (slot + step) & (index->symbol_table.size () - 1);
9291a0cd
TT
3410 }
3411}
3412
4485a1c1
SM
3413/* A helper function that reads the .gdb_index from BUFFER and fills
3414 in MAP. FILENAME is the name of the file containing the data;
d33bc52e 3415 it is used for error reporting. DEPRECATED_OK is true if it is
2ec9a5e0
TT
3416 ok to use deprecated sections.
3417
3418 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3419 out parameters that are filled in with information about the CU and
3420 TU lists in the section.
3421
4485a1c1 3422 Returns true if all went well, false otherwise. */
2fdf6df6 3423
d33bc52e 3424static bool
4485a1c1
SM
3425read_gdb_index_from_buffer (struct objfile *objfile,
3426 const char *filename,
3427 bool deprecated_ok,
3428 gdb::array_view<const gdb_byte> buffer,
3429 struct mapped_index *map,
3430 const gdb_byte **cu_list,
3431 offset_type *cu_list_elements,
3432 const gdb_byte **types_list,
3433 offset_type *types_list_elements)
3434{
3435 const gdb_byte *addr = &buffer[0];
82430852 3436
9291a0cd 3437 /* Version check. */
4485a1c1 3438 offset_type version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3439 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3440 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3441 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3442 indices. */
831adc1f 3443 if (version < 4)
481860b3
GB
3444 {
3445 static int warning_printed = 0;
3446 if (!warning_printed)
3447 {
3448 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3449 filename);
481860b3
GB
3450 warning_printed = 1;
3451 }
3452 return 0;
3453 }
3454 /* Index version 4 uses a different hash function than index version
3455 5 and later.
3456
3457 Versions earlier than 6 did not emit psymbols for inlined
3458 functions. Using these files will cause GDB not to be able to
3459 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3460 indices unless the user has done
3461 "set use-deprecated-index-sections on". */
2ec9a5e0 3462 if (version < 6 && !deprecated_ok)
481860b3
GB
3463 {
3464 static int warning_printed = 0;
3465 if (!warning_printed)
3466 {
e615022a
DE
3467 warning (_("\
3468Skipping deprecated .gdb_index section in %s.\n\
3469Do \"set use-deprecated-index-sections on\" before the file is read\n\
3470to use the section anyway."),
2ec9a5e0 3471 filename);
481860b3
GB
3472 warning_printed = 1;
3473 }
3474 return 0;
3475 }
796a7ff8 3476 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3477 of the TU (for symbols coming from TUs),
3478 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3479 Plus gold-generated indices can have duplicate entries for global symbols,
3480 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3481 These are just performance bugs, and we can't distinguish gdb-generated
3482 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3483
481860b3 3484 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3485 longer backward compatible. */
796a7ff8 3486 if (version > 8)
594e8718 3487 return 0;
9291a0cd 3488
559a7a62 3489 map->version = version;
9291a0cd 3490
4485a1c1 3491 offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff 3492
4485a1c1 3493 int i = 0;
2ec9a5e0
TT
3494 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3495 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3496 / 8);
1fd400ff
TT
3497 ++i;
3498
2ec9a5e0
TT
3499 *types_list = addr + MAYBE_SWAP (metadata[i]);
3500 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3501 - MAYBE_SWAP (metadata[i]))
3502 / 8);
987d643c 3503 ++i;
1fd400ff 3504
f00a2de2
PA
3505 const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3506 const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3507 map->address_table
3508 = gdb::array_view<const gdb_byte> (address_table, address_table_end);
1fd400ff
TT
3509 ++i;
3510
f00a2de2
PA
3511 const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3512 const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3513 map->symbol_table
3514 = gdb::array_view<mapped_index::symbol_table_slot>
3515 ((mapped_index::symbol_table_slot *) symbol_table,
3516 (mapped_index::symbol_table_slot *) symbol_table_end);
9291a0cd 3517
f00a2de2 3518 ++i;
f9d83a0b 3519 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3520
2ec9a5e0
TT
3521 return 1;
3522}
3523
4485a1c1
SM
3524/* Callback types for dwarf2_read_gdb_index. */
3525
3526typedef gdb::function_view
3527 <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3528 get_gdb_index_contents_ftype;
3529typedef gdb::function_view
3530 <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3531 get_gdb_index_contents_dwz_ftype;
3532
927aa2e7 3533/* Read .gdb_index. If everything went ok, initialize the "quick"
2ec9a5e0
TT
3534 elements of all the CUs and return 1. Otherwise, return 0. */
3535
3536static int
4485a1c1
SM
3537dwarf2_read_gdb_index
3538 (struct dwarf2_per_objfile *dwarf2_per_objfile,
3539 get_gdb_index_contents_ftype get_gdb_index_contents,
3540 get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
2ec9a5e0 3541{
2ec9a5e0
TT
3542 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3543 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3544 struct dwz_file *dwz;
12359b5e 3545 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ec9a5e0 3546
4485a1c1
SM
3547 gdb::array_view<const gdb_byte> main_index_contents
3548 = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3549
3550 if (main_index_contents.empty ())
3551 return 0;
3552
3063847f 3553 std::unique_ptr<struct mapped_index> map (new struct mapped_index);
4485a1c1
SM
3554 if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3555 use_deprecated_index_sections,
3556 main_index_contents, map.get (), &cu_list,
3557 &cu_list_elements, &types_list,
3558 &types_list_elements))
2ec9a5e0
TT
3559 return 0;
3560
0fefef59 3561 /* Don't use the index if it's empty. */
3063847f 3562 if (map->symbol_table.empty ())
0fefef59
DE
3563 return 0;
3564
2ec9a5e0
TT
3565 /* If there is a .dwz file, read it so we can get its CU list as
3566 well. */
ed2dc618 3567 dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
4db1a1dc 3568 if (dwz != NULL)
2ec9a5e0 3569 {
2ec9a5e0
TT
3570 struct mapped_index dwz_map;
3571 const gdb_byte *dwz_types_ignore;
3572 offset_type dwz_types_elements_ignore;
3573
4485a1c1
SM
3574 gdb::array_view<const gdb_byte> dwz_index_content
3575 = get_gdb_index_contents_dwz (objfile, dwz);
3576
3577 if (dwz_index_content.empty ())
3578 return 0;
3579
3580 if (!read_gdb_index_from_buffer (objfile,
00f93c44
AM
3581 bfd_get_filename (dwz->dwz_bfd.get ()),
3582 1, dwz_index_content, &dwz_map,
4485a1c1
SM
3583 &dwz_list, &dwz_list_elements,
3584 &dwz_types_ignore,
3585 &dwz_types_elements_ignore))
2ec9a5e0
TT
3586 {
3587 warning (_("could not read '.gdb_index' section from %s; skipping"),
00f93c44 3588 bfd_get_filename (dwz->dwz_bfd.get ()));
2ec9a5e0
TT
3589 return 0;
3590 }
3591 }
3592
12359b5e
SM
3593 create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3594 dwz_list, dwz_list_elements);
1fd400ff 3595
8b70b953
TT
3596 if (types_list_elements)
3597 {
8b70b953
TT
3598 /* We can only handle a single .debug_types when we have an
3599 index. */
fd5866f6 3600 if (dwarf2_per_objfile->types.size () != 1)
8b70b953
TT
3601 return 0;
3602
fd5866f6 3603 dwarf2_section_info *section = &dwarf2_per_objfile->types[0];
8b70b953 3604
12359b5e
SM
3605 create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3606 types_list, types_list_elements);
8b70b953 3607 }
9291a0cd 3608
3063847f 3609 create_addrmap_from_index (dwarf2_per_objfile, map.get ());
9291a0cd 3610
3063847f 3611 dwarf2_per_objfile->index_table = std::move (map);
9291a0cd 3612 dwarf2_per_objfile->using_index = 1;
7b9f3c50 3613 dwarf2_per_objfile->quick_file_names_table =
b76e467d 3614 create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
9291a0cd
TT
3615
3616 return 1;
3617}
3618
dee91e82 3619/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3620
dee91e82
DE
3621static void
3622dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3623 const gdb_byte *info_ptr,
dee91e82
DE
3624 struct die_info *comp_unit_die,
3625 int has_children,
3626 void *data)
9291a0cd 3627{
dee91e82 3628 struct dwarf2_cu *cu = reader->cu;
ed2dc618 3629 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
518817b3
SM
3630 struct dwarf2_per_objfile *dwarf2_per_objfile
3631 = cu->per_cu->dwarf2_per_objfile;
dee91e82 3632 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3633 struct dwarf2_per_cu_data *lh_cu;
9291a0cd 3634 struct attribute *attr;
dee91e82 3635 int i;
7b9f3c50
DE
3636 void **slot;
3637 struct quick_file_names *qfn;
9291a0cd 3638
0186c6a7
DE
3639 gdb_assert (! this_cu->is_debug_types);
3640
07261596
TT
3641 /* Our callers never want to match partial units -- instead they
3642 will match the enclosing full CU. */
3643 if (comp_unit_die->tag == DW_TAG_partial_unit)
3644 {
3645 this_cu->v.quick->no_file_data = 1;
3646 return;
3647 }
3648
0186c6a7 3649 lh_cu = this_cu;
7b9f3c50 3650 slot = NULL;
dee91e82 3651
fff8551c 3652 line_header_up lh;
9c541725 3653 sect_offset line_offset {};
fff8551c 3654
dee91e82 3655 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3656 if (attr)
3657 {
7b9f3c50
DE
3658 struct quick_file_names find_entry;
3659
9c541725 3660 line_offset = (sect_offset) DW_UNSND (attr);
7b9f3c50
DE
3661
3662 /* We may have already read in this line header (TU line header sharing).
3663 If we have we're done. */
094b34ac 3664 find_entry.hash.dwo_unit = cu->dwo_unit;
9c541725 3665 find_entry.hash.line_sect_off = line_offset;
7b9f3c50
DE
3666 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3667 &find_entry, INSERT);
3668 if (*slot != NULL)
3669 {
9a3c8263 3670 lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
dee91e82 3671 return;
7b9f3c50
DE
3672 }
3673
3019eac3 3674 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3675 }
3676 if (lh == NULL)
3677 {
094b34ac 3678 lh_cu->v.quick->no_file_data = 1;
dee91e82 3679 return;
9291a0cd
TT
3680 }
3681
8d749320 3682 qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
094b34ac 3683 qfn->hash.dwo_unit = cu->dwo_unit;
9c541725 3684 qfn->hash.line_sect_off = line_offset;
7b9f3c50
DE
3685 gdb_assert (slot != NULL);
3686 *slot = qfn;
9291a0cd 3687
d721ba37 3688 file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
9291a0cd 3689
aa391654
TT
3690 int offset = 0;
3691 if (strcmp (fnd.name, "<unknown>") != 0)
3692 ++offset;
3693
3694 qfn->num_file_names = offset + lh->file_names.size ();
8d749320 3695 qfn->file_names =
aa391654
TT
3696 XOBNEWVEC (&objfile->objfile_obstack, const char *, qfn->num_file_names);
3697 if (offset != 0)
3698 qfn->file_names[0] = xstrdup (fnd.name);
fff8551c 3699 for (i = 0; i < lh->file_names.size (); ++i)
aa391654 3700 qfn->file_names[i + offset] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
7b9f3c50 3701 qfn->real_names = NULL;
9291a0cd 3702
094b34ac 3703 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3704}
3705
3706/* A helper for the "quick" functions which attempts to read the line
3707 table for THIS_CU. */
3708
3709static struct quick_file_names *
e4a48d9d 3710dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3711{
0186c6a7
DE
3712 /* This should never be called for TUs. */
3713 gdb_assert (! this_cu->is_debug_types);
3714 /* Nor type unit groups. */
3715 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3716
dee91e82
DE
3717 if (this_cu->v.quick->file_names != NULL)
3718 return this_cu->v.quick->file_names;
3719 /* If we know there is no line data, no point in looking again. */
3720 if (this_cu->v.quick->no_file_data)
3721 return NULL;
3722
0186c6a7 3723 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3724
3725 if (this_cu->v.quick->no_file_data)
3726 return NULL;
3727 return this_cu->v.quick->file_names;
9291a0cd
TT
3728}
3729
3730/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3731 real path for a given file name from the line table. */
2fdf6df6 3732
9291a0cd 3733static const char *
7b9f3c50
DE
3734dw2_get_real_path (struct objfile *objfile,
3735 struct quick_file_names *qfn, int index)
9291a0cd 3736{
7b9f3c50
DE
3737 if (qfn->real_names == NULL)
3738 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3739 qfn->num_file_names, const char *);
9291a0cd 3740
7b9f3c50 3741 if (qfn->real_names[index] == NULL)
14278e1f 3742 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
9291a0cd 3743
7b9f3c50 3744 return qfn->real_names[index];
9291a0cd
TT
3745}
3746
3747static struct symtab *
3748dw2_find_last_source_symtab (struct objfile *objfile)
3749{
ed2dc618
SM
3750 struct dwarf2_per_objfile *dwarf2_per_objfile
3751 = get_dwarf2_per_objfile (objfile);
b76e467d 3752 dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
58f0c718 3753 compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
ae2de4f8 3754
43f3e411
DE
3755 if (cust == NULL)
3756 return NULL;
ed2dc618 3757
43f3e411 3758 return compunit_primary_filetab (cust);
9291a0cd
TT
3759}
3760
7b9f3c50
DE
3761/* Traversal function for dw2_forget_cached_source_info. */
3762
3763static int
3764dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3765{
7b9f3c50 3766 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3767
7b9f3c50 3768 if (file_data->real_names)
9291a0cd 3769 {
7b9f3c50 3770 int i;
9291a0cd 3771
7b9f3c50 3772 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3773 {
7b9f3c50
DE
3774 xfree ((void*) file_data->real_names[i]);
3775 file_data->real_names[i] = NULL;
9291a0cd
TT
3776 }
3777 }
7b9f3c50
DE
3778
3779 return 1;
3780}
3781
3782static void
3783dw2_forget_cached_source_info (struct objfile *objfile)
3784{
ed2dc618
SM
3785 struct dwarf2_per_objfile *dwarf2_per_objfile
3786 = get_dwarf2_per_objfile (objfile);
7b9f3c50
DE
3787
3788 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3789 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3790}
3791
f8eba3c6
TT
3792/* Helper function for dw2_map_symtabs_matching_filename that expands
3793 the symtabs and calls the iterator. */
3794
3795static int
3796dw2_map_expand_apply (struct objfile *objfile,
3797 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3798 const char *name, const char *real_path,
14bc53a8 3799 gdb::function_view<bool (symtab *)> callback)
f8eba3c6 3800{
43f3e411 3801 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3802
3803 /* Don't visit already-expanded CUs. */
43f3e411 3804 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3805 return 0;
3806
3807 /* This may expand more than one symtab, and we want to iterate over
3808 all of them. */
58f0c718 3809 dw2_instantiate_symtab (per_cu, false);
f8eba3c6 3810
14bc53a8
PA
3811 return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3812 last_made, callback);
f8eba3c6
TT
3813}
3814
3815/* Implementation of the map_symtabs_matching_filename method. */
3816
14bc53a8
PA
3817static bool
3818dw2_map_symtabs_matching_filename
3819 (struct objfile *objfile, const char *name, const char *real_path,
3820 gdb::function_view<bool (symtab *)> callback)
9291a0cd 3821{
c011a4f4 3822 const char *name_basename = lbasename (name);
ed2dc618
SM
3823 struct dwarf2_per_objfile *dwarf2_per_objfile
3824 = get_dwarf2_per_objfile (objfile);
ae2de4f8 3825
848e3e78
DE
3826 /* The rule is CUs specify all the files, including those used by
3827 any TU, so there's no need to scan TUs here. */
f4dc4d17 3828
b76e467d 3829 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
9291a0cd 3830 {
3d7bb9d9 3831 /* We only need to look at symtabs not already expanded. */
43f3e411 3832 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3833 continue;
3834
b76e467d 3835 quick_file_names *file_data = dw2_get_file_names (per_cu);
7b9f3c50 3836 if (file_data == NULL)
9291a0cd
TT
3837 continue;
3838
b76e467d 3839 for (int j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3840 {
7b9f3c50 3841 const char *this_name = file_data->file_names[j];
da235a7c 3842 const char *this_real_name;
9291a0cd 3843
af529f8f 3844 if (compare_filenames_for_search (this_name, name))
9291a0cd 3845 {
f5b95b50 3846 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
14bc53a8
PA
3847 callback))
3848 return true;
288e77a7 3849 continue;
4aac40c8 3850 }
9291a0cd 3851
c011a4f4
DE
3852 /* Before we invoke realpath, which can get expensive when many
3853 files are involved, do a quick comparison of the basenames. */
3854 if (! basenames_may_differ
3855 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3856 continue;
3857
da235a7c
JK
3858 this_real_name = dw2_get_real_path (objfile, file_data, j);
3859 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3860 {
da235a7c 3861 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
14bc53a8
PA
3862 callback))
3863 return true;
288e77a7 3864 continue;
da235a7c 3865 }
9291a0cd 3866
da235a7c
JK
3867 if (real_path != NULL)
3868 {
af529f8f
JK
3869 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3870 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3871 if (this_real_name != NULL
af529f8f 3872 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3873 {
f5b95b50 3874 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
14bc53a8
PA
3875 callback))
3876 return true;
288e77a7 3877 continue;
9291a0cd
TT
3878 }
3879 }
3880 }
3881 }
3882
14bc53a8 3883 return false;
9291a0cd
TT
3884}
3885
da51c347
DE
3886/* Struct used to manage iterating over all CUs looking for a symbol. */
3887
3888struct dw2_symtab_iterator
9291a0cd 3889{
ed2dc618
SM
3890 /* The dwarf2_per_objfile owning the CUs we are iterating on. */
3891 struct dwarf2_per_objfile *dwarf2_per_objfile;
2b79f376
SM
3892 /* If set, only look for symbols that match that block. Valid values are
3893 GLOBAL_BLOCK and STATIC_BLOCK. */
c7f839cb 3894 gdb::optional<block_enum> block_index;
da51c347
DE
3895 /* The kind of symbol we're looking for. */
3896 domain_enum domain;
3897 /* The list of CUs from the index entry of the symbol,
3898 or NULL if not found. */
3899 offset_type *vec;
3900 /* The next element in VEC to look at. */
3901 int next;
3902 /* The number of elements in VEC, or zero if there is no match. */
3903 int length;
8943b874
DE
3904 /* Have we seen a global version of the symbol?
3905 If so we can ignore all further global instances.
3906 This is to work around gold/15646, inefficient gold-generated
3907 indices. */
3908 int global_seen;
da51c347 3909};
9291a0cd 3910
2b79f376 3911/* Initialize the index symtab iterator ITER. */
2fdf6df6 3912
9291a0cd 3913static void
da51c347 3914dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
ed2dc618 3915 struct dwarf2_per_objfile *dwarf2_per_objfile,
c7f839cb 3916 gdb::optional<block_enum> block_index,
da51c347
DE
3917 domain_enum domain,
3918 const char *name)
3919{
ed2dc618 3920 iter->dwarf2_per_objfile = dwarf2_per_objfile;
da51c347
DE
3921 iter->block_index = block_index;
3922 iter->domain = domain;
3923 iter->next = 0;
8943b874 3924 iter->global_seen = 0;
da51c347 3925
3063847f 3926 mapped_index *index = dwarf2_per_objfile->index_table.get ();
ed2dc618
SM
3927
3928 /* index is NULL if OBJF_READNOW. */
3929 if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
da51c347
DE
3930 iter->length = MAYBE_SWAP (*iter->vec);
3931 else
3932 {
3933 iter->vec = NULL;
3934 iter->length = 0;
3935 }
3936}
3937
3938/* Return the next matching CU or NULL if there are no more. */
3939
3940static struct dwarf2_per_cu_data *
3941dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3942{
ed2dc618
SM
3943 struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3944
da51c347
DE
3945 for ( ; iter->next < iter->length; ++iter->next)
3946 {
3947 offset_type cu_index_and_attrs =
3948 MAYBE_SWAP (iter->vec[iter->next + 1]);
3949 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
da51c347
DE
3950 gdb_index_symbol_kind symbol_kind =
3951 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3952 /* Only check the symbol attributes if they're present.
3953 Indices prior to version 7 don't record them,
3954 and indices >= 7 may elide them for certain symbols
3955 (gold does this). */
3956 int attrs_valid =
ed2dc618 3957 (dwarf2_per_objfile->index_table->version >= 7
da51c347
DE
3958 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3959
3190f0c6 3960 /* Don't crash on bad data. */
b76e467d 3961 if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 3962 + dwarf2_per_objfile->all_type_units.size ()))
3190f0c6 3963 {
b98664d3 3964 complaint (_(".gdb_index entry has bad CU index"
4262abfb
JK
3965 " [in module %s]"),
3966 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3967 continue;
3968 }
3969
ff4c9fec 3970 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3190f0c6 3971
da51c347 3972 /* Skip if already read in. */
43f3e411 3973 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3974 continue;
3975
8943b874
DE
3976 /* Check static vs global. */
3977 if (attrs_valid)
3978 {
2b79f376
SM
3979 bool is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3980
3981 if (iter->block_index.has_value ())
3982 {
3983 bool want_static = *iter->block_index == STATIC_BLOCK;
3984
3985 if (is_static != want_static)
3986 continue;
3987 }
3988
8943b874
DE
3989 /* Work around gold/15646. */
3990 if (!is_static && iter->global_seen)
3991 continue;
3992 if (!is_static)
3993 iter->global_seen = 1;
3994 }
da51c347
DE
3995
3996 /* Only check the symbol's kind if it has one. */
3997 if (attrs_valid)
3998 {
3999 switch (iter->domain)
4000 {
4001 case VAR_DOMAIN:
4002 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4003 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4004 /* Some types are also in VAR_DOMAIN. */
4005 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4006 continue;
4007 break;
4008 case STRUCT_DOMAIN:
4009 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4010 continue;
4011 break;
4012 case LABEL_DOMAIN:
4013 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4014 continue;
4015 break;
4016 default:
4017 break;
4018 }
4019 }
4020
4021 ++iter->next;
4022 return per_cu;
4023 }
4024
4025 return NULL;
4026}
4027
43f3e411 4028static struct compunit_symtab *
c7f839cb 4029dw2_lookup_symbol (struct objfile *objfile, block_enum block_index,
da51c347 4030 const char *name, domain_enum domain)
9291a0cd 4031{
43f3e411 4032 struct compunit_symtab *stab_best = NULL;
ed2dc618
SM
4033 struct dwarf2_per_objfile *dwarf2_per_objfile
4034 = get_dwarf2_per_objfile (objfile);
9291a0cd 4035
b5ec771e
PA
4036 lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4037
ed2dc618
SM
4038 struct dw2_symtab_iterator iter;
4039 struct dwarf2_per_cu_data *per_cu;
da51c347 4040
2b79f376 4041 dw2_symtab_iter_init (&iter, dwarf2_per_objfile, block_index, domain, name);
9291a0cd 4042
ed2dc618
SM
4043 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4044 {
4045 struct symbol *sym, *with_opaque = NULL;
58f0c718 4046 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
ed2dc618 4047 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
582942f4 4048 const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 4049
ed2dc618
SM
4050 sym = block_find_symbol (block, name, domain,
4051 block_find_non_opaque_type_preferred,
4052 &with_opaque);
b2e2f908 4053
ed2dc618
SM
4054 /* Some caution must be observed with overloaded functions
4055 and methods, since the index will not contain any overload
4056 information (but NAME might contain it). */
da51c347 4057
ed2dc618
SM
4058 if (sym != NULL
4059 && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4060 return stab;
4061 if (with_opaque != NULL
4062 && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4063 stab_best = stab;
da51c347 4064
ed2dc618 4065 /* Keep looking through other CUs. */
9291a0cd 4066 }
9291a0cd 4067
da51c347 4068 return stab_best;
9291a0cd
TT
4069}
4070
4071static void
4072dw2_print_stats (struct objfile *objfile)
4073{
ed2dc618
SM
4074 struct dwarf2_per_objfile *dwarf2_per_objfile
4075 = get_dwarf2_per_objfile (objfile);
b76e467d 4076 int total = (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 4077 + dwarf2_per_objfile->all_type_units.size ());
ed2dc618 4078 int count = 0;
9291a0cd 4079
ed2dc618 4080 for (int i = 0; i < total; ++i)
9291a0cd 4081 {
ff4c9fec 4082 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
9291a0cd 4083
43f3e411 4084 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4085 ++count;
4086 }
e4a48d9d 4087 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
4088 printf_filtered (_(" Number of unread CUs: %d\n"), count);
4089}
4090
779bd270
DE
4091/* This dumps minimal information about the index.
4092 It is called via "mt print objfiles".
4093 One use is to verify .gdb_index has been loaded by the
4094 gdb.dwarf2/gdb-index.exp testcase. */
4095
9291a0cd
TT
4096static void
4097dw2_dump (struct objfile *objfile)
4098{
ed2dc618
SM
4099 struct dwarf2_per_objfile *dwarf2_per_objfile
4100 = get_dwarf2_per_objfile (objfile);
4101
779bd270
DE
4102 gdb_assert (dwarf2_per_objfile->using_index);
4103 printf_filtered (".gdb_index:");
4104 if (dwarf2_per_objfile->index_table != NULL)
4105 {
4106 printf_filtered (" version %d\n",
4107 dwarf2_per_objfile->index_table->version);
4108 }
4109 else
4110 printf_filtered (" faked for \"readnow\"\n");
4111 printf_filtered ("\n");
9291a0cd
TT
4112}
4113
9291a0cd
TT
4114static void
4115dw2_expand_symtabs_for_function (struct objfile *objfile,
4116 const char *func_name)
4117{
ed2dc618
SM
4118 struct dwarf2_per_objfile *dwarf2_per_objfile
4119 = get_dwarf2_per_objfile (objfile);
da51c347 4120
ed2dc618
SM
4121 struct dw2_symtab_iterator iter;
4122 struct dwarf2_per_cu_data *per_cu;
da51c347 4123
2b79f376 4124 dw2_symtab_iter_init (&iter, dwarf2_per_objfile, {}, VAR_DOMAIN, func_name);
da51c347 4125
ed2dc618 4126 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
58f0c718 4127 dw2_instantiate_symtab (per_cu, false);
da51c347 4128
9291a0cd
TT
4129}
4130
4131static void
4132dw2_expand_all_symtabs (struct objfile *objfile)
4133{
ed2dc618
SM
4134 struct dwarf2_per_objfile *dwarf2_per_objfile
4135 = get_dwarf2_per_objfile (objfile);
b76e467d 4136 int total_units = (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 4137 + dwarf2_per_objfile->all_type_units.size ());
9291a0cd 4138
ed2dc618 4139 for (int i = 0; i < total_units; ++i)
9291a0cd 4140 {
ff4c9fec 4141 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
9291a0cd 4142
58f0c718
TT
4143 /* We don't want to directly expand a partial CU, because if we
4144 read it with the wrong language, then assertion failures can
4145 be triggered later on. See PR symtab/23010. So, tell
4146 dw2_instantiate_symtab to skip partial CUs -- any important
4147 partial CU will be read via DW_TAG_imported_unit anyway. */
4148 dw2_instantiate_symtab (per_cu, true);
9291a0cd
TT
4149 }
4150}
4151
4152static void
652a8996
JK
4153dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4154 const char *fullname)
9291a0cd 4155{
ed2dc618
SM
4156 struct dwarf2_per_objfile *dwarf2_per_objfile
4157 = get_dwarf2_per_objfile (objfile);
d4637a04
DE
4158
4159 /* We don't need to consider type units here.
4160 This is only called for examining code, e.g. expand_line_sal.
4161 There can be an order of magnitude (or more) more type units
4162 than comp units, and we avoid them if we can. */
4163
b76e467d 4164 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
9291a0cd 4165 {
3d7bb9d9 4166 /* We only need to look at symtabs not already expanded. */
43f3e411 4167 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4168 continue;
4169
b76e467d 4170 quick_file_names *file_data = dw2_get_file_names (per_cu);
7b9f3c50 4171 if (file_data == NULL)
9291a0cd
TT
4172 continue;
4173
b76e467d 4174 for (int j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4175 {
652a8996
JK
4176 const char *this_fullname = file_data->file_names[j];
4177
4178 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 4179 {
58f0c718 4180 dw2_instantiate_symtab (per_cu, false);
9291a0cd
TT
4181 break;
4182 }
4183 }
4184 }
4185}
4186
9291a0cd 4187static void
199b4314
TT
4188dw2_map_matching_symbols
4189 (struct objfile *objfile,
b054970d 4190 const lookup_name_info &name, domain_enum domain,
199b4314
TT
4191 int global,
4192 gdb::function_view<symbol_found_callback_ftype> callback,
199b4314 4193 symbol_compare_ftype *ordered_compare)
9291a0cd 4194{
40658b94 4195 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
4196 current language is Ada for a non-Ada objfile using GNU index. As Ada
4197 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
4198}
4199
e1ef7d7a
PA
4200/* Starting from a search name, return the string that finds the upper
4201 bound of all strings that start with SEARCH_NAME in a sorted name
4202 list. Returns the empty string to indicate that the upper bound is
4203 the end of the list. */
4204
4205static std::string
4206make_sort_after_prefix_name (const char *search_name)
4207{
4208 /* When looking to complete "func", we find the upper bound of all
4209 symbols that start with "func" by looking for where we'd insert
4210 the closest string that would follow "func" in lexicographical
4211 order. Usually, that's "func"-with-last-character-incremented,
4212 i.e. "fund". Mind non-ASCII characters, though. Usually those
4213 will be UTF-8 multi-byte sequences, but we can't be certain.
4214 Especially mind the 0xff character, which is a valid character in
4215 non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4216 rule out compilers allowing it in identifiers. Note that
4217 conveniently, strcmp/strcasecmp are specified to compare
4218 characters interpreted as unsigned char. So what we do is treat
4219 the whole string as a base 256 number composed of a sequence of
4220 base 256 "digits" and add 1 to it. I.e., adding 1 to 0xff wraps
4221 to 0, and carries 1 to the following more-significant position.
4222 If the very first character in SEARCH_NAME ends up incremented
4223 and carries/overflows, then the upper bound is the end of the
4224 list. The string after the empty string is also the empty
4225 string.
4226
4227 Some examples of this operation:
4228
4229 SEARCH_NAME => "+1" RESULT
4230
4231 "abc" => "abd"
4232 "ab\xff" => "ac"
4233 "\xff" "a" "\xff" => "\xff" "b"
4234 "\xff" => ""
4235 "\xff\xff" => ""
4236 "" => ""
4237
4238 Then, with these symbols for example:
4239
4240 func
4241 func1
4242 fund
4243
4244 completing "func" looks for symbols between "func" and
4245 "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4246 which finds "func" and "func1", but not "fund".
4247
4248 And with:
4249
4250 funcÿ (Latin1 'ÿ' [0xff])
4251 funcÿ1
4252 fund
4253
4254 completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4255 (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4256
4257 And with:
4258
4259 ÿÿ (Latin1 'ÿ' [0xff])
4260 ÿÿ1
4261
4262 completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4263 the end of the list.
4264 */
4265 std::string after = search_name;
4266 while (!after.empty () && (unsigned char) after.back () == 0xff)
4267 after.pop_back ();
4268 if (!after.empty ())
4269 after.back () = (unsigned char) after.back () + 1;
4270 return after;
4271}
4272
5c58de74 4273/* See declaration. */
61d96d7e 4274
5c58de74
PA
4275std::pair<std::vector<name_component>::const_iterator,
4276 std::vector<name_component>::const_iterator>
44ed8f3e 4277mapped_index_base::find_name_components_bounds
3b00ef10 4278 (const lookup_name_info &lookup_name_without_params, language lang) const
3f563c84 4279{
5c58de74
PA
4280 auto *name_cmp
4281 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
3f563c84 4282
3b00ef10
TT
4283 const char *lang_name
4284 = lookup_name_without_params.language_lookup_name (lang).c_str ();
9291a0cd 4285
3f563c84
PA
4286 /* Comparison function object for lower_bound that matches against a
4287 given symbol name. */
4288 auto lookup_compare_lower = [&] (const name_component &elem,
4289 const char *name)
4290 {
5c58de74 4291 const char *elem_qualified = this->symbol_name_at (elem.idx);
3f563c84
PA
4292 const char *elem_name = elem_qualified + elem.name_offset;
4293 return name_cmp (elem_name, name) < 0;
4294 };
4295
4296 /* Comparison function object for upper_bound that matches against a
4297 given symbol name. */
4298 auto lookup_compare_upper = [&] (const char *name,
4299 const name_component &elem)
4300 {
5c58de74 4301 const char *elem_qualified = this->symbol_name_at (elem.idx);
3f563c84
PA
4302 const char *elem_name = elem_qualified + elem.name_offset;
4303 return name_cmp (name, elem_name) < 0;
4304 };
4305
5c58de74
PA
4306 auto begin = this->name_components.begin ();
4307 auto end = this->name_components.end ();
3f563c84
PA
4308
4309 /* Find the lower bound. */
4310 auto lower = [&] ()
4311 {
3b00ef10 4312 if (lookup_name_without_params.completion_mode () && lang_name[0] == '\0')
3f563c84
PA
4313 return begin;
4314 else
3b00ef10 4315 return std::lower_bound (begin, end, lang_name, lookup_compare_lower);
3f563c84
PA
4316 } ();
4317
4318 /* Find the upper bound. */
4319 auto upper = [&] ()
4320 {
5c58de74 4321 if (lookup_name_without_params.completion_mode ())
3f563c84 4322 {
e1ef7d7a
PA
4323 /* In completion mode, we want UPPER to point past all
4324 symbols names that have the same prefix. I.e., with
4325 these symbols, and completing "func":
4326
4327 function << lower bound
4328 function1
4329 other_function << upper bound
4330
4331 We find the upper bound by looking for the insertion
4332 point of "func"-with-last-character-incremented,
4333 i.e. "fund". */
3b00ef10 4334 std::string after = make_sort_after_prefix_name (lang_name);
e1ef7d7a 4335 if (after.empty ())
3f563c84 4336 return end;
e6b2f5ef
PA
4337 return std::lower_bound (lower, end, after.c_str (),
4338 lookup_compare_lower);
3f563c84
PA
4339 }
4340 else
3b00ef10 4341 return std::upper_bound (lower, end, lang_name, lookup_compare_upper);
3f563c84
PA
4342 } ();
4343
5c58de74
PA
4344 return {lower, upper};
4345}
4346
4347/* See declaration. */
4348
4349void
44ed8f3e 4350mapped_index_base::build_name_components ()
5c58de74
PA
4351{
4352 if (!this->name_components.empty ())
4353 return;
4354
4355 this->name_components_casing = case_sensitivity;
4356 auto *name_cmp
4357 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4358
4359 /* The code below only knows how to break apart components of C++
4360 symbol names (and other languages that use '::' as
3b00ef10 4361 namespace/module separator) and Ada symbol names. */
44ed8f3e
PA
4362 auto count = this->symbol_name_count ();
4363 for (offset_type idx = 0; idx < count; idx++)
5c58de74 4364 {
44ed8f3e 4365 if (this->symbol_name_slot_invalid (idx))
5c58de74
PA
4366 continue;
4367
4368 const char *name = this->symbol_name_at (idx);
4369
4370 /* Add each name component to the name component table. */
4371 unsigned int previous_len = 0;
3b00ef10
TT
4372
4373 if (strstr (name, "::") != nullptr)
4374 {
4375 for (unsigned int current_len = cp_find_first_component (name);
4376 name[current_len] != '\0';
4377 current_len += cp_find_first_component (name + current_len))
4378 {
4379 gdb_assert (name[current_len] == ':');
4380 this->name_components.push_back ({previous_len, idx});
4381 /* Skip the '::'. */
4382 current_len += 2;
4383 previous_len = current_len;
4384 }
4385 }
4386 else
5c58de74 4387 {
3b00ef10
TT
4388 /* Handle the Ada encoded (aka mangled) form here. */
4389 for (const char *iter = strstr (name, "__");
4390 iter != nullptr;
4391 iter = strstr (iter, "__"))
4392 {
4393 this->name_components.push_back ({previous_len, idx});
4394 iter += 2;
4395 previous_len = iter - name;
4396 }
5c58de74 4397 }
3b00ef10 4398
5c58de74
PA
4399 this->name_components.push_back ({previous_len, idx});
4400 }
4401
4402 /* Sort name_components elements by name. */
4403 auto name_comp_compare = [&] (const name_component &left,
4404 const name_component &right)
4405 {
4406 const char *left_qualified = this->symbol_name_at (left.idx);
4407 const char *right_qualified = this->symbol_name_at (right.idx);
4408
4409 const char *left_name = left_qualified + left.name_offset;
4410 const char *right_name = right_qualified + right.name_offset;
4411
4412 return name_cmp (left_name, right_name) < 0;
4413 };
4414
4415 std::sort (this->name_components.begin (),
4416 this->name_components.end (),
4417 name_comp_compare);
4418}
4419
4420/* Helper for dw2_expand_symtabs_matching that works with a
44ed8f3e
PA
4421 mapped_index_base instead of the containing objfile. This is split
4422 to a separate function in order to be able to unit test the
4423 name_components matching using a mock mapped_index_base. For each
5c58de74 4424 symbol name that matches, calls MATCH_CALLBACK, passing it the
44ed8f3e 4425 symbol's index in the mapped_index_base symbol table. */
5c58de74
PA
4426
4427static void
4428dw2_expand_symtabs_matching_symbol
44ed8f3e 4429 (mapped_index_base &index,
5c58de74
PA
4430 const lookup_name_info &lookup_name_in,
4431 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4432 enum search_domain kind,
3b00ef10 4433 gdb::function_view<bool (offset_type)> match_callback)
5c58de74
PA
4434{
4435 lookup_name_info lookup_name_without_params
4436 = lookup_name_in.make_ignore_params ();
5c58de74
PA
4437
4438 /* Build the symbol name component sorted vector, if we haven't
4439 yet. */
4440 index.build_name_components ();
4441
3f563c84
PA
4442 /* The same symbol may appear more than once in the range though.
4443 E.g., if we're looking for symbols that complete "w", and we have
4444 a symbol named "w1::w2", we'll find the two name components for
4445 that same symbol in the range. To be sure we only call the
4446 callback once per symbol, we first collect the symbol name
4447 indexes that matched in a temporary vector and ignore
4448 duplicates. */
4449 std::vector<offset_type> matches;
3f563c84 4450
3b00ef10
TT
4451 struct name_and_matcher
4452 {
4453 symbol_name_matcher_ftype *matcher;
4454 const std::string &name;
4455
4456 bool operator== (const name_and_matcher &other) const
3f563c84 4457 {
3b00ef10
TT
4458 return matcher == other.matcher && name == other.name;
4459 }
4460 };
4461
4462 /* A vector holding all the different symbol name matchers, for all
4463 languages. */
4464 std::vector<name_and_matcher> matchers;
4465
4466 for (int i = 0; i < nr_languages; i++)
4467 {
4468 enum language lang_e = (enum language) i;
4469
4470 const language_defn *lang = language_def (lang_e);
4471 symbol_name_matcher_ftype *name_matcher
4472 = get_symbol_name_matcher (lang, lookup_name_without_params);
3f563c84 4473
3b00ef10
TT
4474 name_and_matcher key {
4475 name_matcher,
4476 lookup_name_without_params.language_lookup_name (lang_e)
4477 };
4478
4479 /* Don't insert the same comparison routine more than once.
4480 Note that we do this linear walk. This is not a problem in
4481 practice because the number of supported languages is
4482 low. */
4483 if (std::find (matchers.begin (), matchers.end (), key)
4484 != matchers.end ())
9291a0cd 4485 continue;
3b00ef10
TT
4486 matchers.push_back (std::move (key));
4487
4488 auto bounds
4489 = index.find_name_components_bounds (lookup_name_without_params,
4490 lang_e);
4491
4492 /* Now for each symbol name in range, check to see if we have a name
4493 match, and if so, call the MATCH_CALLBACK callback. */
4494
4495 for (; bounds.first != bounds.second; ++bounds.first)
4496 {
4497 const char *qualified = index.symbol_name_at (bounds.first->idx);
4498
4499 if (!name_matcher (qualified, lookup_name_without_params, NULL)
4500 || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4501 continue;
9291a0cd 4502
3b00ef10
TT
4503 matches.push_back (bounds.first->idx);
4504 }
3f563c84
PA
4505 }
4506
4507 std::sort (matches.begin (), matches.end ());
4508
4509 /* Finally call the callback, once per match. */
4510 ULONGEST prev = -1;
4511 for (offset_type idx : matches)
4512 {
4513 if (prev != idx)
4514 {
3b00ef10
TT
4515 if (!match_callback (idx))
4516 break;
3f563c84
PA
4517 prev = idx;
4518 }
4519 }
4520
4521 /* Above we use a type wider than idx's for 'prev', since 0 and
4522 (offset_type)-1 are both possible values. */
4523 static_assert (sizeof (prev) > sizeof (offset_type), "");
4524}
4525
c62446b1
PA
4526#if GDB_SELF_TEST
4527
4528namespace selftests { namespace dw2_expand_symtabs_matching {
4529
a3c5fafd
PA
4530/* A mock .gdb_index/.debug_names-like name index table, enough to
4531 exercise dw2_expand_symtabs_matching_symbol, which works with the
4532 mapped_index_base interface. Builds an index from the symbol list
4533 passed as parameter to the constructor. */
4534class mock_mapped_index : public mapped_index_base
c62446b1
PA
4535{
4536public:
a3c5fafd
PA
4537 mock_mapped_index (gdb::array_view<const char *> symbols)
4538 : m_symbol_table (symbols)
c62446b1
PA
4539 {}
4540
a3c5fafd 4541 DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
c62446b1 4542
a3c5fafd 4543 /* Return the number of names in the symbol table. */
632e107b 4544 size_t symbol_name_count () const override
c62446b1 4545 {
a3c5fafd 4546 return m_symbol_table.size ();
c62446b1
PA
4547 }
4548
a3c5fafd 4549 /* Get the name of the symbol at IDX in the symbol table. */
632e107b 4550 const char *symbol_name_at (offset_type idx) const override
a3c5fafd
PA
4551 {
4552 return m_symbol_table[idx];
4553 }
c62446b1 4554
a3c5fafd
PA
4555private:
4556 gdb::array_view<const char *> m_symbol_table;
c62446b1
PA
4557};
4558
4559/* Convenience function that converts a NULL pointer to a "<null>"
4560 string, to pass to print routines. */
4561
4562static const char *
4563string_or_null (const char *str)
4564{
4565 return str != NULL ? str : "<null>";
4566}
4567
4568/* Check if a lookup_name_info built from
4569 NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4570 index. EXPECTED_LIST is the list of expected matches, in expected
4571 matching order. If no match expected, then an empty list is
4572 specified. Returns true on success. On failure prints a warning
4573 indicating the file:line that failed, and returns false. */
4574
4575static bool
4576check_match (const char *file, int line,
4577 mock_mapped_index &mock_index,
4578 const char *name, symbol_name_match_type match_type,
4579 bool completion_mode,
4580 std::initializer_list<const char *> expected_list)
4581{
4582 lookup_name_info lookup_name (name, match_type, completion_mode);
4583
4584 bool matched = true;
4585
4586 auto mismatch = [&] (const char *expected_str,
4587 const char *got)
4588 {
4589 warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4590 "expected=\"%s\", got=\"%s\"\n"),
4591 file, line,
4592 (match_type == symbol_name_match_type::FULL
4593 ? "FULL" : "WILD"),
4594 name, string_or_null (expected_str), string_or_null (got));
4595 matched = false;
4596 };
4597
4598 auto expected_it = expected_list.begin ();
4599 auto expected_end = expected_list.end ();
4600
a3c5fafd 4601 dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
c62446b1
PA
4602 NULL, ALL_DOMAIN,
4603 [&] (offset_type idx)
4604 {
a3c5fafd 4605 const char *matched_name = mock_index.symbol_name_at (idx);
c62446b1
PA
4606 const char *expected_str
4607 = expected_it == expected_end ? NULL : *expected_it++;
4608
4609 if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4610 mismatch (expected_str, matched_name);
3b00ef10 4611 return true;
c62446b1
PA
4612 });
4613
4614 const char *expected_str
4615 = expected_it == expected_end ? NULL : *expected_it++;
4616 if (expected_str != NULL)
4617 mismatch (expected_str, NULL);
4618
4619 return matched;
4620}
4621
4622/* The symbols added to the mock mapped_index for testing (in
4623 canonical form). */
4624static const char *test_symbols[] = {
4625 "function",
4626 "std::bar",
4627 "std::zfunction",
4628 "std::zfunction2",
4629 "w1::w2",
4630 "ns::foo<char*>",
4631 "ns::foo<int>",
4632 "ns::foo<long>",
a20714ff
PA
4633 "ns2::tmpl<int>::foo2",
4634 "(anonymous namespace)::A::B::C",
c62446b1 4635
e1ef7d7a
PA
4636 /* These are used to check that the increment-last-char in the
4637 matching algorithm for completion doesn't match "t1_fund" when
4638 completing "t1_func". */
4639 "t1_func",
4640 "t1_func1",
4641 "t1_fund",
4642 "t1_fund1",
4643
4644 /* A UTF-8 name with multi-byte sequences to make sure that
4645 cp-name-parser understands this as a single identifier ("função"
4646 is "function" in PT). */
4647 u8"u8função",
4648
4649 /* \377 (0xff) is Latin1 'ÿ'. */
4650 "yfunc\377",
4651
4652 /* \377 (0xff) is Latin1 'ÿ'. */
4653 "\377",
4654 "\377\377123",
4655
c62446b1
PA
4656 /* A name with all sorts of complications. Starts with "z" to make
4657 it easier for the completion tests below. */
4658#define Z_SYM_NAME \
4659 "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4660 "::tuple<(anonymous namespace)::ui*, " \
4661 "std::default_delete<(anonymous namespace)::ui>, void>"
4662
4663 Z_SYM_NAME
4664};
4665
a3c5fafd
PA
4666/* Returns true if the mapped_index_base::find_name_component_bounds
4667 method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4668 in completion mode. */
5c58de74
PA
4669
4670static bool
a3c5fafd 4671check_find_bounds_finds (mapped_index_base &index,
5c58de74
PA
4672 const char *search_name,
4673 gdb::array_view<const char *> expected_syms)
4674{
4675 lookup_name_info lookup_name (search_name,
4676 symbol_name_match_type::FULL, true);
4677
3b00ef10
TT
4678 auto bounds = index.find_name_components_bounds (lookup_name,
4679 language_cplus);
5c58de74
PA
4680
4681 size_t distance = std::distance (bounds.first, bounds.second);
4682 if (distance != expected_syms.size ())
4683 return false;
4684
4685 for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4686 {
4687 auto nc_elem = bounds.first + exp_elem;
4688 const char *qualified = index.symbol_name_at (nc_elem->idx);
4689 if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4690 return false;
4691 }
4692
4693 return true;
4694}
4695
4696/* Test the lower-level mapped_index::find_name_component_bounds
4697 method. */
4698
c62446b1 4699static void
5c58de74
PA
4700test_mapped_index_find_name_component_bounds ()
4701{
4702 mock_mapped_index mock_index (test_symbols);
4703
a3c5fafd 4704 mock_index.build_name_components ();
5c58de74
PA
4705
4706 /* Test the lower-level mapped_index::find_name_component_bounds
4707 method in completion mode. */
4708 {
4709 static const char *expected_syms[] = {
4710 "t1_func",
4711 "t1_func1",
5c58de74
PA
4712 };
4713
a3c5fafd 4714 SELF_CHECK (check_find_bounds_finds (mock_index,
5c58de74
PA
4715 "t1_func", expected_syms));
4716 }
4717
4718 /* Check that the increment-last-char in the name matching algorithm
4719 for completion doesn't get confused with Ansi1 'ÿ' / 0xff. */
4720 {
4721 static const char *expected_syms1[] = {
4722 "\377",
4723 "\377\377123",
4724 };
a3c5fafd 4725 SELF_CHECK (check_find_bounds_finds (mock_index,
5c58de74
PA
4726 "\377", expected_syms1));
4727
4728 static const char *expected_syms2[] = {
4729 "\377\377123",
4730 };
a3c5fafd 4731 SELF_CHECK (check_find_bounds_finds (mock_index,
5c58de74
PA
4732 "\377\377", expected_syms2));
4733 }
4734}
4735
4736/* Test dw2_expand_symtabs_matching_symbol. */
4737
4738static void
4739test_dw2_expand_symtabs_matching_symbol ()
c62446b1
PA
4740{
4741 mock_mapped_index mock_index (test_symbols);
4742
4743 /* We let all tests run until the end even if some fails, for debug
4744 convenience. */
4745 bool any_mismatch = false;
4746
4747 /* Create the expected symbols list (an initializer_list). Needed
4748 because lists have commas, and we need to pass them to CHECK,
4749 which is a macro. */
4750#define EXPECT(...) { __VA_ARGS__ }
4751
4752 /* Wrapper for check_match that passes down the current
4753 __FILE__/__LINE__. */
4754#define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST) \
4755 any_mismatch |= !check_match (__FILE__, __LINE__, \
4756 mock_index, \
4757 NAME, MATCH_TYPE, COMPLETION_MODE, \
4758 EXPECTED_LIST)
4759
4760 /* Identity checks. */
4761 for (const char *sym : test_symbols)
4762 {
4763 /* Should be able to match all existing symbols. */
4764 CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4765 EXPECT (sym));
4766
4767 /* Should be able to match all existing symbols with
4768 parameters. */
4769 std::string with_params = std::string (sym) + "(int)";
4770 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4771 EXPECT (sym));
4772
4773 /* Should be able to match all existing symbols with
4774 parameters and qualifiers. */
4775 with_params = std::string (sym) + " ( int ) const";
4776 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4777 EXPECT (sym));
4778
4779 /* This should really find sym, but cp-name-parser.y doesn't
4780 know about lvalue/rvalue qualifiers yet. */
4781 with_params = std::string (sym) + " ( int ) &&";
4782 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4783 {});
4784 }
4785
e1ef7d7a
PA
4786 /* Check that the name matching algorithm for completion doesn't get
4787 confused with Latin1 'ÿ' / 0xff. */
4788 {
4789 static const char str[] = "\377";
4790 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4791 EXPECT ("\377", "\377\377123"));
4792 }
4793
4794 /* Check that the increment-last-char in the matching algorithm for
4795 completion doesn't match "t1_fund" when completing "t1_func". */
4796 {
4797 static const char str[] = "t1_func";
4798 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4799 EXPECT ("t1_func", "t1_func1"));
4800 }
4801
c62446b1
PA
4802 /* Check that completion mode works at each prefix of the expected
4803 symbol name. */
4804 {
4805 static const char str[] = "function(int)";
4806 size_t len = strlen (str);
4807 std::string lookup;
4808
4809 for (size_t i = 1; i < len; i++)
4810 {
4811 lookup.assign (str, i);
4812 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4813 EXPECT ("function"));
4814 }
4815 }
4816
4817 /* While "w" is a prefix of both components, the match function
4818 should still only be called once. */
4819 {
4820 CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4821 EXPECT ("w1::w2"));
a20714ff
PA
4822 CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4823 EXPECT ("w1::w2"));
c62446b1
PA
4824 }
4825
4826 /* Same, with a "complicated" symbol. */
4827 {
4828 static const char str[] = Z_SYM_NAME;
4829 size_t len = strlen (str);
4830 std::string lookup;
4831
4832 for (size_t i = 1; i < len; i++)
4833 {
4834 lookup.assign (str, i);
4835 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4836 EXPECT (Z_SYM_NAME));
4837 }
4838 }
4839
4840 /* In FULL mode, an incomplete symbol doesn't match. */
4841 {
4842 CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4843 {});
4844 }
4845
4846 /* A complete symbol with parameters matches any overload, since the
4847 index has no overload info. */
4848 {
4849 CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4850 EXPECT ("std::zfunction", "std::zfunction2"));
a20714ff
PA
4851 CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4852 EXPECT ("std::zfunction", "std::zfunction2"));
4853 CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4854 EXPECT ("std::zfunction", "std::zfunction2"));
c62446b1
PA
4855 }
4856
4857 /* Check that whitespace is ignored appropriately. A symbol with a
4858 template argument list. */
4859 {
4860 static const char expected[] = "ns::foo<int>";
4861 CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4862 EXPECT (expected));
a20714ff
PA
4863 CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4864 EXPECT (expected));
c62446b1
PA
4865 }
4866
4867 /* Check that whitespace is ignored appropriately. A symbol with a
4868 template argument list that includes a pointer. */
4869 {
4870 static const char expected[] = "ns::foo<char*>";
4871 /* Try both completion and non-completion modes. */
4872 static const bool completion_mode[2] = {false, true};
4873 for (size_t i = 0; i < 2; i++)
4874 {
4875 CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4876 completion_mode[i], EXPECT (expected));
a20714ff
PA
4877 CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4878 completion_mode[i], EXPECT (expected));
c62446b1
PA
4879
4880 CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4881 completion_mode[i], EXPECT (expected));
a20714ff
PA
4882 CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4883 completion_mode[i], EXPECT (expected));
c62446b1
PA
4884 }
4885 }
4886
4887 {
4888 /* Check method qualifiers are ignored. */
4889 static const char expected[] = "ns::foo<char*>";
4890 CHECK_MATCH ("ns :: foo < char * > ( int ) const",
4891 symbol_name_match_type::FULL, true, EXPECT (expected));
4892 CHECK_MATCH ("ns :: foo < char * > ( int ) &&",
4893 symbol_name_match_type::FULL, true, EXPECT (expected));
a20714ff
PA
4894 CHECK_MATCH ("foo < char * > ( int ) const",
4895 symbol_name_match_type::WILD, true, EXPECT (expected));
4896 CHECK_MATCH ("foo < char * > ( int ) &&",
4897 symbol_name_match_type::WILD, true, EXPECT (expected));
c62446b1
PA
4898 }
4899
4900 /* Test lookup names that don't match anything. */
4901 {
a20714ff
PA
4902 CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4903 {});
4904
c62446b1
PA
4905 CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4906 {});
4907 }
4908
a20714ff
PA
4909 /* Some wild matching tests, exercising "(anonymous namespace)",
4910 which should not be confused with a parameter list. */
4911 {
4912 static const char *syms[] = {
4913 "A::B::C",
4914 "B::C",
4915 "C",
4916 "A :: B :: C ( int )",
4917 "B :: C ( int )",
4918 "C ( int )",
4919 };
4920
4921 for (const char *s : syms)
4922 {
4923 CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4924 EXPECT ("(anonymous namespace)::A::B::C"));
4925 }
4926 }
4927
4928 {
4929 static const char expected[] = "ns2::tmpl<int>::foo2";
4930 CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4931 EXPECT (expected));
4932 CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4933 EXPECT (expected));
4934 }
4935
c62446b1
PA
4936 SELF_CHECK (!any_mismatch);
4937
4938#undef EXPECT
4939#undef CHECK_MATCH
4940}
4941
5c58de74
PA
4942static void
4943run_test ()
4944{
4945 test_mapped_index_find_name_component_bounds ();
4946 test_dw2_expand_symtabs_matching_symbol ();
4947}
4948
c62446b1
PA
4949}} // namespace selftests::dw2_expand_symtabs_matching
4950
4951#endif /* GDB_SELF_TEST */
4952
4b514bc8
JK
4953/* If FILE_MATCHER is NULL or if PER_CU has
4954 dwarf2_per_cu_quick_data::MARK set (see
4955 dw_expand_symtabs_matching_file_matcher), expand the CU and call
4956 EXPANSION_NOTIFY on it. */
4957
4958static void
4959dw2_expand_symtabs_matching_one
4960 (struct dwarf2_per_cu_data *per_cu,
4961 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4962 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
4963{
4964 if (file_matcher == NULL || per_cu->v.quick->mark)
4965 {
4966 bool symtab_was_null
4967 = (per_cu->v.quick->compunit_symtab == NULL);
4968
58f0c718 4969 dw2_instantiate_symtab (per_cu, false);
4b514bc8
JK
4970
4971 if (expansion_notify != NULL
4972 && symtab_was_null
4973 && per_cu->v.quick->compunit_symtab != NULL)
4974 expansion_notify (per_cu->v.quick->compunit_symtab);
4975 }
4976}
4977
3f563c84
PA
4978/* Helper for dw2_expand_matching symtabs. Called on each symbol
4979 matched, to expand corresponding CUs that were marked. IDX is the
4980 index of the symbol name that matched. */
4981
4982static void
4983dw2_expand_marked_cus
ed2dc618 4984 (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
3f563c84
PA
4985 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4986 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
4987 search_domain kind)
4988{
3f563c84
PA
4989 offset_type *vec, vec_len, vec_idx;
4990 bool global_seen = false;
ed2dc618 4991 mapped_index &index = *dwarf2_per_objfile->index_table;
3f563c84 4992
61920122 4993 vec = (offset_type *) (index.constant_pool
f00a2de2 4994 + MAYBE_SWAP (index.symbol_table[idx].vec));
61920122
PA
4995 vec_len = MAYBE_SWAP (vec[0]);
4996 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
4997 {
61920122
PA
4998 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
4999 /* This value is only valid for index versions >= 7. */
5000 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5001 gdb_index_symbol_kind symbol_kind =
5002 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5003 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5004 /* Only check the symbol attributes if they're present.
5005 Indices prior to version 7 don't record them,
5006 and indices >= 7 may elide them for certain symbols
5007 (gold does this). */
5008 int attrs_valid =
5009 (index.version >= 7
5010 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5011
5012 /* Work around gold/15646. */
5013 if (attrs_valid)
9291a0cd 5014 {
61920122
PA
5015 if (!is_static && global_seen)
5016 continue;
5017 if (!is_static)
5018 global_seen = true;
5019 }
3190f0c6 5020
61920122
PA
5021 /* Only check the symbol's kind if it has one. */
5022 if (attrs_valid)
5023 {
5024 switch (kind)
8943b874 5025 {
61920122
PA
5026 case VARIABLES_DOMAIN:
5027 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5028 continue;
5029 break;
5030 case FUNCTIONS_DOMAIN:
5031 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
8943b874 5032 continue;
61920122
PA
5033 break;
5034 case TYPES_DOMAIN:
5035 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5036 continue;
5037 break;
5038 default:
5039 break;
8943b874 5040 }
61920122 5041 }
8943b874 5042
61920122 5043 /* Don't crash on bad data. */
b76e467d 5044 if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 5045 + dwarf2_per_objfile->all_type_units.size ()))
61920122 5046 {
b98664d3 5047 complaint (_(".gdb_index entry has bad CU index"
ed2dc618
SM
5048 " [in module %s]"),
5049 objfile_name (dwarf2_per_objfile->objfile));
61920122
PA
5050 continue;
5051 }
5052
ff4c9fec 5053 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
4b514bc8
JK
5054 dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5055 expansion_notify);
61920122
PA
5056 }
5057}
5058
4b514bc8
JK
5059/* If FILE_MATCHER is non-NULL, set all the
5060 dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5061 that match FILE_MATCHER. */
5062
61920122 5063static void
4b514bc8 5064dw_expand_symtabs_matching_file_matcher
ed2dc618
SM
5065 (struct dwarf2_per_objfile *dwarf2_per_objfile,
5066 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
61920122 5067{
4b514bc8 5068 if (file_matcher == NULL)
61920122
PA
5069 return;
5070
4b514bc8
JK
5071 objfile *const objfile = dwarf2_per_objfile->objfile;
5072
5073 htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5074 htab_eq_pointer,
5075 NULL, xcalloc, xfree));
5076 htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
61920122
PA
5077 htab_eq_pointer,
5078 NULL, xcalloc, xfree));
61920122 5079
4b514bc8
JK
5080 /* The rule is CUs specify all the files, including those used by
5081 any TU, so there's no need to scan TUs here. */
61920122 5082
b76e467d 5083 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
927aa2e7 5084 {
927aa2e7
JK
5085 QUIT;
5086
5087 per_cu->v.quick->mark = 0;
5088
5089 /* We only need to look at symtabs not already expanded. */
5090 if (per_cu->v.quick->compunit_symtab)
5091 continue;
5092
b76e467d 5093 quick_file_names *file_data = dw2_get_file_names (per_cu);
927aa2e7
JK
5094 if (file_data == NULL)
5095 continue;
5096
5097 if (htab_find (visited_not_found.get (), file_data) != NULL)
5098 continue;
5099 else if (htab_find (visited_found.get (), file_data) != NULL)
5100 {
5101 per_cu->v.quick->mark = 1;
5102 continue;
5103 }
5104
b76e467d 5105 for (int j = 0; j < file_data->num_file_names; ++j)
927aa2e7
JK
5106 {
5107 const char *this_real_name;
5108
5109 if (file_matcher (file_data->file_names[j], false))
5110 {
5111 per_cu->v.quick->mark = 1;
5112 break;
5113 }
5114
5115 /* Before we invoke realpath, which can get expensive when many
5116 files are involved, do a quick comparison of the basenames. */
5117 if (!basenames_may_differ
5118 && !file_matcher (lbasename (file_data->file_names[j]),
5119 true))
5120 continue;
5121
5122 this_real_name = dw2_get_real_path (objfile, file_data, j);
5123 if (file_matcher (this_real_name, false))
5124 {
5125 per_cu->v.quick->mark = 1;
5126 break;
5127 }
5128 }
5129
b76e467d
SM
5130 void **slot = htab_find_slot (per_cu->v.quick->mark
5131 ? visited_found.get ()
5132 : visited_not_found.get (),
5133 file_data, INSERT);
927aa2e7
JK
5134 *slot = file_data;
5135 }
5136}
5137
5138static void
5139dw2_expand_symtabs_matching
5140 (struct objfile *objfile,
5141 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5142 const lookup_name_info &lookup_name,
5143 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5144 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5145 enum search_domain kind)
5146{
ed2dc618
SM
5147 struct dwarf2_per_objfile *dwarf2_per_objfile
5148 = get_dwarf2_per_objfile (objfile);
927aa2e7
JK
5149
5150 /* index_table is NULL if OBJF_READNOW. */
5151 if (!dwarf2_per_objfile->index_table)
5152 return;
5153
ed2dc618 5154 dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
927aa2e7
JK
5155
5156 mapped_index &index = *dwarf2_per_objfile->index_table;
5157
5158 dw2_expand_symtabs_matching_symbol (index, lookup_name,
5159 symbol_matcher,
5160 kind, [&] (offset_type idx)
5161 {
ed2dc618 5162 dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
927aa2e7 5163 expansion_notify, kind);
3b00ef10 5164 return true;
927aa2e7
JK
5165 });
5166}
5167
5168/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5169 symtab. */
5170
5171static struct compunit_symtab *
5172recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5173 CORE_ADDR pc)
5174{
5175 int i;
5176
5177 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5178 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5179 return cust;
5180
5181 if (cust->includes == NULL)
5182 return NULL;
5183
5184 for (i = 0; cust->includes[i]; ++i)
5185 {
5186 struct compunit_symtab *s = cust->includes[i];
5187
5188 s = recursively_find_pc_sect_compunit_symtab (s, pc);
5189 if (s != NULL)
5190 return s;
5191 }
5192
5193 return NULL;
5194}
5195
5196static struct compunit_symtab *
5197dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5198 struct bound_minimal_symbol msymbol,
5199 CORE_ADDR pc,
5200 struct obj_section *section,
5201 int warn_if_readin)
5202{
5203 struct dwarf2_per_cu_data *data;
5204 struct compunit_symtab *result;
5205
d320c2b5 5206 if (!objfile->partial_symtabs->psymtabs_addrmap)
927aa2e7
JK
5207 return NULL;
5208
79748972
TT
5209 CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5210 SECT_OFF_TEXT (objfile));
d320c2b5
TT
5211 data = (struct dwarf2_per_cu_data *) addrmap_find
5212 (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
927aa2e7
JK
5213 if (!data)
5214 return NULL;
5215
5216 if (warn_if_readin && data->v.quick->compunit_symtab)
5217 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5218 paddress (get_objfile_arch (objfile), pc));
5219
5220 result
58f0c718
TT
5221 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5222 false),
927aa2e7
JK
5223 pc);
5224 gdb_assert (result != NULL);
5225 return result;
5226}
5227
5228static void
5229dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5230 void *data, int need_fullname)
5231{
ed2dc618
SM
5232 struct dwarf2_per_objfile *dwarf2_per_objfile
5233 = get_dwarf2_per_objfile (objfile);
927aa2e7
JK
5234
5235 if (!dwarf2_per_objfile->filenames_cache)
5236 {
5237 dwarf2_per_objfile->filenames_cache.emplace ();
5238
5239 htab_up visited (htab_create_alloc (10,
5240 htab_hash_pointer, htab_eq_pointer,
5241 NULL, xcalloc, xfree));
5242
5243 /* The rule is CUs specify all the files, including those used
5244 by any TU, so there's no need to scan TUs here. We can
5245 ignore file names coming from already-expanded CUs. */
5246
b76e467d 5247 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
927aa2e7 5248 {
927aa2e7
JK
5249 if (per_cu->v.quick->compunit_symtab)
5250 {
5251 void **slot = htab_find_slot (visited.get (),
5252 per_cu->v.quick->file_names,
5253 INSERT);
5254
5255 *slot = per_cu->v.quick->file_names;
5256 }
5257 }
5258
b76e467d 5259 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
927aa2e7 5260 {
927aa2e7
JK
5261 /* We only need to look at symtabs not already expanded. */
5262 if (per_cu->v.quick->compunit_symtab)
5263 continue;
5264
b76e467d 5265 quick_file_names *file_data = dw2_get_file_names (per_cu);
927aa2e7
JK
5266 if (file_data == NULL)
5267 continue;
5268
b76e467d 5269 void **slot = htab_find_slot (visited.get (), file_data, INSERT);
927aa2e7
JK
5270 if (*slot)
5271 {
5272 /* Already visited. */
5273 continue;
5274 }
5275 *slot = file_data;
5276
5277 for (int j = 0; j < file_data->num_file_names; ++j)
5278 {
5279 const char *filename = file_data->file_names[j];
5280 dwarf2_per_objfile->filenames_cache->seen (filename);
5281 }
5282 }
5283 }
5284
5285 dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5286 {
5287 gdb::unique_xmalloc_ptr<char> this_real_name;
5288
5289 if (need_fullname)
5290 this_real_name = gdb_realpath (filename);
5291 (*fun) (filename, this_real_name.get (), data);
5292 });
5293}
5294
5295static int
5296dw2_has_symbols (struct objfile *objfile)
5297{
5298 return 1;
5299}
5300
5301const struct quick_symbol_functions dwarf2_gdb_index_functions =
5302{
5303 dw2_has_symbols,
5304 dw2_find_last_source_symtab,
5305 dw2_forget_cached_source_info,
5306 dw2_map_symtabs_matching_filename,
5307 dw2_lookup_symbol,
5308 dw2_print_stats,
5309 dw2_dump,
927aa2e7
JK
5310 dw2_expand_symtabs_for_function,
5311 dw2_expand_all_symtabs,
5312 dw2_expand_symtabs_with_fullname,
5313 dw2_map_matching_symbols,
5314 dw2_expand_symtabs_matching,
5315 dw2_find_pc_sect_compunit_symtab,
5316 NULL,
5317 dw2_map_symbol_filenames
5318};
5319
5320/* DWARF-5 debug_names reader. */
5321
5322/* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension. */
5323static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5324
5325/* A helper function that reads the .debug_names section in SECTION
5326 and fills in MAP. FILENAME is the name of the file containing the
5327 section; it is used for error reporting.
5328
5329 Returns true if all went well, false otherwise. */
5330
5331static bool
5332read_debug_names_from_section (struct objfile *objfile,
5333 const char *filename,
5334 struct dwarf2_section_info *section,
5335 mapped_debug_names &map)
5336{
5337 if (dwarf2_section_empty_p (section))
5338 return false;
5339
5340 /* Older elfutils strip versions could keep the section in the main
5341 executable while splitting it for the separate debug info file. */
5342 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5343 return false;
5344
5345 dwarf2_read_section (objfile, section);
5346
5347 map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5348
5349 const gdb_byte *addr = section->buffer;
5350
5351 bfd *const abfd = get_section_bfd_owner (section);
5352
5353 unsigned int bytes_read;
5354 LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5355 addr += bytes_read;
5356
5357 map.dwarf5_is_dwarf64 = bytes_read != 4;
5358 map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5359 if (bytes_read + length != section->size)
5360 {
5361 /* There may be multiple per-CU indices. */
5362 warning (_("Section .debug_names in %s length %s does not match "
5363 "section length %s, ignoring .debug_names."),
5364 filename, plongest (bytes_read + length),
5365 pulongest (section->size));
5366 return false;
5367 }
5368
5369 /* The version number. */
5370 uint16_t version = read_2_bytes (abfd, addr);
5371 addr += 2;
5372 if (version != 5)
5373 {
5374 warning (_("Section .debug_names in %s has unsupported version %d, "
5375 "ignoring .debug_names."),
5376 filename, version);
5377 return false;
5378 }
5379
5380 /* Padding. */
5381 uint16_t padding = read_2_bytes (abfd, addr);
5382 addr += 2;
5383 if (padding != 0)
5384 {
5385 warning (_("Section .debug_names in %s has unsupported padding %d, "
5386 "ignoring .debug_names."),
5387 filename, padding);
5388 return false;
5389 }
5390
5391 /* comp_unit_count - The number of CUs in the CU list. */
5392 map.cu_count = read_4_bytes (abfd, addr);
5393 addr += 4;
5394
5395 /* local_type_unit_count - The number of TUs in the local TU
5396 list. */
5397 map.tu_count = read_4_bytes (abfd, addr);
5398 addr += 4;
5399
5400 /* foreign_type_unit_count - The number of TUs in the foreign TU
5401 list. */
5402 uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5403 addr += 4;
5404 if (foreign_tu_count != 0)
5405 {
5406 warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5407 "ignoring .debug_names."),
5408 filename, static_cast<unsigned long> (foreign_tu_count));
5409 return false;
5410 }
5411
5412 /* bucket_count - The number of hash buckets in the hash lookup
5413 table. */
5414 map.bucket_count = read_4_bytes (abfd, addr);
5415 addr += 4;
5416
5417 /* name_count - The number of unique names in the index. */
5418 map.name_count = read_4_bytes (abfd, addr);
5419 addr += 4;
5420
5421 /* abbrev_table_size - The size in bytes of the abbreviations
5422 table. */
5423 uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5424 addr += 4;
5425
5426 /* augmentation_string_size - The size in bytes of the augmentation
5427 string. This value is rounded up to a multiple of 4. */
5428 uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5429 addr += 4;
5430 map.augmentation_is_gdb = ((augmentation_string_size
5431 == sizeof (dwarf5_augmentation))
5432 && memcmp (addr, dwarf5_augmentation,
5433 sizeof (dwarf5_augmentation)) == 0);
5434 augmentation_string_size += (-augmentation_string_size) & 3;
5435 addr += augmentation_string_size;
5436
5437 /* List of CUs */
5438 map.cu_table_reordered = addr;
5439 addr += map.cu_count * map.offset_size;
5440
5441 /* List of Local TUs */
5442 map.tu_table_reordered = addr;
5443 addr += map.tu_count * map.offset_size;
5444
5445 /* Hash Lookup Table */
5446 map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5447 addr += map.bucket_count * 4;
5448 map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5449 addr += map.name_count * 4;
5450
5451 /* Name Table */
5452 map.name_table_string_offs_reordered = addr;
5453 addr += map.name_count * map.offset_size;
5454 map.name_table_entry_offs_reordered = addr;
5455 addr += map.name_count * map.offset_size;
5456
5457 const gdb_byte *abbrev_table_start = addr;
5458 for (;;)
5459 {
927aa2e7
JK
5460 const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5461 addr += bytes_read;
5462 if (index_num == 0)
5463 break;
5464
5465 const auto insertpair
5466 = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5467 if (!insertpair.second)
5468 {
5469 warning (_("Section .debug_names in %s has duplicate index %s, "
5470 "ignoring .debug_names."),
5471 filename, pulongest (index_num));
5472 return false;
5473 }
5474 mapped_debug_names::index_val &indexval = insertpair.first->second;
5475 indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5476 addr += bytes_read;
5477
5478 for (;;)
5479 {
5480 mapped_debug_names::index_val::attr attr;
5481 attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5482 addr += bytes_read;
5483 attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5484 addr += bytes_read;
5485 if (attr.form == DW_FORM_implicit_const)
5486 {
5487 attr.implicit_const = read_signed_leb128 (abfd, addr,
5488 &bytes_read);
5489 addr += bytes_read;
5490 }
5491 if (attr.dw_idx == 0 && attr.form == 0)
5492 break;
5493 indexval.attr_vec.push_back (std::move (attr));
5494 }
5495 }
5496 if (addr != abbrev_table_start + abbrev_table_size)
5497 {
5498 warning (_("Section .debug_names in %s has abbreviation_table "
47e3f474
TV
5499 "of size %s vs. written as %u, ignoring .debug_names."),
5500 filename, plongest (addr - abbrev_table_start),
5501 abbrev_table_size);
927aa2e7
JK
5502 return false;
5503 }
5504 map.entry_pool = addr;
5505
5506 return true;
5507}
5508
5509/* A helper for create_cus_from_debug_names that handles the MAP's CU
5510 list. */
5511
5512static void
ed2dc618 5513create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
927aa2e7
JK
5514 const mapped_debug_names &map,
5515 dwarf2_section_info &section,
b76e467d 5516 bool is_dwz)
927aa2e7
JK
5517{
5518 sect_offset sect_off_prev;
5519 for (uint32_t i = 0; i <= map.cu_count; ++i)
5520 {
5521 sect_offset sect_off_next;
5522 if (i < map.cu_count)
5523 {
5524 sect_off_next
5525 = (sect_offset) (extract_unsigned_integer
5526 (map.cu_table_reordered + i * map.offset_size,
5527 map.offset_size,
5528 map.dwarf5_byte_order));
5529 }
5530 else
5531 sect_off_next = (sect_offset) section.size;
5532 if (i >= 1)
5533 {
5534 const ULONGEST length = sect_off_next - sect_off_prev;
b76e467d 5535 dwarf2_per_cu_data *per_cu
ed2dc618 5536 = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
927aa2e7 5537 sect_off_prev, length);
b76e467d 5538 dwarf2_per_objfile->all_comp_units.push_back (per_cu);
927aa2e7
JK
5539 }
5540 sect_off_prev = sect_off_next;
5541 }
5542}
5543
5544/* Read the CU list from the mapped index, and use it to create all
ed2dc618 5545 the CU objects for this dwarf2_per_objfile. */
927aa2e7
JK
5546
5547static void
ed2dc618 5548create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
927aa2e7
JK
5549 const mapped_debug_names &map,
5550 const mapped_debug_names &dwz_map)
5551{
b76e467d
SM
5552 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5553 dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
927aa2e7 5554
ed2dc618
SM
5555 create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5556 dwarf2_per_objfile->info,
b76e467d 5557 false /* is_dwz */);
927aa2e7
JK
5558
5559 if (dwz_map.cu_count == 0)
5560 return;
5561
ed2dc618
SM
5562 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5563 create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
b76e467d 5564 true /* is_dwz */);
927aa2e7
JK
5565}
5566
5567/* Read .debug_names. If everything went ok, initialize the "quick"
5568 elements of all the CUs and return true. Otherwise, return false. */
5569
5570static bool
ed2dc618 5571dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
927aa2e7 5572{
22ca247e
TT
5573 std::unique_ptr<mapped_debug_names> map
5574 (new mapped_debug_names (dwarf2_per_objfile));
ed2dc618
SM
5575 mapped_debug_names dwz_map (dwarf2_per_objfile);
5576 struct objfile *objfile = dwarf2_per_objfile->objfile;
927aa2e7
JK
5577
5578 if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5579 &dwarf2_per_objfile->debug_names,
22ca247e 5580 *map))
927aa2e7
JK
5581 return false;
5582
5583 /* Don't use the index if it's empty. */
22ca247e 5584 if (map->name_count == 0)
927aa2e7
JK
5585 return false;
5586
5587 /* If there is a .dwz file, read it so we can get its CU list as
5588 well. */
ed2dc618 5589 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
927aa2e7
JK
5590 if (dwz != NULL)
5591 {
5592 if (!read_debug_names_from_section (objfile,
00f93c44 5593 bfd_get_filename (dwz->dwz_bfd.get ()),
927aa2e7
JK
5594 &dwz->debug_names, dwz_map))
5595 {
5596 warning (_("could not read '.debug_names' section from %s; skipping"),
00f93c44 5597 bfd_get_filename (dwz->dwz_bfd.get ()));
927aa2e7
JK
5598 return false;
5599 }
5600 }
5601
22ca247e 5602 create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
927aa2e7 5603
22ca247e 5604 if (map->tu_count != 0)
927aa2e7
JK
5605 {
5606 /* We can only handle a single .debug_types when we have an
5607 index. */
fd5866f6 5608 if (dwarf2_per_objfile->types.size () != 1)
927aa2e7
JK
5609 return false;
5610
fd5866f6 5611 dwarf2_section_info *section = &dwarf2_per_objfile->types[0];
927aa2e7
JK
5612
5613 create_signatured_type_table_from_debug_names
22ca247e 5614 (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
927aa2e7
JK
5615 }
5616
ed2dc618
SM
5617 create_addrmap_from_aranges (dwarf2_per_objfile,
5618 &dwarf2_per_objfile->debug_aranges);
927aa2e7 5619
22ca247e 5620 dwarf2_per_objfile->debug_names_table = std::move (map);
927aa2e7
JK
5621 dwarf2_per_objfile->using_index = 1;
5622 dwarf2_per_objfile->quick_file_names_table =
b76e467d 5623 create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
927aa2e7
JK
5624
5625 return true;
5626}
5627
927aa2e7
JK
5628/* Type used to manage iterating over all CUs looking for a symbol for
5629 .debug_names. */
5630
5631class dw2_debug_names_iterator
5632{
5633public:
927aa2e7 5634 dw2_debug_names_iterator (const mapped_debug_names &map,
2b79f376
SM
5635 gdb::optional<block_enum> block_index,
5636 domain_enum domain,
927aa2e7 5637 const char *name)
2b79f376 5638 : m_map (map), m_block_index (block_index), m_domain (domain),
927aa2e7
JK
5639 m_addr (find_vec_in_debug_names (map, name))
5640 {}
5641
5642 dw2_debug_names_iterator (const mapped_debug_names &map,
5643 search_domain search, uint32_t namei)
5644 : m_map (map),
5645 m_search (search),
5646 m_addr (find_vec_in_debug_names (map, namei))
5647 {}
5648
3b00ef10
TT
5649 dw2_debug_names_iterator (const mapped_debug_names &map,
5650 block_enum block_index, domain_enum domain,
5651 uint32_t namei)
5652 : m_map (map), m_block_index (block_index), m_domain (domain),
5653 m_addr (find_vec_in_debug_names (map, namei))
5654 {}
5655
927aa2e7
JK
5656 /* Return the next matching CU or NULL if there are no more. */
5657 dwarf2_per_cu_data *next ();
5658
5659private:
5660 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5661 const char *name);
5662 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5663 uint32_t namei);
5664
5665 /* The internalized form of .debug_names. */
5666 const mapped_debug_names &m_map;
5667
2b79f376
SM
5668 /* If set, only look for symbols that match that block. Valid values are
5669 GLOBAL_BLOCK and STATIC_BLOCK. */
5670 const gdb::optional<block_enum> m_block_index;
927aa2e7
JK
5671
5672 /* The kind of symbol we're looking for. */
5673 const domain_enum m_domain = UNDEF_DOMAIN;
5674 const search_domain m_search = ALL_DOMAIN;
5675
5676 /* The list of CUs from the index entry of the symbol, or NULL if
5677 not found. */
5678 const gdb_byte *m_addr;
5679};
5680
5681const char *
5682mapped_debug_names::namei_to_name (uint32_t namei) const
5683{
5684 const ULONGEST namei_string_offs
5685 = extract_unsigned_integer ((name_table_string_offs_reordered
5686 + namei * offset_size),
5687 offset_size,
5688 dwarf5_byte_order);
5689 return read_indirect_string_at_offset
ed2dc618 5690 (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
927aa2e7
JK
5691}
5692
5693/* Find a slot in .debug_names for the object named NAME. If NAME is
5694 found, return pointer to its pool data. If NAME cannot be found,
5695 return NULL. */
5696
5697const gdb_byte *
5698dw2_debug_names_iterator::find_vec_in_debug_names
5699 (const mapped_debug_names &map, const char *name)
5700{
5701 int (*cmp) (const char *, const char *);
5702
54ee4252 5703 gdb::unique_xmalloc_ptr<char> without_params;
927aa2e7
JK
5704 if (current_language->la_language == language_cplus
5705 || current_language->la_language == language_fortran
5706 || current_language->la_language == language_d)
5707 {
5708 /* NAME is already canonical. Drop any qualifiers as
5709 .debug_names does not contain any. */
5710
5711 if (strchr (name, '(') != NULL)
5712 {
54ee4252 5713 without_params = cp_remove_params (name);
927aa2e7 5714 if (without_params != NULL)
54ee4252 5715 name = without_params.get ();
927aa2e7
JK
5716 }
5717 }
5718
5719 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5720
5721 const uint32_t full_hash = dwarf5_djb_hash (name);
5722 uint32_t namei
5723 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5724 (map.bucket_table_reordered
5725 + (full_hash % map.bucket_count)), 4,
5726 map.dwarf5_byte_order);
5727 if (namei == 0)
5728 return NULL;
5729 --namei;
5730 if (namei >= map.name_count)
5731 {
b98664d3 5732 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
927aa2e7
JK
5733 "[in module %s]"),
5734 namei, map.name_count,
ed2dc618 5735 objfile_name (map.dwarf2_per_objfile->objfile));
927aa2e7
JK
5736 return NULL;
5737 }
5738
5739 for (;;)
5740 {
5741 const uint32_t namei_full_hash
5742 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5743 (map.hash_table_reordered + namei), 4,
5744 map.dwarf5_byte_order);
5745 if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5746 return NULL;
5747
5748 if (full_hash == namei_full_hash)
5749 {
5750 const char *const namei_string = map.namei_to_name (namei);
5751
5752#if 0 /* An expensive sanity check. */
5753 if (namei_full_hash != dwarf5_djb_hash (namei_string))
5754 {
b98664d3 5755 complaint (_("Wrong .debug_names hash for string at index %u "
927aa2e7
JK
5756 "[in module %s]"),
5757 namei, objfile_name (dwarf2_per_objfile->objfile));
5758 return NULL;
5759 }
5760#endif
5761
5762 if (cmp (namei_string, name) == 0)
5763 {
5764 const ULONGEST namei_entry_offs
5765 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5766 + namei * map.offset_size),
5767 map.offset_size, map.dwarf5_byte_order);
5768 return map.entry_pool + namei_entry_offs;
5769 }
5770 }
5771
5772 ++namei;
5773 if (namei >= map.name_count)
5774 return NULL;
5775 }
5776}
5777
5778const gdb_byte *
5779dw2_debug_names_iterator::find_vec_in_debug_names
5780 (const mapped_debug_names &map, uint32_t namei)
5781{
5782 if (namei >= map.name_count)
5783 {
b98664d3 5784 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
927aa2e7
JK
5785 "[in module %s]"),
5786 namei, map.name_count,
ed2dc618 5787 objfile_name (map.dwarf2_per_objfile->objfile));
927aa2e7
JK
5788 return NULL;
5789 }
5790
5791 const ULONGEST namei_entry_offs
5792 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5793 + namei * map.offset_size),
5794 map.offset_size, map.dwarf5_byte_order);
5795 return map.entry_pool + namei_entry_offs;
5796}
5797
5798/* See dw2_debug_names_iterator. */
5799
5800dwarf2_per_cu_data *
5801dw2_debug_names_iterator::next ()
5802{
5803 if (m_addr == NULL)
5804 return NULL;
5805
ed2dc618
SM
5806 struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5807 struct objfile *objfile = dwarf2_per_objfile->objfile;
5808 bfd *const abfd = objfile->obfd;
927aa2e7
JK
5809
5810 again:
5811
5812 unsigned int bytes_read;
5813 const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5814 m_addr += bytes_read;
5815 if (abbrev == 0)
5816 return NULL;
5817
5818 const auto indexval_it = m_map.abbrev_map.find (abbrev);
5819 if (indexval_it == m_map.abbrev_map.cend ())
5820 {
b98664d3 5821 complaint (_("Wrong .debug_names undefined abbrev code %s "
927aa2e7 5822 "[in module %s]"),
ed2dc618 5823 pulongest (abbrev), objfile_name (objfile));
927aa2e7
JK
5824 return NULL;
5825 }
5826 const mapped_debug_names::index_val &indexval = indexval_it->second;
beadd3e8
SM
5827 enum class symbol_linkage {
5828 unknown,
5829 static_,
5830 extern_,
23c13d42 5831 } symbol_linkage_ = symbol_linkage::unknown;
927aa2e7
JK
5832 dwarf2_per_cu_data *per_cu = NULL;
5833 for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5834 {
5835 ULONGEST ull;
5836 switch (attr.form)
5837 {
5838 case DW_FORM_implicit_const:
5839 ull = attr.implicit_const;
5840 break;
5841 case DW_FORM_flag_present:
5842 ull = 1;
5843 break;
5844 case DW_FORM_udata:
5845 ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5846 m_addr += bytes_read;
5847 break;
5848 default:
b98664d3 5849 complaint (_("Unsupported .debug_names form %s [in module %s]"),
927aa2e7 5850 dwarf_form_name (attr.form),
ed2dc618 5851 objfile_name (objfile));
927aa2e7
JK
5852 return NULL;
5853 }
5854 switch (attr.dw_idx)
5855 {
5856 case DW_IDX_compile_unit:
5857 /* Don't crash on bad data. */
b76e467d 5858 if (ull >= dwarf2_per_objfile->all_comp_units.size ())
927aa2e7 5859 {
b98664d3 5860 complaint (_(".debug_names entry has bad CU index %s"
927aa2e7
JK
5861 " [in module %s]"),
5862 pulongest (ull),
5863 objfile_name (dwarf2_per_objfile->objfile));
5864 continue;
5865 }
ff4c9fec 5866 per_cu = dwarf2_per_objfile->get_cutu (ull);
927aa2e7 5867 break;
8af5c486
JK
5868 case DW_IDX_type_unit:
5869 /* Don't crash on bad data. */
b2bdb8cf 5870 if (ull >= dwarf2_per_objfile->all_type_units.size ())
8af5c486 5871 {
b98664d3 5872 complaint (_(".debug_names entry has bad TU index %s"
8af5c486
JK
5873 " [in module %s]"),
5874 pulongest (ull),
5875 objfile_name (dwarf2_per_objfile->objfile));
5876 continue;
5877 }
ff4c9fec 5878 per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
8af5c486 5879 break;
927aa2e7
JK
5880 case DW_IDX_GNU_internal:
5881 if (!m_map.augmentation_is_gdb)
5882 break;
23c13d42 5883 symbol_linkage_ = symbol_linkage::static_;
927aa2e7
JK
5884 break;
5885 case DW_IDX_GNU_external:
5886 if (!m_map.augmentation_is_gdb)
5887 break;
23c13d42 5888 symbol_linkage_ = symbol_linkage::extern_;
927aa2e7
JK
5889 break;
5890 }
5891 }
5892
5893 /* Skip if already read in. */
5894 if (per_cu->v.quick->compunit_symtab)
5895 goto again;
5896
5897 /* Check static vs global. */
23c13d42 5898 if (symbol_linkage_ != symbol_linkage::unknown && m_block_index.has_value ())
927aa2e7 5899 {
2b79f376 5900 const bool want_static = *m_block_index == STATIC_BLOCK;
23c13d42
SM
5901 const bool symbol_is_static =
5902 symbol_linkage_ == symbol_linkage::static_;
beadd3e8 5903 if (want_static != symbol_is_static)
2b79f376 5904 goto again;
927aa2e7
JK
5905 }
5906
5907 /* Match dw2_symtab_iter_next, symbol_kind
5908 and debug_names::psymbol_tag. */
5909 switch (m_domain)
5910 {
5911 case VAR_DOMAIN:
5912 switch (indexval.dwarf_tag)
5913 {
5914 case DW_TAG_variable:
5915 case DW_TAG_subprogram:
5916 /* Some types are also in VAR_DOMAIN. */
5917 case DW_TAG_typedef:
5918 case DW_TAG_structure_type:
5919 break;
5920 default:
5921 goto again;
5922 }
5923 break;
5924 case STRUCT_DOMAIN:
5925 switch (indexval.dwarf_tag)
5926 {
5927 case DW_TAG_typedef:
5928 case DW_TAG_structure_type:
5929 break;
5930 default:
5931 goto again;
5932 }
5933 break;
5934 case LABEL_DOMAIN:
5935 switch (indexval.dwarf_tag)
5936 {
5937 case 0:
5938 case DW_TAG_variable:
5939 break;
5940 default:
5941 goto again;
5942 }
5943 break;
5944 default:
5945 break;
5946 }
5947
5948 /* Match dw2_expand_symtabs_matching, symbol_kind and
5949 debug_names::psymbol_tag. */
5950 switch (m_search)
4b514bc8 5951 {
927aa2e7
JK
5952 case VARIABLES_DOMAIN:
5953 switch (indexval.dwarf_tag)
4b514bc8 5954 {
927aa2e7
JK
5955 case DW_TAG_variable:
5956 break;
5957 default:
5958 goto again;
4b514bc8 5959 }
927aa2e7
JK
5960 break;
5961 case FUNCTIONS_DOMAIN:
5962 switch (indexval.dwarf_tag)
4b514bc8 5963 {
927aa2e7
JK
5964 case DW_TAG_subprogram:
5965 break;
5966 default:
5967 goto again;
4b514bc8 5968 }
927aa2e7
JK
5969 break;
5970 case TYPES_DOMAIN:
5971 switch (indexval.dwarf_tag)
5972 {
5973 case DW_TAG_typedef:
5974 case DW_TAG_structure_type:
5975 break;
5976 default:
5977 goto again;
5978 }
5979 break;
5980 default:
5981 break;
4b514bc8 5982 }
927aa2e7
JK
5983
5984 return per_cu;
4b514bc8 5985}
61920122 5986
927aa2e7 5987static struct compunit_symtab *
c7f839cb 5988dw2_debug_names_lookup_symbol (struct objfile *objfile, block_enum block_index,
927aa2e7 5989 const char *name, domain_enum domain)
4b514bc8 5990{
ed2dc618
SM
5991 struct dwarf2_per_objfile *dwarf2_per_objfile
5992 = get_dwarf2_per_objfile (objfile);
61920122 5993
927aa2e7
JK
5994 const auto &mapp = dwarf2_per_objfile->debug_names_table;
5995 if (!mapp)
61920122 5996 {
927aa2e7
JK
5997 /* index is NULL if OBJF_READNOW. */
5998 return NULL;
5999 }
6000 const auto &map = *mapp;
9291a0cd 6001
2b79f376 6002 dw2_debug_names_iterator iter (map, block_index, domain, name);
9703b513 6003
927aa2e7
JK
6004 struct compunit_symtab *stab_best = NULL;
6005 struct dwarf2_per_cu_data *per_cu;
6006 while ((per_cu = iter.next ()) != NULL)
6007 {
6008 struct symbol *sym, *with_opaque = NULL;
58f0c718 6009 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
927aa2e7 6010 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
582942f4 6011 const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
9703b513 6012
927aa2e7
JK
6013 sym = block_find_symbol (block, name, domain,
6014 block_find_non_opaque_type_preferred,
6015 &with_opaque);
9703b513 6016
927aa2e7
JK
6017 /* Some caution must be observed with overloaded functions and
6018 methods, since the index will not contain any overload
6019 information (but NAME might contain it). */
a3ec0bb1 6020
927aa2e7
JK
6021 if (sym != NULL
6022 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6023 return stab;
6024 if (with_opaque != NULL
6025 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6026 stab_best = stab;
9703b513 6027
927aa2e7 6028 /* Keep looking through other CUs. */
9703b513
TT
6029 }
6030
927aa2e7 6031 return stab_best;
9703b513
TT
6032}
6033
927aa2e7
JK
6034/* This dumps minimal information about .debug_names. It is called
6035 via "mt print objfiles". The gdb.dwarf2/gdb-index.exp testcase
6036 uses this to verify that .debug_names has been loaded. */
9291a0cd 6037
927aa2e7
JK
6038static void
6039dw2_debug_names_dump (struct objfile *objfile)
6040{
ed2dc618
SM
6041 struct dwarf2_per_objfile *dwarf2_per_objfile
6042 = get_dwarf2_per_objfile (objfile);
6043
927aa2e7
JK
6044 gdb_assert (dwarf2_per_objfile->using_index);
6045 printf_filtered (".debug_names:");
6046 if (dwarf2_per_objfile->debug_names_table)
6047 printf_filtered (" exists\n");
6048 else
6049 printf_filtered (" faked for \"readnow\"\n");
6050 printf_filtered ("\n");
9291a0cd
TT
6051}
6052
9291a0cd 6053static void
927aa2e7
JK
6054dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6055 const char *func_name)
9291a0cd 6056{
ed2dc618
SM
6057 struct dwarf2_per_objfile *dwarf2_per_objfile
6058 = get_dwarf2_per_objfile (objfile);
ae2de4f8 6059
927aa2e7
JK
6060 /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW. */
6061 if (dwarf2_per_objfile->debug_names_table)
24c79950 6062 {
927aa2e7 6063 const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
24c79950 6064
2b79f376 6065 dw2_debug_names_iterator iter (map, {}, VAR_DOMAIN, func_name);
24c79950 6066
927aa2e7
JK
6067 struct dwarf2_per_cu_data *per_cu;
6068 while ((per_cu = iter.next ()) != NULL)
58f0c718 6069 dw2_instantiate_symtab (per_cu, false);
927aa2e7
JK
6070 }
6071}
24c79950 6072
3b00ef10
TT
6073static void
6074dw2_debug_names_map_matching_symbols
6075 (struct objfile *objfile,
6076 const lookup_name_info &name, domain_enum domain,
6077 int global,
6078 gdb::function_view<symbol_found_callback_ftype> callback,
6079 symbol_compare_ftype *ordered_compare)
6080{
6081 struct dwarf2_per_objfile *dwarf2_per_objfile
6082 = get_dwarf2_per_objfile (objfile);
6083
6084 /* debug_names_table is NULL if OBJF_READNOW. */
6085 if (!dwarf2_per_objfile->debug_names_table)
6086 return;
6087
6088 mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6089 const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
6090
6091 const char *match_name = name.ada ().lookup_name ().c_str ();
6092 auto matcher = [&] (const char *symname)
6093 {
6094 if (ordered_compare == nullptr)
6095 return true;
6096 return ordered_compare (symname, match_name) == 0;
6097 };
6098
6099 dw2_expand_symtabs_matching_symbol (map, name, matcher, ALL_DOMAIN,
6100 [&] (offset_type namei)
6101 {
6102 /* The name was matched, now expand corresponding CUs that were
6103 marked. */
6104 dw2_debug_names_iterator iter (map, block_kind, domain, namei);
6105
6106 struct dwarf2_per_cu_data *per_cu;
6107 while ((per_cu = iter.next ()) != NULL)
6108 dw2_expand_symtabs_matching_one (per_cu, nullptr, nullptr);
6109 return true;
6110 });
6111
6112 /* It's a shame we couldn't do this inside the
6113 dw2_expand_symtabs_matching_symbol callback, but that skips CUs
6114 that have already been expanded. Instead, this loop matches what
6115 the psymtab code does. */
6116 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
6117 {
6118 struct compunit_symtab *cust = per_cu->v.quick->compunit_symtab;
6119 if (cust != nullptr)
6120 {
6121 const struct block *block
6122 = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
6123 if (!iterate_over_symbols_terminated (block, name,
6124 domain, callback))
6125 break;
6126 }
6127 }
6128}
6129
927aa2e7
JK
6130static void
6131dw2_debug_names_expand_symtabs_matching
6132 (struct objfile *objfile,
6133 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6134 const lookup_name_info &lookup_name,
6135 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6136 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6137 enum search_domain kind)
6138{
ed2dc618
SM
6139 struct dwarf2_per_objfile *dwarf2_per_objfile
6140 = get_dwarf2_per_objfile (objfile);
9291a0cd 6141
927aa2e7
JK
6142 /* debug_names_table is NULL if OBJF_READNOW. */
6143 if (!dwarf2_per_objfile->debug_names_table)
6144 return;
9291a0cd 6145
ed2dc618 6146 dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
24c79950 6147
44ed8f3e 6148 mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
bbf2f4df 6149
44ed8f3e
PA
6150 dw2_expand_symtabs_matching_symbol (map, lookup_name,
6151 symbol_matcher,
6152 kind, [&] (offset_type namei)
927aa2e7 6153 {
927aa2e7
JK
6154 /* The name was matched, now expand corresponding CUs that were
6155 marked. */
6156 dw2_debug_names_iterator iter (map, kind, namei);
bbf2f4df 6157
927aa2e7
JK
6158 struct dwarf2_per_cu_data *per_cu;
6159 while ((per_cu = iter.next ()) != NULL)
6160 dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6161 expansion_notify);
3b00ef10 6162 return true;
44ed8f3e 6163 });
9291a0cd
TT
6164}
6165
927aa2e7 6166const struct quick_symbol_functions dwarf2_debug_names_functions =
9291a0cd
TT
6167{
6168 dw2_has_symbols,
6169 dw2_find_last_source_symtab,
6170 dw2_forget_cached_source_info,
f8eba3c6 6171 dw2_map_symtabs_matching_filename,
927aa2e7 6172 dw2_debug_names_lookup_symbol,
9291a0cd 6173 dw2_print_stats,
927aa2e7 6174 dw2_debug_names_dump,
927aa2e7 6175 dw2_debug_names_expand_symtabs_for_function,
9291a0cd 6176 dw2_expand_all_symtabs,
652a8996 6177 dw2_expand_symtabs_with_fullname,
3b00ef10 6178 dw2_debug_names_map_matching_symbols,
927aa2e7 6179 dw2_debug_names_expand_symtabs_matching,
43f3e411 6180 dw2_find_pc_sect_compunit_symtab,
71a3c369 6181 NULL,
9291a0cd
TT
6182 dw2_map_symbol_filenames
6183};
6184
4485a1c1
SM
6185/* Get the content of the .gdb_index section of OBJ. SECTION_OWNER should point
6186 to either a dwarf2_per_objfile or dwz_file object. */
6187
6188template <typename T>
6189static gdb::array_view<const gdb_byte>
6190get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6191{
6192 dwarf2_section_info *section = &section_owner->gdb_index;
6193
6194 if (dwarf2_section_empty_p (section))
6195 return {};
6196
6197 /* Older elfutils strip versions could keep the section in the main
6198 executable while splitting it for the separate debug info file. */
6199 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6200 return {};
6201
6202 dwarf2_read_section (obj, section);
6203
8bebfcda
PA
6204 /* dwarf2_section_info::size is a bfd_size_type, while
6205 gdb::array_view works with size_t. On 32-bit hosts, with
6206 --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
6207 is 32-bit. So we need an explicit narrowing conversion here.
6208 This is fine, because it's impossible to allocate or mmap an
6209 array/buffer larger than what size_t can represent. */
6210 return gdb::make_array_view (section->buffer, section->size);
4485a1c1
SM
6211}
6212
87d6a7aa
SM
6213/* Lookup the index cache for the contents of the index associated to
6214 DWARF2_OBJ. */
6215
6216static gdb::array_view<const gdb_byte>
6217get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6218{
6219 const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6220 if (build_id == nullptr)
6221 return {};
6222
6223 return global_index_cache.lookup_gdb_index (build_id,
6224 &dwarf2_obj->index_cache_res);
6225}
6226
6227/* Same as the above, but for DWZ. */
6228
6229static gdb::array_view<const gdb_byte>
6230get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6231{
6232 const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6233 if (build_id == nullptr)
6234 return {};
6235
6236 return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6237}
6238
3c0aa29a 6239/* See symfile.h. */
9291a0cd 6240
3c0aa29a
PA
6241bool
6242dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
9291a0cd 6243{
ed2dc618
SM
6244 struct dwarf2_per_objfile *dwarf2_per_objfile
6245 = get_dwarf2_per_objfile (objfile);
6246
9291a0cd
TT
6247 /* If we're about to read full symbols, don't bother with the
6248 indices. In this case we also don't care if some other debug
6249 format is making psymtabs, because they are all about to be
6250 expanded anyway. */
6251 if ((objfile->flags & OBJF_READNOW))
6252 {
9291a0cd 6253 dwarf2_per_objfile->using_index = 1;
ed2dc618
SM
6254 create_all_comp_units (dwarf2_per_objfile);
6255 create_all_type_units (dwarf2_per_objfile);
b76e467d
SM
6256 dwarf2_per_objfile->quick_file_names_table
6257 = create_quick_file_names_table
6258 (dwarf2_per_objfile->all_comp_units.size ());
9291a0cd 6259
b76e467d 6260 for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
b2bdb8cf 6261 + dwarf2_per_objfile->all_type_units.size ()); ++i)
9291a0cd 6262 {
ff4c9fec 6263 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
9291a0cd 6264
e254ef6a
DE
6265 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6266 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
6267 }
6268
6269 /* Return 1 so that gdb sees the "quick" functions. However,
6270 these functions will be no-ops because we will have expanded
6271 all symtabs. */
3c0aa29a
PA
6272 *index_kind = dw_index_kind::GDB_INDEX;
6273 return true;
9291a0cd
TT
6274 }
6275
ed2dc618 6276 if (dwarf2_read_debug_names (dwarf2_per_objfile))
3c0aa29a
PA
6277 {
6278 *index_kind = dw_index_kind::DEBUG_NAMES;
6279 return true;
6280 }
927aa2e7 6281
4485a1c1
SM
6282 if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6283 get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6284 get_gdb_index_contents_from_section<dwz_file>))
3c0aa29a
PA
6285 {
6286 *index_kind = dw_index_kind::GDB_INDEX;
6287 return true;
6288 }
9291a0cd 6289
87d6a7aa
SM
6290 /* ... otherwise, try to find the index in the index cache. */
6291 if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6292 get_gdb_index_contents_from_cache,
6293 get_gdb_index_contents_from_cache_dwz))
6294 {
6295 global_index_cache.hit ();
6296 *index_kind = dw_index_kind::GDB_INDEX;
6297 return true;
6298 }
6299
6300 global_index_cache.miss ();
3c0aa29a 6301 return false;
9291a0cd
TT
6302}
6303
6304\f
6305
dce234bc
PP
6306/* Build a partial symbol table. */
6307
6308void
f29dff0a 6309dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 6310{
ed2dc618
SM
6311 struct dwarf2_per_objfile *dwarf2_per_objfile
6312 = get_dwarf2_per_objfile (objfile);
c9bf0622 6313
6eee24ce 6314 init_psymbol_list (objfile, 1024);
c906108c 6315
a70b8144 6316 try
c9bf0622
TT
6317 {
6318 /* This isn't really ideal: all the data we allocate on the
6319 objfile's obstack is still uselessly kept around. However,
6320 freeing it seems unsafe. */
906768f9 6321 psymtab_discarder psymtabs (objfile);
ed2dc618 6322 dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
906768f9 6323 psymtabs.keep ();
87d6a7aa
SM
6324
6325 /* (maybe) store an index in the cache. */
6326 global_index_cache.store (dwarf2_per_objfile);
c9bf0622 6327 }
230d2906 6328 catch (const gdb_exception_error &except)
492d29ea
PA
6329 {
6330 exception_print (gdb_stderr, except);
6331 }
c906108c 6332}
c906108c 6333
1ce1cefd
DE
6334/* Return the total length of the CU described by HEADER. */
6335
6336static unsigned int
6337get_cu_length (const struct comp_unit_head *header)
6338{
6339 return header->initial_length_size + header->length;
6340}
6341
9c541725 6342/* Return TRUE if SECT_OFF is within CU_HEADER. */
45452591 6343
9c541725
PA
6344static inline bool
6345offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
45452591 6346{
9c541725
PA
6347 sect_offset bottom = cu_header->sect_off;
6348 sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
9a619af0 6349
9c541725 6350 return sect_off >= bottom && sect_off < top;
45452591
DE
6351}
6352
3b80fe9b
DE
6353/* Find the base address of the compilation unit for range lists and
6354 location lists. It will normally be specified by DW_AT_low_pc.
6355 In DWARF-3 draft 4, the base address could be overridden by
6356 DW_AT_entry_pc. It's been removed, but GCC still uses this for
6357 compilation units with discontinuous ranges. */
6358
6359static void
6360dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6361{
6362 struct attribute *attr;
6363
6364 cu->base_known = 0;
6365 cu->base_address = 0;
6366
6367 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6368 if (attr)
6369 {
31aa7e4e 6370 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
6371 cu->base_known = 1;
6372 }
6373 else
6374 {
6375 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6376 if (attr)
6377 {
31aa7e4e 6378 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
6379 cu->base_known = 1;
6380 }
6381 }
6382}
6383
93311388 6384/* Read in the comp unit header information from the debug_info at info_ptr.
43988095 6385 Use rcuh_kind::COMPILE as the default type if not known by the caller.
93311388
DE
6386 NOTE: This leaves members offset, first_die_offset to be filled in
6387 by the caller. */
107d2387 6388
d521ce57 6389static const gdb_byte *
107d2387 6390read_comp_unit_head (struct comp_unit_head *cu_header,
43988095
JK
6391 const gdb_byte *info_ptr,
6392 struct dwarf2_section_info *section,
6393 rcuh_kind section_kind)
107d2387
AC
6394{
6395 int signed_addr;
891d2f0b 6396 unsigned int bytes_read;
43988095
JK
6397 const char *filename = get_section_file_name (section);
6398 bfd *abfd = get_section_bfd_owner (section);
c764a876
DE
6399
6400 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6401 cu_header->initial_length_size = bytes_read;
6402 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 6403 info_ptr += bytes_read;
107d2387 6404 cu_header->version = read_2_bytes (abfd, info_ptr);
1ea5da02
TV
6405 if (cu_header->version < 2 || cu_header->version > 5)
6406 error (_("Dwarf Error: wrong version in compilation unit header "
6407 "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6408 cu_header->version, filename);
107d2387 6409 info_ptr += 2;
43988095
JK
6410 if (cu_header->version < 5)
6411 switch (section_kind)
6412 {
6413 case rcuh_kind::COMPILE:
6414 cu_header->unit_type = DW_UT_compile;
6415 break;
6416 case rcuh_kind::TYPE:
6417 cu_header->unit_type = DW_UT_type;
6418 break;
6419 default:
6420 internal_error (__FILE__, __LINE__,
6421 _("read_comp_unit_head: invalid section_kind"));
6422 }
6423 else
6424 {
6425 cu_header->unit_type = static_cast<enum dwarf_unit_type>
6426 (read_1_byte (abfd, info_ptr));
6427 info_ptr += 1;
6428 switch (cu_header->unit_type)
6429 {
6430 case DW_UT_compile:
a084a2a6
AT
6431 case DW_UT_partial:
6432 case DW_UT_skeleton:
6433 case DW_UT_split_compile:
43988095
JK
6434 if (section_kind != rcuh_kind::COMPILE)
6435 error (_("Dwarf Error: wrong unit_type in compilation unit header "
a084a2a6
AT
6436 "(is %s, should be %s) [in module %s]"),
6437 dwarf_unit_type_name (cu_header->unit_type),
6438 dwarf_unit_type_name (DW_UT_type), filename);
43988095
JK
6439 break;
6440 case DW_UT_type:
a084a2a6 6441 case DW_UT_split_type:
43988095
JK
6442 section_kind = rcuh_kind::TYPE;
6443 break;
6444 default:
6445 error (_("Dwarf Error: wrong unit_type in compilation unit header "
a084a2a6
AT
6446 "(is %#04x, should be one of: %s, %s, %s, %s or %s) "
6447 "[in module %s]"), cu_header->unit_type,
6448 dwarf_unit_type_name (DW_UT_compile),
6449 dwarf_unit_type_name (DW_UT_skeleton),
6450 dwarf_unit_type_name (DW_UT_split_compile),
6451 dwarf_unit_type_name (DW_UT_type),
6452 dwarf_unit_type_name (DW_UT_split_type), filename);
43988095
JK
6453 }
6454
6455 cu_header->addr_size = read_1_byte (abfd, info_ptr);
6456 info_ptr += 1;
6457 }
9c541725
PA
6458 cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6459 cu_header,
6460 &bytes_read);
613e1657 6461 info_ptr += bytes_read;
43988095
JK
6462 if (cu_header->version < 5)
6463 {
6464 cu_header->addr_size = read_1_byte (abfd, info_ptr);
6465 info_ptr += 1;
6466 }
107d2387
AC
6467 signed_addr = bfd_get_sign_extend_vma (abfd);
6468 if (signed_addr < 0)
8e65ff28 6469 internal_error (__FILE__, __LINE__,
e2e0b3e5 6470 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 6471 cu_header->signed_addr_p = signed_addr;
c764a876 6472
a084a2a6
AT
6473 bool header_has_signature = section_kind == rcuh_kind::TYPE
6474 || cu_header->unit_type == DW_UT_skeleton
6475 || cu_header->unit_type == DW_UT_split_compile;
43988095 6476
a084a2a6
AT
6477 if (header_has_signature)
6478 {
43988095
JK
6479 cu_header->signature = read_8_bytes (abfd, info_ptr);
6480 info_ptr += 8;
a084a2a6 6481 }
43988095 6482
a084a2a6
AT
6483 if (section_kind == rcuh_kind::TYPE)
6484 {
6485 LONGEST type_offset;
43988095
JK
6486 type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6487 info_ptr += bytes_read;
9c541725
PA
6488 cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6489 if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
43988095
JK
6490 error (_("Dwarf Error: Too big type_offset in compilation unit "
6491 "header (is %s) [in module %s]"), plongest (type_offset),
6492 filename);
6493 }
6494
107d2387
AC
6495 return info_ptr;
6496}
6497
36586728
TT
6498/* Helper function that returns the proper abbrev section for
6499 THIS_CU. */
6500
6501static struct dwarf2_section_info *
6502get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6503{
6504 struct dwarf2_section_info *abbrev;
ed2dc618 6505 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
36586728
TT
6506
6507 if (this_cu->is_dwz)
ed2dc618 6508 abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
36586728
TT
6509 else
6510 abbrev = &dwarf2_per_objfile->abbrev;
6511
6512 return abbrev;
6513}
6514
9ff913ba
DE
6515/* Subroutine of read_and_check_comp_unit_head and
6516 read_and_check_type_unit_head to simplify them.
6517 Perform various error checking on the header. */
6518
6519static void
ed2dc618
SM
6520error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6521 struct comp_unit_head *header,
4bdcc0c1
DE
6522 struct dwarf2_section_info *section,
6523 struct dwarf2_section_info *abbrev_section)
9ff913ba 6524{
a32a8923 6525 const char *filename = get_section_file_name (section);
9ff913ba 6526
9c541725 6527 if (to_underlying (header->abbrev_sect_off)
36586728 6528 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9d8780f0
SM
6529 error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6530 "(offset %s + 6) [in module %s]"),
6531 sect_offset_str (header->abbrev_sect_off),
6532 sect_offset_str (header->sect_off),
9ff913ba
DE
6533 filename);
6534
9c541725 6535 /* Cast to ULONGEST to use 64-bit arithmetic when possible to
9ff913ba 6536 avoid potential 32-bit overflow. */
9c541725 6537 if (((ULONGEST) header->sect_off + get_cu_length (header))
9ff913ba 6538 > section->size)
9c541725 6539 error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
9d8780f0
SM
6540 "(offset %s + 0) [in module %s]"),
6541 header->length, sect_offset_str (header->sect_off),
9ff913ba
DE
6542 filename);
6543}
6544
6545/* Read in a CU/TU header and perform some basic error checking.
6546 The contents of the header are stored in HEADER.
6547 The result is a pointer to the start of the first DIE. */
adabb602 6548
d521ce57 6549static const gdb_byte *
ed2dc618
SM
6550read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6551 struct comp_unit_head *header,
9ff913ba 6552 struct dwarf2_section_info *section,
4bdcc0c1 6553 struct dwarf2_section_info *abbrev_section,
d521ce57 6554 const gdb_byte *info_ptr,
43988095 6555 rcuh_kind section_kind)
72bf9492 6556{
d521ce57 6557 const gdb_byte *beg_of_comp_unit = info_ptr;
72bf9492 6558
9c541725 6559 header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
adabb602 6560
43988095 6561 info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
9ff913ba 6562
9c541725 6563 header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
348e048f 6564
ed2dc618
SM
6565 error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6566 abbrev_section);
9ff913ba
DE
6567
6568 return info_ptr;
348e048f
DE
6569}
6570
f4dc4d17
DE
6571/* Fetch the abbreviation table offset from a comp or type unit header. */
6572
6573static sect_offset
ed2dc618
SM
6574read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6575 struct dwarf2_section_info *section,
9c541725 6576 sect_offset sect_off)
f4dc4d17 6577{
a32a8923 6578 bfd *abfd = get_section_bfd_owner (section);
d521ce57 6579 const gdb_byte *info_ptr;
ac298888 6580 unsigned int initial_length_size, offset_size;
43988095 6581 uint16_t version;
f4dc4d17
DE
6582
6583 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
9c541725 6584 info_ptr = section->buffer + to_underlying (sect_off);
ac298888 6585 read_initial_length (abfd, info_ptr, &initial_length_size);
f4dc4d17 6586 offset_size = initial_length_size == 4 ? 4 : 8;
43988095
JK
6587 info_ptr += initial_length_size;
6588
6589 version = read_2_bytes (abfd, info_ptr);
6590 info_ptr += 2;
6591 if (version >= 5)
6592 {
6593 /* Skip unit type and address size. */
6594 info_ptr += 2;
6595 }
6596
9c541725 6597 return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
f4dc4d17
DE
6598}
6599
aaa75496
JB
6600/* Allocate a new partial symtab for file named NAME and mark this new
6601 partial symtab as being an include of PST. */
6602
6603static void
d521ce57 6604dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
6605 struct objfile *objfile)
6606{
6607 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6608
fbd9ab74
JK
6609 if (!IS_ABSOLUTE_PATH (subpst->filename))
6610 {
6611 /* It shares objfile->objfile_obstack. */
6612 subpst->dirname = pst->dirname;
6613 }
6614
a9342b62 6615 subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
aaa75496
JB
6616 subpst->dependencies[0] = pst;
6617 subpst->number_of_dependencies = 1;
6618
aaa75496 6619 subpst->read_symtab = pst->read_symtab;
aaa75496
JB
6620
6621 /* No private part is necessary for include psymtabs. This property
6622 can be used to differentiate between such include psymtabs and
10b3939b 6623 the regular ones. */
58a9656e 6624 subpst->read_symtab_private = NULL;
aaa75496
JB
6625}
6626
6627/* Read the Line Number Program data and extract the list of files
6628 included by the source file represented by PST. Build an include
d85a05f0 6629 partial symtab for each of these included files. */
aaa75496
JB
6630
6631static void
6632dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
6633 struct die_info *die,
6634 struct partial_symtab *pst)
aaa75496 6635{
fff8551c 6636 line_header_up lh;
d85a05f0 6637 struct attribute *attr;
aaa75496 6638
d85a05f0
DJ
6639 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6640 if (attr)
9c541725 6641 lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
aaa75496
JB
6642 if (lh == NULL)
6643 return; /* No linetable, so no includes. */
6644
79748972
TT
6645 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). Also note
6646 that we pass in the raw text_low here; that is ok because we're
6647 only decoding the line table to make include partial symtabs, and
6648 so the addresses aren't really used. */
4ae976d1 6649 dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
79748972 6650 pst->raw_text_low (), 1);
aaa75496
JB
6651}
6652
348e048f 6653static hashval_t
52dc124a 6654hash_signatured_type (const void *item)
348e048f 6655{
9a3c8263
SM
6656 const struct signatured_type *sig_type
6657 = (const struct signatured_type *) item;
9a619af0 6658
348e048f 6659 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 6660 return sig_type->signature;
348e048f
DE
6661}
6662
6663static int
52dc124a 6664eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f 6665{
9a3c8263
SM
6666 const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6667 const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
9a619af0 6668
348e048f
DE
6669 return lhs->signature == rhs->signature;
6670}
6671
1fd400ff
TT
6672/* Allocate a hash table for signatured types. */
6673
6674static htab_t
673bfd45 6675allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
6676{
6677 return htab_create_alloc_ex (41,
52dc124a
DE
6678 hash_signatured_type,
6679 eq_signatured_type,
1fd400ff
TT
6680 NULL,
6681 &objfile->objfile_obstack,
6682 hashtab_obstack_allocate,
6683 dummy_obstack_deallocate);
6684}
6685
d467dd73 6686/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
6687
6688static int
d467dd73 6689add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff 6690{
9a3c8263 6691 struct signatured_type *sigt = (struct signatured_type *) *slot;
b2bdb8cf
SM
6692 std::vector<signatured_type *> *all_type_units
6693 = (std::vector<signatured_type *> *) datum;
1fd400ff 6694
b2bdb8cf 6695 all_type_units->push_back (sigt);
1fd400ff
TT
6696
6697 return 1;
6698}
6699
78d4d2c5 6700/* A helper for create_debug_types_hash_table. Read types from SECTION
43988095
JK
6701 and fill them into TYPES_HTAB. It will process only type units,
6702 therefore DW_UT_type. */
c88ee1f0 6703
78d4d2c5 6704static void
ed2dc618
SM
6705create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6706 struct dwo_file *dwo_file,
43988095
JK
6707 dwarf2_section_info *section, htab_t &types_htab,
6708 rcuh_kind section_kind)
348e048f 6709{
3019eac3 6710 struct objfile *objfile = dwarf2_per_objfile->objfile;
4bdcc0c1 6711 struct dwarf2_section_info *abbrev_section;
78d4d2c5
JK
6712 bfd *abfd;
6713 const gdb_byte *info_ptr, *end_ptr;
348e048f 6714
4bdcc0c1
DE
6715 abbrev_section = (dwo_file != NULL
6716 ? &dwo_file->sections.abbrev
6717 : &dwarf2_per_objfile->abbrev);
6718
b4f54984 6719 if (dwarf_read_debug)
43988095
JK
6720 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6721 get_section_name (section),
a32a8923 6722 get_section_file_name (abbrev_section));
09406207 6723
78d4d2c5
JK
6724 dwarf2_read_section (objfile, section);
6725 info_ptr = section->buffer;
348e048f 6726
78d4d2c5
JK
6727 if (info_ptr == NULL)
6728 return;
348e048f 6729
78d4d2c5
JK
6730 /* We can't set abfd until now because the section may be empty or
6731 not present, in which case the bfd is unknown. */
6732 abfd = get_section_bfd_owner (section);
348e048f 6733
78d4d2c5
JK
6734 /* We don't use init_cutu_and_read_dies_simple, or some such, here
6735 because we don't need to read any dies: the signature is in the
6736 header. */
3019eac3 6737
78d4d2c5
JK
6738 end_ptr = info_ptr + section->size;
6739 while (info_ptr < end_ptr)
6740 {
78d4d2c5
JK
6741 struct signatured_type *sig_type;
6742 struct dwo_unit *dwo_tu;
6743 void **slot;
6744 const gdb_byte *ptr = info_ptr;
6745 struct comp_unit_head header;
6746 unsigned int length;
8b70b953 6747
9c541725 6748 sect_offset sect_off = (sect_offset) (ptr - section->buffer);
348e048f 6749
a49dd8dd
JK
6750 /* Initialize it due to a false compiler warning. */
6751 header.signature = -1;
9c541725 6752 header.type_cu_offset_in_tu = (cu_offset) -1;
a49dd8dd 6753
78d4d2c5
JK
6754 /* We need to read the type's signature in order to build the hash
6755 table, but we don't need anything else just yet. */
348e048f 6756
ed2dc618 6757 ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
43988095 6758 abbrev_section, ptr, section_kind);
348e048f 6759
78d4d2c5 6760 length = get_cu_length (&header);
6caca83c 6761
78d4d2c5
JK
6762 /* Skip dummy type units. */
6763 if (ptr >= info_ptr + length
43988095
JK
6764 || peek_abbrev_code (abfd, ptr) == 0
6765 || header.unit_type != DW_UT_type)
78d4d2c5
JK
6766 {
6767 info_ptr += length;
6768 continue;
6769 }
dee91e82 6770
78d4d2c5
JK
6771 if (types_htab == NULL)
6772 {
6773 if (dwo_file)
6774 types_htab = allocate_dwo_unit_table (objfile);
6775 else
6776 types_htab = allocate_signatured_type_table (objfile);
6777 }
8b70b953 6778
78d4d2c5
JK
6779 if (dwo_file)
6780 {
6781 sig_type = NULL;
6782 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6783 struct dwo_unit);
6784 dwo_tu->dwo_file = dwo_file;
43988095 6785 dwo_tu->signature = header.signature;
9c541725 6786 dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
78d4d2c5 6787 dwo_tu->section = section;
9c541725 6788 dwo_tu->sect_off = sect_off;
78d4d2c5
JK
6789 dwo_tu->length = length;
6790 }
6791 else
6792 {
6793 /* N.B.: type_offset is not usable if this type uses a DWO file.
6794 The real type_offset is in the DWO file. */
6795 dwo_tu = NULL;
6796 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6797 struct signatured_type);
43988095 6798 sig_type->signature = header.signature;
9c541725 6799 sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
e3b94546 6800 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
78d4d2c5
JK
6801 sig_type->per_cu.is_debug_types = 1;
6802 sig_type->per_cu.section = section;
9c541725 6803 sig_type->per_cu.sect_off = sect_off;
78d4d2c5
JK
6804 sig_type->per_cu.length = length;
6805 }
6806
6807 slot = htab_find_slot (types_htab,
6808 dwo_file ? (void*) dwo_tu : (void *) sig_type,
6809 INSERT);
6810 gdb_assert (slot != NULL);
6811 if (*slot != NULL)
6812 {
9c541725 6813 sect_offset dup_sect_off;
0349ea22 6814
3019eac3
DE
6815 if (dwo_file)
6816 {
78d4d2c5
JK
6817 const struct dwo_unit *dup_tu
6818 = (const struct dwo_unit *) *slot;
6819
9c541725 6820 dup_sect_off = dup_tu->sect_off;
3019eac3
DE
6821 }
6822 else
6823 {
78d4d2c5
JK
6824 const struct signatured_type *dup_tu
6825 = (const struct signatured_type *) *slot;
6826
9c541725 6827 dup_sect_off = dup_tu->per_cu.sect_off;
3019eac3 6828 }
8b70b953 6829
b98664d3 6830 complaint (_("debug type entry at offset %s is duplicate to"
9d8780f0
SM
6831 " the entry at offset %s, signature %s"),
6832 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
43988095 6833 hex_string (header.signature));
78d4d2c5
JK
6834 }
6835 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
3019eac3 6836
78d4d2c5 6837 if (dwarf_read_debug > 1)
9d8780f0
SM
6838 fprintf_unfiltered (gdb_stdlog, " offset %s, signature %s\n",
6839 sect_offset_str (sect_off),
43988095 6840 hex_string (header.signature));
3019eac3 6841
78d4d2c5
JK
6842 info_ptr += length;
6843 }
6844}
3019eac3 6845
78d4d2c5
JK
6846/* Create the hash table of all entries in the .debug_types
6847 (or .debug_types.dwo) section(s).
6848 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6849 otherwise it is NULL.
b3c8eb43 6850
78d4d2c5 6851 The result is a pointer to the hash table or NULL if there are no types.
348e048f 6852
78d4d2c5 6853 Note: This function processes DWO files only, not DWP files. */
348e048f 6854
78d4d2c5 6855static void
ed2dc618
SM
6856create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6857 struct dwo_file *dwo_file,
fd5866f6 6858 gdb::array_view<dwarf2_section_info> type_sections,
78d4d2c5
JK
6859 htab_t &types_htab)
6860{
fd5866f6
SM
6861 for (dwarf2_section_info &section : type_sections)
6862 create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, &section,
ed2dc618 6863 types_htab, rcuh_kind::TYPE);
3019eac3
DE
6864}
6865
6866/* Create the hash table of all entries in the .debug_types section,
6867 and initialize all_type_units.
6868 The result is zero if there is an error (e.g. missing .debug_types section),
6869 otherwise non-zero. */
6870
6871static int
ed2dc618 6872create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
3019eac3 6873{
78d4d2c5 6874 htab_t types_htab = NULL;
3019eac3 6875
ed2dc618
SM
6876 create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6877 &dwarf2_per_objfile->info, types_htab,
43988095 6878 rcuh_kind::COMPILE);
ed2dc618
SM
6879 create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6880 dwarf2_per_objfile->types, types_htab);
3019eac3
DE
6881 if (types_htab == NULL)
6882 {
6883 dwarf2_per_objfile->signatured_types = NULL;
6884 return 0;
6885 }
6886
348e048f
DE
6887 dwarf2_per_objfile->signatured_types = types_htab;
6888
b2bdb8cf
SM
6889 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6890 dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6891
6892 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6893 &dwarf2_per_objfile->all_type_units);
1fd400ff 6894
348e048f
DE
6895 return 1;
6896}
6897
6aa5f3a6
DE
6898/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6899 If SLOT is non-NULL, it is the entry to use in the hash table.
6900 Otherwise we find one. */
6901
6902static struct signatured_type *
ed2dc618
SM
6903add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6904 void **slot)
6aa5f3a6
DE
6905{
6906 struct objfile *objfile = dwarf2_per_objfile->objfile;
6aa5f3a6 6907
b2bdb8cf
SM
6908 if (dwarf2_per_objfile->all_type_units.size ()
6909 == dwarf2_per_objfile->all_type_units.capacity ())
6910 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6aa5f3a6 6911
b2bdb8cf
SM
6912 signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6913 struct signatured_type);
6914
6915 dwarf2_per_objfile->all_type_units.push_back (sig_type);
6aa5f3a6
DE
6916 sig_type->signature = sig;
6917 sig_type->per_cu.is_debug_types = 1;
6918 if (dwarf2_per_objfile->using_index)
6919 {
6920 sig_type->per_cu.v.quick =
6921 OBSTACK_ZALLOC (&objfile->objfile_obstack,
6922 struct dwarf2_per_cu_quick_data);
6923 }
6924
6925 if (slot == NULL)
6926 {
6927 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6928 sig_type, INSERT);
6929 }
6930 gdb_assert (*slot == NULL);
6931 *slot = sig_type;
6932 /* The rest of sig_type must be filled in by the caller. */
6933 return sig_type;
6934}
6935
a2ce51a0
DE
6936/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6937 Fill in SIG_ENTRY with DWO_ENTRY. */
6938
6939static void
ed2dc618 6940fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
a2ce51a0
DE
6941 struct signatured_type *sig_entry,
6942 struct dwo_unit *dwo_entry)
6943{
7ee85ab1 6944 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
6945 gdb_assert (! sig_entry->per_cu.queued);
6946 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
6947 if (dwarf2_per_objfile->using_index)
6948 {
6949 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 6950 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
6951 }
6952 else
6953 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0 6954 gdb_assert (sig_entry->signature == dwo_entry->signature);
9c541725 6955 gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
a2ce51a0 6956 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
6957 gdb_assert (sig_entry->dwo_unit == NULL);
6958
6959 sig_entry->per_cu.section = dwo_entry->section;
9c541725 6960 sig_entry->per_cu.sect_off = dwo_entry->sect_off;
7ee85ab1
DE
6961 sig_entry->per_cu.length = dwo_entry->length;
6962 sig_entry->per_cu.reading_dwo_directly = 1;
e3b94546 6963 sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
a2ce51a0
DE
6964 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6965 sig_entry->dwo_unit = dwo_entry;
6966}
6967
6968/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
6969 If we haven't read the TU yet, create the signatured_type data structure
6970 for a TU to be read in directly from a DWO file, bypassing the stub.
6971 This is the "Stay in DWO Optimization": When there is no DWP file and we're
6972 using .gdb_index, then when reading a CU we want to stay in the DWO file
6973 containing that CU. Otherwise we could end up reading several other DWO
6974 files (due to comdat folding) to process the transitive closure of all the
6975 mentioned TUs, and that can be slow. The current DWO file will have every
6976 type signature that it needs.
a2ce51a0
DE
6977 We only do this for .gdb_index because in the psymtab case we already have
6978 to read all the DWOs to build the type unit groups. */
6979
6980static struct signatured_type *
6981lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6982{
518817b3
SM
6983 struct dwarf2_per_objfile *dwarf2_per_objfile
6984 = cu->per_cu->dwarf2_per_objfile;
a2ce51a0
DE
6985 struct objfile *objfile = dwarf2_per_objfile->objfile;
6986 struct dwo_file *dwo_file;
6987 struct dwo_unit find_dwo_entry, *dwo_entry;
6988 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 6989 void **slot;
a2ce51a0
DE
6990
6991 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6992
6aa5f3a6
DE
6993 /* If TU skeletons have been removed then we may not have read in any
6994 TUs yet. */
6995 if (dwarf2_per_objfile->signatured_types == NULL)
6996 {
6997 dwarf2_per_objfile->signatured_types
6998 = allocate_signatured_type_table (objfile);
6999 }
a2ce51a0
DE
7000
7001 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
7002 Use the global signatured_types array to do our own comdat-folding
7003 of types. If this is the first time we're reading this TU, and
7004 the TU has an entry in .gdb_index, replace the recorded data from
7005 .gdb_index with this TU. */
a2ce51a0 7006
a2ce51a0 7007 find_sig_entry.signature = sig;
6aa5f3a6
DE
7008 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7009 &find_sig_entry, INSERT);
9a3c8263 7010 sig_entry = (struct signatured_type *) *slot;
7ee85ab1
DE
7011
7012 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
7013 read. Don't reassign the global entry to point to this DWO if that's
7014 the case. Also note that if the TU is already being read, it may not
7015 have come from a DWO, the program may be a mix of Fission-compiled
7016 code and non-Fission-compiled code. */
7017
7018 /* Have we already tried to read this TU?
7019 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7020 needn't exist in the global table yet). */
7021 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
7022 return sig_entry;
7023
6aa5f3a6
DE
7024 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7025 dwo_unit of the TU itself. */
7026 dwo_file = cu->dwo_unit->dwo_file;
7027
a2ce51a0
DE
7028 /* Ok, this is the first time we're reading this TU. */
7029 if (dwo_file->tus == NULL)
7030 return NULL;
7031 find_dwo_entry.signature = sig;
9a3c8263 7032 dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
a2ce51a0
DE
7033 if (dwo_entry == NULL)
7034 return NULL;
7035
6aa5f3a6
DE
7036 /* If the global table doesn't have an entry for this TU, add one. */
7037 if (sig_entry == NULL)
ed2dc618 7038 sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
6aa5f3a6 7039
ed2dc618 7040 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
89e63ee4 7041 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
7042 return sig_entry;
7043}
7044
a2ce51a0
DE
7045/* Subroutine of lookup_signatured_type.
7046 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
7047 then try the DWP file. If the TU stub (skeleton) has been removed then
7048 it won't be in .gdb_index. */
a2ce51a0
DE
7049
7050static struct signatured_type *
7051lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7052{
518817b3
SM
7053 struct dwarf2_per_objfile *dwarf2_per_objfile
7054 = cu->per_cu->dwarf2_per_objfile;
a2ce51a0 7055 struct objfile *objfile = dwarf2_per_objfile->objfile;
ed2dc618 7056 struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
a2ce51a0
DE
7057 struct dwo_unit *dwo_entry;
7058 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 7059 void **slot;
a2ce51a0
DE
7060
7061 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7062 gdb_assert (dwp_file != NULL);
7063
6aa5f3a6
DE
7064 /* If TU skeletons have been removed then we may not have read in any
7065 TUs yet. */
7066 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 7067 {
6aa5f3a6
DE
7068 dwarf2_per_objfile->signatured_types
7069 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
7070 }
7071
6aa5f3a6
DE
7072 find_sig_entry.signature = sig;
7073 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7074 &find_sig_entry, INSERT);
9a3c8263 7075 sig_entry = (struct signatured_type *) *slot;
6aa5f3a6
DE
7076
7077 /* Have we already tried to read this TU?
7078 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7079 needn't exist in the global table yet). */
7080 if (sig_entry != NULL)
7081 return sig_entry;
7082
a2ce51a0
DE
7083 if (dwp_file->tus == NULL)
7084 return NULL;
ed2dc618 7085 dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
57d63ce2 7086 sig, 1 /* is_debug_types */);
a2ce51a0
DE
7087 if (dwo_entry == NULL)
7088 return NULL;
7089
ed2dc618
SM
7090 sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7091 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
a2ce51a0 7092
a2ce51a0
DE
7093 return sig_entry;
7094}
7095
380bca97 7096/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
7097 Returns NULL if signature SIG is not present in the table.
7098 It is up to the caller to complain about this. */
348e048f
DE
7099
7100static struct signatured_type *
a2ce51a0 7101lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 7102{
518817b3
SM
7103 struct dwarf2_per_objfile *dwarf2_per_objfile
7104 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 7105
a2ce51a0
DE
7106 if (cu->dwo_unit
7107 && dwarf2_per_objfile->using_index)
7108 {
7109 /* We're in a DWO/DWP file, and we're using .gdb_index.
7110 These cases require special processing. */
ed2dc618 7111 if (get_dwp_file (dwarf2_per_objfile) == NULL)
a2ce51a0
DE
7112 return lookup_dwo_signatured_type (cu, sig);
7113 else
7114 return lookup_dwp_signatured_type (cu, sig);
7115 }
7116 else
7117 {
7118 struct signatured_type find_entry, *entry;
348e048f 7119
a2ce51a0
DE
7120 if (dwarf2_per_objfile->signatured_types == NULL)
7121 return NULL;
7122 find_entry.signature = sig;
9a3c8263
SM
7123 entry = ((struct signatured_type *)
7124 htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
a2ce51a0
DE
7125 return entry;
7126 }
348e048f 7127}
42e7ad6c
DE
7128\f
7129/* Low level DIE reading support. */
348e048f 7130
d85a05f0
DJ
7131/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
7132
7133static void
7134init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 7135 struct dwarf2_cu *cu,
3019eac3 7136 struct dwarf2_section_info *section,
685af9cd
TT
7137 struct dwo_file *dwo_file,
7138 struct abbrev_table *abbrev_table)
d85a05f0 7139{
fceca515 7140 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 7141 reader->abfd = get_section_bfd_owner (section);
d85a05f0 7142 reader->cu = cu;
3019eac3 7143 reader->dwo_file = dwo_file;
dee91e82
DE
7144 reader->die_section = section;
7145 reader->buffer = section->buffer;
f664829e 7146 reader->buffer_end = section->buffer + section->size;
a2ce51a0 7147 reader->comp_dir = NULL;
685af9cd 7148 reader->abbrev_table = abbrev_table;
d85a05f0
DJ
7149}
7150
b0c7bfa9
DE
7151/* Subroutine of init_cutu_and_read_dies to simplify it.
7152 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7153 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7154 already.
7155
7156 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7157 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
7158 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7159 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
7160 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
7161 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
7162 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7163 are filled in with the info of the DIE from the DWO file.
685af9cd
TT
7164 *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7165 from the dwo. Since *RESULT_READER references this abbrev table, it must be
7166 kept around for at least as long as *RESULT_READER.
7167
b0c7bfa9
DE
7168 The result is non-zero if a valid (non-dummy) DIE was found. */
7169
7170static int
7171read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7172 struct dwo_unit *dwo_unit,
b0c7bfa9 7173 struct die_info *stub_comp_unit_die,
a2ce51a0 7174 const char *stub_comp_dir,
b0c7bfa9 7175 struct die_reader_specs *result_reader,
d521ce57 7176 const gdb_byte **result_info_ptr,
b0c7bfa9 7177 struct die_info **result_comp_unit_die,
685af9cd
TT
7178 int *result_has_children,
7179 abbrev_table_up *result_dwo_abbrev_table)
b0c7bfa9 7180{
ed2dc618 7181 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
b0c7bfa9
DE
7182 struct objfile *objfile = dwarf2_per_objfile->objfile;
7183 struct dwarf2_cu *cu = this_cu->cu;
b0c7bfa9 7184 bfd *abfd;
d521ce57 7185 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
7186 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7187 int i,num_extra_attrs;
7188 struct dwarf2_section_info *dwo_abbrev_section;
7189 struct attribute *attr;
7190 struct die_info *comp_unit_die;
7191
b0aeadb3
DE
7192 /* At most one of these may be provided. */
7193 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 7194
b0c7bfa9
DE
7195 /* These attributes aren't processed until later:
7196 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
7197 DW_AT_comp_dir is used now, to find the DWO file, but it is also
7198 referenced later. However, these attributes are found in the stub
7199 which we won't have later. In order to not impose this complication
7200 on the rest of the code, we read them here and copy them to the
7201 DWO CU/TU die. */
b0c7bfa9
DE
7202
7203 stmt_list = NULL;
7204 low_pc = NULL;
7205 high_pc = NULL;
7206 ranges = NULL;
7207 comp_dir = NULL;
7208
7209 if (stub_comp_unit_die != NULL)
7210 {
7211 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7212 DWO file. */
7213 if (! this_cu->is_debug_types)
7214 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7215 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7216 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7217 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7218 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7219
7220 /* There should be a DW_AT_addr_base attribute here (if needed).
336d760d
AT
7221 We need the value before we can process DW_FORM_GNU_addr_index
7222 or DW_FORM_addrx. */
b0c7bfa9
DE
7223 cu->addr_base = 0;
7224 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7225 if (attr)
7226 cu->addr_base = DW_UNSND (attr);
7227
7228 /* There should be a DW_AT_ranges_base attribute here (if needed).
7229 We need the value before we can process DW_AT_ranges. */
7230 cu->ranges_base = 0;
7231 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7232 if (attr)
7233 cu->ranges_base = DW_UNSND (attr);
7234 }
a2ce51a0
DE
7235 else if (stub_comp_dir != NULL)
7236 {
7237 /* Reconstruct the comp_dir attribute to simplify the code below. */
8d749320 7238 comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
a2ce51a0
DE
7239 comp_dir->name = DW_AT_comp_dir;
7240 comp_dir->form = DW_FORM_string;
7241 DW_STRING_IS_CANONICAL (comp_dir) = 0;
7242 DW_STRING (comp_dir) = stub_comp_dir;
7243 }
b0c7bfa9
DE
7244
7245 /* Set up for reading the DWO CU/TU. */
7246 cu->dwo_unit = dwo_unit;
685af9cd 7247 dwarf2_section_info *section = dwo_unit->section;
b0c7bfa9 7248 dwarf2_read_section (objfile, section);
a32a8923 7249 abfd = get_section_bfd_owner (section);
9c541725
PA
7250 begin_info_ptr = info_ptr = (section->buffer
7251 + to_underlying (dwo_unit->sect_off));
b0c7bfa9 7252 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
b0c7bfa9
DE
7253
7254 if (this_cu->is_debug_types)
7255 {
b0c7bfa9
DE
7256 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7257
ed2dc618
SM
7258 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7259 &cu->header, section,
b0c7bfa9 7260 dwo_abbrev_section,
43988095 7261 info_ptr, rcuh_kind::TYPE);
a2ce51a0 7262 /* This is not an assert because it can be caused by bad debug info. */
43988095 7263 if (sig_type->signature != cu->header.signature)
a2ce51a0
DE
7264 {
7265 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
9d8780f0 7266 " TU at offset %s [in module %s]"),
a2ce51a0 7267 hex_string (sig_type->signature),
43988095 7268 hex_string (cu->header.signature),
9d8780f0 7269 sect_offset_str (dwo_unit->sect_off),
a2ce51a0
DE
7270 bfd_get_filename (abfd));
7271 }
9c541725 7272 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
b0c7bfa9
DE
7273 /* For DWOs coming from DWP files, we don't know the CU length
7274 nor the type's offset in the TU until now. */
7275 dwo_unit->length = get_cu_length (&cu->header);
9c541725 7276 dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
b0c7bfa9
DE
7277
7278 /* Establish the type offset that can be used to lookup the type.
7279 For DWO files, we don't know it until now. */
9c541725
PA
7280 sig_type->type_offset_in_section
7281 = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
b0c7bfa9
DE
7282 }
7283 else
7284 {
ed2dc618
SM
7285 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7286 &cu->header, section,
b0c7bfa9 7287 dwo_abbrev_section,
43988095 7288 info_ptr, rcuh_kind::COMPILE);
9c541725 7289 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
b0c7bfa9
DE
7290 /* For DWOs coming from DWP files, we don't know the CU length
7291 until now. */
7292 dwo_unit->length = get_cu_length (&cu->header);
7293 }
7294
685af9cd
TT
7295 *result_dwo_abbrev_table
7296 = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7297 cu->header.abbrev_sect_off);
7298 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7299 result_dwo_abbrev_table->get ());
b0c7bfa9
DE
7300
7301 /* Read in the die, but leave space to copy over the attributes
7302 from the stub. This has the benefit of simplifying the rest of
7303 the code - all the work to maintain the illusion of a single
7304 DW_TAG_{compile,type}_unit DIE is done here. */
7305 num_extra_attrs = ((stmt_list != NULL)
7306 + (low_pc != NULL)
7307 + (high_pc != NULL)
7308 + (ranges != NULL)
7309 + (comp_dir != NULL));
7310 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7311 result_has_children, num_extra_attrs);
7312
7313 /* Copy over the attributes from the stub to the DIE we just read in. */
7314 comp_unit_die = *result_comp_unit_die;
7315 i = comp_unit_die->num_attrs;
7316 if (stmt_list != NULL)
7317 comp_unit_die->attrs[i++] = *stmt_list;
7318 if (low_pc != NULL)
7319 comp_unit_die->attrs[i++] = *low_pc;
7320 if (high_pc != NULL)
7321 comp_unit_die->attrs[i++] = *high_pc;
7322 if (ranges != NULL)
7323 comp_unit_die->attrs[i++] = *ranges;
7324 if (comp_dir != NULL)
7325 comp_unit_die->attrs[i++] = *comp_dir;
7326 comp_unit_die->num_attrs += num_extra_attrs;
7327
b4f54984 7328 if (dwarf_die_debug)
bf6af496
DE
7329 {
7330 fprintf_unfiltered (gdb_stdlog,
7331 "Read die from %s@0x%x of %s:\n",
a32a8923 7332 get_section_name (section),
bf6af496
DE
7333 (unsigned) (begin_info_ptr - section->buffer),
7334 bfd_get_filename (abfd));
b4f54984 7335 dump_die (comp_unit_die, dwarf_die_debug);
bf6af496
DE
7336 }
7337
a2ce51a0
DE
7338 /* Save the comp_dir attribute. If there is no DWP file then we'll read
7339 TUs by skipping the stub and going directly to the entry in the DWO file.
7340 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7341 to get it via circuitous means. Blech. */
7342 if (comp_dir != NULL)
7343 result_reader->comp_dir = DW_STRING (comp_dir);
7344
b0c7bfa9
DE
7345 /* Skip dummy compilation units. */
7346 if (info_ptr >= begin_info_ptr + dwo_unit->length
7347 || peek_abbrev_code (abfd, info_ptr) == 0)
7348 return 0;
7349
7350 *result_info_ptr = info_ptr;
7351 return 1;
7352}
7353
a084a2a6
AT
7354/* Return the signature of the compile unit, if found. In DWARF 4 and before,
7355 the signature is in the DW_AT_GNU_dwo_id attribute. In DWARF 5 and later, the
7356 signature is part of the header. */
7357static gdb::optional<ULONGEST>
7358lookup_dwo_id (struct dwarf2_cu *cu, struct die_info* comp_unit_die)
7359{
7360 if (cu->header.version >= 5)
7361 return cu->header.signature;
7362 struct attribute *attr;
7363 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7364 if (attr == nullptr)
7365 return gdb::optional<ULONGEST> ();
7366 return DW_UNSND (attr);
7367}
7368
b0c7bfa9
DE
7369/* Subroutine of init_cutu_and_read_dies to simplify it.
7370 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 7371 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
7372
7373static struct dwo_unit *
7374lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7375 struct die_info *comp_unit_die)
7376{
7377 struct dwarf2_cu *cu = this_cu->cu;
b0c7bfa9
DE
7378 struct dwo_unit *dwo_unit;
7379 const char *comp_dir, *dwo_name;
7380
a2ce51a0
DE
7381 gdb_assert (cu != NULL);
7382
b0c7bfa9 7383 /* Yeah, we look dwo_name up again, but it simplifies the code. */
a084a2a6 7384 dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
7d45c7c3 7385 comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
b0c7bfa9
DE
7386
7387 if (this_cu->is_debug_types)
7388 {
7389 struct signatured_type *sig_type;
7390
7391 /* Since this_cu is the first member of struct signatured_type,
7392 we can go from a pointer to one to a pointer to the other. */
7393 sig_type = (struct signatured_type *) this_cu;
b0c7bfa9
DE
7394 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7395 }
7396 else
7397 {
a084a2a6
AT
7398 gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
7399 if (!signature.has_value ())
b0c7bfa9
DE
7400 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7401 " [in module %s]"),
e3b94546 7402 dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
b0c7bfa9 7403 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
a084a2a6 7404 *signature);
b0c7bfa9
DE
7405 }
7406
b0c7bfa9
DE
7407 return dwo_unit;
7408}
7409
a2ce51a0 7410/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6 7411 See it for a description of the parameters.
fcd3b13d 7412 Read a TU directly from a DWO file, bypassing the stub. */
a2ce51a0
DE
7413
7414static void
6aa5f3a6
DE
7415init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7416 int use_existing_cu, int keep,
a2ce51a0
DE
7417 die_reader_func_ftype *die_reader_func,
7418 void *data)
7419{
fcd3b13d 7420 std::unique_ptr<dwarf2_cu> new_cu;
a2ce51a0 7421 struct signatured_type *sig_type;
a2ce51a0
DE
7422 struct die_reader_specs reader;
7423 const gdb_byte *info_ptr;
7424 struct die_info *comp_unit_die;
7425 int has_children;
ed2dc618 7426 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
a2ce51a0
DE
7427
7428 /* Verify we can do the following downcast, and that we have the
7429 data we need. */
7430 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7431 sig_type = (struct signatured_type *) this_cu;
7432 gdb_assert (sig_type->dwo_unit != NULL);
7433
6aa5f3a6
DE
7434 if (use_existing_cu && this_cu->cu != NULL)
7435 {
7436 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
6aa5f3a6
DE
7437 /* There's no need to do the rereading_dwo_cu handling that
7438 init_cutu_and_read_dies does since we don't read the stub. */
7439 }
7440 else
7441 {
7442 /* If !use_existing_cu, this_cu->cu must be NULL. */
7443 gdb_assert (this_cu->cu == NULL);
fcd3b13d 7444 new_cu.reset (new dwarf2_cu (this_cu));
6aa5f3a6
DE
7445 }
7446
7447 /* A future optimization, if needed, would be to use an existing
7448 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
7449 could share abbrev tables. */
a2ce51a0 7450
685af9cd
TT
7451 /* The abbreviation table used by READER, this must live at least as long as
7452 READER. */
7453 abbrev_table_up dwo_abbrev_table;
7454
a2ce51a0 7455 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
a2ce51a0
DE
7456 NULL /* stub_comp_unit_die */,
7457 sig_type->dwo_unit->dwo_file->comp_dir,
7458 &reader, &info_ptr,
685af9cd
TT
7459 &comp_unit_die, &has_children,
7460 &dwo_abbrev_table) == 0)
a2ce51a0
DE
7461 {
7462 /* Dummy die. */
a2ce51a0
DE
7463 return;
7464 }
7465
7466 /* All the "real" work is done here. */
7467 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7468
6aa5f3a6 7469 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
7470 but the alternative is making the latter more complex.
7471 This function is only for the special case of using DWO files directly:
7472 no point in overly complicating the general case just to handle this. */
fcd3b13d 7473 if (new_cu != NULL && keep)
a2ce51a0 7474 {
fcd3b13d
SM
7475 /* Link this CU into read_in_chain. */
7476 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7477 dwarf2_per_objfile->read_in_chain = this_cu;
7478 /* The chain owns it now. */
7479 new_cu.release ();
a2ce51a0 7480 }
a2ce51a0
DE
7481}
7482
fd820528 7483/* Initialize a CU (or TU) and read its DIEs.
3019eac3 7484 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 7485
f4dc4d17
DE
7486 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7487 Otherwise the table specified in the comp unit header is read in and used.
7488 This is an optimization for when we already have the abbrev table.
7489
dee91e82
DE
7490 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7491 Otherwise, a new CU is allocated with xmalloc.
7492
7493 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7494 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
7495
7496 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 7497 linker) then DIE_READER_FUNC will not get called. */
aaa75496 7498
70221824 7499static void
fd820528 7500init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 7501 struct abbrev_table *abbrev_table,
fd820528 7502 int use_existing_cu, int keep,
58f0c718 7503 bool skip_partial,
fd820528
DE
7504 die_reader_func_ftype *die_reader_func,
7505 void *data)
c906108c 7506{
ed2dc618 7507 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
dee91e82 7508 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 7509 struct dwarf2_section_info *section = this_cu->section;
a32a8923 7510 bfd *abfd = get_section_bfd_owner (section);
dee91e82 7511 struct dwarf2_cu *cu;
d521ce57 7512 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 7513 struct die_reader_specs reader;
d85a05f0 7514 struct die_info *comp_unit_die;
dee91e82 7515 int has_children;
dee91e82 7516 struct signatured_type *sig_type = NULL;
4bdcc0c1 7517 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
7518 /* Non-zero if CU currently points to a DWO file and we need to
7519 reread it. When this happens we need to reread the skeleton die
a2ce51a0 7520 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 7521 int rereading_dwo_cu = 0;
c906108c 7522
b4f54984 7523 if (dwarf_die_debug)
9d8780f0 7524 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
09406207 7525 this_cu->is_debug_types ? "type" : "comp",
9d8780f0 7526 sect_offset_str (this_cu->sect_off));
09406207 7527
dee91e82
DE
7528 if (use_existing_cu)
7529 gdb_assert (keep);
23745b47 7530
a2ce51a0
DE
7531 /* If we're reading a TU directly from a DWO file, including a virtual DWO
7532 file (instead of going through the stub), short-circuit all of this. */
7533 if (this_cu->reading_dwo_directly)
7534 {
7535 /* Narrow down the scope of possibilities to have to understand. */
7536 gdb_assert (this_cu->is_debug_types);
7537 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
7538 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7539 die_reader_func, data);
a2ce51a0
DE
7540 return;
7541 }
7542
dee91e82
DE
7543 /* This is cheap if the section is already read in. */
7544 dwarf2_read_section (objfile, section);
7545
9c541725 7546 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
36586728
TT
7547
7548 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82 7549
fcd3b13d 7550 std::unique_ptr<dwarf2_cu> new_cu;
dee91e82
DE
7551 if (use_existing_cu && this_cu->cu != NULL)
7552 {
7553 cu = this_cu->cu;
42e7ad6c
DE
7554 /* If this CU is from a DWO file we need to start over, we need to
7555 refetch the attributes from the skeleton CU.
7556 This could be optimized by retrieving those attributes from when we
7557 were here the first time: the previous comp_unit_die was stored in
7558 comp_unit_obstack. But there's no data yet that we need this
7559 optimization. */
7560 if (cu->dwo_unit != NULL)
7561 rereading_dwo_cu = 1;
dee91e82
DE
7562 }
7563 else
7564 {
7565 /* If !use_existing_cu, this_cu->cu must be NULL. */
7566 gdb_assert (this_cu->cu == NULL);
fcd3b13d
SM
7567 new_cu.reset (new dwarf2_cu (this_cu));
7568 cu = new_cu.get ();
42e7ad6c 7569 }
dee91e82 7570
b0c7bfa9 7571 /* Get the header. */
9c541725 7572 if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
42e7ad6c
DE
7573 {
7574 /* We already have the header, there's no need to read it in again. */
9c541725 7575 info_ptr += to_underlying (cu->header.first_die_cu_offset);
42e7ad6c
DE
7576 }
7577 else
7578 {
3019eac3 7579 if (this_cu->is_debug_types)
dee91e82 7580 {
ed2dc618
SM
7581 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7582 &cu->header, section,
4bdcc0c1 7583 abbrev_section, info_ptr,
43988095 7584 rcuh_kind::TYPE);
dee91e82 7585
42e7ad6c
DE
7586 /* Since per_cu is the first member of struct signatured_type,
7587 we can go from a pointer to one to a pointer to the other. */
7588 sig_type = (struct signatured_type *) this_cu;
43988095 7589 gdb_assert (sig_type->signature == cu->header.signature);
9c541725
PA
7590 gdb_assert (sig_type->type_offset_in_tu
7591 == cu->header.type_cu_offset_in_tu);
7592 gdb_assert (this_cu->sect_off == cu->header.sect_off);
dee91e82 7593
42e7ad6c
DE
7594 /* LENGTH has not been set yet for type units if we're
7595 using .gdb_index. */
1ce1cefd 7596 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
7597
7598 /* Establish the type offset that can be used to lookup the type. */
9c541725
PA
7599 sig_type->type_offset_in_section =
7600 this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
43988095
JK
7601
7602 this_cu->dwarf_version = cu->header.version;
dee91e82
DE
7603 }
7604 else
7605 {
ed2dc618
SM
7606 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7607 &cu->header, section,
4bdcc0c1 7608 abbrev_section,
43988095
JK
7609 info_ptr,
7610 rcuh_kind::COMPILE);
dee91e82 7611
9c541725 7612 gdb_assert (this_cu->sect_off == cu->header.sect_off);
1ce1cefd 7613 gdb_assert (this_cu->length == get_cu_length (&cu->header));
43988095 7614 this_cu->dwarf_version = cu->header.version;
dee91e82
DE
7615 }
7616 }
10b3939b 7617
6caca83c 7618 /* Skip dummy compilation units. */
dee91e82 7619 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c 7620 || peek_abbrev_code (abfd, info_ptr) == 0)
fcd3b13d 7621 return;
6caca83c 7622
433df2d4
DE
7623 /* If we don't have them yet, read the abbrevs for this compilation unit.
7624 And if we need to read them now, make sure they're freed when we're
685af9cd
TT
7625 done (own the table through ABBREV_TABLE_HOLDER). */
7626 abbrev_table_up abbrev_table_holder;
f4dc4d17 7627 if (abbrev_table != NULL)
685af9cd
TT
7628 gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7629 else
f4dc4d17 7630 {
685af9cd
TT
7631 abbrev_table_holder
7632 = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7633 cu->header.abbrev_sect_off);
7634 abbrev_table = abbrev_table_holder.get ();
42e7ad6c 7635 }
af703f96 7636
dee91e82 7637 /* Read the top level CU/TU die. */
685af9cd 7638 init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
dee91e82 7639 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 7640
58f0c718
TT
7641 if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7642 return;
7643
b0c7bfa9 7644 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
685af9cd
TT
7645 from the DWO file. read_cutu_die_from_dwo will allocate the abbreviation
7646 table from the DWO file and pass the ownership over to us. It will be
7647 referenced from READER, so we must make sure to free it after we're done
7648 with READER.
7649
b0c7bfa9
DE
7650 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7651 DWO CU, that this test will fail (the attribute will not be present). */
a084a2a6 7652 const char *dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
685af9cd 7653 abbrev_table_up dwo_abbrev_table;
a084a2a6 7654 if (dwo_name != nullptr)
3019eac3 7655 {
3019eac3 7656 struct dwo_unit *dwo_unit;
b0c7bfa9 7657 struct die_info *dwo_comp_unit_die;
3019eac3
DE
7658
7659 if (has_children)
6a506a2d 7660 {
b98664d3 7661 complaint (_("compilation unit with DW_AT_GNU_dwo_name"
9d8780f0
SM
7662 " has children (offset %s) [in module %s]"),
7663 sect_offset_str (this_cu->sect_off),
7664 bfd_get_filename (abfd));
6a506a2d 7665 }
b0c7bfa9 7666 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 7667 if (dwo_unit != NULL)
3019eac3 7668 {
6a506a2d 7669 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
a2ce51a0 7670 comp_unit_die, NULL,
6a506a2d 7671 &reader, &info_ptr,
685af9cd
TT
7672 &dwo_comp_unit_die, &has_children,
7673 &dwo_abbrev_table) == 0)
6a506a2d
DE
7674 {
7675 /* Dummy die. */
6a506a2d
DE
7676 return;
7677 }
7678 comp_unit_die = dwo_comp_unit_die;
7679 }
7680 else
7681 {
7682 /* Yikes, we couldn't find the rest of the DIE, we only have
7683 the stub. A complaint has already been logged. There's
7684 not much more we can do except pass on the stub DIE to
7685 die_reader_func. We don't want to throw an error on bad
7686 debug info. */
3019eac3
DE
7687 }
7688 }
7689
b0c7bfa9 7690 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
7691 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7692
b0c7bfa9 7693 /* Done, clean up. */
fcd3b13d 7694 if (new_cu != NULL && keep)
348e048f 7695 {
fcd3b13d
SM
7696 /* Link this CU into read_in_chain. */
7697 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7698 dwarf2_per_objfile->read_in_chain = this_cu;
7699 /* The chain owns it now. */
7700 new_cu.release ();
348e048f 7701 }
dee91e82
DE
7702}
7703
33e80786
DE
7704/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7705 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7706 to have already done the lookup to find the DWO file).
dee91e82
DE
7707
7708 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 7709 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
7710
7711 We fill in THIS_CU->length.
7712
7713 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7714 linker) then DIE_READER_FUNC will not get called.
7715
7716 THIS_CU->cu is always freed when done.
3019eac3
DE
7717 This is done in order to not leave THIS_CU->cu in a state where we have
7718 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
7719
7720static void
7721init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 7722 struct dwo_file *dwo_file,
dee91e82
DE
7723 die_reader_func_ftype *die_reader_func,
7724 void *data)
7725{
ed2dc618 7726 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
dee91e82 7727 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 7728 struct dwarf2_section_info *section = this_cu->section;
a32a8923 7729 bfd *abfd = get_section_bfd_owner (section);
33e80786 7730 struct dwarf2_section_info *abbrev_section;
d521ce57 7731 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 7732 struct die_reader_specs reader;
dee91e82
DE
7733 struct die_info *comp_unit_die;
7734 int has_children;
7735
b4f54984 7736 if (dwarf_die_debug)
9d8780f0 7737 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
09406207 7738 this_cu->is_debug_types ? "type" : "comp",
9d8780f0 7739 sect_offset_str (this_cu->sect_off));
09406207 7740
dee91e82
DE
7741 gdb_assert (this_cu->cu == NULL);
7742
33e80786
DE
7743 abbrev_section = (dwo_file != NULL
7744 ? &dwo_file->sections.abbrev
7745 : get_abbrev_section_for_cu (this_cu));
7746
dee91e82
DE
7747 /* This is cheap if the section is already read in. */
7748 dwarf2_read_section (objfile, section);
7749
fcd3b13d 7750 struct dwarf2_cu cu (this_cu);
dee91e82 7751
9c541725 7752 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
ed2dc618
SM
7753 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7754 &cu.header, section,
4bdcc0c1 7755 abbrev_section, info_ptr,
43988095
JK
7756 (this_cu->is_debug_types
7757 ? rcuh_kind::TYPE
7758 : rcuh_kind::COMPILE));
dee91e82 7759
1ce1cefd 7760 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
7761
7762 /* Skip dummy compilation units. */
7763 if (info_ptr >= begin_info_ptr + this_cu->length
7764 || peek_abbrev_code (abfd, info_ptr) == 0)
fcd3b13d 7765 return;
72bf9492 7766
685af9cd
TT
7767 abbrev_table_up abbrev_table
7768 = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7769 cu.header.abbrev_sect_off);
dee91e82 7770
685af9cd 7771 init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
dee91e82
DE
7772 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7773
7774 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
dee91e82
DE
7775}
7776
3019eac3
DE
7777/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7778 does not lookup the specified DWO file.
7779 This cannot be used to read DWO files.
dee91e82
DE
7780
7781 THIS_CU->cu is always freed when done.
3019eac3
DE
7782 This is done in order to not leave THIS_CU->cu in a state where we have
7783 to care whether it refers to the "main" CU or the DWO CU.
7784 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
7785
7786static void
7787init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7788 die_reader_func_ftype *die_reader_func,
7789 void *data)
7790{
33e80786 7791 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 7792}
0018ea6f
DE
7793\f
7794/* Type Unit Groups.
dee91e82 7795
0018ea6f
DE
7796 Type Unit Groups are a way to collapse the set of all TUs (type units) into
7797 a more manageable set. The grouping is done by DW_AT_stmt_list entry
7798 so that all types coming from the same compilation (.o file) are grouped
7799 together. A future step could be to put the types in the same symtab as
7800 the CU the types ultimately came from. */
ff013f42 7801
f4dc4d17
DE
7802static hashval_t
7803hash_type_unit_group (const void *item)
7804{
9a3c8263
SM
7805 const struct type_unit_group *tu_group
7806 = (const struct type_unit_group *) item;
f4dc4d17 7807
094b34ac 7808 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 7809}
348e048f
DE
7810
7811static int
f4dc4d17 7812eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 7813{
9a3c8263
SM
7814 const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7815 const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
348e048f 7816
094b34ac 7817 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 7818}
348e048f 7819
f4dc4d17
DE
7820/* Allocate a hash table for type unit groups. */
7821
7822static htab_t
ed2dc618 7823allocate_type_unit_groups_table (struct objfile *objfile)
f4dc4d17
DE
7824{
7825 return htab_create_alloc_ex (3,
7826 hash_type_unit_group,
7827 eq_type_unit_group,
7828 NULL,
ed2dc618 7829 &objfile->objfile_obstack,
f4dc4d17
DE
7830 hashtab_obstack_allocate,
7831 dummy_obstack_deallocate);
7832}
dee91e82 7833
f4dc4d17
DE
7834/* Type units that don't have DW_AT_stmt_list are grouped into their own
7835 partial symtabs. We combine several TUs per psymtab to not let the size
7836 of any one psymtab grow too big. */
7837#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7838#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 7839
094b34ac 7840/* Helper routine for get_type_unit_group.
f4dc4d17
DE
7841 Create the type_unit_group object used to hold one or more TUs. */
7842
7843static struct type_unit_group *
094b34ac 7844create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17 7845{
518817b3
SM
7846 struct dwarf2_per_objfile *dwarf2_per_objfile
7847 = cu->per_cu->dwarf2_per_objfile;
f4dc4d17 7848 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 7849 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 7850 struct type_unit_group *tu_group;
f4dc4d17
DE
7851
7852 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7853 struct type_unit_group);
094b34ac 7854 per_cu = &tu_group->per_cu;
518817b3 7855 per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
f4dc4d17 7856
094b34ac
DE
7857 if (dwarf2_per_objfile->using_index)
7858 {
7859 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7860 struct dwarf2_per_cu_quick_data);
094b34ac
DE
7861 }
7862 else
7863 {
9c541725 7864 unsigned int line_offset = to_underlying (line_offset_struct);
094b34ac 7865 struct partial_symtab *pst;
528e1572 7866 std::string name;
094b34ac
DE
7867
7868 /* Give the symtab a useful name for debug purposes. */
7869 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
528e1572
SM
7870 name = string_printf ("<type_units_%d>",
7871 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
094b34ac 7872 else
528e1572 7873 name = string_printf ("<type_units_at_0x%x>", line_offset);
094b34ac 7874
528e1572 7875 pst = create_partial_symtab (per_cu, name.c_str ());
094b34ac 7876 pst->anonymous = 1;
094b34ac 7877 }
f4dc4d17 7878
094b34ac 7879 tu_group->hash.dwo_unit = cu->dwo_unit;
9c541725 7880 tu_group->hash.line_sect_off = line_offset_struct;
f4dc4d17
DE
7881
7882 return tu_group;
7883}
7884
094b34ac
DE
7885/* Look up the type_unit_group for type unit CU, and create it if necessary.
7886 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
7887
7888static struct type_unit_group *
ff39bb5e 7889get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17 7890{
518817b3
SM
7891 struct dwarf2_per_objfile *dwarf2_per_objfile
7892 = cu->per_cu->dwarf2_per_objfile;
f4dc4d17
DE
7893 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7894 struct type_unit_group *tu_group;
7895 void **slot;
7896 unsigned int line_offset;
7897 struct type_unit_group type_unit_group_for_lookup;
7898
7899 if (dwarf2_per_objfile->type_unit_groups == NULL)
7900 {
7901 dwarf2_per_objfile->type_unit_groups =
ed2dc618 7902 allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
f4dc4d17
DE
7903 }
7904
7905 /* Do we need to create a new group, or can we use an existing one? */
7906
7907 if (stmt_list)
7908 {
7909 line_offset = DW_UNSND (stmt_list);
7910 ++tu_stats->nr_symtab_sharers;
7911 }
7912 else
7913 {
7914 /* Ugh, no stmt_list. Rare, but we have to handle it.
7915 We can do various things here like create one group per TU or
7916 spread them over multiple groups to split up the expansion work.
7917 To avoid worst case scenarios (too many groups or too large groups)
7918 we, umm, group them in bunches. */
7919 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7920 | (tu_stats->nr_stmt_less_type_units
7921 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7922 ++tu_stats->nr_stmt_less_type_units;
7923 }
7924
094b34ac 7925 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
9c541725 7926 type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
f4dc4d17
DE
7927 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7928 &type_unit_group_for_lookup, INSERT);
7929 if (*slot != NULL)
7930 {
9a3c8263 7931 tu_group = (struct type_unit_group *) *slot;
f4dc4d17
DE
7932 gdb_assert (tu_group != NULL);
7933 }
7934 else
7935 {
9c541725 7936 sect_offset line_offset_struct = (sect_offset) line_offset;
094b34ac 7937 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
7938 *slot = tu_group;
7939 ++tu_stats->nr_symtabs;
7940 }
7941
7942 return tu_group;
7943}
0018ea6f
DE
7944\f
7945/* Partial symbol tables. */
7946
7947/* Create a psymtab named NAME and assign it to PER_CU.
7948
7949 The caller must fill in the following details:
7950 dirname, textlow, texthigh. */
7951
7952static struct partial_symtab *
7953create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7954{
e3b94546 7955 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
0018ea6f
DE
7956 struct partial_symtab *pst;
7957
939652a5 7958 pst = start_psymtab_common (objfile, name, 0);
0018ea6f
DE
7959
7960 pst->psymtabs_addrmap_supported = 1;
7961
7962 /* This is the glue that links PST into GDB's symbol API. */
7963 pst->read_symtab_private = per_cu;
7964 pst->read_symtab = dwarf2_read_symtab;
7965 per_cu->v.psymtab = pst;
7966
7967 return pst;
7968}
7969
b93601f3
TT
7970/* The DATA object passed to process_psymtab_comp_unit_reader has this
7971 type. */
7972
7973struct process_psymtab_comp_unit_data
7974{
7975 /* True if we are reading a DW_TAG_partial_unit. */
7976
7977 int want_partial_unit;
7978
7979 /* The "pretend" language that is used if the CU doesn't declare a
7980 language. */
7981
7982 enum language pretend_language;
7983};
7984
0018ea6f
DE
7985/* die_reader_func for process_psymtab_comp_unit. */
7986
7987static void
7988process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7989 const gdb_byte *info_ptr,
0018ea6f
DE
7990 struct die_info *comp_unit_die,
7991 int has_children,
7992 void *data)
7993{
7994 struct dwarf2_cu *cu = reader->cu;
518817b3 7995 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a 7996 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f 7997 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0018ea6f
DE
7998 CORE_ADDR baseaddr;
7999 CORE_ADDR best_lowpc = 0, best_highpc = 0;
8000 struct partial_symtab *pst;
3a2b436a 8001 enum pc_bounds_kind cu_bounds_kind;
0018ea6f 8002 const char *filename;
9a3c8263
SM
8003 struct process_psymtab_comp_unit_data *info
8004 = (struct process_psymtab_comp_unit_data *) data;
0018ea6f 8005
b93601f3 8006 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
8007 return;
8008
8009 gdb_assert (! per_cu->is_debug_types);
8010
b93601f3 8011 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f 8012
0018ea6f 8013 /* Allocate a new partial symbol table structure. */
7d45c7c3
KB
8014 filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
8015 if (filename == NULL)
0018ea6f 8016 filename = "";
0018ea6f
DE
8017
8018 pst = create_partial_symtab (per_cu, filename);
8019
8020 /* This must be done before calling dwarf2_build_include_psymtabs. */
7d45c7c3 8021 pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
0018ea6f
DE
8022
8023 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8024
8025 dwarf2_find_base_address (comp_unit_die, cu);
8026
8027 /* Possibly set the default values of LOWPC and HIGHPC from
8028 `DW_AT_ranges'. */
3a2b436a
JK
8029 cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8030 &best_highpc, cu, pst);
8031 if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
79748972
TT
8032 {
8033 CORE_ADDR low
8034 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8035 - baseaddr);
8036 CORE_ADDR high
8037 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8038 - baseaddr - 1);
8039 /* Store the contiguous range if it is not empty; it can be
8040 empty for CUs with no code. */
d320c2b5
TT
8041 addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
8042 low, high, pst);
79748972 8043 }
0018ea6f
DE
8044
8045 /* Check if comp unit has_children.
8046 If so, read the rest of the partial symbols from this comp unit.
8047 If not, there's no more debug_info for this comp unit. */
8048 if (has_children)
8049 {
8050 struct partial_die_info *first_die;
8051 CORE_ADDR lowpc, highpc;
8052
8053 lowpc = ((CORE_ADDR) -1);
8054 highpc = ((CORE_ADDR) 0);
8055
8056 first_die = load_partial_dies (reader, info_ptr, 1);
8057
8058 scan_partial_symbols (first_die, &lowpc, &highpc,
e385593e 8059 cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
0018ea6f
DE
8060
8061 /* If we didn't find a lowpc, set it to highpc to avoid
8062 complaints from `maint check'. */
8063 if (lowpc == ((CORE_ADDR) -1))
8064 lowpc = highpc;
8065
8066 /* If the compilation unit didn't have an explicit address range,
8067 then use the information extracted from its child dies. */
e385593e 8068 if (cu_bounds_kind <= PC_BOUNDS_INVALID)
0018ea6f
DE
8069 {
8070 best_lowpc = lowpc;
8071 best_highpc = highpc;
8072 }
8073 }
4ae976d1 8074 pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
79748972
TT
8075 best_lowpc + baseaddr)
8076 - baseaddr);
4ae976d1 8077 pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
79748972
TT
8078 best_highpc + baseaddr)
8079 - baseaddr);
0018ea6f 8080
8763cede 8081 end_psymtab_common (objfile, pst);
0018ea6f 8082
ae640021 8083 if (!cu->per_cu->imported_symtabs_empty ())
0018ea6f
DE
8084 {
8085 int i;
ae640021 8086 int len = cu->per_cu->imported_symtabs_size ();
0018ea6f
DE
8087
8088 /* Fill in 'dependencies' here; we fill in 'users' in a
8089 post-pass. */
8090 pst->number_of_dependencies = len;
a9342b62
TT
8091 pst->dependencies
8092 = objfile->partial_symtabs->allocate_dependencies (len);
ae640021
AB
8093 for (i = 0; i < len; ++i)
8094 {
8095 pst->dependencies[i]
8096 = cu->per_cu->imported_symtabs->at (i)->v.psymtab;
8097 }
0018ea6f 8098
ae640021 8099 cu->per_cu->imported_symtabs_free ();
0018ea6f
DE
8100 }
8101
8102 /* Get the list of files included in the current compilation unit,
8103 and build a psymtab for each of them. */
8104 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8105
b4f54984 8106 if (dwarf_read_debug)
b926417a
TT
8107 fprintf_unfiltered (gdb_stdlog,
8108 "Psymtab for %s unit @%s: %s - %s"
8109 ", %d global, %d static syms\n",
8110 per_cu->is_debug_types ? "type" : "comp",
8111 sect_offset_str (per_cu->sect_off),
8112 paddress (gdbarch, pst->text_low (objfile)),
8113 paddress (gdbarch, pst->text_high (objfile)),
8114 pst->n_global_syms, pst->n_static_syms);
0018ea6f
DE
8115}
8116
8117/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8118 Process compilation unit THIS_CU for a psymtab. */
8119
8120static void
8121process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
8122 int want_partial_unit,
8123 enum language pretend_language)
0018ea6f
DE
8124{
8125 /* If this compilation unit was already read in, free the
8126 cached copy in order to read it in again. This is
8127 necessary because we skipped some symbols when we first
8128 read in the compilation unit (see load_partial_dies).
8129 This problem could be avoided, but the benefit is unclear. */
8130 if (this_cu->cu != NULL)
8131 free_one_cached_comp_unit (this_cu);
8132
f1902523 8133 if (this_cu->is_debug_types)
58f0c718
TT
8134 init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8135 build_type_psymtabs_reader, NULL);
f1902523
JK
8136 else
8137 {
8138 process_psymtab_comp_unit_data info;
8139 info.want_partial_unit = want_partial_unit;
8140 info.pretend_language = pretend_language;
58f0c718 8141 init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
f1902523
JK
8142 process_psymtab_comp_unit_reader, &info);
8143 }
0018ea6f
DE
8144
8145 /* Age out any secondary CUs. */
ed2dc618 8146 age_cached_comp_units (this_cu->dwarf2_per_objfile);
0018ea6f 8147}
f4dc4d17
DE
8148
8149/* Reader function for build_type_psymtabs. */
8150
8151static void
8152build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 8153 const gdb_byte *info_ptr,
f4dc4d17
DE
8154 struct die_info *type_unit_die,
8155 int has_children,
8156 void *data)
8157{
ed2dc618 8158 struct dwarf2_per_objfile *dwarf2_per_objfile
518817b3 8159 = reader->cu->per_cu->dwarf2_per_objfile;
f4dc4d17
DE
8160 struct objfile *objfile = dwarf2_per_objfile->objfile;
8161 struct dwarf2_cu *cu = reader->cu;
8162 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 8163 struct signatured_type *sig_type;
f4dc4d17
DE
8164 struct type_unit_group *tu_group;
8165 struct attribute *attr;
8166 struct partial_die_info *first_die;
8167 CORE_ADDR lowpc, highpc;
8168 struct partial_symtab *pst;
8169
8170 gdb_assert (data == NULL);
0186c6a7
DE
8171 gdb_assert (per_cu->is_debug_types);
8172 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8173
8174 if (! has_children)
8175 return;
8176
8177 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 8178 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 8179
df07e2c7 8180 if (tu_group->tus == nullptr)
a8b3b8e9 8181 tu_group->tus = new std::vector<signatured_type *>;
df07e2c7 8182 tu_group->tus->push_back (sig_type);
f4dc4d17
DE
8183
8184 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
f4dc4d17
DE
8185 pst = create_partial_symtab (per_cu, "");
8186 pst->anonymous = 1;
8187
8188 first_die = load_partial_dies (reader, info_ptr, 1);
8189
8190 lowpc = (CORE_ADDR) -1;
8191 highpc = (CORE_ADDR) 0;
8192 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8193
8763cede 8194 end_psymtab_common (objfile, pst);
f4dc4d17
DE
8195}
8196
73051182
DE
8197/* Struct used to sort TUs by their abbreviation table offset. */
8198
8199struct tu_abbrev_offset
8200{
b2bdb8cf
SM
8201 tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8202 : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8203 {}
8204
8205 signatured_type *sig_type;
73051182
DE
8206 sect_offset abbrev_offset;
8207};
8208
484cf504 8209/* Helper routine for build_type_psymtabs_1, passed to std::sort. */
73051182 8210
484cf504
TT
8211static bool
8212sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8213 const struct tu_abbrev_offset &b)
73051182 8214{
484cf504 8215 return a.abbrev_offset < b.abbrev_offset;
73051182
DE
8216}
8217
8218/* Efficiently read all the type units.
8219 This does the bulk of the work for build_type_psymtabs.
8220
8221 The efficiency is because we sort TUs by the abbrev table they use and
8222 only read each abbrev table once. In one program there are 200K TUs
8223 sharing 8K abbrev tables.
8224
8225 The main purpose of this function is to support building the
8226 dwarf2_per_objfile->type_unit_groups table.
8227 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8228 can collapse the search space by grouping them by stmt_list.
8229 The savings can be significant, in the same program from above the 200K TUs
8230 share 8K stmt_list tables.
8231
8232 FUNC is expected to call get_type_unit_group, which will create the
8233 struct type_unit_group if necessary and add it to
8234 dwarf2_per_objfile->type_unit_groups. */
8235
8236static void
ed2dc618 8237build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
73051182 8238{
73051182 8239 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
685af9cd 8240 abbrev_table_up abbrev_table;
73051182 8241 sect_offset abbrev_offset;
73051182
DE
8242
8243 /* It's up to the caller to not call us multiple times. */
8244 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8245
b2bdb8cf 8246 if (dwarf2_per_objfile->all_type_units.empty ())
73051182
DE
8247 return;
8248
8249 /* TUs typically share abbrev tables, and there can be way more TUs than
8250 abbrev tables. Sort by abbrev table to reduce the number of times we
8251 read each abbrev table in.
8252 Alternatives are to punt or to maintain a cache of abbrev tables.
8253 This is simpler and efficient enough for now.
8254
8255 Later we group TUs by their DW_AT_stmt_list value (as this defines the
8256 symtab to use). Typically TUs with the same abbrev offset have the same
8257 stmt_list value too so in practice this should work well.
8258
8259 The basic algorithm here is:
8260
8261 sort TUs by abbrev table
8262 for each TU with same abbrev table:
8263 read abbrev table if first user
8264 read TU top level DIE
8265 [IWBN if DWO skeletons had DW_AT_stmt_list]
8266 call FUNC */
8267
b4f54984 8268 if (dwarf_read_debug)
73051182
DE
8269 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8270
8271 /* Sort in a separate table to maintain the order of all_type_units
8272 for .gdb_index: TU indices directly index all_type_units. */
b2bdb8cf
SM
8273 std::vector<tu_abbrev_offset> sorted_by_abbrev;
8274 sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8275
8276 for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8277 sorted_by_abbrev.emplace_back
8278 (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8279 sig_type->per_cu.section,
8280 sig_type->per_cu.sect_off));
73051182 8281
484cf504
TT
8282 std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8283 sort_tu_by_abbrev_offset);
73051182 8284
9c541725 8285 abbrev_offset = (sect_offset) ~(unsigned) 0;
73051182 8286
b2bdb8cf 8287 for (const tu_abbrev_offset &tu : sorted_by_abbrev)
73051182 8288 {
73051182
DE
8289 /* Switch to the next abbrev table if necessary. */
8290 if (abbrev_table == NULL
b2bdb8cf 8291 || tu.abbrev_offset != abbrev_offset)
73051182 8292 {
b2bdb8cf 8293 abbrev_offset = tu.abbrev_offset;
73051182 8294 abbrev_table =
ed2dc618
SM
8295 abbrev_table_read_table (dwarf2_per_objfile,
8296 &dwarf2_per_objfile->abbrev,
73051182
DE
8297 abbrev_offset);
8298 ++tu_stats->nr_uniq_abbrev_tables;
8299 }
8300
b2bdb8cf 8301 init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
58f0c718 8302 0, 0, false, build_type_psymtabs_reader, NULL);
73051182 8303 }
6aa5f3a6 8304}
73051182 8305
6aa5f3a6
DE
8306/* Print collected type unit statistics. */
8307
8308static void
ed2dc618 8309print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
6aa5f3a6
DE
8310{
8311 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8312
8313 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
b2bdb8cf
SM
8314 fprintf_unfiltered (gdb_stdlog, " %zu TUs\n",
8315 dwarf2_per_objfile->all_type_units.size ());
6aa5f3a6
DE
8316 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
8317 tu_stats->nr_uniq_abbrev_tables);
8318 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
8319 tu_stats->nr_symtabs);
8320 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
8321 tu_stats->nr_symtab_sharers);
8322 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
8323 tu_stats->nr_stmt_less_type_units);
8324 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
8325 tu_stats->nr_all_type_units_reallocs);
73051182
DE
8326}
8327
f4dc4d17
DE
8328/* Traversal function for build_type_psymtabs. */
8329
8330static int
8331build_type_psymtab_dependencies (void **slot, void *info)
8332{
ed2dc618
SM
8333 struct dwarf2_per_objfile *dwarf2_per_objfile
8334 = (struct dwarf2_per_objfile *) info;
f4dc4d17
DE
8335 struct objfile *objfile = dwarf2_per_objfile->objfile;
8336 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 8337 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 8338 struct partial_symtab *pst = per_cu->v.psymtab;
df07e2c7 8339 int len = (tu_group->tus == nullptr) ? 0 : tu_group->tus->size ();
f4dc4d17
DE
8340 int i;
8341
8342 gdb_assert (len > 0);
0186c6a7 8343 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
8344
8345 pst->number_of_dependencies = len;
a9342b62 8346 pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
df07e2c7 8347 for (i = 0; i < len; ++i)
f4dc4d17 8348 {
df07e2c7 8349 struct signatured_type *iter = tu_group->tus->at (i);
0186c6a7
DE
8350 gdb_assert (iter->per_cu.is_debug_types);
8351 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 8352 iter->type_unit_group = tu_group;
f4dc4d17
DE
8353 }
8354
df07e2c7
AB
8355 delete tu_group->tus;
8356 tu_group->tus = nullptr;
348e048f
DE
8357
8358 return 1;
8359}
8360
8361/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8362 Build partial symbol tables for the .debug_types comp-units. */
8363
8364static void
ed2dc618 8365build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
348e048f 8366{
ed2dc618 8367 if (! create_all_type_units (dwarf2_per_objfile))
348e048f
DE
8368 return;
8369
ed2dc618 8370 build_type_psymtabs_1 (dwarf2_per_objfile);
6aa5f3a6 8371}
f4dc4d17 8372
6aa5f3a6
DE
8373/* Traversal function for process_skeletonless_type_unit.
8374 Read a TU in a DWO file and build partial symbols for it. */
8375
8376static int
8377process_skeletonless_type_unit (void **slot, void *info)
8378{
8379 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
ed2dc618
SM
8380 struct dwarf2_per_objfile *dwarf2_per_objfile
8381 = (struct dwarf2_per_objfile *) info;
6aa5f3a6
DE
8382 struct signatured_type find_entry, *entry;
8383
8384 /* If this TU doesn't exist in the global table, add it and read it in. */
8385
8386 if (dwarf2_per_objfile->signatured_types == NULL)
8387 {
8388 dwarf2_per_objfile->signatured_types
ed2dc618 8389 = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
6aa5f3a6
DE
8390 }
8391
8392 find_entry.signature = dwo_unit->signature;
8393 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8394 INSERT);
8395 /* If we've already seen this type there's nothing to do. What's happening
8396 is we're doing our own version of comdat-folding here. */
8397 if (*slot != NULL)
8398 return 1;
8399
8400 /* This does the job that create_all_type_units would have done for
8401 this TU. */
ed2dc618
SM
8402 entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8403 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
6aa5f3a6
DE
8404 *slot = entry;
8405
8406 /* This does the job that build_type_psymtabs_1 would have done. */
58f0c718 8407 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
6aa5f3a6
DE
8408 build_type_psymtabs_reader, NULL);
8409
8410 return 1;
8411}
8412
8413/* Traversal function for process_skeletonless_type_units. */
8414
8415static int
8416process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8417{
8418 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8419
8420 if (dwo_file->tus != NULL)
8421 {
8422 htab_traverse_noresize (dwo_file->tus,
8423 process_skeletonless_type_unit, info);
8424 }
8425
8426 return 1;
8427}
8428
8429/* Scan all TUs of DWO files, verifying we've processed them.
8430 This is needed in case a TU was emitted without its skeleton.
8431 Note: This can't be done until we know what all the DWO files are. */
8432
8433static void
ed2dc618 8434process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6aa5f3a6
DE
8435{
8436 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
ed2dc618 8437 if (get_dwp_file (dwarf2_per_objfile) == NULL
6aa5f3a6
DE
8438 && dwarf2_per_objfile->dwo_files != NULL)
8439 {
51ac9db5 8440 htab_traverse_noresize (dwarf2_per_objfile->dwo_files.get (),
6aa5f3a6 8441 process_dwo_file_for_skeletonless_type_units,
ed2dc618 8442 dwarf2_per_objfile);
6aa5f3a6 8443 }
348e048f
DE
8444}
8445
ed2dc618 8446/* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE. */
95554aad
TT
8447
8448static void
ed2dc618 8449set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
95554aad 8450{
b76e467d 8451 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
95554aad 8452 {
95554aad 8453 struct partial_symtab *pst = per_cu->v.psymtab;
95554aad 8454
36586728
TT
8455 if (pst == NULL)
8456 continue;
8457
b76e467d 8458 for (int j = 0; j < pst->number_of_dependencies; ++j)
95554aad
TT
8459 {
8460 /* Set the 'user' field only if it is not already set. */
8461 if (pst->dependencies[j]->user == NULL)
8462 pst->dependencies[j]->user = pst;
8463 }
8464 }
8465}
8466
93311388
DE
8467/* Build the partial symbol table by doing a quick pass through the
8468 .debug_info and .debug_abbrev sections. */
72bf9492 8469
93311388 8470static void
ed2dc618 8471dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
93311388 8472{
ed2dc618 8473 struct objfile *objfile = dwarf2_per_objfile->objfile;
93311388 8474
b4f54984 8475 if (dwarf_read_debug)
45cfd468
DE
8476 {
8477 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 8478 objfile_name (objfile));
45cfd468
DE
8479 }
8480
98bfdba5
PA
8481 dwarf2_per_objfile->reading_partial_symbols = 1;
8482
be391dca 8483 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 8484
93311388
DE
8485 /* Any cached compilation units will be linked by the per-objfile
8486 read_in_chain. Make sure to free them when we're done. */
11ed8cad 8487 free_cached_comp_units freer (dwarf2_per_objfile);
72bf9492 8488
ed2dc618 8489 build_type_psymtabs (dwarf2_per_objfile);
348e048f 8490
ed2dc618 8491 create_all_comp_units (dwarf2_per_objfile);
c906108c 8492
60606b2c
TT
8493 /* Create a temporary address map on a temporary obstack. We later
8494 copy this to the final obstack. */
8268c778 8495 auto_obstack temp_obstack;
791afaa2
TT
8496
8497 scoped_restore save_psymtabs_addrmap
d320c2b5 8498 = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
791afaa2 8499 addrmap_create_mutable (&temp_obstack));
72bf9492 8500
b76e467d
SM
8501 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8502 process_psymtab_comp_unit (per_cu, 0, language_minimal);
ff013f42 8503
6aa5f3a6 8504 /* This has to wait until we read the CUs, we need the list of DWOs. */
ed2dc618 8505 process_skeletonless_type_units (dwarf2_per_objfile);
6aa5f3a6
DE
8506
8507 /* Now that all TUs have been processed we can fill in the dependencies. */
8508 if (dwarf2_per_objfile->type_unit_groups != NULL)
8509 {
8510 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
ed2dc618 8511 build_type_psymtab_dependencies, dwarf2_per_objfile);
6aa5f3a6
DE
8512 }
8513
b4f54984 8514 if (dwarf_read_debug)
ed2dc618 8515 print_tu_stats (dwarf2_per_objfile);
6aa5f3a6 8516
ed2dc618 8517 set_partial_user (dwarf2_per_objfile);
95554aad 8518
d320c2b5
TT
8519 objfile->partial_symtabs->psymtabs_addrmap
8520 = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
5923a04c 8521 objfile->partial_symtabs->obstack ());
791afaa2
TT
8522 /* At this point we want to keep the address map. */
8523 save_psymtabs_addrmap.release ();
ff013f42 8524
b4f54984 8525 if (dwarf_read_debug)
45cfd468 8526 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 8527 objfile_name (objfile));
ae038cb0
DJ
8528}
8529
3019eac3 8530/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
8531
8532static void
dee91e82 8533load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 8534 const gdb_byte *info_ptr,
dee91e82
DE
8535 struct die_info *comp_unit_die,
8536 int has_children,
8537 void *data)
ae038cb0 8538{
dee91e82 8539 struct dwarf2_cu *cu = reader->cu;
ae038cb0 8540
95554aad 8541 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 8542
ae038cb0
DJ
8543 /* Check if comp unit has_children.
8544 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 8545 If not, there's no more debug_info for this comp unit. */
d85a05f0 8546 if (has_children)
dee91e82
DE
8547 load_partial_dies (reader, info_ptr, 0);
8548}
98bfdba5 8549
dee91e82
DE
8550/* Load the partial DIEs for a secondary CU into memory.
8551 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 8552
dee91e82
DE
8553static void
8554load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8555{
58f0c718 8556 init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
f4dc4d17 8557 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
8558}
8559
ae038cb0 8560static void
ed2dc618 8561read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
36586728 8562 struct dwarf2_section_info *section,
f1902523 8563 struct dwarf2_section_info *abbrev_section,
b76e467d 8564 unsigned int is_dwz)
ae038cb0 8565{
d521ce57 8566 const gdb_byte *info_ptr;
ed2dc618 8567 struct objfile *objfile = dwarf2_per_objfile->objfile;
be391dca 8568
b4f54984 8569 if (dwarf_read_debug)
bf6af496 8570 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
8571 get_section_name (section),
8572 get_section_file_name (section));
bf6af496 8573
36586728 8574 dwarf2_read_section (objfile, section);
ae038cb0 8575
36586728 8576 info_ptr = section->buffer;
6e70227d 8577
36586728 8578 while (info_ptr < section->buffer + section->size)
ae038cb0 8579 {
ae038cb0 8580 struct dwarf2_per_cu_data *this_cu;
ae038cb0 8581
9c541725 8582 sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
ae038cb0 8583
f1902523 8584 comp_unit_head cu_header;
ed2dc618
SM
8585 read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8586 abbrev_section, info_ptr,
8587 rcuh_kind::COMPILE);
ae038cb0
DJ
8588
8589 /* Save the compilation unit for later lookup. */
f1902523
JK
8590 if (cu_header.unit_type != DW_UT_type)
8591 {
8592 this_cu = XOBNEW (&objfile->objfile_obstack,
8593 struct dwarf2_per_cu_data);
8594 memset (this_cu, 0, sizeof (*this_cu));
8595 }
8596 else
8597 {
8598 auto sig_type = XOBNEW (&objfile->objfile_obstack,
8599 struct signatured_type);
8600 memset (sig_type, 0, sizeof (*sig_type));
8601 sig_type->signature = cu_header.signature;
8602 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8603 this_cu = &sig_type->per_cu;
8604 }
8605 this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
9c541725 8606 this_cu->sect_off = sect_off;
f1902523 8607 this_cu->length = cu_header.length + cu_header.initial_length_size;
36586728 8608 this_cu->is_dwz = is_dwz;
e3b94546 8609 this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8a0459fd 8610 this_cu->section = section;
ae038cb0 8611
b76e467d 8612 dwarf2_per_objfile->all_comp_units.push_back (this_cu);
ae038cb0
DJ
8613
8614 info_ptr = info_ptr + this_cu->length;
8615 }
36586728
TT
8616}
8617
8618/* Create a list of all compilation units in OBJFILE.
8619 This is only done for -readnow and building partial symtabs. */
8620
8621static void
ed2dc618 8622create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
36586728 8623{
b76e467d 8624 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
ed2dc618 8625 read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
b76e467d 8626 &dwarf2_per_objfile->abbrev, 0);
36586728 8627
b76e467d 8628 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
4db1a1dc 8629 if (dwz != NULL)
ed2dc618 8630 read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
b76e467d 8631 1);
c906108c
SS
8632}
8633
5734ee8b 8634/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 8635 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 8636 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
8637 DW_AT_ranges). See the comments of add_partial_subprogram on how
8638 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 8639
72bf9492
DJ
8640static void
8641scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
8642 CORE_ADDR *highpc, int set_addrmap,
8643 struct dwarf2_cu *cu)
c906108c 8644{
72bf9492 8645 struct partial_die_info *pdi;
c906108c 8646
91c24f0a
DC
8647 /* Now, march along the PDI's, descending into ones which have
8648 interesting children but skipping the children of the other ones,
8649 until we reach the end of the compilation unit. */
c906108c 8650
72bf9492 8651 pdi = first_die;
91c24f0a 8652
72bf9492
DJ
8653 while (pdi != NULL)
8654 {
52356b79 8655 pdi->fixup (cu);
c906108c 8656
f55ee35c 8657 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
8658 children, so we need to look at them. Ditto for anonymous
8659 enums. */
933c6fe4 8660
72bf9492 8661 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad 8662 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
b1dc1806
XR
8663 || pdi->tag == DW_TAG_imported_unit
8664 || pdi->tag == DW_TAG_inlined_subroutine)
c906108c 8665 {
72bf9492 8666 switch (pdi->tag)
c906108c
SS
8667 {
8668 case DW_TAG_subprogram:
b1dc1806 8669 case DW_TAG_inlined_subroutine:
cdc07690 8670 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 8671 break;
72929c62 8672 case DW_TAG_constant:
c906108c
SS
8673 case DW_TAG_variable:
8674 case DW_TAG_typedef:
91c24f0a 8675 case DW_TAG_union_type:
72bf9492 8676 if (!pdi->is_declaration)
63d06c5c 8677 {
72bf9492 8678 add_partial_symbol (pdi, cu);
63d06c5c
DC
8679 }
8680 break;
c906108c 8681 case DW_TAG_class_type:
680b30c7 8682 case DW_TAG_interface_type:
c906108c 8683 case DW_TAG_structure_type:
72bf9492 8684 if (!pdi->is_declaration)
c906108c 8685 {
72bf9492 8686 add_partial_symbol (pdi, cu);
c906108c 8687 }
b7fee5a3
KS
8688 if ((cu->language == language_rust
8689 || cu->language == language_cplus) && pdi->has_children)
e98c9e7c
TT
8690 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8691 set_addrmap, cu);
c906108c 8692 break;
91c24f0a 8693 case DW_TAG_enumeration_type:
72bf9492
DJ
8694 if (!pdi->is_declaration)
8695 add_partial_enumeration (pdi, cu);
c906108c
SS
8696 break;
8697 case DW_TAG_base_type:
a02abb62 8698 case DW_TAG_subrange_type:
c906108c 8699 /* File scope base type definitions are added to the partial
c5aa993b 8700 symbol table. */
72bf9492 8701 add_partial_symbol (pdi, cu);
c906108c 8702 break;
d9fa45fe 8703 case DW_TAG_namespace:
cdc07690 8704 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 8705 break;
5d7cb8df 8706 case DW_TAG_module:
cdc07690 8707 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 8708 break;
95554aad
TT
8709 case DW_TAG_imported_unit:
8710 {
8711 struct dwarf2_per_cu_data *per_cu;
8712
f4dc4d17
DE
8713 /* For now we don't handle imported units in type units. */
8714 if (cu->per_cu->is_debug_types)
8715 {
8716 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8717 " supported in type units [in module %s]"),
518817b3 8718 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
f4dc4d17
DE
8719 }
8720
e3b94546
SM
8721 per_cu = dwarf2_find_containing_comp_unit
8722 (pdi->d.sect_off, pdi->is_dwz,
518817b3 8723 cu->per_cu->dwarf2_per_objfile);
95554aad
TT
8724
8725 /* Go read the partial unit, if needed. */
8726 if (per_cu->v.psymtab == NULL)
b93601f3 8727 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 8728
ae640021 8729 cu->per_cu->imported_symtabs_push (per_cu);
95554aad
TT
8730 }
8731 break;
74921315
KS
8732 case DW_TAG_imported_declaration:
8733 add_partial_symbol (pdi, cu);
8734 break;
c906108c
SS
8735 default:
8736 break;
8737 }
8738 }
8739
72bf9492
DJ
8740 /* If the die has a sibling, skip to the sibling. */
8741
8742 pdi = pdi->die_sibling;
8743 }
8744}
8745
8746/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 8747
72bf9492 8748 Normally, this is simple. For C++, the parent DIE's fully scoped
9c37b5ae 8749 name is concatenated with "::" and the partial DIE's name.
72bf9492
DJ
8750 Enumerators are an exception; they use the scope of their parent
8751 enumeration type, i.e. the name of the enumeration type is not
8752 prepended to the enumerator.
91c24f0a 8753
72bf9492
DJ
8754 There are two complexities. One is DW_AT_specification; in this
8755 case "parent" means the parent of the target of the specification,
8756 instead of the direct parent of the DIE. The other is compilers
8757 which do not emit DW_TAG_namespace; in this case we try to guess
8758 the fully qualified name of structure types from their members'
8759 linkage names. This must be done using the DIE's children rather
8760 than the children of any DW_AT_specification target. We only need
8761 to do this for structures at the top level, i.e. if the target of
8762 any DW_AT_specification (if any; otherwise the DIE itself) does not
8763 have a parent. */
8764
8765/* Compute the scope prefix associated with PDI's parent, in
8766 compilation unit CU. The result will be allocated on CU's
8767 comp_unit_obstack, or a copy of the already allocated PDI->NAME
8768 field. NULL is returned if no prefix is necessary. */
15d034d0 8769static const char *
72bf9492
DJ
8770partial_die_parent_scope (struct partial_die_info *pdi,
8771 struct dwarf2_cu *cu)
8772{
15d034d0 8773 const char *grandparent_scope;
72bf9492 8774 struct partial_die_info *parent, *real_pdi;
91c24f0a 8775
72bf9492
DJ
8776 /* We need to look at our parent DIE; if we have a DW_AT_specification,
8777 then this means the parent of the specification DIE. */
8778
8779 real_pdi = pdi;
72bf9492 8780 while (real_pdi->has_specification)
fb816e8b 8781 {
122cf0f2
AB
8782 auto res = find_partial_die (real_pdi->spec_offset,
8783 real_pdi->spec_is_dwz, cu);
fb816e8b
TV
8784 real_pdi = res.pdi;
8785 cu = res.cu;
8786 }
72bf9492
DJ
8787
8788 parent = real_pdi->die_parent;
8789 if (parent == NULL)
8790 return NULL;
8791
8792 if (parent->scope_set)
8793 return parent->scope;
8794
52356b79 8795 parent->fixup (cu);
72bf9492 8796
10b3939b 8797 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 8798
acebe513
UW
8799 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8800 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8801 Work around this problem here. */
8802 if (cu->language == language_cplus
6e70227d 8803 && parent->tag == DW_TAG_namespace
acebe513
UW
8804 && strcmp (parent->name, "::") == 0
8805 && grandparent_scope == NULL)
8806 {
8807 parent->scope = NULL;
8808 parent->scope_set = 1;
8809 return NULL;
8810 }
8811
0a4b0913 8812 /* Nested subroutines in Fortran get a prefix. */
9c6c53f7
SA
8813 if (pdi->tag == DW_TAG_enumerator)
8814 /* Enumerators should not get the name of the enumeration as a prefix. */
8815 parent->scope = grandparent_scope;
8816 else if (parent->tag == DW_TAG_namespace
f55ee35c 8817 || parent->tag == DW_TAG_module
72bf9492
DJ
8818 || parent->tag == DW_TAG_structure_type
8819 || parent->tag == DW_TAG_class_type
680b30c7 8820 || parent->tag == DW_TAG_interface_type
ceeb3d5a 8821 || parent->tag == DW_TAG_union_type
0a4b0913
AB
8822 || parent->tag == DW_TAG_enumeration_type
8823 || (cu->language == language_fortran
8824 && parent->tag == DW_TAG_subprogram
8825 && pdi->tag == DW_TAG_subprogram))
72bf9492
DJ
8826 {
8827 if (grandparent_scope == NULL)
8828 parent->scope = parent->name;
8829 else
3e43a32a
MS
8830 parent->scope = typename_concat (&cu->comp_unit_obstack,
8831 grandparent_scope,
f55ee35c 8832 parent->name, 0, cu);
72bf9492 8833 }
72bf9492
DJ
8834 else
8835 {
8836 /* FIXME drow/2004-04-01: What should we be doing with
8837 function-local names? For partial symbols, we should probably be
8838 ignoring them. */
fa9c3fa0
TT
8839 complaint (_("unhandled containing DIE tag %s for DIE at %s"),
8840 dwarf_tag_name (parent->tag),
8841 sect_offset_str (pdi->sect_off));
72bf9492 8842 parent->scope = grandparent_scope;
c906108c
SS
8843 }
8844
72bf9492
DJ
8845 parent->scope_set = 1;
8846 return parent->scope;
8847}
8848
8849/* Return the fully scoped name associated with PDI, from compilation unit
8850 CU. The result will be allocated with malloc. */
4568ecf9 8851
72bf9492
DJ
8852static char *
8853partial_die_full_name (struct partial_die_info *pdi,
8854 struct dwarf2_cu *cu)
8855{
15d034d0 8856 const char *parent_scope;
72bf9492 8857
98bfdba5
PA
8858 /* If this is a template instantiation, we can not work out the
8859 template arguments from partial DIEs. So, unfortunately, we have
8860 to go through the full DIEs. At least any work we do building
8861 types here will be reused if full symbols are loaded later. */
8862 if (pdi->has_template_arguments)
8863 {
52356b79 8864 pdi->fixup (cu);
98bfdba5
PA
8865
8866 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8867 {
8868 struct die_info *die;
8869 struct attribute attr;
8870 struct dwarf2_cu *ref_cu = cu;
8871
b64f50a1 8872 /* DW_FORM_ref_addr is using section offset. */
b4069958 8873 attr.name = (enum dwarf_attribute) 0;
98bfdba5 8874 attr.form = DW_FORM_ref_addr;
9c541725 8875 attr.u.unsnd = to_underlying (pdi->sect_off);
98bfdba5
PA
8876 die = follow_die_ref (NULL, &attr, &ref_cu);
8877
8878 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8879 }
8880 }
8881
72bf9492
DJ
8882 parent_scope = partial_die_parent_scope (pdi, cu);
8883 if (parent_scope == NULL)
8884 return NULL;
8885 else
f55ee35c 8886 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
8887}
8888
8889static void
72bf9492 8890add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 8891{
518817b3
SM
8892 struct dwarf2_per_objfile *dwarf2_per_objfile
8893 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 8894 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 8895 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 8896 CORE_ADDR addr = 0;
15d034d0 8897 const char *actual_name = NULL;
e142c38c 8898 CORE_ADDR baseaddr;
15d034d0 8899 char *built_actual_name;
e142c38c
DJ
8900
8901 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 8902
15d034d0
TT
8903 built_actual_name = partial_die_full_name (pdi, cu);
8904 if (built_actual_name != NULL)
8905 actual_name = built_actual_name;
63d06c5c 8906
72bf9492
DJ
8907 if (actual_name == NULL)
8908 actual_name = pdi->name;
8909
c906108c
SS
8910 switch (pdi->tag)
8911 {
b1dc1806 8912 case DW_TAG_inlined_subroutine:
c906108c 8913 case DW_TAG_subprogram:
79748972
TT
8914 addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8915 - baseaddr);
0a4b0913
AB
8916 if (pdi->is_external
8917 || cu->language == language_ada
8918 || (cu->language == language_fortran
8919 && pdi->die_parent != NULL
8920 && pdi->die_parent->tag == DW_TAG_subprogram))
8921 {
8922 /* Normally, only "external" DIEs are part of the global scope.
8923 But in Ada and Fortran, we want to be able to access nested
8924 procedures globally. So all Ada and Fortran subprograms are
8925 stored in the global scope. */
f47fb265 8926 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8927 built_actual_name != NULL,
f47fb265 8928 VAR_DOMAIN, LOC_BLOCK,
79748972 8929 SECT_OFF_TEXT (objfile),
75aedd27 8930 psymbol_placement::GLOBAL,
79748972
TT
8931 addr,
8932 cu->language, objfile);
c906108c
SS
8933 }
8934 else
8935 {
f47fb265 8936 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8937 built_actual_name != NULL,
f47fb265 8938 VAR_DOMAIN, LOC_BLOCK,
79748972 8939 SECT_OFF_TEXT (objfile),
75aedd27 8940 psymbol_placement::STATIC,
1762568f 8941 addr, cu->language, objfile);
c906108c 8942 }
0c1b455e
TT
8943
8944 if (pdi->main_subprogram && actual_name != NULL)
8945 set_objfile_main_name (objfile, actual_name, cu->language);
c906108c 8946 break;
72929c62 8947 case DW_TAG_constant:
75aedd27
TT
8948 add_psymbol_to_list (actual_name, strlen (actual_name),
8949 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8950 -1, (pdi->is_external
8951 ? psymbol_placement::GLOBAL
8952 : psymbol_placement::STATIC),
8953 0, cu->language, objfile);
72929c62 8954 break;
c906108c 8955 case DW_TAG_variable:
95554aad
TT
8956 if (pdi->d.locdesc)
8957 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 8958
95554aad 8959 if (pdi->d.locdesc
caac4577
JG
8960 && addr == 0
8961 && !dwarf2_per_objfile->has_section_at_zero)
8962 {
8963 /* A global or static variable may also have been stripped
8964 out by the linker if unused, in which case its address
8965 will be nullified; do not add such variables into partial
8966 symbol table then. */
8967 }
8968 else if (pdi->is_external)
c906108c
SS
8969 {
8970 /* Global Variable.
8971 Don't enter into the minimal symbol tables as there is
8972 a minimal symbol table entry from the ELF symbols already.
8973 Enter into partial symbol table if it has a location
8974 descriptor or a type.
8975 If the location descriptor is missing, new_symbol will create
8976 a LOC_UNRESOLVED symbol, the address of the variable will then
8977 be determined from the minimal symbol table whenever the variable
8978 is referenced.
8979 The address for the partial symbol table entry is not
8980 used by GDB, but it comes in handy for debugging partial symbol
8981 table building. */
8982
95554aad 8983 if (pdi->d.locdesc || pdi->has_type)
f47fb265 8984 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 8985 built_actual_name != NULL,
f47fb265 8986 VAR_DOMAIN, LOC_STATIC,
79748972 8987 SECT_OFF_TEXT (objfile),
75aedd27 8988 psymbol_placement::GLOBAL,
79748972 8989 addr, cu->language, objfile);
c906108c
SS
8990 }
8991 else
8992 {
ff908ebf
AW
8993 int has_loc = pdi->d.locdesc != NULL;
8994
8995 /* Static Variable. Skip symbols whose value we cannot know (those
8996 without location descriptors or constant values). */
8997 if (!has_loc && !pdi->has_const_value)
decbce07 8998 {
15d034d0 8999 xfree (built_actual_name);
decbce07
MS
9000 return;
9001 }
ff908ebf 9002
f47fb265 9003 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 9004 built_actual_name != NULL,
f47fb265 9005 VAR_DOMAIN, LOC_STATIC,
79748972 9006 SECT_OFF_TEXT (objfile),
75aedd27 9007 psymbol_placement::STATIC,
79748972 9008 has_loc ? addr : 0,
f47fb265 9009 cu->language, objfile);
c906108c
SS
9010 }
9011 break;
9012 case DW_TAG_typedef:
9013 case DW_TAG_base_type:
a02abb62 9014 case DW_TAG_subrange_type:
38d518c9 9015 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 9016 built_actual_name != NULL,
79748972 9017 VAR_DOMAIN, LOC_TYPEDEF, -1,
75aedd27 9018 psymbol_placement::STATIC,
1762568f 9019 0, cu->language, objfile);
c906108c 9020 break;
74921315 9021 case DW_TAG_imported_declaration:
72bf9492
DJ
9022 case DW_TAG_namespace:
9023 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 9024 built_actual_name != NULL,
79748972 9025 VAR_DOMAIN, LOC_TYPEDEF, -1,
75aedd27 9026 psymbol_placement::GLOBAL,
1762568f 9027 0, cu->language, objfile);
72bf9492 9028 break;
530e8392 9029 case DW_TAG_module:
a5fd13a9
BH
9030 /* With Fortran 77 there might be a "BLOCK DATA" module
9031 available without any name. If so, we skip the module as it
9032 doesn't bring any value. */
9033 if (actual_name != nullptr)
9034 add_psymbol_to_list (actual_name, strlen (actual_name),
9035 built_actual_name != NULL,
9036 MODULE_DOMAIN, LOC_TYPEDEF, -1,
9037 psymbol_placement::GLOBAL,
9038 0, cu->language, objfile);
530e8392 9039 break;
c906108c 9040 case DW_TAG_class_type:
680b30c7 9041 case DW_TAG_interface_type:
c906108c
SS
9042 case DW_TAG_structure_type:
9043 case DW_TAG_union_type:
9044 case DW_TAG_enumeration_type:
fa4028e9
JB
9045 /* Skip external references. The DWARF standard says in the section
9046 about "Structure, Union, and Class Type Entries": "An incomplete
9047 structure, union or class type is represented by a structure,
9048 union or class entry that does not have a byte size attribute
9049 and that has a DW_AT_declaration attribute." */
9050 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 9051 {
15d034d0 9052 xfree (built_actual_name);
decbce07
MS
9053 return;
9054 }
fa4028e9 9055
63d06c5c
DC
9056 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9057 static vs. global. */
38d518c9 9058 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 9059 built_actual_name != NULL,
79748972 9060 STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9c37b5ae 9061 cu->language == language_cplus
75aedd27
TT
9062 ? psymbol_placement::GLOBAL
9063 : psymbol_placement::STATIC,
1762568f 9064 0, cu->language, objfile);
c906108c 9065
c906108c
SS
9066 break;
9067 case DW_TAG_enumerator:
38d518c9 9068 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 9069 built_actual_name != NULL,
79748972 9070 VAR_DOMAIN, LOC_CONST, -1,
9c37b5ae 9071 cu->language == language_cplus
75aedd27
TT
9072 ? psymbol_placement::GLOBAL
9073 : psymbol_placement::STATIC,
1762568f 9074 0, cu->language, objfile);
c906108c
SS
9075 break;
9076 default:
9077 break;
9078 }
5c4e30ca 9079
15d034d0 9080 xfree (built_actual_name);
c906108c
SS
9081}
9082
5c4e30ca
DC
9083/* Read a partial die corresponding to a namespace; also, add a symbol
9084 corresponding to that namespace to the symbol table. NAMESPACE is
9085 the name of the enclosing namespace. */
91c24f0a 9086
72bf9492
DJ
9087static void
9088add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 9089 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 9090 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 9091{
72bf9492 9092 /* Add a symbol for the namespace. */
e7c27a73 9093
72bf9492 9094 add_partial_symbol (pdi, cu);
5c4e30ca
DC
9095
9096 /* Now scan partial symbols in that namespace. */
9097
91c24f0a 9098 if (pdi->has_children)
cdc07690 9099 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
9100}
9101
5d7cb8df
JK
9102/* Read a partial die corresponding to a Fortran module. */
9103
9104static void
9105add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 9106 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 9107{
530e8392
KB
9108 /* Add a symbol for the namespace. */
9109
9110 add_partial_symbol (pdi, cu);
9111
f55ee35c 9112 /* Now scan partial symbols in that module. */
5d7cb8df
JK
9113
9114 if (pdi->has_children)
cdc07690 9115 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
9116}
9117
b1dc1806
XR
9118/* Read a partial die corresponding to a subprogram or an inlined
9119 subprogram and create a partial symbol for that subprogram.
9120 When the CU language allows it, this routine also defines a partial
9121 symbol for each nested subprogram that this subprogram contains.
9122 If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9123 Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
6e70227d 9124
cdc07690
YQ
9125 PDI may also be a lexical block, in which case we simply search
9126 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
9127 Again, this is only performed when the CU language allows this
9128 type of definitions. */
9129
9130static void
9131add_partial_subprogram (struct partial_die_info *pdi,
9132 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 9133 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58 9134{
b1dc1806 9135 if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
bc30ff58
JB
9136 {
9137 if (pdi->has_pc_info)
9138 {
9139 if (pdi->lowpc < *lowpc)
9140 *lowpc = pdi->lowpc;
9141 if (pdi->highpc > *highpc)
9142 *highpc = pdi->highpc;
cdc07690 9143 if (set_addrmap)
5734ee8b 9144 {
518817b3 9145 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a
MR
9146 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9147 CORE_ADDR baseaddr;
b926417a
TT
9148 CORE_ADDR this_highpc;
9149 CORE_ADDR this_lowpc;
5734ee8b
DJ
9150
9151 baseaddr = ANOFFSET (objfile->section_offsets,
9152 SECT_OFF_TEXT (objfile));
b926417a
TT
9153 this_lowpc
9154 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9155 pdi->lowpc + baseaddr)
9156 - baseaddr);
9157 this_highpc
9158 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9159 pdi->highpc + baseaddr)
9160 - baseaddr);
d320c2b5 9161 addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
b926417a 9162 this_lowpc, this_highpc - 1,
9291a0cd 9163 cu->per_cu->v.psymtab);
5734ee8b 9164 }
481860b3
GB
9165 }
9166
9167 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9168 {
bc30ff58 9169 if (!pdi->is_declaration)
e8d05480
JB
9170 /* Ignore subprogram DIEs that do not have a name, they are
9171 illegal. Do not emit a complaint at this point, we will
9172 do so when we convert this psymtab into a symtab. */
9173 if (pdi->name)
9174 add_partial_symbol (pdi, cu);
bc30ff58
JB
9175 }
9176 }
6e70227d 9177
bc30ff58
JB
9178 if (! pdi->has_children)
9179 return;
9180
0a4b0913 9181 if (cu->language == language_ada || cu->language == language_fortran)
bc30ff58
JB
9182 {
9183 pdi = pdi->die_child;
9184 while (pdi != NULL)
9185 {
52356b79 9186 pdi->fixup (cu);
bc30ff58 9187 if (pdi->tag == DW_TAG_subprogram
b1dc1806 9188 || pdi->tag == DW_TAG_inlined_subroutine
bc30ff58 9189 || pdi->tag == DW_TAG_lexical_block)
cdc07690 9190 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
9191 pdi = pdi->die_sibling;
9192 }
9193 }
9194}
9195
91c24f0a
DC
9196/* Read a partial die corresponding to an enumeration type. */
9197
72bf9492
DJ
9198static void
9199add_partial_enumeration (struct partial_die_info *enum_pdi,
9200 struct dwarf2_cu *cu)
91c24f0a 9201{
72bf9492 9202 struct partial_die_info *pdi;
91c24f0a
DC
9203
9204 if (enum_pdi->name != NULL)
72bf9492
DJ
9205 add_partial_symbol (enum_pdi, cu);
9206
9207 pdi = enum_pdi->die_child;
9208 while (pdi)
91c24f0a 9209 {
72bf9492 9210 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
b98664d3 9211 complaint (_("malformed enumerator DIE ignored"));
91c24f0a 9212 else
72bf9492
DJ
9213 add_partial_symbol (pdi, cu);
9214 pdi = pdi->die_sibling;
91c24f0a 9215 }
91c24f0a
DC
9216}
9217
6caca83c
CC
9218/* Return the initial uleb128 in the die at INFO_PTR. */
9219
9220static unsigned int
d521ce57 9221peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
9222{
9223 unsigned int bytes_read;
9224
9225 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9226}
9227
685af9cd
TT
9228/* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9229 READER::CU. Use READER::ABBREV_TABLE to lookup any abbreviation.
9230
4bb7a0a7
DJ
9231 Return the corresponding abbrev, or NULL if the number is zero (indicating
9232 an empty DIE). In either case *BYTES_READ will be set to the length of
9233 the initial number. */
9234
9235static struct abbrev_info *
685af9cd
TT
9236peek_die_abbrev (const die_reader_specs &reader,
9237 const gdb_byte *info_ptr, unsigned int *bytes_read)
4bb7a0a7 9238{
685af9cd 9239 dwarf2_cu *cu = reader.cu;
518817b3 9240 bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
685af9cd
TT
9241 unsigned int abbrev_number
9242 = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
4bb7a0a7
DJ
9243
9244 if (abbrev_number == 0)
9245 return NULL;
9246
685af9cd 9247 abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
4bb7a0a7
DJ
9248 if (!abbrev)
9249 {
422b9917 9250 error (_("Dwarf Error: Could not find abbrev number %d in %s"
9d8780f0 9251 " at offset %s [in module %s]"),
422b9917 9252 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9d8780f0 9253 sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
4bb7a0a7
DJ
9254 }
9255
9256 return abbrev;
9257}
9258
93311388
DE
9259/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9260 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
9261 DIE. Any children of the skipped DIEs will also be skipped. */
9262
d521ce57
TT
9263static const gdb_byte *
9264skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 9265{
4bb7a0a7
DJ
9266 while (1)
9267 {
685af9cd
TT
9268 unsigned int bytes_read;
9269 abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9270
4bb7a0a7
DJ
9271 if (abbrev == NULL)
9272 return info_ptr + bytes_read;
9273 else
dee91e82 9274 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
9275 }
9276}
9277
93311388
DE
9278/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9279 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
9280 abbrev corresponding to that skipped uleb128 should be passed in
9281 ABBREV. Returns a pointer to this DIE's sibling, skipping any
9282 children. */
9283
d521ce57
TT
9284static const gdb_byte *
9285skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 9286 struct abbrev_info *abbrev)
4bb7a0a7
DJ
9287{
9288 unsigned int bytes_read;
9289 struct attribute attr;
dee91e82
DE
9290 bfd *abfd = reader->abfd;
9291 struct dwarf2_cu *cu = reader->cu;
d521ce57 9292 const gdb_byte *buffer = reader->buffer;
f664829e 9293 const gdb_byte *buffer_end = reader->buffer_end;
4bb7a0a7
DJ
9294 unsigned int form, i;
9295
9296 for (i = 0; i < abbrev->num_attrs; i++)
9297 {
9298 /* The only abbrev we care about is DW_AT_sibling. */
9299 if (abbrev->attrs[i].name == DW_AT_sibling)
9300 {
dee91e82 9301 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 9302 if (attr.form == DW_FORM_ref_addr)
b98664d3 9303 complaint (_("ignoring absolute DW_AT_sibling"));
4bb7a0a7 9304 else
b9502d3f 9305 {
9c541725
PA
9306 sect_offset off = dwarf2_get_ref_die_offset (&attr);
9307 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
b9502d3f
WN
9308
9309 if (sibling_ptr < info_ptr)
b98664d3 9310 complaint (_("DW_AT_sibling points backwards"));
22869d73
KS
9311 else if (sibling_ptr > reader->buffer_end)
9312 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
9313 else
9314 return sibling_ptr;
9315 }
4bb7a0a7
DJ
9316 }
9317
9318 /* If it isn't DW_AT_sibling, skip this attribute. */
9319 form = abbrev->attrs[i].form;
9320 skip_attribute:
9321 switch (form)
9322 {
4bb7a0a7 9323 case DW_FORM_ref_addr:
ae411497
TT
9324 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9325 and later it is offset sized. */
9326 if (cu->header.version == 2)
9327 info_ptr += cu->header.addr_size;
9328 else
9329 info_ptr += cu->header.offset_size;
9330 break;
36586728
TT
9331 case DW_FORM_GNU_ref_alt:
9332 info_ptr += cu->header.offset_size;
9333 break;
ae411497 9334 case DW_FORM_addr:
4bb7a0a7
DJ
9335 info_ptr += cu->header.addr_size;
9336 break;
9337 case DW_FORM_data1:
9338 case DW_FORM_ref1:
9339 case DW_FORM_flag:
8fe0f950 9340 case DW_FORM_strx1:
4bb7a0a7
DJ
9341 info_ptr += 1;
9342 break;
2dc7f7b3 9343 case DW_FORM_flag_present:
43988095 9344 case DW_FORM_implicit_const:
2dc7f7b3 9345 break;
4bb7a0a7
DJ
9346 case DW_FORM_data2:
9347 case DW_FORM_ref2:
8fe0f950 9348 case DW_FORM_strx2:
4bb7a0a7
DJ
9349 info_ptr += 2;
9350 break;
8fe0f950
AT
9351 case DW_FORM_strx3:
9352 info_ptr += 3;
9353 break;
4bb7a0a7
DJ
9354 case DW_FORM_data4:
9355 case DW_FORM_ref4:
8fe0f950 9356 case DW_FORM_strx4:
4bb7a0a7
DJ
9357 info_ptr += 4;
9358 break;
9359 case DW_FORM_data8:
9360 case DW_FORM_ref8:
55f1336d 9361 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
9362 info_ptr += 8;
9363 break;
0224619f
JK
9364 case DW_FORM_data16:
9365 info_ptr += 16;
9366 break;
4bb7a0a7 9367 case DW_FORM_string:
9b1c24c8 9368 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
9369 info_ptr += bytes_read;
9370 break;
2dc7f7b3 9371 case DW_FORM_sec_offset:
4bb7a0a7 9372 case DW_FORM_strp:
36586728 9373 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
9374 info_ptr += cu->header.offset_size;
9375 break;
2dc7f7b3 9376 case DW_FORM_exprloc:
4bb7a0a7
DJ
9377 case DW_FORM_block:
9378 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9379 info_ptr += bytes_read;
9380 break;
9381 case DW_FORM_block1:
9382 info_ptr += 1 + read_1_byte (abfd, info_ptr);
9383 break;
9384 case DW_FORM_block2:
9385 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9386 break;
9387 case DW_FORM_block4:
9388 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9389 break;
336d760d 9390 case DW_FORM_addrx:
cf532bd1 9391 case DW_FORM_strx:
4bb7a0a7
DJ
9392 case DW_FORM_sdata:
9393 case DW_FORM_udata:
9394 case DW_FORM_ref_udata:
3019eac3
DE
9395 case DW_FORM_GNU_addr_index:
9396 case DW_FORM_GNU_str_index:
d521ce57 9397 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
9398 break;
9399 case DW_FORM_indirect:
9400 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9401 info_ptr += bytes_read;
9402 /* We need to continue parsing from here, so just go back to
9403 the top. */
9404 goto skip_attribute;
9405
9406 default:
3e43a32a
MS
9407 error (_("Dwarf Error: Cannot handle %s "
9408 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
9409 dwarf_form_name (form),
9410 bfd_get_filename (abfd));
9411 }
9412 }
9413
9414 if (abbrev->has_children)
dee91e82 9415 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
9416 else
9417 return info_ptr;
9418}
9419
93311388 9420/* Locate ORIG_PDI's sibling.
dee91e82 9421 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 9422
d521ce57 9423static const gdb_byte *
dee91e82
DE
9424locate_pdi_sibling (const struct die_reader_specs *reader,
9425 struct partial_die_info *orig_pdi,
d521ce57 9426 const gdb_byte *info_ptr)
91c24f0a
DC
9427{
9428 /* Do we know the sibling already? */
72bf9492 9429
91c24f0a
DC
9430 if (orig_pdi->sibling)
9431 return orig_pdi->sibling;
9432
9433 /* Are there any children to deal with? */
9434
9435 if (!orig_pdi->has_children)
9436 return info_ptr;
9437
4bb7a0a7 9438 /* Skip the children the long way. */
91c24f0a 9439
dee91e82 9440 return skip_children (reader, info_ptr);
91c24f0a
DC
9441}
9442
257e7a09 9443/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 9444 not NULL. */
c906108c
SS
9445
9446static void
257e7a09
YQ
9447dwarf2_read_symtab (struct partial_symtab *self,
9448 struct objfile *objfile)
c906108c 9449{
ed2dc618
SM
9450 struct dwarf2_per_objfile *dwarf2_per_objfile
9451 = get_dwarf2_per_objfile (objfile);
9452
257e7a09 9453 if (self->readin)
c906108c 9454 {
442e4d9c 9455 warning (_("bug: psymtab for %s is already read in."),
257e7a09 9456 self->filename);
442e4d9c
YQ
9457 }
9458 else
9459 {
9460 if (info_verbose)
c906108c 9461 {
442e4d9c 9462 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 9463 self->filename);
442e4d9c 9464 gdb_flush (gdb_stdout);
c906108c 9465 }
c906108c 9466
442e4d9c
YQ
9467 /* If this psymtab is constructed from a debug-only objfile, the
9468 has_section_at_zero flag will not necessarily be correct. We
9469 can get the correct value for this flag by looking at the data
9470 associated with the (presumably stripped) associated objfile. */
9471 if (objfile->separate_debug_objfile_backlink)
9472 {
9473 struct dwarf2_per_objfile *dpo_backlink
ed2dc618 9474 = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9a619af0 9475
442e4d9c
YQ
9476 dwarf2_per_objfile->has_section_at_zero
9477 = dpo_backlink->has_section_at_zero;
9478 }
b2ab525c 9479
442e4d9c 9480 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 9481
257e7a09 9482 psymtab_to_symtab_1 (self);
c906108c 9483
442e4d9c
YQ
9484 /* Finish up the debug error message. */
9485 if (info_verbose)
9486 printf_filtered (_("done.\n"));
c906108c 9487 }
95554aad 9488
ed2dc618 9489 process_cu_includes (dwarf2_per_objfile);
c906108c 9490}
9cdd5dbd
DE
9491\f
9492/* Reading in full CUs. */
c906108c 9493
10b3939b
DJ
9494/* Add PER_CU to the queue. */
9495
9496static void
95554aad
TT
9497queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9498 enum language pretend_language)
10b3939b
DJ
9499{
9500 struct dwarf2_queue_item *item;
9501
9502 per_cu->queued = 1;
8d749320 9503 item = XNEW (struct dwarf2_queue_item);
10b3939b 9504 item->per_cu = per_cu;
95554aad 9505 item->pretend_language = pretend_language;
10b3939b
DJ
9506 item->next = NULL;
9507
9508 if (dwarf2_queue == NULL)
9509 dwarf2_queue = item;
9510 else
9511 dwarf2_queue_tail->next = item;
9512
9513 dwarf2_queue_tail = item;
9514}
9515
89e63ee4
DE
9516/* If PER_CU is not yet queued, add it to the queue.
9517 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9518 dependency.
0907af0c 9519 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
9520 meaning either PER_CU is already queued or it is already loaded.
9521
9522 N.B. There is an invariant here that if a CU is queued then it is loaded.
9523 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
9524
9525static int
89e63ee4 9526maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
9527 struct dwarf2_per_cu_data *per_cu,
9528 enum language pretend_language)
9529{
9530 /* We may arrive here during partial symbol reading, if we need full
9531 DIEs to process an unusual case (e.g. template arguments). Do
9532 not queue PER_CU, just tell our caller to load its DIEs. */
ed2dc618 9533 if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
0907af0c
DE
9534 {
9535 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9536 return 1;
9537 return 0;
9538 }
9539
9540 /* Mark the dependence relation so that we don't flush PER_CU
9541 too early. */
89e63ee4
DE
9542 if (dependent_cu != NULL)
9543 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
9544
9545 /* If it's already on the queue, we have nothing to do. */
9546 if (per_cu->queued)
9547 return 0;
9548
9549 /* If the compilation unit is already loaded, just mark it as
9550 used. */
9551 if (per_cu->cu != NULL)
9552 {
9553 per_cu->cu->last_used = 0;
9554 return 0;
9555 }
9556
9557 /* Add it to the queue. */
9558 queue_comp_unit (per_cu, pretend_language);
9559
9560 return 1;
9561}
9562
10b3939b
DJ
9563/* Process the queue. */
9564
9565static void
ed2dc618 9566process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
10b3939b
DJ
9567{
9568 struct dwarf2_queue_item *item, *next_item;
9569
b4f54984 9570 if (dwarf_read_debug)
45cfd468
DE
9571 {
9572 fprintf_unfiltered (gdb_stdlog,
9573 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 9574 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
9575 }
9576
03dd20cc
DJ
9577 /* The queue starts out with one item, but following a DIE reference
9578 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
9579 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9580 {
cc12ce38
DE
9581 if ((dwarf2_per_objfile->using_index
9582 ? !item->per_cu->v.quick->compunit_symtab
9583 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9584 /* Skip dummy CUs. */
9585 && item->per_cu->cu != NULL)
f4dc4d17
DE
9586 {
9587 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 9588 unsigned int debug_print_threshold;
247f5c4f 9589 char buf[100];
f4dc4d17 9590
247f5c4f 9591 if (per_cu->is_debug_types)
f4dc4d17 9592 {
247f5c4f
DE
9593 struct signatured_type *sig_type =
9594 (struct signatured_type *) per_cu;
9595
9d8780f0 9596 sprintf (buf, "TU %s at offset %s",
73be47f5 9597 hex_string (sig_type->signature),
9d8780f0 9598 sect_offset_str (per_cu->sect_off));
73be47f5
DE
9599 /* There can be 100s of TUs.
9600 Only print them in verbose mode. */
9601 debug_print_threshold = 2;
f4dc4d17 9602 }
247f5c4f 9603 else
73be47f5 9604 {
9d8780f0
SM
9605 sprintf (buf, "CU at offset %s",
9606 sect_offset_str (per_cu->sect_off));
73be47f5
DE
9607 debug_print_threshold = 1;
9608 }
247f5c4f 9609
b4f54984 9610 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 9611 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
9612
9613 if (per_cu->is_debug_types)
9614 process_full_type_unit (per_cu, item->pretend_language);
9615 else
9616 process_full_comp_unit (per_cu, item->pretend_language);
9617
b4f54984 9618 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 9619 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 9620 }
10b3939b
DJ
9621
9622 item->per_cu->queued = 0;
9623 next_item = item->next;
9624 xfree (item);
9625 }
9626
9627 dwarf2_queue_tail = NULL;
45cfd468 9628
b4f54984 9629 if (dwarf_read_debug)
45cfd468
DE
9630 {
9631 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 9632 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 9633 }
10b3939b
DJ
9634}
9635
10b3939b
DJ
9636/* Read in full symbols for PST, and anything it depends on. */
9637
c906108c 9638static void
fba45db2 9639psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 9640{
10b3939b 9641 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
9642 int i;
9643
95554aad
TT
9644 if (pst->readin)
9645 return;
9646
aaa75496 9647 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
9648 if (!pst->dependencies[i]->readin
9649 && pst->dependencies[i]->user == NULL)
aaa75496
JB
9650 {
9651 /* Inform about additional files that need to be read in. */
9652 if (info_verbose)
9653 {
a3f17187 9654 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
9655 fputs_filtered (" ", gdb_stdout);
9656 wrap_here ("");
9657 fputs_filtered ("and ", gdb_stdout);
9658 wrap_here ("");
9659 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 9660 wrap_here (""); /* Flush output. */
aaa75496
JB
9661 gdb_flush (gdb_stdout);
9662 }
9663 psymtab_to_symtab_1 (pst->dependencies[i]);
9664 }
9665
9a3c8263 9666 per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
10b3939b
DJ
9667
9668 if (per_cu == NULL)
aaa75496
JB
9669 {
9670 /* It's an include file, no symbols to read for it.
9671 Everything is in the parent symtab. */
9672 pst->readin = 1;
9673 return;
9674 }
c906108c 9675
58f0c718 9676 dw2_do_instantiate_symtab (per_cu, false);
10b3939b
DJ
9677}
9678
dee91e82
DE
9679/* Trivial hash function for die_info: the hash value of a DIE
9680 is its offset in .debug_info for this objfile. */
10b3939b 9681
dee91e82
DE
9682static hashval_t
9683die_hash (const void *item)
10b3939b 9684{
9a3c8263 9685 const struct die_info *die = (const struct die_info *) item;
6502dd73 9686
9c541725 9687 return to_underlying (die->sect_off);
dee91e82 9688}
63d06c5c 9689
dee91e82
DE
9690/* Trivial comparison function for die_info structures: two DIEs
9691 are equal if they have the same offset. */
98bfdba5 9692
dee91e82
DE
9693static int
9694die_eq (const void *item_lhs, const void *item_rhs)
9695{
9a3c8263
SM
9696 const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9697 const struct die_info *die_rhs = (const struct die_info *) item_rhs;
c906108c 9698
9c541725 9699 return die_lhs->sect_off == die_rhs->sect_off;
dee91e82 9700}
c906108c 9701
dee91e82
DE
9702/* die_reader_func for load_full_comp_unit.
9703 This is identical to read_signatured_type_reader,
9704 but is kept separate for now. */
c906108c 9705
dee91e82
DE
9706static void
9707load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 9708 const gdb_byte *info_ptr,
dee91e82
DE
9709 struct die_info *comp_unit_die,
9710 int has_children,
9711 void *data)
9712{
9713 struct dwarf2_cu *cu = reader->cu;
9a3c8263 9714 enum language *language_ptr = (enum language *) data;
6caca83c 9715
dee91e82
DE
9716 gdb_assert (cu->die_hash == NULL);
9717 cu->die_hash =
9718 htab_create_alloc_ex (cu->header.length / 12,
9719 die_hash,
9720 die_eq,
9721 NULL,
9722 &cu->comp_unit_obstack,
9723 hashtab_obstack_allocate,
9724 dummy_obstack_deallocate);
e142c38c 9725
dee91e82
DE
9726 if (has_children)
9727 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9728 &info_ptr, comp_unit_die);
9729 cu->dies = comp_unit_die;
9730 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
9731
9732 /* We try not to read any attributes in this function, because not
9cdd5dbd 9733 all CUs needed for references have been loaded yet, and symbol
10b3939b 9734 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
9735 or we won't be able to build types correctly.
9736 Similarly, if we do not read the producer, we can not apply
9737 producer-specific interpretation. */
95554aad 9738 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 9739}
10b3939b 9740
dee91e82 9741/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 9742
dee91e82 9743static void
95554aad 9744load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
58f0c718 9745 bool skip_partial,
95554aad 9746 enum language pretend_language)
dee91e82 9747{
3019eac3 9748 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 9749
58f0c718 9750 init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
f4dc4d17 9751 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
9752}
9753
3da10d80
KS
9754/* Add a DIE to the delayed physname list. */
9755
9756static void
9757add_to_method_list (struct type *type, int fnfield_index, int index,
9758 const char *name, struct die_info *die,
9759 struct dwarf2_cu *cu)
9760{
9761 struct delayed_method_info mi;
9762 mi.type = type;
9763 mi.fnfield_index = fnfield_index;
9764 mi.index = index;
9765 mi.name = name;
9766 mi.die = die;
c89b44cd 9767 cu->method_list.push_back (mi);
3da10d80
KS
9768}
9769
3693fdb3
PA
9770/* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9771 "const" / "volatile". If so, decrements LEN by the length of the
9772 modifier and return true. Otherwise return false. */
9773
9774template<size_t N>
9775static bool
9776check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9777{
9778 size_t mod_len = sizeof (mod) - 1;
9779 if (len > mod_len && startswith (physname + (len - mod_len), mod))
9780 {
9781 len -= mod_len;
9782 return true;
9783 }
9784 return false;
9785}
9786
3da10d80
KS
9787/* Compute the physnames of any methods on the CU's method list.
9788
9789 The computation of method physnames is delayed in order to avoid the
9790 (bad) condition that one of the method's formal parameters is of an as yet
9791 incomplete type. */
9792
9793static void
9794compute_delayed_physnames (struct dwarf2_cu *cu)
9795{
3693fdb3 9796 /* Only C++ delays computing physnames. */
c89b44cd 9797 if (cu->method_list.empty ())
3693fdb3
PA
9798 return;
9799 gdb_assert (cu->language == language_cplus);
9800
52941706 9801 for (const delayed_method_info &mi : cu->method_list)
3da10d80 9802 {
1d06ead6 9803 const char *physname;
3da10d80 9804 struct fn_fieldlist *fn_flp
c89b44cd
TT
9805 = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9806 physname = dwarf2_physname (mi.name, mi.die, cu);
9807 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
005e54bb 9808 = physname ? physname : "";
3693fdb3
PA
9809
9810 /* Since there's no tag to indicate whether a method is a
9811 const/volatile overload, extract that information out of the
9812 demangled name. */
9813 if (physname != NULL)
9814 {
9815 size_t len = strlen (physname);
9816
9817 while (1)
9818 {
9819 if (physname[len] == ')') /* shortcut */
9820 break;
9821 else if (check_modifier (physname, len, " const"))
c89b44cd 9822 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
3693fdb3 9823 else if (check_modifier (physname, len, " volatile"))
c89b44cd 9824 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
3693fdb3
PA
9825 else
9826 break;
9827 }
9828 }
3da10d80 9829 }
c89b44cd
TT
9830
9831 /* The list is no longer needed. */
9832 cu->method_list.clear ();
3da10d80
KS
9833}
9834
a766d390
DE
9835/* Go objects should be embedded in a DW_TAG_module DIE,
9836 and it's not clear if/how imported objects will appear.
9837 To keep Go support simple until that's worked out,
9838 go back through what we've read and create something usable.
9839 We could do this while processing each DIE, and feels kinda cleaner,
9840 but that way is more invasive.
9841 This is to, for example, allow the user to type "p var" or "b main"
9842 without having to specify the package name, and allow lookups
9843 of module.object to work in contexts that use the expression
9844 parser. */
9845
9846static void
9847fixup_go_packaging (struct dwarf2_cu *cu)
9848{
9849 char *package_name = NULL;
9850 struct pending *list;
9851 int i;
9852
c24bdb02 9853 for (list = *cu->get_builder ()->get_global_symbols ();
804d2729
TT
9854 list != NULL;
9855 list = list->next)
a766d390
DE
9856 {
9857 for (i = 0; i < list->nsyms; ++i)
9858 {
9859 struct symbol *sym = list->symbol[i];
9860
9861 if (SYMBOL_LANGUAGE (sym) == language_go
9862 && SYMBOL_CLASS (sym) == LOC_BLOCK)
9863 {
9864 char *this_package_name = go_symbol_package_name (sym);
9865
9866 if (this_package_name == NULL)
9867 continue;
9868 if (package_name == NULL)
9869 package_name = this_package_name;
9870 else
9871 {
518817b3
SM
9872 struct objfile *objfile
9873 = cu->per_cu->dwarf2_per_objfile->objfile;
a766d390 9874 if (strcmp (package_name, this_package_name) != 0)
b98664d3 9875 complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
9876 (symbol_symtab (sym) != NULL
9877 ? symtab_to_filename_for_display
9878 (symbol_symtab (sym))
e3b94546 9879 : objfile_name (objfile)),
a766d390
DE
9880 this_package_name, package_name);
9881 xfree (this_package_name);
9882 }
9883 }
9884 }
9885 }
9886
9887 if (package_name != NULL)
9888 {
518817b3 9889 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
34a68019 9890 const char *saved_package_name
021887d8 9891 = obstack_strdup (&objfile->per_bfd->storage_obstack, package_name);
19f392bc
UW
9892 struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9893 saved_package_name);
a766d390
DE
9894 struct symbol *sym;
9895
e623cf5d 9896 sym = allocate_symbol (objfile);
f85f34ed 9897 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
9898 SYMBOL_SET_NAMES (sym, saved_package_name,
9899 strlen (saved_package_name), 0, objfile);
a766d390
DE
9900 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9901 e.g., "main" finds the "main" module and not C's main(). */
9902 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 9903 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
9904 SYMBOL_TYPE (sym) = type;
9905
c24bdb02 9906 add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
a766d390
DE
9907
9908 xfree (package_name);
9909 }
9910}
9911
c9317f21
TT
9912/* Allocate a fully-qualified name consisting of the two parts on the
9913 obstack. */
9914
9915static const char *
9916rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9917{
9918 return obconcat (obstack, p1, "::", p2, (char *) NULL);
9919}
9920
9921/* A helper that allocates a struct discriminant_info to attach to a
9922 union type. */
9923
9924static struct discriminant_info *
9925alloc_discriminant_info (struct type *type, int discriminant_index,
9926 int default_index)
9927{
9928 gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
c7b15a66
TT
9929 gdb_assert (discriminant_index == -1
9930 || (discriminant_index >= 0
9931 && discriminant_index < TYPE_NFIELDS (type)));
c9317f21 9932 gdb_assert (default_index == -1
c7b15a66 9933 || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
c9317f21
TT
9934
9935 TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9936
9937 struct discriminant_info *disc
9938 = ((struct discriminant_info *)
9939 TYPE_ZALLOC (type,
9940 offsetof (struct discriminant_info, discriminants)
9941 + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9942 disc->default_index = default_index;
9943 disc->discriminant_index = discriminant_index;
9944
9945 struct dynamic_prop prop;
9946 prop.kind = PROP_UNDEFINED;
9947 prop.data.baton = disc;
9948
9949 add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9950
9951 return disc;
9952}
9953
9954/* Some versions of rustc emitted enums in an unusual way.
9955
9956 Ordinary enums were emitted as unions. The first element of each
9957 structure in the union was named "RUST$ENUM$DISR". This element
9958 held the discriminant.
9959
9960 These versions of Rust also implemented the "non-zero"
9961 optimization. When the enum had two values, and one is empty and
9962 the other holds a pointer that cannot be zero, the pointer is used
9963 as the discriminant, with a zero value meaning the empty variant.
9964 Here, the union's first member is of the form
9965 RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9966 where the fieldnos are the indices of the fields that should be
9967 traversed in order to find the field (which may be several fields deep)
9968 and the variantname is the name of the variant of the case when the
9969 field is zero.
9970
9971 This function recognizes whether TYPE is of one of these forms,
9972 and, if so, smashes it to be a variant type. */
9973
9974static void
9975quirk_rust_enum (struct type *type, struct objfile *objfile)
9976{
9977 gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9978
9979 /* We don't need to deal with empty enums. */
9980 if (TYPE_NFIELDS (type) == 0)
9981 return;
9982
9983#define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9984 if (TYPE_NFIELDS (type) == 1
9985 && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9986 {
9987 const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9988
9989 /* Decode the field name to find the offset of the
9990 discriminant. */
9991 ULONGEST bit_offset = 0;
9992 struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9993 while (name[0] >= '0' && name[0] <= '9')
9994 {
9995 char *tail;
9996 unsigned long index = strtoul (name, &tail, 10);
9997 name = tail;
9998 if (*name != '$'
9999 || index >= TYPE_NFIELDS (field_type)
10000 || (TYPE_FIELD_LOC_KIND (field_type, index)
10001 != FIELD_LOC_KIND_BITPOS))
10002 {
b98664d3 10003 complaint (_("Could not parse Rust enum encoding string \"%s\""
c9317f21
TT
10004 "[in module %s]"),
10005 TYPE_FIELD_NAME (type, 0),
10006 objfile_name (objfile));
10007 return;
10008 }
10009 ++name;
10010
10011 bit_offset += TYPE_FIELD_BITPOS (field_type, index);
10012 field_type = TYPE_FIELD_TYPE (field_type, index);
10013 }
10014
10015 /* Make a union to hold the variants. */
10016 struct type *union_type = alloc_type (objfile);
10017 TYPE_CODE (union_type) = TYPE_CODE_UNION;
10018 TYPE_NFIELDS (union_type) = 3;
10019 TYPE_FIELDS (union_type)
10020 = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
10021 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
2b4424c3 10022 set_type_align (union_type, TYPE_RAW_ALIGN (type));
c9317f21
TT
10023
10024 /* Put the discriminant must at index 0. */
10025 TYPE_FIELD_TYPE (union_type, 0) = field_type;
10026 TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10027 TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10028 SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10029
10030 /* The order of fields doesn't really matter, so put the real
10031 field at index 1 and the data-less field at index 2. */
10032 struct discriminant_info *disc
10033 = alloc_discriminant_info (union_type, 0, 1);
10034 TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10035 TYPE_FIELD_NAME (union_type, 1)
10036 = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10037 TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10038 = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10039 TYPE_FIELD_NAME (union_type, 1));
10040
10041 const char *dataless_name
10042 = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10043 name);
10044 struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10045 dataless_name);
10046 TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10047 /* NAME points into the original discriminant name, which
10048 already has the correct lifetime. */
10049 TYPE_FIELD_NAME (union_type, 2) = name;
10050 SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10051 disc->discriminants[2] = 0;
10052
10053 /* Smash this type to be a structure type. We have to do this
10054 because the type has already been recorded. */
10055 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10056 TYPE_NFIELDS (type) = 1;
10057 TYPE_FIELDS (type)
10058 = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10059
10060 /* Install the variant part. */
10061 TYPE_FIELD_TYPE (type, 0) = union_type;
10062 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10063 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10064 }
77c2dba3
TT
10065 /* A union with a single anonymous field is probably an old-style
10066 univariant enum. */
10067 else if (TYPE_NFIELDS (type) == 1 && streq (TYPE_FIELD_NAME (type, 0), ""))
c9317f21 10068 {
c9317f21
TT
10069 /* Smash this type to be a structure type. We have to do this
10070 because the type has already been recorded. */
10071 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10072
10073 /* Make a union to hold the variants. */
10074 struct type *union_type = alloc_type (objfile);
10075 TYPE_CODE (union_type) = TYPE_CODE_UNION;
10076 TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10077 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
2b4424c3 10078 set_type_align (union_type, TYPE_RAW_ALIGN (type));
c9317f21
TT
10079 TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10080
10081 struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10082 const char *variant_name
10083 = rust_last_path_segment (TYPE_NAME (field_type));
10084 TYPE_FIELD_NAME (union_type, 0) = variant_name;
10085 TYPE_NAME (field_type)
10086 = rust_fully_qualify (&objfile->objfile_obstack,
c7b15a66 10087 TYPE_NAME (type), variant_name);
c9317f21
TT
10088
10089 /* Install the union in the outer struct type. */
10090 TYPE_NFIELDS (type) = 1;
10091 TYPE_FIELDS (type)
10092 = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10093 TYPE_FIELD_TYPE (type, 0) = union_type;
10094 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10095 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10096
10097 alloc_discriminant_info (union_type, -1, 0);
10098 }
10099 else
10100 {
10101 struct type *disr_type = nullptr;
10102 for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10103 {
10104 disr_type = TYPE_FIELD_TYPE (type, i);
10105
a037790e
TT
10106 if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10107 {
10108 /* All fields of a true enum will be structs. */
10109 return;
10110 }
10111 else if (TYPE_NFIELDS (disr_type) == 0)
c9317f21
TT
10112 {
10113 /* Could be data-less variant, so keep going. */
a037790e 10114 disr_type = nullptr;
c9317f21
TT
10115 }
10116 else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10117 "RUST$ENUM$DISR") != 0)
10118 {
10119 /* Not a Rust enum. */
10120 return;
10121 }
10122 else
10123 {
10124 /* Found one. */
10125 break;
10126 }
10127 }
10128
10129 /* If we got here without a discriminant, then it's probably
10130 just a union. */
10131 if (disr_type == nullptr)
10132 return;
10133
10134 /* Smash this type to be a structure type. We have to do this
10135 because the type has already been recorded. */
10136 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10137
10138 /* Make a union to hold the variants. */
10139 struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10140 struct type *union_type = alloc_type (objfile);
10141 TYPE_CODE (union_type) = TYPE_CODE_UNION;
10142 TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10143 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
2b4424c3 10144 set_type_align (union_type, TYPE_RAW_ALIGN (type));
c9317f21
TT
10145 TYPE_FIELDS (union_type)
10146 = (struct field *) TYPE_ZALLOC (union_type,
10147 (TYPE_NFIELDS (union_type)
10148 * sizeof (struct field)));
10149
10150 memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10151 TYPE_NFIELDS (type) * sizeof (struct field));
10152
10153 /* Install the discriminant at index 0 in the union. */
10154 TYPE_FIELD (union_type, 0) = *disr_field;
10155 TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10156 TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10157
10158 /* Install the union in the outer struct type. */
10159 TYPE_FIELD_TYPE (type, 0) = union_type;
10160 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10161 TYPE_NFIELDS (type) = 1;
10162
10163 /* Set the size and offset of the union type. */
10164 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10165
10166 /* We need a way to find the correct discriminant given a
10167 variant name. For convenience we build a map here. */
10168 struct type *enum_type = FIELD_TYPE (*disr_field);
10169 std::unordered_map<std::string, ULONGEST> discriminant_map;
10170 for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10171 {
10172 if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10173 {
10174 const char *name
10175 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10176 discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10177 }
10178 }
10179
10180 int n_fields = TYPE_NFIELDS (union_type);
10181 struct discriminant_info *disc
10182 = alloc_discriminant_info (union_type, 0, -1);
10183 /* Skip the discriminant here. */
10184 for (int i = 1; i < n_fields; ++i)
10185 {
10186 /* Find the final word in the name of this variant's type.
10187 That name can be used to look up the correct
10188 discriminant. */
10189 const char *variant_name
10190 = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10191 i)));
10192
10193 auto iter = discriminant_map.find (variant_name);
10194 if (iter != discriminant_map.end ())
10195 disc->discriminants[i] = iter->second;
10196
bedda9ac 10197 /* Remove the discriminant field, if it exists. */
c9317f21 10198 struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
bedda9ac
TT
10199 if (TYPE_NFIELDS (sub_type) > 0)
10200 {
10201 --TYPE_NFIELDS (sub_type);
10202 ++TYPE_FIELDS (sub_type);
10203 }
c9317f21
TT
10204 TYPE_FIELD_NAME (union_type, i) = variant_name;
10205 TYPE_NAME (sub_type)
10206 = rust_fully_qualify (&objfile->objfile_obstack,
10207 TYPE_NAME (type), variant_name);
10208 }
10209 }
10210}
10211
10212/* Rewrite some Rust unions to be structures with variants parts. */
10213
10214static void
10215rust_union_quirks (struct dwarf2_cu *cu)
10216{
10217 gdb_assert (cu->language == language_rust);
52941706
SM
10218 for (type *type_ : cu->rust_unions)
10219 quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
2d79090e
TT
10220 /* We don't need this any more. */
10221 cu->rust_unions.clear ();
c9317f21
TT
10222}
10223
95554aad
TT
10224/* Return the symtab for PER_CU. This works properly regardless of
10225 whether we're using the index or psymtabs. */
10226
43f3e411
DE
10227static struct compunit_symtab *
10228get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad 10229{
ed2dc618 10230 return (per_cu->dwarf2_per_objfile->using_index
43f3e411
DE
10231 ? per_cu->v.quick->compunit_symtab
10232 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
10233}
10234
10235/* A helper function for computing the list of all symbol tables
10236 included by PER_CU. */
10237
10238static void
4c39bc03 10239recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
ec94af83 10240 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 10241 struct dwarf2_per_cu_data *per_cu,
43f3e411 10242 struct compunit_symtab *immediate_parent)
95554aad
TT
10243{
10244 void **slot;
43f3e411 10245 struct compunit_symtab *cust;
95554aad
TT
10246
10247 slot = htab_find_slot (all_children, per_cu, INSERT);
10248 if (*slot != NULL)
10249 {
10250 /* This inclusion and its children have been processed. */
10251 return;
10252 }
10253
10254 *slot = per_cu;
10255 /* Only add a CU if it has a symbol table. */
43f3e411
DE
10256 cust = get_compunit_symtab (per_cu);
10257 if (cust != NULL)
ec94af83
DE
10258 {
10259 /* If this is a type unit only add its symbol table if we haven't
10260 seen it yet (type unit per_cu's can share symtabs). */
10261 if (per_cu->is_debug_types)
10262 {
43f3e411 10263 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
10264 if (*slot == NULL)
10265 {
43f3e411 10266 *slot = cust;
4c39bc03 10267 result->push_back (cust);
43f3e411
DE
10268 if (cust->user == NULL)
10269 cust->user = immediate_parent;
ec94af83
DE
10270 }
10271 }
10272 else
f9125b6c 10273 {
4c39bc03 10274 result->push_back (cust);
43f3e411
DE
10275 if (cust->user == NULL)
10276 cust->user = immediate_parent;
f9125b6c 10277 }
ec94af83 10278 }
95554aad 10279
ae640021
AB
10280 if (!per_cu->imported_symtabs_empty ())
10281 for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
10282 {
10283 recursively_compute_inclusions (result, all_children,
10284 all_type_symtabs, ptr, cust);
10285 }
95554aad
TT
10286}
10287
43f3e411 10288/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
10289 PER_CU. */
10290
10291static void
43f3e411 10292compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 10293{
f4dc4d17
DE
10294 gdb_assert (! per_cu->is_debug_types);
10295
ae640021 10296 if (!per_cu->imported_symtabs_empty ())
95554aad 10297 {
ae640021 10298 int len;
4c39bc03 10299 std::vector<compunit_symtab *> result_symtabs;
ec94af83 10300 htab_t all_children, all_type_symtabs;
43f3e411 10301 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
10302
10303 /* If we don't have a symtab, we can just skip this case. */
43f3e411 10304 if (cust == NULL)
95554aad
TT
10305 return;
10306
10307 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10308 NULL, xcalloc, xfree);
ec94af83
DE
10309 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10310 NULL, xcalloc, xfree);
95554aad 10311
ae640021 10312 for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
ec94af83
DE
10313 {
10314 recursively_compute_inclusions (&result_symtabs, all_children,
ae640021 10315 all_type_symtabs, ptr, cust);
ec94af83 10316 }
95554aad 10317
ec94af83 10318 /* Now we have a transitive closure of all the included symtabs. */
4c39bc03 10319 len = result_symtabs.size ();
43f3e411 10320 cust->includes
ed2dc618 10321 = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
8d749320 10322 struct compunit_symtab *, len + 1);
4c39bc03
TT
10323 memcpy (cust->includes, result_symtabs.data (),
10324 len * sizeof (compunit_symtab *));
43f3e411 10325 cust->includes[len] = NULL;
95554aad 10326
95554aad 10327 htab_delete (all_children);
ec94af83 10328 htab_delete (all_type_symtabs);
95554aad
TT
10329 }
10330}
10331
10332/* Compute the 'includes' field for the symtabs of all the CUs we just
10333 read. */
10334
10335static void
ed2dc618 10336process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
95554aad 10337{
71b73764 10338 for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
f4dc4d17
DE
10339 {
10340 if (! iter->is_debug_types)
43f3e411 10341 compute_compunit_symtab_includes (iter);
f4dc4d17 10342 }
95554aad 10343
c5d0225d 10344 dwarf2_per_objfile->just_read_cus.clear ();
95554aad
TT
10345}
10346
9cdd5dbd 10347/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
10348 already been loaded into memory. */
10349
10350static void
95554aad
TT
10351process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10352 enum language pretend_language)
10b3939b 10353{
10b3939b 10354 struct dwarf2_cu *cu = per_cu->cu;
ed2dc618
SM
10355 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10356 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 10357 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 10358 CORE_ADDR lowpc, highpc;
43f3e411 10359 struct compunit_symtab *cust;
10b3939b 10360 CORE_ADDR baseaddr;
4359dff1 10361 struct block *static_block;
3e29f34a 10362 CORE_ADDR addr;
10b3939b
DJ
10363
10364 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10365
c89b44cd
TT
10366 /* Clear the list here in case something was left over. */
10367 cu->method_list.clear ();
10b3939b 10368
95554aad
TT
10369 cu->language = pretend_language;
10370 cu->language_defn = language_def (cu->language);
10371
c906108c 10372 /* Do line number decoding in read_file_scope () */
10b3939b 10373 process_die (cu->dies, cu);
c906108c 10374
a766d390
DE
10375 /* For now fudge the Go package. */
10376 if (cu->language == language_go)
10377 fixup_go_packaging (cu);
10378
5f48f8f3 10379 /* Now that we have processed all the DIEs in the CU, all the types
3da10d80
KS
10380 should be complete, and it should now be safe to compute all of the
10381 physnames. */
10382 compute_delayed_physnames (cu);
3da10d80 10383
c9317f21
TT
10384 if (cu->language == language_rust)
10385 rust_union_quirks (cu);
10386
fae299cd
DC
10387 /* Some compilers don't define a DW_AT_high_pc attribute for the
10388 compilation unit. If the DW_AT_high_pc is missing, synthesize
10389 it, by scanning the DIE's below the compilation unit. */
10b3939b 10390 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 10391
3e29f34a 10392 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c24bdb02 10393 static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
10394
10395 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10396 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10397 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
10398 addrmap to help ensure it has an accurate map of pc values belonging to
10399 this comp unit. */
10400 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10401
c24bdb02 10402 cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
804d2729
TT
10403 SECT_OFF_TEXT (objfile),
10404 0);
c906108c 10405
43f3e411 10406 if (cust != NULL)
c906108c 10407 {
df15bd07 10408 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 10409
8be455d7
JK
10410 /* Set symtab language to language from DW_AT_language. If the
10411 compilation is from a C file generated by language preprocessors, do
10412 not set the language if it was already deduced by start_subfile. */
43f3e411 10413 if (!(cu->language == language_c
40e3ad0e 10414 && COMPUNIT_FILETABS (cust)->language != language_unknown))
43f3e411 10415 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
10416
10417 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
10418 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
10419 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
10420 there were bugs in prologue debug info, fixed later in GCC-4.5
10421 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
10422
10423 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10424 needed, it would be wrong due to missing DW_AT_producer there.
10425
10426 Still one can confuse GDB by using non-standard GCC compilation
10427 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
5f48f8f3 10428 */
ab260dad 10429 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 10430 cust->locations_valid = 1;
e0d00bc7
JK
10431
10432 if (gcc_4_minor >= 5)
43f3e411 10433 cust->epilogue_unwind_valid = 1;
96408a79 10434
43f3e411 10435 cust->call_site_htab = cu->call_site_htab;
c906108c 10436 }
9291a0cd
TT
10437
10438 if (dwarf2_per_objfile->using_index)
43f3e411 10439 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
10440 else
10441 {
10442 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 10443 pst->compunit_symtab = cust;
9291a0cd
TT
10444 pst->readin = 1;
10445 }
c906108c 10446
95554aad 10447 /* Push it for inclusion processing later. */
c5d0225d 10448 dwarf2_per_objfile->just_read_cus.push_back (per_cu);
804d2729
TT
10449
10450 /* Not needed any more. */
c24bdb02 10451 cu->reset_builder ();
f4dc4d17 10452}
45cfd468 10453
f4dc4d17
DE
10454/* Generate full symbol information for type unit PER_CU, whose DIEs have
10455 already been loaded into memory. */
10456
10457static void
10458process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10459 enum language pretend_language)
10460{
10461 struct dwarf2_cu *cu = per_cu->cu;
ed2dc618
SM
10462 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10463 struct objfile *objfile = dwarf2_per_objfile->objfile;
43f3e411 10464 struct compunit_symtab *cust;
0186c6a7
DE
10465 struct signatured_type *sig_type;
10466
10467 gdb_assert (per_cu->is_debug_types);
10468 sig_type = (struct signatured_type *) per_cu;
f4dc4d17 10469
c89b44cd
TT
10470 /* Clear the list here in case something was left over. */
10471 cu->method_list.clear ();
f4dc4d17 10472
f4dc4d17
DE
10473 cu->language = pretend_language;
10474 cu->language_defn = language_def (cu->language);
10475
10476 /* The symbol tables are set up in read_type_unit_scope. */
10477 process_die (cu->dies, cu);
10478
10479 /* For now fudge the Go package. */
10480 if (cu->language == language_go)
10481 fixup_go_packaging (cu);
10482
5f48f8f3 10483 /* Now that we have processed all the DIEs in the CU, all the types
f4dc4d17
DE
10484 should be complete, and it should now be safe to compute all of the
10485 physnames. */
10486 compute_delayed_physnames (cu);
f4dc4d17 10487
c9317f21
TT
10488 if (cu->language == language_rust)
10489 rust_union_quirks (cu);
10490
f4dc4d17
DE
10491 /* TUs share symbol tables.
10492 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
10493 of it with end_expandable_symtab. Otherwise, complete the addition of
10494 this TU's symbols to the existing symtab. */
43f3e411 10495 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 10496 {
c24bdb02
KS
10497 buildsym_compunit *builder = cu->get_builder ();
10498 cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
43f3e411 10499 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 10500
43f3e411 10501 if (cust != NULL)
f4dc4d17
DE
10502 {
10503 /* Set symtab language to language from DW_AT_language. If the
10504 compilation is from a C file generated by language preprocessors,
10505 do not set the language if it was already deduced by
10506 start_subfile. */
43f3e411
DE
10507 if (!(cu->language == language_c
10508 && COMPUNIT_FILETABS (cust)->language != language_c))
10509 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
10510 }
10511 }
10512 else
10513 {
c24bdb02 10514 cu->get_builder ()->augment_type_symtab ();
43f3e411 10515 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
10516 }
10517
10518 if (dwarf2_per_objfile->using_index)
43f3e411 10519 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
10520 else
10521 {
10522 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 10523 pst->compunit_symtab = cust;
f4dc4d17 10524 pst->readin = 1;
45cfd468 10525 }
804d2729
TT
10526
10527 /* Not needed any more. */
c24bdb02 10528 cu->reset_builder ();
c906108c
SS
10529}
10530
95554aad
TT
10531/* Process an imported unit DIE. */
10532
10533static void
10534process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10535{
10536 struct attribute *attr;
10537
f4dc4d17
DE
10538 /* For now we don't handle imported units in type units. */
10539 if (cu->per_cu->is_debug_types)
10540 {
10541 error (_("Dwarf Error: DW_TAG_imported_unit is not"
10542 " supported in type units [in module %s]"),
518817b3 10543 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
f4dc4d17
DE
10544 }
10545
95554aad
TT
10546 attr = dwarf2_attr (die, DW_AT_import, cu);
10547 if (attr != NULL)
10548 {
9c541725
PA
10549 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10550 bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10551 dwarf2_per_cu_data *per_cu
e3b94546 10552 = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
518817b3 10553 cu->per_cu->dwarf2_per_objfile);
95554aad 10554
69d751e3 10555 /* If necessary, add it to the queue and load its DIEs. */
95554aad 10556 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
58f0c718 10557 load_full_comp_unit (per_cu, false, cu->language);
95554aad 10558
ae640021 10559 cu->per_cu->imported_symtabs_push (per_cu);
95554aad
TT
10560 }
10561}
10562
4c8aa72d
PA
10563/* RAII object that represents a process_die scope: i.e.,
10564 starts/finishes processing a DIE. */
10565class process_die_scope
adde2bff 10566{
4c8aa72d
PA
10567public:
10568 process_die_scope (die_info *die, dwarf2_cu *cu)
10569 : m_die (die), m_cu (cu)
10570 {
10571 /* We should only be processing DIEs not already in process. */
10572 gdb_assert (!m_die->in_process);
10573 m_die->in_process = true;
10574 }
8c3cb9fa 10575
4c8aa72d
PA
10576 ~process_die_scope ()
10577 {
10578 m_die->in_process = false;
10579
10580 /* If we're done processing the DIE for the CU that owns the line
10581 header, we don't need the line header anymore. */
10582 if (m_cu->line_header_die_owner == m_die)
10583 {
10584 delete m_cu->line_header;
10585 m_cu->line_header = NULL;
10586 m_cu->line_header_die_owner = NULL;
10587 }
10588 }
10589
10590private:
10591 die_info *m_die;
10592 dwarf2_cu *m_cu;
10593};
adde2bff 10594
c906108c
SS
10595/* Process a die and its children. */
10596
10597static void
e7c27a73 10598process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 10599{
4c8aa72d 10600 process_die_scope scope (die, cu);
adde2bff 10601
c906108c
SS
10602 switch (die->tag)
10603 {
10604 case DW_TAG_padding:
10605 break;
10606 case DW_TAG_compile_unit:
95554aad 10607 case DW_TAG_partial_unit:
e7c27a73 10608 read_file_scope (die, cu);
c906108c 10609 break;
348e048f
DE
10610 case DW_TAG_type_unit:
10611 read_type_unit_scope (die, cu);
10612 break;
c906108c 10613 case DW_TAG_subprogram:
0a4b0913
AB
10614 /* Nested subprograms in Fortran get a prefix. */
10615 if (cu->language == language_fortran
10616 && die->parent != NULL
10617 && die->parent->tag == DW_TAG_subprogram)
10618 cu->processing_has_namespace_info = true;
10619 /* Fall through. */
c906108c 10620 case DW_TAG_inlined_subroutine:
edb3359d 10621 read_func_scope (die, cu);
c906108c
SS
10622 break;
10623 case DW_TAG_lexical_block:
14898363
L
10624 case DW_TAG_try_block:
10625 case DW_TAG_catch_block:
e7c27a73 10626 read_lexical_block_scope (die, cu);
c906108c 10627 break;
216f72a1 10628 case DW_TAG_call_site:
96408a79
SA
10629 case DW_TAG_GNU_call_site:
10630 read_call_site_scope (die, cu);
10631 break;
c906108c 10632 case DW_TAG_class_type:
680b30c7 10633 case DW_TAG_interface_type:
c906108c
SS
10634 case DW_TAG_structure_type:
10635 case DW_TAG_union_type:
134d01f1 10636 process_structure_scope (die, cu);
c906108c
SS
10637 break;
10638 case DW_TAG_enumeration_type:
134d01f1 10639 process_enumeration_scope (die, cu);
c906108c 10640 break;
134d01f1 10641
f792889a
DJ
10642 /* These dies have a type, but processing them does not create
10643 a symbol or recurse to process the children. Therefore we can
10644 read them on-demand through read_type_die. */
c906108c 10645 case DW_TAG_subroutine_type:
72019c9c 10646 case DW_TAG_set_type:
c906108c 10647 case DW_TAG_array_type:
c906108c 10648 case DW_TAG_pointer_type:
c906108c 10649 case DW_TAG_ptr_to_member_type:
c906108c 10650 case DW_TAG_reference_type:
4297a3f0 10651 case DW_TAG_rvalue_reference_type:
c906108c 10652 case DW_TAG_string_type:
c906108c 10653 break;
134d01f1 10654
c906108c 10655 case DW_TAG_base_type:
a02abb62 10656 case DW_TAG_subrange_type:
cb249c71 10657 case DW_TAG_typedef:
134d01f1
DJ
10658 /* Add a typedef symbol for the type definition, if it has a
10659 DW_AT_name. */
f792889a 10660 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 10661 break;
c906108c 10662 case DW_TAG_common_block:
e7c27a73 10663 read_common_block (die, cu);
c906108c
SS
10664 break;
10665 case DW_TAG_common_inclusion:
10666 break;
d9fa45fe 10667 case DW_TAG_namespace:
9068261f 10668 cu->processing_has_namespace_info = true;
e7c27a73 10669 read_namespace (die, cu);
d9fa45fe 10670 break;
5d7cb8df 10671 case DW_TAG_module:
9068261f 10672 cu->processing_has_namespace_info = true;
5d7cb8df
JK
10673 read_module (die, cu);
10674 break;
d9fa45fe 10675 case DW_TAG_imported_declaration:
9068261f 10676 cu->processing_has_namespace_info = true;
74921315
KS
10677 if (read_namespace_alias (die, cu))
10678 break;
86a73007
TT
10679 /* The declaration is not a global namespace alias. */
10680 /* Fall through. */
d9fa45fe 10681 case DW_TAG_imported_module:
9068261f 10682 cu->processing_has_namespace_info = true;
27aa8d6a
SW
10683 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10684 || cu->language != language_fortran))
b98664d3 10685 complaint (_("Tag '%s' has unexpected children"),
27aa8d6a
SW
10686 dwarf_tag_name (die->tag));
10687 read_import_statement (die, cu);
d9fa45fe 10688 break;
95554aad
TT
10689
10690 case DW_TAG_imported_unit:
10691 process_imported_unit_die (die, cu);
10692 break;
10693
71a3c369
TT
10694 case DW_TAG_variable:
10695 read_variable (die, cu);
10696 break;
10697
c906108c 10698 default:
e7c27a73 10699 new_symbol (die, NULL, cu);
c906108c
SS
10700 break;
10701 }
10702}
ca69b9e6
DE
10703\f
10704/* DWARF name computation. */
c906108c 10705
94af9270
KS
10706/* A helper function for dwarf2_compute_name which determines whether DIE
10707 needs to have the name of the scope prepended to the name listed in the
10708 die. */
10709
10710static int
10711die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10712{
1c809c68
TT
10713 struct attribute *attr;
10714
94af9270
KS
10715 switch (die->tag)
10716 {
10717 case DW_TAG_namespace:
10718 case DW_TAG_typedef:
10719 case DW_TAG_class_type:
10720 case DW_TAG_interface_type:
10721 case DW_TAG_structure_type:
10722 case DW_TAG_union_type:
10723 case DW_TAG_enumeration_type:
10724 case DW_TAG_enumerator:
10725 case DW_TAG_subprogram:
08a76f8a 10726 case DW_TAG_inlined_subroutine:
94af9270 10727 case DW_TAG_member:
74921315 10728 case DW_TAG_imported_declaration:
94af9270
KS
10729 return 1;
10730
10731 case DW_TAG_variable:
c2b0a229 10732 case DW_TAG_constant:
94af9270
KS
10733 /* We only need to prefix "globally" visible variables. These include
10734 any variable marked with DW_AT_external or any variable that
10735 lives in a namespace. [Variables in anonymous namespaces
10736 require prefixing, but they are not DW_AT_external.] */
10737
10738 if (dwarf2_attr (die, DW_AT_specification, cu))
10739 {
10740 struct dwarf2_cu *spec_cu = cu;
9a619af0 10741
94af9270
KS
10742 return die_needs_namespace (die_specification (die, &spec_cu),
10743 spec_cu);
10744 }
10745
1c809c68 10746 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
10747 if (attr == NULL && die->parent->tag != DW_TAG_namespace
10748 && die->parent->tag != DW_TAG_module)
1c809c68
TT
10749 return 0;
10750 /* A variable in a lexical block of some kind does not need a
10751 namespace, even though in C++ such variables may be external
10752 and have a mangled name. */
10753 if (die->parent->tag == DW_TAG_lexical_block
10754 || die->parent->tag == DW_TAG_try_block
1054b214
TT
10755 || die->parent->tag == DW_TAG_catch_block
10756 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
10757 return 0;
10758 return 1;
94af9270
KS
10759
10760 default:
10761 return 0;
10762 }
10763}
10764
73b9be8b
KS
10765/* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10766 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
10767 defined for the given DIE. */
10768
10769static struct attribute *
10770dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10771{
10772 struct attribute *attr;
10773
10774 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10775 if (attr == NULL)
10776 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10777
10778 return attr;
10779}
10780
10781/* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10782 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
10783 defined for the given DIE. */
10784
10785static const char *
10786dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10787{
10788 const char *linkage_name;
10789
10790 linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10791 if (linkage_name == NULL)
10792 linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10793
10794 return linkage_name;
10795}
10796
94af9270 10797/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390 10798 compute the physname for the object, which include a method's:
9c37b5ae 10799 - formal parameters (C++),
a766d390 10800 - receiver type (Go),
a766d390
DE
10801
10802 The term "physname" is a bit confusing.
10803 For C++, for example, it is the demangled name.
10804 For Go, for example, it's the mangled name.
94af9270 10805
af6b7be1
JB
10806 For Ada, return the DIE's linkage name rather than the fully qualified
10807 name. PHYSNAME is ignored..
10808
94af9270
KS
10809 The result is allocated on the objfile_obstack and canonicalized. */
10810
10811static const char *
15d034d0
TT
10812dwarf2_compute_name (const char *name,
10813 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
10814 int physname)
10815{
518817b3 10816 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
bb5ed363 10817
94af9270
KS
10818 if (name == NULL)
10819 name = dwarf2_name (die, cu);
10820
2ee7123e
DE
10821 /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10822 but otherwise compute it by typename_concat inside GDB.
10823 FIXME: Actually this is not really true, or at least not always true.
10824 It's all very confusing. SYMBOL_SET_NAMES doesn't try to demangle
5e2db402 10825 Fortran names because there is no mangling standard. So new_symbol
2ee7123e
DE
10826 will set the demangled name to the result of dwarf2_full_name, and it is
10827 the demangled name that GDB uses if it exists. */
f55ee35c
JK
10828 if (cu->language == language_ada
10829 || (cu->language == language_fortran && physname))
10830 {
10831 /* For Ada unit, we prefer the linkage name over the name, as
10832 the former contains the exported name, which the user expects
10833 to be able to reference. Ideally, we want the user to be able
10834 to reference this entity using either natural or linkage name,
10835 but we haven't started looking at this enhancement yet. */
73b9be8b 10836 const char *linkage_name = dw2_linkage_name (die, cu);
f55ee35c 10837
2ee7123e
DE
10838 if (linkage_name != NULL)
10839 return linkage_name;
f55ee35c
JK
10840 }
10841
94af9270
KS
10842 /* These are the only languages we know how to qualify names in. */
10843 if (name != NULL
9c37b5ae 10844 && (cu->language == language_cplus
c44af4eb
TT
10845 || cu->language == language_fortran || cu->language == language_d
10846 || cu->language == language_rust))
94af9270
KS
10847 {
10848 if (die_needs_namespace (die, cu))
10849 {
0d5cff50 10850 const char *prefix;
34a68019 10851 const char *canonical_name = NULL;
94af9270 10852
d7e74731
PA
10853 string_file buf;
10854
94af9270 10855 prefix = determine_prefix (die, cu);
94af9270
KS
10856 if (*prefix != '\0')
10857 {
f55ee35c
JK
10858 char *prefixed_name = typename_concat (NULL, prefix, name,
10859 physname, cu);
9a619af0 10860
d7e74731 10861 buf.puts (prefixed_name);
94af9270
KS
10862 xfree (prefixed_name);
10863 }
10864 else
d7e74731 10865 buf.puts (name);
94af9270 10866
98bfdba5
PA
10867 /* Template parameters may be specified in the DIE's DW_AT_name, or
10868 as children with DW_TAG_template_type_param or
10869 DW_TAG_value_type_param. If the latter, add them to the name
10870 here. If the name already has template parameters, then
10871 skip this step; some versions of GCC emit both, and
10872 it is more efficient to use the pre-computed name.
10873
10874 Something to keep in mind about this process: it is very
10875 unlikely, or in some cases downright impossible, to produce
10876 something that will match the mangled name of a function.
10877 If the definition of the function has the same debug info,
10878 we should be able to match up with it anyway. But fallbacks
10879 using the minimal symbol, for instance to find a method
10880 implemented in a stripped copy of libstdc++, will not work.
10881 If we do not have debug info for the definition, we will have to
10882 match them up some other way.
10883
10884 When we do name matching there is a related problem with function
10885 templates; two instantiated function templates are allowed to
10886 differ only by their return types, which we do not add here. */
10887
10888 if (cu->language == language_cplus && strchr (name, '<') == NULL)
10889 {
10890 struct attribute *attr;
10891 struct die_info *child;
10892 int first = 1;
10893
10894 die->building_fullname = 1;
10895
10896 for (child = die->child; child != NULL; child = child->sibling)
10897 {
10898 struct type *type;
12df843f 10899 LONGEST value;
d521ce57 10900 const gdb_byte *bytes;
98bfdba5
PA
10901 struct dwarf2_locexpr_baton *baton;
10902 struct value *v;
10903
10904 if (child->tag != DW_TAG_template_type_param
10905 && child->tag != DW_TAG_template_value_param)
10906 continue;
10907
10908 if (first)
10909 {
d7e74731 10910 buf.puts ("<");
98bfdba5
PA
10911 first = 0;
10912 }
10913 else
d7e74731 10914 buf.puts (", ");
98bfdba5
PA
10915
10916 attr = dwarf2_attr (child, DW_AT_type, cu);
10917 if (attr == NULL)
10918 {
b98664d3 10919 complaint (_("template parameter missing DW_AT_type"));
d7e74731 10920 buf.puts ("UNKNOWN_TYPE");
98bfdba5
PA
10921 continue;
10922 }
10923 type = die_type (child, cu);
10924
10925 if (child->tag == DW_TAG_template_type_param)
10926 {
c1ec8cea
TT
10927 c_print_type (type, "", &buf, -1, 0, cu->language,
10928 &type_print_raw_options);
98bfdba5
PA
10929 continue;
10930 }
10931
10932 attr = dwarf2_attr (child, DW_AT_const_value, cu);
10933 if (attr == NULL)
10934 {
b98664d3 10935 complaint (_("template parameter missing "
3e43a32a 10936 "DW_AT_const_value"));
d7e74731 10937 buf.puts ("UNKNOWN_VALUE");
98bfdba5
PA
10938 continue;
10939 }
10940
10941 dwarf2_const_value_attr (attr, type, name,
10942 &cu->comp_unit_obstack, cu,
10943 &value, &bytes, &baton);
10944
10945 if (TYPE_NOSIGN (type))
10946 /* GDB prints characters as NUMBER 'CHAR'. If that's
10947 changed, this can use value_print instead. */
d7e74731 10948 c_printchar (value, type, &buf);
98bfdba5
PA
10949 else
10950 {
10951 struct value_print_options opts;
10952
10953 if (baton != NULL)
10954 v = dwarf2_evaluate_loc_desc (type, NULL,
10955 baton->data,
10956 baton->size,
10957 baton->per_cu);
10958 else if (bytes != NULL)
10959 {
10960 v = allocate_value (type);
10961 memcpy (value_contents_writeable (v), bytes,
10962 TYPE_LENGTH (type));
10963 }
10964 else
10965 v = value_from_longest (type, value);
10966
3e43a32a
MS
10967 /* Specify decimal so that we do not depend on
10968 the radix. */
98bfdba5
PA
10969 get_formatted_print_options (&opts, 'd');
10970 opts.raw = 1;
d7e74731 10971 value_print (v, &buf, &opts);
98bfdba5 10972 release_value (v);
98bfdba5
PA
10973 }
10974 }
10975
10976 die->building_fullname = 0;
10977
10978 if (!first)
10979 {
10980 /* Close the argument list, with a space if necessary
10981 (nested templates). */
d7e74731
PA
10982 if (!buf.empty () && buf.string ().back () == '>')
10983 buf.puts (" >");
98bfdba5 10984 else
d7e74731 10985 buf.puts (">");
98bfdba5
PA
10986 }
10987 }
10988
9c37b5ae 10989 /* For C++ methods, append formal parameter type
94af9270 10990 information, if PHYSNAME. */
6e70227d 10991
94af9270 10992 if (physname && die->tag == DW_TAG_subprogram
9c37b5ae 10993 && cu->language == language_cplus)
94af9270
KS
10994 {
10995 struct type *type = read_type_die (die, cu);
10996
d7e74731 10997 c_type_print_args (type, &buf, 1, cu->language,
79d43c61 10998 &type_print_raw_options);
94af9270 10999
9c37b5ae 11000 if (cu->language == language_cplus)
94af9270 11001 {
60430eff
DJ
11002 /* Assume that an artificial first parameter is
11003 "this", but do not crash if it is not. RealView
11004 marks unnamed (and thus unused) parameters as
11005 artificial; there is no way to differentiate
11006 the two cases. */
94af9270
KS
11007 if (TYPE_NFIELDS (type) > 0
11008 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 11009 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
11010 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
11011 0))))
d7e74731 11012 buf.puts (" const");
94af9270
KS
11013 }
11014 }
11015
d7e74731 11016 const std::string &intermediate_name = buf.string ();
94af9270
KS
11017
11018 if (cu->language == language_cplus)
34a68019 11019 canonical_name
322a8516 11020 = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
34a68019
TT
11021 &objfile->per_bfd->storage_obstack);
11022
11023 /* If we only computed INTERMEDIATE_NAME, or if
11024 INTERMEDIATE_NAME is already canonical, then we need to
11025 copy it to the appropriate obstack. */
322a8516 11026 if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
efba19b0
TT
11027 name = obstack_strdup (&objfile->per_bfd->storage_obstack,
11028 intermediate_name);
34a68019
TT
11029 else
11030 name = canonical_name;
94af9270
KS
11031 }
11032 }
11033
11034 return name;
11035}
11036
0114d602
DJ
11037/* Return the fully qualified name of DIE, based on its DW_AT_name.
11038 If scope qualifiers are appropriate they will be added. The result
34a68019 11039 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
11040 not have a name. NAME may either be from a previous call to
11041 dwarf2_name or NULL.
11042
9c37b5ae 11043 The output string will be canonicalized (if C++). */
0114d602
DJ
11044
11045static const char *
15d034d0 11046dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 11047{
94af9270
KS
11048 return dwarf2_compute_name (name, die, cu, 0);
11049}
0114d602 11050
94af9270
KS
11051/* Construct a physname for the given DIE in CU. NAME may either be
11052 from a previous call to dwarf2_name or NULL. The result will be
11053 allocated on the objfile_objstack or NULL if the DIE does not have a
11054 name.
0114d602 11055
9c37b5ae 11056 The output string will be canonicalized (if C++). */
0114d602 11057
94af9270 11058static const char *
15d034d0 11059dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 11060{
518817b3 11061 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
900e11f9 11062 const char *retval, *mangled = NULL, *canon = NULL;
900e11f9
JK
11063 int need_copy = 1;
11064
11065 /* In this case dwarf2_compute_name is just a shortcut not building anything
11066 on its own. */
11067 if (!die_needs_namespace (die, cu))
11068 return dwarf2_compute_name (name, die, cu, 1);
11069
73b9be8b 11070 mangled = dw2_linkage_name (die, cu);
900e11f9 11071
e98c9e7c
TT
11072 /* rustc emits invalid values for DW_AT_linkage_name. Ignore these.
11073 See https://github.com/rust-lang/rust/issues/32925. */
11074 if (cu->language == language_rust && mangled != NULL
11075 && strchr (mangled, '{') != NULL)
11076 mangled = NULL;
11077
900e11f9
JK
11078 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11079 has computed. */
791afaa2 11080 gdb::unique_xmalloc_ptr<char> demangled;
7d45c7c3 11081 if (mangled != NULL)
900e11f9 11082 {
900e11f9 11083
59cc4834
JB
11084 if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11085 {
11086 /* Do nothing (do not demangle the symbol name). */
11087 }
11088 else if (cu->language == language_go)
a766d390 11089 {
5e2db402
TT
11090 /* This is a lie, but we already lie to the caller new_symbol.
11091 new_symbol assumes we return the mangled name.
a766d390 11092 This just undoes that lie until things are cleaned up. */
a766d390
DE
11093 }
11094 else
11095 {
0eb876f5
JB
11096 /* Use DMGL_RET_DROP for C++ template functions to suppress
11097 their return type. It is easier for GDB users to search
11098 for such functions as `name(params)' than `long name(params)'.
11099 In such case the minimal symbol names do not match the full
11100 symbol names but for template functions there is never a need
11101 to look up their definition from their declaration so
11102 the only disadvantage remains the minimal symbol variant
11103 `long name(params)' does not have the proper inferior type. */
791afaa2
TT
11104 demangled.reset (gdb_demangle (mangled,
11105 (DMGL_PARAMS | DMGL_ANSI
11106 | DMGL_RET_DROP)));
a766d390 11107 }
900e11f9 11108 if (demangled)
791afaa2 11109 canon = demangled.get ();
900e11f9
JK
11110 else
11111 {
11112 canon = mangled;
11113 need_copy = 0;
11114 }
11115 }
11116
11117 if (canon == NULL || check_physname)
11118 {
11119 const char *physname = dwarf2_compute_name (name, die, cu, 1);
11120
11121 if (canon != NULL && strcmp (physname, canon) != 0)
11122 {
11123 /* It may not mean a bug in GDB. The compiler could also
11124 compute DW_AT_linkage_name incorrectly. But in such case
11125 GDB would need to be bug-to-bug compatible. */
11126
b98664d3 11127 complaint (_("Computed physname <%s> does not match demangled <%s> "
9d8780f0
SM
11128 "(from linkage <%s>) - DIE at %s [in module %s]"),
11129 physname, canon, mangled, sect_offset_str (die->sect_off),
4262abfb 11130 objfile_name (objfile));
900e11f9
JK
11131
11132 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11133 is available here - over computed PHYSNAME. It is safer
11134 against both buggy GDB and buggy compilers. */
11135
11136 retval = canon;
11137 }
11138 else
11139 {
11140 retval = physname;
11141 need_copy = 0;
11142 }
11143 }
11144 else
11145 retval = canon;
11146
11147 if (need_copy)
021887d8 11148 retval = obstack_strdup (&objfile->per_bfd->storage_obstack, retval);
900e11f9 11149
900e11f9 11150 return retval;
0114d602
DJ
11151}
11152
74921315
KS
11153/* Inspect DIE in CU for a namespace alias. If one exists, record
11154 a new symbol for it.
11155
11156 Returns 1 if a namespace alias was recorded, 0 otherwise. */
11157
11158static int
11159read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11160{
11161 struct attribute *attr;
11162
11163 /* If the die does not have a name, this is not a namespace
11164 alias. */
11165 attr = dwarf2_attr (die, DW_AT_name, cu);
11166 if (attr != NULL)
11167 {
11168 int num;
11169 struct die_info *d = die;
11170 struct dwarf2_cu *imported_cu = cu;
11171
11172 /* If the compiler has nested DW_AT_imported_declaration DIEs,
11173 keep inspecting DIEs until we hit the underlying import. */
11174#define MAX_NESTED_IMPORTED_DECLARATIONS 100
11175 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11176 {
11177 attr = dwarf2_attr (d, DW_AT_import, cu);
11178 if (attr == NULL)
11179 break;
11180
11181 d = follow_die_ref (d, attr, &imported_cu);
11182 if (d->tag != DW_TAG_imported_declaration)
11183 break;
11184 }
11185
11186 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11187 {
b98664d3 11188 complaint (_("DIE at %s has too many recursively imported "
9d8780f0 11189 "declarations"), sect_offset_str (d->sect_off));
74921315
KS
11190 return 0;
11191 }
11192
11193 if (attr != NULL)
11194 {
11195 struct type *type;
9c541725 11196 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
74921315 11197
9c541725 11198 type = get_die_type_at_offset (sect_off, cu->per_cu);
74921315
KS
11199 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11200 {
11201 /* This declaration is a global namespace alias. Add
11202 a symbol for it whose type is the aliased namespace. */
11203 new_symbol (die, type, cu);
11204 return 1;
11205 }
11206 }
11207 }
11208
11209 return 0;
11210}
11211
22cee43f 11212/* Return the using directives repository (global or local?) to use in the
804d2729 11213 current context for CU.
22cee43f
PMR
11214
11215 For Ada, imported declarations can materialize renamings, which *may* be
11216 global. However it is impossible (for now?) in DWARF to distinguish
11217 "external" imported declarations and "static" ones. As all imported
11218 declarations seem to be static in all other languages, make them all CU-wide
11219 global only in Ada. */
11220
11221static struct using_direct **
804d2729 11222using_directives (struct dwarf2_cu *cu)
22cee43f 11223{
c24bdb02
KS
11224 if (cu->language == language_ada
11225 && cu->get_builder ()->outermost_context_p ())
11226 return cu->get_builder ()->get_global_using_directives ();
22cee43f 11227 else
c24bdb02 11228 return cu->get_builder ()->get_local_using_directives ();
22cee43f
PMR
11229}
11230
27aa8d6a
SW
11231/* Read the import statement specified by the given die and record it. */
11232
11233static void
11234read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11235{
518817b3 11236 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
27aa8d6a 11237 struct attribute *import_attr;
32019081 11238 struct die_info *imported_die, *child_die;
de4affc9 11239 struct dwarf2_cu *imported_cu;
27aa8d6a 11240 const char *imported_name;
794684b6 11241 const char *imported_name_prefix;
13387711
SW
11242 const char *canonical_name;
11243 const char *import_alias;
11244 const char *imported_declaration = NULL;
794684b6 11245 const char *import_prefix;
eb1e02fd 11246 std::vector<const char *> excludes;
13387711 11247
27aa8d6a
SW
11248 import_attr = dwarf2_attr (die, DW_AT_import, cu);
11249 if (import_attr == NULL)
11250 {
b98664d3 11251 complaint (_("Tag '%s' has no DW_AT_import"),
27aa8d6a
SW
11252 dwarf_tag_name (die->tag));
11253 return;
11254 }
11255
de4affc9
CC
11256 imported_cu = cu;
11257 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11258 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
11259 if (imported_name == NULL)
11260 {
11261 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11262
11263 The import in the following code:
11264 namespace A
11265 {
11266 typedef int B;
11267 }
11268
11269 int main ()
11270 {
11271 using A::B;
11272 B b;
11273 return b;
11274 }
11275
11276 ...
11277 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11278 <52> DW_AT_decl_file : 1
11279 <53> DW_AT_decl_line : 6
11280 <54> DW_AT_import : <0x75>
11281 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11282 <59> DW_AT_name : B
11283 <5b> DW_AT_decl_file : 1
11284 <5c> DW_AT_decl_line : 2
11285 <5d> DW_AT_type : <0x6e>
11286 ...
11287 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11288 <76> DW_AT_byte_size : 4
11289 <77> DW_AT_encoding : 5 (signed)
11290
11291 imports the wrong die ( 0x75 instead of 0x58 ).
11292 This case will be ignored until the gcc bug is fixed. */
11293 return;
11294 }
11295
82856980
SW
11296 /* Figure out the local name after import. */
11297 import_alias = dwarf2_name (die, cu);
27aa8d6a 11298
794684b6
SW
11299 /* Figure out where the statement is being imported to. */
11300 import_prefix = determine_prefix (die, cu);
11301
11302 /* Figure out what the scope of the imported die is and prepend it
11303 to the name of the imported die. */
de4affc9 11304 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 11305
f55ee35c
JK
11306 if (imported_die->tag != DW_TAG_namespace
11307 && imported_die->tag != DW_TAG_module)
794684b6 11308 {
13387711
SW
11309 imported_declaration = imported_name;
11310 canonical_name = imported_name_prefix;
794684b6 11311 }
13387711 11312 else if (strlen (imported_name_prefix) > 0)
12aaed36 11313 canonical_name = obconcat (&objfile->objfile_obstack,
45280282
IB
11314 imported_name_prefix,
11315 (cu->language == language_d ? "." : "::"),
11316 imported_name, (char *) NULL);
13387711
SW
11317 else
11318 canonical_name = imported_name;
794684b6 11319
32019081
JK
11320 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11321 for (child_die = die->child; child_die && child_die->tag;
11322 child_die = sibling_die (child_die))
11323 {
11324 /* DWARF-4: A Fortran use statement with a “rename list” may be
11325 represented by an imported module entry with an import attribute
11326 referring to the module and owned entries corresponding to those
11327 entities that are renamed as part of being imported. */
11328
11329 if (child_die->tag != DW_TAG_imported_declaration)
11330 {
b98664d3 11331 complaint (_("child DW_TAG_imported_declaration expected "
9d8780f0
SM
11332 "- DIE at %s [in module %s]"),
11333 sect_offset_str (child_die->sect_off),
11334 objfile_name (objfile));
32019081
JK
11335 continue;
11336 }
11337
11338 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11339 if (import_attr == NULL)
11340 {
b98664d3 11341 complaint (_("Tag '%s' has no DW_AT_import"),
32019081
JK
11342 dwarf_tag_name (child_die->tag));
11343 continue;
11344 }
11345
11346 imported_cu = cu;
11347 imported_die = follow_die_ref_or_sig (child_die, import_attr,
11348 &imported_cu);
11349 imported_name = dwarf2_name (imported_die, imported_cu);
11350 if (imported_name == NULL)
11351 {
b98664d3 11352 complaint (_("child DW_TAG_imported_declaration has unknown "
9d8780f0
SM
11353 "imported name - DIE at %s [in module %s]"),
11354 sect_offset_str (child_die->sect_off),
11355 objfile_name (objfile));
32019081
JK
11356 continue;
11357 }
11358
eb1e02fd 11359 excludes.push_back (imported_name);
32019081
JK
11360
11361 process_die (child_die, cu);
11362 }
11363
804d2729 11364 add_using_directive (using_directives (cu),
22cee43f
PMR
11365 import_prefix,
11366 canonical_name,
11367 import_alias,
11368 imported_declaration,
11369 excludes,
11370 0,
11371 &objfile->objfile_obstack);
27aa8d6a
SW
11372}
11373
5230b05a
WT
11374/* ICC<14 does not output the required DW_AT_declaration on incomplete
11375 types, but gives them a size of zero. Starting with version 14,
11376 ICC is compatible with GCC. */
11377
9068261f 11378static bool
5230b05a
WT
11379producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11380{
11381 if (!cu->checked_producer)
11382 check_producer (cu);
11383
11384 return cu->producer_is_icc_lt_14;
11385}
11386
eb77c9df
AB
11387/* ICC generates a DW_AT_type for C void functions. This was observed on
11388 ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11389 which says that void functions should not have a DW_AT_type. */
11390
11391static bool
11392producer_is_icc (struct dwarf2_cu *cu)
11393{
11394 if (!cu->checked_producer)
11395 check_producer (cu);
11396
11397 return cu->producer_is_icc;
11398}
11399
1b80a9fa
JK
11400/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11401 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11402 this, it was first present in GCC release 4.3.0. */
11403
9068261f 11404static bool
1b80a9fa
JK
11405producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11406{
11407 if (!cu->checked_producer)
11408 check_producer (cu);
11409
11410 return cu->producer_is_gcc_lt_4_3;
11411}
11412
d721ba37
PA
11413static file_and_directory
11414find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
9291a0cd 11415{
d721ba37
PA
11416 file_and_directory res;
11417
9291a0cd
TT
11418 /* Find the filename. Do not use dwarf2_name here, since the filename
11419 is not a source language identifier. */
d721ba37
PA
11420 res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11421 res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
9291a0cd 11422
d721ba37
PA
11423 if (res.comp_dir == NULL
11424 && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11425 && IS_ABSOLUTE_PATH (res.name))
9291a0cd 11426 {
d721ba37
PA
11427 res.comp_dir_storage = ldirname (res.name);
11428 if (!res.comp_dir_storage.empty ())
11429 res.comp_dir = res.comp_dir_storage.c_str ();
9291a0cd 11430 }
d721ba37 11431 if (res.comp_dir != NULL)
9291a0cd
TT
11432 {
11433 /* Irix 6.2 native cc prepends <machine>.: to the compilation
11434 directory, get rid of it. */
d721ba37 11435 const char *cp = strchr (res.comp_dir, ':');
9291a0cd 11436
d721ba37
PA
11437 if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11438 res.comp_dir = cp + 1;
9291a0cd
TT
11439 }
11440
d721ba37
PA
11441 if (res.name == NULL)
11442 res.name = "<unknown>";
11443
11444 return res;
9291a0cd
TT
11445}
11446
f4dc4d17
DE
11447/* Handle DW_AT_stmt_list for a compilation unit.
11448 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
11449 COMP_DIR is the compilation directory. LOWPC is passed to
11450 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
11451
11452static void
11453handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 11454 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 11455{
518817b3
SM
11456 struct dwarf2_per_objfile *dwarf2_per_objfile
11457 = cu->per_cu->dwarf2_per_objfile;
527f3840 11458 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 11459 struct attribute *attr;
527f3840
JK
11460 struct line_header line_header_local;
11461 hashval_t line_header_local_hash;
527f3840
JK
11462 void **slot;
11463 int decode_mapping;
2ab95328 11464
f4dc4d17
DE
11465 gdb_assert (! cu->per_cu->is_debug_types);
11466
2ab95328 11467 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
11468 if (attr == NULL)
11469 return;
11470
9c541725 11471 sect_offset line_offset = (sect_offset) DW_UNSND (attr);
527f3840
JK
11472
11473 /* The line header hash table is only created if needed (it exists to
11474 prevent redundant reading of the line table for partial_units).
11475 If we're given a partial_unit, we'll need it. If we're given a
11476 compile_unit, then use the line header hash table if it's already
11477 created, but don't create one just yet. */
11478
11479 if (dwarf2_per_objfile->line_header_hash == NULL
11480 && die->tag == DW_TAG_partial_unit)
2ab95328 11481 {
527f3840
JK
11482 dwarf2_per_objfile->line_header_hash
11483 = htab_create_alloc_ex (127, line_header_hash_voidp,
11484 line_header_eq_voidp,
11485 free_line_header_voidp,
11486 &objfile->objfile_obstack,
11487 hashtab_obstack_allocate,
11488 dummy_obstack_deallocate);
11489 }
2ab95328 11490
9c541725 11491 line_header_local.sect_off = line_offset;
527f3840
JK
11492 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11493 line_header_local_hash = line_header_hash (&line_header_local);
11494 if (dwarf2_per_objfile->line_header_hash != NULL)
11495 {
11496 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11497 &line_header_local,
11498 line_header_local_hash, NO_INSERT);
11499
11500 /* For DW_TAG_compile_unit we need info like symtab::linetable which
11501 is not present in *SLOT (since if there is something in *SLOT then
11502 it will be for a partial_unit). */
11503 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 11504 {
527f3840 11505 gdb_assert (*slot != NULL);
9a3c8263 11506 cu->line_header = (struct line_header *) *slot;
527f3840 11507 return;
dee91e82 11508 }
2ab95328 11509 }
527f3840
JK
11510
11511 /* dwarf_decode_line_header does not yet provide sufficient information.
11512 We always have to call also dwarf_decode_lines for it. */
fff8551c
PA
11513 line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11514 if (lh == NULL)
527f3840 11515 return;
4c8aa72d
PA
11516
11517 cu->line_header = lh.release ();
11518 cu->line_header_die_owner = die;
527f3840
JK
11519
11520 if (dwarf2_per_objfile->line_header_hash == NULL)
11521 slot = NULL;
11522 else
11523 {
11524 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11525 &line_header_local,
11526 line_header_local_hash, INSERT);
11527 gdb_assert (slot != NULL);
11528 }
11529 if (slot != NULL && *slot == NULL)
11530 {
11531 /* This newly decoded line number information unit will be owned
11532 by line_header_hash hash table. */
11533 *slot = cu->line_header;
4c8aa72d 11534 cu->line_header_die_owner = NULL;
527f3840
JK
11535 }
11536 else
11537 {
11538 /* We cannot free any current entry in (*slot) as that struct line_header
11539 may be already used by multiple CUs. Create only temporary decoded
11540 line_header for this CU - it may happen at most once for each line
11541 number information unit. And if we're not using line_header_hash
11542 then this is what we want as well. */
11543 gdb_assert (die->tag != DW_TAG_partial_unit);
527f3840
JK
11544 }
11545 decode_mapping = (die->tag != DW_TAG_partial_unit);
11546 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11547 decode_mapping);
fff8551c 11548
2ab95328
TT
11549}
11550
95554aad 11551/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 11552
c906108c 11553static void
e7c27a73 11554read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11555{
518817b3
SM
11556 struct dwarf2_per_objfile *dwarf2_per_objfile
11557 = cu->per_cu->dwarf2_per_objfile;
dee91e82 11558 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 11559 struct gdbarch *gdbarch = get_objfile_arch (objfile);
2acceee2 11560 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
11561 CORE_ADDR highpc = ((CORE_ADDR) 0);
11562 struct attribute *attr;
c906108c 11563 struct die_info *child_die;
e142c38c 11564 CORE_ADDR baseaddr;
6e70227d 11565
380618d6 11566 prepare_one_comp_unit (cu, die, cu->language);
e142c38c 11567 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 11568
fae299cd 11569 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
11570
11571 /* If we didn't find a lowpc, set it to highpc to avoid complaints
11572 from finish_block. */
2acceee2 11573 if (lowpc == ((CORE_ADDR) -1))
c906108c 11574 lowpc = highpc;
3e29f34a 11575 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 11576
d721ba37 11577 file_and_directory fnd = find_file_and_directory (die, cu);
e1024ff1 11578
f4b8a18d
KW
11579 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11580 standardised yet. As a workaround for the language detection we fall
11581 back to the DW_AT_producer string. */
11582 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11583 cu->language = language_opencl;
11584
3019eac3
DE
11585 /* Similar hack for Go. */
11586 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11587 set_cu_language (DW_LANG_Go, cu);
11588
c24bdb02 11589 cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
3019eac3
DE
11590
11591 /* Decode line number information if present. We do this before
11592 processing child DIEs, so that the line header table is available
11593 for DW_AT_decl_file. */
d721ba37 11594 handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
3019eac3
DE
11595
11596 /* Process all dies in compilation unit. */
11597 if (die->child != NULL)
11598 {
11599 child_die = die->child;
11600 while (child_die && child_die->tag)
11601 {
11602 process_die (child_die, cu);
11603 child_die = sibling_die (child_die);
11604 }
11605 }
11606
11607 /* Decode macro information, if present. Dwarf 2 macro information
11608 refers to information in the line number info statement program
11609 header, so we can only read it if we've read the header
11610 successfully. */
0af92d60
JK
11611 attr = dwarf2_attr (die, DW_AT_macros, cu);
11612 if (attr == NULL)
11613 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
3019eac3
DE
11614 if (attr && cu->line_header)
11615 {
11616 if (dwarf2_attr (die, DW_AT_macro_info, cu))
b98664d3 11617 complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
3019eac3 11618
43f3e411 11619 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
11620 }
11621 else
11622 {
11623 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11624 if (attr && cu->line_header)
11625 {
11626 unsigned int macro_offset = DW_UNSND (attr);
11627
43f3e411 11628 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
11629 }
11630 }
3019eac3
DE
11631}
11632
c24bdb02
KS
11633void
11634dwarf2_cu::setup_type_unit_groups (struct die_info *die)
3019eac3 11635{
f4dc4d17
DE
11636 struct type_unit_group *tu_group;
11637 int first_time;
3019eac3 11638 struct attribute *attr;
9c541725 11639 unsigned int i;
0186c6a7 11640 struct signatured_type *sig_type;
3019eac3 11641
f4dc4d17 11642 gdb_assert (per_cu->is_debug_types);
0186c6a7 11643 sig_type = (struct signatured_type *) per_cu;
3019eac3 11644
c24bdb02 11645 attr = dwarf2_attr (die, DW_AT_stmt_list, this);
3019eac3 11646
f4dc4d17 11647 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 11648 per_cu->type_unit_group may not have been set up yet. */
0186c6a7 11649 if (sig_type->type_unit_group == NULL)
c24bdb02 11650 sig_type->type_unit_group = get_type_unit_group (this, attr);
0186c6a7 11651 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
11652
11653 /* If we've already processed this stmt_list there's no real need to
11654 do it again, we could fake it and just recreate the part we need
11655 (file name,index -> symtab mapping). If data shows this optimization
11656 is useful we can do it then. */
43f3e411 11657 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
11658
11659 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11660 debug info. */
fff8551c 11661 line_header_up lh;
f4dc4d17 11662 if (attr != NULL)
3019eac3 11663 {
9c541725 11664 sect_offset line_offset = (sect_offset) DW_UNSND (attr);
c24bdb02 11665 lh = dwarf_decode_line_header (line_offset, this);
f4dc4d17
DE
11666 }
11667 if (lh == NULL)
11668 {
11669 if (first_time)
c24bdb02 11670 start_symtab ("", NULL, 0);
f4dc4d17
DE
11671 else
11672 {
11673 gdb_assert (tu_group->symtabs == NULL);
c24bdb02 11674 gdb_assert (m_builder == nullptr);
804d2729 11675 struct compunit_symtab *cust = tu_group->compunit_symtab;
c24bdb02
KS
11676 m_builder.reset (new struct buildsym_compunit
11677 (COMPUNIT_OBJFILE (cust), "",
11678 COMPUNIT_DIRNAME (cust),
11679 compunit_language (cust),
11680 0, cust));
f4dc4d17 11681 }
f4dc4d17 11682 return;
3019eac3
DE
11683 }
11684
c24bdb02
KS
11685 line_header = lh.release ();
11686 line_header_die_owner = die;
3019eac3 11687
f4dc4d17
DE
11688 if (first_time)
11689 {
c24bdb02 11690 struct compunit_symtab *cust = start_symtab ("", NULL, 0);
3019eac3 11691
1fd60fc0
DE
11692 /* Note: We don't assign tu_group->compunit_symtab yet because we're
11693 still initializing it, and our caller (a few levels up)
11694 process_full_type_unit still needs to know if this is the first
11695 time. */
11696
c24bdb02 11697 tu_group->num_symtabs = line_header->file_names.size ();
4c8aa72d 11698 tu_group->symtabs = XNEWVEC (struct symtab *,
c24bdb02 11699 line_header->file_names.size ());
3019eac3 11700
c24bdb02 11701 for (i = 0; i < line_header->file_names.size (); ++i)
f4dc4d17 11702 {
c24bdb02 11703 file_entry &fe = line_header->file_names[i];
3019eac3 11704
c24bdb02
KS
11705 dwarf2_start_subfile (this, fe.name,
11706 fe.include_dir (line_header));
11707 buildsym_compunit *b = get_builder ();
11708 if (b->get_current_subfile ()->symtab == NULL)
f4dc4d17 11709 {
4c8aa72d
PA
11710 /* NOTE: start_subfile will recognize when it's been
11711 passed a file it has already seen. So we can't
11712 assume there's a simple mapping from
11713 cu->line_header->file_names to subfiles, plus
11714 cu->line_header->file_names may contain dups. */
c24bdb02
KS
11715 b->get_current_subfile ()->symtab
11716 = allocate_symtab (cust, b->get_current_subfile ()->name);
f4dc4d17
DE
11717 }
11718
c24bdb02 11719 fe.symtab = b->get_current_subfile ()->symtab;
8c43009f 11720 tu_group->symtabs[i] = fe.symtab;
f4dc4d17
DE
11721 }
11722 }
11723 else
3019eac3 11724 {
c24bdb02 11725 gdb_assert (m_builder == nullptr);
804d2729 11726 struct compunit_symtab *cust = tu_group->compunit_symtab;
c24bdb02
KS
11727 m_builder.reset (new struct buildsym_compunit
11728 (COMPUNIT_OBJFILE (cust), "",
11729 COMPUNIT_DIRNAME (cust),
11730 compunit_language (cust),
11731 0, cust));
f4dc4d17 11732
c24bdb02 11733 for (i = 0; i < line_header->file_names.size (); ++i)
f4dc4d17 11734 {
c24bdb02 11735 file_entry &fe = line_header->file_names[i];
f4dc4d17 11736
4c8aa72d 11737 fe.symtab = tu_group->symtabs[i];
f4dc4d17 11738 }
3019eac3
DE
11739 }
11740
f4dc4d17
DE
11741 /* The main symtab is allocated last. Type units don't have DW_AT_name
11742 so they don't have a "real" (so to speak) symtab anyway.
11743 There is later code that will assign the main symtab to all symbols
11744 that don't have one. We need to handle the case of a symbol with a
11745 missing symtab (DW_AT_decl_file) anyway. */
11746}
3019eac3 11747
f4dc4d17
DE
11748/* Process DW_TAG_type_unit.
11749 For TUs we want to skip the first top level sibling if it's not the
11750 actual type being defined by this TU. In this case the first top
11751 level sibling is there to provide context only. */
3019eac3 11752
f4dc4d17
DE
11753static void
11754read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11755{
11756 struct die_info *child_die;
3019eac3 11757
f4dc4d17
DE
11758 prepare_one_comp_unit (cu, die, language_minimal);
11759
11760 /* Initialize (or reinitialize) the machinery for building symtabs.
11761 We do this before processing child DIEs, so that the line header table
11762 is available for DW_AT_decl_file. */
c24bdb02 11763 cu->setup_type_unit_groups (die);
f4dc4d17
DE
11764
11765 if (die->child != NULL)
11766 {
11767 child_die = die->child;
11768 while (child_die && child_die->tag)
11769 {
11770 process_die (child_die, cu);
11771 child_die = sibling_die (child_die);
11772 }
11773 }
3019eac3
DE
11774}
11775\f
80626a55
DE
11776/* DWO/DWP files.
11777
11778 http://gcc.gnu.org/wiki/DebugFission
11779 http://gcc.gnu.org/wiki/DebugFissionDWP
11780
11781 To simplify handling of both DWO files ("object" files with the DWARF info)
11782 and DWP files (a file with the DWOs packaged up into one file), we treat
11783 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
11784
11785static hashval_t
11786hash_dwo_file (const void *item)
11787{
9a3c8263 11788 const struct dwo_file *dwo_file = (const struct dwo_file *) item;
a2ce51a0 11789 hashval_t hash;
3019eac3 11790
a2ce51a0
DE
11791 hash = htab_hash_string (dwo_file->dwo_name);
11792 if (dwo_file->comp_dir != NULL)
11793 hash += htab_hash_string (dwo_file->comp_dir);
11794 return hash;
3019eac3
DE
11795}
11796
11797static int
11798eq_dwo_file (const void *item_lhs, const void *item_rhs)
11799{
9a3c8263
SM
11800 const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11801 const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
3019eac3 11802
a2ce51a0
DE
11803 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11804 return 0;
11805 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11806 return lhs->comp_dir == rhs->comp_dir;
11807 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
11808}
11809
11810/* Allocate a hash table for DWO files. */
11811
51ac9db5 11812static htab_up
ed2dc618 11813allocate_dwo_file_hash_table (struct objfile *objfile)
3019eac3 11814{
51ac9db5
SM
11815 auto delete_dwo_file = [] (void *item)
11816 {
11817 struct dwo_file *dwo_file = (struct dwo_file *) item;
11818
11819 delete dwo_file;
11820 };
11821
11822 return htab_up (htab_create_alloc_ex (41,
11823 hash_dwo_file,
11824 eq_dwo_file,
11825 delete_dwo_file,
11826 &objfile->objfile_obstack,
11827 hashtab_obstack_allocate,
11828 dummy_obstack_deallocate));
3019eac3
DE
11829}
11830
80626a55
DE
11831/* Lookup DWO file DWO_NAME. */
11832
11833static void **
ed2dc618
SM
11834lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11835 const char *dwo_name,
11836 const char *comp_dir)
80626a55
DE
11837{
11838 struct dwo_file find_entry;
11839 void **slot;
11840
11841 if (dwarf2_per_objfile->dwo_files == NULL)
ed2dc618
SM
11842 dwarf2_per_objfile->dwo_files
11843 = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
80626a55 11844
0ac5b59e
DE
11845 find_entry.dwo_name = dwo_name;
11846 find_entry.comp_dir = comp_dir;
51ac9db5
SM
11847 slot = htab_find_slot (dwarf2_per_objfile->dwo_files.get (), &find_entry,
11848 INSERT);
80626a55
DE
11849
11850 return slot;
11851}
11852
3019eac3
DE
11853static hashval_t
11854hash_dwo_unit (const void *item)
11855{
9a3c8263 11856 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
3019eac3
DE
11857
11858 /* This drops the top 32 bits of the id, but is ok for a hash. */
11859 return dwo_unit->signature;
11860}
11861
11862static int
11863eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11864{
9a3c8263
SM
11865 const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11866 const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
3019eac3
DE
11867
11868 /* The signature is assumed to be unique within the DWO file.
11869 So while object file CU dwo_id's always have the value zero,
11870 that's OK, assuming each object file DWO file has only one CU,
11871 and that's the rule for now. */
11872 return lhs->signature == rhs->signature;
11873}
11874
11875/* Allocate a hash table for DWO CUs,TUs.
11876 There is one of these tables for each of CUs,TUs for each DWO file. */
11877
11878static htab_t
11879allocate_dwo_unit_table (struct objfile *objfile)
11880{
11881 /* Start out with a pretty small number.
11882 Generally DWO files contain only one CU and maybe some TUs. */
11883 return htab_create_alloc_ex (3,
11884 hash_dwo_unit,
11885 eq_dwo_unit,
11886 NULL,
11887 &objfile->objfile_obstack,
11888 hashtab_obstack_allocate,
11889 dummy_obstack_deallocate);
11890}
11891
80626a55 11892/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 11893
19c3d4c9 11894struct create_dwo_cu_data
3019eac3
DE
11895{
11896 struct dwo_file *dwo_file;
19c3d4c9 11897 struct dwo_unit dwo_unit;
3019eac3
DE
11898};
11899
19c3d4c9 11900/* die_reader_func for create_dwo_cu. */
3019eac3
DE
11901
11902static void
19c3d4c9
DE
11903create_dwo_cu_reader (const struct die_reader_specs *reader,
11904 const gdb_byte *info_ptr,
11905 struct die_info *comp_unit_die,
11906 int has_children,
11907 void *datap)
3019eac3
DE
11908{
11909 struct dwarf2_cu *cu = reader->cu;
9c541725 11910 sect_offset sect_off = cu->per_cu->sect_off;
8a0459fd 11911 struct dwarf2_section_info *section = cu->per_cu->section;
9a3c8263 11912 struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
3019eac3 11913 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 11914 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 11915
a084a2a6
AT
11916 gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
11917 if (!signature.has_value ())
3019eac3 11918 {
b98664d3 11919 complaint (_("Dwarf Error: debug entry at offset %s is missing"
19c3d4c9 11920 " its dwo_id [in module %s]"),
9d8780f0 11921 sect_offset_str (sect_off), dwo_file->dwo_name);
3019eac3
DE
11922 return;
11923 }
11924
3019eac3 11925 dwo_unit->dwo_file = dwo_file;
a084a2a6 11926 dwo_unit->signature = *signature;
8a0459fd 11927 dwo_unit->section = section;
9c541725 11928 dwo_unit->sect_off = sect_off;
3019eac3
DE
11929 dwo_unit->length = cu->per_cu->length;
11930
b4f54984 11931 if (dwarf_read_debug)
9d8780f0
SM
11932 fprintf_unfiltered (gdb_stdlog, " offset %s, dwo_id %s\n",
11933 sect_offset_str (sect_off),
9c541725 11934 hex_string (dwo_unit->signature));
3019eac3
DE
11935}
11936
33c5cd75 11937/* Create the dwo_units for the CUs in a DWO_FILE.
19c3d4c9 11938 Note: This function processes DWO files only, not DWP files. */
3019eac3 11939
33c5cd75 11940static void
ed2dc618
SM
11941create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11942 struct dwo_file &dwo_file, dwarf2_section_info &section,
33c5cd75 11943 htab_t &cus_htab)
3019eac3
DE
11944{
11945 struct objfile *objfile = dwarf2_per_objfile->objfile;
d521ce57 11946 const gdb_byte *info_ptr, *end_ptr;
3019eac3 11947
33c5cd75
DB
11948 dwarf2_read_section (objfile, &section);
11949 info_ptr = section.buffer;
3019eac3
DE
11950
11951 if (info_ptr == NULL)
33c5cd75 11952 return;
3019eac3 11953
b4f54984 11954 if (dwarf_read_debug)
19c3d4c9
DE
11955 {
11956 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
33c5cd75
DB
11957 get_section_name (&section),
11958 get_section_file_name (&section));
19c3d4c9 11959 }
3019eac3 11960
33c5cd75 11961 end_ptr = info_ptr + section.size;
3019eac3
DE
11962 while (info_ptr < end_ptr)
11963 {
11964 struct dwarf2_per_cu_data per_cu;
33c5cd75
DB
11965 struct create_dwo_cu_data create_dwo_cu_data;
11966 struct dwo_unit *dwo_unit;
11967 void **slot;
11968 sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
3019eac3 11969
19c3d4c9
DE
11970 memset (&create_dwo_cu_data.dwo_unit, 0,
11971 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3 11972 memset (&per_cu, 0, sizeof (per_cu));
e3b94546 11973 per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3019eac3 11974 per_cu.is_debug_types = 0;
33c5cd75
DB
11975 per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11976 per_cu.section = &section;
c5ed0576 11977 create_dwo_cu_data.dwo_file = &dwo_file;
33c5cd75
DB
11978
11979 init_cutu_and_read_dies_no_follow (
11980 &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11981 info_ptr += per_cu.length;
11982
11983 // If the unit could not be parsed, skip it.
11984 if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11985 continue;
3019eac3 11986
33c5cd75
DB
11987 if (cus_htab == NULL)
11988 cus_htab = allocate_dwo_unit_table (objfile);
19c3d4c9 11989
33c5cd75
DB
11990 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11991 *dwo_unit = create_dwo_cu_data.dwo_unit;
11992 slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11993 gdb_assert (slot != NULL);
11994 if (*slot != NULL)
19c3d4c9 11995 {
33c5cd75
DB
11996 const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11997 sect_offset dup_sect_off = dup_cu->sect_off;
19c3d4c9 11998
b98664d3 11999 complaint (_("debug cu entry at offset %s is duplicate to"
9d8780f0
SM
12000 " the entry at offset %s, signature %s"),
12001 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
33c5cd75 12002 hex_string (dwo_unit->signature));
19c3d4c9 12003 }
33c5cd75 12004 *slot = (void *)dwo_unit;
3019eac3 12005 }
3019eac3
DE
12006}
12007
80626a55
DE
12008/* DWP file .debug_{cu,tu}_index section format:
12009 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
12010
d2415c6c
DE
12011 DWP Version 1:
12012
80626a55
DE
12013 Both index sections have the same format, and serve to map a 64-bit
12014 signature to a set of section numbers. Each section begins with a header,
12015 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
12016 indexes, and a pool of 32-bit section numbers. The index sections will be
12017 aligned at 8-byte boundaries in the file.
12018
d2415c6c
DE
12019 The index section header consists of:
12020
12021 V, 32 bit version number
12022 -, 32 bits unused
12023 N, 32 bit number of compilation units or type units in the index
12024 M, 32 bit number of slots in the hash table
80626a55 12025
d2415c6c 12026 Numbers are recorded using the byte order of the application binary.
80626a55 12027
d2415c6c
DE
12028 The hash table begins at offset 16 in the section, and consists of an array
12029 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
12030 order of the application binary). Unused slots in the hash table are 0.
12031 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 12032
d2415c6c
DE
12033 The parallel table begins immediately after the hash table
12034 (at offset 16 + 8 * M from the beginning of the section), and consists of an
12035 array of 32-bit indexes (using the byte order of the application binary),
12036 corresponding 1-1 with slots in the hash table. Each entry in the parallel
12037 table contains a 32-bit index into the pool of section numbers. For unused
12038 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 12039
73869dc2
DE
12040 The pool of section numbers begins immediately following the hash table
12041 (at offset 16 + 12 * M from the beginning of the section). The pool of
12042 section numbers consists of an array of 32-bit words (using the byte order
12043 of the application binary). Each item in the array is indexed starting
12044 from 0. The hash table entry provides the index of the first section
12045 number in the set. Additional section numbers in the set follow, and the
12046 set is terminated by a 0 entry (section number 0 is not used in ELF).
12047
12048 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12049 section must be the first entry in the set, and the .debug_abbrev.dwo must
12050 be the second entry. Other members of the set may follow in any order.
12051
12052 ---
12053
12054 DWP Version 2:
12055
12056 DWP Version 2 combines all the .debug_info, etc. sections into one,
12057 and the entries in the index tables are now offsets into these sections.
12058 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
12059 section.
12060
12061 Index Section Contents:
12062 Header
12063 Hash Table of Signatures dwp_hash_table.hash_table
12064 Parallel Table of Indices dwp_hash_table.unit_table
12065 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
12066 Table of Section Sizes dwp_hash_table.v2.sizes
12067
12068 The index section header consists of:
12069
12070 V, 32 bit version number
12071 L, 32 bit number of columns in the table of section offsets
12072 N, 32 bit number of compilation units or type units in the index
12073 M, 32 bit number of slots in the hash table
12074
12075 Numbers are recorded using the byte order of the application binary.
12076
12077 The hash table has the same format as version 1.
12078 The parallel table of indices has the same format as version 1,
12079 except that the entries are origin-1 indices into the table of sections
12080 offsets and the table of section sizes.
12081
12082 The table of offsets begins immediately following the parallel table
12083 (at offset 16 + 12 * M from the beginning of the section). The table is
12084 a two-dimensional array of 32-bit words (using the byte order of the
12085 application binary), with L columns and N+1 rows, in row-major order.
12086 Each row in the array is indexed starting from 0. The first row provides
12087 a key to the remaining rows: each column in this row provides an identifier
12088 for a debug section, and the offsets in the same column of subsequent rows
12089 refer to that section. The section identifiers are:
12090
12091 DW_SECT_INFO 1 .debug_info.dwo
12092 DW_SECT_TYPES 2 .debug_types.dwo
12093 DW_SECT_ABBREV 3 .debug_abbrev.dwo
12094 DW_SECT_LINE 4 .debug_line.dwo
12095 DW_SECT_LOC 5 .debug_loc.dwo
12096 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
12097 DW_SECT_MACINFO 7 .debug_macinfo.dwo
12098 DW_SECT_MACRO 8 .debug_macro.dwo
12099
12100 The offsets provided by the CU and TU index sections are the base offsets
12101 for the contributions made by each CU or TU to the corresponding section
12102 in the package file. Each CU and TU header contains an abbrev_offset
12103 field, used to find the abbreviations table for that CU or TU within the
12104 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12105 be interpreted as relative to the base offset given in the index section.
12106 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12107 should be interpreted as relative to the base offset for .debug_line.dwo,
12108 and offsets into other debug sections obtained from DWARF attributes should
12109 also be interpreted as relative to the corresponding base offset.
12110
12111 The table of sizes begins immediately following the table of offsets.
12112 Like the table of offsets, it is a two-dimensional array of 32-bit words,
12113 with L columns and N rows, in row-major order. Each row in the array is
12114 indexed starting from 1 (row 0 is shared by the two tables).
12115
12116 ---
12117
12118 Hash table lookup is handled the same in version 1 and 2:
12119
12120 We assume that N and M will not exceed 2^32 - 1.
12121 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12122
d2415c6c
DE
12123 Given a 64-bit compilation unit signature or a type signature S, an entry
12124 in the hash table is located as follows:
80626a55 12125
d2415c6c
DE
12126 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12127 the low-order k bits all set to 1.
80626a55 12128
d2415c6c 12129 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 12130
d2415c6c
DE
12131 3) If the hash table entry at index H matches the signature, use that
12132 entry. If the hash table entry at index H is unused (all zeroes),
12133 terminate the search: the signature is not present in the table.
80626a55 12134
d2415c6c 12135 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 12136
d2415c6c 12137 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 12138 to stop at an unused slot or find the match. */
80626a55
DE
12139
12140/* Create a hash table to map DWO IDs to their CU/TU entry in
12141 .debug_{info,types}.dwo in DWP_FILE.
12142 Returns NULL if there isn't one.
12143 Note: This function processes DWP files only, not DWO files. */
12144
12145static struct dwp_hash_table *
ed2dc618
SM
12146create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12147 struct dwp_file *dwp_file, int is_debug_types)
80626a55
DE
12148{
12149 struct objfile *objfile = dwarf2_per_objfile->objfile;
400174b1 12150 bfd *dbfd = dwp_file->dbfd.get ();
948f8e3d 12151 const gdb_byte *index_ptr, *index_end;
80626a55 12152 struct dwarf2_section_info *index;
73869dc2 12153 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
12154 struct dwp_hash_table *htab;
12155
12156 if (is_debug_types)
12157 index = &dwp_file->sections.tu_index;
12158 else
12159 index = &dwp_file->sections.cu_index;
12160
12161 if (dwarf2_section_empty_p (index))
12162 return NULL;
12163 dwarf2_read_section (objfile, index);
12164
12165 index_ptr = index->buffer;
12166 index_end = index_ptr + index->size;
12167
12168 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
12169 index_ptr += 4;
12170 if (version == 2)
12171 nr_columns = read_4_bytes (dbfd, index_ptr);
12172 else
12173 nr_columns = 0;
12174 index_ptr += 4;
80626a55
DE
12175 nr_units = read_4_bytes (dbfd, index_ptr);
12176 index_ptr += 4;
12177 nr_slots = read_4_bytes (dbfd, index_ptr);
12178 index_ptr += 4;
12179
73869dc2 12180 if (version != 1 && version != 2)
80626a55 12181 {
21aa081e 12182 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 12183 " [in module %s]"),
21aa081e 12184 pulongest (version), dwp_file->name);
80626a55
DE
12185 }
12186 if (nr_slots != (nr_slots & -nr_slots))
12187 {
21aa081e 12188 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 12189 " is not power of 2 [in module %s]"),
21aa081e 12190 pulongest (nr_slots), dwp_file->name);
80626a55
DE
12191 }
12192
12193 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
12194 htab->version = version;
12195 htab->nr_columns = nr_columns;
80626a55
DE
12196 htab->nr_units = nr_units;
12197 htab->nr_slots = nr_slots;
12198 htab->hash_table = index_ptr;
12199 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
12200
12201 /* Exit early if the table is empty. */
12202 if (nr_slots == 0 || nr_units == 0
12203 || (version == 2 && nr_columns == 0))
12204 {
12205 /* All must be zero. */
12206 if (nr_slots != 0 || nr_units != 0
12207 || (version == 2 && nr_columns != 0))
12208 {
b98664d3 12209 complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
73869dc2
DE
12210 " all zero [in modules %s]"),
12211 dwp_file->name);
12212 }
12213 return htab;
12214 }
12215
12216 if (version == 1)
12217 {
12218 htab->section_pool.v1.indices =
12219 htab->unit_table + sizeof (uint32_t) * nr_slots;
12220 /* It's harder to decide whether the section is too small in v1.
12221 V1 is deprecated anyway so we punt. */
12222 }
12223 else
12224 {
12225 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12226 int *ids = htab->section_pool.v2.section_ids;
04fd5eed 12227 size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
73869dc2
DE
12228 /* Reverse map for error checking. */
12229 int ids_seen[DW_SECT_MAX + 1];
12230 int i;
12231
12232 if (nr_columns < 2)
12233 {
12234 error (_("Dwarf Error: bad DWP hash table, too few columns"
12235 " in section table [in module %s]"),
12236 dwp_file->name);
12237 }
12238 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12239 {
12240 error (_("Dwarf Error: bad DWP hash table, too many columns"
12241 " in section table [in module %s]"),
12242 dwp_file->name);
12243 }
04fd5eed
GB
12244 memset (ids, 255, sizeof_ids);
12245 memset (ids_seen, 255, sizeof (ids_seen));
73869dc2
DE
12246 for (i = 0; i < nr_columns; ++i)
12247 {
12248 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12249
12250 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12251 {
12252 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12253 " in section table [in module %s]"),
12254 id, dwp_file->name);
12255 }
12256 if (ids_seen[id] != -1)
12257 {
12258 error (_("Dwarf Error: bad DWP hash table, duplicate section"
12259 " id %d in section table [in module %s]"),
12260 id, dwp_file->name);
12261 }
12262 ids_seen[id] = i;
12263 ids[i] = id;
12264 }
12265 /* Must have exactly one info or types section. */
12266 if (((ids_seen[DW_SECT_INFO] != -1)
12267 + (ids_seen[DW_SECT_TYPES] != -1))
12268 != 1)
12269 {
12270 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12271 " DWO info/types section [in module %s]"),
12272 dwp_file->name);
12273 }
12274 /* Must have an abbrev section. */
12275 if (ids_seen[DW_SECT_ABBREV] == -1)
12276 {
12277 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12278 " section [in module %s]"),
12279 dwp_file->name);
12280 }
12281 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12282 htab->section_pool.v2.sizes =
12283 htab->section_pool.v2.offsets + (sizeof (uint32_t)
12284 * nr_units * nr_columns);
12285 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12286 * nr_units * nr_columns))
12287 > index_end)
12288 {
12289 error (_("Dwarf Error: DWP index section is corrupt (too small)"
12290 " [in module %s]"),
12291 dwp_file->name);
12292 }
12293 }
80626a55
DE
12294
12295 return htab;
12296}
12297
12298/* Update SECTIONS with the data from SECTP.
12299
12300 This function is like the other "locate" section routines that are
12301 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 12302 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
12303
12304 The result is non-zero for success, or zero if an error was found. */
12305
12306static int
73869dc2
DE
12307locate_v1_virtual_dwo_sections (asection *sectp,
12308 struct virtual_v1_dwo_sections *sections)
80626a55
DE
12309{
12310 const struct dwop_section_names *names = &dwop_section_names;
12311
12312 if (section_is_p (sectp->name, &names->abbrev_dwo))
12313 {
12314 /* There can be only one. */
049412e3 12315 if (sections->abbrev.s.section != NULL)
80626a55 12316 return 0;
049412e3 12317 sections->abbrev.s.section = sectp;
fd361982 12318 sections->abbrev.size = bfd_section_size (sectp);
80626a55
DE
12319 }
12320 else if (section_is_p (sectp->name, &names->info_dwo)
12321 || section_is_p (sectp->name, &names->types_dwo))
12322 {
12323 /* There can be only one. */
049412e3 12324 if (sections->info_or_types.s.section != NULL)
80626a55 12325 return 0;
049412e3 12326 sections->info_or_types.s.section = sectp;
fd361982 12327 sections->info_or_types.size = bfd_section_size (sectp);
80626a55
DE
12328 }
12329 else if (section_is_p (sectp->name, &names->line_dwo))
12330 {
12331 /* There can be only one. */
049412e3 12332 if (sections->line.s.section != NULL)
80626a55 12333 return 0;
049412e3 12334 sections->line.s.section = sectp;
fd361982 12335 sections->line.size = bfd_section_size (sectp);
80626a55
DE
12336 }
12337 else if (section_is_p (sectp->name, &names->loc_dwo))
12338 {
12339 /* There can be only one. */
049412e3 12340 if (sections->loc.s.section != NULL)
80626a55 12341 return 0;
049412e3 12342 sections->loc.s.section = sectp;
fd361982 12343 sections->loc.size = bfd_section_size (sectp);
80626a55
DE
12344 }
12345 else if (section_is_p (sectp->name, &names->macinfo_dwo))
12346 {
12347 /* There can be only one. */
049412e3 12348 if (sections->macinfo.s.section != NULL)
80626a55 12349 return 0;
049412e3 12350 sections->macinfo.s.section = sectp;
fd361982 12351 sections->macinfo.size = bfd_section_size (sectp);
80626a55
DE
12352 }
12353 else if (section_is_p (sectp->name, &names->macro_dwo))
12354 {
12355 /* There can be only one. */
049412e3 12356 if (sections->macro.s.section != NULL)
80626a55 12357 return 0;
049412e3 12358 sections->macro.s.section = sectp;
fd361982 12359 sections->macro.size = bfd_section_size (sectp);
80626a55
DE
12360 }
12361 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12362 {
12363 /* There can be only one. */
049412e3 12364 if (sections->str_offsets.s.section != NULL)
80626a55 12365 return 0;
049412e3 12366 sections->str_offsets.s.section = sectp;
fd361982 12367 sections->str_offsets.size = bfd_section_size (sectp);
80626a55
DE
12368 }
12369 else
12370 {
12371 /* No other kind of section is valid. */
12372 return 0;
12373 }
12374
12375 return 1;
12376}
12377
73869dc2
DE
12378/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12379 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12380 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12381 This is for DWP version 1 files. */
80626a55
DE
12382
12383static struct dwo_unit *
ed2dc618
SM
12384create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12385 struct dwp_file *dwp_file,
73869dc2
DE
12386 uint32_t unit_index,
12387 const char *comp_dir,
12388 ULONGEST signature, int is_debug_types)
80626a55
DE
12389{
12390 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
12391 const struct dwp_hash_table *dwp_htab =
12392 is_debug_types ? dwp_file->tus : dwp_file->cus;
400174b1 12393 bfd *dbfd = dwp_file->dbfd.get ();
80626a55
DE
12394 const char *kind = is_debug_types ? "TU" : "CU";
12395 struct dwo_file *dwo_file;
12396 struct dwo_unit *dwo_unit;
73869dc2 12397 struct virtual_v1_dwo_sections sections;
80626a55 12398 void **dwo_file_slot;
80626a55
DE
12399 int i;
12400
73869dc2
DE
12401 gdb_assert (dwp_file->version == 1);
12402
b4f54984 12403 if (dwarf_read_debug)
80626a55 12404 {
73869dc2 12405 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
80626a55 12406 kind,
73869dc2 12407 pulongest (unit_index), hex_string (signature),
80626a55
DE
12408 dwp_file->name);
12409 }
12410
19ac8c2e 12411 /* Fetch the sections of this DWO unit.
80626a55
DE
12412 Put a limit on the number of sections we look for so that bad data
12413 doesn't cause us to loop forever. */
12414
73869dc2 12415#define MAX_NR_V1_DWO_SECTIONS \
80626a55
DE
12416 (1 /* .debug_info or .debug_types */ \
12417 + 1 /* .debug_abbrev */ \
12418 + 1 /* .debug_line */ \
12419 + 1 /* .debug_loc */ \
12420 + 1 /* .debug_str_offsets */ \
19ac8c2e 12421 + 1 /* .debug_macro or .debug_macinfo */ \
80626a55
DE
12422 + 1 /* trailing zero */)
12423
12424 memset (&sections, 0, sizeof (sections));
80626a55 12425
73869dc2 12426 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
80626a55
DE
12427 {
12428 asection *sectp;
12429 uint32_t section_nr =
12430 read_4_bytes (dbfd,
73869dc2
DE
12431 dwp_htab->section_pool.v1.indices
12432 + (unit_index + i) * sizeof (uint32_t));
80626a55
DE
12433
12434 if (section_nr == 0)
12435 break;
12436 if (section_nr >= dwp_file->num_sections)
12437 {
12438 error (_("Dwarf Error: bad DWP hash table, section number too large"
12439 " [in module %s]"),
12440 dwp_file->name);
12441 }
12442
12443 sectp = dwp_file->elf_sections[section_nr];
73869dc2 12444 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
80626a55
DE
12445 {
12446 error (_("Dwarf Error: bad DWP hash table, invalid section found"
12447 " [in module %s]"),
12448 dwp_file->name);
12449 }
12450 }
12451
12452 if (i < 2
a32a8923
DE
12453 || dwarf2_section_empty_p (&sections.info_or_types)
12454 || dwarf2_section_empty_p (&sections.abbrev))
80626a55
DE
12455 {
12456 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12457 " [in module %s]"),
12458 dwp_file->name);
12459 }
73869dc2 12460 if (i == MAX_NR_V1_DWO_SECTIONS)
80626a55
DE
12461 {
12462 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12463 " [in module %s]"),
12464 dwp_file->name);
12465 }
12466
12467 /* It's easier for the rest of the code if we fake a struct dwo_file and
12468 have dwo_unit "live" in that. At least for now.
12469
12470 The DWP file can be made up of a random collection of CUs and TUs.
c766f7ec 12471 However, for each CU + set of TUs that came from the same original DWO
57d63ce2
DE
12472 file, we can combine them back into a virtual DWO file to save space
12473 (fewer struct dwo_file objects to allocate). Remember that for really
80626a55
DE
12474 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12475
791afaa2
TT
12476 std::string virtual_dwo_name =
12477 string_printf ("virtual-dwo/%d-%d-%d-%d",
12478 get_section_id (&sections.abbrev),
12479 get_section_id (&sections.line),
12480 get_section_id (&sections.loc),
12481 get_section_id (&sections.str_offsets));
80626a55 12482 /* Can we use an existing virtual DWO file? */
ed2dc618
SM
12483 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12484 virtual_dwo_name.c_str (),
12485 comp_dir);
80626a55
DE
12486 /* Create one if necessary. */
12487 if (*dwo_file_slot == NULL)
12488 {
b4f54984 12489 if (dwarf_read_debug)
80626a55
DE
12490 {
12491 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
791afaa2 12492 virtual_dwo_name.c_str ());
80626a55 12493 }
51ac9db5 12494 dwo_file = new struct dwo_file;
efba19b0
TT
12495 dwo_file->dwo_name = obstack_strdup (&objfile->objfile_obstack,
12496 virtual_dwo_name);
0ac5b59e 12497 dwo_file->comp_dir = comp_dir;
80626a55
DE
12498 dwo_file->sections.abbrev = sections.abbrev;
12499 dwo_file->sections.line = sections.line;
12500 dwo_file->sections.loc = sections.loc;
12501 dwo_file->sections.macinfo = sections.macinfo;
12502 dwo_file->sections.macro = sections.macro;
12503 dwo_file->sections.str_offsets = sections.str_offsets;
12504 /* The "str" section is global to the entire DWP file. */
12505 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 12506 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
12507 there's no need to record it in dwo_file.
12508 Also, we can't simply record type sections in dwo_file because
12509 we record a pointer into the vector in dwo_unit. As we collect more
12510 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
12511 for it, invalidating all copies of pointers into the previous
12512 contents. */
80626a55
DE
12513 *dwo_file_slot = dwo_file;
12514 }
12515 else
12516 {
b4f54984 12517 if (dwarf_read_debug)
80626a55
DE
12518 {
12519 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
791afaa2 12520 virtual_dwo_name.c_str ());
80626a55 12521 }
9a3c8263 12522 dwo_file = (struct dwo_file *) *dwo_file_slot;
80626a55 12523 }
80626a55
DE
12524
12525 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12526 dwo_unit->dwo_file = dwo_file;
12527 dwo_unit->signature = signature;
8d749320
SM
12528 dwo_unit->section =
12529 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
8a0459fd 12530 *dwo_unit->section = sections.info_or_types;
57d63ce2 12531 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
12532
12533 return dwo_unit;
12534}
12535
73869dc2
DE
12536/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12537 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12538 piece within that section used by a TU/CU, return a virtual section
12539 of just that piece. */
12540
12541static struct dwarf2_section_info
ed2dc618
SM
12542create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12543 struct dwarf2_section_info *section,
73869dc2
DE
12544 bfd_size_type offset, bfd_size_type size)
12545{
12546 struct dwarf2_section_info result;
12547 asection *sectp;
12548
12549 gdb_assert (section != NULL);
12550 gdb_assert (!section->is_virtual);
12551
12552 memset (&result, 0, sizeof (result));
12553 result.s.containing_section = section;
dc4ccb6f 12554 result.is_virtual = true;
73869dc2
DE
12555
12556 if (size == 0)
12557 return result;
12558
12559 sectp = get_section_bfd_section (section);
12560
12561 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12562 bounds of the real section. This is a pretty-rare event, so just
12563 flag an error (easier) instead of a warning and trying to cope. */
12564 if (sectp == NULL
fd361982 12565 || offset + size > bfd_section_size (sectp))
73869dc2 12566 {
73869dc2
DE
12567 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12568 " in section %s [in module %s]"),
fd361982 12569 sectp ? bfd_section_name (sectp) : "<unknown>",
73869dc2
DE
12570 objfile_name (dwarf2_per_objfile->objfile));
12571 }
12572
12573 result.virtual_offset = offset;
12574 result.size = size;
12575 return result;
12576}
12577
12578/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12579 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12580 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12581 This is for DWP version 2 files. */
12582
12583static struct dwo_unit *
ed2dc618
SM
12584create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12585 struct dwp_file *dwp_file,
73869dc2
DE
12586 uint32_t unit_index,
12587 const char *comp_dir,
12588 ULONGEST signature, int is_debug_types)
12589{
12590 struct objfile *objfile = dwarf2_per_objfile->objfile;
12591 const struct dwp_hash_table *dwp_htab =
12592 is_debug_types ? dwp_file->tus : dwp_file->cus;
400174b1 12593 bfd *dbfd = dwp_file->dbfd.get ();
73869dc2
DE
12594 const char *kind = is_debug_types ? "TU" : "CU";
12595 struct dwo_file *dwo_file;
12596 struct dwo_unit *dwo_unit;
12597 struct virtual_v2_dwo_sections sections;
12598 void **dwo_file_slot;
73869dc2
DE
12599 int i;
12600
12601 gdb_assert (dwp_file->version == 2);
12602
b4f54984 12603 if (dwarf_read_debug)
73869dc2
DE
12604 {
12605 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12606 kind,
12607 pulongest (unit_index), hex_string (signature),
12608 dwp_file->name);
12609 }
12610
12611 /* Fetch the section offsets of this DWO unit. */
12612
12613 memset (&sections, 0, sizeof (sections));
73869dc2
DE
12614
12615 for (i = 0; i < dwp_htab->nr_columns; ++i)
12616 {
12617 uint32_t offset = read_4_bytes (dbfd,
12618 dwp_htab->section_pool.v2.offsets
12619 + (((unit_index - 1) * dwp_htab->nr_columns
12620 + i)
12621 * sizeof (uint32_t)));
12622 uint32_t size = read_4_bytes (dbfd,
12623 dwp_htab->section_pool.v2.sizes
12624 + (((unit_index - 1) * dwp_htab->nr_columns
12625 + i)
12626 * sizeof (uint32_t)));
12627
12628 switch (dwp_htab->section_pool.v2.section_ids[i])
12629 {
12630 case DW_SECT_INFO:
12631 case DW_SECT_TYPES:
12632 sections.info_or_types_offset = offset;
12633 sections.info_or_types_size = size;
12634 break;
12635 case DW_SECT_ABBREV:
12636 sections.abbrev_offset = offset;
12637 sections.abbrev_size = size;
12638 break;
12639 case DW_SECT_LINE:
12640 sections.line_offset = offset;
12641 sections.line_size = size;
12642 break;
12643 case DW_SECT_LOC:
12644 sections.loc_offset = offset;
12645 sections.loc_size = size;
12646 break;
12647 case DW_SECT_STR_OFFSETS:
12648 sections.str_offsets_offset = offset;
12649 sections.str_offsets_size = size;
12650 break;
12651 case DW_SECT_MACINFO:
12652 sections.macinfo_offset = offset;
12653 sections.macinfo_size = size;
12654 break;
12655 case DW_SECT_MACRO:
12656 sections.macro_offset = offset;
12657 sections.macro_size = size;
12658 break;
12659 }
12660 }
12661
12662 /* It's easier for the rest of the code if we fake a struct dwo_file and
12663 have dwo_unit "live" in that. At least for now.
12664
12665 The DWP file can be made up of a random collection of CUs and TUs.
12666 However, for each CU + set of TUs that came from the same original DWO
12667 file, we can combine them back into a virtual DWO file to save space
12668 (fewer struct dwo_file objects to allocate). Remember that for really
12669 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12670
791afaa2
TT
12671 std::string virtual_dwo_name =
12672 string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12673 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12674 (long) (sections.line_size ? sections.line_offset : 0),
12675 (long) (sections.loc_size ? sections.loc_offset : 0),
12676 (long) (sections.str_offsets_size
12677 ? sections.str_offsets_offset : 0));
73869dc2 12678 /* Can we use an existing virtual DWO file? */
ed2dc618
SM
12679 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12680 virtual_dwo_name.c_str (),
12681 comp_dir);
73869dc2
DE
12682 /* Create one if necessary. */
12683 if (*dwo_file_slot == NULL)
12684 {
b4f54984 12685 if (dwarf_read_debug)
73869dc2
DE
12686 {
12687 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
791afaa2 12688 virtual_dwo_name.c_str ());
73869dc2 12689 }
51ac9db5 12690 dwo_file = new struct dwo_file;
efba19b0
TT
12691 dwo_file->dwo_name = obstack_strdup (&objfile->objfile_obstack,
12692 virtual_dwo_name);
73869dc2
DE
12693 dwo_file->comp_dir = comp_dir;
12694 dwo_file->sections.abbrev =
ed2dc618 12695 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
73869dc2
DE
12696 sections.abbrev_offset, sections.abbrev_size);
12697 dwo_file->sections.line =
ed2dc618 12698 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
73869dc2
DE
12699 sections.line_offset, sections.line_size);
12700 dwo_file->sections.loc =
ed2dc618 12701 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
73869dc2
DE
12702 sections.loc_offset, sections.loc_size);
12703 dwo_file->sections.macinfo =
ed2dc618 12704 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
73869dc2
DE
12705 sections.macinfo_offset, sections.macinfo_size);
12706 dwo_file->sections.macro =
ed2dc618 12707 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
73869dc2
DE
12708 sections.macro_offset, sections.macro_size);
12709 dwo_file->sections.str_offsets =
ed2dc618
SM
12710 create_dwp_v2_section (dwarf2_per_objfile,
12711 &dwp_file->sections.str_offsets,
73869dc2
DE
12712 sections.str_offsets_offset,
12713 sections.str_offsets_size);
12714 /* The "str" section is global to the entire DWP file. */
12715 dwo_file->sections.str = dwp_file->sections.str;
12716 /* The info or types section is assigned below to dwo_unit,
12717 there's no need to record it in dwo_file.
12718 Also, we can't simply record type sections in dwo_file because
12719 we record a pointer into the vector in dwo_unit. As we collect more
12720 types we'll grow the vector and eventually have to reallocate space
12721 for it, invalidating all copies of pointers into the previous
12722 contents. */
12723 *dwo_file_slot = dwo_file;
12724 }
12725 else
12726 {
b4f54984 12727 if (dwarf_read_debug)
73869dc2
DE
12728 {
12729 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
791afaa2 12730 virtual_dwo_name.c_str ());
73869dc2 12731 }
9a3c8263 12732 dwo_file = (struct dwo_file *) *dwo_file_slot;
73869dc2 12733 }
73869dc2
DE
12734
12735 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12736 dwo_unit->dwo_file = dwo_file;
12737 dwo_unit->signature = signature;
8d749320
SM
12738 dwo_unit->section =
12739 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
ed2dc618
SM
12740 *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12741 is_debug_types
73869dc2
DE
12742 ? &dwp_file->sections.types
12743 : &dwp_file->sections.info,
12744 sections.info_or_types_offset,
12745 sections.info_or_types_size);
12746 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
12747
12748 return dwo_unit;
12749}
12750
57d63ce2
DE
12751/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12752 Returns NULL if the signature isn't found. */
80626a55
DE
12753
12754static struct dwo_unit *
ed2dc618
SM
12755lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12756 struct dwp_file *dwp_file, const char *comp_dir,
57d63ce2 12757 ULONGEST signature, int is_debug_types)
80626a55 12758{
57d63ce2
DE
12759 const struct dwp_hash_table *dwp_htab =
12760 is_debug_types ? dwp_file->tus : dwp_file->cus;
400174b1 12761 bfd *dbfd = dwp_file->dbfd.get ();
57d63ce2 12762 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
12763 uint32_t hash = signature & mask;
12764 uint32_t hash2 = ((signature >> 32) & mask) | 1;
12765 unsigned int i;
12766 void **slot;
870f88f7 12767 struct dwo_unit find_dwo_cu;
80626a55
DE
12768
12769 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12770 find_dwo_cu.signature = signature;
19ac8c2e
DE
12771 slot = htab_find_slot (is_debug_types
12772 ? dwp_file->loaded_tus
12773 : dwp_file->loaded_cus,
12774 &find_dwo_cu, INSERT);
80626a55
DE
12775
12776 if (*slot != NULL)
9a3c8263 12777 return (struct dwo_unit *) *slot;
80626a55
DE
12778
12779 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 12780 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
12781 {
12782 ULONGEST signature_in_table;
12783
12784 signature_in_table =
57d63ce2 12785 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
12786 if (signature_in_table == signature)
12787 {
57d63ce2
DE
12788 uint32_t unit_index =
12789 read_4_bytes (dbfd,
12790 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 12791
73869dc2
DE
12792 if (dwp_file->version == 1)
12793 {
ed2dc618
SM
12794 *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12795 dwp_file, unit_index,
73869dc2
DE
12796 comp_dir, signature,
12797 is_debug_types);
12798 }
12799 else
12800 {
ed2dc618
SM
12801 *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12802 dwp_file, unit_index,
73869dc2
DE
12803 comp_dir, signature,
12804 is_debug_types);
12805 }
9a3c8263 12806 return (struct dwo_unit *) *slot;
80626a55
DE
12807 }
12808 if (signature_in_table == 0)
12809 return NULL;
12810 hash = (hash + hash2) & mask;
12811 }
12812
12813 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12814 " [in module %s]"),
12815 dwp_file->name);
12816}
12817
ab5088bf 12818/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
12819 Open the file specified by FILE_NAME and hand it off to BFD for
12820 preliminary analysis. Return a newly initialized bfd *, which
12821 includes a canonicalized copy of FILE_NAME.
80626a55 12822 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
12823 SEARCH_CWD is true if the current directory is to be searched.
12824 It will be searched before debug-file-directory.
13aaf454
DE
12825 If successful, the file is added to the bfd include table of the
12826 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 12827 If unable to find/open the file, return NULL.
3019eac3
DE
12828 NOTE: This function is derived from symfile_bfd_open. */
12829
192b62ce 12830static gdb_bfd_ref_ptr
ed2dc618
SM
12831try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12832 const char *file_name, int is_dwp, int search_cwd)
3019eac3 12833{
24b9144d 12834 int desc;
9c02c129
DE
12835 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
12836 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
12837 to debug_file_directory. */
e0cc99a6 12838 const char *search_path;
9c02c129
DE
12839 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12840
e0cc99a6 12841 gdb::unique_xmalloc_ptr<char> search_path_holder;
6ac97d4c
DE
12842 if (search_cwd)
12843 {
12844 if (*debug_file_directory != '\0')
e0cc99a6
TT
12845 {
12846 search_path_holder.reset (concat (".", dirname_separator_string,
12847 debug_file_directory,
12848 (char *) NULL));
12849 search_path = search_path_holder.get ();
12850 }
6ac97d4c 12851 else
e0cc99a6 12852 search_path = ".";
6ac97d4c 12853 }
9c02c129 12854 else
e0cc99a6 12855 search_path = debug_file_directory;
3019eac3 12856
24b9144d 12857 openp_flags flags = OPF_RETURN_REALPATH;
80626a55
DE
12858 if (is_dwp)
12859 flags |= OPF_SEARCH_IN_PATH;
e0cc99a6
TT
12860
12861 gdb::unique_xmalloc_ptr<char> absolute_name;
9c02c129 12862 desc = openp (search_path, flags, file_name,
3019eac3
DE
12863 O_RDONLY | O_BINARY, &absolute_name);
12864 if (desc < 0)
12865 return NULL;
12866
e0cc99a6
TT
12867 gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12868 gnutarget, desc));
9c02c129
DE
12869 if (sym_bfd == NULL)
12870 return NULL;
192b62ce 12871 bfd_set_cacheable (sym_bfd.get (), 1);
3019eac3 12872
192b62ce
TT
12873 if (!bfd_check_format (sym_bfd.get (), bfd_object))
12874 return NULL;
3019eac3 12875
13aaf454
DE
12876 /* Success. Record the bfd as having been included by the objfile's bfd.
12877 This is important because things like demangled_names_hash lives in the
12878 objfile's per_bfd space and may have references to things like symbol
12879 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
192b62ce 12880 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
13aaf454 12881
3019eac3
DE
12882 return sym_bfd;
12883}
12884
ab5088bf 12885/* Try to open DWO file FILE_NAME.
3019eac3
DE
12886 COMP_DIR is the DW_AT_comp_dir attribute.
12887 The result is the bfd handle of the file.
12888 If there is a problem finding or opening the file, return NULL.
12889 Upon success, the canonicalized path of the file is stored in the bfd,
12890 same as symfile_bfd_open. */
12891
192b62ce 12892static gdb_bfd_ref_ptr
ed2dc618
SM
12893open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12894 const char *file_name, const char *comp_dir)
3019eac3 12895{
80626a55 12896 if (IS_ABSOLUTE_PATH (file_name))
ed2dc618
SM
12897 return try_open_dwop_file (dwarf2_per_objfile, file_name,
12898 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
12899
12900 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
12901
12902 if (comp_dir != NULL)
12903 {
b36cec19
PA
12904 char *path_to_try = concat (comp_dir, SLASH_STRING,
12905 file_name, (char *) NULL);
3019eac3
DE
12906
12907 /* NOTE: If comp_dir is a relative path, this will also try the
12908 search path, which seems useful. */
ed2dc618
SM
12909 gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12910 path_to_try,
12911 0 /*is_dwp*/,
192b62ce 12912 1 /*search_cwd*/));
3019eac3
DE
12913 xfree (path_to_try);
12914 if (abfd != NULL)
12915 return abfd;
12916 }
12917
12918 /* That didn't work, try debug-file-directory, which, despite its name,
12919 is a list of paths. */
12920
12921 if (*debug_file_directory == '\0')
12922 return NULL;
12923
ed2dc618
SM
12924 return try_open_dwop_file (dwarf2_per_objfile, file_name,
12925 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
12926}
12927
80626a55
DE
12928/* This function is mapped across the sections and remembers the offset and
12929 size of each of the DWO debugging sections we are interested in. */
12930
12931static void
12932dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12933{
9a3c8263 12934 struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
80626a55
DE
12935 const struct dwop_section_names *names = &dwop_section_names;
12936
12937 if (section_is_p (sectp->name, &names->abbrev_dwo))
12938 {
049412e3 12939 dwo_sections->abbrev.s.section = sectp;
fd361982 12940 dwo_sections->abbrev.size = bfd_section_size (sectp);
80626a55
DE
12941 }
12942 else if (section_is_p (sectp->name, &names->info_dwo))
12943 {
049412e3 12944 dwo_sections->info.s.section = sectp;
fd361982 12945 dwo_sections->info.size = bfd_section_size (sectp);
80626a55
DE
12946 }
12947 else if (section_is_p (sectp->name, &names->line_dwo))
12948 {
049412e3 12949 dwo_sections->line.s.section = sectp;
fd361982 12950 dwo_sections->line.size = bfd_section_size (sectp);
80626a55
DE
12951 }
12952 else if (section_is_p (sectp->name, &names->loc_dwo))
12953 {
049412e3 12954 dwo_sections->loc.s.section = sectp;
fd361982 12955 dwo_sections->loc.size = bfd_section_size (sectp);
80626a55
DE
12956 }
12957 else if (section_is_p (sectp->name, &names->macinfo_dwo))
12958 {
049412e3 12959 dwo_sections->macinfo.s.section = sectp;
fd361982 12960 dwo_sections->macinfo.size = bfd_section_size (sectp);
80626a55
DE
12961 }
12962 else if (section_is_p (sectp->name, &names->macro_dwo))
12963 {
049412e3 12964 dwo_sections->macro.s.section = sectp;
fd361982 12965 dwo_sections->macro.size = bfd_section_size (sectp);
80626a55
DE
12966 }
12967 else if (section_is_p (sectp->name, &names->str_dwo))
12968 {
049412e3 12969 dwo_sections->str.s.section = sectp;
fd361982 12970 dwo_sections->str.size = bfd_section_size (sectp);
80626a55
DE
12971 }
12972 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12973 {
049412e3 12974 dwo_sections->str_offsets.s.section = sectp;
fd361982 12975 dwo_sections->str_offsets.size = bfd_section_size (sectp);
80626a55
DE
12976 }
12977 else if (section_is_p (sectp->name, &names->types_dwo))
12978 {
12979 struct dwarf2_section_info type_section;
12980
12981 memset (&type_section, 0, sizeof (type_section));
049412e3 12982 type_section.s.section = sectp;
fd361982 12983 type_section.size = bfd_section_size (sectp);
fd5866f6 12984 dwo_sections->types.push_back (type_section);
80626a55
DE
12985 }
12986}
12987
ab5088bf 12988/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 12989 by PER_CU. This is for the non-DWP case.
80626a55 12990 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
12991
12992static struct dwo_file *
0ac5b59e
DE
12993open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12994 const char *dwo_name, const char *comp_dir)
3019eac3 12995{
ed2dc618 12996 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
3019eac3 12997
fb1eb2f9 12998 gdb_bfd_ref_ptr dbfd = open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir);
80626a55
DE
12999 if (dbfd == NULL)
13000 {
b4f54984 13001 if (dwarf_read_debug)
80626a55
DE
13002 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
13003 return NULL;
13004 }
263db9a1 13005
51ac9db5 13006 dwo_file_up dwo_file (new struct dwo_file);
0ac5b59e
DE
13007 dwo_file->dwo_name = dwo_name;
13008 dwo_file->comp_dir = comp_dir;
fb1eb2f9 13009 dwo_file->dbfd = std::move (dbfd);
3019eac3 13010
fb1eb2f9 13011 bfd_map_over_sections (dwo_file->dbfd.get (), dwarf2_locate_dwo_sections,
192b62ce 13012 &dwo_file->sections);
3019eac3 13013
ed2dc618
SM
13014 create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
13015 dwo_file->cus);
3019eac3 13016
263db9a1 13017 create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
ed2dc618 13018 dwo_file->sections.types, dwo_file->tus);
3019eac3 13019
b4f54984 13020 if (dwarf_read_debug)
80626a55
DE
13021 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13022
263db9a1 13023 return dwo_file.release ();
3019eac3
DE
13024}
13025
80626a55 13026/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
13027 size of each of the DWP debugging sections common to version 1 and 2 that
13028 we are interested in. */
3019eac3 13029
80626a55 13030static void
73869dc2
DE
13031dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13032 void *dwp_file_ptr)
3019eac3 13033{
9a3c8263 13034 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
80626a55
DE
13035 const struct dwop_section_names *names = &dwop_section_names;
13036 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 13037
80626a55 13038 /* Record the ELF section number for later lookup: this is what the
73869dc2 13039 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
13040 gdb_assert (elf_section_nr < dwp_file->num_sections);
13041 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 13042
80626a55
DE
13043 /* Look for specific sections that we need. */
13044 if (section_is_p (sectp->name, &names->str_dwo))
13045 {
049412e3 13046 dwp_file->sections.str.s.section = sectp;
fd361982 13047 dwp_file->sections.str.size = bfd_section_size (sectp);
80626a55
DE
13048 }
13049 else if (section_is_p (sectp->name, &names->cu_index))
13050 {
049412e3 13051 dwp_file->sections.cu_index.s.section = sectp;
fd361982 13052 dwp_file->sections.cu_index.size = bfd_section_size (sectp);
80626a55
DE
13053 }
13054 else if (section_is_p (sectp->name, &names->tu_index))
13055 {
049412e3 13056 dwp_file->sections.tu_index.s.section = sectp;
fd361982 13057 dwp_file->sections.tu_index.size = bfd_section_size (sectp);
80626a55
DE
13058 }
13059}
3019eac3 13060
73869dc2
DE
13061/* This function is mapped across the sections and remembers the offset and
13062 size of each of the DWP version 2 debugging sections that we are interested
13063 in. This is split into a separate function because we don't know if we
13064 have version 1 or 2 until we parse the cu_index/tu_index sections. */
13065
13066static void
13067dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13068{
9a3c8263 13069 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
73869dc2
DE
13070 const struct dwop_section_names *names = &dwop_section_names;
13071 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13072
13073 /* Record the ELF section number for later lookup: this is what the
13074 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
13075 gdb_assert (elf_section_nr < dwp_file->num_sections);
13076 dwp_file->elf_sections[elf_section_nr] = sectp;
13077
13078 /* Look for specific sections that we need. */
13079 if (section_is_p (sectp->name, &names->abbrev_dwo))
13080 {
049412e3 13081 dwp_file->sections.abbrev.s.section = sectp;
fd361982 13082 dwp_file->sections.abbrev.size = bfd_section_size (sectp);
73869dc2
DE
13083 }
13084 else if (section_is_p (sectp->name, &names->info_dwo))
13085 {
049412e3 13086 dwp_file->sections.info.s.section = sectp;
fd361982 13087 dwp_file->sections.info.size = bfd_section_size (sectp);
73869dc2
DE
13088 }
13089 else if (section_is_p (sectp->name, &names->line_dwo))
13090 {
049412e3 13091 dwp_file->sections.line.s.section = sectp;
fd361982 13092 dwp_file->sections.line.size = bfd_section_size (sectp);
73869dc2
DE
13093 }
13094 else if (section_is_p (sectp->name, &names->loc_dwo))
13095 {
049412e3 13096 dwp_file->sections.loc.s.section = sectp;
fd361982 13097 dwp_file->sections.loc.size = bfd_section_size (sectp);
73869dc2
DE
13098 }
13099 else if (section_is_p (sectp->name, &names->macinfo_dwo))
13100 {
049412e3 13101 dwp_file->sections.macinfo.s.section = sectp;
fd361982 13102 dwp_file->sections.macinfo.size = bfd_section_size (sectp);
73869dc2
DE
13103 }
13104 else if (section_is_p (sectp->name, &names->macro_dwo))
13105 {
049412e3 13106 dwp_file->sections.macro.s.section = sectp;
fd361982 13107 dwp_file->sections.macro.size = bfd_section_size (sectp);
73869dc2
DE
13108 }
13109 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13110 {
049412e3 13111 dwp_file->sections.str_offsets.s.section = sectp;
fd361982 13112 dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
73869dc2
DE
13113 }
13114 else if (section_is_p (sectp->name, &names->types_dwo))
13115 {
049412e3 13116 dwp_file->sections.types.s.section = sectp;
fd361982 13117 dwp_file->sections.types.size = bfd_section_size (sectp);
73869dc2
DE
13118 }
13119}
13120
80626a55 13121/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 13122
80626a55
DE
13123static hashval_t
13124hash_dwp_loaded_cutus (const void *item)
13125{
9a3c8263 13126 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
3019eac3 13127
80626a55
DE
13128 /* This drops the top 32 bits of the signature, but is ok for a hash. */
13129 return dwo_unit->signature;
3019eac3
DE
13130}
13131
80626a55 13132/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 13133
80626a55
DE
13134static int
13135eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 13136{
9a3c8263
SM
13137 const struct dwo_unit *dua = (const struct dwo_unit *) a;
13138 const struct dwo_unit *dub = (const struct dwo_unit *) b;
3019eac3 13139
80626a55
DE
13140 return dua->signature == dub->signature;
13141}
3019eac3 13142
80626a55 13143/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 13144
80626a55
DE
13145static htab_t
13146allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13147{
13148 return htab_create_alloc_ex (3,
13149 hash_dwp_loaded_cutus,
13150 eq_dwp_loaded_cutus,
13151 NULL,
13152 &objfile->objfile_obstack,
13153 hashtab_obstack_allocate,
13154 dummy_obstack_deallocate);
13155}
3019eac3 13156
ab5088bf
DE
13157/* Try to open DWP file FILE_NAME.
13158 The result is the bfd handle of the file.
13159 If there is a problem finding or opening the file, return NULL.
13160 Upon success, the canonicalized path of the file is stored in the bfd,
13161 same as symfile_bfd_open. */
13162
192b62ce 13163static gdb_bfd_ref_ptr
ed2dc618
SM
13164open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13165 const char *file_name)
ab5088bf 13166{
ed2dc618
SM
13167 gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13168 1 /*is_dwp*/,
192b62ce 13169 1 /*search_cwd*/));
6ac97d4c
DE
13170 if (abfd != NULL)
13171 return abfd;
13172
13173 /* Work around upstream bug 15652.
13174 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13175 [Whether that's a "bug" is debatable, but it is getting in our way.]
13176 We have no real idea where the dwp file is, because gdb's realpath-ing
13177 of the executable's path may have discarded the needed info.
13178 [IWBN if the dwp file name was recorded in the executable, akin to
13179 .gnu_debuglink, but that doesn't exist yet.]
13180 Strip the directory from FILE_NAME and search again. */
13181 if (*debug_file_directory != '\0')
13182 {
13183 /* Don't implicitly search the current directory here.
13184 If the user wants to search "." to handle this case,
13185 it must be added to debug-file-directory. */
ed2dc618
SM
13186 return try_open_dwop_file (dwarf2_per_objfile,
13187 lbasename (file_name), 1 /*is_dwp*/,
6ac97d4c
DE
13188 0 /*search_cwd*/);
13189 }
13190
13191 return NULL;
ab5088bf
DE
13192}
13193
80626a55
DE
13194/* Initialize the use of the DWP file for the current objfile.
13195 By convention the name of the DWP file is ${objfile}.dwp.
13196 The result is NULL if it can't be found. */
a766d390 13197
400174b1 13198static std::unique_ptr<struct dwp_file>
ed2dc618 13199open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
80626a55
DE
13200{
13201 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55 13202
82bf32bc
JK
13203 /* Try to find first .dwp for the binary file before any symbolic links
13204 resolving. */
6c447423
DE
13205
13206 /* If the objfile is a debug file, find the name of the real binary
13207 file and get the name of dwp file from there. */
d721ba37 13208 std::string dwp_name;
6c447423
DE
13209 if (objfile->separate_debug_objfile_backlink != NULL)
13210 {
13211 struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13212 const char *backlink_basename = lbasename (backlink->original_name);
6c447423 13213
d721ba37 13214 dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
6c447423
DE
13215 }
13216 else
d721ba37
PA
13217 dwp_name = objfile->original_name;
13218
13219 dwp_name += ".dwp";
80626a55 13220
ed2dc618 13221 gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
82bf32bc
JK
13222 if (dbfd == NULL
13223 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13224 {
13225 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
d721ba37
PA
13226 dwp_name = objfile_name (objfile);
13227 dwp_name += ".dwp";
ed2dc618 13228 dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
82bf32bc
JK
13229 }
13230
80626a55
DE
13231 if (dbfd == NULL)
13232 {
b4f54984 13233 if (dwarf_read_debug)
d721ba37 13234 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
400174b1 13235 return std::unique_ptr<dwp_file> ();
3019eac3 13236 }
400174b1
TT
13237
13238 const char *name = bfd_get_filename (dbfd.get ());
13239 std::unique_ptr<struct dwp_file> dwp_file
13240 (new struct dwp_file (name, std::move (dbfd)));
c906108c 13241
0a0f4c01 13242 dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
80626a55
DE
13243 dwp_file->elf_sections =
13244 OBSTACK_CALLOC (&objfile->objfile_obstack,
13245 dwp_file->num_sections, asection *);
13246
400174b1
TT
13247 bfd_map_over_sections (dwp_file->dbfd.get (),
13248 dwarf2_locate_common_dwp_sections,
13249 dwp_file.get ());
80626a55 13250
400174b1
TT
13251 dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13252 0);
80626a55 13253
400174b1
TT
13254 dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13255 1);
80626a55 13256
73869dc2 13257 /* The DWP file version is stored in the hash table. Oh well. */
08302ed2
DE
13258 if (dwp_file->cus && dwp_file->tus
13259 && dwp_file->cus->version != dwp_file->tus->version)
73869dc2
DE
13260 {
13261 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 13262 pretty bizarre. We use pulongest here because that's the established
4d65956b 13263 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
13264 error (_("Dwarf Error: DWP file CU version %s doesn't match"
13265 " TU version %s [in DWP file %s]"),
13266 pulongest (dwp_file->cus->version),
d721ba37 13267 pulongest (dwp_file->tus->version), dwp_name.c_str ());
73869dc2 13268 }
08302ed2
DE
13269
13270 if (dwp_file->cus)
13271 dwp_file->version = dwp_file->cus->version;
13272 else if (dwp_file->tus)
13273 dwp_file->version = dwp_file->tus->version;
13274 else
13275 dwp_file->version = 2;
73869dc2
DE
13276
13277 if (dwp_file->version == 2)
400174b1
TT
13278 bfd_map_over_sections (dwp_file->dbfd.get (),
13279 dwarf2_locate_v2_dwp_sections,
13280 dwp_file.get ());
73869dc2 13281
19ac8c2e
DE
13282 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13283 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 13284
b4f54984 13285 if (dwarf_read_debug)
80626a55
DE
13286 {
13287 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13288 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
13289 " %s CUs, %s TUs\n",
13290 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13291 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
13292 }
13293
13294 return dwp_file;
3019eac3 13295}
c906108c 13296
ab5088bf
DE
13297/* Wrapper around open_and_init_dwp_file, only open it once. */
13298
13299static struct dwp_file *
ed2dc618 13300get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
ab5088bf
DE
13301{
13302 if (! dwarf2_per_objfile->dwp_checked)
13303 {
ed2dc618
SM
13304 dwarf2_per_objfile->dwp_file
13305 = open_and_init_dwp_file (dwarf2_per_objfile);
ab5088bf
DE
13306 dwarf2_per_objfile->dwp_checked = 1;
13307 }
400174b1 13308 return dwarf2_per_objfile->dwp_file.get ();
ab5088bf
DE
13309}
13310
80626a55
DE
13311/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13312 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13313 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 13314 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
13315 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13316
13317 This is called, for example, when wanting to read a variable with a
13318 complex location. Therefore we don't want to do file i/o for every call.
13319 Therefore we don't want to look for a DWO file on every call.
13320 Therefore we first see if we've already seen SIGNATURE in a DWP file,
13321 then we check if we've already seen DWO_NAME, and only THEN do we check
13322 for a DWO file.
13323
1c658ad5 13324 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 13325 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 13326
3019eac3 13327static struct dwo_unit *
80626a55
DE
13328lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13329 const char *dwo_name, const char *comp_dir,
13330 ULONGEST signature, int is_debug_types)
3019eac3 13331{
ed2dc618 13332 struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
3019eac3 13333 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
13334 const char *kind = is_debug_types ? "TU" : "CU";
13335 void **dwo_file_slot;
3019eac3 13336 struct dwo_file *dwo_file;
80626a55 13337 struct dwp_file *dwp_file;
cb1df416 13338
6a506a2d
DE
13339 /* First see if there's a DWP file.
13340 If we have a DWP file but didn't find the DWO inside it, don't
13341 look for the original DWO file. It makes gdb behave differently
13342 depending on whether one is debugging in the build tree. */
cf2c3c16 13343
ed2dc618 13344 dwp_file = get_dwp_file (dwarf2_per_objfile);
80626a55 13345 if (dwp_file != NULL)
cf2c3c16 13346 {
80626a55
DE
13347 const struct dwp_hash_table *dwp_htab =
13348 is_debug_types ? dwp_file->tus : dwp_file->cus;
13349
13350 if (dwp_htab != NULL)
13351 {
13352 struct dwo_unit *dwo_cutu =
ed2dc618 13353 lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
57d63ce2 13354 signature, is_debug_types);
80626a55
DE
13355
13356 if (dwo_cutu != NULL)
13357 {
b4f54984 13358 if (dwarf_read_debug)
80626a55
DE
13359 {
13360 fprintf_unfiltered (gdb_stdlog,
13361 "Virtual DWO %s %s found: @%s\n",
13362 kind, hex_string (signature),
13363 host_address_to_string (dwo_cutu));
13364 }
13365 return dwo_cutu;
13366 }
13367 }
13368 }
6a506a2d 13369 else
80626a55 13370 {
6a506a2d 13371 /* No DWP file, look for the DWO file. */
80626a55 13372
ed2dc618
SM
13373 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13374 dwo_name, comp_dir);
6a506a2d 13375 if (*dwo_file_slot == NULL)
80626a55 13376 {
6a506a2d
DE
13377 /* Read in the file and build a table of the CUs/TUs it contains. */
13378 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 13379 }
6a506a2d 13380 /* NOTE: This will be NULL if unable to open the file. */
9a3c8263 13381 dwo_file = (struct dwo_file *) *dwo_file_slot;
3019eac3 13382
6a506a2d 13383 if (dwo_file != NULL)
19c3d4c9 13384 {
6a506a2d
DE
13385 struct dwo_unit *dwo_cutu = NULL;
13386
13387 if (is_debug_types && dwo_file->tus)
13388 {
13389 struct dwo_unit find_dwo_cutu;
13390
13391 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13392 find_dwo_cutu.signature = signature;
9a3c8263
SM
13393 dwo_cutu
13394 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
6a506a2d 13395 }
33c5cd75 13396 else if (!is_debug_types && dwo_file->cus)
80626a55 13397 {
33c5cd75
DB
13398 struct dwo_unit find_dwo_cutu;
13399
13400 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13401 find_dwo_cutu.signature = signature;
13402 dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13403 &find_dwo_cutu);
6a506a2d
DE
13404 }
13405
13406 if (dwo_cutu != NULL)
13407 {
b4f54984 13408 if (dwarf_read_debug)
6a506a2d
DE
13409 {
13410 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13411 kind, dwo_name, hex_string (signature),
13412 host_address_to_string (dwo_cutu));
13413 }
13414 return dwo_cutu;
80626a55
DE
13415 }
13416 }
2e276125 13417 }
9cdd5dbd 13418
80626a55
DE
13419 /* We didn't find it. This could mean a dwo_id mismatch, or
13420 someone deleted the DWO/DWP file, or the search path isn't set up
13421 correctly to find the file. */
13422
b4f54984 13423 if (dwarf_read_debug)
80626a55
DE
13424 {
13425 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13426 kind, dwo_name, hex_string (signature));
13427 }
3019eac3 13428
6656a72d
DE
13429 /* This is a warning and not a complaint because it can be caused by
13430 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
13431 {
13432 /* Print the name of the DWP file if we looked there, helps the user
13433 better diagnose the problem. */
791afaa2 13434 std::string dwp_text;
43942612
DE
13435
13436 if (dwp_file != NULL)
791afaa2
TT
13437 dwp_text = string_printf (" [in DWP file %s]",
13438 lbasename (dwp_file->name));
43942612 13439
9d8780f0 13440 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
43942612
DE
13441 " [in module %s]"),
13442 kind, dwo_name, hex_string (signature),
791afaa2 13443 dwp_text.c_str (),
43942612 13444 this_unit->is_debug_types ? "TU" : "CU",
9d8780f0 13445 sect_offset_str (this_unit->sect_off), objfile_name (objfile));
43942612 13446 }
3019eac3 13447 return NULL;
5fb290d7
DJ
13448}
13449
80626a55
DE
13450/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13451 See lookup_dwo_cutu_unit for details. */
13452
13453static struct dwo_unit *
13454lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13455 const char *dwo_name, const char *comp_dir,
13456 ULONGEST signature)
13457{
13458 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13459}
13460
13461/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13462 See lookup_dwo_cutu_unit for details. */
13463
13464static struct dwo_unit *
13465lookup_dwo_type_unit (struct signatured_type *this_tu,
13466 const char *dwo_name, const char *comp_dir)
13467{
13468 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13469}
13470
89e63ee4
DE
13471/* Traversal function for queue_and_load_all_dwo_tus. */
13472
13473static int
13474queue_and_load_dwo_tu (void **slot, void *info)
13475{
13476 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13477 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13478 ULONGEST signature = dwo_unit->signature;
13479 struct signatured_type *sig_type =
13480 lookup_dwo_signatured_type (per_cu->cu, signature);
13481
13482 if (sig_type != NULL)
13483 {
13484 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13485
13486 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13487 a real dependency of PER_CU on SIG_TYPE. That is detected later
13488 while processing PER_CU. */
13489 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13490 load_full_type_unit (sig_cu);
ae640021 13491 per_cu->imported_symtabs_push (sig_cu);
89e63ee4
DE
13492 }
13493
13494 return 1;
13495}
13496
13497/* Queue all TUs contained in the DWO of PER_CU to be read in.
13498 The DWO may have the only definition of the type, though it may not be
13499 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
13500 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
13501
13502static void
13503queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13504{
13505 struct dwo_unit *dwo_unit;
13506 struct dwo_file *dwo_file;
13507
13508 gdb_assert (!per_cu->is_debug_types);
ed2dc618 13509 gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
89e63ee4
DE
13510 gdb_assert (per_cu->cu != NULL);
13511
13512 dwo_unit = per_cu->cu->dwo_unit;
13513 gdb_assert (dwo_unit != NULL);
13514
13515 dwo_file = dwo_unit->dwo_file;
13516 if (dwo_file->tus != NULL)
13517 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13518}
13519
3019eac3 13520/* Read in various DIEs. */
348e048f 13521
d389af10 13522/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
13523 Inherit only the children of the DW_AT_abstract_origin DIE not being
13524 already referenced by DW_AT_abstract_origin from the children of the
13525 current DIE. */
d389af10
JK
13526
13527static void
13528inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13529{
13530 struct die_info *child_die;
791afaa2 13531 sect_offset *offsetp;
d389af10
JK
13532 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
13533 struct die_info *origin_die;
13534 /* Iterator of the ORIGIN_DIE children. */
13535 struct die_info *origin_child_die;
d389af10 13536 struct attribute *attr;
cd02d79d
PA
13537 struct dwarf2_cu *origin_cu;
13538 struct pending **origin_previous_list_in_scope;
d389af10
JK
13539
13540 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13541 if (!attr)
13542 return;
13543
cd02d79d
PA
13544 /* Note that following die references may follow to a die in a
13545 different cu. */
13546
13547 origin_cu = cu;
13548 origin_die = follow_die_ref (die, attr, &origin_cu);
13549
13550 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13551 symbols in. */
13552 origin_previous_list_in_scope = origin_cu->list_in_scope;
13553 origin_cu->list_in_scope = cu->list_in_scope;
13554
edb3359d
DJ
13555 if (die->tag != origin_die->tag
13556 && !(die->tag == DW_TAG_inlined_subroutine
13557 && origin_die->tag == DW_TAG_subprogram))
b98664d3 13558 complaint (_("DIE %s and its abstract origin %s have different tags"),
9d8780f0
SM
13559 sect_offset_str (die->sect_off),
13560 sect_offset_str (origin_die->sect_off));
d389af10 13561
791afaa2 13562 std::vector<sect_offset> offsets;
d389af10 13563
3ea89b92
PMR
13564 for (child_die = die->child;
13565 child_die && child_die->tag;
13566 child_die = sibling_die (child_die))
13567 {
13568 struct die_info *child_origin_die;
13569 struct dwarf2_cu *child_origin_cu;
13570
13571 /* We are trying to process concrete instance entries:
216f72a1 13572 DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
3ea89b92
PMR
13573 it's not relevant to our analysis here. i.e. detecting DIEs that are
13574 present in the abstract instance but not referenced in the concrete
13575 one. */
216f72a1
JK
13576 if (child_die->tag == DW_TAG_call_site
13577 || child_die->tag == DW_TAG_GNU_call_site)
3ea89b92
PMR
13578 continue;
13579
c38f313d
DJ
13580 /* For each CHILD_DIE, find the corresponding child of
13581 ORIGIN_DIE. If there is more than one layer of
13582 DW_AT_abstract_origin, follow them all; there shouldn't be,
13583 but GCC versions at least through 4.4 generate this (GCC PR
13584 40573). */
3ea89b92
PMR
13585 child_origin_die = child_die;
13586 child_origin_cu = cu;
c38f313d
DJ
13587 while (1)
13588 {
cd02d79d
PA
13589 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13590 child_origin_cu);
c38f313d
DJ
13591 if (attr == NULL)
13592 break;
cd02d79d
PA
13593 child_origin_die = follow_die_ref (child_origin_die, attr,
13594 &child_origin_cu);
c38f313d
DJ
13595 }
13596
d389af10
JK
13597 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13598 counterpart may exist. */
c38f313d 13599 if (child_origin_die != child_die)
d389af10 13600 {
edb3359d
DJ
13601 if (child_die->tag != child_origin_die->tag
13602 && !(child_die->tag == DW_TAG_inlined_subroutine
13603 && child_origin_die->tag == DW_TAG_subprogram))
b98664d3 13604 complaint (_("Child DIE %s and its abstract origin %s have "
9c541725 13605 "different tags"),
9d8780f0
SM
13606 sect_offset_str (child_die->sect_off),
13607 sect_offset_str (child_origin_die->sect_off));
c38f313d 13608 if (child_origin_die->parent != origin_die)
b98664d3 13609 complaint (_("Child DIE %s and its abstract origin %s have "
9c541725 13610 "different parents"),
9d8780f0
SM
13611 sect_offset_str (child_die->sect_off),
13612 sect_offset_str (child_origin_die->sect_off));
c38f313d 13613 else
791afaa2 13614 offsets.push_back (child_origin_die->sect_off);
d389af10 13615 }
d389af10 13616 }
791afaa2
TT
13617 std::sort (offsets.begin (), offsets.end ());
13618 sect_offset *offsets_end = offsets.data () + offsets.size ();
13619 for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
9c541725 13620 if (offsetp[-1] == *offsetp)
b98664d3 13621 complaint (_("Multiple children of DIE %s refer "
9d8780f0
SM
13622 "to DIE %s as their abstract origin"),
13623 sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
d389af10 13624
791afaa2 13625 offsetp = offsets.data ();
d389af10
JK
13626 origin_child_die = origin_die->child;
13627 while (origin_child_die && origin_child_die->tag)
13628 {
13629 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1 13630 while (offsetp < offsets_end
9c541725 13631 && *offsetp < origin_child_die->sect_off)
d389af10 13632 offsetp++;
b64f50a1 13633 if (offsetp >= offsets_end
9c541725 13634 || *offsetp > origin_child_die->sect_off)
d389af10 13635 {
adde2bff
DE
13636 /* Found that ORIGIN_CHILD_DIE is really not referenced.
13637 Check whether we're already processing ORIGIN_CHILD_DIE.
13638 This can happen with mutually referenced abstract_origins.
13639 PR 16581. */
13640 if (!origin_child_die->in_process)
13641 process_die (origin_child_die, origin_cu);
d389af10
JK
13642 }
13643 origin_child_die = sibling_die (origin_child_die);
13644 }
cd02d79d 13645 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
13646}
13647
c906108c 13648static void
e7c27a73 13649read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13650{
518817b3 13651 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a 13652 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 13653 struct context_stack *newobj;
c906108c
SS
13654 CORE_ADDR lowpc;
13655 CORE_ADDR highpc;
13656 struct die_info *child_die;
edb3359d 13657 struct attribute *attr, *call_line, *call_file;
15d034d0 13658 const char *name;
e142c38c 13659 CORE_ADDR baseaddr;
801e3a5b 13660 struct block *block;
edb3359d 13661 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
2f4732b0 13662 std::vector<struct symbol *> template_args;
34eaf542 13663 struct template_symbol *templ_func = NULL;
edb3359d
DJ
13664
13665 if (inlined_func)
13666 {
13667 /* If we do not have call site information, we can't show the
13668 caller of this inlined function. That's too confusing, so
13669 only use the scope for local variables. */
13670 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13671 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13672 if (call_line == NULL || call_file == NULL)
13673 {
13674 read_lexical_block_scope (die, cu);
13675 return;
13676 }
13677 }
c906108c 13678
e142c38c
DJ
13679 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13680
94af9270 13681 name = dwarf2_name (die, cu);
c906108c 13682
e8d05480
JB
13683 /* Ignore functions with missing or empty names. These are actually
13684 illegal according to the DWARF standard. */
13685 if (name == NULL)
13686 {
b98664d3 13687 complaint (_("missing name for subprogram DIE at %s"),
9d8780f0 13688 sect_offset_str (die->sect_off));
e8d05480
JB
13689 return;
13690 }
13691
13692 /* Ignore functions with missing or invalid low and high pc attributes. */
3a2b436a 13693 if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
e385593e 13694 <= PC_BOUNDS_INVALID)
e8d05480 13695 {
ae4d0c03
PM
13696 attr = dwarf2_attr (die, DW_AT_external, cu);
13697 if (!attr || !DW_UNSND (attr))
b98664d3 13698 complaint (_("cannot get low and high bounds "
9d8780f0
SM
13699 "for subprogram DIE at %s"),
13700 sect_offset_str (die->sect_off));
e8d05480
JB
13701 return;
13702 }
c906108c 13703
3e29f34a
MR
13704 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13705 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 13706
34eaf542
TT
13707 /* If we have any template arguments, then we must allocate a
13708 different sort of symbol. */
13709 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13710 {
13711 if (child_die->tag == DW_TAG_template_type_param
13712 || child_die->tag == DW_TAG_template_value_param)
13713 {
e623cf5d 13714 templ_func = allocate_template_symbol (objfile);
cf724bc9 13715 templ_func->subclass = SYMBOL_TEMPLATE;
34eaf542
TT
13716 break;
13717 }
13718 }
13719
c24bdb02 13720 newobj = cu->get_builder ()->push_context (0, lowpc);
5e2db402
TT
13721 newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13722 (struct symbol *) templ_func);
4c2df51b 13723
81873cc8
TV
13724 if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
13725 set_objfile_main_name (objfile, SYMBOL_LINKAGE_NAME (newobj->name),
13726 cu->language);
13727
4cecd739
DJ
13728 /* If there is a location expression for DW_AT_frame_base, record
13729 it. */
e142c38c 13730 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 13731 if (attr)
fe978cb0 13732 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 13733
63e43d3a
PMR
13734 /* If there is a location for the static link, record it. */
13735 newobj->static_link = NULL;
13736 attr = dwarf2_attr (die, DW_AT_static_link, cu);
13737 if (attr)
13738 {
224c3ddb
SM
13739 newobj->static_link
13740 = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
9a49df9d
AB
13741 attr_to_dynamic_prop (attr, die, cu, newobj->static_link,
13742 dwarf2_per_cu_addr_type (cu->per_cu));
63e43d3a
PMR
13743 }
13744
c24bdb02 13745 cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
c906108c 13746
639d11d3 13747 if (die->child != NULL)
c906108c 13748 {
639d11d3 13749 child_die = die->child;
c906108c
SS
13750 while (child_die && child_die->tag)
13751 {
34eaf542
TT
13752 if (child_die->tag == DW_TAG_template_type_param
13753 || child_die->tag == DW_TAG_template_value_param)
13754 {
13755 struct symbol *arg = new_symbol (child_die, NULL, cu);
13756
f1078f66 13757 if (arg != NULL)
2f4732b0 13758 template_args.push_back (arg);
34eaf542
TT
13759 }
13760 else
13761 process_die (child_die, cu);
c906108c
SS
13762 child_die = sibling_die (child_die);
13763 }
13764 }
13765
d389af10
JK
13766 inherit_abstract_dies (die, cu);
13767
4a811a97
UW
13768 /* If we have a DW_AT_specification, we might need to import using
13769 directives from the context of the specification DIE. See the
13770 comment in determine_prefix. */
13771 if (cu->language == language_cplus
13772 && dwarf2_attr (die, DW_AT_specification, cu))
13773 {
13774 struct dwarf2_cu *spec_cu = cu;
13775 struct die_info *spec_die = die_specification (die, &spec_cu);
13776
13777 while (spec_die)
13778 {
13779 child_die = spec_die->child;
13780 while (child_die && child_die->tag)
13781 {
13782 if (child_die->tag == DW_TAG_imported_module)
13783 process_die (child_die, spec_cu);
13784 child_die = sibling_die (child_die);
13785 }
13786
13787 /* In some cases, GCC generates specification DIEs that
13788 themselves contain DW_AT_specification attributes. */
13789 spec_die = die_specification (spec_die, &spec_cu);
13790 }
13791 }
13792
c24bdb02 13793 struct context_stack cstk = cu->get_builder ()->pop_context ();
c906108c 13794 /* Make a block for the local symbols within. */
c24bdb02 13795 block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
804d2729 13796 cstk.static_link, lowpc, highpc);
801e3a5b 13797
df8a16a1 13798 /* For C++, set the block's scope. */
45280282
IB
13799 if ((cu->language == language_cplus
13800 || cu->language == language_fortran
c44af4eb
TT
13801 || cu->language == language_d
13802 || cu->language == language_rust)
4d4ec4e5 13803 && cu->processing_has_namespace_info)
195a3f6c
TT
13804 block_set_scope (block, determine_prefix (die, cu),
13805 &objfile->objfile_obstack);
df8a16a1 13806
801e3a5b
JB
13807 /* If we have address ranges, record them. */
13808 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 13809
a60f3166 13810 gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
3e29f34a 13811
34eaf542 13812 /* Attach template arguments to function. */
2f4732b0 13813 if (!template_args.empty ())
34eaf542
TT
13814 {
13815 gdb_assert (templ_func != NULL);
13816
2f4732b0 13817 templ_func->n_template_arguments = template_args.size ();
34eaf542 13818 templ_func->template_arguments
8d749320
SM
13819 = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13820 templ_func->n_template_arguments);
34eaf542 13821 memcpy (templ_func->template_arguments,
2f4732b0 13822 template_args.data (),
34eaf542 13823 (templ_func->n_template_arguments * sizeof (struct symbol *)));
3e1d3d8c
TT
13824
13825 /* Make sure that the symtab is set on the new symbols. Even
13826 though they don't appear in this symtab directly, other parts
13827 of gdb assume that symbols do, and this is reasonably
13828 true. */
8634679f 13829 for (symbol *sym : template_args)
3e1d3d8c 13830 symbol_set_symtab (sym, symbol_symtab (templ_func));
34eaf542
TT
13831 }
13832
208d8187
JB
13833 /* In C++, we can have functions nested inside functions (e.g., when
13834 a function declares a class that has methods). This means that
13835 when we finish processing a function scope, we may need to go
13836 back to building a containing block's symbol lists. */
c24bdb02
KS
13837 *cu->get_builder ()->get_local_symbols () = cstk.locals;
13838 cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
208d8187 13839
921e78cf
JB
13840 /* If we've finished processing a top-level function, subsequent
13841 symbols go in the file symbol list. */
c24bdb02
KS
13842 if (cu->get_builder ()->outermost_context_p ())
13843 cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
c906108c
SS
13844}
13845
13846/* Process all the DIES contained within a lexical block scope. Start
13847 a new scope, process the dies, and then close the scope. */
13848
13849static void
e7c27a73 13850read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13851{
518817b3 13852 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a 13853 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
13854 CORE_ADDR lowpc, highpc;
13855 struct die_info *child_die;
e142c38c
DJ
13856 CORE_ADDR baseaddr;
13857
13858 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
13859
13860 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
13861 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13862 as multiple lexical blocks? Handling children in a sane way would
6e70227d 13863 be nasty. Might be easier to properly extend generic blocks to
af34e669 13864 describe ranges. */
e385593e
JK
13865 switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13866 {
13867 case PC_BOUNDS_NOT_PRESENT:
13868 /* DW_TAG_lexical_block has no attributes, process its children as if
13869 there was no wrapping by that DW_TAG_lexical_block.
13870 GCC does no longer produces such DWARF since GCC r224161. */
13871 for (child_die = die->child;
13872 child_die != NULL && child_die->tag;
13873 child_die = sibling_die (child_die))
13874 process_die (child_die, cu);
13875 return;
13876 case PC_BOUNDS_INVALID:
13877 return;
13878 }
3e29f34a
MR
13879 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13880 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 13881
c24bdb02 13882 cu->get_builder ()->push_context (0, lowpc);
639d11d3 13883 if (die->child != NULL)
c906108c 13884 {
639d11d3 13885 child_die = die->child;
c906108c
SS
13886 while (child_die && child_die->tag)
13887 {
e7c27a73 13888 process_die (child_die, cu);
c906108c
SS
13889 child_die = sibling_die (child_die);
13890 }
13891 }
3ea89b92 13892 inherit_abstract_dies (die, cu);
c24bdb02 13893 struct context_stack cstk = cu->get_builder ()->pop_context ();
c906108c 13894
c24bdb02
KS
13895 if (*cu->get_builder ()->get_local_symbols () != NULL
13896 || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
c906108c 13897 {
801e3a5b 13898 struct block *block
c24bdb02 13899 = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
804d2729 13900 cstk.start_addr, highpc);
801e3a5b
JB
13901
13902 /* Note that recording ranges after traversing children, as we
13903 do here, means that recording a parent's ranges entails
13904 walking across all its children's ranges as they appear in
13905 the address map, which is quadratic behavior.
13906
13907 It would be nicer to record the parent's ranges before
13908 traversing its children, simply overriding whatever you find
13909 there. But since we don't even decide whether to create a
13910 block until after we've traversed its children, that's hard
13911 to do. */
13912 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 13913 }
c24bdb02
KS
13914 *cu->get_builder ()->get_local_symbols () = cstk.locals;
13915 cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
c906108c
SS
13916}
13917
216f72a1 13918/* Read in DW_TAG_call_site and insert it to CU->call_site_htab. */
96408a79
SA
13919
13920static void
13921read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13922{
518817b3 13923 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
96408a79
SA
13924 struct gdbarch *gdbarch = get_objfile_arch (objfile);
13925 CORE_ADDR pc, baseaddr;
13926 struct attribute *attr;
13927 struct call_site *call_site, call_site_local;
13928 void **slot;
13929 int nparams;
13930 struct die_info *child_die;
13931
13932 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13933
216f72a1
JK
13934 attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13935 if (attr == NULL)
13936 {
13937 /* This was a pre-DWARF-5 GNU extension alias
13938 for DW_AT_call_return_pc. */
13939 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13940 }
96408a79
SA
13941 if (!attr)
13942 {
b98664d3 13943 complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
9d8780f0
SM
13944 "DIE %s [in module %s]"),
13945 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79
SA
13946 return;
13947 }
31aa7e4e 13948 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 13949 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
13950
13951 if (cu->call_site_htab == NULL)
13952 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13953 NULL, &objfile->objfile_obstack,
13954 hashtab_obstack_allocate, NULL);
13955 call_site_local.pc = pc;
13956 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13957 if (*slot != NULL)
13958 {
b98664d3 13959 complaint (_("Duplicate PC %s for DW_TAG_call_site "
9d8780f0
SM
13960 "DIE %s [in module %s]"),
13961 paddress (gdbarch, pc), sect_offset_str (die->sect_off),
4262abfb 13962 objfile_name (objfile));
96408a79
SA
13963 return;
13964 }
13965
13966 /* Count parameters at the caller. */
13967
13968 nparams = 0;
13969 for (child_die = die->child; child_die && child_die->tag;
13970 child_die = sibling_die (child_die))
13971 {
216f72a1
JK
13972 if (child_die->tag != DW_TAG_call_site_parameter
13973 && child_die->tag != DW_TAG_GNU_call_site_parameter)
96408a79 13974 {
b98664d3 13975 complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
9d8780f0
SM
13976 "DW_TAG_call_site child DIE %s [in module %s]"),
13977 child_die->tag, sect_offset_str (child_die->sect_off),
4262abfb 13978 objfile_name (objfile));
96408a79
SA
13979 continue;
13980 }
13981
13982 nparams++;
13983 }
13984
224c3ddb
SM
13985 call_site
13986 = ((struct call_site *)
13987 obstack_alloc (&objfile->objfile_obstack,
13988 sizeof (*call_site)
13989 + (sizeof (*call_site->parameter) * (nparams - 1))));
96408a79
SA
13990 *slot = call_site;
13991 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13992 call_site->pc = pc;
13993
216f72a1
JK
13994 if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13995 || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
96408a79
SA
13996 {
13997 struct die_info *func_die;
13998
13999 /* Skip also over DW_TAG_inlined_subroutine. */
14000 for (func_die = die->parent;
14001 func_die && func_die->tag != DW_TAG_subprogram
14002 && func_die->tag != DW_TAG_subroutine_type;
14003 func_die = func_die->parent);
14004
216f72a1
JK
14005 /* DW_AT_call_all_calls is a superset
14006 of DW_AT_call_all_tail_calls. */
96408a79 14007 if (func_die
216f72a1 14008 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
96408a79 14009 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
216f72a1 14010 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
96408a79
SA
14011 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14012 {
14013 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14014 not complete. But keep CALL_SITE for look ups via call_site_htab,
14015 both the initial caller containing the real return address PC and
14016 the final callee containing the current PC of a chain of tail
14017 calls do not need to have the tail call list complete. But any
14018 function candidate for a virtual tail call frame searched via
14019 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14020 determined unambiguously. */
14021 }
14022 else
14023 {
14024 struct type *func_type = NULL;
14025
14026 if (func_die)
14027 func_type = get_die_type (func_die, cu);
14028 if (func_type != NULL)
14029 {
14030 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14031
14032 /* Enlist this call site to the function. */
14033 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14034 TYPE_TAIL_CALL_LIST (func_type) = call_site;
14035 }
14036 else
b98664d3 14037 complaint (_("Cannot find function owning DW_TAG_call_site "
9d8780f0
SM
14038 "DIE %s [in module %s]"),
14039 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79
SA
14040 }
14041 }
14042
216f72a1
JK
14043 attr = dwarf2_attr (die, DW_AT_call_target, cu);
14044 if (attr == NULL)
14045 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14046 if (attr == NULL)
14047 attr = dwarf2_attr (die, DW_AT_call_origin, cu);
96408a79 14048 if (attr == NULL)
216f72a1
JK
14049 {
14050 /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin. */
14051 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14052 }
96408a79
SA
14053 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14054 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14055 /* Keep NULL DWARF_BLOCK. */;
14056 else if (attr_form_is_block (attr))
14057 {
14058 struct dwarf2_locexpr_baton *dlbaton;
14059
8d749320 14060 dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
96408a79
SA
14061 dlbaton->data = DW_BLOCK (attr)->data;
14062 dlbaton->size = DW_BLOCK (attr)->size;
14063 dlbaton->per_cu = cu->per_cu;
14064
14065 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14066 }
7771576e 14067 else if (attr_form_is_ref (attr))
96408a79 14068 {
96408a79
SA
14069 struct dwarf2_cu *target_cu = cu;
14070 struct die_info *target_die;
14071
ac9ec31b 14072 target_die = follow_die_ref (die, attr, &target_cu);
518817b3 14073 gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
96408a79
SA
14074 if (die_is_declaration (target_die, target_cu))
14075 {
7d45c7c3 14076 const char *target_physname;
9112db09
JK
14077
14078 /* Prefer the mangled name; otherwise compute the demangled one. */
73b9be8b 14079 target_physname = dw2_linkage_name (target_die, target_cu);
7d45c7c3 14080 if (target_physname == NULL)
9112db09 14081 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79 14082 if (target_physname == NULL)
b98664d3 14083 complaint (_("DW_AT_call_target target DIE has invalid "
9d8780f0
SM
14084 "physname, for referencing DIE %s [in module %s]"),
14085 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79 14086 else
7d455152 14087 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
14088 }
14089 else
14090 {
14091 CORE_ADDR lowpc;
14092
14093 /* DW_AT_entry_pc should be preferred. */
3a2b436a 14094 if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
e385593e 14095 <= PC_BOUNDS_INVALID)
b98664d3 14096 complaint (_("DW_AT_call_target target DIE has invalid "
9d8780f0
SM
14097 "low pc, for referencing DIE %s [in module %s]"),
14098 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79 14099 else
3e29f34a
MR
14100 {
14101 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14102 SET_FIELD_PHYSADDR (call_site->target, lowpc);
14103 }
96408a79
SA
14104 }
14105 }
14106 else
b98664d3 14107 complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
9d8780f0
SM
14108 "block nor reference, for DIE %s [in module %s]"),
14109 sect_offset_str (die->sect_off), objfile_name (objfile));
96408a79
SA
14110
14111 call_site->per_cu = cu->per_cu;
14112
14113 for (child_die = die->child;
14114 child_die && child_die->tag;
14115 child_die = sibling_die (child_die))
14116 {
96408a79 14117 struct call_site_parameter *parameter;
1788b2d3 14118 struct attribute *loc, *origin;
96408a79 14119
216f72a1
JK
14120 if (child_die->tag != DW_TAG_call_site_parameter
14121 && child_die->tag != DW_TAG_GNU_call_site_parameter)
96408a79
SA
14122 {
14123 /* Already printed the complaint above. */
14124 continue;
14125 }
14126
14127 gdb_assert (call_site->parameter_count < nparams);
14128 parameter = &call_site->parameter[call_site->parameter_count];
14129
1788b2d3
JK
14130 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14131 specifies DW_TAG_formal_parameter. Value of the data assumed for the
216f72a1 14132 register is contained in DW_AT_call_value. */
96408a79 14133
24c5c679 14134 loc = dwarf2_attr (child_die, DW_AT_location, cu);
216f72a1
JK
14135 origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14136 if (origin == NULL)
14137 {
14138 /* This was a pre-DWARF-5 GNU extension alias
14139 for DW_AT_call_parameter. */
14140 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14141 }
7771576e 14142 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3 14143 {
1788b2d3 14144 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
9c541725
PA
14145
14146 sect_offset sect_off
14147 = (sect_offset) dwarf2_get_ref_die_offset (origin);
14148 if (!offset_in_cu_p (&cu->header, sect_off))
d76b7dbc
JK
14149 {
14150 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14151 binding can be done only inside one CU. Such referenced DIE
14152 therefore cannot be even moved to DW_TAG_partial_unit. */
b98664d3 14153 complaint (_("DW_AT_call_parameter offset is not in CU for "
9d8780f0
SM
14154 "DW_TAG_call_site child DIE %s [in module %s]"),
14155 sect_offset_str (child_die->sect_off),
9c541725 14156 objfile_name (objfile));
d76b7dbc
JK
14157 continue;
14158 }
9c541725
PA
14159 parameter->u.param_cu_off
14160 = (cu_offset) (sect_off - cu->header.sect_off);
1788b2d3
JK
14161 }
14162 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79 14163 {
b98664d3 14164 complaint (_("No DW_FORM_block* DW_AT_location for "
9d8780f0
SM
14165 "DW_TAG_call_site child DIE %s [in module %s]"),
14166 sect_offset_str (child_die->sect_off), objfile_name (objfile));
96408a79
SA
14167 continue;
14168 }
24c5c679 14169 else
96408a79 14170 {
24c5c679
JK
14171 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14172 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14173 if (parameter->u.dwarf_reg != -1)
14174 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14175 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14176 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14177 &parameter->u.fb_offset))
14178 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14179 else
14180 {
b98664d3 14181 complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
24c5c679 14182 "for DW_FORM_block* DW_AT_location is supported for "
9d8780f0 14183 "DW_TAG_call_site child DIE %s "
24c5c679 14184 "[in module %s]"),
9d8780f0 14185 sect_offset_str (child_die->sect_off),
9c541725 14186 objfile_name (objfile));
24c5c679
JK
14187 continue;
14188 }
96408a79
SA
14189 }
14190
216f72a1
JK
14191 attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14192 if (attr == NULL)
14193 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
96408a79
SA
14194 if (!attr_form_is_block (attr))
14195 {
b98664d3 14196 complaint (_("No DW_FORM_block* DW_AT_call_value for "
9d8780f0
SM
14197 "DW_TAG_call_site child DIE %s [in module %s]"),
14198 sect_offset_str (child_die->sect_off),
9c541725 14199 objfile_name (objfile));
96408a79
SA
14200 continue;
14201 }
14202 parameter->value = DW_BLOCK (attr)->data;
14203 parameter->value_size = DW_BLOCK (attr)->size;
14204
14205 /* Parameters are not pre-cleared by memset above. */
14206 parameter->data_value = NULL;
14207 parameter->data_value_size = 0;
14208 call_site->parameter_count++;
14209
216f72a1
JK
14210 attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14211 if (attr == NULL)
14212 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
96408a79
SA
14213 if (attr)
14214 {
14215 if (!attr_form_is_block (attr))
b98664d3 14216 complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
9d8780f0
SM
14217 "DW_TAG_call_site child DIE %s [in module %s]"),
14218 sect_offset_str (child_die->sect_off),
9c541725 14219 objfile_name (objfile));
96408a79
SA
14220 else
14221 {
14222 parameter->data_value = DW_BLOCK (attr)->data;
14223 parameter->data_value_size = DW_BLOCK (attr)->size;
14224 }
14225 }
14226 }
14227}
14228
71a3c369
TT
14229/* Helper function for read_variable. If DIE represents a virtual
14230 table, then return the type of the concrete object that is
14231 associated with the virtual table. Otherwise, return NULL. */
14232
14233static struct type *
14234rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14235{
14236 struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14237 if (attr == NULL)
14238 return NULL;
14239
14240 /* Find the type DIE. */
14241 struct die_info *type_die = NULL;
14242 struct dwarf2_cu *type_cu = cu;
14243
14244 if (attr_form_is_ref (attr))
14245 type_die = follow_die_ref (die, attr, &type_cu);
14246 if (type_die == NULL)
14247 return NULL;
14248
14249 if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14250 return NULL;
14251 return die_containing_type (type_die, type_cu);
14252}
14253
14254/* Read a variable (DW_TAG_variable) DIE and create a new symbol. */
14255
14256static void
14257read_variable (struct die_info *die, struct dwarf2_cu *cu)
14258{
14259 struct rust_vtable_symbol *storage = NULL;
14260
14261 if (cu->language == language_rust)
14262 {
14263 struct type *containing_type = rust_containing_type (die, cu);
14264
14265 if (containing_type != NULL)
14266 {
518817b3 14267 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
71a3c369
TT
14268
14269 storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14270 struct rust_vtable_symbol);
14271 initialize_objfile_symbol (storage);
14272 storage->concrete_type = containing_type;
cf724bc9 14273 storage->subclass = SYMBOL_RUST_VTABLE;
71a3c369
TT
14274 }
14275 }
14276
e4a62c65
TV
14277 struct symbol *res = new_symbol (die, NULL, cu, storage);
14278 struct attribute *abstract_origin
14279 = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14280 struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14281 if (res == NULL && loc && abstract_origin)
14282 {
14283 /* We have a variable without a name, but with a location and an abstract
14284 origin. This may be a concrete instance of an abstract variable
14285 referenced from an DW_OP_GNU_variable_value, so save it to find it back
14286 later. */
14287 struct dwarf2_cu *origin_cu = cu;
14288 struct die_info *origin_die
14289 = follow_die_ref (die, abstract_origin, &origin_cu);
14290 dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
3360b6e7 14291 dpo->abstract_to_concrete[origin_die->sect_off].push_back (die->sect_off);
e4a62c65 14292 }
71a3c369
TT
14293}
14294
43988095
JK
14295/* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14296 reading .debug_rnglists.
14297 Callback's type should be:
14298 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14299 Return true if the attributes are present and valid, otherwise,
14300 return false. */
14301
14302template <typename Callback>
14303static bool
14304dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14305 Callback &&callback)
14306{
ed2dc618 14307 struct dwarf2_per_objfile *dwarf2_per_objfile
518817b3 14308 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 14309 struct objfile *objfile = dwarf2_per_objfile->objfile;
43988095 14310 bfd *obfd = objfile->obfd;
43988095
JK
14311 /* Base address selection entry. */
14312 CORE_ADDR base;
14313 int found_base;
43988095 14314 const gdb_byte *buffer;
43988095
JK
14315 CORE_ADDR baseaddr;
14316 bool overflow = false;
14317
14318 found_base = cu->base_known;
14319 base = cu->base_address;
14320
14321 dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14322 if (offset >= dwarf2_per_objfile->rnglists.size)
14323 {
b98664d3 14324 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
43988095
JK
14325 offset);
14326 return false;
14327 }
14328 buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14329
14330 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14331
14332 while (1)
14333 {
7814882a
JK
14334 /* Initialize it due to a false compiler warning. */
14335 CORE_ADDR range_beginning = 0, range_end = 0;
43988095
JK
14336 const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14337 + dwarf2_per_objfile->rnglists.size);
14338 unsigned int bytes_read;
14339
14340 if (buffer == buf_end)
14341 {
14342 overflow = true;
14343 break;
14344 }
14345 const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14346 switch (rlet)
14347 {
14348 case DW_RLE_end_of_list:
14349 break;
14350 case DW_RLE_base_address:
14351 if (buffer + cu->header.addr_size > buf_end)
14352 {
14353 overflow = true;
14354 break;
14355 }
14356 base = read_address (obfd, buffer, cu, &bytes_read);
14357 found_base = 1;
14358 buffer += bytes_read;
14359 break;
14360 case DW_RLE_start_length:
14361 if (buffer + cu->header.addr_size > buf_end)
14362 {
14363 overflow = true;
14364 break;
14365 }
14366 range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14367 buffer += bytes_read;
14368 range_end = (range_beginning
14369 + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14370 buffer += bytes_read;
14371 if (buffer > buf_end)
14372 {
14373 overflow = true;
14374 break;
14375 }
14376 break;
14377 case DW_RLE_offset_pair:
14378 range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14379 buffer += bytes_read;
14380 if (buffer > buf_end)
14381 {
14382 overflow = true;
14383 break;
14384 }
14385 range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14386 buffer += bytes_read;
14387 if (buffer > buf_end)
14388 {
14389 overflow = true;
14390 break;
14391 }
14392 break;
14393 case DW_RLE_start_end:
14394 if (buffer + 2 * cu->header.addr_size > buf_end)
14395 {
14396 overflow = true;
14397 break;
14398 }
14399 range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14400 buffer += bytes_read;
14401 range_end = read_address (obfd, buffer, cu, &bytes_read);
14402 buffer += bytes_read;
14403 break;
14404 default:
b98664d3 14405 complaint (_("Invalid .debug_rnglists data (no base address)"));
43988095
JK
14406 return false;
14407 }
14408 if (rlet == DW_RLE_end_of_list || overflow)
14409 break;
14410 if (rlet == DW_RLE_base_address)
14411 continue;
14412
14413 if (!found_base)
14414 {
14415 /* We have no valid base address for the ranges
14416 data. */
b98664d3 14417 complaint (_("Invalid .debug_rnglists data (no base address)"));
43988095
JK
14418 return false;
14419 }
14420
14421 if (range_beginning > range_end)
14422 {
14423 /* Inverted range entries are invalid. */
b98664d3 14424 complaint (_("Invalid .debug_rnglists data (inverted range)"));
43988095
JK
14425 return false;
14426 }
14427
14428 /* Empty range entries have no effect. */
14429 if (range_beginning == range_end)
14430 continue;
14431
14432 range_beginning += base;
14433 range_end += base;
14434
14435 /* A not-uncommon case of bad debug info.
14436 Don't pollute the addrmap with bad data. */
14437 if (range_beginning + baseaddr == 0
14438 && !dwarf2_per_objfile->has_section_at_zero)
14439 {
b98664d3 14440 complaint (_(".debug_rnglists entry has start address of zero"
43988095
JK
14441 " [in module %s]"), objfile_name (objfile));
14442 continue;
14443 }
14444
14445 callback (range_beginning, range_end);
14446 }
14447
14448 if (overflow)
14449 {
b98664d3 14450 complaint (_("Offset %d is not terminated "
43988095
JK
14451 "for DW_AT_ranges attribute"),
14452 offset);
14453 return false;
14454 }
14455
14456 return true;
14457}
14458
14459/* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14460 Callback's type should be:
14461 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
5f46c5a5 14462 Return 1 if the attributes are present and valid, otherwise, return 0. */
43039443 14463
43988095 14464template <typename Callback>
43039443 14465static int
5f46c5a5 14466dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
43988095 14467 Callback &&callback)
43039443 14468{
ed2dc618 14469 struct dwarf2_per_objfile *dwarf2_per_objfile
518817b3 14470 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 14471 struct objfile *objfile = dwarf2_per_objfile->objfile;
43039443
JK
14472 struct comp_unit_head *cu_header = &cu->header;
14473 bfd *obfd = objfile->obfd;
14474 unsigned int addr_size = cu_header->addr_size;
14475 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14476 /* Base address selection entry. */
14477 CORE_ADDR base;
14478 int found_base;
14479 unsigned int dummy;
d521ce57 14480 const gdb_byte *buffer;
ff013f42 14481 CORE_ADDR baseaddr;
43039443 14482
43988095
JK
14483 if (cu_header->version >= 5)
14484 return dwarf2_rnglists_process (offset, cu, callback);
14485
d00adf39
DE
14486 found_base = cu->base_known;
14487 base = cu->base_address;
43039443 14488
be391dca 14489 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 14490 if (offset >= dwarf2_per_objfile->ranges.size)
43039443 14491 {
b98664d3 14492 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
43039443
JK
14493 offset);
14494 return 0;
14495 }
dce234bc 14496 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443 14497
e7030f15 14498 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 14499
43039443
JK
14500 while (1)
14501 {
14502 CORE_ADDR range_beginning, range_end;
14503
14504 range_beginning = read_address (obfd, buffer, cu, &dummy);
14505 buffer += addr_size;
14506 range_end = read_address (obfd, buffer, cu, &dummy);
14507 buffer += addr_size;
14508 offset += 2 * addr_size;
14509
14510 /* An end of list marker is a pair of zero addresses. */
14511 if (range_beginning == 0 && range_end == 0)
14512 /* Found the end of list entry. */
14513 break;
14514
14515 /* Each base address selection entry is a pair of 2 values.
14516 The first is the largest possible address, the second is
14517 the base address. Check for a base address here. */
14518 if ((range_beginning & mask) == mask)
14519 {
28d2bfb9
AB
14520 /* If we found the largest possible address, then we already
14521 have the base address in range_end. */
14522 base = range_end;
43039443
JK
14523 found_base = 1;
14524 continue;
14525 }
14526
14527 if (!found_base)
14528 {
14529 /* We have no valid base address for the ranges
14530 data. */
b98664d3 14531 complaint (_("Invalid .debug_ranges data (no base address)"));
43039443
JK
14532 return 0;
14533 }
14534
9277c30c
UW
14535 if (range_beginning > range_end)
14536 {
14537 /* Inverted range entries are invalid. */
b98664d3 14538 complaint (_("Invalid .debug_ranges data (inverted range)"));
9277c30c
UW
14539 return 0;
14540 }
14541
14542 /* Empty range entries have no effect. */
14543 if (range_beginning == range_end)
14544 continue;
14545
43039443
JK
14546 range_beginning += base;
14547 range_end += base;
14548
01093045
DE
14549 /* A not-uncommon case of bad debug info.
14550 Don't pollute the addrmap with bad data. */
14551 if (range_beginning + baseaddr == 0
14552 && !dwarf2_per_objfile->has_section_at_zero)
14553 {
b98664d3 14554 complaint (_(".debug_ranges entry has start address of zero"
4262abfb 14555 " [in module %s]"), objfile_name (objfile));
01093045
DE
14556 continue;
14557 }
14558
5f46c5a5
JK
14559 callback (range_beginning, range_end);
14560 }
14561
14562 return 1;
14563}
14564
14565/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14566 Return 1 if the attributes are present and valid, otherwise, return 0.
14567 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
14568
14569static int
14570dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14571 CORE_ADDR *high_return, struct dwarf2_cu *cu,
14572 struct partial_symtab *ranges_pst)
14573{
518817b3 14574 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
5f46c5a5
JK
14575 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14576 const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14577 SECT_OFF_TEXT (objfile));
14578 int low_set = 0;
14579 CORE_ADDR low = 0;
14580 CORE_ADDR high = 0;
14581 int retval;
14582
14583 retval = dwarf2_ranges_process (offset, cu,
14584 [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14585 {
9277c30c 14586 if (ranges_pst != NULL)
3e29f34a
MR
14587 {
14588 CORE_ADDR lowpc;
14589 CORE_ADDR highpc;
14590
79748972
TT
14591 lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14592 range_beginning + baseaddr)
14593 - baseaddr);
14594 highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14595 range_end + baseaddr)
14596 - baseaddr);
d320c2b5
TT
14597 addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
14598 lowpc, highpc - 1, ranges_pst);
3e29f34a 14599 }
ff013f42 14600
43039443
JK
14601 /* FIXME: This is recording everything as a low-high
14602 segment of consecutive addresses. We should have a
14603 data structure for discontiguous block ranges
14604 instead. */
14605 if (! low_set)
14606 {
14607 low = range_beginning;
14608 high = range_end;
14609 low_set = 1;
14610 }
14611 else
14612 {
14613 if (range_beginning < low)
14614 low = range_beginning;
14615 if (range_end > high)
14616 high = range_end;
14617 }
5f46c5a5
JK
14618 });
14619 if (!retval)
14620 return 0;
43039443
JK
14621
14622 if (! low_set)
14623 /* If the first entry is an end-of-list marker, the range
14624 describes an empty scope, i.e. no instructions. */
14625 return 0;
14626
14627 if (low_return)
14628 *low_return = low;
14629 if (high_return)
14630 *high_return = high;
14631 return 1;
14632}
14633
3a2b436a
JK
14634/* Get low and high pc attributes from a die. See enum pc_bounds_kind
14635 definition for the return value. *LOWPC and *HIGHPC are set iff
e385593e 14636 neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned. */
380bca97 14637
3a2b436a 14638static enum pc_bounds_kind
af34e669 14639dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
14640 CORE_ADDR *highpc, struct dwarf2_cu *cu,
14641 struct partial_symtab *pst)
c906108c 14642{
518817b3
SM
14643 struct dwarf2_per_objfile *dwarf2_per_objfile
14644 = cu->per_cu->dwarf2_per_objfile;
c906108c 14645 struct attribute *attr;
91da1414 14646 struct attribute *attr_high;
af34e669
DJ
14647 CORE_ADDR low = 0;
14648 CORE_ADDR high = 0;
e385593e 14649 enum pc_bounds_kind ret;
c906108c 14650
91da1414
MW
14651 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14652 if (attr_high)
af34e669 14653 {
e142c38c 14654 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 14655 if (attr)
91da1414 14656 {
31aa7e4e
JB
14657 low = attr_value_as_address (attr);
14658 high = attr_value_as_address (attr_high);
14659 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14660 high += low;
91da1414 14661 }
af34e669
DJ
14662 else
14663 /* Found high w/o low attribute. */
e385593e 14664 return PC_BOUNDS_INVALID;
af34e669
DJ
14665
14666 /* Found consecutive range of addresses. */
3a2b436a 14667 ret = PC_BOUNDS_HIGH_LOW;
af34e669 14668 }
c906108c 14669 else
af34e669 14670 {
e142c38c 14671 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
14672 if (attr != NULL)
14673 {
ab435259
DE
14674 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14675 We take advantage of the fact that DW_AT_ranges does not appear
14676 in DW_TAG_compile_unit of DWO files. */
14677 int need_ranges_base = die->tag != DW_TAG_compile_unit;
14678 unsigned int ranges_offset = (DW_UNSND (attr)
14679 + (need_ranges_base
14680 ? cu->ranges_base
14681 : 0));
2e3cf129 14682
af34e669 14683 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 14684 .debug_ranges section. */
2e3cf129 14685 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
e385593e 14686 return PC_BOUNDS_INVALID;
43039443 14687 /* Found discontinuous range of addresses. */
3a2b436a 14688 ret = PC_BOUNDS_RANGES;
af34e669 14689 }
e385593e
JK
14690 else
14691 return PC_BOUNDS_NOT_PRESENT;
af34e669 14692 }
c906108c 14693
48fbe735 14694 /* partial_die_info::read has also the strict LOW < HIGH requirement. */
9373cf26 14695 if (high <= low)
e385593e 14696 return PC_BOUNDS_INVALID;
c906108c
SS
14697
14698 /* When using the GNU linker, .gnu.linkonce. sections are used to
14699 eliminate duplicate copies of functions and vtables and such.
14700 The linker will arbitrarily choose one and discard the others.
14701 The AT_*_pc values for such functions refer to local labels in
14702 these sections. If the section from that file was discarded, the
14703 labels are not in the output, so the relocs get a value of 0.
14704 If this is a discarded function, mark the pc bounds as invalid,
14705 so that GDB will ignore it. */
72dca2f5 14706 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
e385593e 14707 return PC_BOUNDS_INVALID;
c906108c
SS
14708
14709 *lowpc = low;
96408a79
SA
14710 if (highpc)
14711 *highpc = high;
af34e669 14712 return ret;
c906108c
SS
14713}
14714
b084d499
JB
14715/* Assuming that DIE represents a subprogram DIE or a lexical block, get
14716 its low and high PC addresses. Do nothing if these addresses could not
14717 be determined. Otherwise, set LOWPC to the low address if it is smaller,
14718 and HIGHPC to the high address if greater than HIGHPC. */
14719
14720static void
14721dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14722 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14723 struct dwarf2_cu *cu)
14724{
14725 CORE_ADDR low, high;
14726 struct die_info *child = die->child;
14727
e385593e 14728 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
b084d499 14729 {
325fac50
PA
14730 *lowpc = std::min (*lowpc, low);
14731 *highpc = std::max (*highpc, high);
b084d499
JB
14732 }
14733
14734 /* If the language does not allow nested subprograms (either inside
14735 subprograms or lexical blocks), we're done. */
14736 if (cu->language != language_ada)
14737 return;
6e70227d 14738
b084d499
JB
14739 /* Check all the children of the given DIE. If it contains nested
14740 subprograms, then check their pc bounds. Likewise, we need to
14741 check lexical blocks as well, as they may also contain subprogram
14742 definitions. */
14743 while (child && child->tag)
14744 {
14745 if (child->tag == DW_TAG_subprogram
14746 || child->tag == DW_TAG_lexical_block)
14747 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14748 child = sibling_die (child);
14749 }
14750}
14751
fae299cd
DC
14752/* Get the low and high pc's represented by the scope DIE, and store
14753 them in *LOWPC and *HIGHPC. If the correct values can't be
14754 determined, set *LOWPC to -1 and *HIGHPC to 0. */
14755
14756static void
14757get_scope_pc_bounds (struct die_info *die,
14758 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14759 struct dwarf2_cu *cu)
14760{
14761 CORE_ADDR best_low = (CORE_ADDR) -1;
14762 CORE_ADDR best_high = (CORE_ADDR) 0;
14763 CORE_ADDR current_low, current_high;
14764
3a2b436a 14765 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
e385593e 14766 >= PC_BOUNDS_RANGES)
fae299cd
DC
14767 {
14768 best_low = current_low;
14769 best_high = current_high;
14770 }
14771 else
14772 {
14773 struct die_info *child = die->child;
14774
14775 while (child && child->tag)
14776 {
14777 switch (child->tag) {
14778 case DW_TAG_subprogram:
b084d499 14779 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
14780 break;
14781 case DW_TAG_namespace:
f55ee35c 14782 case DW_TAG_module:
fae299cd
DC
14783 /* FIXME: carlton/2004-01-16: Should we do this for
14784 DW_TAG_class_type/DW_TAG_structure_type, too? I think
14785 that current GCC's always emit the DIEs corresponding
14786 to definitions of methods of classes as children of a
14787 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14788 the DIEs giving the declarations, which could be
14789 anywhere). But I don't see any reason why the
14790 standards says that they have to be there. */
14791 get_scope_pc_bounds (child, &current_low, &current_high, cu);
14792
14793 if (current_low != ((CORE_ADDR) -1))
14794 {
325fac50
PA
14795 best_low = std::min (best_low, current_low);
14796 best_high = std::max (best_high, current_high);
fae299cd
DC
14797 }
14798 break;
14799 default:
0963b4bd 14800 /* Ignore. */
fae299cd
DC
14801 break;
14802 }
14803
14804 child = sibling_die (child);
14805 }
14806 }
14807
14808 *lowpc = best_low;
14809 *highpc = best_high;
14810}
14811
801e3a5b
JB
14812/* Record the address ranges for BLOCK, offset by BASEADDR, as given
14813 in DIE. */
380bca97 14814
801e3a5b
JB
14815static void
14816dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14817 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14818{
518817b3 14819 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3e29f34a 14820 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 14821 struct attribute *attr;
91da1414 14822 struct attribute *attr_high;
801e3a5b 14823
91da1414
MW
14824 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14825 if (attr_high)
801e3a5b 14826 {
801e3a5b
JB
14827 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14828 if (attr)
14829 {
31aa7e4e
JB
14830 CORE_ADDR low = attr_value_as_address (attr);
14831 CORE_ADDR high = attr_value_as_address (attr_high);
14832
14833 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14834 high += low;
9a619af0 14835
3e29f34a
MR
14836 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14837 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
c24bdb02 14838 cu->get_builder ()->record_block_range (block, low, high - 1);
801e3a5b
JB
14839 }
14840 }
14841
14842 attr = dwarf2_attr (die, DW_AT_ranges, cu);
14843 if (attr)
14844 {
ab435259
DE
14845 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14846 We take advantage of the fact that DW_AT_ranges does not appear
14847 in DW_TAG_compile_unit of DWO files. */
14848 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
14849
14850 /* The value of the DW_AT_ranges attribute is the offset of the
14851 address range list in the .debug_ranges section. */
ab435259
DE
14852 unsigned long offset = (DW_UNSND (attr)
14853 + (need_ranges_base ? cu->ranges_base : 0));
801e3a5b 14854
2d5f09ec 14855 std::vector<blockrange> blockvec;
5f46c5a5
JK
14856 dwarf2_ranges_process (offset, cu,
14857 [&] (CORE_ADDR start, CORE_ADDR end)
14858 {
58fdfd2c
JK
14859 start += baseaddr;
14860 end += baseaddr;
5f46c5a5
JK
14861 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14862 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
c24bdb02 14863 cu->get_builder ()->record_block_range (block, start, end - 1);
2d5f09ec 14864 blockvec.emplace_back (start, end);
5f46c5a5 14865 });
2d5f09ec
KB
14866
14867 BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
801e3a5b
JB
14868 }
14869}
14870
685b1105
JK
14871/* Check whether the producer field indicates either of GCC < 4.6, or the
14872 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 14873
685b1105
JK
14874static void
14875check_producer (struct dwarf2_cu *cu)
60d5a603 14876{
38360086 14877 int major, minor;
60d5a603
JK
14878
14879 if (cu->producer == NULL)
14880 {
14881 /* For unknown compilers expect their behavior is DWARF version
14882 compliant.
14883
14884 GCC started to support .debug_types sections by -gdwarf-4 since
14885 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
14886 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14887 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14888 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 14889 }
b1ffba5a 14890 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 14891 {
38360086
MW
14892 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14893 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 14894 }
5230b05a 14895 else if (producer_is_icc (cu->producer, &major, &minor))
eb77c9df
AB
14896 {
14897 cu->producer_is_icc = true;
14898 cu->producer_is_icc_lt_14 = major < 14;
14899 }
c258c396
JD
14900 else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14901 cu->producer_is_codewarrior = true;
685b1105
JK
14902 else
14903 {
14904 /* For other non-GCC compilers, expect their behavior is DWARF version
14905 compliant. */
60d5a603
JK
14906 }
14907
9068261f 14908 cu->checked_producer = true;
685b1105 14909}
ba919b58 14910
685b1105
JK
14911/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14912 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14913 during 4.6.0 experimental. */
14914
9068261f 14915static bool
685b1105
JK
14916producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14917{
14918 if (!cu->checked_producer)
14919 check_producer (cu);
14920
14921 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
14922}
14923
c258c396
JD
14924
14925/* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14926 with incorrect is_stmt attributes. */
14927
14928static bool
14929producer_is_codewarrior (struct dwarf2_cu *cu)
14930{
14931 if (!cu->checked_producer)
14932 check_producer (cu);
14933
14934 return cu->producer_is_codewarrior;
14935}
14936
60d5a603
JK
14937/* Return the default accessibility type if it is not overriden by
14938 DW_AT_accessibility. */
14939
14940static enum dwarf_access_attribute
14941dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14942{
14943 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14944 {
14945 /* The default DWARF 2 accessibility for members is public, the default
14946 accessibility for inheritance is private. */
14947
14948 if (die->tag != DW_TAG_inheritance)
14949 return DW_ACCESS_public;
14950 else
14951 return DW_ACCESS_private;
14952 }
14953 else
14954 {
14955 /* DWARF 3+ defines the default accessibility a different way. The same
14956 rules apply now for DW_TAG_inheritance as for the members and it only
14957 depends on the container kind. */
14958
14959 if (die->parent->tag == DW_TAG_class_type)
14960 return DW_ACCESS_private;
14961 else
14962 return DW_ACCESS_public;
14963 }
14964}
14965
74ac6d43
TT
14966/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
14967 offset. If the attribute was not found return 0, otherwise return
14968 1. If it was found but could not properly be handled, set *OFFSET
14969 to 0. */
14970
14971static int
14972handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14973 LONGEST *offset)
14974{
14975 struct attribute *attr;
14976
14977 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14978 if (attr != NULL)
14979 {
14980 *offset = 0;
14981
14982 /* Note that we do not check for a section offset first here.
14983 This is because DW_AT_data_member_location is new in DWARF 4,
14984 so if we see it, we can assume that a constant form is really
14985 a constant and not a section offset. */
14986 if (attr_form_is_constant (attr))
14987 *offset = dwarf2_get_attr_constant_value (attr, 0);
14988 else if (attr_form_is_section_offset (attr))
14989 dwarf2_complex_location_expr_complaint ();
14990 else if (attr_form_is_block (attr))
14991 *offset = decode_locdesc (DW_BLOCK (attr), cu);
14992 else
14993 dwarf2_complex_location_expr_complaint ();
14994
14995 return 1;
14996 }
14997
14998 return 0;
14999}
15000
c906108c
SS
15001/* Add an aggregate field to the field list. */
15002
15003static void
107d2387 15004dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 15005 struct dwarf2_cu *cu)
6e70227d 15006{
518817b3 15007 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
5e2b427d 15008 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
15009 struct nextfield *new_field;
15010 struct attribute *attr;
15011 struct field *fp;
15d034d0 15012 const char *fieldname = "";
c906108c 15013
7d0ccb61
DJ
15014 if (die->tag == DW_TAG_inheritance)
15015 {
be2daae6
TT
15016 fip->baseclasses.emplace_back ();
15017 new_field = &fip->baseclasses.back ();
7d0ccb61
DJ
15018 }
15019 else
15020 {
be2daae6
TT
15021 fip->fields.emplace_back ();
15022 new_field = &fip->fields.back ();
7d0ccb61 15023 }
be2daae6 15024
c906108c
SS
15025 fip->nfields++;
15026
e142c38c 15027 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
15028 if (attr)
15029 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
15030 else
15031 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
15032 if (new_field->accessibility != DW_ACCESS_public)
15033 fip->non_public_fields = 1;
60d5a603 15034
e142c38c 15035 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
15036 if (attr)
15037 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
15038 else
15039 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
15040
15041 fp = &new_field->field;
a9a9bd0f 15042
e142c38c 15043 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 15044 {
74ac6d43
TT
15045 LONGEST offset;
15046
a9a9bd0f 15047 /* Data member other than a C++ static data member. */
6e70227d 15048
c906108c 15049 /* Get type of field. */
e7c27a73 15050 fp->type = die_type (die, cu);
c906108c 15051
d6a843b5 15052 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 15053
c906108c 15054 /* Get bit size of field (zero if none). */
e142c38c 15055 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
15056 if (attr)
15057 {
15058 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15059 }
15060 else
15061 {
15062 FIELD_BITSIZE (*fp) = 0;
15063 }
15064
15065 /* Get bit offset of field. */
74ac6d43
TT
15066 if (handle_data_member_location (die, cu, &offset))
15067 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 15068 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
15069 if (attr)
15070 {
5e2b427d 15071 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
15072 {
15073 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
15074 additional bit offset from the MSB of the containing
15075 anonymous object to the MSB of the field. We don't
15076 have to do anything special since we don't need to
15077 know the size of the anonymous object. */
f41f5e61 15078 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
15079 }
15080 else
15081 {
15082 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
15083 MSB of the anonymous object, subtract off the number of
15084 bits from the MSB of the field to the MSB of the
15085 object, and then subtract off the number of bits of
15086 the field itself. The result is the bit offset of
15087 the LSB of the field. */
c906108c
SS
15088 int anonymous_size;
15089 int bit_offset = DW_UNSND (attr);
15090
e142c38c 15091 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
15092 if (attr)
15093 {
15094 /* The size of the anonymous object containing
15095 the bit field is explicit, so use the
15096 indicated size (in bytes). */
15097 anonymous_size = DW_UNSND (attr);
15098 }
15099 else
15100 {
15101 /* The size of the anonymous object containing
15102 the bit field must be inferred from the type
15103 attribute of the data member containing the
15104 bit field. */
15105 anonymous_size = TYPE_LENGTH (fp->type);
15106 }
f41f5e61
PA
15107 SET_FIELD_BITPOS (*fp,
15108 (FIELD_BITPOS (*fp)
15109 + anonymous_size * bits_per_byte
15110 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
15111 }
15112 }
da5b30da
AA
15113 attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15114 if (attr != NULL)
15115 SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15116 + dwarf2_get_attr_constant_value (attr, 0)));
c906108c
SS
15117
15118 /* Get name of field. */
39cbfefa
DJ
15119 fieldname = dwarf2_name (die, cu);
15120 if (fieldname == NULL)
15121 fieldname = "";
d8151005
DJ
15122
15123 /* The name is already allocated along with this objfile, so we don't
15124 need to duplicate it for the type. */
15125 fp->name = fieldname;
c906108c
SS
15126
15127 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 15128 pointer or virtual base class pointer) to private. */
e142c38c 15129 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 15130 {
d48cc9dd 15131 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
15132 new_field->accessibility = DW_ACCESS_private;
15133 fip->non_public_fields = 1;
15134 }
15135 }
a9a9bd0f 15136 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 15137 {
a9a9bd0f
DC
15138 /* C++ static member. */
15139
15140 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15141 is a declaration, but all versions of G++ as of this writing
15142 (so through at least 3.2.1) incorrectly generate
15143 DW_TAG_variable tags. */
6e70227d 15144
ff355380 15145 const char *physname;
c906108c 15146
a9a9bd0f 15147 /* Get name of field. */
39cbfefa
DJ
15148 fieldname = dwarf2_name (die, cu);
15149 if (fieldname == NULL)
c906108c
SS
15150 return;
15151
254e6b9e 15152 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
15153 if (attr
15154 /* Only create a symbol if this is an external value.
15155 new_symbol checks this and puts the value in the global symbol
15156 table, which we want. If it is not external, new_symbol
15157 will try to put the value in cu->list_in_scope which is wrong. */
15158 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
15159 {
15160 /* A static const member, not much different than an enum as far as
15161 we're concerned, except that we can support more types. */
15162 new_symbol (die, NULL, cu);
15163 }
15164
2df3850c 15165 /* Get physical name. */
ff355380 15166 physname = dwarf2_physname (fieldname, die, cu);
c906108c 15167
d8151005
DJ
15168 /* The name is already allocated along with this objfile, so we don't
15169 need to duplicate it for the type. */
15170 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 15171 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 15172 FIELD_NAME (*fp) = fieldname;
c906108c
SS
15173 }
15174 else if (die->tag == DW_TAG_inheritance)
15175 {
74ac6d43 15176 LONGEST offset;
d4b96c9a 15177
74ac6d43
TT
15178 /* C++ base class field. */
15179 if (handle_data_member_location (die, cu, &offset))
15180 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 15181 FIELD_BITSIZE (*fp) = 0;
e7c27a73 15182 FIELD_TYPE (*fp) = die_type (die, cu);
a737d952 15183 FIELD_NAME (*fp) = TYPE_NAME (fp->type);
c906108c 15184 }
2ddeaf8a
TT
15185 else if (die->tag == DW_TAG_variant_part)
15186 {
15187 /* process_structure_scope will treat this DIE as a union. */
15188 process_structure_scope (die, cu);
15189
15190 /* The variant part is relative to the start of the enclosing
15191 structure. */
15192 SET_FIELD_BITPOS (*fp, 0);
15193 fp->type = get_die_type (die, cu);
15194 fp->artificial = 1;
15195 fp->name = "<<variant>>";
c8c81635
TT
15196
15197 /* Normally a DW_TAG_variant_part won't have a size, but our
15198 representation requires one, so set it to the maximum of the
15199 child sizes. */
15200 if (TYPE_LENGTH (fp->type) == 0)
15201 {
15202 unsigned max = 0;
15203 for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15204 if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15205 max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15206 TYPE_LENGTH (fp->type) = max;
15207 }
2ddeaf8a
TT
15208 }
15209 else
15210 gdb_assert_not_reached ("missing case in dwarf2_add_field");
c906108c
SS
15211}
15212
883fd55a
KS
15213/* Can the type given by DIE define another type? */
15214
15215static bool
15216type_can_define_types (const struct die_info *die)
15217{
15218 switch (die->tag)
15219 {
15220 case DW_TAG_typedef:
15221 case DW_TAG_class_type:
15222 case DW_TAG_structure_type:
15223 case DW_TAG_union_type:
15224 case DW_TAG_enumeration_type:
15225 return true;
15226
15227 default:
15228 return false;
15229 }
15230}
15231
15232/* Add a type definition defined in the scope of the FIP's class. */
98751a41
JK
15233
15234static void
883fd55a
KS
15235dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15236 struct dwarf2_cu *cu)
6e70227d 15237{
be2daae6
TT
15238 struct decl_field fp;
15239 memset (&fp, 0, sizeof (fp));
98751a41 15240
883fd55a 15241 gdb_assert (type_can_define_types (die));
98751a41 15242
883fd55a 15243 /* Get name of field. NULL is okay here, meaning an anonymous type. */
be2daae6
TT
15244 fp.name = dwarf2_name (die, cu);
15245 fp.type = read_type_die (die, cu);
98751a41 15246
c191a687
KS
15247 /* Save accessibility. */
15248 enum dwarf_access_attribute accessibility;
15249 struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15250 if (attr != NULL)
15251 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15252 else
15253 accessibility = dwarf2_default_access_attribute (die, cu);
15254 switch (accessibility)
15255 {
15256 case DW_ACCESS_public:
15257 /* The assumed value if neither private nor protected. */
15258 break;
15259 case DW_ACCESS_private:
be2daae6 15260 fp.is_private = 1;
c191a687
KS
15261 break;
15262 case DW_ACCESS_protected:
be2daae6 15263 fp.is_protected = 1;
c191a687
KS
15264 break;
15265 default:
b98664d3 15266 complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
c191a687
KS
15267 }
15268
883fd55a 15269 if (die->tag == DW_TAG_typedef)
be2daae6 15270 fip->typedef_field_list.push_back (fp);
883fd55a 15271 else
be2daae6 15272 fip->nested_types_list.push_back (fp);
98751a41
JK
15273}
15274
c906108c
SS
15275/* Create the vector of fields, and attach it to the type. */
15276
15277static void
fba45db2 15278dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 15279 struct dwarf2_cu *cu)
c906108c
SS
15280{
15281 int nfields = fip->nfields;
15282
15283 /* Record the field count, allocate space for the array of fields,
15284 and create blank accessibility bitfields if necessary. */
15285 TYPE_NFIELDS (type) = nfields;
15286 TYPE_FIELDS (type) = (struct field *)
be2daae6 15287 TYPE_ZALLOC (type, sizeof (struct field) * nfields);
c906108c 15288
b4ba55a1 15289 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
15290 {
15291 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15292
15293 TYPE_FIELD_PRIVATE_BITS (type) =
15294 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15295 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15296
15297 TYPE_FIELD_PROTECTED_BITS (type) =
15298 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15299 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15300
774b6a14
TT
15301 TYPE_FIELD_IGNORE_BITS (type) =
15302 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15303 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
15304 }
15305
15306 /* If the type has baseclasses, allocate and clear a bit vector for
15307 TYPE_FIELD_VIRTUAL_BITS. */
be2daae6 15308 if (!fip->baseclasses.empty () && cu->language != language_ada)
c906108c 15309 {
be2daae6 15310 int num_bytes = B_BYTES (fip->baseclasses.size ());
fe1b8b76 15311 unsigned char *pointer;
c906108c
SS
15312
15313 ALLOCATE_CPLUS_STRUCT_TYPE (type);
224c3ddb 15314 pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
fe1b8b76 15315 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
be2daae6
TT
15316 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15317 TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
c906108c
SS
15318 }
15319
2ddeaf8a
TT
15320 if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15321 {
15322 struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15323
be2daae6 15324 for (int index = 0; index < nfields; ++index)
2ddeaf8a 15325 {
be2daae6
TT
15326 struct nextfield &field = fip->fields[index];
15327
15328 if (field.variant.is_discriminant)
2ddeaf8a 15329 di->discriminant_index = index;
be2daae6 15330 else if (field.variant.default_branch)
2ddeaf8a
TT
15331 di->default_index = index;
15332 else
be2daae6 15333 di->discriminants[index] = field.variant.discriminant_value;
2ddeaf8a
TT
15334 }
15335 }
15336
be2daae6
TT
15337 /* Copy the saved-up fields into the field vector. */
15338 for (int i = 0; i < nfields; ++i)
c906108c 15339 {
be2daae6
TT
15340 struct nextfield &field
15341 = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15342 : fip->fields[i - fip->baseclasses.size ()]);
7d0ccb61 15343
be2daae6
TT
15344 TYPE_FIELD (type, i) = field.field;
15345 switch (field.accessibility)
c906108c 15346 {
c5aa993b 15347 case DW_ACCESS_private:
b4ba55a1 15348 if (cu->language != language_ada)
be2daae6 15349 SET_TYPE_FIELD_PRIVATE (type, i);
c5aa993b 15350 break;
c906108c 15351
c5aa993b 15352 case DW_ACCESS_protected:
b4ba55a1 15353 if (cu->language != language_ada)
be2daae6 15354 SET_TYPE_FIELD_PROTECTED (type, i);
c5aa993b 15355 break;
c906108c 15356
c5aa993b
JM
15357 case DW_ACCESS_public:
15358 break;
c906108c 15359
c5aa993b
JM
15360 default:
15361 /* Unknown accessibility. Complain and treat it as public. */
15362 {
b98664d3 15363 complaint (_("unsupported accessibility %d"),
be2daae6 15364 field.accessibility);
c5aa993b
JM
15365 }
15366 break;
c906108c 15367 }
be2daae6 15368 if (i < fip->baseclasses.size ())
c906108c 15369 {
be2daae6 15370 switch (field.virtuality)
c906108c 15371 {
c5aa993b
JM
15372 case DW_VIRTUALITY_virtual:
15373 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 15374 if (cu->language == language_ada)
a73c6dcd 15375 error (_("unexpected virtuality in component of Ada type"));
be2daae6 15376 SET_TYPE_FIELD_VIRTUAL (type, i);
c5aa993b 15377 break;
c906108c
SS
15378 }
15379 }
c906108c
SS
15380 }
15381}
15382
7d27a96d
TT
15383/* Return true if this member function is a constructor, false
15384 otherwise. */
15385
15386static int
15387dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15388{
15389 const char *fieldname;
fe978cb0 15390 const char *type_name;
7d27a96d
TT
15391 int len;
15392
15393 if (die->parent == NULL)
15394 return 0;
15395
15396 if (die->parent->tag != DW_TAG_structure_type
15397 && die->parent->tag != DW_TAG_union_type
15398 && die->parent->tag != DW_TAG_class_type)
15399 return 0;
15400
15401 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
15402 type_name = dwarf2_name (die->parent, cu);
15403 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
15404 return 0;
15405
15406 len = strlen (fieldname);
fe978cb0
PA
15407 return (strncmp (fieldname, type_name, len) == 0
15408 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
15409}
15410
c906108c
SS
15411/* Add a member function to the proper fieldlist. */
15412
15413static void
107d2387 15414dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 15415 struct type *type, struct dwarf2_cu *cu)
c906108c 15416{
518817b3 15417 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 15418 struct attribute *attr;
c906108c 15419 int i;
be2daae6 15420 struct fnfieldlist *flp = nullptr;
c906108c 15421 struct fn_field *fnp;
15d034d0 15422 const char *fieldname;
f792889a 15423 struct type *this_type;
60d5a603 15424 enum dwarf_access_attribute accessibility;
c906108c 15425
b4ba55a1 15426 if (cu->language == language_ada)
a73c6dcd 15427 error (_("unexpected member function in Ada type"));
b4ba55a1 15428
2df3850c 15429 /* Get name of member function. */
39cbfefa
DJ
15430 fieldname = dwarf2_name (die, cu);
15431 if (fieldname == NULL)
2df3850c 15432 return;
c906108c 15433
c906108c 15434 /* Look up member function name in fieldlist. */
be2daae6 15435 for (i = 0; i < fip->fnfieldlists.size (); i++)
c906108c 15436 {
27bfe10e 15437 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
be2daae6
TT
15438 {
15439 flp = &fip->fnfieldlists[i];
15440 break;
15441 }
c906108c
SS
15442 }
15443
be2daae6
TT
15444 /* Create a new fnfieldlist if necessary. */
15445 if (flp == nullptr)
c906108c 15446 {
be2daae6
TT
15447 fip->fnfieldlists.emplace_back ();
15448 flp = &fip->fnfieldlists.back ();
c906108c 15449 flp->name = fieldname;
be2daae6 15450 i = fip->fnfieldlists.size () - 1;
c906108c
SS
15451 }
15452
be2daae6
TT
15453 /* Create a new member function field and add it to the vector of
15454 fnfieldlists. */
15455 flp->fnfields.emplace_back ();
15456 fnp = &flp->fnfields.back ();
3da10d80
KS
15457
15458 /* Delay processing of the physname until later. */
9c37b5ae 15459 if (cu->language == language_cplus)
be2daae6
TT
15460 add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15461 die, cu);
3da10d80
KS
15462 else
15463 {
1d06ead6 15464 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
15465 fnp->physname = physname ? physname : "";
15466 }
15467
c906108c 15468 fnp->type = alloc_type (objfile);
f792889a
DJ
15469 this_type = read_type_die (die, cu);
15470 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 15471 {
f792889a 15472 int nparams = TYPE_NFIELDS (this_type);
c906108c 15473
f792889a 15474 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
15475 of the method itself (TYPE_CODE_METHOD). */
15476 smash_to_method_type (fnp->type, type,
f792889a
DJ
15477 TYPE_TARGET_TYPE (this_type),
15478 TYPE_FIELDS (this_type),
15479 TYPE_NFIELDS (this_type),
15480 TYPE_VARARGS (this_type));
c906108c
SS
15481
15482 /* Handle static member functions.
c5aa993b 15483 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
15484 member functions. G++ helps GDB by marking the first
15485 parameter for non-static member functions (which is the this
15486 pointer) as artificial. We obtain this information from
15487 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 15488 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
15489 fnp->voffset = VOFFSET_STATIC;
15490 }
15491 else
b98664d3 15492 complaint (_("member function type missing for '%s'"),
3da10d80 15493 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
15494
15495 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 15496 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 15497 fnp->fcontext = die_containing_type (die, cu);
c906108c 15498
3e43a32a
MS
15499 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15500 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
15501
15502 /* Get accessibility. */
e142c38c 15503 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 15504 if (attr)
aead7601 15505 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
60d5a603
JK
15506 else
15507 accessibility = dwarf2_default_access_attribute (die, cu);
15508 switch (accessibility)
c906108c 15509 {
60d5a603
JK
15510 case DW_ACCESS_private:
15511 fnp->is_private = 1;
15512 break;
15513 case DW_ACCESS_protected:
15514 fnp->is_protected = 1;
15515 break;
c906108c
SS
15516 }
15517
b02dede2 15518 /* Check for artificial methods. */
e142c38c 15519 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
15520 if (attr && DW_UNSND (attr) != 0)
15521 fnp->is_artificial = 1;
15522
7d27a96d
TT
15523 fnp->is_constructor = dwarf2_is_constructor (die, cu);
15524
0d564a31 15525 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
15526 function. For older versions of GCC, this is an offset in the
15527 appropriate virtual table, as specified by DW_AT_containing_type.
15528 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
15529 to the object address. */
15530
e142c38c 15531 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 15532 if (attr)
8e19ed76 15533 {
aec5aa8b 15534 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 15535 {
aec5aa8b
TT
15536 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15537 {
15538 /* Old-style GCC. */
15539 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15540 }
15541 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15542 || (DW_BLOCK (attr)->size > 1
15543 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15544 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15545 {
aec5aa8b
TT
15546 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15547 if ((fnp->voffset % cu->header.addr_size) != 0)
15548 dwarf2_complex_location_expr_complaint ();
15549 else
15550 fnp->voffset /= cu->header.addr_size;
15551 fnp->voffset += 2;
15552 }
15553 else
15554 dwarf2_complex_location_expr_complaint ();
15555
15556 if (!fnp->fcontext)
7e993ebf
KS
15557 {
15558 /* If there is no `this' field and no DW_AT_containing_type,
15559 we cannot actually find a base class context for the
15560 vtable! */
15561 if (TYPE_NFIELDS (this_type) == 0
15562 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15563 {
b98664d3 15564 complaint (_("cannot determine context for virtual member "
9d8780f0
SM
15565 "function \"%s\" (offset %s)"),
15566 fieldname, sect_offset_str (die->sect_off));
7e993ebf
KS
15567 }
15568 else
15569 {
15570 fnp->fcontext
15571 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15572 }
15573 }
aec5aa8b 15574 }
3690dd37 15575 else if (attr_form_is_section_offset (attr))
8e19ed76 15576 {
4d3c2250 15577 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15578 }
15579 else
15580 {
4d3c2250
KB
15581 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15582 fieldname);
8e19ed76 15583 }
0d564a31 15584 }
d48cc9dd
DJ
15585 else
15586 {
15587 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15588 if (attr && DW_UNSND (attr))
15589 {
15590 /* GCC does this, as of 2008-08-25; PR debug/37237. */
b98664d3 15591 complaint (_("Member function \"%s\" (offset %s) is virtual "
3e43a32a 15592 "but the vtable offset is not specified"),
9d8780f0 15593 fieldname, sect_offset_str (die->sect_off));
9655fd1a 15594 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
15595 TYPE_CPLUS_DYNAMIC (type) = 1;
15596 }
15597 }
c906108c
SS
15598}
15599
15600/* Create the vector of member function fields, and attach it to the type. */
15601
15602static void
fba45db2 15603dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 15604 struct dwarf2_cu *cu)
c906108c 15605{
b4ba55a1 15606 if (cu->language == language_ada)
a73c6dcd 15607 error (_("unexpected member functions in Ada type"));
b4ba55a1 15608
c906108c
SS
15609 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15610 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
be2daae6
TT
15611 TYPE_ALLOC (type,
15612 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
c906108c 15613
be2daae6 15614 for (int i = 0; i < fip->fnfieldlists.size (); i++)
c906108c 15615 {
be2daae6 15616 struct fnfieldlist &nf = fip->fnfieldlists[i];
c906108c 15617 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
c906108c 15618
be2daae6
TT
15619 TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15620 TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
c906108c 15621 fn_flp->fn_fields = (struct fn_field *)
be2daae6
TT
15622 TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15623
15624 for (int k = 0; k < nf.fnfields.size (); ++k)
15625 fn_flp->fn_fields[k] = nf.fnfields[k];
c906108c
SS
15626 }
15627
be2daae6 15628 TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
c906108c
SS
15629}
15630
1168df01
JB
15631/* Returns non-zero if NAME is the name of a vtable member in CU's
15632 language, zero otherwise. */
15633static int
15634is_vtable_name (const char *name, struct dwarf2_cu *cu)
15635{
15636 static const char vptr[] = "_vptr";
15637
9c37b5ae
TT
15638 /* Look for the C++ form of the vtable. */
15639 if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
1168df01
JB
15640 return 1;
15641
15642 return 0;
15643}
15644
c0dd20ea 15645/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
15646 functions, with the ABI-specified layout. If TYPE describes
15647 such a structure, smash it into a member function type.
61049d3b
DJ
15648
15649 GCC shouldn't do this; it should just output pointer to member DIEs.
15650 This is GCC PR debug/28767. */
c0dd20ea 15651
0b92b5bb
TT
15652static void
15653quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 15654{
09e2d7c7 15655 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
15656
15657 /* Check for a structure with no name and two children. */
0b92b5bb
TT
15658 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15659 return;
c0dd20ea
DJ
15660
15661 /* Check for __pfn and __delta members. */
0b92b5bb
TT
15662 if (TYPE_FIELD_NAME (type, 0) == NULL
15663 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15664 || TYPE_FIELD_NAME (type, 1) == NULL
15665 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15666 return;
c0dd20ea
DJ
15667
15668 /* Find the type of the method. */
0b92b5bb 15669 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
15670 if (pfn_type == NULL
15671 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15672 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 15673 return;
c0dd20ea
DJ
15674
15675 /* Look for the "this" argument. */
15676 pfn_type = TYPE_TARGET_TYPE (pfn_type);
15677 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 15678 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 15679 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 15680 return;
c0dd20ea 15681
09e2d7c7 15682 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 15683 new_type = alloc_type (objfile);
09e2d7c7 15684 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
15685 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15686 TYPE_VARARGS (pfn_type));
0b92b5bb 15687 smash_to_methodptr_type (type, new_type);
c0dd20ea 15688}
1168df01 15689
2b4424c3
TT
15690/* If the DIE has a DW_AT_alignment attribute, return its value, doing
15691 appropriate error checking and issuing complaints if there is a
15692 problem. */
15693
15694static ULONGEST
15695get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15696{
15697 struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15698
15699 if (attr == nullptr)
15700 return 0;
15701
15702 if (!attr_form_is_constant (attr))
15703 {
b98664d3 15704 complaint (_("DW_AT_alignment must have constant form"
2b4424c3
TT
15705 " - DIE at %s [in module %s]"),
15706 sect_offset_str (die->sect_off),
15707 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15708 return 0;
15709 }
15710
15711 ULONGEST align;
15712 if (attr->form == DW_FORM_sdata)
15713 {
15714 LONGEST val = DW_SND (attr);
15715 if (val < 0)
15716 {
b98664d3 15717 complaint (_("DW_AT_alignment value must not be negative"
2b4424c3
TT
15718 " - DIE at %s [in module %s]"),
15719 sect_offset_str (die->sect_off),
15720 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15721 return 0;
15722 }
15723 align = val;
15724 }
15725 else
15726 align = DW_UNSND (attr);
15727
15728 if (align == 0)
15729 {
b98664d3 15730 complaint (_("DW_AT_alignment value must not be zero"
2b4424c3
TT
15731 " - DIE at %s [in module %s]"),
15732 sect_offset_str (die->sect_off),
15733 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15734 return 0;
15735 }
15736 if ((align & (align - 1)) != 0)
15737 {
b98664d3 15738 complaint (_("DW_AT_alignment value must be a power of 2"
2b4424c3
TT
15739 " - DIE at %s [in module %s]"),
15740 sect_offset_str (die->sect_off),
15741 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15742 return 0;
15743 }
15744
15745 return align;
15746}
15747
15748/* If the DIE has a DW_AT_alignment attribute, use its value to set
15749 the alignment for TYPE. */
15750
15751static void
15752maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15753 struct type *type)
15754{
15755 if (!set_type_align (type, get_alignment (cu, die)))
b98664d3 15756 complaint (_("DW_AT_alignment value too large"
2b4424c3
TT
15757 " - DIE at %s [in module %s]"),
15758 sect_offset_str (die->sect_off),
15759 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15760}
685b1105 15761
c906108c 15762/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
15763 (definition) to create a type for the structure or union. Fill in
15764 the type's name and general properties; the members will not be
83655187
DE
15765 processed until process_structure_scope. A symbol table entry for
15766 the type will also not be done until process_structure_scope (assuming
15767 the type has a name).
c906108c 15768
c767944b
DJ
15769 NOTE: we need to call these functions regardless of whether or not the
15770 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 15771 structure or union. This gets the type entered into our set of
83655187 15772 user defined types. */
c906108c 15773
f792889a 15774static struct type *
134d01f1 15775read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 15776{
518817b3 15777 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c
SS
15778 struct type *type;
15779 struct attribute *attr;
15d034d0 15780 const char *name;
c906108c 15781
348e048f
DE
15782 /* If the definition of this type lives in .debug_types, read that type.
15783 Don't follow DW_AT_specification though, that will take us back up
15784 the chain and we want to go down. */
45e58e77 15785 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
15786 if (attr)
15787 {
ac9ec31b 15788 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 15789
ac9ec31b 15790 /* The type's CU may not be the same as CU.
02142a6c 15791 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
15792 return set_die_type (die, type, cu);
15793 }
15794
c0dd20ea 15795 type = alloc_type (objfile);
c906108c 15796 INIT_CPLUS_SPECIFIC (type);
93311388 15797
39cbfefa
DJ
15798 name = dwarf2_name (die, cu);
15799 if (name != NULL)
c906108c 15800 {
987504bb 15801 if (cu->language == language_cplus
c44af4eb
TT
15802 || cu->language == language_d
15803 || cu->language == language_rust)
63d06c5c 15804 {
15d034d0 15805 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
15806
15807 /* dwarf2_full_name might have already finished building the DIE's
15808 type. If so, there is no need to continue. */
15809 if (get_die_type (die, cu) != NULL)
15810 return get_die_type (die, cu);
15811
e86ca25f 15812 TYPE_NAME (type) = full_name;
63d06c5c
DC
15813 }
15814 else
15815 {
d8151005
DJ
15816 /* The name is already allocated along with this objfile, so
15817 we don't need to duplicate it for the type. */
e86ca25f 15818 TYPE_NAME (type) = name;
63d06c5c 15819 }
c906108c
SS
15820 }
15821
15822 if (die->tag == DW_TAG_structure_type)
15823 {
15824 TYPE_CODE (type) = TYPE_CODE_STRUCT;
15825 }
15826 else if (die->tag == DW_TAG_union_type)
15827 {
15828 TYPE_CODE (type) = TYPE_CODE_UNION;
15829 }
2ddeaf8a
TT
15830 else if (die->tag == DW_TAG_variant_part)
15831 {
15832 TYPE_CODE (type) = TYPE_CODE_UNION;
15833 TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15834 }
c906108c
SS
15835 else
15836 {
4753d33b 15837 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
15838 }
15839
0cc2414c
TT
15840 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15841 TYPE_DECLARED_CLASS (type) = 1;
15842
e142c38c 15843 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
15844 if (attr)
15845 {
155bfbd3
JB
15846 if (attr_form_is_constant (attr))
15847 TYPE_LENGTH (type) = DW_UNSND (attr);
15848 else
15849 {
15850 /* For the moment, dynamic type sizes are not supported
15851 by GDB's struct type. The actual size is determined
15852 on-demand when resolving the type of a given object,
15853 so set the type's length to zero for now. Otherwise,
15854 we record an expression as the length, and that expression
15855 could lead to a very large value, which could eventually
15856 lead to us trying to allocate that much memory when creating
15857 a value of that type. */
15858 TYPE_LENGTH (type) = 0;
15859 }
c906108c
SS
15860 }
15861 else
15862 {
15863 TYPE_LENGTH (type) = 0;
15864 }
15865
2b4424c3
TT
15866 maybe_set_alignment (cu, die, type);
15867
5230b05a 15868 if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
685b1105 15869 {
5230b05a
WT
15870 /* ICC<14 does not output the required DW_AT_declaration on
15871 incomplete types, but gives them a size of zero. */
422b1cb0 15872 TYPE_STUB (type) = 1;
685b1105
JK
15873 }
15874 else
15875 TYPE_STUB_SUPPORTED (type) = 1;
15876
dc718098 15877 if (die_is_declaration (die, cu))
876cecd0 15878 TYPE_STUB (type) = 1;
a6c727b2
DJ
15879 else if (attr == NULL && die->child == NULL
15880 && producer_is_realview (cu->producer))
15881 /* RealView does not output the required DW_AT_declaration
15882 on incomplete types. */
15883 TYPE_STUB (type) = 1;
dc718098 15884
c906108c
SS
15885 /* We need to add the type field to the die immediately so we don't
15886 infinitely recurse when dealing with pointers to the structure
0963b4bd 15887 type within the structure itself. */
1c379e20 15888 set_die_type (die, type, cu);
c906108c 15889
7e314c57
JK
15890 /* set_die_type should be already done. */
15891 set_descriptive_type (type, die, cu);
15892
c767944b
DJ
15893 return type;
15894}
15895
2ddeaf8a
TT
15896/* A helper for process_structure_scope that handles a single member
15897 DIE. */
15898
15899static void
15900handle_struct_member_die (struct die_info *child_die, struct type *type,
15901 struct field_info *fi,
15902 std::vector<struct symbol *> *template_args,
15903 struct dwarf2_cu *cu)
15904{
15905 if (child_die->tag == DW_TAG_member
15906 || child_die->tag == DW_TAG_variable
15907 || child_die->tag == DW_TAG_variant_part)
15908 {
15909 /* NOTE: carlton/2002-11-05: A C++ static data member
15910 should be a DW_TAG_member that is a declaration, but
15911 all versions of G++ as of this writing (so through at
15912 least 3.2.1) incorrectly generate DW_TAG_variable
15913 tags for them instead. */
15914 dwarf2_add_field (fi, child_die, cu);
15915 }
15916 else if (child_die->tag == DW_TAG_subprogram)
15917 {
15918 /* Rust doesn't have member functions in the C++ sense.
15919 However, it does emit ordinary functions as children
15920 of a struct DIE. */
15921 if (cu->language == language_rust)
15922 read_func_scope (child_die, cu);
15923 else
15924 {
15925 /* C++ member function. */
15926 dwarf2_add_member_fn (fi, child_die, type, cu);
15927 }
15928 }
15929 else if (child_die->tag == DW_TAG_inheritance)
15930 {
15931 /* C++ base class field. */
15932 dwarf2_add_field (fi, child_die, cu);
15933 }
15934 else if (type_can_define_types (child_die))
15935 dwarf2_add_type_defn (fi, child_die, cu);
15936 else if (child_die->tag == DW_TAG_template_type_param
15937 || child_die->tag == DW_TAG_template_value_param)
15938 {
15939 struct symbol *arg = new_symbol (child_die, NULL, cu);
15940
15941 if (arg != NULL)
15942 template_args->push_back (arg);
15943 }
15944 else if (child_die->tag == DW_TAG_variant)
15945 {
15946 /* In a variant we want to get the discriminant and also add a
15947 field for our sole member child. */
15948 struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15949
bde09ab7 15950 for (die_info *variant_child = child_die->child;
2ddeaf8a
TT
15951 variant_child != NULL;
15952 variant_child = sibling_die (variant_child))
15953 {
15954 if (variant_child->tag == DW_TAG_member)
15955 {
15956 handle_struct_member_die (variant_child, type, fi,
15957 template_args, cu);
15958 /* Only handle the one. */
15959 break;
15960 }
15961 }
15962
15963 /* We don't handle this but we might as well report it if we see
15964 it. */
15965 if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
b98664d3 15966 complaint (_("DW_AT_discr_list is not supported yet"
2ddeaf8a
TT
15967 " - DIE at %s [in module %s]"),
15968 sect_offset_str (child_die->sect_off),
15969 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15970
15971 /* The first field was just added, so we can stash the
15972 discriminant there. */
be2daae6 15973 gdb_assert (!fi->fields.empty ());
2ddeaf8a 15974 if (discr == NULL)
be2daae6 15975 fi->fields.back ().variant.default_branch = true;
2ddeaf8a 15976 else
be2daae6 15977 fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
2ddeaf8a
TT
15978 }
15979}
15980
c767944b
DJ
15981/* Finish creating a structure or union type, including filling in
15982 its members and creating a symbol for it. */
15983
15984static void
15985process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15986{
518817b3 15987 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
ca040673 15988 struct die_info *child_die;
c767944b
DJ
15989 struct type *type;
15990
15991 type = get_die_type (die, cu);
15992 if (type == NULL)
15993 type = read_structure_type (die, cu);
15994
2ddeaf8a
TT
15995 /* When reading a DW_TAG_variant_part, we need to notice when we
15996 read the discriminant member, so we can record it later in the
15997 discriminant_info. */
15998 bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15999 sect_offset discr_offset;
3e1d3d8c 16000 bool has_template_parameters = false;
2ddeaf8a
TT
16001
16002 if (is_variant_part)
16003 {
16004 struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16005 if (discr == NULL)
16006 {
16007 /* Maybe it's a univariant form, an extension we support.
16008 In this case arrange not to check the offset. */
16009 is_variant_part = false;
16010 }
16011 else if (attr_form_is_ref (discr))
16012 {
16013 struct dwarf2_cu *target_cu = cu;
16014 struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16015
16016 discr_offset = target_die->sect_off;
16017 }
16018 else
16019 {
b98664d3 16020 complaint (_("DW_AT_discr does not have DIE reference form"
2ddeaf8a
TT
16021 " - DIE at %s [in module %s]"),
16022 sect_offset_str (die->sect_off),
16023 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16024 is_variant_part = false;
16025 }
16026 }
16027
e142c38c 16028 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
16029 {
16030 struct field_info fi;
2f4732b0 16031 std::vector<struct symbol *> template_args;
c906108c 16032
639d11d3 16033 child_die = die->child;
c906108c
SS
16034
16035 while (child_die && child_die->tag)
16036 {
2ddeaf8a 16037 handle_struct_member_die (child_die, type, &fi, &template_args, cu);
34eaf542 16038
2ddeaf8a 16039 if (is_variant_part && discr_offset == child_die->sect_off)
be2daae6 16040 fi.fields.back ().variant.is_discriminant = true;
34eaf542 16041
c906108c
SS
16042 child_die = sibling_die (child_die);
16043 }
16044
34eaf542 16045 /* Attach template arguments to type. */
2f4732b0 16046 if (!template_args.empty ())
34eaf542 16047 {
3e1d3d8c 16048 has_template_parameters = true;
34eaf542 16049 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2f4732b0 16050 TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
34eaf542 16051 TYPE_TEMPLATE_ARGUMENTS (type)
8d749320
SM
16052 = XOBNEWVEC (&objfile->objfile_obstack,
16053 struct symbol *,
16054 TYPE_N_TEMPLATE_ARGUMENTS (type));
34eaf542 16055 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
2f4732b0 16056 template_args.data (),
34eaf542
TT
16057 (TYPE_N_TEMPLATE_ARGUMENTS (type)
16058 * sizeof (struct symbol *)));
34eaf542
TT
16059 }
16060
c906108c
SS
16061 /* Attach fields and member functions to the type. */
16062 if (fi.nfields)
e7c27a73 16063 dwarf2_attach_fields_to_type (&fi, type, cu);
be2daae6 16064 if (!fi.fnfieldlists.empty ())
c906108c 16065 {
e7c27a73 16066 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 16067
c5aa993b 16068 /* Get the type which refers to the base class (possibly this
c906108c 16069 class itself) which contains the vtable pointer for the current
0d564a31
DJ
16070 class from the DW_AT_containing_type attribute. This use of
16071 DW_AT_containing_type is a GNU extension. */
c906108c 16072
e142c38c 16073 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 16074 {
e7c27a73 16075 struct type *t = die_containing_type (die, cu);
c906108c 16076
ae6ae975 16077 set_type_vptr_basetype (type, t);
c906108c
SS
16078 if (type == t)
16079 {
c906108c
SS
16080 int i;
16081
16082 /* Our own class provides vtbl ptr. */
16083 for (i = TYPE_NFIELDS (t) - 1;
16084 i >= TYPE_N_BASECLASSES (t);
16085 --i)
16086 {
0d5cff50 16087 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 16088
1168df01 16089 if (is_vtable_name (fieldname, cu))
c906108c 16090 {
ae6ae975 16091 set_type_vptr_fieldno (type, i);
c906108c
SS
16092 break;
16093 }
16094 }
16095
16096 /* Complain if virtual function table field not found. */
16097 if (i < TYPE_N_BASECLASSES (t))
b98664d3 16098 complaint (_("virtual function table pointer "
3e43a32a 16099 "not found when defining class '%s'"),
e86ca25f 16100 TYPE_NAME (type) ? TYPE_NAME (type) : "");
c906108c
SS
16101 }
16102 else
16103 {
ae6ae975 16104 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
16105 }
16106 }
f6235d4c 16107 else if (cu->producer
61012eef 16108 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
16109 {
16110 /* The IBM XLC compiler does not provide direct indication
16111 of the containing type, but the vtable pointer is
16112 always named __vfp. */
16113
16114 int i;
16115
16116 for (i = TYPE_NFIELDS (type) - 1;
16117 i >= TYPE_N_BASECLASSES (type);
16118 --i)
16119 {
16120 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16121 {
ae6ae975
DE
16122 set_type_vptr_fieldno (type, i);
16123 set_type_vptr_basetype (type, type);
f6235d4c
EZ
16124 break;
16125 }
16126 }
16127 }
c906108c 16128 }
98751a41
JK
16129
16130 /* Copy fi.typedef_field_list linked list elements content into the
16131 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
be2daae6 16132 if (!fi.typedef_field_list.empty ())
98751a41 16133 {
be2daae6 16134 int count = fi.typedef_field_list.size ();
98751a41 16135
a0d7a4ff 16136 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41 16137 TYPE_TYPEDEF_FIELD_ARRAY (type)
883fd55a 16138 = ((struct decl_field *)
be2daae6
TT
16139 TYPE_ALLOC (type,
16140 sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16141 TYPE_TYPEDEF_FIELD_COUNT (type) = count;
6e70227d 16142
be2daae6
TT
16143 for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16144 TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
98751a41 16145 }
c767944b 16146
883fd55a
KS
16147 /* Copy fi.nested_types_list linked list elements content into the
16148 allocated array TYPE_NESTED_TYPES_ARRAY (type). */
be2daae6 16149 if (!fi.nested_types_list.empty () && cu->language != language_ada)
883fd55a 16150 {
be2daae6 16151 int count = fi.nested_types_list.size ();
883fd55a
KS
16152
16153 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16154 TYPE_NESTED_TYPES_ARRAY (type)
16155 = ((struct decl_field *)
be2daae6
TT
16156 TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16157 TYPE_NESTED_TYPES_COUNT (type) = count;
883fd55a 16158
be2daae6
TT
16159 for (int i = 0; i < fi.nested_types_list.size (); ++i)
16160 TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
883fd55a 16161 }
c906108c 16162 }
63d06c5c 16163
bb5ed363 16164 quirk_gcc_member_function_pointer (type, objfile);
c9317f21
TT
16165 if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16166 cu->rust_unions.push_back (type);
0b92b5bb 16167
90aeadfc
DC
16168 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16169 snapshots) has been known to create a die giving a declaration
16170 for a class that has, as a child, a die giving a definition for a
16171 nested class. So we have to process our children even if the
16172 current die is a declaration. Normally, of course, a declaration
16173 won't have any children at all. */
134d01f1 16174
ca040673
DE
16175 child_die = die->child;
16176
90aeadfc
DC
16177 while (child_die != NULL && child_die->tag)
16178 {
16179 if (child_die->tag == DW_TAG_member
16180 || child_die->tag == DW_TAG_variable
34eaf542
TT
16181 || child_die->tag == DW_TAG_inheritance
16182 || child_die->tag == DW_TAG_template_value_param
16183 || child_die->tag == DW_TAG_template_type_param)
134d01f1 16184 {
90aeadfc 16185 /* Do nothing. */
134d01f1 16186 }
90aeadfc
DC
16187 else
16188 process_die (child_die, cu);
134d01f1 16189
90aeadfc 16190 child_die = sibling_die (child_die);
134d01f1
DJ
16191 }
16192
fa4028e9
JB
16193 /* Do not consider external references. According to the DWARF standard,
16194 these DIEs are identified by the fact that they have no byte_size
16195 attribute, and a declaration attribute. */
16196 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16197 || !die_is_declaration (die, cu))
3e1d3d8c
TT
16198 {
16199 struct symbol *sym = new_symbol (die, type, cu);
16200
16201 if (has_template_parameters)
16202 {
a776957c
TT
16203 struct symtab *symtab;
16204 if (sym != nullptr)
16205 symtab = symbol_symtab (sym);
16206 else if (cu->line_header != nullptr)
16207 {
16208 /* Any related symtab will do. */
16209 symtab
16210 = cu->line_header->file_name_at (file_name_index (1))->symtab;
16211 }
16212 else
16213 {
16214 symtab = nullptr;
16215 complaint (_("could not find suitable "
16216 "symtab for template parameter"
16217 " - DIE at %s [in module %s]"),
16218 sect_offset_str (die->sect_off),
16219 objfile_name (objfile));
16220 }
16221
16222 if (symtab != nullptr)
16223 {
16224 /* Make sure that the symtab is set on the new symbols.
16225 Even though they don't appear in this symtab directly,
16226 other parts of gdb assume that symbols do, and this is
16227 reasonably true. */
16228 for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16229 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
16230 }
3e1d3d8c
TT
16231 }
16232 }
134d01f1
DJ
16233}
16234
55426c9d
JB
16235/* Assuming DIE is an enumeration type, and TYPE is its associated type,
16236 update TYPE using some information only available in DIE's children. */
16237
16238static void
16239update_enumeration_type_from_children (struct die_info *die,
16240 struct type *type,
16241 struct dwarf2_cu *cu)
16242{
60f7655a 16243 struct die_info *child_die;
55426c9d
JB
16244 int unsigned_enum = 1;
16245 int flag_enum = 1;
16246 ULONGEST mask = 0;
55426c9d 16247
8268c778 16248 auto_obstack obstack;
55426c9d 16249
60f7655a
DE
16250 for (child_die = die->child;
16251 child_die != NULL && child_die->tag;
16252 child_die = sibling_die (child_die))
55426c9d
JB
16253 {
16254 struct attribute *attr;
16255 LONGEST value;
16256 const gdb_byte *bytes;
16257 struct dwarf2_locexpr_baton *baton;
16258 const char *name;
60f7655a 16259
55426c9d
JB
16260 if (child_die->tag != DW_TAG_enumerator)
16261 continue;
16262
16263 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16264 if (attr == NULL)
16265 continue;
16266
16267 name = dwarf2_name (child_die, cu);
16268 if (name == NULL)
16269 name = "<anonymous enumerator>";
16270
16271 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16272 &value, &bytes, &baton);
16273 if (value < 0)
16274 {
16275 unsigned_enum = 0;
16276 flag_enum = 0;
16277 }
16278 else if ((mask & value) != 0)
16279 flag_enum = 0;
16280 else
16281 mask |= value;
16282
16283 /* If we already know that the enum type is neither unsigned, nor
16284 a flag type, no need to look at the rest of the enumerates. */
16285 if (!unsigned_enum && !flag_enum)
16286 break;
55426c9d
JB
16287 }
16288
16289 if (unsigned_enum)
16290 TYPE_UNSIGNED (type) = 1;
16291 if (flag_enum)
16292 TYPE_FLAG_ENUM (type) = 1;
55426c9d
JB
16293}
16294
134d01f1
DJ
16295/* Given a DW_AT_enumeration_type die, set its type. We do not
16296 complete the type's fields yet, or create any symbols. */
c906108c 16297
f792889a 16298static struct type *
134d01f1 16299read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 16300{
518817b3 16301 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 16302 struct type *type;
c906108c 16303 struct attribute *attr;
0114d602 16304 const char *name;
134d01f1 16305
348e048f
DE
16306 /* If the definition of this type lives in .debug_types, read that type.
16307 Don't follow DW_AT_specification though, that will take us back up
16308 the chain and we want to go down. */
45e58e77 16309 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
16310 if (attr)
16311 {
ac9ec31b 16312 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 16313
ac9ec31b 16314 /* The type's CU may not be the same as CU.
02142a6c 16315 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
16316 return set_die_type (die, type, cu);
16317 }
16318
c906108c
SS
16319 type = alloc_type (objfile);
16320
16321 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 16322 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 16323 if (name != NULL)
e86ca25f 16324 TYPE_NAME (type) = name;
c906108c 16325
0626fc76
TT
16326 attr = dwarf2_attr (die, DW_AT_type, cu);
16327 if (attr != NULL)
16328 {
16329 struct type *underlying_type = die_type (die, cu);
16330
16331 TYPE_TARGET_TYPE (type) = underlying_type;
16332 }
16333
e142c38c 16334 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
16335 if (attr)
16336 {
16337 TYPE_LENGTH (type) = DW_UNSND (attr);
16338 }
16339 else
16340 {
16341 TYPE_LENGTH (type) = 0;
16342 }
16343
2b4424c3
TT
16344 maybe_set_alignment (cu, die, type);
16345
137033e9
JB
16346 /* The enumeration DIE can be incomplete. In Ada, any type can be
16347 declared as private in the package spec, and then defined only
16348 inside the package body. Such types are known as Taft Amendment
16349 Types. When another package uses such a type, an incomplete DIE
16350 may be generated by the compiler. */
02eb380e 16351 if (die_is_declaration (die, cu))
876cecd0 16352 TYPE_STUB (type) = 1;
02eb380e 16353
0626fc76
TT
16354 /* Finish the creation of this type by using the enum's children.
16355 We must call this even when the underlying type has been provided
16356 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
16357 update_enumeration_type_from_children (die, type, cu);
16358
0626fc76
TT
16359 /* If this type has an underlying type that is not a stub, then we
16360 may use its attributes. We always use the "unsigned" attribute
16361 in this situation, because ordinarily we guess whether the type
16362 is unsigned -- but the guess can be wrong and the underlying type
16363 can tell us the reality. However, we defer to a local size
16364 attribute if one exists, because this lets the compiler override
16365 the underlying type if needed. */
16366 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16367 {
16368 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16369 if (TYPE_LENGTH (type) == 0)
16370 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
2b4424c3
TT
16371 if (TYPE_RAW_ALIGN (type) == 0
16372 && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16373 set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
0626fc76
TT
16374 }
16375
3d567982
TT
16376 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16377
f792889a 16378 return set_die_type (die, type, cu);
134d01f1
DJ
16379}
16380
16381/* Given a pointer to a die which begins an enumeration, process all
16382 the dies that define the members of the enumeration, and create the
16383 symbol for the enumeration type.
16384
16385 NOTE: We reverse the order of the element list. */
16386
16387static void
16388process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16389{
f792889a 16390 struct type *this_type;
134d01f1 16391
f792889a
DJ
16392 this_type = get_die_type (die, cu);
16393 if (this_type == NULL)
16394 this_type = read_enumeration_type (die, cu);
9dc481d3 16395
639d11d3 16396 if (die->child != NULL)
c906108c 16397 {
9dc481d3
DE
16398 struct die_info *child_die;
16399 struct symbol *sym;
16400 struct field *fields = NULL;
16401 int num_fields = 0;
15d034d0 16402 const char *name;
9dc481d3 16403
639d11d3 16404 child_die = die->child;
c906108c
SS
16405 while (child_die && child_die->tag)
16406 {
16407 if (child_die->tag != DW_TAG_enumerator)
16408 {
e7c27a73 16409 process_die (child_die, cu);
c906108c
SS
16410 }
16411 else
16412 {
39cbfefa
DJ
16413 name = dwarf2_name (child_die, cu);
16414 if (name)
c906108c 16415 {
f792889a 16416 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
16417
16418 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16419 {
16420 fields = (struct field *)
16421 xrealloc (fields,
16422 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 16423 * sizeof (struct field));
c906108c
SS
16424 }
16425
3567439c 16426 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 16427 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 16428 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
16429 FIELD_BITSIZE (fields[num_fields]) = 0;
16430
16431 num_fields++;
16432 }
16433 }
16434
16435 child_die = sibling_die (child_die);
16436 }
16437
16438 if (num_fields)
16439 {
f792889a
DJ
16440 TYPE_NFIELDS (this_type) = num_fields;
16441 TYPE_FIELDS (this_type) = (struct field *)
16442 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16443 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 16444 sizeof (struct field) * num_fields);
b8c9b27d 16445 xfree (fields);
c906108c 16446 }
c906108c 16447 }
134d01f1 16448
6c83ed52
TT
16449 /* If we are reading an enum from a .debug_types unit, and the enum
16450 is a declaration, and the enum is not the signatured type in the
16451 unit, then we do not want to add a symbol for it. Adding a
16452 symbol would in some cases obscure the true definition of the
16453 enum, giving users an incomplete type when the definition is
16454 actually available. Note that we do not want to do this for all
16455 enums which are just declarations, because C++0x allows forward
16456 enum declarations. */
3019eac3 16457 if (cu->per_cu->is_debug_types
6c83ed52
TT
16458 && die_is_declaration (die, cu))
16459 {
52dc124a 16460 struct signatured_type *sig_type;
6c83ed52 16461
c0f78cd4 16462 sig_type = (struct signatured_type *) cu->per_cu;
9c541725
PA
16463 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16464 if (sig_type->type_offset_in_section != die->sect_off)
6c83ed52
TT
16465 return;
16466 }
16467
f792889a 16468 new_symbol (die, this_type, cu);
c906108c
SS
16469}
16470
16471/* Extract all information from a DW_TAG_array_type DIE and put it in
16472 the DIE's type field. For now, this only handles one dimensional
16473 arrays. */
16474
f792889a 16475static struct type *
e7c27a73 16476read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 16477{
518817b3 16478 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 16479 struct die_info *child_die;
7e314c57 16480 struct type *type;
c906108c 16481 struct type *element_type, *range_type, *index_type;
c906108c 16482 struct attribute *attr;
15d034d0 16483 const char *name;
a405673c 16484 struct dynamic_prop *byte_stride_prop = NULL;
dc53a7ad 16485 unsigned int bit_stride = 0;
c906108c 16486
e7c27a73 16487 element_type = die_type (die, cu);
c906108c 16488
7e314c57
JK
16489 /* The die_type call above may have already set the type for this DIE. */
16490 type = get_die_type (die, cu);
16491 if (type)
16492 return type;
16493
dc53a7ad
JB
16494 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16495 if (attr != NULL)
a405673c
JB
16496 {
16497 int stride_ok;
9a49df9d
AB
16498 struct type *prop_type
16499 = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
a405673c
JB
16500
16501 byte_stride_prop
16502 = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
9a49df9d
AB
16503 stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
16504 prop_type);
a405673c
JB
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);
19f392bc 16937 type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
f55ee35c 16938
f55ee35c
JK
16939 return set_die_type (die, type, cu);
16940}
16941
5d7cb8df
JK
16942/* Read a Fortran module. */
16943
16944static void
16945read_module (struct die_info *die, struct dwarf2_cu *cu)
16946{
16947 struct die_info *child_die = die->child;
530e8392
KB
16948 struct type *type;
16949
16950 type = read_type_die (die, cu);
16951 new_symbol (die, type, cu);
5d7cb8df 16952
5d7cb8df
JK
16953 while (child_die && child_die->tag)
16954 {
16955 process_die (child_die, cu);
16956 child_die = sibling_die (child_die);
16957 }
16958}
16959
38d518c9
EZ
16960/* Return the name of the namespace represented by DIE. Set
16961 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16962 namespace. */
16963
16964static const char *
e142c38c 16965namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
16966{
16967 struct die_info *current_die;
16968 const char *name = NULL;
16969
16970 /* Loop through the extensions until we find a name. */
16971
16972 for (current_die = die;
16973 current_die != NULL;
f2f0e013 16974 current_die = dwarf2_extension (die, &cu))
38d518c9 16975 {
96553a0c
DE
16976 /* We don't use dwarf2_name here so that we can detect the absence
16977 of a name -> anonymous namespace. */
7d45c7c3 16978 name = dwarf2_string_attr (die, DW_AT_name, cu);
96553a0c 16979
38d518c9
EZ
16980 if (name != NULL)
16981 break;
16982 }
16983
16984 /* Is it an anonymous namespace? */
16985
16986 *is_anonymous = (name == NULL);
16987 if (*is_anonymous)
2b1dbab0 16988 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
16989
16990 return name;
d9fa45fe
DC
16991}
16992
c906108c
SS
16993/* Extract all information from a DW_TAG_pointer_type DIE and add to
16994 the user defined type vector. */
16995
f792889a 16996static struct type *
e7c27a73 16997read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 16998{
518817b3
SM
16999 struct gdbarch *gdbarch
17000 = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
e7c27a73 17001 struct comp_unit_head *cu_header = &cu->header;
c906108c 17002 struct type *type;
8b2dbe47
KB
17003 struct attribute *attr_byte_size;
17004 struct attribute *attr_address_class;
17005 int byte_size, addr_class;
7e314c57
JK
17006 struct type *target_type;
17007
17008 target_type = die_type (die, cu);
c906108c 17009
7e314c57
JK
17010 /* The die_type call above may have already set the type for this DIE. */
17011 type = get_die_type (die, cu);
17012 if (type)
17013 return type;
17014
17015 type = lookup_pointer_type (target_type);
8b2dbe47 17016
e142c38c 17017 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
17018 if (attr_byte_size)
17019 byte_size = DW_UNSND (attr_byte_size);
c906108c 17020 else
8b2dbe47
KB
17021 byte_size = cu_header->addr_size;
17022
e142c38c 17023 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
17024 if (attr_address_class)
17025 addr_class = DW_UNSND (attr_address_class);
17026 else
17027 addr_class = DW_ADDR_none;
17028
2b4424c3
TT
17029 ULONGEST alignment = get_alignment (cu, die);
17030
17031 /* If the pointer size, alignment, or address class is different
17032 than the default, create a type variant marked as such and set
17033 the length accordingly. */
17034 if (TYPE_LENGTH (type) != byte_size
17035 || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17036 && alignment != TYPE_RAW_ALIGN (type))
17037 || addr_class != DW_ADDR_none)
c906108c 17038 {
5e2b427d 17039 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
17040 {
17041 int type_flags;
17042
849957d9 17043 type_flags = gdbarch_address_class_type_flags
5e2b427d 17044 (gdbarch, byte_size, addr_class);
876cecd0
TT
17045 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17046 == 0);
8b2dbe47
KB
17047 type = make_type_with_address_space (type, type_flags);
17048 }
17049 else if (TYPE_LENGTH (type) != byte_size)
17050 {
b98664d3 17051 complaint (_("invalid pointer size %d"), byte_size);
8b2dbe47 17052 }
2b4424c3
TT
17053 else if (TYPE_RAW_ALIGN (type) != alignment)
17054 {
b98664d3 17055 complaint (_("Invalid DW_AT_alignment"
2b4424c3
TT
17056 " - DIE at %s [in module %s]"),
17057 sect_offset_str (die->sect_off),
17058 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17059 }
6e70227d 17060 else
9a619af0
MS
17061 {
17062 /* Should we also complain about unhandled address classes? */
17063 }
c906108c 17064 }
8b2dbe47
KB
17065
17066 TYPE_LENGTH (type) = byte_size;
2b4424c3 17067 set_type_align (type, alignment);
f792889a 17068 return set_die_type (die, type, cu);
c906108c
SS
17069}
17070
17071/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17072 the user defined type vector. */
17073
f792889a 17074static struct type *
e7c27a73 17075read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
17076{
17077 struct type *type;
17078 struct type *to_type;
17079 struct type *domain;
17080
e7c27a73
DJ
17081 to_type = die_type (die, cu);
17082 domain = die_containing_type (die, cu);
0d5de010 17083
7e314c57
JK
17084 /* The calls above may have already set the type for this DIE. */
17085 type = get_die_type (die, cu);
17086 if (type)
17087 return type;
17088
0d5de010
DJ
17089 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17090 type = lookup_methodptr_type (to_type);
7078baeb
TT
17091 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17092 {
518817b3
SM
17093 struct type *new_type
17094 = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
7078baeb
TT
17095
17096 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17097 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17098 TYPE_VARARGS (to_type));
17099 type = lookup_methodptr_type (new_type);
17100 }
0d5de010
DJ
17101 else
17102 type = lookup_memberptr_type (to_type, domain);
c906108c 17103
f792889a 17104 return set_die_type (die, type, cu);
c906108c
SS
17105}
17106
4297a3f0 17107/* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
c906108c
SS
17108 the user defined type vector. */
17109
f792889a 17110static struct type *
4297a3f0
AV
17111read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17112 enum type_code refcode)
c906108c 17113{
e7c27a73 17114 struct comp_unit_head *cu_header = &cu->header;
7e314c57 17115 struct type *type, *target_type;
c906108c
SS
17116 struct attribute *attr;
17117
4297a3f0
AV
17118 gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17119
7e314c57
JK
17120 target_type = die_type (die, cu);
17121
17122 /* The die_type call above may have already set the type for this DIE. */
17123 type = get_die_type (die, cu);
17124 if (type)
17125 return type;
17126
4297a3f0 17127 type = lookup_reference_type (target_type, refcode);
e142c38c 17128 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
17129 if (attr)
17130 {
17131 TYPE_LENGTH (type) = DW_UNSND (attr);
17132 }
17133 else
17134 {
107d2387 17135 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 17136 }
2b4424c3 17137 maybe_set_alignment (cu, die, type);
f792889a 17138 return set_die_type (die, type, cu);
c906108c
SS
17139}
17140
cf363f18
MW
17141/* Add the given cv-qualifiers to the element type of the array. GCC
17142 outputs DWARF type qualifiers that apply to an array, not the
17143 element type. But GDB relies on the array element type to carry
17144 the cv-qualifiers. This mimics section 6.7.3 of the C99
17145 specification. */
17146
17147static struct type *
17148add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17149 struct type *base_type, int cnst, int voltl)
17150{
17151 struct type *el_type, *inner_array;
17152
17153 base_type = copy_type (base_type);
17154 inner_array = base_type;
17155
17156 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17157 {
17158 TYPE_TARGET_TYPE (inner_array) =
17159 copy_type (TYPE_TARGET_TYPE (inner_array));
17160 inner_array = TYPE_TARGET_TYPE (inner_array);
17161 }
17162
17163 el_type = TYPE_TARGET_TYPE (inner_array);
17164 cnst |= TYPE_CONST (el_type);
17165 voltl |= TYPE_VOLATILE (el_type);
17166 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17167
17168 return set_die_type (die, base_type, cu);
17169}
17170
f792889a 17171static struct type *
e7c27a73 17172read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17173{
f792889a 17174 struct type *base_type, *cv_type;
c906108c 17175
e7c27a73 17176 base_type = die_type (die, cu);
7e314c57
JK
17177
17178 /* The die_type call above may have already set the type for this DIE. */
17179 cv_type = get_die_type (die, cu);
17180 if (cv_type)
17181 return cv_type;
17182
2f608a3a
KW
17183 /* In case the const qualifier is applied to an array type, the element type
17184 is so qualified, not the array type (section 6.7.3 of C99). */
17185 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 17186 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 17187
f792889a
DJ
17188 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17189 return set_die_type (die, cv_type, cu);
c906108c
SS
17190}
17191
f792889a 17192static struct type *
e7c27a73 17193read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17194{
f792889a 17195 struct type *base_type, *cv_type;
c906108c 17196
e7c27a73 17197 base_type = die_type (die, cu);
7e314c57
JK
17198
17199 /* The die_type call above may have already set the type for this DIE. */
17200 cv_type = get_die_type (die, cu);
17201 if (cv_type)
17202 return cv_type;
17203
cf363f18
MW
17204 /* In case the volatile qualifier is applied to an array type, the
17205 element type is so qualified, not the array type (section 6.7.3
17206 of C99). */
17207 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17208 return add_array_cv_type (die, cu, base_type, 0, 1);
17209
f792889a
DJ
17210 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17211 return set_die_type (die, cv_type, cu);
c906108c
SS
17212}
17213
06d66ee9
TT
17214/* Handle DW_TAG_restrict_type. */
17215
17216static struct type *
17217read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17218{
17219 struct type *base_type, *cv_type;
17220
17221 base_type = die_type (die, cu);
17222
17223 /* The die_type call above may have already set the type for this DIE. */
17224 cv_type = get_die_type (die, cu);
17225 if (cv_type)
17226 return cv_type;
17227
17228 cv_type = make_restrict_type (base_type);
17229 return set_die_type (die, cv_type, cu);
17230}
17231
a2c2acaf
MW
17232/* Handle DW_TAG_atomic_type. */
17233
17234static struct type *
17235read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17236{
17237 struct type *base_type, *cv_type;
17238
17239 base_type = die_type (die, cu);
17240
17241 /* The die_type call above may have already set the type for this DIE. */
17242 cv_type = get_die_type (die, cu);
17243 if (cv_type)
17244 return cv_type;
17245
17246 cv_type = make_atomic_type (base_type);
17247 return set_die_type (die, cv_type, cu);
17248}
17249
c906108c
SS
17250/* Extract all information from a DW_TAG_string_type DIE and add to
17251 the user defined type vector. It isn't really a user defined type,
17252 but it behaves like one, with other DIE's using an AT_user_def_type
17253 attribute to reference it. */
17254
f792889a 17255static struct type *
e7c27a73 17256read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17257{
518817b3 17258 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
3b7538c0 17259 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
17260 struct type *type, *range_type, *index_type, *char_type;
17261 struct attribute *attr;
17262 unsigned int length;
17263
e142c38c 17264 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
17265 if (attr)
17266 {
17267 length = DW_UNSND (attr);
17268 }
17269 else
17270 {
0963b4bd 17271 /* Check for the DW_AT_byte_size attribute. */
e142c38c 17272 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
17273 if (attr)
17274 {
17275 length = DW_UNSND (attr);
17276 }
17277 else
17278 {
17279 length = 1;
17280 }
c906108c 17281 }
6ccb9162 17282
46bf5051 17283 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 17284 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
17285 char_type = language_string_char_type (cu->language_defn, gdbarch);
17286 type = create_string_type (NULL, char_type, range_type);
6ccb9162 17287
f792889a 17288 return set_die_type (die, type, cu);
c906108c
SS
17289}
17290
4d804846
JB
17291/* Assuming that DIE corresponds to a function, returns nonzero
17292 if the function is prototyped. */
17293
17294static int
17295prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17296{
17297 struct attribute *attr;
17298
17299 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17300 if (attr && (DW_UNSND (attr) != 0))
17301 return 1;
17302
17303 /* The DWARF standard implies that the DW_AT_prototyped attribute
17304 is only meaninful for C, but the concept also extends to other
17305 languages that allow unprototyped functions (Eg: Objective C).
17306 For all other languages, assume that functions are always
17307 prototyped. */
17308 if (cu->language != language_c
17309 && cu->language != language_objc
17310 && cu->language != language_opencl)
17311 return 1;
17312
17313 /* RealView does not emit DW_AT_prototyped. We can not distinguish
17314 prototyped and unprototyped functions; default to prototyped,
17315 since that is more common in modern code (and RealView warns
17316 about unprototyped functions). */
17317 if (producer_is_realview (cu->producer))
17318 return 1;
17319
17320 return 0;
17321}
17322
c906108c
SS
17323/* Handle DIES due to C code like:
17324
17325 struct foo
c5aa993b
JM
17326 {
17327 int (*funcp)(int a, long l);
17328 int b;
17329 };
c906108c 17330
0963b4bd 17331 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 17332
f792889a 17333static struct type *
e7c27a73 17334read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17335{
518817b3 17336 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
0963b4bd
MS
17337 struct type *type; /* Type that this function returns. */
17338 struct type *ftype; /* Function that returns above type. */
c906108c
SS
17339 struct attribute *attr;
17340
e7c27a73 17341 type = die_type (die, cu);
7e314c57
JK
17342
17343 /* The die_type call above may have already set the type for this DIE. */
17344 ftype = get_die_type (die, cu);
17345 if (ftype)
17346 return ftype;
17347
0c8b41f1 17348 ftype = lookup_function_type (type);
c906108c 17349
4d804846 17350 if (prototyped_function_p (die, cu))
a6c727b2 17351 TYPE_PROTOTYPED (ftype) = 1;
c906108c 17352
c055b101
CV
17353 /* Store the calling convention in the type if it's available in
17354 the subroutine die. Otherwise set the calling convention to
17355 the default value DW_CC_normal. */
17356 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
17357 if (attr)
17358 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17359 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17360 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17361 else
17362 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 17363
743649fd
MW
17364 /* Record whether the function returns normally to its caller or not
17365 if the DWARF producer set that information. */
17366 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17367 if (attr && (DW_UNSND (attr) != 0))
17368 TYPE_NO_RETURN (ftype) = 1;
17369
76c10ea2
GM
17370 /* We need to add the subroutine type to the die immediately so
17371 we don't infinitely recurse when dealing with parameters
0963b4bd 17372 declared as the same subroutine type. */
76c10ea2 17373 set_die_type (die, ftype, cu);
6e70227d 17374
639d11d3 17375 if (die->child != NULL)
c906108c 17376 {
bb5ed363 17377 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 17378 struct die_info *child_die;
8072405b 17379 int nparams, iparams;
c906108c
SS
17380
17381 /* Count the number of parameters.
17382 FIXME: GDB currently ignores vararg functions, but knows about
17383 vararg member functions. */
8072405b 17384 nparams = 0;
639d11d3 17385 child_die = die->child;
c906108c
SS
17386 while (child_die && child_die->tag)
17387 {
17388 if (child_die->tag == DW_TAG_formal_parameter)
17389 nparams++;
17390 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 17391 TYPE_VARARGS (ftype) = 1;
c906108c
SS
17392 child_die = sibling_die (child_die);
17393 }
17394
17395 /* Allocate storage for parameters and fill them in. */
17396 TYPE_NFIELDS (ftype) = nparams;
17397 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 17398 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 17399
8072405b
JK
17400 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
17401 even if we error out during the parameters reading below. */
17402 for (iparams = 0; iparams < nparams; iparams++)
17403 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17404
17405 iparams = 0;
639d11d3 17406 child_die = die->child;
c906108c
SS
17407 while (child_die && child_die->tag)
17408 {
17409 if (child_die->tag == DW_TAG_formal_parameter)
17410 {
3ce3b1ba
PA
17411 struct type *arg_type;
17412
17413 /* DWARF version 2 has no clean way to discern C++
17414 static and non-static member functions. G++ helps
17415 GDB by marking the first parameter for non-static
17416 member functions (which is the this pointer) as
17417 artificial. We pass this information to
17418 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17419
17420 DWARF version 3 added DW_AT_object_pointer, which GCC
17421 4.5 does not yet generate. */
e142c38c 17422 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
17423 if (attr)
17424 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17425 else
9c37b5ae 17426 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
3ce3b1ba
PA
17427 arg_type = die_type (child_die, cu);
17428
17429 /* RealView does not mark THIS as const, which the testsuite
17430 expects. GCC marks THIS as const in method definitions,
17431 but not in the class specifications (GCC PR 43053). */
17432 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17433 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17434 {
17435 int is_this = 0;
17436 struct dwarf2_cu *arg_cu = cu;
17437 const char *name = dwarf2_name (child_die, cu);
17438
17439 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17440 if (attr)
17441 {
17442 /* If the compiler emits this, use it. */
17443 if (follow_die_ref (die, attr, &arg_cu) == child_die)
17444 is_this = 1;
17445 }
17446 else if (name && strcmp (name, "this") == 0)
17447 /* Function definitions will have the argument names. */
17448 is_this = 1;
17449 else if (name == NULL && iparams == 0)
17450 /* Declarations may not have the names, so like
17451 elsewhere in GDB, assume an artificial first
17452 argument is "this". */
17453 is_this = 1;
17454
17455 if (is_this)
17456 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17457 arg_type, 0);
17458 }
17459
17460 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
17461 iparams++;
17462 }
17463 child_die = sibling_die (child_die);
17464 }
17465 }
17466
76c10ea2 17467 return ftype;
c906108c
SS
17468}
17469
f792889a 17470static struct type *
e7c27a73 17471read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17472{
518817b3 17473 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
0114d602 17474 const char *name = NULL;
3c8e0968 17475 struct type *this_type, *target_type;
c906108c 17476
94af9270 17477 name = dwarf2_full_name (NULL, die, cu);
19f392bc
UW
17478 this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17479 TYPE_TARGET_STUB (this_type) = 1;
f792889a 17480 set_die_type (die, this_type, cu);
3c8e0968
DE
17481 target_type = die_type (die, cu);
17482 if (target_type != this_type)
17483 TYPE_TARGET_TYPE (this_type) = target_type;
17484 else
17485 {
17486 /* Self-referential typedefs are, it seems, not allowed by the DWARF
17487 spec and cause infinite loops in GDB. */
b98664d3 17488 complaint (_("Self-referential DW_TAG_typedef "
9d8780f0
SM
17489 "- DIE at %s [in module %s]"),
17490 sect_offset_str (die->sect_off), objfile_name (objfile));
3c8e0968
DE
17491 TYPE_TARGET_TYPE (this_type) = NULL;
17492 }
f792889a 17493 return this_type;
c906108c
SS
17494}
17495
9b790ce7
UW
17496/* Allocate a floating-point type of size BITS and name NAME. Pass NAME_HINT
17497 (which may be different from NAME) to the architecture back-end to allow
17498 it to guess the correct format if necessary. */
17499
17500static struct type *
17501dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17502 const char *name_hint)
17503{
17504 struct gdbarch *gdbarch = get_objfile_arch (objfile);
17505 const struct floatformat **format;
17506 struct type *type;
17507
17508 format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17509 if (format)
17510 type = init_float_type (objfile, bits, name, format);
17511 else
77b7c781 17512 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
9b790ce7
UW
17513
17514 return type;
17515}
17516
eb77c9df
AB
17517/* Allocate an integer type of size BITS and name NAME. */
17518
17519static struct type *
17520dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17521 int bits, int unsigned_p, const char *name)
17522{
17523 struct type *type;
17524
17525 /* Versions of Intel's C Compiler generate an integer type called "void"
17526 instead of using DW_TAG_unspecified_type. This has been seen on
17527 at least versions 14, 17, and 18. */
35ee2dc2
AB
17528 if (bits == 0 && producer_is_icc (cu) && name != nullptr
17529 && strcmp (name, "void") == 0)
eb77c9df
AB
17530 type = objfile_type (objfile)->builtin_void;
17531 else
17532 type = init_integer_type (objfile, bits, unsigned_p, name);
17533
17534 return type;
17535}
17536
8bdc1658
AB
17537/* Initialise and return a floating point type of size BITS suitable for
17538 use as a component of a complex number. The NAME_HINT is passed through
17539 when initialising the floating point type and is the name of the complex
17540 type.
17541
17542 As DWARF doesn't currently provide an explicit name for the components
17543 of a complex number, but it can be helpful to have these components
17544 named, we try to select a suitable name based on the size of the
17545 component. */
17546static struct type *
17547dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17548 struct objfile *objfile,
17549 int bits, const char *name_hint)
17550{
17551 gdbarch *gdbarch = get_objfile_arch (objfile);
17552 struct type *tt = nullptr;
17553
35add35e
AB
17554 /* Try to find a suitable floating point builtin type of size BITS.
17555 We're going to use the name of this type as the name for the complex
17556 target type that we are about to create. */
1db455a7 17557 switch (cu->language)
8bdc1658 17558 {
1db455a7
AB
17559 case language_fortran:
17560 switch (bits)
17561 {
17562 case 32:
17563 tt = builtin_f_type (gdbarch)->builtin_real;
17564 break;
17565 case 64:
17566 tt = builtin_f_type (gdbarch)->builtin_real_s8;
17567 break;
17568 case 96: /* The x86-32 ABI specifies 96-bit long double. */
17569 case 128:
17570 tt = builtin_f_type (gdbarch)->builtin_real_s16;
17571 break;
17572 }
8bdc1658 17573 break;
1db455a7
AB
17574 default:
17575 switch (bits)
17576 {
17577 case 32:
17578 tt = builtin_type (gdbarch)->builtin_float;
17579 break;
17580 case 64:
17581 tt = builtin_type (gdbarch)->builtin_double;
17582 break;
17583 case 96: /* The x86-32 ABI specifies 96-bit long double. */
17584 case 128:
17585 tt = builtin_type (gdbarch)->builtin_long_double;
17586 break;
17587 }
8bdc1658
AB
17588 break;
17589 }
17590
35add35e
AB
17591 /* If the type we found doesn't match the size we were looking for, then
17592 pretend we didn't find a type at all, the complex target type we
17593 create will then be nameless. */
a12e5744 17594 if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
35add35e
AB
17595 tt = nullptr;
17596
8bdc1658
AB
17597 const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
17598 return dwarf2_init_float_type (objfile, bits, name, name_hint);
17599}
17600
c906108c
SS
17601/* Find a representation of a given base type and install
17602 it in the TYPE field of the die. */
17603
f792889a 17604static struct type *
e7c27a73 17605read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 17606{
518817b3 17607 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c
SS
17608 struct type *type;
17609 struct attribute *attr;
19f392bc 17610 int encoding = 0, bits = 0;
15d034d0 17611 const char *name;
c906108c 17612
e142c38c 17613 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
17614 if (attr)
17615 {
17616 encoding = DW_UNSND (attr);
17617 }
e142c38c 17618 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
17619 if (attr)
17620 {
19f392bc 17621 bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
c906108c 17622 }
39cbfefa 17623 name = dwarf2_name (die, cu);
6ccb9162 17624 if (!name)
c906108c 17625 {
b98664d3 17626 complaint (_("DW_AT_name missing from DW_TAG_base_type"));
c906108c 17627 }
6ccb9162
UW
17628
17629 switch (encoding)
c906108c 17630 {
6ccb9162
UW
17631 case DW_ATE_address:
17632 /* Turn DW_ATE_address into a void * pointer. */
77b7c781 17633 type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
19f392bc 17634 type = init_pointer_type (objfile, bits, name, type);
6ccb9162
UW
17635 break;
17636 case DW_ATE_boolean:
19f392bc 17637 type = init_boolean_type (objfile, bits, 1, name);
6ccb9162
UW
17638 break;
17639 case DW_ATE_complex_float:
8bdc1658 17640 type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name);
19f392bc 17641 type = init_complex_type (objfile, name, type);
6ccb9162
UW
17642 break;
17643 case DW_ATE_decimal_float:
19f392bc 17644 type = init_decfloat_type (objfile, bits, name);
6ccb9162
UW
17645 break;
17646 case DW_ATE_float:
9b790ce7 17647 type = dwarf2_init_float_type (objfile, bits, name, name);
6ccb9162
UW
17648 break;
17649 case DW_ATE_signed:
eb77c9df 17650 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
6ccb9162
UW
17651 break;
17652 case DW_ATE_unsigned:
3b2b8fea
TT
17653 if (cu->language == language_fortran
17654 && name
61012eef 17655 && startswith (name, "character("))
19f392bc
UW
17656 type = init_character_type (objfile, bits, 1, name);
17657 else
eb77c9df 17658 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
6ccb9162
UW
17659 break;
17660 case DW_ATE_signed_char:
6e70227d 17661 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
17662 || cu->language == language_pascal
17663 || cu->language == language_fortran)
19f392bc
UW
17664 type = init_character_type (objfile, bits, 0, name);
17665 else
eb77c9df 17666 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
6ccb9162
UW
17667 break;
17668 case DW_ATE_unsigned_char:
868a0084 17669 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea 17670 || cu->language == language_pascal
c44af4eb
TT
17671 || cu->language == language_fortran
17672 || cu->language == language_rust)
19f392bc
UW
17673 type = init_character_type (objfile, bits, 1, name);
17674 else
eb77c9df 17675 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
6ccb9162 17676 break;
75079b2b 17677 case DW_ATE_UTF:
53e710ac
PA
17678 {
17679 gdbarch *arch = get_objfile_arch (objfile);
17680
17681 if (bits == 16)
17682 type = builtin_type (arch)->builtin_char16;
17683 else if (bits == 32)
17684 type = builtin_type (arch)->builtin_char32;
17685 else
17686 {
b98664d3 17687 complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
53e710ac 17688 bits);
eb77c9df 17689 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
53e710ac
PA
17690 }
17691 return set_die_type (die, type, cu);
17692 }
75079b2b
TT
17693 break;
17694
6ccb9162 17695 default:
b98664d3 17696 complaint (_("unsupported DW_AT_encoding: '%s'"),
6ccb9162 17697 dwarf_type_encoding_name (encoding));
77b7c781 17698 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
6ccb9162 17699 break;
c906108c 17700 }
6ccb9162 17701
0114d602 17702 if (name && strcmp (name, "char") == 0)
876cecd0 17703 TYPE_NOSIGN (type) = 1;
0114d602 17704
2b4424c3
TT
17705 maybe_set_alignment (cu, die, type);
17706
f792889a 17707 return set_die_type (die, type, cu);
c906108c
SS
17708}
17709
80180f79
SA
17710/* Parse dwarf attribute if it's a block, reference or constant and put the
17711 resulting value of the attribute into struct bound_prop.
17712 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
17713
17714static int
17715attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
9a49df9d
AB
17716 struct dwarf2_cu *cu, struct dynamic_prop *prop,
17717 struct type *default_type)
80180f79
SA
17718{
17719 struct dwarf2_property_baton *baton;
518817b3
SM
17720 struct obstack *obstack
17721 = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
80180f79 17722
9a49df9d
AB
17723 gdb_assert (default_type != NULL);
17724
80180f79
SA
17725 if (attr == NULL || prop == NULL)
17726 return 0;
17727
17728 if (attr_form_is_block (attr))
17729 {
8d749320 17730 baton = XOBNEW (obstack, struct dwarf2_property_baton);
9a49df9d 17731 baton->property_type = default_type;
80180f79
SA
17732 baton->locexpr.per_cu = cu->per_cu;
17733 baton->locexpr.size = DW_BLOCK (attr)->size;
17734 baton->locexpr.data = DW_BLOCK (attr)->data;
9a49df9d 17735 baton->locexpr.is_reference = false;
80180f79
SA
17736 prop->data.baton = baton;
17737 prop->kind = PROP_LOCEXPR;
17738 gdb_assert (prop->data.baton != NULL);
17739 }
17740 else if (attr_form_is_ref (attr))
17741 {
17742 struct dwarf2_cu *target_cu = cu;
17743 struct die_info *target_die;
17744 struct attribute *target_attr;
17745
17746 target_die = follow_die_ref (die, attr, &target_cu);
17747 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
17748 if (target_attr == NULL)
17749 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17750 target_cu);
80180f79
SA
17751 if (target_attr == NULL)
17752 return 0;
17753
df25ebbd 17754 switch (target_attr->name)
80180f79 17755 {
df25ebbd
JB
17756 case DW_AT_location:
17757 if (attr_form_is_section_offset (target_attr))
17758 {
8d749320 17759 baton = XOBNEW (obstack, struct dwarf2_property_baton);
9a49df9d 17760 baton->property_type = die_type (target_die, target_cu);
df25ebbd
JB
17761 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17762 prop->data.baton = baton;
17763 prop->kind = PROP_LOCLIST;
17764 gdb_assert (prop->data.baton != NULL);
17765 }
17766 else if (attr_form_is_block (target_attr))
17767 {
8d749320 17768 baton = XOBNEW (obstack, struct dwarf2_property_baton);
9a49df9d 17769 baton->property_type = die_type (target_die, target_cu);
df25ebbd
JB
17770 baton->locexpr.per_cu = cu->per_cu;
17771 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17772 baton->locexpr.data = DW_BLOCK (target_attr)->data;
9a49df9d 17773 baton->locexpr.is_reference = true;
df25ebbd
JB
17774 prop->data.baton = baton;
17775 prop->kind = PROP_LOCEXPR;
17776 gdb_assert (prop->data.baton != NULL);
17777 }
17778 else
17779 {
17780 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17781 "dynamic property");
17782 return 0;
17783 }
17784 break;
17785 case DW_AT_data_member_location:
17786 {
17787 LONGEST offset;
17788
17789 if (!handle_data_member_location (target_die, target_cu,
17790 &offset))
17791 return 0;
17792
8d749320 17793 baton = XOBNEW (obstack, struct dwarf2_property_baton);
9a49df9d 17794 baton->property_type = read_type_die (target_die->parent,
6ad395a7 17795 target_cu);
df25ebbd
JB
17796 baton->offset_info.offset = offset;
17797 baton->offset_info.type = die_type (target_die, target_cu);
17798 prop->data.baton = baton;
17799 prop->kind = PROP_ADDR_OFFSET;
17800 break;
17801 }
80180f79
SA
17802 }
17803 }
17804 else if (attr_form_is_constant (attr))
17805 {
17806 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17807 prop->kind = PROP_CONST;
17808 }
17809 else
17810 {
17811 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17812 dwarf2_name (die, cu));
17813 return 0;
17814 }
17815
17816 return 1;
17817}
17818
9a49df9d
AB
17819/* Find an integer type the same size as the address size given in the
17820 compilation unit header for PER_CU. UNSIGNED_P controls if the integer
17821 is unsigned or not. */
17822
17823static struct type *
17824dwarf2_per_cu_addr_sized_int_type (struct dwarf2_per_cu_data *per_cu,
17825 bool unsigned_p)
17826{
17827 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
17828 int addr_size = dwarf2_per_cu_addr_size (per_cu);
17829 struct type *int_type;
17830
17831 /* Helper macro to examine the various builtin types. */
17832#define TRY_TYPE(F) \
17833 int_type = (unsigned_p \
17834 ? objfile_type (objfile)->builtin_unsigned_ ## F \
17835 : objfile_type (objfile)->builtin_ ## F); \
17836 if (int_type != NULL && TYPE_LENGTH (int_type) == addr_size) \
17837 return int_type
17838
17839 TRY_TYPE (char);
17840 TRY_TYPE (short);
17841 TRY_TYPE (int);
17842 TRY_TYPE (long);
17843 TRY_TYPE (long_long);
17844
17845#undef TRY_TYPE
17846
17847 gdb_assert_not_reached ("unable to find suitable integer type");
17848}
17849
b86352cf
AB
17850/* Read the DW_AT_type attribute for a sub-range. If this attribute is not
17851 present (which is valid) then compute the default type based on the
17852 compilation units address size. */
17853
17854static struct type *
17855read_subrange_index_type (struct die_info *die, struct dwarf2_cu *cu)
17856{
17857 struct type *index_type = die_type (die, cu);
17858
17859 /* Dwarf-2 specifications explicitly allows to create subrange types
17860 without specifying a base type.
17861 In that case, the base type must be set to the type of
17862 the lower bound, upper bound or count, in that order, if any of these
17863 three attributes references an object that has a type.
17864 If no base type is found, the Dwarf-2 specifications say that
17865 a signed integer type of size equal to the size of an address should
17866 be used.
17867 For the following C code: `extern char gdb_int [];'
17868 GCC produces an empty range DIE.
17869 FIXME: muller/2010-05-28: Possible references to object for low bound,
17870 high bound or count are not yet handled by this code. */
17871 if (TYPE_CODE (index_type) == TYPE_CODE_VOID)
9a49df9d 17872 index_type = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
b86352cf
AB
17873
17874 return index_type;
17875}
17876
a02abb62
JB
17877/* Read the given DW_AT_subrange DIE. */
17878
f792889a 17879static struct type *
a02abb62
JB
17880read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17881{
4c9ad8c2 17882 struct type *base_type, *orig_base_type;
a02abb62
JB
17883 struct type *range_type;
17884 struct attribute *attr;
729efb13 17885 struct dynamic_prop low, high;
4fae6e18 17886 int low_default_is_valid;
c451ebe5 17887 int high_bound_is_count = 0;
15d034d0 17888 const char *name;
d359392f 17889 ULONGEST negative_mask;
e77813c8 17890
b86352cf
AB
17891 orig_base_type = read_subrange_index_type (die, cu);
17892
4c9ad8c2
TT
17893 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17894 whereas the real type might be. So, we use ORIG_BASE_TYPE when
17895 creating the range type, but we use the result of check_typedef
17896 when examining properties of the type. */
17897 base_type = check_typedef (orig_base_type);
a02abb62 17898
7e314c57
JK
17899 /* The die_type call above may have already set the type for this DIE. */
17900 range_type = get_die_type (die, cu);
17901 if (range_type)
17902 return range_type;
17903
729efb13
SA
17904 low.kind = PROP_CONST;
17905 high.kind = PROP_CONST;
17906 high.data.const_val = 0;
17907
4fae6e18
JK
17908 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17909 omitting DW_AT_lower_bound. */
17910 switch (cu->language)
6e70227d 17911 {
4fae6e18
JK
17912 case language_c:
17913 case language_cplus:
729efb13 17914 low.data.const_val = 0;
4fae6e18
JK
17915 low_default_is_valid = 1;
17916 break;
17917 case language_fortran:
729efb13 17918 low.data.const_val = 1;
4fae6e18
JK
17919 low_default_is_valid = 1;
17920 break;
17921 case language_d:
4fae6e18 17922 case language_objc:
c44af4eb 17923 case language_rust:
729efb13 17924 low.data.const_val = 0;
4fae6e18
JK
17925 low_default_is_valid = (cu->header.version >= 4);
17926 break;
17927 case language_ada:
17928 case language_m2:
17929 case language_pascal:
729efb13 17930 low.data.const_val = 1;
4fae6e18
JK
17931 low_default_is_valid = (cu->header.version >= 4);
17932 break;
17933 default:
729efb13 17934 low.data.const_val = 0;
4fae6e18
JK
17935 low_default_is_valid = 0;
17936 break;
a02abb62
JB
17937 }
17938
e142c38c 17939 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 17940 if (attr)
9a49df9d 17941 attr_to_dynamic_prop (attr, die, cu, &low, base_type);
4fae6e18 17942 else if (!low_default_is_valid)
b98664d3 17943 complaint (_("Missing DW_AT_lower_bound "
9d8780f0
SM
17944 "- DIE at %s [in module %s]"),
17945 sect_offset_str (die->sect_off),
518817b3 17946 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
a02abb62 17947
506f5c41
TV
17948 struct attribute *attr_ub, *attr_count;
17949 attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
9a49df9d 17950 if (!attr_to_dynamic_prop (attr, die, cu, &high, base_type))
e77813c8 17951 {
506f5c41 17952 attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
9a49df9d 17953 if (attr_to_dynamic_prop (attr, die, cu, &high, base_type))
6b662e19 17954 {
c451ebe5
SA
17955 /* If bounds are constant do the final calculation here. */
17956 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17957 high.data.const_val = low.data.const_val + high.data.const_val - 1;
17958 else
17959 high_bound_is_count = 1;
c2ff108b 17960 }
506f5c41
TV
17961 else
17962 {
17963 if (attr_ub != NULL)
17964 complaint (_("Unresolved DW_AT_upper_bound "
17965 "- DIE at %s [in module %s]"),
17966 sect_offset_str (die->sect_off),
17967 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17968 if (attr_count != NULL)
17969 complaint (_("Unresolved DW_AT_count "
17970 "- DIE at %s [in module %s]"),
17971 sect_offset_str (die->sect_off),
17972 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17973 }
e77813c8 17974 }
a02abb62 17975
4e962e74
TT
17976 LONGEST bias = 0;
17977 struct attribute *bias_attr = dwarf2_attr (die, DW_AT_GNU_bias, cu);
17978 if (bias_attr != nullptr && attr_form_is_constant (bias_attr))
17979 bias = dwarf2_get_attr_constant_value (bias_attr, 0);
17980
dbb9c2b1
JB
17981 /* Normally, the DWARF producers are expected to use a signed
17982 constant form (Eg. DW_FORM_sdata) to express negative bounds.
17983 But this is unfortunately not always the case, as witnessed
17984 with GCC, for instance, where the ambiguous DW_FORM_dataN form
17985 is used instead. To work around that ambiguity, we treat
17986 the bounds as signed, and thus sign-extend their values, when
17987 the base type is signed. */
6e70227d 17988 negative_mask =
d359392f 17989 -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
729efb13
SA
17990 if (low.kind == PROP_CONST
17991 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17992 low.data.const_val |= negative_mask;
17993 if (high.kind == PROP_CONST
17994 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17995 high.data.const_val |= negative_mask;
43bbcdc2 17996
4e962e74 17997 range_type = create_range_type (NULL, orig_base_type, &low, &high, bias);
a02abb62 17998
c451ebe5
SA
17999 if (high_bound_is_count)
18000 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
18001
c2ff108b
JK
18002 /* Ada expects an empty array on no boundary attributes. */
18003 if (attr == NULL && cu->language != language_ada)
729efb13 18004 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 18005
39cbfefa
DJ
18006 name = dwarf2_name (die, cu);
18007 if (name)
18008 TYPE_NAME (range_type) = name;
6e70227d 18009
e142c38c 18010 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
18011 if (attr)
18012 TYPE_LENGTH (range_type) = DW_UNSND (attr);
18013
2b4424c3
TT
18014 maybe_set_alignment (cu, die, range_type);
18015
7e314c57
JK
18016 set_die_type (die, range_type, cu);
18017
18018 /* set_die_type should be already done. */
b4ba55a1
JB
18019 set_descriptive_type (range_type, die, cu);
18020
7e314c57 18021 return range_type;
a02abb62 18022}
6e70227d 18023
f792889a 18024static struct type *
81a17f79
JB
18025read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
18026{
18027 struct type *type;
81a17f79 18028
518817b3
SM
18029 type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
18030 NULL);
0114d602 18031 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 18032
74a2f8ff
JB
18033 /* In Ada, an unspecified type is typically used when the description
18034 of the type is defered to a different unit. When encountering
18035 such a type, we treat it as a stub, and try to resolve it later on,
18036 when needed. */
18037 if (cu->language == language_ada)
18038 TYPE_STUB (type) = 1;
18039
f792889a 18040 return set_die_type (die, type, cu);
81a17f79 18041}
a02abb62 18042
639d11d3
DC
18043/* Read a single die and all its descendents. Set the die's sibling
18044 field to NULL; set other fields in the die correctly, and set all
18045 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
18046 location of the info_ptr after reading all of those dies. PARENT
18047 is the parent of the die in question. */
18048
18049static struct die_info *
dee91e82 18050read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
18051 const gdb_byte *info_ptr,
18052 const gdb_byte **new_info_ptr,
dee91e82 18053 struct die_info *parent)
639d11d3
DC
18054{
18055 struct die_info *die;
d521ce57 18056 const gdb_byte *cur_ptr;
639d11d3
DC
18057 int has_children;
18058
bf6af496 18059 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
18060 if (die == NULL)
18061 {
18062 *new_info_ptr = cur_ptr;
18063 return NULL;
18064 }
93311388 18065 store_in_ref_table (die, reader->cu);
639d11d3
DC
18066
18067 if (has_children)
bf6af496 18068 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
18069 else
18070 {
18071 die->child = NULL;
18072 *new_info_ptr = cur_ptr;
18073 }
18074
18075 die->sibling = NULL;
18076 die->parent = parent;
18077 return die;
18078}
18079
18080/* Read a die, all of its descendents, and all of its siblings; set
18081 all of the fields of all of the dies correctly. Arguments are as
18082 in read_die_and_children. */
18083
18084static struct die_info *
bf6af496 18085read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
18086 const gdb_byte *info_ptr,
18087 const gdb_byte **new_info_ptr,
bf6af496 18088 struct die_info *parent)
639d11d3
DC
18089{
18090 struct die_info *first_die, *last_sibling;
d521ce57 18091 const gdb_byte *cur_ptr;
639d11d3 18092
c906108c 18093 cur_ptr = info_ptr;
639d11d3
DC
18094 first_die = last_sibling = NULL;
18095
18096 while (1)
c906108c 18097 {
639d11d3 18098 struct die_info *die
dee91e82 18099 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 18100
1d325ec1 18101 if (die == NULL)
c906108c 18102 {
639d11d3
DC
18103 *new_info_ptr = cur_ptr;
18104 return first_die;
c906108c 18105 }
1d325ec1
DJ
18106
18107 if (!first_die)
18108 first_die = die;
c906108c 18109 else
1d325ec1
DJ
18110 last_sibling->sibling = die;
18111
18112 last_sibling = die;
c906108c 18113 }
c906108c
SS
18114}
18115
bf6af496
DE
18116/* Read a die, all of its descendents, and all of its siblings; set
18117 all of the fields of all of the dies correctly. Arguments are as
18118 in read_die_and_children.
18119 This the main entry point for reading a DIE and all its children. */
18120
18121static struct die_info *
18122read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
18123 const gdb_byte *info_ptr,
18124 const gdb_byte **new_info_ptr,
bf6af496
DE
18125 struct die_info *parent)
18126{
18127 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18128 new_info_ptr, parent);
18129
b4f54984 18130 if (dwarf_die_debug)
bf6af496
DE
18131 {
18132 fprintf_unfiltered (gdb_stdlog,
18133 "Read die from %s@0x%x of %s:\n",
a32a8923 18134 get_section_name (reader->die_section),
bf6af496
DE
18135 (unsigned) (info_ptr - reader->die_section->buffer),
18136 bfd_get_filename (reader->abfd));
b4f54984 18137 dump_die (die, dwarf_die_debug);
bf6af496
DE
18138 }
18139
18140 return die;
18141}
18142
3019eac3
DE
18143/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18144 attributes.
18145 The caller is responsible for filling in the extra attributes
18146 and updating (*DIEP)->num_attrs.
18147 Set DIEP to point to a newly allocated die with its information,
18148 except for its child, sibling, and parent fields.
18149 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 18150
d521ce57 18151static const gdb_byte *
3019eac3 18152read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 18153 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 18154 int *has_children, int num_extra_attrs)
93311388 18155{
b64f50a1 18156 unsigned int abbrev_number, bytes_read, i;
93311388
DE
18157 struct abbrev_info *abbrev;
18158 struct die_info *die;
18159 struct dwarf2_cu *cu = reader->cu;
18160 bfd *abfd = reader->abfd;
18161
9c541725 18162 sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
93311388
DE
18163 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18164 info_ptr += bytes_read;
18165 if (!abbrev_number)
18166 {
18167 *diep = NULL;
18168 *has_children = 0;
18169 return info_ptr;
18170 }
18171
685af9cd 18172 abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
93311388 18173 if (!abbrev)
348e048f
DE
18174 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18175 abbrev_number,
18176 bfd_get_filename (abfd));
18177
3019eac3 18178 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
9c541725 18179 die->sect_off = sect_off;
93311388
DE
18180 die->tag = abbrev->tag;
18181 die->abbrev = abbrev_number;
18182
3019eac3
DE
18183 /* Make the result usable.
18184 The caller needs to update num_attrs after adding the extra
18185 attributes. */
93311388
DE
18186 die->num_attrs = abbrev->num_attrs;
18187
18188 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
18189 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18190 info_ptr);
93311388
DE
18191
18192 *diep = die;
18193 *has_children = abbrev->has_children;
18194 return info_ptr;
18195}
18196
3019eac3
DE
18197/* Read a die and all its attributes.
18198 Set DIEP to point to a newly allocated die with its information,
18199 except for its child, sibling, and parent fields.
18200 Set HAS_CHILDREN to tell whether the die has children or not. */
18201
d521ce57 18202static const gdb_byte *
3019eac3 18203read_full_die (const struct die_reader_specs *reader,
d521ce57 18204 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
18205 int *has_children)
18206{
d521ce57 18207 const gdb_byte *result;
bf6af496
DE
18208
18209 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18210
b4f54984 18211 if (dwarf_die_debug)
bf6af496
DE
18212 {
18213 fprintf_unfiltered (gdb_stdlog,
18214 "Read die from %s@0x%x of %s:\n",
a32a8923 18215 get_section_name (reader->die_section),
bf6af496
DE
18216 (unsigned) (info_ptr - reader->die_section->buffer),
18217 bfd_get_filename (reader->abfd));
b4f54984 18218 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
18219 }
18220
18221 return result;
3019eac3 18222}
433df2d4
DE
18223\f
18224/* Abbreviation tables.
3019eac3 18225
433df2d4 18226 In DWARF version 2, the description of the debugging information is
c906108c
SS
18227 stored in a separate .debug_abbrev section. Before we read any
18228 dies from a section we read in all abbreviations and install them
433df2d4
DE
18229 in a hash table. */
18230
18231/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
18232
685af9cd
TT
18233struct abbrev_info *
18234abbrev_table::alloc_abbrev ()
433df2d4
DE
18235{
18236 struct abbrev_info *abbrev;
18237
685af9cd 18238 abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
433df2d4 18239 memset (abbrev, 0, sizeof (struct abbrev_info));
8d749320 18240
433df2d4
DE
18241 return abbrev;
18242}
18243
18244/* Add an abbreviation to the table. */
c906108c 18245
685af9cd
TT
18246void
18247abbrev_table::add_abbrev (unsigned int abbrev_number,
18248 struct abbrev_info *abbrev)
433df2d4
DE
18249{
18250 unsigned int hash_number;
18251
18252 hash_number = abbrev_number % ABBREV_HASH_SIZE;
4a17f768
YQ
18253 abbrev->next = m_abbrevs[hash_number];
18254 m_abbrevs[hash_number] = abbrev;
433df2d4 18255}
dee91e82 18256
433df2d4
DE
18257/* Look up an abbrev in the table.
18258 Returns NULL if the abbrev is not found. */
18259
685af9cd
TT
18260struct abbrev_info *
18261abbrev_table::lookup_abbrev (unsigned int abbrev_number)
c906108c 18262{
433df2d4
DE
18263 unsigned int hash_number;
18264 struct abbrev_info *abbrev;
18265
18266 hash_number = abbrev_number % ABBREV_HASH_SIZE;
4a17f768 18267 abbrev = m_abbrevs[hash_number];
433df2d4
DE
18268
18269 while (abbrev)
18270 {
18271 if (abbrev->number == abbrev_number)
18272 return abbrev;
18273 abbrev = abbrev->next;
18274 }
18275 return NULL;
18276}
18277
18278/* Read in an abbrev table. */
18279
685af9cd 18280static abbrev_table_up
ed2dc618
SM
18281abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18282 struct dwarf2_section_info *section,
9c541725 18283 sect_offset sect_off)
433df2d4
DE
18284{
18285 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 18286 bfd *abfd = get_section_bfd_owner (section);
d521ce57 18287 const gdb_byte *abbrev_ptr;
c906108c
SS
18288 struct abbrev_info *cur_abbrev;
18289 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 18290 unsigned int abbrev_form;
f3dd6933
DJ
18291 struct attr_abbrev *cur_attrs;
18292 unsigned int allocated_attrs;
c906108c 18293
685af9cd 18294 abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
c906108c 18295
433df2d4 18296 dwarf2_read_section (objfile, section);
9c541725 18297 abbrev_ptr = section->buffer + to_underlying (sect_off);
c906108c
SS
18298 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18299 abbrev_ptr += bytes_read;
18300
f3dd6933 18301 allocated_attrs = ATTR_ALLOC_CHUNK;
8d749320 18302 cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
6e70227d 18303
0963b4bd 18304 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
18305 while (abbrev_number)
18306 {
685af9cd 18307 cur_abbrev = abbrev_table->alloc_abbrev ();
c906108c
SS
18308
18309 /* read in abbrev header */
18310 cur_abbrev->number = abbrev_number;
aead7601
SM
18311 cur_abbrev->tag
18312 = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
c906108c
SS
18313 abbrev_ptr += bytes_read;
18314 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18315 abbrev_ptr += 1;
18316
18317 /* now read in declarations */
22d2f3ab 18318 for (;;)
c906108c 18319 {
43988095
JK
18320 LONGEST implicit_const;
18321
22d2f3ab
JK
18322 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18323 abbrev_ptr += bytes_read;
18324 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18325 abbrev_ptr += bytes_read;
43988095
JK
18326 if (abbrev_form == DW_FORM_implicit_const)
18327 {
18328 implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18329 &bytes_read);
18330 abbrev_ptr += bytes_read;
18331 }
18332 else
18333 {
18334 /* Initialize it due to a false compiler warning. */
18335 implicit_const = -1;
18336 }
22d2f3ab
JK
18337
18338 if (abbrev_name == 0)
18339 break;
18340
f3dd6933 18341 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 18342 {
f3dd6933
DJ
18343 allocated_attrs += ATTR_ALLOC_CHUNK;
18344 cur_attrs
224c3ddb 18345 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
c906108c 18346 }
ae038cb0 18347
aead7601
SM
18348 cur_attrs[cur_abbrev->num_attrs].name
18349 = (enum dwarf_attribute) abbrev_name;
22d2f3ab 18350 cur_attrs[cur_abbrev->num_attrs].form
aead7601 18351 = (enum dwarf_form) abbrev_form;
43988095 18352 cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
22d2f3ab 18353 ++cur_abbrev->num_attrs;
c906108c
SS
18354 }
18355
8d749320
SM
18356 cur_abbrev->attrs =
18357 XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18358 cur_abbrev->num_attrs);
f3dd6933
DJ
18359 memcpy (cur_abbrev->attrs, cur_attrs,
18360 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18361
685af9cd 18362 abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
c906108c
SS
18363
18364 /* Get next abbreviation.
18365 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
18366 always properly terminated with an abbrev number of 0.
18367 Exit loop if we encounter an abbreviation which we have
18368 already read (which means we are about to read the abbreviations
18369 for the next compile unit) or if the end of the abbreviation
18370 table is reached. */
433df2d4 18371 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
18372 break;
18373 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18374 abbrev_ptr += bytes_read;
685af9cd 18375 if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
c906108c
SS
18376 break;
18377 }
f3dd6933
DJ
18378
18379 xfree (cur_attrs);
433df2d4 18380 return abbrev_table;
c906108c
SS
18381}
18382
72bf9492
DJ
18383/* Returns nonzero if TAG represents a type that we might generate a partial
18384 symbol for. */
18385
18386static int
18387is_type_tag_for_partial (int tag)
18388{
18389 switch (tag)
18390 {
18391#if 0
18392 /* Some types that would be reasonable to generate partial symbols for,
18393 that we don't at present. */
18394 case DW_TAG_array_type:
18395 case DW_TAG_file_type:
18396 case DW_TAG_ptr_to_member_type:
18397 case DW_TAG_set_type:
18398 case DW_TAG_string_type:
18399 case DW_TAG_subroutine_type:
18400#endif
18401 case DW_TAG_base_type:
18402 case DW_TAG_class_type:
680b30c7 18403 case DW_TAG_interface_type:
72bf9492
DJ
18404 case DW_TAG_enumeration_type:
18405 case DW_TAG_structure_type:
18406 case DW_TAG_subrange_type:
18407 case DW_TAG_typedef:
18408 case DW_TAG_union_type:
18409 return 1;
18410 default:
18411 return 0;
18412 }
18413}
18414
18415/* Load all DIEs that are interesting for partial symbols into memory. */
18416
18417static struct partial_die_info *
dee91e82 18418load_partial_dies (const struct die_reader_specs *reader,
d521ce57 18419 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 18420{
dee91e82 18421 struct dwarf2_cu *cu = reader->cu;
518817b3 18422 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
72bf9492 18423 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
72bf9492 18424 unsigned int bytes_read;
5afb4e99 18425 unsigned int load_all = 0;
72bf9492
DJ
18426 int nesting_level = 1;
18427
18428 parent_die = NULL;
18429 last_die = NULL;
18430
7adf1e79
DE
18431 gdb_assert (cu->per_cu != NULL);
18432 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
18433 load_all = 1;
18434
72bf9492
DJ
18435 cu->partial_dies
18436 = htab_create_alloc_ex (cu->header.length / 12,
18437 partial_die_hash,
18438 partial_die_eq,
18439 NULL,
18440 &cu->comp_unit_obstack,
18441 hashtab_obstack_allocate,
18442 dummy_obstack_deallocate);
18443
72bf9492
DJ
18444 while (1)
18445 {
685af9cd 18446 abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
72bf9492
DJ
18447
18448 /* A NULL abbrev means the end of a series of children. */
18449 if (abbrev == NULL)
18450 {
18451 if (--nesting_level == 0)
cd9983dd
YQ
18452 return first_die;
18453
72bf9492
DJ
18454 info_ptr += bytes_read;
18455 last_die = parent_die;
18456 parent_die = parent_die->die_parent;
18457 continue;
18458 }
18459
98bfdba5
PA
18460 /* Check for template arguments. We never save these; if
18461 they're seen, we just mark the parent, and go on our way. */
18462 if (parent_die != NULL
18463 && cu->language == language_cplus
18464 && (abbrev->tag == DW_TAG_template_type_param
18465 || abbrev->tag == DW_TAG_template_value_param))
18466 {
18467 parent_die->has_template_arguments = 1;
18468
18469 if (!load_all)
18470 {
18471 /* We don't need a partial DIE for the template argument. */
dee91e82 18472 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
18473 continue;
18474 }
18475 }
18476
0d99eb77 18477 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
18478 Skip their other children. */
18479 if (!load_all
18480 && cu->language == language_cplus
18481 && parent_die != NULL
18482 && parent_die->tag == DW_TAG_subprogram)
18483 {
dee91e82 18484 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
18485 continue;
18486 }
18487
5afb4e99
DJ
18488 /* Check whether this DIE is interesting enough to save. Normally
18489 we would not be interested in members here, but there may be
18490 later variables referencing them via DW_AT_specification (for
18491 static members). */
18492 if (!load_all
18493 && !is_type_tag_for_partial (abbrev->tag)
72929c62 18494 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
18495 && abbrev->tag != DW_TAG_enumerator
18496 && abbrev->tag != DW_TAG_subprogram
b1dc1806 18497 && abbrev->tag != DW_TAG_inlined_subroutine
bc30ff58 18498 && abbrev->tag != DW_TAG_lexical_block
72bf9492 18499 && abbrev->tag != DW_TAG_variable
5afb4e99 18500 && abbrev->tag != DW_TAG_namespace
f55ee35c 18501 && abbrev->tag != DW_TAG_module
95554aad 18502 && abbrev->tag != DW_TAG_member
74921315
KS
18503 && abbrev->tag != DW_TAG_imported_unit
18504 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
18505 {
18506 /* Otherwise we skip to the next sibling, if any. */
dee91e82 18507 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
18508 continue;
18509 }
18510
6f06d47b
YQ
18511 struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18512 abbrev);
cd9983dd 18513
48fbe735 18514 info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
72bf9492
DJ
18515
18516 /* This two-pass algorithm for processing partial symbols has a
18517 high cost in cache pressure. Thus, handle some simple cases
18518 here which cover the majority of C partial symbols. DIEs
18519 which neither have specification tags in them, nor could have
18520 specification tags elsewhere pointing at them, can simply be
18521 processed and discarded.
18522
18523 This segment is also optional; scan_partial_symbols and
18524 add_partial_symbol will handle these DIEs if we chain
18525 them in normally. When compilers which do not emit large
18526 quantities of duplicate debug information are more common,
18527 this code can probably be removed. */
18528
18529 /* Any complete simple types at the top level (pretty much all
18530 of them, for a language without namespaces), can be processed
18531 directly. */
18532 if (parent_die == NULL
cd9983dd
YQ
18533 && pdi.has_specification == 0
18534 && pdi.is_declaration == 0
18535 && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18536 || pdi.tag == DW_TAG_base_type
18537 || pdi.tag == DW_TAG_subrange_type))
72bf9492 18538 {
cd9983dd 18539 if (building_psymtab && pdi.name != NULL)
67547d89 18540 add_psymbol_to_list (pdi.name, strlen (pdi.name), false,
79748972 18541 VAR_DOMAIN, LOC_TYPEDEF, -1,
75aedd27 18542 psymbol_placement::STATIC,
1762568f 18543 0, cu->language, objfile);
cd9983dd 18544 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
72bf9492
DJ
18545 continue;
18546 }
18547
d8228535
JK
18548 /* The exception for DW_TAG_typedef with has_children above is
18549 a workaround of GCC PR debug/47510. In the case of this complaint
a737d952 18550 type_name_or_error will error on such types later.
d8228535
JK
18551
18552 GDB skipped children of DW_TAG_typedef by the shortcut above and then
18553 it could not find the child DIEs referenced later, this is checked
18554 above. In correct DWARF DW_TAG_typedef should have no children. */
18555
cd9983dd 18556 if (pdi.tag == DW_TAG_typedef && pdi.has_children)
b98664d3 18557 complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
9d8780f0 18558 "- DIE at %s [in module %s]"),
cd9983dd 18559 sect_offset_str (pdi.sect_off), objfile_name (objfile));
d8228535 18560
72bf9492
DJ
18561 /* If we're at the second level, and we're an enumerator, and
18562 our parent has no specification (meaning possibly lives in a
18563 namespace elsewhere), then we can add the partial symbol now
18564 instead of queueing it. */
cd9983dd 18565 if (pdi.tag == DW_TAG_enumerator
72bf9492
DJ
18566 && parent_die != NULL
18567 && parent_die->die_parent == NULL
18568 && parent_die->tag == DW_TAG_enumeration_type
18569 && parent_die->has_specification == 0)
18570 {
cd9983dd 18571 if (pdi.name == NULL)
b98664d3 18572 complaint (_("malformed enumerator DIE ignored"));
72bf9492 18573 else if (building_psymtab)
67547d89 18574 add_psymbol_to_list (pdi.name, strlen (pdi.name), false,
79748972 18575 VAR_DOMAIN, LOC_CONST, -1,
9c37b5ae 18576 cu->language == language_cplus
75aedd27
TT
18577 ? psymbol_placement::GLOBAL
18578 : psymbol_placement::STATIC,
1762568f 18579 0, cu->language, objfile);
72bf9492 18580
cd9983dd 18581 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
72bf9492
DJ
18582 continue;
18583 }
18584
cd9983dd 18585 struct partial_die_info *part_die
6f06d47b 18586 = new (&cu->comp_unit_obstack) partial_die_info (pdi);
cd9983dd 18587
72bf9492
DJ
18588 /* We'll save this DIE so link it in. */
18589 part_die->die_parent = parent_die;
18590 part_die->die_sibling = NULL;
18591 part_die->die_child = NULL;
18592
18593 if (last_die && last_die == parent_die)
18594 last_die->die_child = part_die;
18595 else if (last_die)
18596 last_die->die_sibling = part_die;
18597
18598 last_die = part_die;
18599
18600 if (first_die == NULL)
18601 first_die = part_die;
18602
18603 /* Maybe add the DIE to the hash table. Not all DIEs that we
18604 find interesting need to be in the hash table, because we
18605 also have the parent/sibling/child chains; only those that we
18606 might refer to by offset later during partial symbol reading.
18607
18608 For now this means things that might have be the target of a
18609 DW_AT_specification, DW_AT_abstract_origin, or
18610 DW_AT_extension. DW_AT_extension will refer only to
18611 namespaces; DW_AT_abstract_origin refers to functions (and
18612 many things under the function DIE, but we do not recurse
18613 into function DIEs during partial symbol reading) and
18614 possibly variables as well; DW_AT_specification refers to
18615 declarations. Declarations ought to have the DW_AT_declaration
18616 flag. It happens that GCC forgets to put it in sometimes, but
18617 only for functions, not for types.
18618
18619 Adding more things than necessary to the hash table is harmless
18620 except for the performance cost. Adding too few will result in
5afb4e99
DJ
18621 wasted time in find_partial_die, when we reread the compilation
18622 unit with load_all_dies set. */
72bf9492 18623
5afb4e99 18624 if (load_all
72929c62 18625 || abbrev->tag == DW_TAG_constant
5afb4e99 18626 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
18627 || abbrev->tag == DW_TAG_variable
18628 || abbrev->tag == DW_TAG_namespace
18629 || part_die->is_declaration)
18630 {
18631 void **slot;
18632
18633 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
9c541725
PA
18634 to_underlying (part_die->sect_off),
18635 INSERT);
72bf9492
DJ
18636 *slot = part_die;
18637 }
18638
72bf9492 18639 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 18640 we have no reason to follow the children of structures; for other
98bfdba5
PA
18641 languages we have to, so that we can get at method physnames
18642 to infer fully qualified class names, for DW_AT_specification,
18643 and for C++ template arguments. For C++, we also look one level
18644 inside functions to find template arguments (if the name of the
18645 function does not already contain the template arguments).
bc30ff58 18646
0a4b0913
AB
18647 For Ada and Fortran, we need to scan the children of subprograms
18648 and lexical blocks as well because these languages allow the
18649 definition of nested entities that could be interesting for the
18650 debugger, such as nested subprograms for instance. */
72bf9492 18651 if (last_die->has_children
5afb4e99
DJ
18652 && (load_all
18653 || last_die->tag == DW_TAG_namespace
f55ee35c 18654 || last_die->tag == DW_TAG_module
72bf9492 18655 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
18656 || (cu->language == language_cplus
18657 && last_die->tag == DW_TAG_subprogram
18658 && (last_die->name == NULL
18659 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
18660 || (cu->language != language_c
18661 && (last_die->tag == DW_TAG_class_type
680b30c7 18662 || last_die->tag == DW_TAG_interface_type
72bf9492 18663 || last_die->tag == DW_TAG_structure_type
bc30ff58 18664 || last_die->tag == DW_TAG_union_type))
0a4b0913
AB
18665 || ((cu->language == language_ada
18666 || cu->language == language_fortran)
bc30ff58
JB
18667 && (last_die->tag == DW_TAG_subprogram
18668 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
18669 {
18670 nesting_level++;
18671 parent_die = last_die;
18672 continue;
18673 }
18674
18675 /* Otherwise we skip to the next sibling, if any. */
dee91e82 18676 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
18677
18678 /* Back to the top, do it again. */
18679 }
18680}
18681
6f06d47b
YQ
18682partial_die_info::partial_die_info (sect_offset sect_off_,
18683 struct abbrev_info *abbrev)
18684 : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18685{
18686}
18687
35cc7ed7
YQ
18688/* Read a minimal amount of information into the minimal die structure.
18689 INFO_PTR should point just after the initial uleb128 of a DIE. */
c906108c 18690
48fbe735
YQ
18691const gdb_byte *
18692partial_die_info::read (const struct die_reader_specs *reader,
18693 const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
c906108c 18694{
dee91e82 18695 struct dwarf2_cu *cu = reader->cu;
518817b3
SM
18696 struct dwarf2_per_objfile *dwarf2_per_objfile
18697 = cu->per_cu->dwarf2_per_objfile;
fa238c03 18698 unsigned int i;
c5aa993b 18699 int has_low_pc_attr = 0;
c906108c 18700 int has_high_pc_attr = 0;
91da1414 18701 int high_pc_relative = 0;
c906108c 18702
fd0a254f 18703 for (i = 0; i < abbrev.num_attrs; ++i)
c906108c 18704 {
48fbe735
YQ
18705 struct attribute attr;
18706
fd0a254f 18707 info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
c906108c
SS
18708
18709 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 18710 partial symbol table. */
c906108c
SS
18711 switch (attr.name)
18712 {
18713 case DW_AT_name:
48fbe735 18714 switch (tag)
71c25dea
TT
18715 {
18716 case DW_TAG_compile_unit:
95554aad 18717 case DW_TAG_partial_unit:
348e048f 18718 case DW_TAG_type_unit:
71c25dea
TT
18719 /* Compilation units have a DW_AT_name that is a filename, not
18720 a source language identifier. */
18721 case DW_TAG_enumeration_type:
18722 case DW_TAG_enumerator:
18723 /* These tags always have simple identifiers already; no need
18724 to canonicalize them. */
48fbe735 18725 name = DW_STRING (&attr);
71c25dea
TT
18726 break;
18727 default:
48fbe735
YQ
18728 {
18729 struct objfile *objfile = dwarf2_per_objfile->objfile;
18730
18731 name
18732 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18733 &objfile->per_bfd->storage_obstack);
18734 }
71c25dea
TT
18735 break;
18736 }
c906108c 18737 break;
31ef98ae 18738 case DW_AT_linkage_name:
c906108c 18739 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
18740 /* Note that both forms of linkage name might appear. We
18741 assume they will be the same, and we only store the last
18742 one we see. */
48fbe735 18743 linkage_name = DW_STRING (&attr);
c906108c
SS
18744 break;
18745 case DW_AT_low_pc:
18746 has_low_pc_attr = 1;
48fbe735 18747 lowpc = attr_value_as_address (&attr);
c906108c
SS
18748 break;
18749 case DW_AT_high_pc:
18750 has_high_pc_attr = 1;
48fbe735 18751 highpc = attr_value_as_address (&attr);
31aa7e4e
JB
18752 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18753 high_pc_relative = 1;
c906108c
SS
18754 break;
18755 case DW_AT_location:
0963b4bd 18756 /* Support the .debug_loc offsets. */
8e19ed76
PS
18757 if (attr_form_is_block (&attr))
18758 {
48fbe735 18759 d.locdesc = DW_BLOCK (&attr);
8e19ed76 18760 }
3690dd37 18761 else if (attr_form_is_section_offset (&attr))
8e19ed76 18762 {
4d3c2250 18763 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
18764 }
18765 else
18766 {
4d3c2250
KB
18767 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18768 "partial symbol information");
8e19ed76 18769 }
c906108c 18770 break;
c906108c 18771 case DW_AT_external:
48fbe735 18772 is_external = DW_UNSND (&attr);
c906108c
SS
18773 break;
18774 case DW_AT_declaration:
48fbe735 18775 is_declaration = DW_UNSND (&attr);
c906108c
SS
18776 break;
18777 case DW_AT_type:
48fbe735 18778 has_type = 1;
c906108c
SS
18779 break;
18780 case DW_AT_abstract_origin:
18781 case DW_AT_specification:
72bf9492 18782 case DW_AT_extension:
48fbe735
YQ
18783 has_specification = 1;
18784 spec_offset = dwarf2_get_ref_die_offset (&attr);
18785 spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
36586728 18786 || cu->per_cu->is_dwz);
c906108c
SS
18787 break;
18788 case DW_AT_sibling:
18789 /* Ignore absolute siblings, they might point outside of
18790 the current compile unit. */
18791 if (attr.form == DW_FORM_ref_addr)
b98664d3 18792 complaint (_("ignoring absolute DW_AT_sibling"));
c906108c 18793 else
b9502d3f 18794 {
48fbe735 18795 const gdb_byte *buffer = reader->buffer;
9c541725
PA
18796 sect_offset off = dwarf2_get_ref_die_offset (&attr);
18797 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
b9502d3f
WN
18798
18799 if (sibling_ptr < info_ptr)
b98664d3 18800 complaint (_("DW_AT_sibling points backwards"));
22869d73
KS
18801 else if (sibling_ptr > reader->buffer_end)
18802 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f 18803 else
48fbe735 18804 sibling = sibling_ptr;
b9502d3f 18805 }
c906108c 18806 break;
fa4028e9 18807 case DW_AT_byte_size:
48fbe735 18808 has_byte_size = 1;
fa4028e9 18809 break;
ff908ebf 18810 case DW_AT_const_value:
48fbe735 18811 has_const_value = 1;
ff908ebf 18812 break;
68511cec
CES
18813 case DW_AT_calling_convention:
18814 /* DWARF doesn't provide a way to identify a program's source-level
18815 entry point. DW_AT_calling_convention attributes are only meant
18816 to describe functions' calling conventions.
18817
18818 However, because it's a necessary piece of information in
0c1b455e
TT
18819 Fortran, and before DWARF 4 DW_CC_program was the only
18820 piece of debugging information whose definition refers to
18821 a 'main program' at all, several compilers marked Fortran
18822 main programs with DW_CC_program --- even when those
18823 functions use the standard calling conventions.
18824
18825 Although DWARF now specifies a way to provide this
18826 information, we support this practice for backward
18827 compatibility. */
68511cec 18828 if (DW_UNSND (&attr) == DW_CC_program
0c1b455e 18829 && cu->language == language_fortran)
48fbe735 18830 main_subprogram = 1;
68511cec 18831 break;
481860b3
GB
18832 case DW_AT_inline:
18833 if (DW_UNSND (&attr) == DW_INL_inlined
18834 || DW_UNSND (&attr) == DW_INL_declared_inlined)
48fbe735 18835 may_be_inlined = 1;
481860b3 18836 break;
95554aad
TT
18837
18838 case DW_AT_import:
48fbe735 18839 if (tag == DW_TAG_imported_unit)
36586728 18840 {
48fbe735
YQ
18841 d.sect_off = dwarf2_get_ref_die_offset (&attr);
18842 is_dwz = (attr.form == DW_FORM_GNU_ref_alt
36586728
TT
18843 || cu->per_cu->is_dwz);
18844 }
95554aad
TT
18845 break;
18846
0c1b455e 18847 case DW_AT_main_subprogram:
48fbe735 18848 main_subprogram = DW_UNSND (&attr);
0c1b455e
TT
18849 break;
18850
05caa1d2
TT
18851 case DW_AT_ranges:
18852 {
18853 /* It would be nice to reuse dwarf2_get_pc_bounds here,
18854 but that requires a full DIE, so instead we just
18855 reimplement it. */
18856 int need_ranges_base = tag != DW_TAG_compile_unit;
18857 unsigned int ranges_offset = (DW_UNSND (&attr)
18858 + (need_ranges_base
18859 ? cu->ranges_base
18860 : 0));
18861
18862 /* Value of the DW_AT_ranges attribute is the offset in the
18863 .debug_ranges section. */
18864 if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
18865 nullptr))
18866 has_pc_info = 1;
18867 }
18868 break;
18869
c906108c
SS
18870 default:
18871 break;
18872 }
18873 }
18874
10d06d82
TT
18875 /* For Ada, if both the name and the linkage name appear, we prefer
18876 the latter. This lets "catch exception" work better, regardless
18877 of the order in which the name and linkage name were emitted.
18878 Really, though, this is just a workaround for the fact that gdb
18879 doesn't store both the name and the linkage name. */
18880 if (cu->language == language_ada && linkage_name != nullptr)
18881 name = linkage_name;
18882
91da1414 18883 if (high_pc_relative)
48fbe735 18884 highpc += lowpc;
91da1414 18885
9373cf26
JK
18886 if (has_low_pc_attr && has_high_pc_attr)
18887 {
18888 /* When using the GNU linker, .gnu.linkonce. sections are used to
18889 eliminate duplicate copies of functions and vtables and such.
18890 The linker will arbitrarily choose one and discard the others.
18891 The AT_*_pc values for such functions refer to local labels in
18892 these sections. If the section from that file was discarded, the
18893 labels are not in the output, so the relocs get a value of 0.
18894 If this is a discarded function, mark the pc bounds as invalid,
18895 so that GDB will ignore it. */
48fbe735 18896 if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
9373cf26 18897 {
48fbe735 18898 struct objfile *objfile = dwarf2_per_objfile->objfile;
bb5ed363 18899 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26 18900
b98664d3 18901 complaint (_("DW_AT_low_pc %s is zero "
9d8780f0 18902 "for DIE at %s [in module %s]"),
48fbe735
YQ
18903 paddress (gdbarch, lowpc),
18904 sect_offset_str (sect_off),
9d8780f0 18905 objfile_name (objfile));
9373cf26
JK
18906 }
18907 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
48fbe735 18908 else if (lowpc >= highpc)
9373cf26 18909 {
48fbe735 18910 struct objfile *objfile = dwarf2_per_objfile->objfile;
bb5ed363 18911 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26 18912
b98664d3 18913 complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
9d8780f0 18914 "for DIE at %s [in module %s]"),
48fbe735
YQ
18915 paddress (gdbarch, lowpc),
18916 paddress (gdbarch, highpc),
18917 sect_offset_str (sect_off),
9c541725 18918 objfile_name (objfile));
9373cf26
JK
18919 }
18920 else
48fbe735 18921 has_pc_info = 1;
9373cf26 18922 }
85cbf3d3 18923
c906108c
SS
18924 return info_ptr;
18925}
18926
72bf9492
DJ
18927/* Find a cached partial DIE at OFFSET in CU. */
18928
d590ff25
YQ
18929struct partial_die_info *
18930dwarf2_cu::find_partial_die (sect_offset sect_off)
72bf9492
DJ
18931{
18932 struct partial_die_info *lookup_die = NULL;
6f06d47b 18933 struct partial_die_info part_die (sect_off);
72bf9492 18934
9a3c8263 18935 lookup_die = ((struct partial_die_info *)
d590ff25 18936 htab_find_with_hash (partial_dies, &part_die,
9c541725 18937 to_underlying (sect_off)));
72bf9492 18938
72bf9492
DJ
18939 return lookup_die;
18940}
18941
348e048f
DE
18942/* Find a partial DIE at OFFSET, which may or may not be in CU,
18943 except in the case of .debug_types DIEs which do not reference
18944 outside their CU (they do however referencing other types via
55f1336d 18945 DW_FORM_ref_sig8). */
72bf9492 18946
122cf0f2 18947static const struct cu_partial_die_info
9c541725 18948find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 18949{
518817b3
SM
18950 struct dwarf2_per_objfile *dwarf2_per_objfile
18951 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 18952 struct objfile *objfile = dwarf2_per_objfile->objfile;
5afb4e99
DJ
18953 struct dwarf2_per_cu_data *per_cu = NULL;
18954 struct partial_die_info *pd = NULL;
72bf9492 18955
36586728 18956 if (offset_in_dwz == cu->per_cu->is_dwz
9c541725 18957 && offset_in_cu_p (&cu->header, sect_off))
5afb4e99 18958 {
d590ff25 18959 pd = cu->find_partial_die (sect_off);
5afb4e99 18960 if (pd != NULL)
fb816e8b 18961 return { cu, pd };
0d99eb77
DE
18962 /* We missed recording what we needed.
18963 Load all dies and try again. */
18964 per_cu = cu->per_cu;
5afb4e99 18965 }
0d99eb77
DE
18966 else
18967 {
18968 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 18969 if (cu->per_cu->is_debug_types)
0d99eb77 18970 {
9d8780f0
SM
18971 error (_("Dwarf Error: Type Unit at offset %s contains"
18972 " external reference to offset %s [in module %s].\n"),
18973 sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
0d99eb77
DE
18974 bfd_get_filename (objfile->obfd));
18975 }
9c541725 18976 per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
ed2dc618 18977 dwarf2_per_objfile);
72bf9492 18978
0d99eb77
DE
18979 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18980 load_partial_comp_unit (per_cu);
ae038cb0 18981
0d99eb77 18982 per_cu->cu->last_used = 0;
d590ff25 18983 pd = per_cu->cu->find_partial_die (sect_off);
0d99eb77 18984 }
5afb4e99 18985
dee91e82
DE
18986 /* If we didn't find it, and not all dies have been loaded,
18987 load them all and try again. */
18988
5afb4e99
DJ
18989 if (pd == NULL && per_cu->load_all_dies == 0)
18990 {
5afb4e99 18991 per_cu->load_all_dies = 1;
fd820528
DE
18992
18993 /* This is nasty. When we reread the DIEs, somewhere up the call chain
18994 THIS_CU->cu may already be in use. So we can't just free it and
18995 replace its DIEs with the ones we read in. Instead, we leave those
18996 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18997 and clobber THIS_CU->cu->partial_dies with the hash table for the new
18998 set. */
dee91e82 18999 load_partial_comp_unit (per_cu);
5afb4e99 19000
d590ff25 19001 pd = per_cu->cu->find_partial_die (sect_off);
5afb4e99
DJ
19002 }
19003
19004 if (pd == NULL)
19005 internal_error (__FILE__, __LINE__,
9d8780f0 19006 _("could not find partial DIE %s "
3e43a32a 19007 "in cache [from module %s]\n"),
9d8780f0 19008 sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
fb816e8b 19009 return { per_cu->cu, pd };
72bf9492
DJ
19010}
19011
abc72ce4
DE
19012/* See if we can figure out if the class lives in a namespace. We do
19013 this by looking for a member function; its demangled name will
19014 contain namespace info, if there is any. */
19015
19016static void
19017guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
19018 struct dwarf2_cu *cu)
19019{
19020 /* NOTE: carlton/2003-10-07: Getting the info this way changes
19021 what template types look like, because the demangler
19022 frequently doesn't give the same name as the debug info. We
19023 could fix this by only using the demangled name to get the
19024 prefix (but see comment in read_structure_type). */
19025
19026 struct partial_die_info *real_pdi;
19027 struct partial_die_info *child_pdi;
19028
19029 /* If this DIE (this DIE's specification, if any) has a parent, then
19030 we should not do this. We'll prepend the parent's fully qualified
19031 name when we create the partial symbol. */
19032
19033 real_pdi = struct_pdi;
19034 while (real_pdi->has_specification)
fb816e8b 19035 {
122cf0f2
AB
19036 auto res = find_partial_die (real_pdi->spec_offset,
19037 real_pdi->spec_is_dwz, cu);
fb816e8b
TV
19038 real_pdi = res.pdi;
19039 cu = res.cu;
19040 }
abc72ce4
DE
19041
19042 if (real_pdi->die_parent != NULL)
19043 return;
19044
19045 for (child_pdi = struct_pdi->die_child;
19046 child_pdi != NULL;
19047 child_pdi = child_pdi->die_sibling)
19048 {
19049 if (child_pdi->tag == DW_TAG_subprogram
19050 && child_pdi->linkage_name != NULL)
19051 {
19052 char *actual_class_name
19053 = language_class_name_from_physname (cu->language_defn,
19054 child_pdi->linkage_name);
19055 if (actual_class_name != NULL)
19056 {
518817b3 19057 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
abc72ce4 19058 struct_pdi->name
021887d8
TT
19059 = obstack_strdup (&objfile->per_bfd->storage_obstack,
19060 actual_class_name);
abc72ce4
DE
19061 xfree (actual_class_name);
19062 }
19063 break;
19064 }
19065 }
19066}
19067
52356b79
YQ
19068void
19069partial_die_info::fixup (struct dwarf2_cu *cu)
72bf9492 19070{
abc72ce4
DE
19071 /* Once we've fixed up a die, there's no point in doing so again.
19072 This also avoids a memory leak if we were to call
19073 guess_partial_die_structure_name multiple times. */
52356b79 19074 if (fixup_called)
abc72ce4
DE
19075 return;
19076
72bf9492
DJ
19077 /* If we found a reference attribute and the DIE has no name, try
19078 to find a name in the referred to DIE. */
19079
52356b79 19080 if (name == NULL && has_specification)
72bf9492
DJ
19081 {
19082 struct partial_die_info *spec_die;
72bf9492 19083
122cf0f2 19084 auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
fb816e8b
TV
19085 spec_die = res.pdi;
19086 cu = res.cu;
72bf9492 19087
52356b79 19088 spec_die->fixup (cu);
72bf9492
DJ
19089
19090 if (spec_die->name)
19091 {
52356b79 19092 name = spec_die->name;
72bf9492
DJ
19093
19094 /* Copy DW_AT_external attribute if it is set. */
19095 if (spec_die->is_external)
52356b79 19096 is_external = spec_die->is_external;
72bf9492
DJ
19097 }
19098 }
19099
19100 /* Set default names for some unnamed DIEs. */
72bf9492 19101
52356b79
YQ
19102 if (name == NULL && tag == DW_TAG_namespace)
19103 name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 19104
abc72ce4
DE
19105 /* If there is no parent die to provide a namespace, and there are
19106 children, see if we can determine the namespace from their linkage
122d1940 19107 name. */
abc72ce4 19108 if (cu->language == language_cplus
fd5866f6 19109 && !cu->per_cu->dwarf2_per_objfile->types.empty ()
52356b79
YQ
19110 && die_parent == NULL
19111 && has_children
19112 && (tag == DW_TAG_class_type
19113 || tag == DW_TAG_structure_type
19114 || tag == DW_TAG_union_type))
19115 guess_partial_die_structure_name (this, cu);
abc72ce4 19116
53832f31
TT
19117 /* GCC might emit a nameless struct or union that has a linkage
19118 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
52356b79
YQ
19119 if (name == NULL
19120 && (tag == DW_TAG_class_type
19121 || tag == DW_TAG_interface_type
19122 || tag == DW_TAG_structure_type
19123 || tag == DW_TAG_union_type)
19124 && linkage_name != NULL)
53832f31
TT
19125 {
19126 char *demangled;
19127
52356b79 19128 demangled = gdb_demangle (linkage_name, DMGL_TYPES);
53832f31
TT
19129 if (demangled)
19130 {
96408a79
SA
19131 const char *base;
19132
19133 /* Strip any leading namespaces/classes, keep only the base name.
19134 DW_AT_name for named DIEs does not contain the prefixes. */
19135 base = strrchr (demangled, ':');
19136 if (base && base > demangled && base[-1] == ':')
19137 base++;
19138 else
19139 base = demangled;
19140
518817b3 19141 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
021887d8 19142 name = obstack_strdup (&objfile->per_bfd->storage_obstack, base);
53832f31
TT
19143 xfree (demangled);
19144 }
19145 }
19146
52356b79 19147 fixup_called = 1;
72bf9492
DJ
19148}
19149
a8329558 19150/* Read an attribute value described by an attribute form. */
c906108c 19151
d521ce57 19152static const gdb_byte *
dee91e82
DE
19153read_attribute_value (const struct die_reader_specs *reader,
19154 struct attribute *attr, unsigned form,
43988095 19155 LONGEST implicit_const, const gdb_byte *info_ptr)
c906108c 19156{
dee91e82 19157 struct dwarf2_cu *cu = reader->cu;
518817b3
SM
19158 struct dwarf2_per_objfile *dwarf2_per_objfile
19159 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 19160 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 19161 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 19162 bfd *abfd = reader->abfd;
e7c27a73 19163 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
19164 unsigned int bytes_read;
19165 struct dwarf_block *blk;
19166
aead7601 19167 attr->form = (enum dwarf_form) form;
a8329558 19168 switch (form)
c906108c 19169 {
c906108c 19170 case DW_FORM_ref_addr:
ae411497 19171 if (cu->header.version == 2)
4568ecf9 19172 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 19173 else
4568ecf9
DE
19174 DW_UNSND (attr) = read_offset (abfd, info_ptr,
19175 &cu->header, &bytes_read);
ae411497
TT
19176 info_ptr += bytes_read;
19177 break;
36586728
TT
19178 case DW_FORM_GNU_ref_alt:
19179 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19180 info_ptr += bytes_read;
19181 break;
ae411497 19182 case DW_FORM_addr:
e7c27a73 19183 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 19184 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 19185 info_ptr += bytes_read;
c906108c
SS
19186 break;
19187 case DW_FORM_block2:
7b5a2f43 19188 blk = dwarf_alloc_block (cu);
c906108c
SS
19189 blk->size = read_2_bytes (abfd, info_ptr);
19190 info_ptr += 2;
19191 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19192 info_ptr += blk->size;
19193 DW_BLOCK (attr) = blk;
19194 break;
19195 case DW_FORM_block4:
7b5a2f43 19196 blk = dwarf_alloc_block (cu);
c906108c
SS
19197 blk->size = read_4_bytes (abfd, info_ptr);
19198 info_ptr += 4;
19199 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19200 info_ptr += blk->size;
19201 DW_BLOCK (attr) = blk;
19202 break;
19203 case DW_FORM_data2:
19204 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19205 info_ptr += 2;
19206 break;
19207 case DW_FORM_data4:
19208 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19209 info_ptr += 4;
19210 break;
19211 case DW_FORM_data8:
19212 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19213 info_ptr += 8;
19214 break;
0224619f
JK
19215 case DW_FORM_data16:
19216 blk = dwarf_alloc_block (cu);
19217 blk->size = 16;
19218 blk->data = read_n_bytes (abfd, info_ptr, 16);
19219 info_ptr += 16;
19220 DW_BLOCK (attr) = blk;
19221 break;
2dc7f7b3
TT
19222 case DW_FORM_sec_offset:
19223 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19224 info_ptr += bytes_read;
19225 break;
c906108c 19226 case DW_FORM_string:
9b1c24c8 19227 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 19228 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
19229 info_ptr += bytes_read;
19230 break;
4bdf3d34 19231 case DW_FORM_strp:
36586728
TT
19232 if (!cu->per_cu->is_dwz)
19233 {
ed2dc618
SM
19234 DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19235 abfd, info_ptr, cu_header,
36586728
TT
19236 &bytes_read);
19237 DW_STRING_IS_CANONICAL (attr) = 0;
19238 info_ptr += bytes_read;
19239 break;
19240 }
19241 /* FALLTHROUGH */
43988095
JK
19242 case DW_FORM_line_strp:
19243 if (!cu->per_cu->is_dwz)
19244 {
ed2dc618
SM
19245 DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19246 abfd, info_ptr,
43988095
JK
19247 cu_header, &bytes_read);
19248 DW_STRING_IS_CANONICAL (attr) = 0;
19249 info_ptr += bytes_read;
19250 break;
19251 }
19252 /* FALLTHROUGH */
36586728
TT
19253 case DW_FORM_GNU_strp_alt:
19254 {
ed2dc618 19255 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
36586728
TT
19256 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19257 &bytes_read);
19258
ed2dc618
SM
19259 DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19260 dwz, str_offset);
36586728
TT
19261 DW_STRING_IS_CANONICAL (attr) = 0;
19262 info_ptr += bytes_read;
19263 }
4bdf3d34 19264 break;
2dc7f7b3 19265 case DW_FORM_exprloc:
c906108c 19266 case DW_FORM_block:
7b5a2f43 19267 blk = dwarf_alloc_block (cu);
c906108c
SS
19268 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19269 info_ptr += bytes_read;
19270 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19271 info_ptr += blk->size;
19272 DW_BLOCK (attr) = blk;
19273 break;
19274 case DW_FORM_block1:
7b5a2f43 19275 blk = dwarf_alloc_block (cu);
c906108c
SS
19276 blk->size = read_1_byte (abfd, info_ptr);
19277 info_ptr += 1;
19278 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19279 info_ptr += blk->size;
19280 DW_BLOCK (attr) = blk;
19281 break;
19282 case DW_FORM_data1:
19283 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19284 info_ptr += 1;
19285 break;
19286 case DW_FORM_flag:
19287 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19288 info_ptr += 1;
19289 break;
2dc7f7b3
TT
19290 case DW_FORM_flag_present:
19291 DW_UNSND (attr) = 1;
19292 break;
c906108c
SS
19293 case DW_FORM_sdata:
19294 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19295 info_ptr += bytes_read;
19296 break;
19297 case DW_FORM_udata:
19298 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19299 info_ptr += bytes_read;
19300 break;
19301 case DW_FORM_ref1:
9c541725 19302 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19303 + read_1_byte (abfd, info_ptr));
c906108c
SS
19304 info_ptr += 1;
19305 break;
19306 case DW_FORM_ref2:
9c541725 19307 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19308 + read_2_bytes (abfd, info_ptr));
c906108c
SS
19309 info_ptr += 2;
19310 break;
19311 case DW_FORM_ref4:
9c541725 19312 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19313 + read_4_bytes (abfd, info_ptr));
c906108c
SS
19314 info_ptr += 4;
19315 break;
613e1657 19316 case DW_FORM_ref8:
9c541725 19317 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19318 + read_8_bytes (abfd, info_ptr));
613e1657
KB
19319 info_ptr += 8;
19320 break;
55f1336d 19321 case DW_FORM_ref_sig8:
ac9ec31b 19322 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
19323 info_ptr += 8;
19324 break;
c906108c 19325 case DW_FORM_ref_udata:
9c541725 19326 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
4568ecf9 19327 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
19328 info_ptr += bytes_read;
19329 break;
c906108c 19330 case DW_FORM_indirect:
a8329558
KW
19331 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19332 info_ptr += bytes_read;
43988095
JK
19333 if (form == DW_FORM_implicit_const)
19334 {
19335 implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19336 info_ptr += bytes_read;
19337 }
19338 info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19339 info_ptr);
19340 break;
19341 case DW_FORM_implicit_const:
19342 DW_SND (attr) = implicit_const;
a8329558 19343 break;
336d760d 19344 case DW_FORM_addrx:
3019eac3
DE
19345 case DW_FORM_GNU_addr_index:
19346 if (reader->dwo_file == NULL)
19347 {
19348 /* For now flag a hard error.
19349 Later we can turn this into a complaint. */
19350 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19351 dwarf_form_name (form),
19352 bfd_get_filename (abfd));
19353 }
19354 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19355 info_ptr += bytes_read;
19356 break;
cf532bd1 19357 case DW_FORM_strx:
15f18d14
AT
19358 case DW_FORM_strx1:
19359 case DW_FORM_strx2:
19360 case DW_FORM_strx3:
19361 case DW_FORM_strx4:
3019eac3
DE
19362 case DW_FORM_GNU_str_index:
19363 if (reader->dwo_file == NULL)
19364 {
19365 /* For now flag a hard error.
19366 Later we can turn this into a complaint if warranted. */
19367 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19368 dwarf_form_name (form),
19369 bfd_get_filename (abfd));
19370 }
19371 {
15f18d14
AT
19372 ULONGEST str_index;
19373 if (form == DW_FORM_strx1)
19374 {
19375 str_index = read_1_byte (abfd, info_ptr);
19376 info_ptr += 1;
19377 }
19378 else if (form == DW_FORM_strx2)
19379 {
19380 str_index = read_2_bytes (abfd, info_ptr);
19381 info_ptr += 2;
19382 }
19383 else if (form == DW_FORM_strx3)
19384 {
19385 str_index = read_3_bytes (abfd, info_ptr);
19386 info_ptr += 3;
19387 }
19388 else if (form == DW_FORM_strx4)
19389 {
19390 str_index = read_4_bytes (abfd, info_ptr);
19391 info_ptr += 4;
19392 }
19393 else
19394 {
19395 str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19396 info_ptr += bytes_read;
19397 }
342587c4 19398 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3 19399 DW_STRING_IS_CANONICAL (attr) = 0;
3019eac3
DE
19400 }
19401 break;
c906108c 19402 default:
8a3fe4f8 19403 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
19404 dwarf_form_name (form),
19405 bfd_get_filename (abfd));
c906108c 19406 }
28e94949 19407
36586728 19408 /* Super hack. */
7771576e 19409 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
19410 attr->form = DW_FORM_GNU_ref_alt;
19411
28e94949
JB
19412 /* We have seen instances where the compiler tried to emit a byte
19413 size attribute of -1 which ended up being encoded as an unsigned
19414 0xffffffff. Although 0xffffffff is technically a valid size value,
19415 an object of this size seems pretty unlikely so we can relatively
19416 safely treat these cases as if the size attribute was invalid and
19417 treat them as zero by default. */
19418 if (attr->name == DW_AT_byte_size
19419 && form == DW_FORM_data4
19420 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
19421 {
19422 complaint
b98664d3 19423 (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
43bbcdc2 19424 hex_string (DW_UNSND (attr)));
01c66ae6
JB
19425 DW_UNSND (attr) = 0;
19426 }
28e94949 19427
c906108c
SS
19428 return info_ptr;
19429}
19430
a8329558
KW
19431/* Read an attribute described by an abbreviated attribute. */
19432
d521ce57 19433static const gdb_byte *
dee91e82
DE
19434read_attribute (const struct die_reader_specs *reader,
19435 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 19436 const gdb_byte *info_ptr)
a8329558
KW
19437{
19438 attr->name = abbrev->name;
43988095
JK
19439 return read_attribute_value (reader, attr, abbrev->form,
19440 abbrev->implicit_const, info_ptr);
a8329558
KW
19441}
19442
0963b4bd 19443/* Read dwarf information from a buffer. */
c906108c
SS
19444
19445static unsigned int
a1855c1d 19446read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 19447{
fe1b8b76 19448 return bfd_get_8 (abfd, buf);
c906108c
SS
19449}
19450
19451static int
a1855c1d 19452read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 19453{
fe1b8b76 19454 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
19455}
19456
19457static unsigned int
a1855c1d 19458read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 19459{
fe1b8b76 19460 return bfd_get_16 (abfd, buf);
c906108c
SS
19461}
19462
21ae7a4d 19463static int
a1855c1d 19464read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
19465{
19466 return bfd_get_signed_16 (abfd, buf);
19467}
19468
15f18d14
AT
19469static unsigned int
19470read_3_bytes (bfd *abfd, const gdb_byte *buf)
19471{
19472 unsigned int result = 0;
19473 for (int i = 0; i < 3; ++i)
19474 {
19475 unsigned char byte = bfd_get_8 (abfd, buf);
19476 buf++;
19477 result |= ((unsigned int) byte << (i * 8));
19478 }
19479 return result;
19480}
19481
c906108c 19482static unsigned int
a1855c1d 19483read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 19484{
fe1b8b76 19485 return bfd_get_32 (abfd, buf);
c906108c
SS
19486}
19487
21ae7a4d 19488static int
a1855c1d 19489read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
19490{
19491 return bfd_get_signed_32 (abfd, buf);
19492}
19493
93311388 19494static ULONGEST
a1855c1d 19495read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 19496{
fe1b8b76 19497 return bfd_get_64 (abfd, buf);
c906108c
SS
19498}
19499
19500static CORE_ADDR
d521ce57 19501read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 19502 unsigned int *bytes_read)
c906108c 19503{
e7c27a73 19504 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
19505 CORE_ADDR retval = 0;
19506
107d2387 19507 if (cu_header->signed_addr_p)
c906108c 19508 {
107d2387
AC
19509 switch (cu_header->addr_size)
19510 {
19511 case 2:
fe1b8b76 19512 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
19513 break;
19514 case 4:
fe1b8b76 19515 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
19516 break;
19517 case 8:
fe1b8b76 19518 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
19519 break;
19520 default:
8e65ff28 19521 internal_error (__FILE__, __LINE__,
e2e0b3e5 19522 _("read_address: bad switch, signed [in module %s]"),
659b0389 19523 bfd_get_filename (abfd));
107d2387
AC
19524 }
19525 }
19526 else
19527 {
19528 switch (cu_header->addr_size)
19529 {
19530 case 2:
fe1b8b76 19531 retval = bfd_get_16 (abfd, buf);
107d2387
AC
19532 break;
19533 case 4:
fe1b8b76 19534 retval = bfd_get_32 (abfd, buf);
107d2387
AC
19535 break;
19536 case 8:
fe1b8b76 19537 retval = bfd_get_64 (abfd, buf);
107d2387
AC
19538 break;
19539 default:
8e65ff28 19540 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
19541 _("read_address: bad switch, "
19542 "unsigned [in module %s]"),
659b0389 19543 bfd_get_filename (abfd));
107d2387 19544 }
c906108c 19545 }
64367e0a 19546
107d2387
AC
19547 *bytes_read = cu_header->addr_size;
19548 return retval;
c906108c
SS
19549}
19550
f7ef9339 19551/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
19552 specification allows the initial length to take up either 4 bytes
19553 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
19554 bytes describe the length and all offsets will be 8 bytes in length
19555 instead of 4.
19556
f7ef9339
KB
19557 An older, non-standard 64-bit format is also handled by this
19558 function. The older format in question stores the initial length
19559 as an 8-byte quantity without an escape value. Lengths greater
19560 than 2^32 aren't very common which means that the initial 4 bytes
19561 is almost always zero. Since a length value of zero doesn't make
19562 sense for the 32-bit format, this initial zero can be considered to
19563 be an escape value which indicates the presence of the older 64-bit
19564 format. As written, the code can't detect (old format) lengths
917c78fc
MK
19565 greater than 4GB. If it becomes necessary to handle lengths
19566 somewhat larger than 4GB, we could allow other small values (such
19567 as the non-sensical values of 1, 2, and 3) to also be used as
19568 escape values indicating the presence of the old format.
f7ef9339 19569
917c78fc
MK
19570 The value returned via bytes_read should be used to increment the
19571 relevant pointer after calling read_initial_length().
c764a876 19572
613e1657
KB
19573 [ Note: read_initial_length() and read_offset() are based on the
19574 document entitled "DWARF Debugging Information Format", revision
f7ef9339 19575 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
19576 from:
19577
f7ef9339 19578 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 19579
613e1657
KB
19580 This document is only a draft and is subject to change. (So beware.)
19581
f7ef9339 19582 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
19583 determined empirically by examining 64-bit ELF files produced by
19584 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
19585
19586 - Kevin, July 16, 2002
613e1657
KB
19587 ] */
19588
19589static LONGEST
d521ce57 19590read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 19591{
fe1b8b76 19592 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 19593
dd373385 19594 if (length == 0xffffffff)
613e1657 19595 {
fe1b8b76 19596 length = bfd_get_64 (abfd, buf + 4);
613e1657 19597 *bytes_read = 12;
613e1657 19598 }
dd373385 19599 else if (length == 0)
f7ef9339 19600 {
dd373385 19601 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 19602 length = bfd_get_64 (abfd, buf);
f7ef9339 19603 *bytes_read = 8;
f7ef9339 19604 }
613e1657
KB
19605 else
19606 {
19607 *bytes_read = 4;
613e1657
KB
19608 }
19609
c764a876
DE
19610 return length;
19611}
dd373385 19612
c764a876
DE
19613/* Cover function for read_initial_length.
19614 Returns the length of the object at BUF, and stores the size of the
19615 initial length in *BYTES_READ and stores the size that offsets will be in
19616 *OFFSET_SIZE.
19617 If the initial length size is not equivalent to that specified in
19618 CU_HEADER then issue a complaint.
19619 This is useful when reading non-comp-unit headers. */
dd373385 19620
c764a876 19621static LONGEST
d521ce57 19622read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
19623 const struct comp_unit_head *cu_header,
19624 unsigned int *bytes_read,
19625 unsigned int *offset_size)
19626{
19627 LONGEST length = read_initial_length (abfd, buf, bytes_read);
19628
19629 gdb_assert (cu_header->initial_length_size == 4
19630 || cu_header->initial_length_size == 8
19631 || cu_header->initial_length_size == 12);
19632
19633 if (cu_header->initial_length_size != *bytes_read)
b98664d3 19634 complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 19635
c764a876 19636 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 19637 return length;
613e1657
KB
19638}
19639
19640/* Read an offset from the data stream. The size of the offset is
917c78fc 19641 given by cu_header->offset_size. */
613e1657
KB
19642
19643static LONGEST
d521ce57
TT
19644read_offset (bfd *abfd, const gdb_byte *buf,
19645 const struct comp_unit_head *cu_header,
891d2f0b 19646 unsigned int *bytes_read)
c764a876
DE
19647{
19648 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 19649
c764a876
DE
19650 *bytes_read = cu_header->offset_size;
19651 return offset;
19652}
19653
19654/* Read an offset from the data stream. */
19655
19656static LONGEST
d521ce57 19657read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
19658{
19659 LONGEST retval = 0;
19660
c764a876 19661 switch (offset_size)
613e1657
KB
19662 {
19663 case 4:
fe1b8b76 19664 retval = bfd_get_32 (abfd, buf);
613e1657
KB
19665 break;
19666 case 8:
fe1b8b76 19667 retval = bfd_get_64 (abfd, buf);
613e1657
KB
19668 break;
19669 default:
8e65ff28 19670 internal_error (__FILE__, __LINE__,
c764a876 19671 _("read_offset_1: bad switch [in module %s]"),
659b0389 19672 bfd_get_filename (abfd));
613e1657
KB
19673 }
19674
917c78fc 19675 return retval;
613e1657
KB
19676}
19677
d521ce57
TT
19678static const gdb_byte *
19679read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
19680{
19681 /* If the size of a host char is 8 bits, we can return a pointer
19682 to the buffer, otherwise we have to copy the data to a buffer
19683 allocated on the temporary obstack. */
4bdf3d34 19684 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 19685 return buf;
c906108c
SS
19686}
19687
d521ce57
TT
19688static const char *
19689read_direct_string (bfd *abfd, const gdb_byte *buf,
19690 unsigned int *bytes_read_ptr)
c906108c
SS
19691{
19692 /* If the size of a host char is 8 bits, we can return a pointer
19693 to the string, otherwise we have to copy the string to a buffer
19694 allocated on the temporary obstack. */
4bdf3d34 19695 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
19696 if (*buf == '\0')
19697 {
19698 *bytes_read_ptr = 1;
19699 return NULL;
19700 }
d521ce57
TT
19701 *bytes_read_ptr = strlen ((const char *) buf) + 1;
19702 return (const char *) buf;
4bdf3d34
JJ
19703}
19704
43988095
JK
19705/* Return pointer to string at section SECT offset STR_OFFSET with error
19706 reporting strings FORM_NAME and SECT_NAME. */
19707
d521ce57 19708static const char *
ed2dc618
SM
19709read_indirect_string_at_offset_from (struct objfile *objfile,
19710 bfd *abfd, LONGEST str_offset,
43988095
JK
19711 struct dwarf2_section_info *sect,
19712 const char *form_name,
19713 const char *sect_name)
19714{
ed2dc618 19715 dwarf2_read_section (objfile, sect);
43988095
JK
19716 if (sect->buffer == NULL)
19717 error (_("%s used without %s section [in module %s]"),
19718 form_name, sect_name, bfd_get_filename (abfd));
19719 if (str_offset >= sect->size)
19720 error (_("%s pointing outside of %s section [in module %s]"),
19721 form_name, sect_name, bfd_get_filename (abfd));
4bdf3d34 19722 gdb_assert (HOST_CHAR_BIT == 8);
43988095 19723 if (sect->buffer[str_offset] == '\0')
4bdf3d34 19724 return NULL;
43988095
JK
19725 return (const char *) (sect->buffer + str_offset);
19726}
19727
19728/* Return pointer to string at .debug_str offset STR_OFFSET. */
19729
19730static const char *
ed2dc618
SM
19731read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19732 bfd *abfd, LONGEST str_offset)
43988095 19733{
ed2dc618
SM
19734 return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19735 abfd, str_offset,
43988095
JK
19736 &dwarf2_per_objfile->str,
19737 "DW_FORM_strp", ".debug_str");
19738}
19739
19740/* Return pointer to string at .debug_line_str offset STR_OFFSET. */
19741
19742static const char *
ed2dc618
SM
19743read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19744 bfd *abfd, LONGEST str_offset)
43988095 19745{
ed2dc618
SM
19746 return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19747 abfd, str_offset,
43988095
JK
19748 &dwarf2_per_objfile->line_str,
19749 "DW_FORM_line_strp",
19750 ".debug_line_str");
c906108c
SS
19751}
19752
36586728
TT
19753/* Read a string at offset STR_OFFSET in the .debug_str section from
19754 the .dwz file DWZ. Throw an error if the offset is too large. If
19755 the string consists of a single NUL byte, return NULL; otherwise
19756 return a pointer to the string. */
19757
d521ce57 19758static const char *
ed2dc618
SM
19759read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19760 LONGEST str_offset)
36586728 19761{
ed2dc618 19762 dwarf2_read_section (objfile, &dwz->str);
36586728
TT
19763
19764 if (dwz->str.buffer == NULL)
19765 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19766 "section [in module %s]"),
00f93c44 19767 bfd_get_filename (dwz->dwz_bfd.get ()));
36586728
TT
19768 if (str_offset >= dwz->str.size)
19769 error (_("DW_FORM_GNU_strp_alt pointing outside of "
19770 ".debug_str section [in module %s]"),
00f93c44 19771 bfd_get_filename (dwz->dwz_bfd.get ()));
36586728
TT
19772 gdb_assert (HOST_CHAR_BIT == 8);
19773 if (dwz->str.buffer[str_offset] == '\0')
19774 return NULL;
d521ce57 19775 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
19776}
19777
43988095
JK
19778/* Return pointer to string at .debug_str offset as read from BUF.
19779 BUF is assumed to be in a compilation unit described by CU_HEADER.
19780 Return *BYTES_READ_PTR count of bytes read from BUF. */
19781
d521ce57 19782static const char *
ed2dc618
SM
19783read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19784 const gdb_byte *buf,
cf2c3c16
TT
19785 const struct comp_unit_head *cu_header,
19786 unsigned int *bytes_read_ptr)
19787{
19788 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19789
ed2dc618 19790 return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
cf2c3c16
TT
19791}
19792
43988095
JK
19793/* Return pointer to string at .debug_line_str offset as read from BUF.
19794 BUF is assumed to be in a compilation unit described by CU_HEADER.
19795 Return *BYTES_READ_PTR count of bytes read from BUF. */
19796
19797static const char *
ed2dc618
SM
19798read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19799 bfd *abfd, const gdb_byte *buf,
43988095
JK
19800 const struct comp_unit_head *cu_header,
19801 unsigned int *bytes_read_ptr)
19802{
19803 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19804
ed2dc618
SM
19805 return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19806 str_offset);
43988095
JK
19807}
19808
19809ULONGEST
d521ce57 19810read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
43988095 19811 unsigned int *bytes_read_ptr)
c906108c 19812{
12df843f 19813 ULONGEST result;
ce5d95e1 19814 unsigned int num_read;
870f88f7 19815 int shift;
c906108c
SS
19816 unsigned char byte;
19817
19818 result = 0;
19819 shift = 0;
19820 num_read = 0;
c906108c
SS
19821 while (1)
19822 {
fe1b8b76 19823 byte = bfd_get_8 (abfd, buf);
c906108c
SS
19824 buf++;
19825 num_read++;
12df843f 19826 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
19827 if ((byte & 128) == 0)
19828 {
19829 break;
19830 }
19831 shift += 7;
19832 }
19833 *bytes_read_ptr = num_read;
19834 return result;
19835}
19836
12df843f 19837static LONGEST
d521ce57
TT
19838read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19839 unsigned int *bytes_read_ptr)
c906108c 19840{
4dd1b460 19841 ULONGEST result;
870f88f7 19842 int shift, num_read;
c906108c
SS
19843 unsigned char byte;
19844
19845 result = 0;
19846 shift = 0;
c906108c 19847 num_read = 0;
c906108c
SS
19848 while (1)
19849 {
fe1b8b76 19850 byte = bfd_get_8 (abfd, buf);
c906108c
SS
19851 buf++;
19852 num_read++;
4dd1b460 19853 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
19854 shift += 7;
19855 if ((byte & 128) == 0)
19856 {
19857 break;
19858 }
19859 }
77e0b926 19860 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
4dd1b460 19861 result |= -(((ULONGEST) 1) << shift);
c906108c
SS
19862 *bytes_read_ptr = num_read;
19863 return result;
19864}
19865
3019eac3
DE
19866/* Given index ADDR_INDEX in .debug_addr, fetch the value.
19867 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19868 ADDR_SIZE is the size of addresses from the CU header. */
19869
19870static CORE_ADDR
ed2dc618
SM
19871read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19872 unsigned int addr_index, ULONGEST addr_base, int addr_size)
3019eac3
DE
19873{
19874 struct objfile *objfile = dwarf2_per_objfile->objfile;
19875 bfd *abfd = objfile->obfd;
19876 const gdb_byte *info_ptr;
19877
19878 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19879 if (dwarf2_per_objfile->addr.buffer == NULL)
19880 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 19881 objfile_name (objfile));
3019eac3
DE
19882 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19883 error (_("DW_FORM_addr_index pointing outside of "
19884 ".debug_addr section [in module %s]"),
4262abfb 19885 objfile_name (objfile));
3019eac3
DE
19886 info_ptr = (dwarf2_per_objfile->addr.buffer
19887 + addr_base + addr_index * addr_size);
19888 if (addr_size == 4)
19889 return bfd_get_32 (abfd, info_ptr);
19890 else
19891 return bfd_get_64 (abfd, info_ptr);
19892}
19893
19894/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
19895
19896static CORE_ADDR
19897read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19898{
518817b3
SM
19899 return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19900 cu->addr_base, cu->header.addr_size);
3019eac3
DE
19901}
19902
19903/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
19904
19905static CORE_ADDR
d521ce57 19906read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
19907 unsigned int *bytes_read)
19908{
518817b3 19909 bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
3019eac3
DE
19910 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19911
19912 return read_addr_index (cu, addr_index);
19913}
19914
19915/* Data structure to pass results from dwarf2_read_addr_index_reader
19916 back to dwarf2_read_addr_index. */
19917
19918struct dwarf2_read_addr_index_data
19919{
19920 ULONGEST addr_base;
19921 int addr_size;
19922};
19923
19924/* die_reader_func for dwarf2_read_addr_index. */
19925
19926static void
19927dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 19928 const gdb_byte *info_ptr,
3019eac3
DE
19929 struct die_info *comp_unit_die,
19930 int has_children,
19931 void *data)
19932{
19933 struct dwarf2_cu *cu = reader->cu;
19934 struct dwarf2_read_addr_index_data *aidata =
19935 (struct dwarf2_read_addr_index_data *) data;
19936
19937 aidata->addr_base = cu->addr_base;
19938 aidata->addr_size = cu->header.addr_size;
19939}
19940
19941/* Given an index in .debug_addr, fetch the value.
19942 NOTE: This can be called during dwarf expression evaluation,
19943 long after the debug information has been read, and thus per_cu->cu
19944 may no longer exist. */
19945
19946CORE_ADDR
19947dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19948 unsigned int addr_index)
19949{
ed2dc618 19950 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
3019eac3
DE
19951 struct dwarf2_cu *cu = per_cu->cu;
19952 ULONGEST addr_base;
19953 int addr_size;
19954
3019eac3
DE
19955 /* We need addr_base and addr_size.
19956 If we don't have PER_CU->cu, we have to get it.
19957 Nasty, but the alternative is storing the needed info in PER_CU,
19958 which at this point doesn't seem justified: it's not clear how frequently
19959 it would get used and it would increase the size of every PER_CU.
19960 Entry points like dwarf2_per_cu_addr_size do a similar thing
19961 so we're not in uncharted territory here.
19962 Alas we need to be a bit more complicated as addr_base is contained
19963 in the DIE.
19964
19965 We don't need to read the entire CU(/TU).
19966 We just need the header and top level die.
a1b64ce1 19967
3019eac3 19968 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 19969 For now we skip this optimization. */
3019eac3
DE
19970
19971 if (cu != NULL)
19972 {
19973 addr_base = cu->addr_base;
19974 addr_size = cu->header.addr_size;
19975 }
19976 else
19977 {
19978 struct dwarf2_read_addr_index_data aidata;
19979
a1b64ce1
DE
19980 /* Note: We can't use init_cutu_and_read_dies_simple here,
19981 we need addr_base. */
58f0c718 19982 init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
a1b64ce1 19983 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
19984 addr_base = aidata.addr_base;
19985 addr_size = aidata.addr_size;
19986 }
19987
ed2dc618
SM
19988 return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19989 addr_size);
3019eac3
DE
19990}
19991
cf532bd1 19992/* Given a DW_FORM_GNU_str_index or DW_FORM_strx, fetch the string.
57d63ce2 19993 This is only used by the Fission support. */
3019eac3 19994
d521ce57 19995static const char *
342587c4 19996read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3 19997{
ed2dc618 19998 struct dwarf2_cu *cu = reader->cu;
518817b3
SM
19999 struct dwarf2_per_objfile *dwarf2_per_objfile
20000 = cu->per_cu->dwarf2_per_objfile;
3019eac3 20001 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 20002 const char *objf_name = objfile_name (objfile);
3019eac3 20003 bfd *abfd = objfile->obfd;
73869dc2
DE
20004 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
20005 struct dwarf2_section_info *str_offsets_section =
20006 &reader->dwo_file->sections.str_offsets;
d521ce57 20007 const gdb_byte *info_ptr;
3019eac3 20008 ULONGEST str_offset;
cf532bd1 20009 static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
3019eac3 20010
73869dc2
DE
20011 dwarf2_read_section (objfile, str_section);
20012 dwarf2_read_section (objfile, str_offsets_section);
20013 if (str_section->buffer == NULL)
57d63ce2 20014 error (_("%s used without .debug_str.dwo section"
9d8780f0
SM
20015 " in CU at offset %s [in module %s]"),
20016 form_name, sect_offset_str (cu->header.sect_off), objf_name);
73869dc2 20017 if (str_offsets_section->buffer == NULL)
57d63ce2 20018 error (_("%s used without .debug_str_offsets.dwo section"
9d8780f0
SM
20019 " in CU at offset %s [in module %s]"),
20020 form_name, sect_offset_str (cu->header.sect_off), objf_name);
73869dc2 20021 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 20022 error (_("%s pointing outside of .debug_str_offsets.dwo"
9d8780f0
SM
20023 " section in CU at offset %s [in module %s]"),
20024 form_name, sect_offset_str (cu->header.sect_off), objf_name);
73869dc2 20025 info_ptr = (str_offsets_section->buffer
3019eac3
DE
20026 + str_index * cu->header.offset_size);
20027 if (cu->header.offset_size == 4)
20028 str_offset = bfd_get_32 (abfd, info_ptr);
20029 else
20030 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 20031 if (str_offset >= str_section->size)
57d63ce2 20032 error (_("Offset from %s pointing outside of"
9d8780f0
SM
20033 " .debug_str.dwo section in CU at offset %s [in module %s]"),
20034 form_name, sect_offset_str (cu->header.sect_off), objf_name);
73869dc2 20035 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
20036}
20037
3019eac3
DE
20038/* Return the length of an LEB128 number in BUF. */
20039
20040static int
20041leb128_size (const gdb_byte *buf)
20042{
20043 const gdb_byte *begin = buf;
20044 gdb_byte byte;
20045
20046 while (1)
20047 {
20048 byte = *buf++;
20049 if ((byte & 128) == 0)
20050 return buf - begin;
20051 }
20052}
20053
c906108c 20054static void
e142c38c 20055set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
20056{
20057 switch (lang)
20058 {
20059 case DW_LANG_C89:
76bee0cc 20060 case DW_LANG_C99:
0cfd832f 20061 case DW_LANG_C11:
c906108c 20062 case DW_LANG_C:
d1be3247 20063 case DW_LANG_UPC:
e142c38c 20064 cu->language = language_c;
c906108c 20065 break;
9c37b5ae 20066 case DW_LANG_Java:
c906108c 20067 case DW_LANG_C_plus_plus:
0cfd832f
MW
20068 case DW_LANG_C_plus_plus_11:
20069 case DW_LANG_C_plus_plus_14:
e142c38c 20070 cu->language = language_cplus;
c906108c 20071 break;
6aecb9c2
JB
20072 case DW_LANG_D:
20073 cu->language = language_d;
20074 break;
c906108c
SS
20075 case DW_LANG_Fortran77:
20076 case DW_LANG_Fortran90:
b21b22e0 20077 case DW_LANG_Fortran95:
f7de9aab
MW
20078 case DW_LANG_Fortran03:
20079 case DW_LANG_Fortran08:
e142c38c 20080 cu->language = language_fortran;
c906108c 20081 break;
a766d390
DE
20082 case DW_LANG_Go:
20083 cu->language = language_go;
20084 break;
c906108c 20085 case DW_LANG_Mips_Assembler:
e142c38c 20086 cu->language = language_asm;
c906108c
SS
20087 break;
20088 case DW_LANG_Ada83:
8aaf0b47 20089 case DW_LANG_Ada95:
bc5f45f8
JB
20090 cu->language = language_ada;
20091 break;
72019c9c
GM
20092 case DW_LANG_Modula2:
20093 cu->language = language_m2;
20094 break;
fe8e67fd
PM
20095 case DW_LANG_Pascal83:
20096 cu->language = language_pascal;
20097 break;
22566fbd
DJ
20098 case DW_LANG_ObjC:
20099 cu->language = language_objc;
20100 break;
c44af4eb
TT
20101 case DW_LANG_Rust:
20102 case DW_LANG_Rust_old:
20103 cu->language = language_rust;
20104 break;
c906108c
SS
20105 case DW_LANG_Cobol74:
20106 case DW_LANG_Cobol85:
c906108c 20107 default:
e142c38c 20108 cu->language = language_minimal;
c906108c
SS
20109 break;
20110 }
e142c38c 20111 cu->language_defn = language_def (cu->language);
c906108c
SS
20112}
20113
20114/* Return the named attribute or NULL if not there. */
20115
20116static struct attribute *
e142c38c 20117dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 20118{
a48e046c 20119 for (;;)
c906108c 20120 {
a48e046c
TT
20121 unsigned int i;
20122 struct attribute *spec = NULL;
20123
20124 for (i = 0; i < die->num_attrs; ++i)
20125 {
20126 if (die->attrs[i].name == name)
20127 return &die->attrs[i];
20128 if (die->attrs[i].name == DW_AT_specification
20129 || die->attrs[i].name == DW_AT_abstract_origin)
20130 spec = &die->attrs[i];
20131 }
20132
20133 if (!spec)
20134 break;
c906108c 20135
f2f0e013 20136 die = follow_die_ref (die, spec, &cu);
f2f0e013 20137 }
c5aa993b 20138
c906108c
SS
20139 return NULL;
20140}
20141
348e048f
DE
20142/* Return the named attribute or NULL if not there,
20143 but do not follow DW_AT_specification, etc.
20144 This is for use in contexts where we're reading .debug_types dies.
20145 Following DW_AT_specification, DW_AT_abstract_origin will take us
20146 back up the chain, and we want to go down. */
20147
20148static struct attribute *
45e58e77 20149dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
20150{
20151 unsigned int i;
20152
20153 for (i = 0; i < die->num_attrs; ++i)
20154 if (die->attrs[i].name == name)
20155 return &die->attrs[i];
20156
20157 return NULL;
20158}
20159
7d45c7c3
KB
20160/* Return the string associated with a string-typed attribute, or NULL if it
20161 is either not found or is of an incorrect type. */
20162
20163static const char *
20164dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20165{
20166 struct attribute *attr;
20167 const char *str = NULL;
20168
20169 attr = dwarf2_attr (die, name, cu);
20170
20171 if (attr != NULL)
20172 {
43988095 20173 if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
b3340438 20174 || attr->form == DW_FORM_string
cf532bd1 20175 || attr->form == DW_FORM_strx
8fe0f950
AT
20176 || attr->form == DW_FORM_strx1
20177 || attr->form == DW_FORM_strx2
20178 || attr->form == DW_FORM_strx3
20179 || attr->form == DW_FORM_strx4
b3340438 20180 || attr->form == DW_FORM_GNU_str_index
16eb6b2d 20181 || attr->form == DW_FORM_GNU_strp_alt)
7d45c7c3
KB
20182 str = DW_STRING (attr);
20183 else
b98664d3 20184 complaint (_("string type expected for attribute %s for "
9d8780f0
SM
20185 "DIE at %s in module %s"),
20186 dwarf_attr_name (name), sect_offset_str (die->sect_off),
518817b3 20187 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
7d45c7c3
KB
20188 }
20189
20190 return str;
20191}
20192
a084a2a6
AT
20193/* Return the dwo name or NULL if not present. If present, it is in either
20194 DW_AT_GNU_dwo_name or DW_AT_dwo_name atrribute. */
20195static const char *
20196dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu)
20197{
20198 const char *dwo_name = dwarf2_string_attr (die, DW_AT_GNU_dwo_name, cu);
20199 if (dwo_name == nullptr)
20200 dwo_name = dwarf2_string_attr (die, DW_AT_dwo_name, cu);
20201 return dwo_name;
20202}
20203
05cf31d1
JB
20204/* Return non-zero iff the attribute NAME is defined for the given DIE,
20205 and holds a non-zero value. This function should only be used for
2dc7f7b3 20206 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
20207
20208static int
20209dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20210{
20211 struct attribute *attr = dwarf2_attr (die, name, cu);
20212
20213 return (attr && DW_UNSND (attr));
20214}
20215
3ca72b44 20216static int
e142c38c 20217die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 20218{
05cf31d1
JB
20219 /* A DIE is a declaration if it has a DW_AT_declaration attribute
20220 which value is non-zero. However, we have to be careful with
20221 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20222 (via dwarf2_flag_true_p) follows this attribute. So we may
20223 end up accidently finding a declaration attribute that belongs
20224 to a different DIE referenced by the specification attribute,
20225 even though the given DIE does not have a declaration attribute. */
20226 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20227 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
20228}
20229
63d06c5c 20230/* Return the die giving the specification for DIE, if there is
f2f0e013 20231 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
20232 containing the return value on output. If there is no
20233 specification, but there is an abstract origin, that is
20234 returned. */
63d06c5c
DC
20235
20236static struct die_info *
f2f0e013 20237die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 20238{
f2f0e013
DJ
20239 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20240 *spec_cu);
63d06c5c 20241
edb3359d
DJ
20242 if (spec_attr == NULL)
20243 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20244
63d06c5c
DC
20245 if (spec_attr == NULL)
20246 return NULL;
20247 else
f2f0e013 20248 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 20249}
c906108c 20250
527f3840
JK
20251/* Stub for free_line_header to match void * callback types. */
20252
20253static void
20254free_line_header_voidp (void *arg)
20255{
9a3c8263 20256 struct line_header *lh = (struct line_header *) arg;
527f3840 20257
fff8551c 20258 delete lh;
527f3840
JK
20259}
20260
fff8551c
PA
20261void
20262line_header::add_include_dir (const char *include_dir)
c906108c 20263{
27e0867f 20264 if (dwarf_line_debug >= 2)
fff8551c
PA
20265 fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20266 include_dirs.size () + 1, include_dir);
27e0867f 20267
fff8551c 20268 include_dirs.push_back (include_dir);
debd256d 20269}
6e70227d 20270
fff8551c
PA
20271void
20272line_header::add_file_name (const char *name,
ecfb656c 20273 dir_index d_index,
fff8551c
PA
20274 unsigned int mod_time,
20275 unsigned int length)
debd256d 20276{
27e0867f
DE
20277 if (dwarf_line_debug >= 2)
20278 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
fff8551c 20279 (unsigned) file_names.size () + 1, name);
27e0867f 20280
ecfb656c 20281 file_names.emplace_back (name, d_index, mod_time, length);
debd256d 20282}
6e70227d 20283
83769d0b 20284/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
20285
20286static struct dwarf2_section_info *
20287get_debug_line_section (struct dwarf2_cu *cu)
20288{
20289 struct dwarf2_section_info *section;
518817b3
SM
20290 struct dwarf2_per_objfile *dwarf2_per_objfile
20291 = cu->per_cu->dwarf2_per_objfile;
36586728
TT
20292
20293 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20294 DWO file. */
20295 if (cu->dwo_unit && cu->per_cu->is_debug_types)
20296 section = &cu->dwo_unit->dwo_file->sections.line;
20297 else if (cu->per_cu->is_dwz)
20298 {
ed2dc618 20299 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
36586728
TT
20300
20301 section = &dwz->line;
20302 }
20303 else
20304 section = &dwarf2_per_objfile->line;
20305
20306 return section;
20307}
20308
43988095
JK
20309/* Read directory or file name entry format, starting with byte of
20310 format count entries, ULEB128 pairs of entry formats, ULEB128 of
20311 entries count and the entries themselves in the described entry
20312 format. */
20313
20314static void
ed2dc618
SM
20315read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20316 bfd *abfd, const gdb_byte **bufp,
43988095
JK
20317 struct line_header *lh,
20318 const struct comp_unit_head *cu_header,
20319 void (*callback) (struct line_header *lh,
20320 const char *name,
ecfb656c 20321 dir_index d_index,
43988095
JK
20322 unsigned int mod_time,
20323 unsigned int length))
20324{
20325 gdb_byte format_count, formati;
20326 ULONGEST data_count, datai;
20327 const gdb_byte *buf = *bufp;
20328 const gdb_byte *format_header_data;
43988095
JK
20329 unsigned int bytes_read;
20330
20331 format_count = read_1_byte (abfd, buf);
20332 buf += 1;
20333 format_header_data = buf;
20334 for (formati = 0; formati < format_count; formati++)
20335 {
20336 read_unsigned_leb128 (abfd, buf, &bytes_read);
20337 buf += bytes_read;
20338 read_unsigned_leb128 (abfd, buf, &bytes_read);
20339 buf += bytes_read;
20340 }
20341
20342 data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20343 buf += bytes_read;
20344 for (datai = 0; datai < data_count; datai++)
20345 {
20346 const gdb_byte *format = format_header_data;
20347 struct file_entry fe;
20348
43988095
JK
20349 for (formati = 0; formati < format_count; formati++)
20350 {
ecfb656c 20351 ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
43988095 20352 format += bytes_read;
43988095 20353
ecfb656c 20354 ULONGEST form = read_unsigned_leb128 (abfd, format, &bytes_read);
43988095 20355 format += bytes_read;
ecfb656c
PA
20356
20357 gdb::optional<const char *> string;
20358 gdb::optional<unsigned int> uint;
20359
43988095
JK
20360 switch (form)
20361 {
20362 case DW_FORM_string:
ecfb656c 20363 string.emplace (read_direct_string (abfd, buf, &bytes_read));
43988095
JK
20364 buf += bytes_read;
20365 break;
20366
20367 case DW_FORM_line_strp:
ed2dc618
SM
20368 string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20369 abfd, buf,
ecfb656c
PA
20370 cu_header,
20371 &bytes_read));
43988095
JK
20372 buf += bytes_read;
20373 break;
20374
20375 case DW_FORM_data1:
ecfb656c 20376 uint.emplace (read_1_byte (abfd, buf));
43988095
JK
20377 buf += 1;
20378 break;
20379
20380 case DW_FORM_data2:
ecfb656c 20381 uint.emplace (read_2_bytes (abfd, buf));
43988095
JK
20382 buf += 2;
20383 break;
20384
20385 case DW_FORM_data4:
ecfb656c 20386 uint.emplace (read_4_bytes (abfd, buf));
43988095
JK
20387 buf += 4;
20388 break;
20389
20390 case DW_FORM_data8:
ecfb656c 20391 uint.emplace (read_8_bytes (abfd, buf));
43988095
JK
20392 buf += 8;
20393 break;
20394
20395 case DW_FORM_udata:
ecfb656c 20396 uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
43988095
JK
20397 buf += bytes_read;
20398 break;
20399
20400 case DW_FORM_block:
20401 /* It is valid only for DW_LNCT_timestamp which is ignored by
20402 current GDB. */
20403 break;
20404 }
ecfb656c
PA
20405
20406 switch (content_type)
20407 {
20408 case DW_LNCT_path:
20409 if (string.has_value ())
20410 fe.name = *string;
20411 break;
20412 case DW_LNCT_directory_index:
20413 if (uint.has_value ())
20414 fe.d_index = (dir_index) *uint;
20415 break;
20416 case DW_LNCT_timestamp:
20417 if (uint.has_value ())
20418 fe.mod_time = *uint;
20419 break;
20420 case DW_LNCT_size:
20421 if (uint.has_value ())
20422 fe.length = *uint;
20423 break;
20424 case DW_LNCT_MD5:
20425 break;
20426 default:
b98664d3 20427 complaint (_("Unknown format content type %s"),
ecfb656c
PA
20428 pulongest (content_type));
20429 }
43988095
JK
20430 }
20431
ecfb656c 20432 callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
43988095
JK
20433 }
20434
20435 *bufp = buf;
20436}
20437
debd256d 20438/* Read the statement program header starting at OFFSET in
3019eac3 20439 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 20440 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
20441 Returns NULL if there is a problem reading the header, e.g., if it
20442 has a version we don't understand.
debd256d
JB
20443
20444 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
20445 the returned object point into the dwarf line section buffer,
20446 and must not be freed. */
ae2de4f8 20447
fff8551c 20448static line_header_up
9c541725 20449dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
debd256d 20450{
d521ce57 20451 const gdb_byte *line_ptr;
c764a876 20452 unsigned int bytes_read, offset_size;
debd256d 20453 int i;
d521ce57 20454 const char *cur_dir, *cur_file;
3019eac3
DE
20455 struct dwarf2_section_info *section;
20456 bfd *abfd;
518817b3
SM
20457 struct dwarf2_per_objfile *dwarf2_per_objfile
20458 = cu->per_cu->dwarf2_per_objfile;
3019eac3 20459
36586728 20460 section = get_debug_line_section (cu);
3019eac3
DE
20461 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20462 if (section->buffer == NULL)
debd256d 20463 {
3019eac3 20464 if (cu->dwo_unit && cu->per_cu->is_debug_types)
b98664d3 20465 complaint (_("missing .debug_line.dwo section"));
3019eac3 20466 else
b98664d3 20467 complaint (_("missing .debug_line section"));
debd256d
JB
20468 return 0;
20469 }
20470
fceca515
DE
20471 /* We can't do this until we know the section is non-empty.
20472 Only then do we know we have such a section. */
a32a8923 20473 abfd = get_section_bfd_owner (section);
fceca515 20474
a738430d
MK
20475 /* Make sure that at least there's room for the total_length field.
20476 That could be 12 bytes long, but we're just going to fudge that. */
9c541725 20477 if (to_underlying (sect_off) + 4 >= section->size)
debd256d 20478 {
4d3c2250 20479 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
20480 return 0;
20481 }
20482
fff8551c 20483 line_header_up lh (new line_header ());
debd256d 20484
9c541725 20485 lh->sect_off = sect_off;
527f3840
JK
20486 lh->offset_in_dwz = cu->per_cu->is_dwz;
20487
9c541725 20488 line_ptr = section->buffer + to_underlying (sect_off);
debd256d 20489
a738430d 20490 /* Read in the header. */
6e70227d 20491 lh->total_length =
c764a876
DE
20492 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20493 &bytes_read, &offset_size);
debd256d 20494 line_ptr += bytes_read;
3019eac3 20495 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 20496 {
4d3c2250 20497 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
20498 return 0;
20499 }
20500 lh->statement_program_end = line_ptr + lh->total_length;
20501 lh->version = read_2_bytes (abfd, line_ptr);
20502 line_ptr += 2;
43988095 20503 if (lh->version > 5)
cd366ee8
DE
20504 {
20505 /* This is a version we don't understand. The format could have
20506 changed in ways we don't handle properly so just punt. */
b98664d3 20507 complaint (_("unsupported version in .debug_line section"));
cd366ee8
DE
20508 return NULL;
20509 }
43988095
JK
20510 if (lh->version >= 5)
20511 {
20512 gdb_byte segment_selector_size;
20513
20514 /* Skip address size. */
20515 read_1_byte (abfd, line_ptr);
20516 line_ptr += 1;
20517
20518 segment_selector_size = read_1_byte (abfd, line_ptr);
20519 line_ptr += 1;
20520 if (segment_selector_size != 0)
20521 {
b98664d3 20522 complaint (_("unsupported segment selector size %u "
43988095
JK
20523 "in .debug_line section"),
20524 segment_selector_size);
20525 return NULL;
20526 }
20527 }
c764a876
DE
20528 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20529 line_ptr += offset_size;
debd256d
JB
20530 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20531 line_ptr += 1;
2dc7f7b3
TT
20532 if (lh->version >= 4)
20533 {
20534 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20535 line_ptr += 1;
20536 }
20537 else
20538 lh->maximum_ops_per_instruction = 1;
20539
20540 if (lh->maximum_ops_per_instruction == 0)
20541 {
20542 lh->maximum_ops_per_instruction = 1;
b98664d3 20543 complaint (_("invalid maximum_ops_per_instruction "
3e43a32a 20544 "in `.debug_line' section"));
2dc7f7b3
TT
20545 }
20546
debd256d
JB
20547 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20548 line_ptr += 1;
20549 lh->line_base = read_1_signed_byte (abfd, line_ptr);
20550 line_ptr += 1;
20551 lh->line_range = read_1_byte (abfd, line_ptr);
20552 line_ptr += 1;
20553 lh->opcode_base = read_1_byte (abfd, line_ptr);
20554 line_ptr += 1;
fff8551c 20555 lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
debd256d
JB
20556
20557 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
20558 for (i = 1; i < lh->opcode_base; ++i)
20559 {
20560 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20561 line_ptr += 1;
20562 }
20563
43988095 20564 if (lh->version >= 5)
debd256d 20565 {
43988095 20566 /* Read directory table. */
ed2dc618
SM
20567 read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20568 &cu->header,
b926417a 20569 [] (struct line_header *header, const char *name,
ecfb656c 20570 dir_index d_index, unsigned int mod_time,
fff8551c
PA
20571 unsigned int length)
20572 {
b926417a 20573 header->add_include_dir (name);
fff8551c 20574 });
debd256d 20575
43988095 20576 /* Read file name table. */
ed2dc618
SM
20577 read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20578 &cu->header,
b926417a 20579 [] (struct line_header *header, const char *name,
ecfb656c 20580 dir_index d_index, unsigned int mod_time,
fff8551c
PA
20581 unsigned int length)
20582 {
b926417a 20583 header->add_file_name (name, d_index, mod_time, length);
fff8551c 20584 });
43988095
JK
20585 }
20586 else
debd256d 20587 {
43988095
JK
20588 /* Read directory table. */
20589 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20590 {
20591 line_ptr += bytes_read;
fff8551c 20592 lh->add_include_dir (cur_dir);
43988095 20593 }
debd256d
JB
20594 line_ptr += bytes_read;
20595
43988095
JK
20596 /* Read file name table. */
20597 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20598 {
ecfb656c
PA
20599 unsigned int mod_time, length;
20600 dir_index d_index;
43988095
JK
20601
20602 line_ptr += bytes_read;
ecfb656c 20603 d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
43988095
JK
20604 line_ptr += bytes_read;
20605 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20606 line_ptr += bytes_read;
20607 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20608 line_ptr += bytes_read;
20609
ecfb656c 20610 lh->add_file_name (cur_file, d_index, mod_time, length);
43988095
JK
20611 }
20612 line_ptr += bytes_read;
debd256d 20613 }
6e70227d 20614 lh->statement_program_start = line_ptr;
debd256d 20615
3019eac3 20616 if (line_ptr > (section->buffer + section->size))
b98664d3 20617 complaint (_("line number info header doesn't "
3e43a32a 20618 "fit in `.debug_line' section"));
debd256d 20619
debd256d
JB
20620 return lh;
20621}
c906108c 20622
c6da4cef
DE
20623/* Subroutine of dwarf_decode_lines to simplify it.
20624 Return the file name of the psymtab for included file FILE_INDEX
20625 in line header LH of PST.
20626 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
c89b44cd
TT
20627 If space for the result is malloc'd, *NAME_HOLDER will be set.
20628 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename. */
c6da4cef 20629
d521ce57 20630static const char *
c6da4cef
DE
20631psymtab_include_file_name (const struct line_header *lh, int file_index,
20632 const struct partial_symtab *pst,
c89b44cd
TT
20633 const char *comp_dir,
20634 gdb::unique_xmalloc_ptr<char> *name_holder)
c6da4cef 20635{
8c43009f 20636 const file_entry &fe = lh->file_names[file_index];
d521ce57
TT
20637 const char *include_name = fe.name;
20638 const char *include_name_to_compare = include_name;
72b9f47f 20639 const char *pst_filename;
c6da4cef
DE
20640 int file_is_pst;
20641
8c43009f 20642 const char *dir_name = fe.include_dir (lh);
c6da4cef 20643
c89b44cd 20644 gdb::unique_xmalloc_ptr<char> hold_compare;
c6da4cef
DE
20645 if (!IS_ABSOLUTE_PATH (include_name)
20646 && (dir_name != NULL || comp_dir != NULL))
20647 {
20648 /* Avoid creating a duplicate psymtab for PST.
20649 We do this by comparing INCLUDE_NAME and PST_FILENAME.
20650 Before we do the comparison, however, we need to account
20651 for DIR_NAME and COMP_DIR.
20652 First prepend dir_name (if non-NULL). If we still don't
20653 have an absolute path prepend comp_dir (if non-NULL).
20654 However, the directory we record in the include-file's
20655 psymtab does not contain COMP_DIR (to match the
20656 corresponding symtab(s)).
20657
20658 Example:
20659
20660 bash$ cd /tmp
20661 bash$ gcc -g ./hello.c
20662 include_name = "hello.c"
20663 dir_name = "."
20664 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
20665 DW_AT_name = "./hello.c"
20666
20667 */
c6da4cef
DE
20668
20669 if (dir_name != NULL)
20670 {
c89b44cd
TT
20671 name_holder->reset (concat (dir_name, SLASH_STRING,
20672 include_name, (char *) NULL));
20673 include_name = name_holder->get ();
c6da4cef 20674 include_name_to_compare = include_name;
c6da4cef
DE
20675 }
20676 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20677 {
c89b44cd
TT
20678 hold_compare.reset (concat (comp_dir, SLASH_STRING,
20679 include_name, (char *) NULL));
20680 include_name_to_compare = hold_compare.get ();
c6da4cef
DE
20681 }
20682 }
20683
20684 pst_filename = pst->filename;
c89b44cd 20685 gdb::unique_xmalloc_ptr<char> copied_name;
c6da4cef
DE
20686 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20687 {
c89b44cd
TT
20688 copied_name.reset (concat (pst->dirname, SLASH_STRING,
20689 pst_filename, (char *) NULL));
20690 pst_filename = copied_name.get ();
c6da4cef
DE
20691 }
20692
1e3fad37 20693 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 20694
c6da4cef
DE
20695 if (file_is_pst)
20696 return NULL;
20697 return include_name;
20698}
20699
d9b3de22
DE
20700/* State machine to track the state of the line number program. */
20701
6f77053d 20702class lnp_state_machine
d9b3de22 20703{
6f77053d
PA
20704public:
20705 /* Initialize a machine state for the start of a line number
20706 program. */
804d2729
TT
20707 lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20708 bool record_lines_p);
6f77053d 20709
8c43009f
PA
20710 file_entry *current_file ()
20711 {
20712 /* lh->file_names is 0-based, but the file name numbers in the
20713 statement program are 1-based. */
6f77053d
PA
20714 return m_line_header->file_name_at (m_file);
20715 }
20716
20717 /* Record the line in the state machine. END_SEQUENCE is true if
20718 we're processing the end of a sequence. */
20719 void record_line (bool end_sequence);
20720
7ab6656f
OJ
20721 /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20722 nop-out rest of the lines in this sequence. */
6f77053d
PA
20723 void check_line_address (struct dwarf2_cu *cu,
20724 const gdb_byte *line_ptr,
7ab6656f 20725 CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
6f77053d
PA
20726
20727 void handle_set_discriminator (unsigned int discriminator)
20728 {
20729 m_discriminator = discriminator;
20730 m_line_has_non_zero_discriminator |= discriminator != 0;
20731 }
20732
20733 /* Handle DW_LNE_set_address. */
20734 void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20735 {
20736 m_op_index = 0;
20737 address += baseaddr;
20738 m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20739 }
20740
20741 /* Handle DW_LNS_advance_pc. */
20742 void handle_advance_pc (CORE_ADDR adjust);
20743
20744 /* Handle a special opcode. */
20745 void handle_special_opcode (unsigned char op_code);
20746
20747 /* Handle DW_LNS_advance_line. */
20748 void handle_advance_line (int line_delta)
20749 {
20750 advance_line (line_delta);
20751 }
20752
20753 /* Handle DW_LNS_set_file. */
20754 void handle_set_file (file_name_index file);
20755
20756 /* Handle DW_LNS_negate_stmt. */
20757 void handle_negate_stmt ()
20758 {
20759 m_is_stmt = !m_is_stmt;
20760 }
20761
20762 /* Handle DW_LNS_const_add_pc. */
20763 void handle_const_add_pc ();
20764
20765 /* Handle DW_LNS_fixed_advance_pc. */
20766 void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20767 {
20768 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20769 m_op_index = 0;
20770 }
20771
20772 /* Handle DW_LNS_copy. */
20773 void handle_copy ()
20774 {
20775 record_line (false);
20776 m_discriminator = 0;
20777 }
20778
20779 /* Handle DW_LNE_end_sequence. */
20780 void handle_end_sequence ()
20781 {
804d2729 20782 m_currently_recording_lines = true;
6f77053d
PA
20783 }
20784
20785private:
20786 /* Advance the line by LINE_DELTA. */
20787 void advance_line (int line_delta)
20788 {
20789 m_line += line_delta;
20790
20791 if (line_delta != 0)
20792 m_line_has_non_zero_discriminator = m_discriminator != 0;
8c43009f
PA
20793 }
20794
804d2729
TT
20795 struct dwarf2_cu *m_cu;
20796
6f77053d
PA
20797 gdbarch *m_gdbarch;
20798
20799 /* True if we're recording lines.
20800 Otherwise we're building partial symtabs and are just interested in
20801 finding include files mentioned by the line number program. */
20802 bool m_record_lines_p;
20803
8c43009f 20804 /* The line number header. */
6f77053d 20805 line_header *m_line_header;
8c43009f 20806
6f77053d
PA
20807 /* These are part of the standard DWARF line number state machine,
20808 and initialized according to the DWARF spec. */
d9b3de22 20809
6f77053d 20810 unsigned char m_op_index = 0;
8c43009f 20811 /* The line table index (1-based) of the current file. */
6f77053d
PA
20812 file_name_index m_file = (file_name_index) 1;
20813 unsigned int m_line = 1;
20814
20815 /* These are initialized in the constructor. */
20816
20817 CORE_ADDR m_address;
20818 bool m_is_stmt;
20819 unsigned int m_discriminator;
d9b3de22
DE
20820
20821 /* Additional bits of state we need to track. */
20822
20823 /* The last file that we called dwarf2_start_subfile for.
20824 This is only used for TLLs. */
6f77053d 20825 unsigned int m_last_file = 0;
d9b3de22 20826 /* The last file a line number was recorded for. */
6f77053d 20827 struct subfile *m_last_subfile = NULL;
d9b3de22 20828
804d2729
TT
20829 /* When true, record the lines we decode. */
20830 bool m_currently_recording_lines = false;
d9b3de22
DE
20831
20832 /* The last line number that was recorded, used to coalesce
20833 consecutive entries for the same line. This can happen, for
20834 example, when discriminators are present. PR 17276. */
6f77053d
PA
20835 unsigned int m_last_line = 0;
20836 bool m_line_has_non_zero_discriminator = false;
8c43009f 20837};
d9b3de22 20838
6f77053d
PA
20839void
20840lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20841{
20842 CORE_ADDR addr_adj = (((m_op_index + adjust)
20843 / m_line_header->maximum_ops_per_instruction)
20844 * m_line_header->minimum_instruction_length);
20845 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20846 m_op_index = ((m_op_index + adjust)
20847 % m_line_header->maximum_ops_per_instruction);
20848}
d9b3de22 20849
6f77053d
PA
20850void
20851lnp_state_machine::handle_special_opcode (unsigned char op_code)
d9b3de22 20852{
6f77053d
PA
20853 unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20854 CORE_ADDR addr_adj = (((m_op_index
20855 + (adj_opcode / m_line_header->line_range))
20856 / m_line_header->maximum_ops_per_instruction)
20857 * m_line_header->minimum_instruction_length);
20858 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20859 m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20860 % m_line_header->maximum_ops_per_instruction);
d9b3de22 20861
6f77053d
PA
20862 int line_delta = (m_line_header->line_base
20863 + (adj_opcode % m_line_header->line_range));
20864 advance_line (line_delta);
20865 record_line (false);
20866 m_discriminator = 0;
20867}
d9b3de22 20868
6f77053d
PA
20869void
20870lnp_state_machine::handle_set_file (file_name_index file)
20871{
20872 m_file = file;
20873
20874 const file_entry *fe = current_file ();
20875 if (fe == NULL)
20876 dwarf2_debug_line_missing_file_complaint ();
20877 else if (m_record_lines_p)
20878 {
20879 const char *dir = fe->include_dir (m_line_header);
20880
c24bdb02 20881 m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
6f77053d 20882 m_line_has_non_zero_discriminator = m_discriminator != 0;
804d2729 20883 dwarf2_start_subfile (m_cu, fe->name, dir);
6f77053d
PA
20884 }
20885}
20886
20887void
20888lnp_state_machine::handle_const_add_pc ()
20889{
20890 CORE_ADDR adjust
20891 = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20892
20893 CORE_ADDR addr_adj
20894 = (((m_op_index + adjust)
20895 / m_line_header->maximum_ops_per_instruction)
20896 * m_line_header->minimum_instruction_length);
20897
20898 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20899 m_op_index = ((m_op_index + adjust)
20900 % m_line_header->maximum_ops_per_instruction);
20901}
d9b3de22 20902
a05a36a5
DE
20903/* Return non-zero if we should add LINE to the line number table.
20904 LINE is the line to add, LAST_LINE is the last line that was added,
20905 LAST_SUBFILE is the subfile for LAST_LINE.
20906 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20907 had a non-zero discriminator.
20908
20909 We have to be careful in the presence of discriminators.
20910 E.g., for this line:
20911
20912 for (i = 0; i < 100000; i++);
20913
20914 clang can emit four line number entries for that one line,
20915 each with a different discriminator.
20916 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20917
20918 However, we want gdb to coalesce all four entries into one.
20919 Otherwise the user could stepi into the middle of the line and
20920 gdb would get confused about whether the pc really was in the
20921 middle of the line.
20922
20923 Things are further complicated by the fact that two consecutive
20924 line number entries for the same line is a heuristic used by gcc
20925 to denote the end of the prologue. So we can't just discard duplicate
20926 entries, we have to be selective about it. The heuristic we use is
20927 that we only collapse consecutive entries for the same line if at least
20928 one of those entries has a non-zero discriminator. PR 17276.
20929
20930 Note: Addresses in the line number state machine can never go backwards
20931 within one sequence, thus this coalescing is ok. */
20932
20933static int
804d2729
TT
20934dwarf_record_line_p (struct dwarf2_cu *cu,
20935 unsigned int line, unsigned int last_line,
a05a36a5
DE
20936 int line_has_non_zero_discriminator,
20937 struct subfile *last_subfile)
20938{
c24bdb02 20939 if (cu->get_builder ()->get_current_subfile () != last_subfile)
a05a36a5
DE
20940 return 1;
20941 if (line != last_line)
20942 return 1;
20943 /* Same line for the same file that we've seen already.
20944 As a last check, for pr 17276, only record the line if the line
20945 has never had a non-zero discriminator. */
20946 if (!line_has_non_zero_discriminator)
20947 return 1;
20948 return 0;
20949}
20950
804d2729
TT
20951/* Use the CU's builder to record line number LINE beginning at
20952 address ADDRESS in the line table of subfile SUBFILE. */
252a6764
DE
20953
20954static void
d9b3de22
DE
20955dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20956 unsigned int line, CORE_ADDR address,
804d2729 20957 struct dwarf2_cu *cu)
252a6764
DE
20958{
20959 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20960
27e0867f
DE
20961 if (dwarf_line_debug)
20962 {
20963 fprintf_unfiltered (gdb_stdlog,
20964 "Recording line %u, file %s, address %s\n",
20965 line, lbasename (subfile->name),
20966 paddress (gdbarch, address));
20967 }
20968
804d2729 20969 if (cu != nullptr)
c24bdb02 20970 cu->get_builder ()->record_line (subfile, line, addr);
252a6764
DE
20971}
20972
20973/* Subroutine of dwarf_decode_lines_1 to simplify it.
20974 Mark the end of a set of line number records.
d9b3de22 20975 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
20976 If SUBFILE is NULL the request is ignored. */
20977
20978static void
20979dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
804d2729 20980 CORE_ADDR address, struct dwarf2_cu *cu)
252a6764 20981{
27e0867f
DE
20982 if (subfile == NULL)
20983 return;
20984
20985 if (dwarf_line_debug)
20986 {
20987 fprintf_unfiltered (gdb_stdlog,
20988 "Finishing current line, file %s, address %s\n",
20989 lbasename (subfile->name),
20990 paddress (gdbarch, address));
20991 }
20992
804d2729 20993 dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
d9b3de22
DE
20994}
20995
6f77053d
PA
20996void
20997lnp_state_machine::record_line (bool end_sequence)
d9b3de22 20998{
d9b3de22
DE
20999 if (dwarf_line_debug)
21000 {
21001 fprintf_unfiltered (gdb_stdlog,
21002 "Processing actual line %u: file %u,"
21003 " address %s, is_stmt %u, discrim %u\n",
6f77053d
PA
21004 m_line, to_underlying (m_file),
21005 paddress (m_gdbarch, m_address),
21006 m_is_stmt, m_discriminator);
d9b3de22
DE
21007 }
21008
6f77053d 21009 file_entry *fe = current_file ();
8c43009f
PA
21010
21011 if (fe == NULL)
d9b3de22
DE
21012 dwarf2_debug_line_missing_file_complaint ();
21013 /* For now we ignore lines not starting on an instruction boundary.
21014 But not when processing end_sequence for compatibility with the
21015 previous version of the code. */
6f77053d 21016 else if (m_op_index == 0 || end_sequence)
d9b3de22 21017 {
8c43009f 21018 fe->included_p = 1;
c258c396 21019 if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
d9b3de22 21020 {
c24bdb02 21021 if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
804d2729 21022 || end_sequence)
d9b3de22 21023 {
804d2729
TT
21024 dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
21025 m_currently_recording_lines ? m_cu : nullptr);
d9b3de22
DE
21026 }
21027
21028 if (!end_sequence)
21029 {
804d2729 21030 if (dwarf_record_line_p (m_cu, m_line, m_last_line,
6f77053d
PA
21031 m_line_has_non_zero_discriminator,
21032 m_last_subfile))
d9b3de22 21033 {
c24bdb02 21034 buildsym_compunit *builder = m_cu->get_builder ();
804d2729 21035 dwarf_record_line_1 (m_gdbarch,
c24bdb02 21036 builder->get_current_subfile (),
6f77053d 21037 m_line, m_address,
804d2729 21038 m_currently_recording_lines ? m_cu : nullptr);
d9b3de22 21039 }
c24bdb02 21040 m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
6f77053d 21041 m_last_line = m_line;
d9b3de22
DE
21042 }
21043 }
21044 }
21045}
21046
804d2729
TT
21047lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
21048 line_header *lh, bool record_lines_p)
d9b3de22 21049{
804d2729 21050 m_cu = cu;
6f77053d
PA
21051 m_gdbarch = arch;
21052 m_record_lines_p = record_lines_p;
21053 m_line_header = lh;
d9b3de22 21054
804d2729 21055 m_currently_recording_lines = true;
d9b3de22 21056
d9b3de22
DE
21057 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
21058 was a line entry for it so that the backend has a chance to adjust it
21059 and also record it in case it needs it. This is currently used by MIPS
21060 code, cf. `mips_adjust_dwarf2_line'. */
6f77053d
PA
21061 m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
21062 m_is_stmt = lh->default_is_stmt;
21063 m_discriminator = 0;
252a6764
DE
21064}
21065
6f77053d
PA
21066void
21067lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
21068 const gdb_byte *line_ptr,
7ab6656f 21069 CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
924c2928 21070{
7ab6656f
OJ
21071 /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
21072 the pc range of the CU. However, we restrict the test to only ADDRESS
21073 values of zero to preserve GDB's previous behaviour which is to handle
21074 the specific case of a function being GC'd by the linker. */
924c2928 21075
7ab6656f 21076 if (address == 0 && address < unrelocated_lowpc)
924c2928
DE
21077 {
21078 /* This line table is for a function which has been
21079 GCd by the linker. Ignore it. PR gdb/12528 */
21080
518817b3 21081 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
924c2928
DE
21082 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
21083
b98664d3 21084 complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
924c2928 21085 line_offset, objfile_name (objfile));
804d2729
TT
21086 m_currently_recording_lines = false;
21087 /* Note: m_currently_recording_lines is left as false until we see
21088 DW_LNE_end_sequence. */
924c2928
DE
21089 }
21090}
21091
f3f5162e 21092/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
21093 Process the line number information in LH.
21094 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
21095 program in order to set included_p for every referenced header. */
debd256d 21096
c906108c 21097static void
43f3e411
DE
21098dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
21099 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 21100{
d521ce57
TT
21101 const gdb_byte *line_ptr, *extended_end;
21102 const gdb_byte *line_end;
a8c50c1f 21103 unsigned int bytes_read, extended_len;
699ca60a 21104 unsigned char op_code, extended_op;
e142c38c 21105 CORE_ADDR baseaddr;
518817b3 21106 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
f3f5162e 21107 bfd *abfd = objfile->obfd;
fbf65064 21108 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6f77053d
PA
21109 /* True if we're recording line info (as opposed to building partial
21110 symtabs and just interested in finding include files mentioned by
21111 the line number program). */
21112 bool record_lines_p = !decode_for_pst_p;
e142c38c
DJ
21113
21114 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 21115
debd256d
JB
21116 line_ptr = lh->statement_program_start;
21117 line_end = lh->statement_program_end;
c906108c
SS
21118
21119 /* Read the statement sequences until there's nothing left. */
21120 while (line_ptr < line_end)
21121 {
6f77053d
PA
21122 /* The DWARF line number program state machine. Reset the state
21123 machine at the start of each sequence. */
804d2729 21124 lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
6f77053d 21125 bool end_sequence = false;
d9b3de22 21126
8c43009f 21127 if (record_lines_p)
c906108c 21128 {
8c43009f
PA
21129 /* Start a subfile for the current file of the state
21130 machine. */
21131 const file_entry *fe = state_machine.current_file ();
21132
21133 if (fe != NULL)
804d2729 21134 dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
c906108c
SS
21135 }
21136
a738430d 21137 /* Decode the table. */
d9b3de22 21138 while (line_ptr < line_end && !end_sequence)
c906108c
SS
21139 {
21140 op_code = read_1_byte (abfd, line_ptr);
21141 line_ptr += 1;
9aa1fe7e 21142
debd256d 21143 if (op_code >= lh->opcode_base)
6e70227d 21144 {
8e07a239 21145 /* Special opcode. */
6f77053d 21146 state_machine.handle_special_opcode (op_code);
9aa1fe7e
GK
21147 }
21148 else switch (op_code)
c906108c
SS
21149 {
21150 case DW_LNS_extended_op:
3e43a32a
MS
21151 extended_len = read_unsigned_leb128 (abfd, line_ptr,
21152 &bytes_read);
473b7be6 21153 line_ptr += bytes_read;
a8c50c1f 21154 extended_end = line_ptr + extended_len;
c906108c
SS
21155 extended_op = read_1_byte (abfd, line_ptr);
21156 line_ptr += 1;
21157 switch (extended_op)
21158 {
21159 case DW_LNE_end_sequence:
6f77053d
PA
21160 state_machine.handle_end_sequence ();
21161 end_sequence = true;
c906108c
SS
21162 break;
21163 case DW_LNE_set_address:
d9b3de22
DE
21164 {
21165 CORE_ADDR address
21166 = read_address (abfd, line_ptr, cu, &bytes_read);
d9b3de22 21167 line_ptr += bytes_read;
6f77053d
PA
21168
21169 state_machine.check_line_address (cu, line_ptr,
7ab6656f 21170 lowpc - baseaddr, address);
6f77053d 21171 state_machine.handle_set_address (baseaddr, address);
d9b3de22 21172 }
c906108c
SS
21173 break;
21174 case DW_LNE_define_file:
debd256d 21175 {
d521ce57 21176 const char *cur_file;
ecfb656c
PA
21177 unsigned int mod_time, length;
21178 dir_index dindex;
6e70227d 21179
3e43a32a
MS
21180 cur_file = read_direct_string (abfd, line_ptr,
21181 &bytes_read);
debd256d 21182 line_ptr += bytes_read;
ecfb656c 21183 dindex = (dir_index)
debd256d
JB
21184 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21185 line_ptr += bytes_read;
21186 mod_time =
21187 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21188 line_ptr += bytes_read;
21189 length =
21190 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21191 line_ptr += bytes_read;
ecfb656c 21192 lh->add_file_name (cur_file, dindex, mod_time, length);
debd256d 21193 }
c906108c 21194 break;
d0c6ba3d 21195 case DW_LNE_set_discriminator:
6f77053d
PA
21196 {
21197 /* The discriminator is not interesting to the
21198 debugger; just ignore it. We still need to
21199 check its value though:
21200 if there are consecutive entries for the same
21201 (non-prologue) line we want to coalesce them.
21202 PR 17276. */
21203 unsigned int discr
21204 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21205 line_ptr += bytes_read;
21206
21207 state_machine.handle_set_discriminator (discr);
21208 }
d0c6ba3d 21209 break;
c906108c 21210 default:
b98664d3 21211 complaint (_("mangled .debug_line section"));
debd256d 21212 return;
c906108c 21213 }
a8c50c1f
DJ
21214 /* Make sure that we parsed the extended op correctly. If e.g.
21215 we expected a different address size than the producer used,
21216 we may have read the wrong number of bytes. */
21217 if (line_ptr != extended_end)
21218 {
b98664d3 21219 complaint (_("mangled .debug_line section"));
a8c50c1f
DJ
21220 return;
21221 }
c906108c
SS
21222 break;
21223 case DW_LNS_copy:
6f77053d 21224 state_machine.handle_copy ();
c906108c
SS
21225 break;
21226 case DW_LNS_advance_pc:
2dc7f7b3
TT
21227 {
21228 CORE_ADDR adjust
21229 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
2dc7f7b3 21230 line_ptr += bytes_read;
6f77053d
PA
21231
21232 state_machine.handle_advance_pc (adjust);
2dc7f7b3 21233 }
c906108c
SS
21234 break;
21235 case DW_LNS_advance_line:
a05a36a5
DE
21236 {
21237 int line_delta
21238 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
a05a36a5 21239 line_ptr += bytes_read;
6f77053d
PA
21240
21241 state_machine.handle_advance_line (line_delta);
a05a36a5 21242 }
c906108c
SS
21243 break;
21244 case DW_LNS_set_file:
d9b3de22 21245 {
6f77053d 21246 file_name_index file
ecfb656c
PA
21247 = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21248 &bytes_read);
d9b3de22 21249 line_ptr += bytes_read;
8c43009f 21250
6f77053d 21251 state_machine.handle_set_file (file);
d9b3de22 21252 }
c906108c
SS
21253 break;
21254 case DW_LNS_set_column:
0ad93d4f 21255 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
21256 line_ptr += bytes_read;
21257 break;
21258 case DW_LNS_negate_stmt:
6f77053d 21259 state_machine.handle_negate_stmt ();
c906108c
SS
21260 break;
21261 case DW_LNS_set_basic_block:
c906108c 21262 break;
c2c6d25f
JM
21263 /* Add to the address register of the state machine the
21264 address increment value corresponding to special opcode
a738430d
MK
21265 255. I.e., this value is scaled by the minimum
21266 instruction length since special opcode 255 would have
b021a221 21267 scaled the increment. */
c906108c 21268 case DW_LNS_const_add_pc:
6f77053d 21269 state_machine.handle_const_add_pc ();
c906108c
SS
21270 break;
21271 case DW_LNS_fixed_advance_pc:
3e29f34a 21272 {
6f77053d 21273 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
3e29f34a 21274 line_ptr += 2;
6f77053d
PA
21275
21276 state_machine.handle_fixed_advance_pc (addr_adj);
3e29f34a 21277 }
c906108c 21278 break;
9aa1fe7e 21279 default:
a738430d
MK
21280 {
21281 /* Unknown standard opcode, ignore it. */
9aa1fe7e 21282 int i;
a738430d 21283
debd256d 21284 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
21285 {
21286 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21287 line_ptr += bytes_read;
21288 }
21289 }
c906108c
SS
21290 }
21291 }
d9b3de22
DE
21292
21293 if (!end_sequence)
21294 dwarf2_debug_line_missing_end_sequence_complaint ();
21295
21296 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21297 in which case we still finish recording the last line). */
6f77053d 21298 state_machine.record_line (true);
c906108c 21299 }
f3f5162e
DE
21300}
21301
21302/* Decode the Line Number Program (LNP) for the given line_header
21303 structure and CU. The actual information extracted and the type
21304 of structures created from the LNP depends on the value of PST.
21305
21306 1. If PST is NULL, then this procedure uses the data from the program
21307 to create all necessary symbol tables, and their linetables.
21308
21309 2. If PST is not NULL, this procedure reads the program to determine
21310 the list of files included by the unit represented by PST, and
21311 builds all the associated partial symbol tables.
21312
21313 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21314 It is used for relative paths in the line table.
21315 NOTE: When processing partial symtabs (pst != NULL),
21316 comp_dir == pst->dirname.
21317
21318 NOTE: It is important that psymtabs have the same file name (via strcmp)
21319 as the corresponding symtab. Since COMP_DIR is not used in the name of the
21320 symtab we don't use it in the name of the psymtabs we create.
21321 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
21322 A good testcase for this is mb-inline.exp.
21323
527f3840
JK
21324 LOWPC is the lowest address in CU (or 0 if not known).
21325
21326 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21327 for its PC<->lines mapping information. Otherwise only the filename
21328 table is read in. */
f3f5162e
DE
21329
21330static void
21331dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 21332 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 21333 CORE_ADDR lowpc, int decode_mapping)
f3f5162e 21334{
518817b3 21335 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
f3f5162e 21336 const int decode_for_pst_p = (pst != NULL);
f3f5162e 21337
527f3840
JK
21338 if (decode_mapping)
21339 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
21340
21341 if (decode_for_pst_p)
21342 {
21343 int file_index;
21344
21345 /* Now that we're done scanning the Line Header Program, we can
21346 create the psymtab of each included file. */
fff8551c 21347 for (file_index = 0; file_index < lh->file_names.size (); file_index++)
aaa75496
JB
21348 if (lh->file_names[file_index].included_p == 1)
21349 {
c89b44cd 21350 gdb::unique_xmalloc_ptr<char> name_holder;
d521ce57 21351 const char *include_name =
c89b44cd
TT
21352 psymtab_include_file_name (lh, file_index, pst, comp_dir,
21353 &name_holder);
c6da4cef 21354 if (include_name != NULL)
aaa75496
JB
21355 dwarf2_create_include_psymtab (include_name, pst, objfile);
21356 }
21357 }
cb1df416
DJ
21358 else
21359 {
21360 /* Make sure a symtab is created for every file, even files
21361 which contain only variables (i.e. no code with associated
21362 line numbers). */
c24bdb02
KS
21363 buildsym_compunit *builder = cu->get_builder ();
21364 struct compunit_symtab *cust = builder->get_compunit_symtab ();
cb1df416 21365 int i;
cb1df416 21366
fff8551c 21367 for (i = 0; i < lh->file_names.size (); i++)
cb1df416 21368 {
8c43009f 21369 file_entry &fe = lh->file_names[i];
9a619af0 21370
804d2729 21371 dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
cb1df416 21372
c24bdb02 21373 if (builder->get_current_subfile ()->symtab == NULL)
43f3e411 21374 {
c24bdb02 21375 builder->get_current_subfile ()->symtab
804d2729 21376 = allocate_symtab (cust,
c24bdb02 21377 builder->get_current_subfile ()->name);
43f3e411 21378 }
c24bdb02 21379 fe.symtab = builder->get_current_subfile ()->symtab;
cb1df416
DJ
21380 }
21381 }
c906108c
SS
21382}
21383
21384/* Start a subfile for DWARF. FILENAME is the name of the file and
21385 DIRNAME the name of the source directory which contains FILENAME
4d663531 21386 or NULL if not known.
c906108c
SS
21387 This routine tries to keep line numbers from identical absolute and
21388 relative file names in a common subfile.
21389
21390 Using the `list' example from the GDB testsuite, which resides in
21391 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21392 of /srcdir/list0.c yields the following debugging information for list0.c:
21393
c5aa993b 21394 DW_AT_name: /srcdir/list0.c
4d663531 21395 DW_AT_comp_dir: /compdir
357e46e7 21396 files.files[0].name: list0.h
c5aa993b 21397 files.files[0].dir: /srcdir
357e46e7 21398 files.files[1].name: list0.c
c5aa993b 21399 files.files[1].dir: /srcdir
c906108c
SS
21400
21401 The line number information for list0.c has to end up in a single
4f1520fb
FR
21402 subfile, so that `break /srcdir/list0.c:1' works as expected.
21403 start_subfile will ensure that this happens provided that we pass the
21404 concatenation of files.files[1].dir and files.files[1].name as the
21405 subfile's name. */
c906108c
SS
21406
21407static void
804d2729
TT
21408dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21409 const char *dirname)
c906108c 21410{
d521ce57 21411 char *copy = NULL;
4f1520fb 21412
4d663531 21413 /* In order not to lose the line information directory,
4f1520fb
FR
21414 we concatenate it to the filename when it makes sense.
21415 Note that the Dwarf3 standard says (speaking of filenames in line
21416 information): ``The directory index is ignored for file names
21417 that represent full path names''. Thus ignoring dirname in the
21418 `else' branch below isn't an issue. */
c906108c 21419
d5166ae1 21420 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
21421 {
21422 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21423 filename = copy;
21424 }
c906108c 21425
c24bdb02 21426 cu->get_builder ()->start_subfile (filename);
4f1520fb 21427
d521ce57
TT
21428 if (copy != NULL)
21429 xfree (copy);
c906108c
SS
21430}
21431
804d2729
TT
21432/* Start a symtab for DWARF. NAME, COMP_DIR, LOW_PC are passed to the
21433 buildsym_compunit constructor. */
f4dc4d17 21434
c24bdb02
KS
21435struct compunit_symtab *
21436dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
21437 CORE_ADDR low_pc)
f4dc4d17 21438{
c24bdb02 21439 gdb_assert (m_builder == nullptr);
43f3e411 21440
c24bdb02
KS
21441 m_builder.reset (new struct buildsym_compunit
21442 (per_cu->dwarf2_per_objfile->objfile,
21443 name, comp_dir, language, low_pc));
93b8bea4 21444
c24bdb02 21445 list_in_scope = get_builder ()->get_file_symbols ();
804d2729 21446
c24bdb02
KS
21447 get_builder ()->record_debugformat ("DWARF 2");
21448 get_builder ()->record_producer (producer);
f4dc4d17 21449
c24bdb02 21450 processing_has_namespace_info = false;
43f3e411 21451
c24bdb02 21452 return get_builder ()->get_compunit_symtab ();
f4dc4d17
DE
21453}
21454
4c2df51b
DJ
21455static void
21456var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 21457 struct dwarf2_cu *cu)
4c2df51b 21458{
518817b3 21459 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
e7c27a73
DJ
21460 struct comp_unit_head *cu_header = &cu->header;
21461
4c2df51b
DJ
21462 /* NOTE drow/2003-01-30: There used to be a comment and some special
21463 code here to turn a symbol with DW_AT_external and a
21464 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
21465 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21466 with some versions of binutils) where shared libraries could have
21467 relocations against symbols in their debug information - the
21468 minimal symbol would have the right address, but the debug info
21469 would not. It's no longer necessary, because we will explicitly
21470 apply relocations when we read in the debug information now. */
21471
21472 /* A DW_AT_location attribute with no contents indicates that a
21473 variable has been optimized away. */
21474 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21475 {
f1e6e072 21476 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
21477 return;
21478 }
21479
21480 /* Handle one degenerate form of location expression specially, to
21481 preserve GDB's previous behavior when section offsets are
336d760d
AT
21482 specified. If this is just a DW_OP_addr, DW_OP_addrx, or
21483 DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
21484
21485 if (attr_form_is_block (attr)
3019eac3
DE
21486 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21487 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
336d760d
AT
21488 || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21489 || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
3019eac3
DE
21490 && (DW_BLOCK (attr)->size
21491 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 21492 {
891d2f0b 21493 unsigned int dummy;
4c2df51b 21494
3019eac3 21495 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
38583298
TT
21496 SET_SYMBOL_VALUE_ADDRESS (sym,
21497 read_address (objfile->obfd,
21498 DW_BLOCK (attr)->data + 1,
21499 cu, &dummy));
3019eac3 21500 else
38583298
TT
21501 SET_SYMBOL_VALUE_ADDRESS
21502 (sym, read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1,
21503 &dummy));
f1e6e072 21504 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b 21505 fixup_symbol_section (sym, objfile);
38583298
TT
21506 SET_SYMBOL_VALUE_ADDRESS (sym,
21507 SYMBOL_VALUE_ADDRESS (sym)
21508 + ANOFFSET (objfile->section_offsets,
21509 SYMBOL_SECTION (sym)));
4c2df51b
DJ
21510 return;
21511 }
21512
21513 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21514 expression evaluator, and use LOC_COMPUTED only when necessary
21515 (i.e. when the value of a register or memory location is
21516 referenced, or a thread-local block, etc.). Then again, it might
21517 not be worthwhile. I'm assuming that it isn't unless performance
21518 or memory numbers show me otherwise. */
21519
f1e6e072 21520 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 21521
f1e6e072 21522 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
9068261f 21523 cu->has_loclist = true;
4c2df51b
DJ
21524}
21525
c906108c
SS
21526/* Given a pointer to a DWARF information entry, figure out if we need
21527 to make a symbol table entry for it, and if so, create a new entry
21528 and return a pointer to it.
21529 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
21530 used the passed type.
21531 If SPACE is not NULL, use it to hold the new symbol. If it is
21532 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
21533
21534static struct symbol *
5e2db402
TT
21535new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21536 struct symbol *space)
c906108c 21537{
518817b3
SM
21538 struct dwarf2_per_objfile *dwarf2_per_objfile
21539 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 21540 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 21541 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 21542 struct symbol *sym = NULL;
15d034d0 21543 const char *name;
c906108c
SS
21544 struct attribute *attr = NULL;
21545 struct attribute *attr2 = NULL;
e142c38c 21546 CORE_ADDR baseaddr;
e37fd15a
SW
21547 struct pending **list_to_add = NULL;
21548
edb3359d 21549 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
21550
21551 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 21552
94af9270 21553 name = dwarf2_name (die, cu);
c906108c
SS
21554 if (name)
21555 {
94af9270 21556 const char *linkagename;
34eaf542 21557 int suppress_add = 0;
94af9270 21558
34eaf542
TT
21559 if (space)
21560 sym = space;
21561 else
e623cf5d 21562 sym = allocate_symbol (objfile);
c906108c 21563 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
21564
21565 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 21566 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
21567 linkagename = dwarf2_physname (name, die, cu);
21568 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 21569
f55ee35c
JK
21570 /* Fortran does not have mangling standard and the mangling does differ
21571 between gfortran, iFort etc. */
21572 if (cu->language == language_fortran
b250c185 21573 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 21574 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 21575 dwarf2_full_name (name, die, cu),
29df156d 21576 NULL);
f55ee35c 21577
c906108c 21578 /* Default assumptions.
c5aa993b 21579 Use the passed type or decode it from the die. */
176620f1 21580 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 21581 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
21582 if (type != NULL)
21583 SYMBOL_TYPE (sym) = type;
21584 else
e7c27a73 21585 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
21586 attr = dwarf2_attr (die,
21587 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21588 cu);
c906108c
SS
21589 if (attr)
21590 {
21591 SYMBOL_LINE (sym) = DW_UNSND (attr);
21592 }
cb1df416 21593
edb3359d
DJ
21594 attr = dwarf2_attr (die,
21595 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21596 cu);
cb1df416
DJ
21597 if (attr)
21598 {
ecfb656c 21599 file_name_index file_index = (file_name_index) DW_UNSND (attr);
8c43009f 21600 struct file_entry *fe;
9a619af0 21601
ecfb656c
PA
21602 if (cu->line_header != NULL)
21603 fe = cu->line_header->file_name_at (file_index);
8c43009f
PA
21604 else
21605 fe = NULL;
21606
21607 if (fe == NULL)
b98664d3 21608 complaint (_("file index out of range"));
8c43009f
PA
21609 else
21610 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
21611 }
21612
c906108c
SS
21613 switch (die->tag)
21614 {
21615 case DW_TAG_label:
e142c38c 21616 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 21617 if (attr)
3e29f34a
MR
21618 {
21619 CORE_ADDR addr;
21620
21621 addr = attr_value_as_address (attr);
21622 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
38583298 21623 SET_SYMBOL_VALUE_ADDRESS (sym, addr);
3e29f34a 21624 }
0f5238ed
TT
21625 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21626 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 21627 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
d3cb6808 21628 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
21629 break;
21630 case DW_TAG_subprogram:
21631 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21632 finish_block. */
f1e6e072 21633 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 21634 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d 21635 if ((attr2 && (DW_UNSND (attr2) != 0))
0a4b0913
AB
21636 || cu->language == language_ada
21637 || cu->language == language_fortran)
c906108c 21638 {
2cfa0c8d 21639 /* Subprograms marked external are stored as a global symbol.
0a4b0913
AB
21640 Ada and Fortran subprograms, whether marked external or
21641 not, are always stored as a global symbol, because we want
21642 to be able to access them globally. For instance, we want
21643 to be able to break on a nested subprogram without having
21644 to specify the context. */
c24bdb02 21645 list_to_add = cu->get_builder ()->get_global_symbols ();
c906108c
SS
21646 }
21647 else
21648 {
e37fd15a 21649 list_to_add = cu->list_in_scope;
c906108c
SS
21650 }
21651 break;
edb3359d
DJ
21652 case DW_TAG_inlined_subroutine:
21653 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21654 finish_block. */
f1e6e072 21655 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 21656 SYMBOL_INLINED (sym) = 1;
481860b3 21657 list_to_add = cu->list_in_scope;
edb3359d 21658 break;
34eaf542
TT
21659 case DW_TAG_template_value_param:
21660 suppress_add = 1;
21661 /* Fall through. */
72929c62 21662 case DW_TAG_constant:
c906108c 21663 case DW_TAG_variable:
254e6b9e 21664 case DW_TAG_member:
0963b4bd
MS
21665 /* Compilation with minimal debug info may result in
21666 variables with missing type entries. Change the
21667 misleading `void' type to something sensible. */
c906108c 21668 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
46a4882b 21669 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
64c50499 21670
e142c38c 21671 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
21672 /* In the case of DW_TAG_member, we should only be called for
21673 static const members. */
21674 if (die->tag == DW_TAG_member)
21675 {
3863f96c
DE
21676 /* dwarf2_add_field uses die_is_declaration,
21677 so we do the same. */
254e6b9e
DE
21678 gdb_assert (die_is_declaration (die, cu));
21679 gdb_assert (attr);
21680 }
c906108c
SS
21681 if (attr)
21682 {
e7c27a73 21683 dwarf2_const_value (attr, sym, cu);
e142c38c 21684 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 21685 if (!suppress_add)
34eaf542
TT
21686 {
21687 if (attr2 && (DW_UNSND (attr2) != 0))
c24bdb02 21688 list_to_add = cu->get_builder ()->get_global_symbols ();
34eaf542 21689 else
e37fd15a 21690 list_to_add = cu->list_in_scope;
34eaf542 21691 }
c906108c
SS
21692 break;
21693 }
e142c38c 21694 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
21695 if (attr)
21696 {
e7c27a73 21697 var_decode_location (attr, sym, cu);
e142c38c 21698 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
21699
21700 /* Fortran explicitly imports any global symbols to the local
21701 scope by DW_TAG_common_block. */
21702 if (cu->language == language_fortran && die->parent
21703 && die->parent->tag == DW_TAG_common_block)
21704 attr2 = NULL;
21705
caac4577
JG
21706 if (SYMBOL_CLASS (sym) == LOC_STATIC
21707 && SYMBOL_VALUE_ADDRESS (sym) == 0
21708 && !dwarf2_per_objfile->has_section_at_zero)
21709 {
21710 /* When a static variable is eliminated by the linker,
21711 the corresponding debug information is not stripped
21712 out, but the variable address is set to null;
21713 do not add such variables into symbol table. */
21714 }
21715 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 21716 {
4b610737
TT
21717 if (SYMBOL_CLASS (sym) == LOC_STATIC
21718 && (objfile->flags & OBJF_MAINLINE) == 0
21719 && dwarf2_per_objfile->can_copy)
21720 {
21721 /* A global static variable might be subject to
21722 copy relocation. We first check for a local
21723 minsym, though, because maybe the symbol was
21724 marked hidden, in which case this would not
21725 apply. */
21726 bound_minimal_symbol found
21727 = (lookup_minimal_symbol_linkage
21728 (SYMBOL_LINKAGE_NAME (sym), objfile));
21729 if (found.minsym != nullptr)
21730 sym->maybe_copied = 1;
21731 }
f55ee35c 21732
1c809c68
TT
21733 /* A variable with DW_AT_external is never static,
21734 but it may be block-scoped. */
804d2729 21735 list_to_add
c24bdb02
KS
21736 = ((cu->list_in_scope
21737 == cu->get_builder ()->get_file_symbols ())
21738 ? cu->get_builder ()->get_global_symbols ()
804d2729 21739 : cu->list_in_scope);
1c809c68 21740 }
c906108c 21741 else
e37fd15a 21742 list_to_add = cu->list_in_scope;
c906108c
SS
21743 }
21744 else
21745 {
21746 /* We do not know the address of this symbol.
c5aa993b
JM
21747 If it is an external symbol and we have type information
21748 for it, enter the symbol as a LOC_UNRESOLVED symbol.
21749 The address of the variable will then be determined from
21750 the minimal symbol table whenever the variable is
21751 referenced. */
e142c38c 21752 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
21753
21754 /* Fortran explicitly imports any global symbols to the local
21755 scope by DW_TAG_common_block. */
21756 if (cu->language == language_fortran && die->parent
21757 && die->parent->tag == DW_TAG_common_block)
21758 {
21759 /* SYMBOL_CLASS doesn't matter here because
21760 read_common_block is going to reset it. */
21761 if (!suppress_add)
21762 list_to_add = cu->list_in_scope;
21763 }
21764 else if (attr2 && (DW_UNSND (attr2) != 0)
21765 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 21766 {
0fe7935b
DJ
21767 /* A variable with DW_AT_external is never static, but it
21768 may be block-scoped. */
804d2729 21769 list_to_add
c24bdb02
KS
21770 = ((cu->list_in_scope
21771 == cu->get_builder ()->get_file_symbols ())
21772 ? cu->get_builder ()->get_global_symbols ()
804d2729 21773 : cu->list_in_scope);
0fe7935b 21774
f1e6e072 21775 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 21776 }
442ddf59
JK
21777 else if (!die_is_declaration (die, cu))
21778 {
21779 /* Use the default LOC_OPTIMIZED_OUT class. */
21780 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
21781 if (!suppress_add)
21782 list_to_add = cu->list_in_scope;
442ddf59 21783 }
c906108c
SS
21784 }
21785 break;
21786 case DW_TAG_formal_parameter:
a60f3166
TT
21787 {
21788 /* If we are inside a function, mark this as an argument. If
21789 not, we might be looking at an argument to an inlined function
21790 when we do not have enough information to show inlined frames;
21791 pretend it's a local variable in that case so that the user can
21792 still see it. */
804d2729 21793 struct context_stack *curr
c24bdb02 21794 = cu->get_builder ()->get_current_context_stack ();
a60f3166
TT
21795 if (curr != nullptr && curr->name != nullptr)
21796 SYMBOL_IS_ARGUMENT (sym) = 1;
21797 attr = dwarf2_attr (die, DW_AT_location, cu);
21798 if (attr)
21799 {
21800 var_decode_location (attr, sym, cu);
21801 }
21802 attr = dwarf2_attr (die, DW_AT_const_value, cu);
21803 if (attr)
21804 {
21805 dwarf2_const_value (attr, sym, cu);
21806 }
f346a30d 21807
a60f3166
TT
21808 list_to_add = cu->list_in_scope;
21809 }
c906108c
SS
21810 break;
21811 case DW_TAG_unspecified_parameters:
21812 /* From varargs functions; gdb doesn't seem to have any
21813 interest in this information, so just ignore it for now.
21814 (FIXME?) */
21815 break;
34eaf542
TT
21816 case DW_TAG_template_type_param:
21817 suppress_add = 1;
21818 /* Fall through. */
c906108c 21819 case DW_TAG_class_type:
680b30c7 21820 case DW_TAG_interface_type:
c906108c
SS
21821 case DW_TAG_structure_type:
21822 case DW_TAG_union_type:
72019c9c 21823 case DW_TAG_set_type:
c906108c 21824 case DW_TAG_enumeration_type:
f1e6e072 21825 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 21826 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 21827
63d06c5c 21828 {
9c37b5ae 21829 /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
63d06c5c
DC
21830 really ever be static objects: otherwise, if you try
21831 to, say, break of a class's method and you're in a file
21832 which doesn't mention that class, it won't work unless
21833 the check for all static symbols in lookup_symbol_aux
21834 saves you. See the OtherFileClass tests in
21835 gdb.c++/namespace.exp. */
21836
e37fd15a 21837 if (!suppress_add)
34eaf542 21838 {
c24bdb02 21839 buildsym_compunit *builder = cu->get_builder ();
804d2729 21840 list_to_add
c24bdb02 21841 = (cu->list_in_scope == builder->get_file_symbols ()
804d2729 21842 && cu->language == language_cplus
c24bdb02 21843 ? builder->get_global_symbols ()
804d2729 21844 : cu->list_in_scope);
63d06c5c 21845
64382290 21846 /* The semantics of C++ state that "struct foo {
9c37b5ae 21847 ... }" also defines a typedef for "foo". */
64382290 21848 if (cu->language == language_cplus
45280282 21849 || cu->language == language_ada
c44af4eb
TT
21850 || cu->language == language_d
21851 || cu->language == language_rust)
64382290
TT
21852 {
21853 /* The symbol's name is already allocated along
21854 with this objfile, so we don't need to
21855 duplicate it for the type. */
21856 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21857 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21858 }
63d06c5c
DC
21859 }
21860 }
c906108c
SS
21861 break;
21862 case DW_TAG_typedef:
f1e6e072 21863 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 21864 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 21865 list_to_add = cu->list_in_scope;
63d06c5c 21866 break;
c906108c 21867 case DW_TAG_base_type:
a02abb62 21868 case DW_TAG_subrange_type:
f1e6e072 21869 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 21870 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 21871 list_to_add = cu->list_in_scope;
c906108c
SS
21872 break;
21873 case DW_TAG_enumerator:
e142c38c 21874 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
21875 if (attr)
21876 {
e7c27a73 21877 dwarf2_const_value (attr, sym, cu);
c906108c 21878 }
63d06c5c
DC
21879 {
21880 /* NOTE: carlton/2003-11-10: See comment above in the
21881 DW_TAG_class_type, etc. block. */
21882
804d2729 21883 list_to_add
c24bdb02 21884 = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
804d2729 21885 && cu->language == language_cplus
c24bdb02 21886 ? cu->get_builder ()->get_global_symbols ()
804d2729 21887 : cu->list_in_scope);
63d06c5c 21888 }
c906108c 21889 break;
74921315 21890 case DW_TAG_imported_declaration:
5c4e30ca 21891 case DW_TAG_namespace:
f1e6e072 21892 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
c24bdb02 21893 list_to_add = cu->get_builder ()->get_global_symbols ();
5c4e30ca 21894 break;
530e8392
KB
21895 case DW_TAG_module:
21896 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21897 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
c24bdb02 21898 list_to_add = cu->get_builder ()->get_global_symbols ();
530e8392 21899 break;
4357ac6c 21900 case DW_TAG_common_block:
f1e6e072 21901 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c 21902 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
d3cb6808 21903 add_symbol_to_list (sym, cu->list_in_scope);
4357ac6c 21904 break;
c906108c
SS
21905 default:
21906 /* Not a tag we recognize. Hopefully we aren't processing
21907 trash data, but since we must specifically ignore things
21908 we don't recognize, there is nothing else we should do at
0963b4bd 21909 this point. */
b98664d3 21910 complaint (_("unsupported tag: '%s'"),
4d3c2250 21911 dwarf_tag_name (die->tag));
c906108c
SS
21912 break;
21913 }
df8a16a1 21914
e37fd15a
SW
21915 if (suppress_add)
21916 {
21917 sym->hash_next = objfile->template_symbols;
21918 objfile->template_symbols = sym;
21919 list_to_add = NULL;
21920 }
21921
21922 if (list_to_add != NULL)
d3cb6808 21923 add_symbol_to_list (sym, list_to_add);
e37fd15a 21924
df8a16a1
DJ
21925 /* For the benefit of old versions of GCC, check for anonymous
21926 namespaces based on the demangled name. */
4d4ec4e5 21927 if (!cu->processing_has_namespace_info
94af9270 21928 && cu->language == language_cplus)
c24bdb02 21929 cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
c906108c
SS
21930 }
21931 return (sym);
21932}
21933
98bfdba5
PA
21934/* Given an attr with a DW_FORM_dataN value in host byte order,
21935 zero-extend it as appropriate for the symbol's type. The DWARF
21936 standard (v4) is not entirely clear about the meaning of using
21937 DW_FORM_dataN for a constant with a signed type, where the type is
21938 wider than the data. The conclusion of a discussion on the DWARF
21939 list was that this is unspecified. We choose to always zero-extend
21940 because that is the interpretation long in use by GCC. */
c906108c 21941
98bfdba5 21942static gdb_byte *
ff39bb5e 21943dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 21944 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 21945{
518817b3 21946 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
e17a4113
UW
21947 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21948 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
21949 LONGEST l = DW_UNSND (attr);
21950
21951 if (bits < sizeof (*value) * 8)
21952 {
21953 l &= ((LONGEST) 1 << bits) - 1;
21954 *value = l;
21955 }
21956 else if (bits == sizeof (*value) * 8)
21957 *value = l;
21958 else
21959 {
224c3ddb 21960 gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
98bfdba5
PA
21961 store_unsigned_integer (bytes, bits / 8, byte_order, l);
21962 return bytes;
21963 }
21964
21965 return NULL;
21966}
21967
21968/* Read a constant value from an attribute. Either set *VALUE, or if
21969 the value does not fit in *VALUE, set *BYTES - either already
21970 allocated on the objfile obstack, or newly allocated on OBSTACK,
21971 or, set *BATON, if we translated the constant to a location
21972 expression. */
21973
21974static void
ff39bb5e 21975dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
21976 const char *name, struct obstack *obstack,
21977 struct dwarf2_cu *cu,
d521ce57 21978 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
21979 struct dwarf2_locexpr_baton **baton)
21980{
518817b3 21981 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
98bfdba5 21982 struct comp_unit_head *cu_header = &cu->header;
c906108c 21983 struct dwarf_block *blk;
98bfdba5
PA
21984 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21985 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21986
21987 *value = 0;
21988 *bytes = NULL;
21989 *baton = NULL;
c906108c
SS
21990
21991 switch (attr->form)
21992 {
21993 case DW_FORM_addr:
336d760d 21994 case DW_FORM_addrx:
3019eac3 21995 case DW_FORM_GNU_addr_index:
ac56253d 21996 {
ac56253d
TT
21997 gdb_byte *data;
21998
98bfdba5
PA
21999 if (TYPE_LENGTH (type) != cu_header->addr_size)
22000 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 22001 cu_header->addr_size,
98bfdba5 22002 TYPE_LENGTH (type));
ac56253d
TT
22003 /* Symbols of this form are reasonably rare, so we just
22004 piggyback on the existing location code rather than writing
22005 a new implementation of symbol_computed_ops. */
8d749320 22006 *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
98bfdba5
PA
22007 (*baton)->per_cu = cu->per_cu;
22008 gdb_assert ((*baton)->per_cu);
ac56253d 22009
98bfdba5 22010 (*baton)->size = 2 + cu_header->addr_size;
224c3ddb 22011 data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
98bfdba5 22012 (*baton)->data = data;
ac56253d
TT
22013
22014 data[0] = DW_OP_addr;
22015 store_unsigned_integer (&data[1], cu_header->addr_size,
22016 byte_order, DW_ADDR (attr));
22017 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 22018 }
c906108c 22019 break;
4ac36638 22020 case DW_FORM_string:
93b5768b 22021 case DW_FORM_strp:
cf532bd1 22022 case DW_FORM_strx:
3019eac3 22023 case DW_FORM_GNU_str_index:
36586728 22024 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
22025 /* DW_STRING is already allocated on the objfile obstack, point
22026 directly to it. */
d521ce57 22027 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 22028 break;
c906108c
SS
22029 case DW_FORM_block1:
22030 case DW_FORM_block2:
22031 case DW_FORM_block4:
22032 case DW_FORM_block:
2dc7f7b3 22033 case DW_FORM_exprloc:
0224619f 22034 case DW_FORM_data16:
c906108c 22035 blk = DW_BLOCK (attr);
98bfdba5
PA
22036 if (TYPE_LENGTH (type) != blk->size)
22037 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
22038 TYPE_LENGTH (type));
22039 *bytes = blk->data;
c906108c 22040 break;
2df3850c
JM
22041
22042 /* The DW_AT_const_value attributes are supposed to carry the
22043 symbol's value "represented as it would be on the target
22044 architecture." By the time we get here, it's already been
22045 converted to host endianness, so we just need to sign- or
22046 zero-extend it as appropriate. */
22047 case DW_FORM_data1:
3aef2284 22048 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 22049 break;
c906108c 22050 case DW_FORM_data2:
3aef2284 22051 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 22052 break;
c906108c 22053 case DW_FORM_data4:
3aef2284 22054 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 22055 break;
c906108c 22056 case DW_FORM_data8:
3aef2284 22057 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
22058 break;
22059
c906108c 22060 case DW_FORM_sdata:
663c44ac 22061 case DW_FORM_implicit_const:
98bfdba5 22062 *value = DW_SND (attr);
2df3850c
JM
22063 break;
22064
c906108c 22065 case DW_FORM_udata:
98bfdba5 22066 *value = DW_UNSND (attr);
c906108c 22067 break;
2df3850c 22068
c906108c 22069 default:
b98664d3 22070 complaint (_("unsupported const value attribute form: '%s'"),
4d3c2250 22071 dwarf_form_name (attr->form));
98bfdba5 22072 *value = 0;
c906108c
SS
22073 break;
22074 }
22075}
22076
2df3850c 22077
98bfdba5
PA
22078/* Copy constant value from an attribute to a symbol. */
22079
2df3850c 22080static void
ff39bb5e 22081dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 22082 struct dwarf2_cu *cu)
2df3850c 22083{
518817b3 22084 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
12df843f 22085 LONGEST value;
d521ce57 22086 const gdb_byte *bytes;
98bfdba5 22087 struct dwarf2_locexpr_baton *baton;
2df3850c 22088
98bfdba5
PA
22089 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
22090 SYMBOL_PRINT_NAME (sym),
22091 &objfile->objfile_obstack, cu,
22092 &value, &bytes, &baton);
2df3850c 22093
98bfdba5
PA
22094 if (baton != NULL)
22095 {
98bfdba5 22096 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 22097 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
22098 }
22099 else if (bytes != NULL)
22100 {
22101 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 22102 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
22103 }
22104 else
22105 {
22106 SYMBOL_VALUE (sym) = value;
f1e6e072 22107 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 22108 }
2df3850c
JM
22109}
22110
c906108c
SS
22111/* Return the type of the die in question using its DW_AT_type attribute. */
22112
22113static struct type *
e7c27a73 22114die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 22115{
c906108c 22116 struct attribute *type_attr;
c906108c 22117
e142c38c 22118 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
22119 if (!type_attr)
22120 {
518817b3 22121 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 22122 /* A missing DW_AT_type represents a void type. */
518817b3 22123 return objfile_type (objfile)->builtin_void;
c906108c 22124 }
348e048f 22125
673bfd45 22126 return lookup_die_type (die, type_attr, cu);
c906108c
SS
22127}
22128
b4ba55a1
JB
22129/* True iff CU's producer generates GNAT Ada auxiliary information
22130 that allows to find parallel types through that information instead
22131 of having to do expensive parallel lookups by type name. */
22132
22133static int
22134need_gnat_info (struct dwarf2_cu *cu)
22135{
de4cb04a
JB
22136 /* Assume that the Ada compiler was GNAT, which always produces
22137 the auxiliary information. */
22138 return (cu->language == language_ada);
b4ba55a1
JB
22139}
22140
b4ba55a1
JB
22141/* Return the auxiliary type of the die in question using its
22142 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
22143 attribute is not present. */
22144
22145static struct type *
22146die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22147{
b4ba55a1 22148 struct attribute *type_attr;
b4ba55a1
JB
22149
22150 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22151 if (!type_attr)
22152 return NULL;
22153
673bfd45 22154 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
22155}
22156
22157/* If DIE has a descriptive_type attribute, then set the TYPE's
22158 descriptive type accordingly. */
22159
22160static void
22161set_descriptive_type (struct type *type, struct die_info *die,
22162 struct dwarf2_cu *cu)
22163{
22164 struct type *descriptive_type = die_descriptive_type (die, cu);
22165
22166 if (descriptive_type)
22167 {
22168 ALLOCATE_GNAT_AUX_TYPE (type);
22169 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22170 }
22171}
22172
c906108c
SS
22173/* Return the containing type of the die in question using its
22174 DW_AT_containing_type attribute. */
22175
22176static struct type *
e7c27a73 22177die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 22178{
c906108c 22179 struct attribute *type_attr;
518817b3 22180 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
c906108c 22181
e142c38c 22182 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
22183 if (!type_attr)
22184 error (_("Dwarf Error: Problem turning containing type into gdb type "
518817b3 22185 "[in module %s]"), objfile_name (objfile));
33ac96f0 22186
673bfd45 22187 return lookup_die_type (die, type_attr, cu);
c906108c
SS
22188}
22189
ac9ec31b
DE
22190/* Return an error marker type to use for the ill formed type in DIE/CU. */
22191
22192static struct type *
22193build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22194{
518817b3
SM
22195 struct dwarf2_per_objfile *dwarf2_per_objfile
22196 = cu->per_cu->dwarf2_per_objfile;
ac9ec31b 22197 struct objfile *objfile = dwarf2_per_objfile->objfile;
528e1572 22198 char *saved;
ac9ec31b 22199
528e1572
SM
22200 std::string message
22201 = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22202 objfile_name (objfile),
22203 sect_offset_str (cu->header.sect_off),
22204 sect_offset_str (die->sect_off));
efba19b0 22205 saved = obstack_strdup (&objfile->objfile_obstack, message);
ac9ec31b 22206
19f392bc 22207 return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
ac9ec31b
DE
22208}
22209
673bfd45 22210/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
22211 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22212 DW_AT_containing_type.
673bfd45
DE
22213 If there is no type substitute an error marker. */
22214
c906108c 22215static struct type *
ff39bb5e 22216lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 22217 struct dwarf2_cu *cu)
c906108c 22218{
518817b3
SM
22219 struct dwarf2_per_objfile *dwarf2_per_objfile
22220 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 22221 struct objfile *objfile = dwarf2_per_objfile->objfile;
f792889a
DJ
22222 struct type *this_type;
22223
ac9ec31b
DE
22224 gdb_assert (attr->name == DW_AT_type
22225 || attr->name == DW_AT_GNAT_descriptive_type
22226 || attr->name == DW_AT_containing_type);
22227
673bfd45
DE
22228 /* First see if we have it cached. */
22229
36586728
TT
22230 if (attr->form == DW_FORM_GNU_ref_alt)
22231 {
22232 struct dwarf2_per_cu_data *per_cu;
9c541725 22233 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
36586728 22234
ed2dc618
SM
22235 per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22236 dwarf2_per_objfile);
9c541725 22237 this_type = get_die_type_at_offset (sect_off, per_cu);
36586728 22238 }
7771576e 22239 else if (attr_form_is_ref (attr))
673bfd45 22240 {
9c541725 22241 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
673bfd45 22242
9c541725 22243 this_type = get_die_type_at_offset (sect_off, cu->per_cu);
673bfd45 22244 }
55f1336d 22245 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 22246 {
ac9ec31b 22247 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 22248
ac9ec31b 22249 return get_signatured_type (die, signature, cu);
673bfd45
DE
22250 }
22251 else
22252 {
b98664d3 22253 complaint (_("Dwarf Error: Bad type attribute %s in DIE"
9d8780f0
SM
22254 " at %s [in module %s]"),
22255 dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
4262abfb 22256 objfile_name (objfile));
ac9ec31b 22257 return build_error_marker_type (cu, die);
673bfd45
DE
22258 }
22259
22260 /* If not cached we need to read it in. */
22261
22262 if (this_type == NULL)
22263 {
ac9ec31b 22264 struct die_info *type_die = NULL;
673bfd45
DE
22265 struct dwarf2_cu *type_cu = cu;
22266
7771576e 22267 if (attr_form_is_ref (attr))
ac9ec31b
DE
22268 type_die = follow_die_ref (die, attr, &type_cu);
22269 if (type_die == NULL)
22270 return build_error_marker_type (cu, die);
22271 /* If we find the type now, it's probably because the type came
3019eac3
DE
22272 from an inter-CU reference and the type's CU got expanded before
22273 ours. */
ac9ec31b 22274 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
22275 }
22276
22277 /* If we still don't have a type use an error marker. */
22278
22279 if (this_type == NULL)
ac9ec31b 22280 return build_error_marker_type (cu, die);
673bfd45 22281
f792889a 22282 return this_type;
c906108c
SS
22283}
22284
673bfd45
DE
22285/* Return the type in DIE, CU.
22286 Returns NULL for invalid types.
22287
02142a6c 22288 This first does a lookup in die_type_hash,
673bfd45
DE
22289 and only reads the die in if necessary.
22290
22291 NOTE: This can be called when reading in partial or full symbols. */
22292
f792889a 22293static struct type *
e7c27a73 22294read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 22295{
f792889a
DJ
22296 struct type *this_type;
22297
22298 this_type = get_die_type (die, cu);
22299 if (this_type)
22300 return this_type;
22301
673bfd45
DE
22302 return read_type_die_1 (die, cu);
22303}
22304
22305/* Read the type in DIE, CU.
22306 Returns NULL for invalid types. */
22307
22308static struct type *
22309read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22310{
22311 struct type *this_type = NULL;
22312
c906108c
SS
22313 switch (die->tag)
22314 {
22315 case DW_TAG_class_type:
680b30c7 22316 case DW_TAG_interface_type:
c906108c
SS
22317 case DW_TAG_structure_type:
22318 case DW_TAG_union_type:
f792889a 22319 this_type = read_structure_type (die, cu);
c906108c
SS
22320 break;
22321 case DW_TAG_enumeration_type:
f792889a 22322 this_type = read_enumeration_type (die, cu);
c906108c
SS
22323 break;
22324 case DW_TAG_subprogram:
22325 case DW_TAG_subroutine_type:
edb3359d 22326 case DW_TAG_inlined_subroutine:
f792889a 22327 this_type = read_subroutine_type (die, cu);
c906108c
SS
22328 break;
22329 case DW_TAG_array_type:
f792889a 22330 this_type = read_array_type (die, cu);
c906108c 22331 break;
72019c9c 22332 case DW_TAG_set_type:
f792889a 22333 this_type = read_set_type (die, cu);
72019c9c 22334 break;
c906108c 22335 case DW_TAG_pointer_type:
f792889a 22336 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
22337 break;
22338 case DW_TAG_ptr_to_member_type:
f792889a 22339 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
22340 break;
22341 case DW_TAG_reference_type:
4297a3f0
AV
22342 this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22343 break;
22344 case DW_TAG_rvalue_reference_type:
22345 this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
c906108c
SS
22346 break;
22347 case DW_TAG_const_type:
f792889a 22348 this_type = read_tag_const_type (die, cu);
c906108c
SS
22349 break;
22350 case DW_TAG_volatile_type:
f792889a 22351 this_type = read_tag_volatile_type (die, cu);
c906108c 22352 break;
06d66ee9
TT
22353 case DW_TAG_restrict_type:
22354 this_type = read_tag_restrict_type (die, cu);
22355 break;
c906108c 22356 case DW_TAG_string_type:
f792889a 22357 this_type = read_tag_string_type (die, cu);
c906108c
SS
22358 break;
22359 case DW_TAG_typedef:
f792889a 22360 this_type = read_typedef (die, cu);
c906108c 22361 break;
a02abb62 22362 case DW_TAG_subrange_type:
f792889a 22363 this_type = read_subrange_type (die, cu);
a02abb62 22364 break;
c906108c 22365 case DW_TAG_base_type:
f792889a 22366 this_type = read_base_type (die, cu);
c906108c 22367 break;
81a17f79 22368 case DW_TAG_unspecified_type:
f792889a 22369 this_type = read_unspecified_type (die, cu);
81a17f79 22370 break;
0114d602
DJ
22371 case DW_TAG_namespace:
22372 this_type = read_namespace_type (die, cu);
22373 break;
f55ee35c
JK
22374 case DW_TAG_module:
22375 this_type = read_module_type (die, cu);
22376 break;
a2c2acaf
MW
22377 case DW_TAG_atomic_type:
22378 this_type = read_tag_atomic_type (die, cu);
22379 break;
c906108c 22380 default:
b98664d3 22381 complaint (_("unexpected tag in read_type_die: '%s'"),
4d3c2250 22382 dwarf_tag_name (die->tag));
c906108c
SS
22383 break;
22384 }
63d06c5c 22385
f792889a 22386 return this_type;
63d06c5c
DC
22387}
22388
abc72ce4
DE
22389/* See if we can figure out if the class lives in a namespace. We do
22390 this by looking for a member function; its demangled name will
22391 contain namespace info, if there is any.
22392 Return the computed name or NULL.
22393 Space for the result is allocated on the objfile's obstack.
22394 This is the full-die version of guess_partial_die_structure_name.
22395 In this case we know DIE has no useful parent. */
22396
22397static char *
22398guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22399{
22400 struct die_info *spec_die;
22401 struct dwarf2_cu *spec_cu;
22402 struct die_info *child;
518817b3 22403 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
abc72ce4
DE
22404
22405 spec_cu = cu;
22406 spec_die = die_specification (die, &spec_cu);
22407 if (spec_die != NULL)
22408 {
22409 die = spec_die;
22410 cu = spec_cu;
22411 }
22412
22413 for (child = die->child;
22414 child != NULL;
22415 child = child->sibling)
22416 {
22417 if (child->tag == DW_TAG_subprogram)
22418 {
73b9be8b 22419 const char *linkage_name = dw2_linkage_name (child, cu);
abc72ce4 22420
7d45c7c3 22421 if (linkage_name != NULL)
abc72ce4
DE
22422 {
22423 char *actual_name
22424 = language_class_name_from_physname (cu->language_defn,
7d45c7c3 22425 linkage_name);
abc72ce4
DE
22426 char *name = NULL;
22427
22428 if (actual_name != NULL)
22429 {
15d034d0 22430 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
22431
22432 if (die_name != NULL
22433 && strcmp (die_name, actual_name) != 0)
22434 {
22435 /* Strip off the class name from the full name.
22436 We want the prefix. */
22437 int die_name_len = strlen (die_name);
22438 int actual_name_len = strlen (actual_name);
22439
22440 /* Test for '::' as a sanity check. */
22441 if (actual_name_len > die_name_len + 2
3e43a32a
MS
22442 && actual_name[actual_name_len
22443 - die_name_len - 1] == ':')
0cf9feb9 22444 name = obstack_strndup (
e3b94546 22445 &objfile->per_bfd->storage_obstack,
224c3ddb 22446 actual_name, actual_name_len - die_name_len - 2);
abc72ce4
DE
22447 }
22448 }
22449 xfree (actual_name);
22450 return name;
22451 }
22452 }
22453 }
22454
22455 return NULL;
22456}
22457
96408a79
SA
22458/* GCC might emit a nameless typedef that has a linkage name. Determine the
22459 prefix part in such case. See
22460 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
22461
a121b7c1 22462static const char *
96408a79
SA
22463anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22464{
22465 struct attribute *attr;
e6a959d6 22466 const char *base;
96408a79
SA
22467
22468 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22469 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22470 return NULL;
22471
7d45c7c3 22472 if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
96408a79
SA
22473 return NULL;
22474
73b9be8b 22475 attr = dw2_linkage_name_attr (die, cu);
96408a79
SA
22476 if (attr == NULL || DW_STRING (attr) == NULL)
22477 return NULL;
22478
22479 /* dwarf2_name had to be already called. */
22480 gdb_assert (DW_STRING_IS_CANONICAL (attr));
22481
22482 /* Strip the base name, keep any leading namespaces/classes. */
22483 base = strrchr (DW_STRING (attr), ':');
22484 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22485 return "";
22486
518817b3 22487 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
0cf9feb9
TT
22488 return obstack_strndup (&objfile->per_bfd->storage_obstack,
22489 DW_STRING (attr),
22490 &base[-1] - DW_STRING (attr));
96408a79
SA
22491}
22492
fdde2d81 22493/* Return the name of the namespace/class that DIE is defined within,
0114d602 22494 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 22495
0114d602
DJ
22496 For example, if we're within the method foo() in the following
22497 code:
22498
22499 namespace N {
22500 class C {
22501 void foo () {
22502 }
22503 };
22504 }
22505
22506 then determine_prefix on foo's die will return "N::C". */
fdde2d81 22507
0d5cff50 22508static const char *
e142c38c 22509determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 22510{
518817b3
SM
22511 struct dwarf2_per_objfile *dwarf2_per_objfile
22512 = cu->per_cu->dwarf2_per_objfile;
0114d602
DJ
22513 struct die_info *parent, *spec_die;
22514 struct dwarf2_cu *spec_cu;
22515 struct type *parent_type;
a121b7c1 22516 const char *retval;
63d06c5c 22517
9c37b5ae 22518 if (cu->language != language_cplus
c44af4eb
TT
22519 && cu->language != language_fortran && cu->language != language_d
22520 && cu->language != language_rust)
0114d602
DJ
22521 return "";
22522
96408a79
SA
22523 retval = anonymous_struct_prefix (die, cu);
22524 if (retval)
22525 return retval;
22526
0114d602
DJ
22527 /* We have to be careful in the presence of DW_AT_specification.
22528 For example, with GCC 3.4, given the code
22529
22530 namespace N {
22531 void foo() {
22532 // Definition of N::foo.
22533 }
22534 }
22535
22536 then we'll have a tree of DIEs like this:
22537
22538 1: DW_TAG_compile_unit
22539 2: DW_TAG_namespace // N
22540 3: DW_TAG_subprogram // declaration of N::foo
22541 4: DW_TAG_subprogram // definition of N::foo
22542 DW_AT_specification // refers to die #3
22543
22544 Thus, when processing die #4, we have to pretend that we're in
22545 the context of its DW_AT_specification, namely the contex of die
22546 #3. */
22547 spec_cu = cu;
22548 spec_die = die_specification (die, &spec_cu);
22549 if (spec_die == NULL)
22550 parent = die->parent;
22551 else
63d06c5c 22552 {
0114d602
DJ
22553 parent = spec_die->parent;
22554 cu = spec_cu;
63d06c5c 22555 }
0114d602
DJ
22556
22557 if (parent == NULL)
22558 return "";
98bfdba5
PA
22559 else if (parent->building_fullname)
22560 {
22561 const char *name;
22562 const char *parent_name;
22563
22564 /* It has been seen on RealView 2.2 built binaries,
22565 DW_TAG_template_type_param types actually _defined_ as
22566 children of the parent class:
22567
22568 enum E {};
22569 template class <class Enum> Class{};
22570 Class<enum E> class_e;
22571
22572 1: DW_TAG_class_type (Class)
22573 2: DW_TAG_enumeration_type (E)
22574 3: DW_TAG_enumerator (enum1:0)
22575 3: DW_TAG_enumerator (enum2:1)
22576 ...
22577 2: DW_TAG_template_type_param
22578 DW_AT_type DW_FORM_ref_udata (E)
22579
22580 Besides being broken debug info, it can put GDB into an
22581 infinite loop. Consider:
22582
22583 When we're building the full name for Class<E>, we'll start
22584 at Class, and go look over its template type parameters,
22585 finding E. We'll then try to build the full name of E, and
22586 reach here. We're now trying to build the full name of E,
22587 and look over the parent DIE for containing scope. In the
22588 broken case, if we followed the parent DIE of E, we'd again
22589 find Class, and once again go look at its template type
22590 arguments, etc., etc. Simply don't consider such parent die
22591 as source-level parent of this die (it can't be, the language
22592 doesn't allow it), and break the loop here. */
22593 name = dwarf2_name (die, cu);
22594 parent_name = dwarf2_name (parent, cu);
b98664d3 22595 complaint (_("template param type '%s' defined within parent '%s'"),
98bfdba5
PA
22596 name ? name : "<unknown>",
22597 parent_name ? parent_name : "<unknown>");
22598 return "";
22599 }
63d06c5c 22600 else
0114d602
DJ
22601 switch (parent->tag)
22602 {
63d06c5c 22603 case DW_TAG_namespace:
0114d602 22604 parent_type = read_type_die (parent, cu);
acebe513
UW
22605 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22606 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22607 Work around this problem here. */
22608 if (cu->language == language_cplus
e86ca25f 22609 && strcmp (TYPE_NAME (parent_type), "::") == 0)
acebe513 22610 return "";
0114d602 22611 /* We give a name to even anonymous namespaces. */
e86ca25f 22612 return TYPE_NAME (parent_type);
63d06c5c 22613 case DW_TAG_class_type:
680b30c7 22614 case DW_TAG_interface_type:
63d06c5c 22615 case DW_TAG_structure_type:
0114d602 22616 case DW_TAG_union_type:
f55ee35c 22617 case DW_TAG_module:
0114d602 22618 parent_type = read_type_die (parent, cu);
e86ca25f
TT
22619 if (TYPE_NAME (parent_type) != NULL)
22620 return TYPE_NAME (parent_type);
0114d602
DJ
22621 else
22622 /* An anonymous structure is only allowed non-static data
22623 members; no typedefs, no member functions, et cetera.
22624 So it does not need a prefix. */
22625 return "";
abc72ce4 22626 case DW_TAG_compile_unit:
95554aad 22627 case DW_TAG_partial_unit:
abc72ce4
DE
22628 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
22629 if (cu->language == language_cplus
fd5866f6 22630 && !dwarf2_per_objfile->types.empty ()
abc72ce4
DE
22631 && die->child != NULL
22632 && (die->tag == DW_TAG_class_type
22633 || die->tag == DW_TAG_structure_type
22634 || die->tag == DW_TAG_union_type))
22635 {
22636 char *name = guess_full_die_structure_name (die, cu);
22637 if (name != NULL)
22638 return name;
22639 }
22640 return "";
0a4b0913
AB
22641 case DW_TAG_subprogram:
22642 /* Nested subroutines in Fortran get a prefix with the name
22643 of the parent's subroutine. */
22644 if (cu->language == language_fortran)
22645 {
22646 if ((die->tag == DW_TAG_subprogram)
22647 && (dwarf2_name (parent, cu) != NULL))
22648 return dwarf2_name (parent, cu);
22649 }
22650 return determine_prefix (parent, cu);
3d567982
TT
22651 case DW_TAG_enumeration_type:
22652 parent_type = read_type_die (parent, cu);
22653 if (TYPE_DECLARED_CLASS (parent_type))
22654 {
e86ca25f
TT
22655 if (TYPE_NAME (parent_type) != NULL)
22656 return TYPE_NAME (parent_type);
3d567982
TT
22657 return "";
22658 }
22659 /* Fall through. */
63d06c5c 22660 default:
8176b9b8 22661 return determine_prefix (parent, cu);
63d06c5c 22662 }
63d06c5c
DC
22663}
22664
3e43a32a
MS
22665/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22666 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
22667 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
22668 an obconcat, otherwise allocate storage for the result. The CU argument is
22669 used to determine the language and hence, the appropriate separator. */
987504bb 22670
f55ee35c 22671#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
22672
22673static char *
f55ee35c
JK
22674typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22675 int physname, struct dwarf2_cu *cu)
63d06c5c 22676{
f55ee35c 22677 const char *lead = "";
5c315b68 22678 const char *sep;
63d06c5c 22679
3e43a32a
MS
22680 if (suffix == NULL || suffix[0] == '\0'
22681 || prefix == NULL || prefix[0] == '\0')
987504bb 22682 sep = "";
45280282
IB
22683 else if (cu->language == language_d)
22684 {
22685 /* For D, the 'main' function could be defined in any module, but it
22686 should never be prefixed. */
22687 if (strcmp (suffix, "D main") == 0)
22688 {
22689 prefix = "";
22690 sep = "";
22691 }
22692 else
22693 sep = ".";
22694 }
f55ee35c
JK
22695 else if (cu->language == language_fortran && physname)
22696 {
22697 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
22698 DW_AT_MIPS_linkage_name is preferred and used instead. */
22699
22700 lead = "__";
22701 sep = "_MOD_";
22702 }
987504bb
JJ
22703 else
22704 sep = "::";
63d06c5c 22705
6dd47d34
DE
22706 if (prefix == NULL)
22707 prefix = "";
22708 if (suffix == NULL)
22709 suffix = "";
22710
987504bb
JJ
22711 if (obs == NULL)
22712 {
3e43a32a 22713 char *retval
224c3ddb
SM
22714 = ((char *)
22715 xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
9a619af0 22716
f55ee35c
JK
22717 strcpy (retval, lead);
22718 strcat (retval, prefix);
6dd47d34
DE
22719 strcat (retval, sep);
22720 strcat (retval, suffix);
63d06c5c
DC
22721 return retval;
22722 }
987504bb
JJ
22723 else
22724 {
22725 /* We have an obstack. */
f55ee35c 22726 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 22727 }
63d06c5c
DC
22728}
22729
c906108c
SS
22730/* Return sibling of die, NULL if no sibling. */
22731
f9aca02d 22732static struct die_info *
fba45db2 22733sibling_die (struct die_info *die)
c906108c 22734{
639d11d3 22735 return die->sibling;
c906108c
SS
22736}
22737
71c25dea
TT
22738/* Get name of a die, return NULL if not found. */
22739
15d034d0
TT
22740static const char *
22741dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
22742 struct obstack *obstack)
22743{
22744 if (name && cu->language == language_cplus)
22745 {
2f408ecb 22746 std::string canon_name = cp_canonicalize_string (name);
71c25dea 22747
2f408ecb 22748 if (!canon_name.empty ())
71c25dea 22749 {
2f408ecb 22750 if (canon_name != name)
efba19b0 22751 name = obstack_strdup (obstack, canon_name);
71c25dea
TT
22752 }
22753 }
22754
22755 return name;
c906108c
SS
22756}
22757
96553a0c
DE
22758/* Get name of a die, return NULL if not found.
22759 Anonymous namespaces are converted to their magic string. */
9219021c 22760
15d034d0 22761static const char *
e142c38c 22762dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
22763{
22764 struct attribute *attr;
518817b3 22765 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9219021c 22766
e142c38c 22767 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 22768 if ((!attr || !DW_STRING (attr))
96553a0c 22769 && die->tag != DW_TAG_namespace
53832f31
TT
22770 && die->tag != DW_TAG_class_type
22771 && die->tag != DW_TAG_interface_type
22772 && die->tag != DW_TAG_structure_type
22773 && die->tag != DW_TAG_union_type)
71c25dea
TT
22774 return NULL;
22775
22776 switch (die->tag)
22777 {
22778 case DW_TAG_compile_unit:
95554aad 22779 case DW_TAG_partial_unit:
71c25dea
TT
22780 /* Compilation units have a DW_AT_name that is a filename, not
22781 a source language identifier. */
22782 case DW_TAG_enumeration_type:
22783 case DW_TAG_enumerator:
22784 /* These tags always have simple identifiers already; no need
22785 to canonicalize them. */
22786 return DW_STRING (attr);
907af001 22787
96553a0c
DE
22788 case DW_TAG_namespace:
22789 if (attr != NULL && DW_STRING (attr) != NULL)
22790 return DW_STRING (attr);
22791 return CP_ANONYMOUS_NAMESPACE_STR;
22792
907af001
UW
22793 case DW_TAG_class_type:
22794 case DW_TAG_interface_type:
22795 case DW_TAG_structure_type:
22796 case DW_TAG_union_type:
22797 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22798 structures or unions. These were of the form "._%d" in GCC 4.1,
22799 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22800 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 22801 if (attr && DW_STRING (attr)
61012eef
GB
22802 && (startswith (DW_STRING (attr), "._")
22803 || startswith (DW_STRING (attr), "<anonymous")))
907af001 22804 return NULL;
53832f31
TT
22805
22806 /* GCC might emit a nameless typedef that has a linkage name. See
22807 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
22808 if (!attr || DW_STRING (attr) == NULL)
22809 {
df5c6c50 22810 char *demangled = NULL;
53832f31 22811
73b9be8b 22812 attr = dw2_linkage_name_attr (die, cu);
53832f31
TT
22813 if (attr == NULL || DW_STRING (attr) == NULL)
22814 return NULL;
22815
df5c6c50
JK
22816 /* Avoid demangling DW_STRING (attr) the second time on a second
22817 call for the same DIE. */
22818 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 22819 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
22820
22821 if (demangled)
22822 {
e6a959d6 22823 const char *base;
96408a79 22824
53832f31 22825 /* FIXME: we already did this for the partial symbol... */
34a68019 22826 DW_STRING (attr)
021887d8
TT
22827 = obstack_strdup (&objfile->per_bfd->storage_obstack,
22828 demangled);
53832f31
TT
22829 DW_STRING_IS_CANONICAL (attr) = 1;
22830 xfree (demangled);
96408a79
SA
22831
22832 /* Strip any leading namespaces/classes, keep only the base name.
22833 DW_AT_name for named DIEs does not contain the prefixes. */
22834 base = strrchr (DW_STRING (attr), ':');
22835 if (base && base > DW_STRING (attr) && base[-1] == ':')
22836 return &base[1];
22837 else
22838 return DW_STRING (attr);
53832f31
TT
22839 }
22840 }
907af001
UW
22841 break;
22842
71c25dea 22843 default:
907af001
UW
22844 break;
22845 }
22846
22847 if (!DW_STRING_IS_CANONICAL (attr))
22848 {
22849 DW_STRING (attr)
22850 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
e3b94546 22851 &objfile->per_bfd->storage_obstack);
907af001 22852 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 22853 }
907af001 22854 return DW_STRING (attr);
9219021c
DC
22855}
22856
22857/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
22858 is none. *EXT_CU is the CU containing DIE on input, and the CU
22859 containing the return value on output. */
9219021c
DC
22860
22861static struct die_info *
f2f0e013 22862dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
22863{
22864 struct attribute *attr;
9219021c 22865
f2f0e013 22866 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
22867 if (attr == NULL)
22868 return NULL;
22869
f2f0e013 22870 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
22871}
22872
fa9c3fa0
TT
22873/* A convenience function that returns an "unknown" DWARF name,
22874 including the value of V. STR is the name of the entity being
22875 printed, e.g., "TAG". */
22876
22877static const char *
22878dwarf_unknown (const char *str, unsigned v)
22879{
22880 char *cell = get_print_cell ();
22881 xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
22882 return cell;
22883}
22884
c906108c
SS
22885/* Convert a DIE tag into its string name. */
22886
f39c6ffd 22887static const char *
aa1ee363 22888dwarf_tag_name (unsigned tag)
c906108c 22889{
f39c6ffd
TT
22890 const char *name = get_DW_TAG_name (tag);
22891
22892 if (name == NULL)
fa9c3fa0 22893 return dwarf_unknown ("TAG", tag);
f39c6ffd
TT
22894
22895 return name;
c906108c
SS
22896}
22897
22898/* Convert a DWARF attribute code into its string name. */
22899
f39c6ffd 22900static const char *
aa1ee363 22901dwarf_attr_name (unsigned attr)
c906108c 22902{
f39c6ffd
TT
22903 const char *name;
22904
c764a876 22905#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
22906 if (attr == DW_AT_MIPS_fde)
22907 return "DW_AT_MIPS_fde";
22908#else
22909 if (attr == DW_AT_HP_block_index)
22910 return "DW_AT_HP_block_index";
c764a876 22911#endif
f39c6ffd
TT
22912
22913 name = get_DW_AT_name (attr);
22914
22915 if (name == NULL)
fa9c3fa0 22916 return dwarf_unknown ("AT", attr);
f39c6ffd
TT
22917
22918 return name;
c906108c
SS
22919}
22920
a084a2a6
AT
22921/* Convert a unit type to corresponding DW_UT name. */
22922
22923static const char *
22924dwarf_unit_type_name (int unit_type) {
22925 switch (unit_type)
22926 {
22927 case 0x01:
22928 return "DW_UT_compile (0x01)";
22929 case 0x02:
22930 return "DW_UT_type (0x02)";
22931 case 0x03:
22932 return "DW_UT_partial (0x03)";
22933 case 0x04:
22934 return "DW_UT_skeleton (0x04)";
22935 case 0x05:
22936 return "DW_UT_split_compile (0x05)";
22937 case 0x06:
22938 return "DW_UT_split_type (0x06)";
22939 case 0x80:
22940 return "DW_UT_lo_user (0x80)";
22941 case 0xff:
22942 return "DW_UT_hi_user (0xff)";
22943 default:
22944 return nullptr;
22945 }
22946}
22947
c906108c
SS
22948/* Convert a DWARF value form code into its string name. */
22949
f39c6ffd 22950static const char *
aa1ee363 22951dwarf_form_name (unsigned form)
c906108c 22952{
f39c6ffd
TT
22953 const char *name = get_DW_FORM_name (form);
22954
22955 if (name == NULL)
fa9c3fa0 22956 return dwarf_unknown ("FORM", form);
f39c6ffd
TT
22957
22958 return name;
c906108c
SS
22959}
22960
a121b7c1 22961static const char *
fba45db2 22962dwarf_bool_name (unsigned mybool)
c906108c
SS
22963{
22964 if (mybool)
22965 return "TRUE";
22966 else
22967 return "FALSE";
22968}
22969
22970/* Convert a DWARF type code into its string name. */
22971
f39c6ffd 22972static const char *
aa1ee363 22973dwarf_type_encoding_name (unsigned enc)
c906108c 22974{
f39c6ffd 22975 const char *name = get_DW_ATE_name (enc);
c906108c 22976
f39c6ffd 22977 if (name == NULL)
fa9c3fa0 22978 return dwarf_unknown ("ATE", enc);
c906108c 22979
f39c6ffd 22980 return name;
c906108c 22981}
c906108c 22982
f9aca02d 22983static void
d97bc12b 22984dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
22985{
22986 unsigned int i;
22987
d97bc12b 22988 print_spaces (indent, f);
9d8780f0 22989 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
9c541725 22990 dwarf_tag_name (die->tag), die->abbrev,
9d8780f0 22991 sect_offset_str (die->sect_off));
d97bc12b
DE
22992
22993 if (die->parent != NULL)
22994 {
22995 print_spaces (indent, f);
9d8780f0
SM
22996 fprintf_unfiltered (f, " parent at offset: %s\n",
22997 sect_offset_str (die->parent->sect_off));
d97bc12b
DE
22998 }
22999
23000 print_spaces (indent, f);
23001 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 23002 dwarf_bool_name (die->child != NULL));
c906108c 23003
d97bc12b
DE
23004 print_spaces (indent, f);
23005 fprintf_unfiltered (f, " attributes:\n");
23006
c906108c
SS
23007 for (i = 0; i < die->num_attrs; ++i)
23008 {
d97bc12b
DE
23009 print_spaces (indent, f);
23010 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
23011 dwarf_attr_name (die->attrs[i].name),
23012 dwarf_form_name (die->attrs[i].form));
d97bc12b 23013
c906108c
SS
23014 switch (die->attrs[i].form)
23015 {
c906108c 23016 case DW_FORM_addr:
336d760d 23017 case DW_FORM_addrx:
3019eac3 23018 case DW_FORM_GNU_addr_index:
d97bc12b 23019 fprintf_unfiltered (f, "address: ");
5af949e3 23020 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
23021 break;
23022 case DW_FORM_block2:
23023 case DW_FORM_block4:
23024 case DW_FORM_block:
23025 case DW_FORM_block1:
56eb65bd
SP
23026 fprintf_unfiltered (f, "block: size %s",
23027 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 23028 break;
2dc7f7b3 23029 case DW_FORM_exprloc:
56eb65bd
SP
23030 fprintf_unfiltered (f, "expression: size %s",
23031 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 23032 break;
0224619f
JK
23033 case DW_FORM_data16:
23034 fprintf_unfiltered (f, "constant of 16 bytes");
23035 break;
4568ecf9
DE
23036 case DW_FORM_ref_addr:
23037 fprintf_unfiltered (f, "ref address: ");
23038 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
23039 break;
36586728
TT
23040 case DW_FORM_GNU_ref_alt:
23041 fprintf_unfiltered (f, "alt ref address: ");
23042 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
23043 break;
10b3939b
DJ
23044 case DW_FORM_ref1:
23045 case DW_FORM_ref2:
23046 case DW_FORM_ref4:
4568ecf9
DE
23047 case DW_FORM_ref8:
23048 case DW_FORM_ref_udata:
d97bc12b 23049 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 23050 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 23051 break;
c906108c
SS
23052 case DW_FORM_data1:
23053 case DW_FORM_data2:
23054 case DW_FORM_data4:
ce5d95e1 23055 case DW_FORM_data8:
c906108c
SS
23056 case DW_FORM_udata:
23057 case DW_FORM_sdata:
43bbcdc2
PH
23058 fprintf_unfiltered (f, "constant: %s",
23059 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 23060 break;
2dc7f7b3
TT
23061 case DW_FORM_sec_offset:
23062 fprintf_unfiltered (f, "section offset: %s",
23063 pulongest (DW_UNSND (&die->attrs[i])));
23064 break;
55f1336d 23065 case DW_FORM_ref_sig8:
ac9ec31b
DE
23066 fprintf_unfiltered (f, "signature: %s",
23067 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 23068 break;
c906108c 23069 case DW_FORM_string:
4bdf3d34 23070 case DW_FORM_strp:
43988095 23071 case DW_FORM_line_strp:
cf532bd1 23072 case DW_FORM_strx:
3019eac3 23073 case DW_FORM_GNU_str_index:
36586728 23074 case DW_FORM_GNU_strp_alt:
8285870a 23075 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 23076 DW_STRING (&die->attrs[i])
8285870a
JK
23077 ? DW_STRING (&die->attrs[i]) : "",
23078 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
23079 break;
23080 case DW_FORM_flag:
23081 if (DW_UNSND (&die->attrs[i]))
d97bc12b 23082 fprintf_unfiltered (f, "flag: TRUE");
c906108c 23083 else
d97bc12b 23084 fprintf_unfiltered (f, "flag: FALSE");
c906108c 23085 break;
2dc7f7b3
TT
23086 case DW_FORM_flag_present:
23087 fprintf_unfiltered (f, "flag: TRUE");
23088 break;
a8329558 23089 case DW_FORM_indirect:
0963b4bd
MS
23090 /* The reader will have reduced the indirect form to
23091 the "base form" so this form should not occur. */
5f48f8f3 23092 fprintf_unfiltered (f,
3e43a32a 23093 "unexpected attribute form: DW_FORM_indirect");
a8329558 23094 break;
663c44ac
JK
23095 case DW_FORM_implicit_const:
23096 fprintf_unfiltered (f, "constant: %s",
23097 plongest (DW_SND (&die->attrs[i])));
23098 break;
c906108c 23099 default:
d97bc12b 23100 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 23101 die->attrs[i].form);
d97bc12b 23102 break;
c906108c 23103 }
d97bc12b 23104 fprintf_unfiltered (f, "\n");
c906108c
SS
23105 }
23106}
23107
f9aca02d 23108static void
d97bc12b 23109dump_die_for_error (struct die_info *die)
c906108c 23110{
d97bc12b
DE
23111 dump_die_shallow (gdb_stderr, 0, die);
23112}
23113
23114static void
23115dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
23116{
23117 int indent = level * 4;
23118
23119 gdb_assert (die != NULL);
23120
23121 if (level >= max_level)
23122 return;
23123
23124 dump_die_shallow (f, indent, die);
23125
23126 if (die->child != NULL)
c906108c 23127 {
d97bc12b
DE
23128 print_spaces (indent, f);
23129 fprintf_unfiltered (f, " Children:");
23130 if (level + 1 < max_level)
23131 {
23132 fprintf_unfiltered (f, "\n");
23133 dump_die_1 (f, level + 1, max_level, die->child);
23134 }
23135 else
23136 {
3e43a32a
MS
23137 fprintf_unfiltered (f,
23138 " [not printed, max nesting level reached]\n");
d97bc12b
DE
23139 }
23140 }
23141
23142 if (die->sibling != NULL && level > 0)
23143 {
23144 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
23145 }
23146}
23147
d97bc12b
DE
23148/* This is called from the pdie macro in gdbinit.in.
23149 It's not static so gcc will keep a copy callable from gdb. */
23150
23151void
23152dump_die (struct die_info *die, int max_level)
23153{
23154 dump_die_1 (gdb_stdlog, 0, max_level, die);
23155}
23156
f9aca02d 23157static void
51545339 23158store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 23159{
51545339 23160 void **slot;
c906108c 23161
9c541725
PA
23162 slot = htab_find_slot_with_hash (cu->die_hash, die,
23163 to_underlying (die->sect_off),
b64f50a1 23164 INSERT);
51545339
DJ
23165
23166 *slot = die;
c906108c
SS
23167}
23168
b64f50a1
JK
23169/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
23170 required kind. */
23171
23172static sect_offset
ff39bb5e 23173dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 23174{
7771576e 23175 if (attr_form_is_ref (attr))
9c541725 23176 return (sect_offset) DW_UNSND (attr);
93311388 23177
b98664d3 23178 complaint (_("unsupported die ref attribute form: '%s'"),
93311388 23179 dwarf_form_name (attr->form));
9c541725 23180 return {};
c906108c
SS
23181}
23182
43bbcdc2
PH
23183/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
23184 * the value held by the attribute is not constant. */
a02abb62 23185
43bbcdc2 23186static LONGEST
ff39bb5e 23187dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62 23188{
663c44ac 23189 if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
a02abb62
JB
23190 return DW_SND (attr);
23191 else if (attr->form == DW_FORM_udata
23192 || attr->form == DW_FORM_data1
23193 || attr->form == DW_FORM_data2
23194 || attr->form == DW_FORM_data4
23195 || attr->form == DW_FORM_data8)
23196 return DW_UNSND (attr);
23197 else
23198 {
0224619f 23199 /* For DW_FORM_data16 see attr_form_is_constant. */
b98664d3 23200 complaint (_("Attribute value is not a constant (%s)"),
a02abb62
JB
23201 dwarf_form_name (attr->form));
23202 return default_value;
23203 }
23204}
23205
348e048f
DE
23206/* Follow reference or signature attribute ATTR of SRC_DIE.
23207 On entry *REF_CU is the CU of SRC_DIE.
23208 On exit *REF_CU is the CU of the result. */
23209
23210static struct die_info *
ff39bb5e 23211follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
23212 struct dwarf2_cu **ref_cu)
23213{
23214 struct die_info *die;
23215
7771576e 23216 if (attr_form_is_ref (attr))
348e048f 23217 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 23218 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
23219 die = follow_die_sig (src_die, attr, ref_cu);
23220 else
23221 {
23222 dump_die_for_error (src_die);
23223 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
518817b3 23224 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
348e048f
DE
23225 }
23226
23227 return die;
03dd20cc
DJ
23228}
23229
5c631832 23230/* Follow reference OFFSET.
673bfd45
DE
23231 On entry *REF_CU is the CU of the source die referencing OFFSET.
23232 On exit *REF_CU is the CU of the result.
23233 Returns NULL if OFFSET is invalid. */
f504f079 23234
f9aca02d 23235static struct die_info *
9c541725 23236follow_die_offset (sect_offset sect_off, int offset_in_dwz,
36586728 23237 struct dwarf2_cu **ref_cu)
c906108c 23238{
10b3939b 23239 struct die_info temp_die;
f2f0e013 23240 struct dwarf2_cu *target_cu, *cu = *ref_cu;
518817b3
SM
23241 struct dwarf2_per_objfile *dwarf2_per_objfile
23242 = cu->per_cu->dwarf2_per_objfile;
10b3939b 23243
348e048f
DE
23244 gdb_assert (cu->per_cu != NULL);
23245
98bfdba5
PA
23246 target_cu = cu;
23247
3019eac3 23248 if (cu->per_cu->is_debug_types)
348e048f
DE
23249 {
23250 /* .debug_types CUs cannot reference anything outside their CU.
23251 If they need to, they have to reference a signatured type via
55f1336d 23252 DW_FORM_ref_sig8. */
9c541725 23253 if (!offset_in_cu_p (&cu->header, sect_off))
5c631832 23254 return NULL;
348e048f 23255 }
36586728 23256 else if (offset_in_dwz != cu->per_cu->is_dwz
9c541725 23257 || !offset_in_cu_p (&cu->header, sect_off))
10b3939b
DJ
23258 {
23259 struct dwarf2_per_cu_data *per_cu;
9a619af0 23260
9c541725 23261 per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
ed2dc618 23262 dwarf2_per_objfile);
03dd20cc
DJ
23263
23264 /* If necessary, add it to the queue and load its DIEs. */
95554aad 23265 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
58f0c718 23266 load_full_comp_unit (per_cu, false, cu->language);
03dd20cc 23267
10b3939b
DJ
23268 target_cu = per_cu->cu;
23269 }
98bfdba5
PA
23270 else if (cu->dies == NULL)
23271 {
23272 /* We're loading full DIEs during partial symbol reading. */
23273 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
58f0c718 23274 load_full_comp_unit (cu->per_cu, false, language_minimal);
98bfdba5 23275 }
c906108c 23276
f2f0e013 23277 *ref_cu = target_cu;
9c541725 23278 temp_die.sect_off = sect_off;
c24bdb02
KS
23279
23280 if (target_cu != cu)
23281 target_cu->ancestor = cu;
23282
9a3c8263 23283 return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
9c541725
PA
23284 &temp_die,
23285 to_underlying (sect_off));
5c631832 23286}
10b3939b 23287
5c631832
JK
23288/* Follow reference attribute ATTR of SRC_DIE.
23289 On entry *REF_CU is the CU of SRC_DIE.
23290 On exit *REF_CU is the CU of the result. */
23291
23292static struct die_info *
ff39bb5e 23293follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
23294 struct dwarf2_cu **ref_cu)
23295{
9c541725 23296 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
5c631832
JK
23297 struct dwarf2_cu *cu = *ref_cu;
23298 struct die_info *die;
23299
9c541725 23300 die = follow_die_offset (sect_off,
36586728
TT
23301 (attr->form == DW_FORM_GNU_ref_alt
23302 || cu->per_cu->is_dwz),
23303 ref_cu);
5c631832 23304 if (!die)
9d8780f0
SM
23305 error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23306 "at %s [in module %s]"),
23307 sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
518817b3 23308 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
348e048f 23309
5c631832
JK
23310 return die;
23311}
23312
9c541725 23313/* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
d83e736b 23314 Returned value is intended for DW_OP_call*. Returned
e3b94546
SM
23315 dwarf2_locexpr_baton->data has lifetime of
23316 PER_CU->DWARF2_PER_OBJFILE->OBJFILE. */
5c631832
JK
23317
23318struct dwarf2_locexpr_baton
9c541725 23319dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
8b9737bf
TT
23320 struct dwarf2_per_cu_data *per_cu,
23321 CORE_ADDR (*get_frame_pc) (void *baton),
e4a62c65 23322 void *baton, bool resolve_abstract_p)
5c631832 23323{
918dd910 23324 struct dwarf2_cu *cu;
5c631832
JK
23325 struct die_info *die;
23326 struct attribute *attr;
23327 struct dwarf2_locexpr_baton retval;
12359b5e
SM
23328 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23329 struct objfile *objfile = dwarf2_per_objfile->objfile;
8cf6f0b1 23330
918dd910 23331 if (per_cu->cu == NULL)
58f0c718 23332 load_cu (per_cu, false);
918dd910 23333 cu = per_cu->cu;
cc12ce38
DE
23334 if (cu == NULL)
23335 {
23336 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23337 Instead just throw an error, not much else we can do. */
9d8780f0
SM
23338 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23339 sect_offset_str (sect_off), objfile_name (objfile));
cc12ce38 23340 }
918dd910 23341
9c541725 23342 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
5c631832 23343 if (!die)
9d8780f0
SM
23344 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23345 sect_offset_str (sect_off), objfile_name (objfile));
5c631832
JK
23346
23347 attr = dwarf2_attr (die, DW_AT_location, cu);
e4a62c65 23348 if (!attr && resolve_abstract_p
3360b6e7 23349 && (dwarf2_per_objfile->abstract_to_concrete.find (die->sect_off)
e4a62c65
TV
23350 != dwarf2_per_objfile->abstract_to_concrete.end ()))
23351 {
23352 CORE_ADDR pc = (*get_frame_pc) (baton);
eba4caf2
TV
23353 CORE_ADDR baseaddr
23354 = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
23355 struct gdbarch *gdbarch = get_objfile_arch (objfile);
e4a62c65 23356
3360b6e7
TV
23357 for (const auto &cand_off
23358 : dwarf2_per_objfile->abstract_to_concrete[die->sect_off])
e4a62c65 23359 {
3360b6e7
TV
23360 struct dwarf2_cu *cand_cu = cu;
23361 struct die_info *cand
23362 = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu);
23363 if (!cand
23364 || !cand->parent
e4a62c65
TV
23365 || cand->parent->tag != DW_TAG_subprogram)
23366 continue;
23367
23368 CORE_ADDR pc_low, pc_high;
23369 get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
eba4caf2
TV
23370 if (pc_low == ((CORE_ADDR) -1))
23371 continue;
23372 pc_low = gdbarch_adjust_dwarf2_addr (gdbarch, pc_low + baseaddr);
23373 pc_high = gdbarch_adjust_dwarf2_addr (gdbarch, pc_high + baseaddr);
23374 if (!(pc_low <= pc && pc < pc_high))
e4a62c65
TV
23375 continue;
23376
23377 die = cand;
23378 attr = dwarf2_attr (die, DW_AT_location, cu);
23379 break;
23380 }
23381 }
23382
5c631832
JK
23383 if (!attr)
23384 {
e103e986
JK
23385 /* DWARF: "If there is no such attribute, then there is no effect.".
23386 DATA is ignored if SIZE is 0. */
5c631832 23387
e103e986 23388 retval.data = NULL;
5c631832
JK
23389 retval.size = 0;
23390 }
8cf6f0b1
TT
23391 else if (attr_form_is_section_offset (attr))
23392 {
23393 struct dwarf2_loclist_baton loclist_baton;
23394 CORE_ADDR pc = (*get_frame_pc) (baton);
23395 size_t size;
23396
23397 fill_in_loclist_baton (cu, &loclist_baton, attr);
23398
23399 retval.data = dwarf2_find_location_expression (&loclist_baton,
23400 &size, pc);
23401 retval.size = size;
23402 }
5c631832
JK
23403 else
23404 {
23405 if (!attr_form_is_block (attr))
9d8780f0 23406 error (_("Dwarf Error: DIE at %s referenced in module %s "
5c631832 23407 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
9d8780f0 23408 sect_offset_str (sect_off), objfile_name (objfile));
5c631832
JK
23409
23410 retval.data = DW_BLOCK (attr)->data;
23411 retval.size = DW_BLOCK (attr)->size;
23412 }
23413 retval.per_cu = cu->per_cu;
918dd910 23414
ed2dc618 23415 age_cached_comp_units (dwarf2_per_objfile);
918dd910 23416
5c631832 23417 return retval;
348e048f
DE
23418}
23419
8b9737bf
TT
23420/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23421 offset. */
23422
23423struct dwarf2_locexpr_baton
23424dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23425 struct dwarf2_per_cu_data *per_cu,
23426 CORE_ADDR (*get_frame_pc) (void *baton),
23427 void *baton)
23428{
9c541725 23429 sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
8b9737bf 23430
9c541725 23431 return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
8b9737bf
TT
23432}
23433
b6807d98
TT
23434/* Write a constant of a given type as target-ordered bytes into
23435 OBSTACK. */
23436
23437static const gdb_byte *
23438write_constant_as_bytes (struct obstack *obstack,
23439 enum bfd_endian byte_order,
23440 struct type *type,
23441 ULONGEST value,
23442 LONGEST *len)
23443{
23444 gdb_byte *result;
23445
23446 *len = TYPE_LENGTH (type);
224c3ddb 23447 result = (gdb_byte *) obstack_alloc (obstack, *len);
b6807d98
TT
23448 store_unsigned_integer (result, *len, byte_order, value);
23449
23450 return result;
23451}
23452
23453/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23454 pointer to the constant bytes and set LEN to the length of the
23455 data. If memory is needed, allocate it on OBSTACK. If the DIE
23456 does not have a DW_AT_const_value, return NULL. */
23457
23458const gdb_byte *
9c541725 23459dwarf2_fetch_constant_bytes (sect_offset sect_off,
b6807d98
TT
23460 struct dwarf2_per_cu_data *per_cu,
23461 struct obstack *obstack,
23462 LONGEST *len)
23463{
23464 struct dwarf2_cu *cu;
23465 struct die_info *die;
23466 struct attribute *attr;
23467 const gdb_byte *result = NULL;
23468 struct type *type;
23469 LONGEST value;
23470 enum bfd_endian byte_order;
e3b94546 23471 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
b6807d98 23472
b6807d98 23473 if (per_cu->cu == NULL)
58f0c718 23474 load_cu (per_cu, false);
b6807d98 23475 cu = per_cu->cu;
cc12ce38
DE
23476 if (cu == NULL)
23477 {
23478 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23479 Instead just throw an error, not much else we can do. */
9d8780f0
SM
23480 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23481 sect_offset_str (sect_off), objfile_name (objfile));
cc12ce38 23482 }
b6807d98 23483
9c541725 23484 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
b6807d98 23485 if (!die)
9d8780f0
SM
23486 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23487 sect_offset_str (sect_off), objfile_name (objfile));
b6807d98
TT
23488
23489 attr = dwarf2_attr (die, DW_AT_const_value, cu);
23490 if (attr == NULL)
23491 return NULL;
23492
e3b94546 23493 byte_order = (bfd_big_endian (objfile->obfd)
b6807d98
TT
23494 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23495
23496 switch (attr->form)
23497 {
23498 case DW_FORM_addr:
336d760d 23499 case DW_FORM_addrx:
b6807d98
TT
23500 case DW_FORM_GNU_addr_index:
23501 {
23502 gdb_byte *tem;
23503
23504 *len = cu->header.addr_size;
224c3ddb 23505 tem = (gdb_byte *) obstack_alloc (obstack, *len);
b6807d98
TT
23506 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23507 result = tem;
23508 }
23509 break;
23510 case DW_FORM_string:
23511 case DW_FORM_strp:
cf532bd1 23512 case DW_FORM_strx:
b6807d98
TT
23513 case DW_FORM_GNU_str_index:
23514 case DW_FORM_GNU_strp_alt:
23515 /* DW_STRING is already allocated on the objfile obstack, point
23516 directly to it. */
23517 result = (const gdb_byte *) DW_STRING (attr);
23518 *len = strlen (DW_STRING (attr));
23519 break;
23520 case DW_FORM_block1:
23521 case DW_FORM_block2:
23522 case DW_FORM_block4:
23523 case DW_FORM_block:
23524 case DW_FORM_exprloc:
0224619f 23525 case DW_FORM_data16:
b6807d98
TT
23526 result = DW_BLOCK (attr)->data;
23527 *len = DW_BLOCK (attr)->size;
23528 break;
23529
23530 /* The DW_AT_const_value attributes are supposed to carry the
23531 symbol's value "represented as it would be on the target
23532 architecture." By the time we get here, it's already been
23533 converted to host endianness, so we just need to sign- or
23534 zero-extend it as appropriate. */
23535 case DW_FORM_data1:
23536 type = die_type (die, cu);
23537 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23538 if (result == NULL)
23539 result = write_constant_as_bytes (obstack, byte_order,
23540 type, value, len);
23541 break;
23542 case DW_FORM_data2:
23543 type = die_type (die, cu);
23544 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23545 if (result == NULL)
23546 result = write_constant_as_bytes (obstack, byte_order,
23547 type, value, len);
23548 break;
23549 case DW_FORM_data4:
23550 type = die_type (die, cu);
23551 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23552 if (result == NULL)
23553 result = write_constant_as_bytes (obstack, byte_order,
23554 type, value, len);
23555 break;
23556 case DW_FORM_data8:
23557 type = die_type (die, cu);
23558 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23559 if (result == NULL)
23560 result = write_constant_as_bytes (obstack, byte_order,
23561 type, value, len);
23562 break;
23563
23564 case DW_FORM_sdata:
663c44ac 23565 case DW_FORM_implicit_const:
b6807d98
TT
23566 type = die_type (die, cu);
23567 result = write_constant_as_bytes (obstack, byte_order,
23568 type, DW_SND (attr), len);
23569 break;
23570
23571 case DW_FORM_udata:
23572 type = die_type (die, cu);
23573 result = write_constant_as_bytes (obstack, byte_order,
23574 type, DW_UNSND (attr), len);
23575 break;
23576
23577 default:
b98664d3 23578 complaint (_("unsupported const value attribute form: '%s'"),
b6807d98
TT
23579 dwarf_form_name (attr->form));
23580 break;
23581 }
23582
23583 return result;
23584}
23585
7942e96e
AA
23586/* Return the type of the die at OFFSET in PER_CU. Return NULL if no
23587 valid type for this die is found. */
23588
23589struct type *
9c541725 23590dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
7942e96e
AA
23591 struct dwarf2_per_cu_data *per_cu)
23592{
23593 struct dwarf2_cu *cu;
23594 struct die_info *die;
23595
7942e96e 23596 if (per_cu->cu == NULL)
58f0c718 23597 load_cu (per_cu, false);
7942e96e
AA
23598 cu = per_cu->cu;
23599 if (!cu)
23600 return NULL;
23601
9c541725 23602 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
7942e96e
AA
23603 if (!die)
23604 return NULL;
23605
23606 return die_type (die, cu);
23607}
23608
8a9b8146
TT
23609/* Return the type of the DIE at DIE_OFFSET in the CU named by
23610 PER_CU. */
23611
23612struct type *
b64f50a1 23613dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
23614 struct dwarf2_per_cu_data *per_cu)
23615{
9c541725 23616 sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
b64f50a1 23617 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
23618}
23619
ac9ec31b 23620/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 23621 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
23622 On exit *REF_CU is the CU of the result.
23623 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
23624
23625static struct die_info *
ac9ec31b
DE
23626follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23627 struct dwarf2_cu **ref_cu)
348e048f 23628{
348e048f 23629 struct die_info temp_die;
c24bdb02 23630 struct dwarf2_cu *sig_cu, *cu = *ref_cu;
348e048f
DE
23631 struct die_info *die;
23632
ac9ec31b
DE
23633 /* While it might be nice to assert sig_type->type == NULL here,
23634 we can get here for DW_AT_imported_declaration where we need
23635 the DIE not the type. */
348e048f
DE
23636
23637 /* If necessary, add it to the queue and load its DIEs. */
23638
95554aad 23639 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 23640 read_signatured_type (sig_type);
348e048f 23641
348e048f 23642 sig_cu = sig_type->per_cu.cu;
69d751e3 23643 gdb_assert (sig_cu != NULL);
9c541725
PA
23644 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23645 temp_die.sect_off = sig_type->type_offset_in_section;
9a3c8263 23646 die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
9c541725 23647 to_underlying (temp_die.sect_off));
348e048f
DE
23648 if (die)
23649 {
ed2dc618 23650 struct dwarf2_per_objfile *dwarf2_per_objfile
518817b3 23651 = (*ref_cu)->per_cu->dwarf2_per_objfile;
ed2dc618 23652
796a7ff8
DE
23653 /* For .gdb_index version 7 keep track of included TUs.
23654 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
23655 if (dwarf2_per_objfile->index_table != NULL
23656 && dwarf2_per_objfile->index_table->version <= 7)
23657 {
ae640021 23658 (*ref_cu)->per_cu->imported_symtabs_push (sig_cu->per_cu);
796a7ff8
DE
23659 }
23660
348e048f 23661 *ref_cu = sig_cu;
c24bdb02
KS
23662 if (sig_cu != cu)
23663 sig_cu->ancestor = cu;
23664
348e048f
DE
23665 return die;
23666 }
23667
ac9ec31b
DE
23668 return NULL;
23669}
23670
23671/* Follow signatured type referenced by ATTR in SRC_DIE.
23672 On entry *REF_CU is the CU of SRC_DIE.
23673 On exit *REF_CU is the CU of the result.
23674 The result is the DIE of the type.
23675 If the referenced type cannot be found an error is thrown. */
23676
23677static struct die_info *
ff39bb5e 23678follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
23679 struct dwarf2_cu **ref_cu)
23680{
23681 ULONGEST signature = DW_SIGNATURE (attr);
23682 struct signatured_type *sig_type;
23683 struct die_info *die;
23684
23685 gdb_assert (attr->form == DW_FORM_ref_sig8);
23686
a2ce51a0 23687 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
23688 /* sig_type will be NULL if the signatured type is missing from
23689 the debug info. */
23690 if (sig_type == NULL)
23691 {
23692 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
9d8780f0
SM
23693 " from DIE at %s [in module %s]"),
23694 hex_string (signature), sect_offset_str (src_die->sect_off),
518817b3 23695 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
ac9ec31b
DE
23696 }
23697
23698 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23699 if (die == NULL)
23700 {
23701 dump_die_for_error (src_die);
23702 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
9d8780f0
SM
23703 " from DIE at %s [in module %s]"),
23704 hex_string (signature), sect_offset_str (src_die->sect_off),
518817b3 23705 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
ac9ec31b
DE
23706 }
23707
23708 return die;
23709}
23710
23711/* Get the type specified by SIGNATURE referenced in DIE/CU,
23712 reading in and processing the type unit if necessary. */
23713
23714static struct type *
23715get_signatured_type (struct die_info *die, ULONGEST signature,
23716 struct dwarf2_cu *cu)
23717{
518817b3
SM
23718 struct dwarf2_per_objfile *dwarf2_per_objfile
23719 = cu->per_cu->dwarf2_per_objfile;
ac9ec31b
DE
23720 struct signatured_type *sig_type;
23721 struct dwarf2_cu *type_cu;
23722 struct die_info *type_die;
23723 struct type *type;
23724
a2ce51a0 23725 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
23726 /* sig_type will be NULL if the signatured type is missing from
23727 the debug info. */
23728 if (sig_type == NULL)
23729 {
b98664d3 23730 complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
9d8780f0
SM
23731 " from DIE at %s [in module %s]"),
23732 hex_string (signature), sect_offset_str (die->sect_off),
4262abfb 23733 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
23734 return build_error_marker_type (cu, die);
23735 }
23736
23737 /* If we already know the type we're done. */
23738 if (sig_type->type != NULL)
23739 return sig_type->type;
23740
23741 type_cu = cu;
23742 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23743 if (type_die != NULL)
23744 {
23745 /* N.B. We need to call get_die_type to ensure only one type for this DIE
23746 is created. This is important, for example, because for c++ classes
23747 we need TYPE_NAME set which is only done by new_symbol. Blech. */
23748 type = read_type_die (type_die, type_cu);
23749 if (type == NULL)
23750 {
b98664d3 23751 complaint (_("Dwarf Error: Cannot build signatured type %s"
9d8780f0
SM
23752 " referenced from DIE at %s [in module %s]"),
23753 hex_string (signature), sect_offset_str (die->sect_off),
4262abfb 23754 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
23755 type = build_error_marker_type (cu, die);
23756 }
23757 }
23758 else
23759 {
b98664d3 23760 complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
9d8780f0
SM
23761 " from DIE at %s [in module %s]"),
23762 hex_string (signature), sect_offset_str (die->sect_off),
4262abfb 23763 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
23764 type = build_error_marker_type (cu, die);
23765 }
23766 sig_type->type = type;
23767
23768 return type;
23769}
23770
23771/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23772 reading in and processing the type unit if necessary. */
23773
23774static struct type *
ff39bb5e 23775get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 23776 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
23777{
23778 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 23779 if (attr_form_is_ref (attr))
ac9ec31b
DE
23780 {
23781 struct dwarf2_cu *type_cu = cu;
23782 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23783
23784 return read_type_die (type_die, type_cu);
23785 }
23786 else if (attr->form == DW_FORM_ref_sig8)
23787 {
23788 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23789 }
23790 else
23791 {
518817b3
SM
23792 struct dwarf2_per_objfile *dwarf2_per_objfile
23793 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 23794
b98664d3 23795 complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
9d8780f0
SM
23796 " at %s [in module %s]"),
23797 dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
4262abfb 23798 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
23799 return build_error_marker_type (cu, die);
23800 }
348e048f
DE
23801}
23802
e5fe5e75 23803/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
23804
23805static void
e5fe5e75 23806load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 23807{
52dc124a 23808 struct signatured_type *sig_type;
348e048f 23809
f4dc4d17
DE
23810 /* Caller is responsible for ensuring type_unit_groups don't get here. */
23811 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23812
6721b2ec
DE
23813 /* We have the per_cu, but we need the signatured_type.
23814 Fortunately this is an easy translation. */
23815 gdb_assert (per_cu->is_debug_types);
23816 sig_type = (struct signatured_type *) per_cu;
348e048f 23817
6721b2ec 23818 gdb_assert (per_cu->cu == NULL);
348e048f 23819
52dc124a 23820 read_signatured_type (sig_type);
348e048f 23821
6721b2ec 23822 gdb_assert (per_cu->cu != NULL);
348e048f
DE
23823}
23824
dee91e82
DE
23825/* die_reader_func for read_signatured_type.
23826 This is identical to load_full_comp_unit_reader,
23827 but is kept separate for now. */
348e048f
DE
23828
23829static void
dee91e82 23830read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 23831 const gdb_byte *info_ptr,
dee91e82
DE
23832 struct die_info *comp_unit_die,
23833 int has_children,
23834 void *data)
348e048f 23835{
dee91e82 23836 struct dwarf2_cu *cu = reader->cu;
348e048f 23837
dee91e82
DE
23838 gdb_assert (cu->die_hash == NULL);
23839 cu->die_hash =
23840 htab_create_alloc_ex (cu->header.length / 12,
23841 die_hash,
23842 die_eq,
23843 NULL,
23844 &cu->comp_unit_obstack,
23845 hashtab_obstack_allocate,
23846 dummy_obstack_deallocate);
348e048f 23847
dee91e82
DE
23848 if (has_children)
23849 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23850 &info_ptr, comp_unit_die);
23851 cu->dies = comp_unit_die;
23852 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
23853
23854 /* We try not to read any attributes in this function, because not
9cdd5dbd 23855 all CUs needed for references have been loaded yet, and symbol
348e048f 23856 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
23857 or we won't be able to build types correctly.
23858 Similarly, if we do not read the producer, we can not apply
23859 producer-specific interpretation. */
95554aad 23860 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 23861}
348e048f 23862
3019eac3
DE
23863/* Read in a signatured type and build its CU and DIEs.
23864 If the type is a stub for the real type in a DWO file,
23865 read in the real type from the DWO file as well. */
dee91e82
DE
23866
23867static void
23868read_signatured_type (struct signatured_type *sig_type)
23869{
23870 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 23871
3019eac3 23872 gdb_assert (per_cu->is_debug_types);
dee91e82 23873 gdb_assert (per_cu->cu == NULL);
348e048f 23874
58f0c718 23875 init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
f4dc4d17 23876 read_signatured_type_reader, NULL);
7ee85ab1 23877 sig_type->per_cu.tu_read = 1;
c906108c
SS
23878}
23879
c906108c
SS
23880/* Decode simple location descriptions.
23881 Given a pointer to a dwarf block that defines a location, compute
23882 the location and return the value.
23883
4cecd739
DJ
23884 NOTE drow/2003-11-18: This function is called in two situations
23885 now: for the address of static or global variables (partial symbols
23886 only) and for offsets into structures which are expected to be
23887 (more or less) constant. The partial symbol case should go away,
23888 and only the constant case should remain. That will let this
23889 function complain more accurately. A few special modes are allowed
23890 without complaint for global variables (for instance, global
23891 register values and thread-local values).
c906108c
SS
23892
23893 A location description containing no operations indicates that the
4cecd739 23894 object is optimized out. The return value is 0 for that case.
6b992462
DJ
23895 FIXME drow/2003-11-16: No callers check for this case any more; soon all
23896 callers will only want a very basic result and this can become a
21ae7a4d
JK
23897 complaint.
23898
23899 Note that stack[0] is unused except as a default error return. */
c906108c
SS
23900
23901static CORE_ADDR
e7c27a73 23902decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 23903{
518817b3 23904 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
56eb65bd
SP
23905 size_t i;
23906 size_t size = blk->size;
d521ce57 23907 const gdb_byte *data = blk->data;
21ae7a4d
JK
23908 CORE_ADDR stack[64];
23909 int stacki;
23910 unsigned int bytes_read, unsnd;
23911 gdb_byte op;
c906108c 23912
21ae7a4d
JK
23913 i = 0;
23914 stacki = 0;
23915 stack[stacki] = 0;
23916 stack[++stacki] = 0;
23917
23918 while (i < size)
23919 {
23920 op = data[i++];
23921 switch (op)
23922 {
23923 case DW_OP_lit0:
23924 case DW_OP_lit1:
23925 case DW_OP_lit2:
23926 case DW_OP_lit3:
23927 case DW_OP_lit4:
23928 case DW_OP_lit5:
23929 case DW_OP_lit6:
23930 case DW_OP_lit7:
23931 case DW_OP_lit8:
23932 case DW_OP_lit9:
23933 case DW_OP_lit10:
23934 case DW_OP_lit11:
23935 case DW_OP_lit12:
23936 case DW_OP_lit13:
23937 case DW_OP_lit14:
23938 case DW_OP_lit15:
23939 case DW_OP_lit16:
23940 case DW_OP_lit17:
23941 case DW_OP_lit18:
23942 case DW_OP_lit19:
23943 case DW_OP_lit20:
23944 case DW_OP_lit21:
23945 case DW_OP_lit22:
23946 case DW_OP_lit23:
23947 case DW_OP_lit24:
23948 case DW_OP_lit25:
23949 case DW_OP_lit26:
23950 case DW_OP_lit27:
23951 case DW_OP_lit28:
23952 case DW_OP_lit29:
23953 case DW_OP_lit30:
23954 case DW_OP_lit31:
23955 stack[++stacki] = op - DW_OP_lit0;
23956 break;
f1bea926 23957
21ae7a4d
JK
23958 case DW_OP_reg0:
23959 case DW_OP_reg1:
23960 case DW_OP_reg2:
23961 case DW_OP_reg3:
23962 case DW_OP_reg4:
23963 case DW_OP_reg5:
23964 case DW_OP_reg6:
23965 case DW_OP_reg7:
23966 case DW_OP_reg8:
23967 case DW_OP_reg9:
23968 case DW_OP_reg10:
23969 case DW_OP_reg11:
23970 case DW_OP_reg12:
23971 case DW_OP_reg13:
23972 case DW_OP_reg14:
23973 case DW_OP_reg15:
23974 case DW_OP_reg16:
23975 case DW_OP_reg17:
23976 case DW_OP_reg18:
23977 case DW_OP_reg19:
23978 case DW_OP_reg20:
23979 case DW_OP_reg21:
23980 case DW_OP_reg22:
23981 case DW_OP_reg23:
23982 case DW_OP_reg24:
23983 case DW_OP_reg25:
23984 case DW_OP_reg26:
23985 case DW_OP_reg27:
23986 case DW_OP_reg28:
23987 case DW_OP_reg29:
23988 case DW_OP_reg30:
23989 case DW_OP_reg31:
23990 stack[++stacki] = op - DW_OP_reg0;
23991 if (i < size)
23992 dwarf2_complex_location_expr_complaint ();
23993 break;
c906108c 23994
21ae7a4d
JK
23995 case DW_OP_regx:
23996 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23997 i += bytes_read;
23998 stack[++stacki] = unsnd;
23999 if (i < size)
24000 dwarf2_complex_location_expr_complaint ();
24001 break;
c906108c 24002
21ae7a4d
JK
24003 case DW_OP_addr:
24004 stack[++stacki] = read_address (objfile->obfd, &data[i],
24005 cu, &bytes_read);
24006 i += bytes_read;
24007 break;
d53d4ac5 24008
21ae7a4d
JK
24009 case DW_OP_const1u:
24010 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
24011 i += 1;
24012 break;
24013
24014 case DW_OP_const1s:
24015 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
24016 i += 1;
24017 break;
24018
24019 case DW_OP_const2u:
24020 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
24021 i += 2;
24022 break;
24023
24024 case DW_OP_const2s:
24025 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
24026 i += 2;
24027 break;
d53d4ac5 24028
21ae7a4d
JK
24029 case DW_OP_const4u:
24030 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
24031 i += 4;
24032 break;
24033
24034 case DW_OP_const4s:
24035 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
24036 i += 4;
24037 break;
24038
585861ea
JK
24039 case DW_OP_const8u:
24040 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
24041 i += 8;
24042 break;
24043
21ae7a4d
JK
24044 case DW_OP_constu:
24045 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
24046 &bytes_read);
24047 i += bytes_read;
24048 break;
24049
24050 case DW_OP_consts:
24051 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
24052 i += bytes_read;
24053 break;
24054
24055 case DW_OP_dup:
24056 stack[stacki + 1] = stack[stacki];
24057 stacki++;
24058 break;
24059
24060 case DW_OP_plus:
24061 stack[stacki - 1] += stack[stacki];
24062 stacki--;
24063 break;
24064
24065 case DW_OP_plus_uconst:
24066 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
24067 &bytes_read);
24068 i += bytes_read;
24069 break;
24070
24071 case DW_OP_minus:
24072 stack[stacki - 1] -= stack[stacki];
24073 stacki--;
24074 break;
24075
24076 case DW_OP_deref:
24077 /* If we're not the last op, then we definitely can't encode
24078 this using GDB's address_class enum. This is valid for partial
24079 global symbols, although the variable's address will be bogus
24080 in the psymtab. */
24081 if (i < size)
24082 dwarf2_complex_location_expr_complaint ();
24083 break;
24084
24085 case DW_OP_GNU_push_tls_address:
4aa4e28b 24086 case DW_OP_form_tls_address:
21ae7a4d
JK
24087 /* The top of the stack has the offset from the beginning
24088 of the thread control block at which the variable is located. */
24089 /* Nothing should follow this operator, so the top of stack would
24090 be returned. */
24091 /* This is valid for partial global symbols, but the variable's
585861ea
JK
24092 address will be bogus in the psymtab. Make it always at least
24093 non-zero to not look as a variable garbage collected by linker
24094 which have DW_OP_addr 0. */
21ae7a4d
JK
24095 if (i < size)
24096 dwarf2_complex_location_expr_complaint ();
585861ea 24097 stack[stacki]++;
21ae7a4d
JK
24098 break;
24099
24100 case DW_OP_GNU_uninit:
24101 break;
24102
336d760d 24103 case DW_OP_addrx:
3019eac3 24104 case DW_OP_GNU_addr_index:
49f6c839 24105 case DW_OP_GNU_const_index:
3019eac3
DE
24106 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
24107 &bytes_read);
24108 i += bytes_read;
24109 break;
24110
21ae7a4d
JK
24111 default:
24112 {
f39c6ffd 24113 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
24114
24115 if (name)
b98664d3 24116 complaint (_("unsupported stack op: '%s'"),
21ae7a4d
JK
24117 name);
24118 else
b98664d3 24119 complaint (_("unsupported stack op: '%02x'"),
21ae7a4d
JK
24120 op);
24121 }
24122
24123 return (stack[stacki]);
d53d4ac5 24124 }
3c6e0cb3 24125
21ae7a4d
JK
24126 /* Enforce maximum stack depth of SIZE-1 to avoid writing
24127 outside of the allocated space. Also enforce minimum>0. */
24128 if (stacki >= ARRAY_SIZE (stack) - 1)
24129 {
b98664d3 24130 complaint (_("location description stack overflow"));
21ae7a4d
JK
24131 return 0;
24132 }
24133
24134 if (stacki <= 0)
24135 {
b98664d3 24136 complaint (_("location description stack underflow"));
21ae7a4d
JK
24137 return 0;
24138 }
24139 }
24140 return (stack[stacki]);
c906108c
SS
24141}
24142
24143/* memory allocation interface */
24144
c906108c 24145static struct dwarf_block *
7b5a2f43 24146dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c 24147{
8d749320 24148 return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
c906108c
SS
24149}
24150
c906108c 24151static struct die_info *
b60c80d6 24152dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
24153{
24154 struct die_info *die;
b60c80d6
DJ
24155 size_t size = sizeof (struct die_info);
24156
24157 if (num_attrs > 1)
24158 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 24159
b60c80d6 24160 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
24161 memset (die, 0, sizeof (struct die_info));
24162 return (die);
24163}
2e276125
JB
24164
24165\f
24166/* Macro support. */
24167
233d95b5
JK
24168/* Return file name relative to the compilation directory of file number I in
24169 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 24170 responsible for freeing it. */
233d95b5 24171
2e276125 24172static char *
233d95b5 24173file_file_name (int file, struct line_header *lh)
2e276125 24174{
6a83a1e6
EZ
24175 /* Is the file number a valid index into the line header's file name
24176 table? Remember that file numbers start with one, not zero. */
fff8551c 24177 if (1 <= file && file <= lh->file_names.size ())
6a83a1e6 24178 {
8c43009f 24179 const file_entry &fe = lh->file_names[file - 1];
6e70227d 24180
8c43009f
PA
24181 if (!IS_ABSOLUTE_PATH (fe.name))
24182 {
24183 const char *dir = fe.include_dir (lh);
24184 if (dir != NULL)
24185 return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
24186 }
24187 return xstrdup (fe.name);
6a83a1e6 24188 }
2e276125
JB
24189 else
24190 {
6a83a1e6
EZ
24191 /* The compiler produced a bogus file number. We can at least
24192 record the macro definitions made in the file, even if we
24193 won't be able to find the file by name. */
24194 char fake_name[80];
9a619af0 24195
8c042590
PM
24196 xsnprintf (fake_name, sizeof (fake_name),
24197 "<bad macro file number %d>", file);
2e276125 24198
b98664d3 24199 complaint (_("bad file number in macro information (%d)"),
6a83a1e6 24200 file);
2e276125 24201
6a83a1e6 24202 return xstrdup (fake_name);
2e276125
JB
24203 }
24204}
24205
233d95b5
JK
24206/* Return the full name of file number I in *LH's file name table.
24207 Use COMP_DIR as the name of the current directory of the
24208 compilation. The result is allocated using xmalloc; the caller is
24209 responsible for freeing it. */
24210static char *
24211file_full_name (int file, struct line_header *lh, const char *comp_dir)
24212{
24213 /* Is the file number a valid index into the line header's file name
24214 table? Remember that file numbers start with one, not zero. */
fff8551c 24215 if (1 <= file && file <= lh->file_names.size ())
233d95b5
JK
24216 {
24217 char *relative = file_file_name (file, lh);
24218
24219 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
24220 return relative;
b36cec19
PA
24221 return reconcat (relative, comp_dir, SLASH_STRING,
24222 relative, (char *) NULL);
233d95b5
JK
24223 }
24224 else
24225 return file_file_name (file, lh);
24226}
24227
2e276125
JB
24228
24229static struct macro_source_file *
804d2729
TT
24230macro_start_file (struct dwarf2_cu *cu,
24231 int file, int line,
2e276125 24232 struct macro_source_file *current_file,
43f3e411 24233 struct line_header *lh)
2e276125 24234{
233d95b5
JK
24235 /* File name relative to the compilation directory of this source file. */
24236 char *file_name = file_file_name (file, lh);
2e276125 24237
2e276125 24238 if (! current_file)
abc9d0dc 24239 {
fc474241
DE
24240 /* Note: We don't create a macro table for this compilation unit
24241 at all until we actually get a filename. */
c24bdb02 24242 struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
fc474241 24243
abc9d0dc
TT
24244 /* If we have no current file, then this must be the start_file
24245 directive for the compilation unit's main source file. */
fc474241
DE
24246 current_file = macro_set_main (macro_table, file_name);
24247 macro_define_special (macro_table);
abc9d0dc 24248 }
2e276125 24249 else
233d95b5 24250 current_file = macro_include (current_file, line, file_name);
2e276125 24251
233d95b5 24252 xfree (file_name);
6e70227d 24253
2e276125
JB
24254 return current_file;
24255}
24256
2e276125
JB
24257static const char *
24258consume_improper_spaces (const char *p, const char *body)
24259{
24260 if (*p == ' ')
24261 {
b98664d3 24262 complaint (_("macro definition contains spaces "
3e43a32a 24263 "in formal argument list:\n`%s'"),
4d3c2250 24264 body);
2e276125
JB
24265
24266 while (*p == ' ')
24267 p++;
24268 }
24269
24270 return p;
24271}
24272
24273
24274static void
24275parse_macro_definition (struct macro_source_file *file, int line,
24276 const char *body)
24277{
24278 const char *p;
24279
24280 /* The body string takes one of two forms. For object-like macro
24281 definitions, it should be:
24282
24283 <macro name> " " <definition>
24284
24285 For function-like macro definitions, it should be:
24286
24287 <macro name> "() " <definition>
24288 or
24289 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24290
24291 Spaces may appear only where explicitly indicated, and in the
24292 <definition>.
24293
24294 The Dwarf 2 spec says that an object-like macro's name is always
24295 followed by a space, but versions of GCC around March 2002 omit
6e70227d 24296 the space when the macro's definition is the empty string.
2e276125
JB
24297
24298 The Dwarf 2 spec says that there should be no spaces between the
24299 formal arguments in a function-like macro's formal argument list,
24300 but versions of GCC around March 2002 include spaces after the
24301 commas. */
24302
24303
24304 /* Find the extent of the macro name. The macro name is terminated
24305 by either a space or null character (for an object-like macro) or
24306 an opening paren (for a function-like macro). */
24307 for (p = body; *p; p++)
24308 if (*p == ' ' || *p == '(')
24309 break;
24310
24311 if (*p == ' ' || *p == '\0')
24312 {
24313 /* It's an object-like macro. */
24314 int name_len = p - body;
3f8a7804 24315 char *name = savestring (body, name_len);
2e276125
JB
24316 const char *replacement;
24317
24318 if (*p == ' ')
24319 replacement = body + name_len + 1;
24320 else
24321 {
4d3c2250 24322 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24323 replacement = body + name_len;
24324 }
6e70227d 24325
2e276125
JB
24326 macro_define_object (file, line, name, replacement);
24327
24328 xfree (name);
24329 }
24330 else if (*p == '(')
24331 {
24332 /* It's a function-like macro. */
3f8a7804 24333 char *name = savestring (body, p - body);
2e276125
JB
24334 int argc = 0;
24335 int argv_size = 1;
8d749320 24336 char **argv = XNEWVEC (char *, argv_size);
2e276125
JB
24337
24338 p++;
24339
24340 p = consume_improper_spaces (p, body);
24341
24342 /* Parse the formal argument list. */
24343 while (*p && *p != ')')
24344 {
24345 /* Find the extent of the current argument name. */
24346 const char *arg_start = p;
24347
24348 while (*p && *p != ',' && *p != ')' && *p != ' ')
24349 p++;
24350
24351 if (! *p || p == arg_start)
4d3c2250 24352 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24353 else
24354 {
24355 /* Make sure argv has room for the new argument. */
24356 if (argc >= argv_size)
24357 {
24358 argv_size *= 2;
224c3ddb 24359 argv = XRESIZEVEC (char *, argv, argv_size);
2e276125
JB
24360 }
24361
3f8a7804 24362 argv[argc++] = savestring (arg_start, p - arg_start);
2e276125
JB
24363 }
24364
24365 p = consume_improper_spaces (p, body);
24366
24367 /* Consume the comma, if present. */
24368 if (*p == ',')
24369 {
24370 p++;
24371
24372 p = consume_improper_spaces (p, body);
24373 }
24374 }
24375
24376 if (*p == ')')
24377 {
24378 p++;
24379
24380 if (*p == ' ')
24381 /* Perfectly formed definition, no complaints. */
24382 macro_define_function (file, line, name,
6e70227d 24383 argc, (const char **) argv,
2e276125
JB
24384 p + 1);
24385 else if (*p == '\0')
24386 {
24387 /* Complain, but do define it. */
4d3c2250 24388 dwarf2_macro_malformed_definition_complaint (body);
2e276125 24389 macro_define_function (file, line, name,
6e70227d 24390 argc, (const char **) argv,
2e276125
JB
24391 p);
24392 }
24393 else
24394 /* Just complain. */
4d3c2250 24395 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24396 }
24397 else
24398 /* Just complain. */
4d3c2250 24399 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24400
24401 xfree (name);
24402 {
24403 int i;
24404
24405 for (i = 0; i < argc; i++)
24406 xfree (argv[i]);
24407 }
24408 xfree (argv);
24409 }
24410 else
4d3c2250 24411 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
24412}
24413
cf2c3c16
TT
24414/* Skip some bytes from BYTES according to the form given in FORM.
24415 Returns the new pointer. */
2e276125 24416
d521ce57
TT
24417static const gdb_byte *
24418skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
24419 enum dwarf_form form,
24420 unsigned int offset_size,
24421 struct dwarf2_section_info *section)
2e276125 24422{
cf2c3c16 24423 unsigned int bytes_read;
2e276125 24424
cf2c3c16 24425 switch (form)
2e276125 24426 {
cf2c3c16
TT
24427 case DW_FORM_data1:
24428 case DW_FORM_flag:
24429 ++bytes;
24430 break;
24431
24432 case DW_FORM_data2:
24433 bytes += 2;
24434 break;
24435
24436 case DW_FORM_data4:
24437 bytes += 4;
24438 break;
24439
24440 case DW_FORM_data8:
24441 bytes += 8;
24442 break;
24443
0224619f
JK
24444 case DW_FORM_data16:
24445 bytes += 16;
24446 break;
24447
cf2c3c16
TT
24448 case DW_FORM_string:
24449 read_direct_string (abfd, bytes, &bytes_read);
24450 bytes += bytes_read;
24451 break;
24452
24453 case DW_FORM_sec_offset:
24454 case DW_FORM_strp:
36586728 24455 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
24456 bytes += offset_size;
24457 break;
24458
24459 case DW_FORM_block:
24460 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24461 bytes += bytes_read;
24462 break;
24463
24464 case DW_FORM_block1:
24465 bytes += 1 + read_1_byte (abfd, bytes);
24466 break;
24467 case DW_FORM_block2:
24468 bytes += 2 + read_2_bytes (abfd, bytes);
24469 break;
24470 case DW_FORM_block4:
24471 bytes += 4 + read_4_bytes (abfd, bytes);
24472 break;
24473
336d760d 24474 case DW_FORM_addrx:
cf2c3c16 24475 case DW_FORM_sdata:
cf532bd1 24476 case DW_FORM_strx:
cf2c3c16 24477 case DW_FORM_udata:
3019eac3
DE
24478 case DW_FORM_GNU_addr_index:
24479 case DW_FORM_GNU_str_index:
d521ce57 24480 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
24481 if (bytes == NULL)
24482 {
24483 dwarf2_section_buffer_overflow_complaint (section);
24484 return NULL;
24485 }
cf2c3c16
TT
24486 break;
24487
663c44ac
JK
24488 case DW_FORM_implicit_const:
24489 break;
24490
cf2c3c16
TT
24491 default:
24492 {
b98664d3 24493 complaint (_("invalid form 0x%x in `%s'"),
a32a8923 24494 form, get_section_name (section));
cf2c3c16
TT
24495 return NULL;
24496 }
2e276125
JB
24497 }
24498
cf2c3c16
TT
24499 return bytes;
24500}
757a13d0 24501
cf2c3c16
TT
24502/* A helper for dwarf_decode_macros that handles skipping an unknown
24503 opcode. Returns an updated pointer to the macro data buffer; or,
24504 on error, issues a complaint and returns NULL. */
757a13d0 24505
d521ce57 24506static const gdb_byte *
cf2c3c16 24507skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
24508 const gdb_byte **opcode_definitions,
24509 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
24510 bfd *abfd,
24511 unsigned int offset_size,
24512 struct dwarf2_section_info *section)
24513{
24514 unsigned int bytes_read, i;
24515 unsigned long arg;
d521ce57 24516 const gdb_byte *defn;
2e276125 24517
cf2c3c16 24518 if (opcode_definitions[opcode] == NULL)
2e276125 24519 {
b98664d3 24520 complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
cf2c3c16
TT
24521 opcode);
24522 return NULL;
24523 }
2e276125 24524
cf2c3c16
TT
24525 defn = opcode_definitions[opcode];
24526 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24527 defn += bytes_read;
2e276125 24528
cf2c3c16
TT
24529 for (i = 0; i < arg; ++i)
24530 {
aead7601
SM
24531 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24532 (enum dwarf_form) defn[i], offset_size,
f664829e 24533 section);
cf2c3c16
TT
24534 if (mac_ptr == NULL)
24535 {
24536 /* skip_form_bytes already issued the complaint. */
24537 return NULL;
24538 }
24539 }
757a13d0 24540
cf2c3c16
TT
24541 return mac_ptr;
24542}
757a13d0 24543
cf2c3c16
TT
24544/* A helper function which parses the header of a macro section.
24545 If the macro section is the extended (for now called "GNU") type,
24546 then this updates *OFFSET_SIZE. Returns a pointer to just after
24547 the header, or issues a complaint and returns NULL on error. */
757a13d0 24548
d521ce57
TT
24549static const gdb_byte *
24550dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 24551 bfd *abfd,
d521ce57 24552 const gdb_byte *mac_ptr,
cf2c3c16
TT
24553 unsigned int *offset_size,
24554 int section_is_gnu)
24555{
24556 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 24557
cf2c3c16
TT
24558 if (section_is_gnu)
24559 {
24560 unsigned int version, flags;
757a13d0 24561
cf2c3c16 24562 version = read_2_bytes (abfd, mac_ptr);
0af92d60 24563 if (version != 4 && version != 5)
cf2c3c16 24564 {
b98664d3 24565 complaint (_("unrecognized version `%d' in .debug_macro section"),
cf2c3c16
TT
24566 version);
24567 return NULL;
24568 }
24569 mac_ptr += 2;
757a13d0 24570
cf2c3c16
TT
24571 flags = read_1_byte (abfd, mac_ptr);
24572 ++mac_ptr;
24573 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 24574
cf2c3c16
TT
24575 if ((flags & 2) != 0)
24576 /* We don't need the line table offset. */
24577 mac_ptr += *offset_size;
757a13d0 24578
cf2c3c16
TT
24579 /* Vendor opcode descriptions. */
24580 if ((flags & 4) != 0)
24581 {
24582 unsigned int i, count;
757a13d0 24583
cf2c3c16
TT
24584 count = read_1_byte (abfd, mac_ptr);
24585 ++mac_ptr;
24586 for (i = 0; i < count; ++i)
24587 {
24588 unsigned int opcode, bytes_read;
24589 unsigned long arg;
24590
24591 opcode = read_1_byte (abfd, mac_ptr);
24592 ++mac_ptr;
24593 opcode_definitions[opcode] = mac_ptr;
24594 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24595 mac_ptr += bytes_read;
24596 mac_ptr += arg;
24597 }
757a13d0 24598 }
cf2c3c16 24599 }
757a13d0 24600
cf2c3c16
TT
24601 return mac_ptr;
24602}
757a13d0 24603
cf2c3c16 24604/* A helper for dwarf_decode_macros that handles the GNU extensions,
0af92d60 24605 including DW_MACRO_import. */
cf2c3c16
TT
24606
24607static void
804d2729 24608dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
ed2dc618 24609 bfd *abfd,
d521ce57 24610 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 24611 struct macro_source_file *current_file,
43f3e411 24612 struct line_header *lh,
cf2c3c16 24613 struct dwarf2_section_info *section,
36586728 24614 int section_is_gnu, int section_is_dwz,
cf2c3c16 24615 unsigned int offset_size,
8fc3fc34 24616 htab_t include_hash)
cf2c3c16 24617{
804d2729
TT
24618 struct dwarf2_per_objfile *dwarf2_per_objfile
24619 = cu->per_cu->dwarf2_per_objfile;
4d663531 24620 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
24621 enum dwarf_macro_record_type macinfo_type;
24622 int at_commandline;
d521ce57 24623 const gdb_byte *opcode_definitions[256];
757a13d0 24624
cf2c3c16
TT
24625 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24626 &offset_size, section_is_gnu);
24627 if (mac_ptr == NULL)
24628 {
24629 /* We already issued a complaint. */
24630 return;
24631 }
757a13d0
JK
24632
24633 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
24634 GDB is still reading the definitions from command line. First
24635 DW_MACINFO_start_file will need to be ignored as it was already executed
24636 to create CURRENT_FILE for the main source holding also the command line
24637 definitions. On first met DW_MACINFO_start_file this flag is reset to
24638 normally execute all the remaining DW_MACINFO_start_file macinfos. */
24639
24640 at_commandline = 1;
24641
24642 do
24643 {
24644 /* Do we at least have room for a macinfo type byte? */
24645 if (mac_ptr >= mac_end)
24646 {
f664829e 24647 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
24648 break;
24649 }
24650
aead7601 24651 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
757a13d0
JK
24652 mac_ptr++;
24653
cf2c3c16
TT
24654 /* Note that we rely on the fact that the corresponding GNU and
24655 DWARF constants are the same. */
132448f8
SM
24656 DIAGNOSTIC_PUSH
24657 DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
757a13d0
JK
24658 switch (macinfo_type)
24659 {
24660 /* A zero macinfo type indicates the end of the macro
24661 information. */
24662 case 0:
24663 break;
2e276125 24664
0af92d60
JK
24665 case DW_MACRO_define:
24666 case DW_MACRO_undef:
24667 case DW_MACRO_define_strp:
24668 case DW_MACRO_undef_strp:
24669 case DW_MACRO_define_sup:
24670 case DW_MACRO_undef_sup:
2e276125 24671 {
891d2f0b 24672 unsigned int bytes_read;
2e276125 24673 int line;
d521ce57 24674 const char *body;
cf2c3c16 24675 int is_define;
2e276125 24676
cf2c3c16
TT
24677 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24678 mac_ptr += bytes_read;
24679
0af92d60
JK
24680 if (macinfo_type == DW_MACRO_define
24681 || macinfo_type == DW_MACRO_undef)
cf2c3c16
TT
24682 {
24683 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24684 mac_ptr += bytes_read;
24685 }
24686 else
24687 {
24688 LONGEST str_offset;
24689
24690 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24691 mac_ptr += offset_size;
2e276125 24692
0af92d60
JK
24693 if (macinfo_type == DW_MACRO_define_sup
24694 || macinfo_type == DW_MACRO_undef_sup
f7a35f02 24695 || section_is_dwz)
36586728 24696 {
ed2dc618
SM
24697 struct dwz_file *dwz
24698 = dwarf2_get_dwz_file (dwarf2_per_objfile);
36586728 24699
ed2dc618
SM
24700 body = read_indirect_string_from_dwz (objfile,
24701 dwz, str_offset);
36586728
TT
24702 }
24703 else
ed2dc618
SM
24704 body = read_indirect_string_at_offset (dwarf2_per_objfile,
24705 abfd, str_offset);
cf2c3c16
TT
24706 }
24707
0af92d60
JK
24708 is_define = (macinfo_type == DW_MACRO_define
24709 || macinfo_type == DW_MACRO_define_strp
24710 || macinfo_type == DW_MACRO_define_sup);
2e276125 24711 if (! current_file)
757a13d0
JK
24712 {
24713 /* DWARF violation as no main source is present. */
b98664d3 24714 complaint (_("debug info with no main source gives macro %s "
757a13d0 24715 "on line %d: %s"),
cf2c3c16
TT
24716 is_define ? _("definition") : _("undefinition"),
24717 line, body);
757a13d0
JK
24718 break;
24719 }
3e43a32a
MS
24720 if ((line == 0 && !at_commandline)
24721 || (line != 0 && at_commandline))
b98664d3 24722 complaint (_("debug info gives %s macro %s with %s line %d: %s"),
757a13d0 24723 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 24724 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
24725 line == 0 ? _("zero") : _("non-zero"), line, body);
24726
955b06fa 24727 if (body == NULL)
7bede828 24728 {
955b06fa
SDJ
24729 /* Fedora's rpm-build's "debugedit" binary
24730 corrupted .debug_macro sections.
24731
24732 For more info, see
24733 https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
24734 complaint (_("debug info gives %s invalid macro %s "
24735 "without body (corrupted?) at line %d "
24736 "on file %s"),
24737 at_commandline ? _("command-line") : _("in-file"),
24738 is_define ? _("definition") : _("undefinition"),
24739 line, current_file->filename);
7bede828 24740 }
955b06fa
SDJ
24741 else if (is_define)
24742 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
24743 else
24744 {
0af92d60
JK
24745 gdb_assert (macinfo_type == DW_MACRO_undef
24746 || macinfo_type == DW_MACRO_undef_strp
24747 || macinfo_type == DW_MACRO_undef_sup);
cf2c3c16
TT
24748 macro_undef (current_file, line, body);
24749 }
2e276125
JB
24750 }
24751 break;
24752
0af92d60 24753 case DW_MACRO_start_file:
2e276125 24754 {
891d2f0b 24755 unsigned int bytes_read;
2e276125
JB
24756 int line, file;
24757
24758 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24759 mac_ptr += bytes_read;
24760 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24761 mac_ptr += bytes_read;
24762
3e43a32a
MS
24763 if ((line == 0 && !at_commandline)
24764 || (line != 0 && at_commandline))
b98664d3 24765 complaint (_("debug info gives source %d included "
757a13d0
JK
24766 "from %s at %s line %d"),
24767 file, at_commandline ? _("command-line") : _("file"),
24768 line == 0 ? _("zero") : _("non-zero"), line);
24769
24770 if (at_commandline)
24771 {
0af92d60 24772 /* This DW_MACRO_start_file was executed in the
cf2c3c16 24773 pass one. */
757a13d0
JK
24774 at_commandline = 0;
24775 }
24776 else
804d2729
TT
24777 current_file = macro_start_file (cu, file, line, current_file,
24778 lh);
2e276125
JB
24779 }
24780 break;
24781
0af92d60 24782 case DW_MACRO_end_file:
2e276125 24783 if (! current_file)
b98664d3 24784 complaint (_("macro debug info has an unmatched "
3e43a32a 24785 "`close_file' directive"));
2e276125
JB
24786 else
24787 {
24788 current_file = current_file->included_by;
24789 if (! current_file)
24790 {
cf2c3c16 24791 enum dwarf_macro_record_type next_type;
2e276125
JB
24792
24793 /* GCC circa March 2002 doesn't produce the zero
24794 type byte marking the end of the compilation
24795 unit. Complain if it's not there, but exit no
24796 matter what. */
24797
24798 /* Do we at least have room for a macinfo type byte? */
24799 if (mac_ptr >= mac_end)
24800 {
f664829e 24801 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
24802 return;
24803 }
24804
24805 /* We don't increment mac_ptr here, so this is just
24806 a look-ahead. */
aead7601
SM
24807 next_type
24808 = (enum dwarf_macro_record_type) read_1_byte (abfd,
24809 mac_ptr);
2e276125 24810 if (next_type != 0)
b98664d3 24811 complaint (_("no terminating 0-type entry for "
3e43a32a 24812 "macros in `.debug_macinfo' section"));
2e276125
JB
24813
24814 return;
24815 }
24816 }
24817 break;
24818
0af92d60
JK
24819 case DW_MACRO_import:
24820 case DW_MACRO_import_sup:
cf2c3c16
TT
24821 {
24822 LONGEST offset;
8fc3fc34 24823 void **slot;
a036ba48
TT
24824 bfd *include_bfd = abfd;
24825 struct dwarf2_section_info *include_section = section;
d521ce57 24826 const gdb_byte *include_mac_end = mac_end;
a036ba48 24827 int is_dwz = section_is_dwz;
d521ce57 24828 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
24829
24830 offset = read_offset_1 (abfd, mac_ptr, offset_size);
24831 mac_ptr += offset_size;
24832
0af92d60 24833 if (macinfo_type == DW_MACRO_import_sup)
a036ba48 24834 {
ed2dc618 24835 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
a036ba48 24836
4d663531 24837 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 24838
a036ba48 24839 include_section = &dwz->macro;
a32a8923 24840 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
24841 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24842 is_dwz = 1;
24843 }
24844
24845 new_mac_ptr = include_section->buffer + offset;
24846 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24847
8fc3fc34
TT
24848 if (*slot != NULL)
24849 {
24850 /* This has actually happened; see
24851 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
b98664d3 24852 complaint (_("recursive DW_MACRO_import in "
8fc3fc34
TT
24853 ".debug_macro section"));
24854 }
24855 else
24856 {
d521ce57 24857 *slot = (void *) new_mac_ptr;
36586728 24858
804d2729 24859 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
43f3e411 24860 include_mac_end, current_file, lh,
36586728 24861 section, section_is_gnu, is_dwz,
4d663531 24862 offset_size, include_hash);
8fc3fc34 24863
d521ce57 24864 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 24865 }
cf2c3c16
TT
24866 }
24867 break;
24868
2e276125 24869 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
24870 if (!section_is_gnu)
24871 {
24872 unsigned int bytes_read;
2e276125 24873
ac298888
TT
24874 /* This reads the constant, but since we don't recognize
24875 any vendor extensions, we ignore it. */
24876 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
cf2c3c16
TT
24877 mac_ptr += bytes_read;
24878 read_direct_string (abfd, mac_ptr, &bytes_read);
24879 mac_ptr += bytes_read;
2e276125 24880
cf2c3c16
TT
24881 /* We don't recognize any vendor extensions. */
24882 break;
24883 }
24884 /* FALLTHROUGH */
24885
24886 default:
24887 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 24888 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
24889 section);
24890 if (mac_ptr == NULL)
24891 return;
24892 break;
2e276125 24893 }
132448f8 24894 DIAGNOSTIC_POP
757a13d0 24895 } while (macinfo_type != 0);
2e276125 24896}
8e19ed76 24897
cf2c3c16 24898static void
09262596 24899dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 24900 int section_is_gnu)
cf2c3c16 24901{
518817b3
SM
24902 struct dwarf2_per_objfile *dwarf2_per_objfile
24903 = cu->per_cu->dwarf2_per_objfile;
bb5ed363 24904 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
24905 struct line_header *lh = cu->line_header;
24906 bfd *abfd;
d521ce57 24907 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
24908 struct macro_source_file *current_file = 0;
24909 enum dwarf_macro_record_type macinfo_type;
24910 unsigned int offset_size = cu->header.offset_size;
d521ce57 24911 const gdb_byte *opcode_definitions[256];
8fc3fc34 24912 void **slot;
09262596
DE
24913 struct dwarf2_section_info *section;
24914 const char *section_name;
24915
24916 if (cu->dwo_unit != NULL)
24917 {
24918 if (section_is_gnu)
24919 {
24920 section = &cu->dwo_unit->dwo_file->sections.macro;
24921 section_name = ".debug_macro.dwo";
24922 }
24923 else
24924 {
24925 section = &cu->dwo_unit->dwo_file->sections.macinfo;
24926 section_name = ".debug_macinfo.dwo";
24927 }
24928 }
24929 else
24930 {
24931 if (section_is_gnu)
24932 {
24933 section = &dwarf2_per_objfile->macro;
24934 section_name = ".debug_macro";
24935 }
24936 else
24937 {
24938 section = &dwarf2_per_objfile->macinfo;
24939 section_name = ".debug_macinfo";
24940 }
24941 }
cf2c3c16 24942
bb5ed363 24943 dwarf2_read_section (objfile, section);
cf2c3c16
TT
24944 if (section->buffer == NULL)
24945 {
b98664d3 24946 complaint (_("missing %s section"), section_name);
cf2c3c16
TT
24947 return;
24948 }
a32a8923 24949 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
24950
24951 /* First pass: Find the name of the base filename.
24952 This filename is needed in order to process all macros whose definition
24953 (or undefinition) comes from the command line. These macros are defined
24954 before the first DW_MACINFO_start_file entry, and yet still need to be
24955 associated to the base file.
24956
24957 To determine the base file name, we scan the macro definitions until we
24958 reach the first DW_MACINFO_start_file entry. We then initialize
24959 CURRENT_FILE accordingly so that any macro definition found before the
24960 first DW_MACINFO_start_file can still be associated to the base file. */
24961
24962 mac_ptr = section->buffer + offset;
24963 mac_end = section->buffer + section->size;
24964
24965 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24966 &offset_size, section_is_gnu);
24967 if (mac_ptr == NULL)
24968 {
24969 /* We already issued a complaint. */
24970 return;
24971 }
24972
24973 do
24974 {
24975 /* Do we at least have room for a macinfo type byte? */
24976 if (mac_ptr >= mac_end)
24977 {
24978 /* Complaint is printed during the second pass as GDB will probably
24979 stop the first pass earlier upon finding
24980 DW_MACINFO_start_file. */
24981 break;
24982 }
24983
aead7601 24984 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
cf2c3c16
TT
24985 mac_ptr++;
24986
24987 /* Note that we rely on the fact that the corresponding GNU and
24988 DWARF constants are the same. */
132448f8
SM
24989 DIAGNOSTIC_PUSH
24990 DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
cf2c3c16
TT
24991 switch (macinfo_type)
24992 {
24993 /* A zero macinfo type indicates the end of the macro
24994 information. */
24995 case 0:
24996 break;
24997
0af92d60
JK
24998 case DW_MACRO_define:
24999 case DW_MACRO_undef:
cf2c3c16
TT
25000 /* Only skip the data by MAC_PTR. */
25001 {
25002 unsigned int bytes_read;
25003
25004 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
25005 mac_ptr += bytes_read;
25006 read_direct_string (abfd, mac_ptr, &bytes_read);
25007 mac_ptr += bytes_read;
25008 }
25009 break;
25010
0af92d60 25011 case DW_MACRO_start_file:
cf2c3c16
TT
25012 {
25013 unsigned int bytes_read;
25014 int line, file;
25015
25016 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
25017 mac_ptr += bytes_read;
25018 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
25019 mac_ptr += bytes_read;
25020
804d2729 25021 current_file = macro_start_file (cu, file, line, current_file, lh);
cf2c3c16
TT
25022 }
25023 break;
25024
0af92d60 25025 case DW_MACRO_end_file:
cf2c3c16
TT
25026 /* No data to skip by MAC_PTR. */
25027 break;
25028
0af92d60
JK
25029 case DW_MACRO_define_strp:
25030 case DW_MACRO_undef_strp:
25031 case DW_MACRO_define_sup:
25032 case DW_MACRO_undef_sup:
cf2c3c16
TT
25033 {
25034 unsigned int bytes_read;
25035
25036 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
25037 mac_ptr += bytes_read;
25038 mac_ptr += offset_size;
25039 }
25040 break;
25041
0af92d60
JK
25042 case DW_MACRO_import:
25043 case DW_MACRO_import_sup:
cf2c3c16 25044 /* Note that, according to the spec, a transparent include
0af92d60 25045 chain cannot call DW_MACRO_start_file. So, we can just
cf2c3c16
TT
25046 skip this opcode. */
25047 mac_ptr += offset_size;
25048 break;
25049
25050 case DW_MACINFO_vendor_ext:
25051 /* Only skip the data by MAC_PTR. */
25052 if (!section_is_gnu)
25053 {
25054 unsigned int bytes_read;
25055
25056 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
25057 mac_ptr += bytes_read;
25058 read_direct_string (abfd, mac_ptr, &bytes_read);
25059 mac_ptr += bytes_read;
25060 }
25061 /* FALLTHROUGH */
25062
25063 default:
25064 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 25065 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
25066 section);
25067 if (mac_ptr == NULL)
25068 return;
25069 break;
25070 }
132448f8 25071 DIAGNOSTIC_POP
cf2c3c16
TT
25072 } while (macinfo_type != 0 && current_file == NULL);
25073
25074 /* Second pass: Process all entries.
25075
25076 Use the AT_COMMAND_LINE flag to determine whether we are still processing
25077 command-line macro definitions/undefinitions. This flag is unset when we
25078 reach the first DW_MACINFO_start_file entry. */
25079
fc4007c9
TT
25080 htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
25081 htab_eq_pointer,
25082 NULL, xcalloc, xfree));
8fc3fc34 25083 mac_ptr = section->buffer + offset;
fc4007c9 25084 slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
d521ce57 25085 *slot = (void *) mac_ptr;
804d2729 25086 dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
43f3e411 25087 current_file, lh, section,
fc4007c9
TT
25088 section_is_gnu, 0, offset_size,
25089 include_hash.get ());
cf2c3c16
TT
25090}
25091
8e19ed76 25092/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 25093 if so return true else false. */
380bca97 25094
8e19ed76 25095static int
6e5a29e1 25096attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
25097{
25098 return (attr == NULL ? 0 :
25099 attr->form == DW_FORM_block1
25100 || attr->form == DW_FORM_block2
25101 || attr->form == DW_FORM_block4
2dc7f7b3
TT
25102 || attr->form == DW_FORM_block
25103 || attr->form == DW_FORM_exprloc);
8e19ed76 25104}
4c2df51b 25105
c6a0999f
JB
25106/* Return non-zero if ATTR's value is a section offset --- classes
25107 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
25108 You may use DW_UNSND (attr) to retrieve such offsets.
25109
25110 Section 7.5.4, "Attribute Encodings", explains that no attribute
25111 may have a value that belongs to more than one of these classes; it
25112 would be ambiguous if we did, because we use the same forms for all
25113 of them. */
380bca97 25114
3690dd37 25115static int
6e5a29e1 25116attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
25117{
25118 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
25119 || attr->form == DW_FORM_data8
25120 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
25121}
25122
3690dd37
JB
25123/* Return non-zero if ATTR's value falls in the 'constant' class, or
25124 zero otherwise. When this function returns true, you can apply
25125 dwarf2_get_attr_constant_value to it.
25126
25127 However, note that for some attributes you must check
25128 attr_form_is_section_offset before using this test. DW_FORM_data4
25129 and DW_FORM_data8 are members of both the constant class, and of
25130 the classes that contain offsets into other debug sections
25131 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
25132 that, if an attribute's can be either a constant or one of the
25133 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
0224619f
JK
25134 taken as section offsets, not constants.
25135
25136 DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
25137 cannot handle that. */
380bca97 25138
3690dd37 25139static int
6e5a29e1 25140attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
25141{
25142 switch (attr->form)
25143 {
25144 case DW_FORM_sdata:
25145 case DW_FORM_udata:
25146 case DW_FORM_data1:
25147 case DW_FORM_data2:
25148 case DW_FORM_data4:
25149 case DW_FORM_data8:
663c44ac 25150 case DW_FORM_implicit_const:
3690dd37
JB
25151 return 1;
25152 default:
25153 return 0;
25154 }
25155}
25156
7771576e
SA
25157
25158/* DW_ADDR is always stored already as sect_offset; despite for the forms
25159 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
25160
25161static int
6e5a29e1 25162attr_form_is_ref (const struct attribute *attr)
7771576e
SA
25163{
25164 switch (attr->form)
25165 {
25166 case DW_FORM_ref_addr:
25167 case DW_FORM_ref1:
25168 case DW_FORM_ref2:
25169 case DW_FORM_ref4:
25170 case DW_FORM_ref8:
25171 case DW_FORM_ref_udata:
25172 case DW_FORM_GNU_ref_alt:
25173 return 1;
25174 default:
25175 return 0;
25176 }
25177}
25178
3019eac3
DE
25179/* Return the .debug_loc section to use for CU.
25180 For DWO files use .debug_loc.dwo. */
25181
25182static struct dwarf2_section_info *
25183cu_debug_loc_section (struct dwarf2_cu *cu)
25184{
518817b3
SM
25185 struct dwarf2_per_objfile *dwarf2_per_objfile
25186 = cu->per_cu->dwarf2_per_objfile;
ed2dc618 25187
3019eac3 25188 if (cu->dwo_unit)
43988095
JK
25189 {
25190 struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
5f48f8f3 25191
43988095
JK
25192 return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
25193 }
25194 return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
25195 : &dwarf2_per_objfile->loc);
3019eac3
DE
25196}
25197
8cf6f0b1
TT
25198/* A helper function that fills in a dwarf2_loclist_baton. */
25199
25200static void
25201fill_in_loclist_baton (struct dwarf2_cu *cu,
25202 struct dwarf2_loclist_baton *baton,
ff39bb5e 25203 const struct attribute *attr)
8cf6f0b1 25204{
518817b3
SM
25205 struct dwarf2_per_objfile *dwarf2_per_objfile
25206 = cu->per_cu->dwarf2_per_objfile;
3019eac3
DE
25207 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25208
25209 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
25210
25211 baton->per_cu = cu->per_cu;
25212 gdb_assert (baton->per_cu);
25213 /* We don't know how long the location list is, but make sure we
25214 don't run off the edge of the section. */
3019eac3
DE
25215 baton->size = section->size - DW_UNSND (attr);
25216 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 25217 baton->base_address = cu->base_address;
f664829e 25218 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
25219}
25220
4c2df51b 25221static void
ff39bb5e 25222dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 25223 struct dwarf2_cu *cu, int is_block)
4c2df51b 25224{
518817b3
SM
25225 struct dwarf2_per_objfile *dwarf2_per_objfile
25226 = cu->per_cu->dwarf2_per_objfile;
bb5ed363 25227 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 25228 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 25229
3690dd37 25230 if (attr_form_is_section_offset (attr)
3019eac3 25231 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
25232 the section. If so, fall through to the complaint in the
25233 other branch. */
3019eac3 25234 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 25235 {
0d53c4c4 25236 struct dwarf2_loclist_baton *baton;
4c2df51b 25237
8d749320 25238 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
4c2df51b 25239
8cf6f0b1 25240 fill_in_loclist_baton (cu, baton, attr);
be391dca 25241
d00adf39 25242 if (cu->base_known == 0)
b98664d3 25243 complaint (_("Location list used without "
3e43a32a 25244 "specifying the CU base address."));
4c2df51b 25245
f1e6e072
TT
25246 SYMBOL_ACLASS_INDEX (sym) = (is_block
25247 ? dwarf2_loclist_block_index
25248 : dwarf2_loclist_index);
0d53c4c4
DJ
25249 SYMBOL_LOCATION_BATON (sym) = baton;
25250 }
25251 else
25252 {
25253 struct dwarf2_locexpr_baton *baton;
25254
8d749320 25255 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
ae0d2f24
UW
25256 baton->per_cu = cu->per_cu;
25257 gdb_assert (baton->per_cu);
0d53c4c4
DJ
25258
25259 if (attr_form_is_block (attr))
25260 {
25261 /* Note that we're just copying the block's data pointer
25262 here, not the actual data. We're still pointing into the
6502dd73
DJ
25263 info_buffer for SYM's objfile; right now we never release
25264 that buffer, but when we do clean up properly this may
25265 need to change. */
0d53c4c4
DJ
25266 baton->size = DW_BLOCK (attr)->size;
25267 baton->data = DW_BLOCK (attr)->data;
25268 }
25269 else
25270 {
25271 dwarf2_invalid_attrib_class_complaint ("location description",
25272 SYMBOL_NATURAL_NAME (sym));
25273 baton->size = 0;
0d53c4c4 25274 }
6e70227d 25275
f1e6e072
TT
25276 SYMBOL_ACLASS_INDEX (sym) = (is_block
25277 ? dwarf2_locexpr_block_index
25278 : dwarf2_locexpr_index);
0d53c4c4
DJ
25279 SYMBOL_LOCATION_BATON (sym) = baton;
25280 }
4c2df51b 25281}
6502dd73 25282
9aa1f1e3
TT
25283/* Return the OBJFILE associated with the compilation unit CU. If CU
25284 came from a separate debuginfo file, then the master objfile is
25285 returned. */
ae0d2f24
UW
25286
25287struct objfile *
25288dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25289{
e3b94546 25290 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
ae0d2f24
UW
25291
25292 /* Return the master objfile, so that we can report and look up the
25293 correct file containing this variable. */
25294 if (objfile->separate_debug_objfile_backlink)
25295 objfile = objfile->separate_debug_objfile_backlink;
25296
25297 return objfile;
25298}
25299
96408a79
SA
25300/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25301 (CU_HEADERP is unused in such case) or prepare a temporary copy at
25302 CU_HEADERP first. */
25303
25304static const struct comp_unit_head *
25305per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25306 struct dwarf2_per_cu_data *per_cu)
25307{
d521ce57 25308 const gdb_byte *info_ptr;
96408a79
SA
25309
25310 if (per_cu->cu)
25311 return &per_cu->cu->header;
25312
9c541725 25313 info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
96408a79
SA
25314
25315 memset (cu_headerp, 0, sizeof (*cu_headerp));
43988095
JK
25316 read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25317 rcuh_kind::COMPILE);
96408a79
SA
25318
25319 return cu_headerp;
25320}
25321
ae0d2f24
UW
25322/* Return the address size given in the compilation unit header for CU. */
25323
98714339 25324int
ae0d2f24
UW
25325dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25326{
96408a79
SA
25327 struct comp_unit_head cu_header_local;
25328 const struct comp_unit_head *cu_headerp;
c471e790 25329
96408a79
SA
25330 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25331
25332 return cu_headerp->addr_size;
ae0d2f24
UW
25333}
25334
9eae7c52
TT
25335/* Return the offset size given in the compilation unit header for CU. */
25336
25337int
25338dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25339{
96408a79
SA
25340 struct comp_unit_head cu_header_local;
25341 const struct comp_unit_head *cu_headerp;
9c6c53f7 25342
96408a79
SA
25343 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25344
25345 return cu_headerp->offset_size;
25346}
25347
25348/* See its dwarf2loc.h declaration. */
25349
25350int
25351dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25352{
25353 struct comp_unit_head cu_header_local;
25354 const struct comp_unit_head *cu_headerp;
25355
25356 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25357
25358 if (cu_headerp->version == 2)
25359 return cu_headerp->addr_size;
25360 else
25361 return cu_headerp->offset_size;
181cebd4
JK
25362}
25363
9aa1f1e3
TT
25364/* Return the text offset of the CU. The returned offset comes from
25365 this CU's objfile. If this objfile came from a separate debuginfo
25366 file, then the offset may be different from the corresponding
25367 offset in the parent objfile. */
25368
25369CORE_ADDR
25370dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25371{
e3b94546 25372 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
9aa1f1e3
TT
25373
25374 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25375}
25376
9a49df9d
AB
25377/* Return a type that is a generic pointer type, the size of which matches
25378 the address size given in the compilation unit header for PER_CU. */
25379static struct type *
25380dwarf2_per_cu_addr_type (struct dwarf2_per_cu_data *per_cu)
25381{
25382 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25383 struct type *void_type = objfile_type (objfile)->builtin_void;
25384 struct type *addr_type = lookup_pointer_type (void_type);
25385 int addr_size = dwarf2_per_cu_addr_size (per_cu);
25386
25387 if (TYPE_LENGTH (addr_type) == addr_size)
25388 return addr_type;
25389
25390 addr_type
25391 = dwarf2_per_cu_addr_sized_int_type (per_cu, TYPE_UNSIGNED (addr_type));
25392 return addr_type;
25393}
25394
43988095
JK
25395/* Return DWARF version number of PER_CU. */
25396
25397short
25398dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25399{
25400 return per_cu->dwarf_version;
25401}
25402
348e048f
DE
25403/* Locate the .debug_info compilation unit from CU's objfile which contains
25404 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
25405
25406static struct dwarf2_per_cu_data *
9c541725 25407dwarf2_find_containing_comp_unit (sect_offset sect_off,
36586728 25408 unsigned int offset_in_dwz,
ed2dc618 25409 struct dwarf2_per_objfile *dwarf2_per_objfile)
ae038cb0
DJ
25410{
25411 struct dwarf2_per_cu_data *this_cu;
25412 int low, high;
25413
ae038cb0 25414 low = 0;
b76e467d 25415 high = dwarf2_per_objfile->all_comp_units.size () - 1;
ae038cb0
DJ
25416 while (high > low)
25417 {
36586728 25418 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 25419 int mid = low + (high - low) / 2;
9a619af0 25420
36586728 25421 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
36586728 25422 if (mid_cu->is_dwz > offset_in_dwz
81fbbaf9 25423 || (mid_cu->is_dwz == offset_in_dwz
45b8ae0c 25424 && mid_cu->sect_off + mid_cu->length >= sect_off))
ae038cb0
DJ
25425 high = mid;
25426 else
25427 low = mid + 1;
25428 }
25429 gdb_assert (low == high);
36586728 25430 this_cu = dwarf2_per_objfile->all_comp_units[low];
45b8ae0c 25431 if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
ae038cb0 25432 {
36586728 25433 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8 25434 error (_("Dwarf Error: could not find partial DIE containing "
9d8780f0
SM
25435 "offset %s [in module %s]"),
25436 sect_offset_str (sect_off),
ed2dc618 25437 bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
10b3939b 25438
9c541725
PA
25439 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25440 <= sect_off);
ae038cb0
DJ
25441 return dwarf2_per_objfile->all_comp_units[low-1];
25442 }
25443 else
25444 {
b76e467d 25445 if (low == dwarf2_per_objfile->all_comp_units.size () - 1
9c541725 25446 && sect_off >= this_cu->sect_off + this_cu->length)
9d8780f0 25447 error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
9c541725 25448 gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
ae038cb0
DJ
25449 return this_cu;
25450 }
25451}
25452
23745b47 25453/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 25454
fcd3b13d
SM
25455dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25456 : per_cu (per_cu_),
9068261f
AB
25457 mark (false),
25458 has_loclist (false),
25459 checked_producer (false),
25460 producer_is_gxx_lt_4_6 (false),
25461 producer_is_gcc_lt_4_3 (false),
eb77c9df 25462 producer_is_icc (false),
9068261f 25463 producer_is_icc_lt_14 (false),
c258c396 25464 producer_is_codewarrior (false),
9068261f 25465 processing_has_namespace_info (false)
93311388 25466{
fcd3b13d
SM
25467 per_cu->cu = this;
25468}
25469
25470/* Destroy a dwarf2_cu. */
25471
25472dwarf2_cu::~dwarf2_cu ()
25473{
25474 per_cu->cu = NULL;
9816fde3
JK
25475}
25476
25477/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
25478
25479static void
95554aad
TT
25480prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25481 enum language pretend_language)
9816fde3
JK
25482{
25483 struct attribute *attr;
25484
25485 /* Set the language we're debugging. */
25486 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25487 if (attr)
25488 set_cu_language (DW_UNSND (attr), cu);
25489 else
9cded63f 25490 {
95554aad 25491 cu->language = pretend_language;
9cded63f
TT
25492 cu->language_defn = language_def (cu->language);
25493 }
dee91e82 25494
7d45c7c3 25495 cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
93311388
DE
25496}
25497
ae038cb0
DJ
25498/* Increase the age counter on each cached compilation unit, and free
25499 any that are too old. */
25500
25501static void
ed2dc618 25502age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
ae038cb0
DJ
25503{
25504 struct dwarf2_per_cu_data *per_cu, **last_chain;
25505
25506 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25507 per_cu = dwarf2_per_objfile->read_in_chain;
25508 while (per_cu != NULL)
25509 {
25510 per_cu->cu->last_used ++;
b4f54984 25511 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
25512 dwarf2_mark (per_cu->cu);
25513 per_cu = per_cu->cu->read_in_chain;
25514 }
25515
25516 per_cu = dwarf2_per_objfile->read_in_chain;
25517 last_chain = &dwarf2_per_objfile->read_in_chain;
25518 while (per_cu != NULL)
25519 {
25520 struct dwarf2_per_cu_data *next_cu;
25521
25522 next_cu = per_cu->cu->read_in_chain;
25523
25524 if (!per_cu->cu->mark)
25525 {
fcd3b13d 25526 delete per_cu->cu;
ae038cb0
DJ
25527 *last_chain = next_cu;
25528 }
25529 else
25530 last_chain = &per_cu->cu->read_in_chain;
25531
25532 per_cu = next_cu;
25533 }
25534}
25535
25536/* Remove a single compilation unit from the cache. */
25537
25538static void
dee91e82 25539free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
25540{
25541 struct dwarf2_per_cu_data *per_cu, **last_chain;
ed2dc618
SM
25542 struct dwarf2_per_objfile *dwarf2_per_objfile
25543 = target_per_cu->dwarf2_per_objfile;
ae038cb0
DJ
25544
25545 per_cu = dwarf2_per_objfile->read_in_chain;
25546 last_chain = &dwarf2_per_objfile->read_in_chain;
25547 while (per_cu != NULL)
25548 {
25549 struct dwarf2_per_cu_data *next_cu;
25550
25551 next_cu = per_cu->cu->read_in_chain;
25552
dee91e82 25553 if (per_cu == target_per_cu)
ae038cb0 25554 {
fcd3b13d 25555 delete per_cu->cu;
dee91e82 25556 per_cu->cu = NULL;
ae038cb0
DJ
25557 *last_chain = next_cu;
25558 break;
25559 }
25560 else
25561 last_chain = &per_cu->cu->read_in_chain;
25562
25563 per_cu = next_cu;
25564 }
25565}
25566
dee91e82
DE
25567/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25568 We store these in a hash table separate from the DIEs, and preserve them
25569 when the DIEs are flushed out of cache.
25570
25571 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 25572 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
25573 or the type may come from a DWO file. Furthermore, while it's more logical
25574 to use per_cu->section+offset, with Fission the section with the data is in
25575 the DWO file but we don't know that section at the point we need it.
25576 We have to use something in dwarf2_per_cu_data (or the pointer to it)
25577 because we can enter the lookup routine, get_die_type_at_offset, from
25578 outside this file, and thus won't necessarily have PER_CU->cu.
25579 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 25580
dee91e82 25581struct dwarf2_per_cu_offset_and_type
1c379e20 25582{
dee91e82 25583 const struct dwarf2_per_cu_data *per_cu;
9c541725 25584 sect_offset sect_off;
1c379e20
DJ
25585 struct type *type;
25586};
25587
dee91e82 25588/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
25589
25590static hashval_t
dee91e82 25591per_cu_offset_and_type_hash (const void *item)
1c379e20 25592{
9a3c8263
SM
25593 const struct dwarf2_per_cu_offset_and_type *ofs
25594 = (const struct dwarf2_per_cu_offset_and_type *) item;
9a619af0 25595
9c541725 25596 return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
1c379e20
DJ
25597}
25598
dee91e82 25599/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
25600
25601static int
dee91e82 25602per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 25603{
9a3c8263
SM
25604 const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25605 = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25606 const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25607 = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
9a619af0 25608
dee91e82 25609 return (ofs_lhs->per_cu == ofs_rhs->per_cu
9c541725 25610 && ofs_lhs->sect_off == ofs_rhs->sect_off);
1c379e20
DJ
25611}
25612
25613/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
25614 table if necessary. For convenience, return TYPE.
25615
25616 The DIEs reading must have careful ordering to:
25617 * Not cause infite loops trying to read in DIEs as a prerequisite for
25618 reading current DIE.
25619 * Not trying to dereference contents of still incompletely read in types
25620 while reading in other DIEs.
25621 * Enable referencing still incompletely read in types just by a pointer to
25622 the type without accessing its fields.
25623
25624 Therefore caller should follow these rules:
25625 * Try to fetch any prerequisite types we may need to build this DIE type
25626 before building the type and calling set_die_type.
e71ec853 25627 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
25628 possible before fetching more types to complete the current type.
25629 * Make the type as complete as possible before fetching more types. */
1c379e20 25630
f792889a 25631static struct type *
1c379e20
DJ
25632set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25633{
518817b3
SM
25634 struct dwarf2_per_objfile *dwarf2_per_objfile
25635 = cu->per_cu->dwarf2_per_objfile;
dee91e82 25636 struct dwarf2_per_cu_offset_and_type **slot, ofs;
ed2dc618 25637 struct objfile *objfile = dwarf2_per_objfile->objfile;
3cdcd0ce
JB
25638 struct attribute *attr;
25639 struct dynamic_prop prop;
1c379e20 25640
b4ba55a1
JB
25641 /* For Ada types, make sure that the gnat-specific data is always
25642 initialized (if not already set). There are a few types where
25643 we should not be doing so, because the type-specific area is
25644 already used to hold some other piece of info (eg: TYPE_CODE_FLT
25645 where the type-specific area is used to store the floatformat).
25646 But this is not a problem, because the gnat-specific information
25647 is actually not needed for these types. */
25648 if (need_gnat_info (cu)
25649 && TYPE_CODE (type) != TYPE_CODE_FUNC
25650 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
25651 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25652 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25653 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
25654 && !HAVE_GNAT_AUX_INFO (type))
25655 INIT_GNAT_SPECIFIC (type);
25656
3f2f83dd
KB
25657 /* Read DW_AT_allocated and set in type. */
25658 attr = dwarf2_attr (die, DW_AT_allocated, cu);
25659 if (attr_form_is_block (attr))
25660 {
9a49df9d
AB
25661 struct type *prop_type
25662 = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
25663 if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
50a82047 25664 add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
3f2f83dd
KB
25665 }
25666 else if (attr != NULL)
25667 {
b98664d3 25668 complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
9c541725 25669 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
9d8780f0 25670 sect_offset_str (die->sect_off));
3f2f83dd
KB
25671 }
25672
25673 /* Read DW_AT_associated and set in type. */
25674 attr = dwarf2_attr (die, DW_AT_associated, cu);
25675 if (attr_form_is_block (attr))
25676 {
9a49df9d
AB
25677 struct type *prop_type
25678 = dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
25679 if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
50a82047 25680 add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
3f2f83dd
KB
25681 }
25682 else if (attr != NULL)
25683 {
b98664d3 25684 complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
9c541725 25685 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
9d8780f0 25686 sect_offset_str (die->sect_off));
3f2f83dd
KB
25687 }
25688
3cdcd0ce
JB
25689 /* Read DW_AT_data_location and set in type. */
25690 attr = dwarf2_attr (die, DW_AT_data_location, cu);
9a49df9d
AB
25691 if (attr_to_dynamic_prop (attr, die, cu, &prop,
25692 dwarf2_per_cu_addr_type (cu->per_cu)))
50a82047 25693 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
3cdcd0ce 25694
dee91e82 25695 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 25696 {
dee91e82
DE
25697 dwarf2_per_objfile->die_type_hash =
25698 htab_create_alloc_ex (127,
25699 per_cu_offset_and_type_hash,
25700 per_cu_offset_and_type_eq,
25701 NULL,
25702 &objfile->objfile_obstack,
25703 hashtab_obstack_allocate,
25704 dummy_obstack_deallocate);
f792889a 25705 }
1c379e20 25706
dee91e82 25707 ofs.per_cu = cu->per_cu;
9c541725 25708 ofs.sect_off = die->sect_off;
1c379e20 25709 ofs.type = type;
dee91e82
DE
25710 slot = (struct dwarf2_per_cu_offset_and_type **)
25711 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57 25712 if (*slot)
b98664d3 25713 complaint (_("A problem internal to GDB: DIE %s has type already set"),
9d8780f0 25714 sect_offset_str (die->sect_off));
8d749320
SM
25715 *slot = XOBNEW (&objfile->objfile_obstack,
25716 struct dwarf2_per_cu_offset_and_type);
1c379e20 25717 **slot = ofs;
f792889a 25718 return type;
1c379e20
DJ
25719}
25720
9c541725 25721/* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
02142a6c 25722 or return NULL if the die does not have a saved type. */
1c379e20
DJ
25723
25724static struct type *
9c541725 25725get_die_type_at_offset (sect_offset sect_off,
673bfd45 25726 struct dwarf2_per_cu_data *per_cu)
1c379e20 25727{
dee91e82 25728 struct dwarf2_per_cu_offset_and_type *slot, ofs;
ed2dc618 25729 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
f792889a 25730
dee91e82 25731 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 25732 return NULL;
1c379e20 25733
dee91e82 25734 ofs.per_cu = per_cu;
9c541725 25735 ofs.sect_off = sect_off;
9a3c8263
SM
25736 slot = ((struct dwarf2_per_cu_offset_and_type *)
25737 htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
1c379e20
DJ
25738 if (slot)
25739 return slot->type;
25740 else
25741 return NULL;
25742}
25743
02142a6c 25744/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
25745 or return NULL if DIE does not have a saved type. */
25746
25747static struct type *
25748get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25749{
9c541725 25750 return get_die_type_at_offset (die->sect_off, cu->per_cu);
673bfd45
DE
25751}
25752
10b3939b
DJ
25753/* Add a dependence relationship from CU to REF_PER_CU. */
25754
25755static void
25756dwarf2_add_dependence (struct dwarf2_cu *cu,
25757 struct dwarf2_per_cu_data *ref_per_cu)
25758{
25759 void **slot;
25760
25761 if (cu->dependencies == NULL)
25762 cu->dependencies
25763 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25764 NULL, &cu->comp_unit_obstack,
25765 hashtab_obstack_allocate,
25766 dummy_obstack_deallocate);
25767
25768 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25769 if (*slot == NULL)
25770 *slot = ref_per_cu;
25771}
1c379e20 25772
f504f079
DE
25773/* Subroutine of dwarf2_mark to pass to htab_traverse.
25774 Set the mark field in every compilation unit in the
ae038cb0
DJ
25775 cache that we must keep because we are keeping CU. */
25776
10b3939b
DJ
25777static int
25778dwarf2_mark_helper (void **slot, void *data)
25779{
25780 struct dwarf2_per_cu_data *per_cu;
25781
25782 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
25783
25784 /* cu->dependencies references may not yet have been ever read if QUIT aborts
25785 reading of the chain. As such dependencies remain valid it is not much
25786 useful to track and undo them during QUIT cleanups. */
25787 if (per_cu->cu == NULL)
25788 return 1;
25789
10b3939b
DJ
25790 if (per_cu->cu->mark)
25791 return 1;
9068261f 25792 per_cu->cu->mark = true;
10b3939b
DJ
25793
25794 if (per_cu->cu->dependencies != NULL)
25795 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25796
25797 return 1;
25798}
25799
f504f079
DE
25800/* Set the mark field in CU and in every other compilation unit in the
25801 cache that we must keep because we are keeping CU. */
25802
ae038cb0
DJ
25803static void
25804dwarf2_mark (struct dwarf2_cu *cu)
25805{
25806 if (cu->mark)
25807 return;
9068261f 25808 cu->mark = true;
10b3939b
DJ
25809 if (cu->dependencies != NULL)
25810 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
25811}
25812
25813static void
25814dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25815{
25816 while (per_cu)
25817 {
9068261f 25818 per_cu->cu->mark = false;
ae038cb0
DJ
25819 per_cu = per_cu->cu->read_in_chain;
25820 }
72bf9492
DJ
25821}
25822
72bf9492
DJ
25823/* Trivial hash function for partial_die_info: the hash value of a DIE
25824 is its offset in .debug_info for this objfile. */
25825
25826static hashval_t
25827partial_die_hash (const void *item)
25828{
9a3c8263
SM
25829 const struct partial_die_info *part_die
25830 = (const struct partial_die_info *) item;
9a619af0 25831
9c541725 25832 return to_underlying (part_die->sect_off);
72bf9492
DJ
25833}
25834
25835/* Trivial comparison function for partial_die_info structures: two DIEs
25836 are equal if they have the same offset. */
25837
25838static int
25839partial_die_eq (const void *item_lhs, const void *item_rhs)
25840{
9a3c8263
SM
25841 const struct partial_die_info *part_die_lhs
25842 = (const struct partial_die_info *) item_lhs;
25843 const struct partial_die_info *part_die_rhs
25844 = (const struct partial_die_info *) item_rhs;
9a619af0 25845
9c541725 25846 return part_die_lhs->sect_off == part_die_rhs->sect_off;
72bf9492
DJ
25847}
25848
3c3bb058
AB
25849struct cmd_list_element *set_dwarf_cmdlist;
25850struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
25851
25852static void
981a3fb3 25853set_dwarf_cmd (const char *args, int from_tty)
ae038cb0 25854{
b4f54984 25855 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 25856 gdb_stdout);
ae038cb0
DJ
25857}
25858
25859static void
981a3fb3 25860show_dwarf_cmd (const char *args, int from_tty)
6e70227d 25861{
b4f54984 25862 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
25863}
25864
491144b5 25865bool dwarf_always_disassemble;
437afbb8 25866
437afbb8 25867static void
cd4fb1b2
SM
25868show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25869 struct cmd_list_element *c, const char *value)
9291a0cd 25870{
cd4fb1b2
SM
25871 fprintf_filtered (file,
25872 _("Whether to always disassemble "
25873 "DWARF expressions is %s.\n"),
25874 value);
9291a0cd
TT
25875}
25876
9291a0cd 25877static void
cd4fb1b2
SM
25878show_check_physname (struct ui_file *file, int from_tty,
25879 struct cmd_list_element *c, const char *value)
9291a0cd 25880{
cd4fb1b2
SM
25881 fprintf_filtered (file,
25882 _("Whether to check \"physname\" is %s.\n"),
25883 value);
9291a0cd
TT
25884}
25885
cd4fb1b2
SM
25886void
25887_initialize_dwarf2_read (void)
9291a0cd 25888{
cd4fb1b2
SM
25889 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25890Set DWARF specific variables.\n\
590042fc 25891Configure DWARF variables such as the cache size."),
cd4fb1b2
SM
25892 &set_dwarf_cmdlist, "maintenance set dwarf ",
25893 0/*allow-unknown*/, &maintenance_set_cmdlist);
156942c7 25894
cd4fb1b2 25895 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
590042fc
PW
25896Show DWARF specific variables.\n\
25897Show DWARF variables such as the cache size."),
cd4fb1b2
SM
25898 &show_dwarf_cmdlist, "maintenance show dwarf ",
25899 0/*allow-unknown*/, &maintenance_show_cmdlist);
156942c7 25900
cd4fb1b2
SM
25901 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25902 &dwarf_max_cache_age, _("\
25903Set the upper bound on the age of cached DWARF compilation units."), _("\
25904Show the upper bound on the age of cached DWARF compilation units."), _("\
25905A higher limit means that cached compilation units will be stored\n\
25906in memory longer, and more total memory will be used. Zero disables\n\
25907caching, which can slow down startup."),
25908 NULL,
25909 show_dwarf_max_cache_age,
25910 &set_dwarf_cmdlist,
25911 &show_dwarf_cmdlist);
156942c7 25912
cd4fb1b2
SM
25913 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25914 &dwarf_always_disassemble, _("\
25915Set whether `info address' always disassembles DWARF expressions."), _("\
25916Show whether `info address' always disassembles DWARF expressions."), _("\
25917When enabled, DWARF expressions are always printed in an assembly-like\n\
25918syntax. When disabled, expressions will be printed in a more\n\
25919conversational style, when possible."),
25920 NULL,
25921 show_dwarf_always_disassemble,
25922 &set_dwarf_cmdlist,
25923 &show_dwarf_cmdlist);
9291a0cd 25924
cd4fb1b2
SM
25925 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25926Set debugging of the DWARF reader."), _("\
25927Show debugging of the DWARF reader."), _("\
25928When enabled (non-zero), debugging messages are printed during DWARF\n\
25929reading and symtab expansion. A value of 1 (one) provides basic\n\
25930information. A value greater than 1 provides more verbose information."),
25931 NULL,
25932 NULL,
25933 &setdebuglist, &showdebuglist);
9291a0cd 25934
cd4fb1b2
SM
25935 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25936Set debugging of the DWARF DIE reader."), _("\
25937Show debugging of the DWARF DIE reader."), _("\
25938When enabled (non-zero), DIEs are dumped after they are read in.\n\
25939The value is the maximum depth to print."),
25940 NULL,
25941 NULL,
25942 &setdebuglist, &showdebuglist);
9291a0cd 25943
cd4fb1b2
SM
25944 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25945Set debugging of the dwarf line reader."), _("\
25946Show debugging of the dwarf line reader."), _("\
25947When enabled (non-zero), line number entries are dumped as they are read in.\n\
25948A value of 1 (one) provides basic information.\n\
25949A value greater than 1 provides more verbose information."),
25950 NULL,
25951 NULL,
25952 &setdebuglist, &showdebuglist);
437afbb8 25953
cd4fb1b2
SM
25954 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25955Set cross-checking of \"physname\" code against demangler."), _("\
25956Show cross-checking of \"physname\" code against demangler."), _("\
25957When enabled, GDB's internal \"physname\" code is checked against\n\
25958the demangler."),
25959 NULL, show_check_physname,
25960 &setdebuglist, &showdebuglist);
900e11f9 25961
e615022a
DE
25962 add_setshow_boolean_cmd ("use-deprecated-index-sections",
25963 no_class, &use_deprecated_index_sections, _("\
25964Set whether to use deprecated gdb_index sections."), _("\
25965Show whether to use deprecated gdb_index sections."), _("\
25966When enabled, deprecated .gdb_index sections are used anyway.\n\
25967Normally they are ignored either because of a missing feature or\n\
25968performance issue.\n\
25969Warning: This option must be enabled before gdb reads the file."),
25970 NULL,
25971 NULL,
25972 &setlist, &showlist);
25973
f1e6e072
TT
25974 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25975 &dwarf2_locexpr_funcs);
25976 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25977 &dwarf2_loclist_funcs);
25978
25979 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25980 &dwarf2_block_frame_base_locexpr_funcs);
25981 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25982 &dwarf2_block_frame_base_loclist_funcs);
c62446b1
PA
25983
25984#if GDB_SELF_TEST
25985 selftests::register_test ("dw2_expand_symtabs_matching",
25986 selftests::dw2_expand_symtabs_matching::run_test);
25987#endif
6502dd73 25988}
This page took 4.886744 seconds and 4 git commands to generate.