1 /* DWARF 2 debugging format support for GDB.
3 Copyright (C) 1994-2021 Free Software Foundation, Inc.
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
12 This file is part of GDB.
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
16 the Free Software Foundation; either version 3 of the License, or
17 (at your option) any later version.
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.
24 You should have received a copy of the GNU General Public License
25 along with this program. If not, see <http://www.gnu.org/licenses/>. */
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. */
32 #include "dwarf2/read.h"
33 #include "dwarf2/abbrev.h"
34 #include "dwarf2/attribute.h"
35 #include "dwarf2/comp-unit.h"
36 #include "dwarf2/index-cache.h"
37 #include "dwarf2/index-common.h"
38 #include "dwarf2/leb.h"
39 #include "dwarf2/line-header.h"
40 #include "dwarf2/dwz.h"
41 #include "dwarf2/macro.h"
42 #include "dwarf2/die.h"
43 #include "dwarf2/sect-names.h"
44 #include "dwarf2/stringify.h"
45 #include "dwarf2/public.h"
54 #include "gdb-demangle.h"
55 #include "filenames.h" /* for DOSish file names */
57 #include "complaints.h"
58 #include "dwarf2/expr.h"
59 #include "dwarf2/loc.h"
60 #include "cp-support.h"
66 #include "typeprint.h"
71 #include "gdbcore.h" /* for gnutarget */
72 #include "gdb/gdb-index.h"
77 #include "namespace.h"
78 #include "gdbsupport/function-view.h"
79 #include "gdbsupport/gdb_optional.h"
80 #include "gdbsupport/underlying.h"
81 #include "gdbsupport/hash_enum.h"
82 #include "filename-seen-cache.h"
86 #include <unordered_map>
87 #include "gdbsupport/selftest.h"
88 #include "rust-lang.h"
89 #include "gdbsupport/pathstuff.h"
90 #include "count-one-bits.h"
92 /* When == 1, print basic high level tracing messages.
93 When > 1, be more verbose.
94 This is in contrast to the low level DIE reading of dwarf_die_debug. */
95 static unsigned int dwarf_read_debug = 0;
97 /* Print a "dwarf-read" debug statement if dwarf_read_debug is >= 1. */
99 #define dwarf_read_debug_printf(fmt, ...) \
100 debug_prefixed_printf_cond (dwarf_read_debug >= 1, "dwarf-read", fmt, \
103 /* Print a "dwarf-read" debug statement if dwarf_read_debug is >= 2. */
105 #define dwarf_read_debug_printf_v(fmt, ...) \
106 debug_prefixed_printf_cond (dwarf_read_debug >= 2, "dwarf-read", fmt, \
109 /* When non-zero, dump DIEs after they are read in. */
110 static unsigned int dwarf_die_debug = 0;
112 /* When non-zero, dump line number entries as they are read in. */
113 unsigned int dwarf_line_debug = 0;
115 /* When true, cross-check physname against demangler. */
116 static bool check_physname = false;
118 /* When true, do not reject deprecated .gdb_index sections. */
119 static bool use_deprecated_index_sections = false;
121 /* This is used to store the data that is always per objfile. */
122 static const objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
124 /* These are used to store the dwarf2_per_bfd objects.
126 objfiles having the same BFD, which doesn't require relocations, are going to
127 share a dwarf2_per_bfd object, which is held in the _bfd_data_key version.
129 Other objfiles are not going to share a dwarf2_per_bfd with any other
130 objfiles, so they'll have their own version kept in the _objfile_data_key
132 static const struct bfd_key<dwarf2_per_bfd> dwarf2_per_bfd_bfd_data_key;
133 static const struct objfile_key<dwarf2_per_bfd> dwarf2_per_bfd_objfile_data_key;
135 /* The "aclass" indices for various kinds of computed DWARF symbols. */
137 static int dwarf2_locexpr_index;
138 static int dwarf2_loclist_index;
139 static int dwarf2_locexpr_block_index;
140 static int dwarf2_loclist_block_index;
142 /* Size of .debug_loclists section header for 32-bit DWARF format. */
143 #define LOCLIST_HEADER_SIZE32 12
145 /* Size of .debug_loclists section header for 64-bit DWARF format. */
146 #define LOCLIST_HEADER_SIZE64 20
148 /* Size of .debug_rnglists section header for 32-bit DWARF format. */
149 #define RNGLIST_HEADER_SIZE32 12
151 /* Size of .debug_rnglists section header for 64-bit DWARF format. */
152 #define RNGLIST_HEADER_SIZE64 20
154 /* An index into a (C++) symbol name component in a symbol name as
155 recorded in the mapped_index's symbol table. For each C++ symbol
156 in the symbol table, we record one entry for the start of each
157 component in the symbol in a table of name components, and then
158 sort the table, in order to be able to binary search symbol names,
159 ignoring leading namespaces, both completion and regular look up.
160 For example, for symbol "A::B::C", we'll have an entry that points
161 to "A::B::C", another that points to "B::C", and another for "C".
162 Note that function symbols in GDB index have no parameter
163 information, just the function/method names. You can convert a
164 name_component to a "const char *" using the
165 'mapped_index::symbol_name_at(offset_type)' method. */
167 struct name_component
169 /* Offset in the symbol name where the component starts. Stored as
170 a (32-bit) offset instead of a pointer to save memory and improve
171 locality on 64-bit architectures. */
172 offset_type name_offset;
174 /* The symbol's index in the symbol and constant pool tables of a
179 /* Base class containing bits shared by both .gdb_index and
180 .debug_name indexes. */
182 struct mapped_index_base
184 mapped_index_base () = default;
185 DISABLE_COPY_AND_ASSIGN (mapped_index_base);
187 /* The name_component table (a sorted vector). See name_component's
188 description above. */
189 std::vector<name_component> name_components;
191 /* How NAME_COMPONENTS is sorted. */
192 enum case_sensitivity name_components_casing;
194 /* Return the number of names in the symbol table. */
195 virtual size_t symbol_name_count () const = 0;
197 /* Get the name of the symbol at IDX in the symbol table. */
198 virtual const char *symbol_name_at
199 (offset_type idx, dwarf2_per_objfile *per_objfile) const = 0;
201 /* Return whether the name at IDX in the symbol table should be
203 virtual bool symbol_name_slot_invalid (offset_type idx) const
208 /* Build the symbol name component sorted vector, if we haven't
210 void build_name_components (dwarf2_per_objfile *per_objfile);
212 /* Returns the lower (inclusive) and upper (exclusive) bounds of the
213 possible matches for LN_NO_PARAMS in the name component
215 std::pair<std::vector<name_component>::const_iterator,
216 std::vector<name_component>::const_iterator>
217 find_name_components_bounds (const lookup_name_info &ln_no_params,
219 dwarf2_per_objfile *per_objfile) const;
221 /* Prevent deleting/destroying via a base class pointer. */
223 ~mapped_index_base() = default;
226 /* A description of the mapped index. The file format is described in
227 a comment by the code that writes the index. */
228 struct mapped_index final : public mapped_index_base
230 /* A slot/bucket in the symbol table hash. */
231 struct symbol_table_slot
233 const offset_type name;
234 const offset_type vec;
237 /* Index data format version. */
240 /* The address table data. */
241 gdb::array_view<const gdb_byte> address_table;
243 /* The symbol table, implemented as a hash table. */
244 gdb::array_view<symbol_table_slot> symbol_table;
246 /* A pointer to the constant pool. */
247 const char *constant_pool = nullptr;
249 bool symbol_name_slot_invalid (offset_type idx) const override
251 const auto &bucket = this->symbol_table[idx];
252 return bucket.name == 0 && bucket.vec == 0;
255 /* Convenience method to get at the name of the symbol at IDX in the
257 const char *symbol_name_at
258 (offset_type idx, dwarf2_per_objfile *per_objfile) const override
259 { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
261 size_t symbol_name_count () const override
262 { return this->symbol_table.size (); }
265 /* A description of the mapped .debug_names.
266 Uninitialized map has CU_COUNT 0. */
267 struct mapped_debug_names final : public mapped_index_base
269 bfd_endian dwarf5_byte_order;
270 bool dwarf5_is_dwarf64;
271 bool augmentation_is_gdb;
273 uint32_t cu_count = 0;
274 uint32_t tu_count, bucket_count, name_count;
275 const gdb_byte *cu_table_reordered, *tu_table_reordered;
276 const uint32_t *bucket_table_reordered, *hash_table_reordered;
277 const gdb_byte *name_table_string_offs_reordered;
278 const gdb_byte *name_table_entry_offs_reordered;
279 const gdb_byte *entry_pool;
286 /* Attribute name DW_IDX_*. */
289 /* Attribute form DW_FORM_*. */
292 /* Value if FORM is DW_FORM_implicit_const. */
293 LONGEST implicit_const;
295 std::vector<attr> attr_vec;
298 std::unordered_map<ULONGEST, index_val> abbrev_map;
300 const char *namei_to_name
301 (uint32_t namei, dwarf2_per_objfile *per_objfile) const;
303 /* Implementation of the mapped_index_base virtual interface, for
304 the name_components cache. */
306 const char *symbol_name_at
307 (offset_type idx, dwarf2_per_objfile *per_objfile) const override
308 { return namei_to_name (idx, per_objfile); }
310 size_t symbol_name_count () const override
311 { return this->name_count; }
314 /* See dwarf2read.h. */
317 get_dwarf2_per_objfile (struct objfile *objfile)
319 return dwarf2_objfile_data_key.get (objfile);
322 /* Default names of the debugging sections. */
324 /* Note that if the debugging section has been compressed, it might
325 have a name like .zdebug_info. */
327 const struct dwarf2_debug_sections dwarf2_elf_names =
329 { ".debug_info", ".zdebug_info" },
330 { ".debug_abbrev", ".zdebug_abbrev" },
331 { ".debug_line", ".zdebug_line" },
332 { ".debug_loc", ".zdebug_loc" },
333 { ".debug_loclists", ".zdebug_loclists" },
334 { ".debug_macinfo", ".zdebug_macinfo" },
335 { ".debug_macro", ".zdebug_macro" },
336 { ".debug_str", ".zdebug_str" },
337 { ".debug_str_offsets", ".zdebug_str_offsets" },
338 { ".debug_line_str", ".zdebug_line_str" },
339 { ".debug_ranges", ".zdebug_ranges" },
340 { ".debug_rnglists", ".zdebug_rnglists" },
341 { ".debug_types", ".zdebug_types" },
342 { ".debug_addr", ".zdebug_addr" },
343 { ".debug_frame", ".zdebug_frame" },
344 { ".eh_frame", NULL },
345 { ".gdb_index", ".zgdb_index" },
346 { ".debug_names", ".zdebug_names" },
347 { ".debug_aranges", ".zdebug_aranges" },
351 /* List of DWO/DWP sections. */
353 static const struct dwop_section_names
355 struct dwarf2_section_names abbrev_dwo;
356 struct dwarf2_section_names info_dwo;
357 struct dwarf2_section_names line_dwo;
358 struct dwarf2_section_names loc_dwo;
359 struct dwarf2_section_names loclists_dwo;
360 struct dwarf2_section_names macinfo_dwo;
361 struct dwarf2_section_names macro_dwo;
362 struct dwarf2_section_names rnglists_dwo;
363 struct dwarf2_section_names str_dwo;
364 struct dwarf2_section_names str_offsets_dwo;
365 struct dwarf2_section_names types_dwo;
366 struct dwarf2_section_names cu_index;
367 struct dwarf2_section_names tu_index;
371 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
372 { ".debug_info.dwo", ".zdebug_info.dwo" },
373 { ".debug_line.dwo", ".zdebug_line.dwo" },
374 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
375 { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
376 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
377 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
378 { ".debug_rnglists.dwo", ".zdebug_rnglists.dwo" },
379 { ".debug_str.dwo", ".zdebug_str.dwo" },
380 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
381 { ".debug_types.dwo", ".zdebug_types.dwo" },
382 { ".debug_cu_index", ".zdebug_cu_index" },
383 { ".debug_tu_index", ".zdebug_tu_index" },
386 /* local data types */
388 /* The location list and range list sections (.debug_loclists & .debug_rnglists)
389 begin with a header, which contains the following information. */
390 struct loclists_rnglists_header
392 /* A 4-byte or 12-byte length containing the length of the
393 set of entries for this compilation unit, not including the
394 length field itself. */
397 /* A 2-byte version identifier. */
400 /* A 1-byte unsigned integer containing the size in bytes of an address on
401 the target system. */
402 unsigned char addr_size;
404 /* A 1-byte unsigned integer containing the size in bytes of a segment selector
405 on the target system. */
406 unsigned char segment_collector_size;
408 /* A 4-byte count of the number of offsets that follow the header. */
409 unsigned int offset_entry_count;
412 /* Type used for delaying computation of method physnames.
413 See comments for compute_delayed_physnames. */
414 struct delayed_method_info
416 /* The type to which the method is attached, i.e., its parent class. */
419 /* The index of the method in the type's function fieldlists. */
422 /* The index of the method in the fieldlist. */
425 /* The name of the DIE. */
428 /* The DIE associated with this method. */
429 struct die_info *die;
432 /* Internal state when decoding a particular compilation unit. */
435 explicit dwarf2_cu (dwarf2_per_cu_data *per_cu,
436 dwarf2_per_objfile *per_objfile);
438 DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
440 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
441 Create the set of symtabs used by this TU, or if this TU is sharing
442 symtabs with another TU and the symtabs have already been created
443 then restore those symtabs in the line header.
444 We don't need the pc/line-number mapping for type units. */
445 void setup_type_unit_groups (struct die_info *die);
447 /* Start a symtab for DWARF. NAME, COMP_DIR, LOW_PC are passed to the
448 buildsym_compunit constructor. */
449 struct compunit_symtab *start_symtab (const char *name,
450 const char *comp_dir,
453 /* Reset the builder. */
454 void reset_builder () { m_builder.reset (); }
456 /* Return a type that is a generic pointer type, the size of which
457 matches the address size given in the compilation unit header for
459 struct type *addr_type () const;
461 /* Find an integer type the same size as the address size given in
462 the compilation unit header for this CU. UNSIGNED_P controls if
463 the integer is unsigned or not. */
464 struct type *addr_sized_int_type (bool unsigned_p) const;
466 /* The header of the compilation unit. */
467 struct comp_unit_head header {};
469 /* Base address of this compilation unit. */
470 gdb::optional<CORE_ADDR> base_address;
472 /* The language we are debugging. */
473 enum language language = language_unknown;
474 const struct language_defn *language_defn = nullptr;
476 const char *producer = nullptr;
479 /* The symtab builder for this CU. This is only non-NULL when full
480 symbols are being read. */
481 std::unique_ptr<buildsym_compunit> m_builder;
484 /* The generic symbol table building routines have separate lists for
485 file scope symbols and all all other scopes (local scopes). So
486 we need to select the right one to pass to add_symbol_to_list().
487 We do it by keeping a pointer to the correct list in list_in_scope.
489 FIXME: The original dwarf code just treated the file scope as the
490 first local scope, and all other local scopes as nested local
491 scopes, and worked fine. Check to see if we really need to
492 distinguish these in buildsym.c. */
493 struct pending **list_in_scope = nullptr;
495 /* Hash table holding all the loaded partial DIEs
496 with partial_die->offset.SECT_OFF as hash. */
497 htab_t partial_dies = nullptr;
499 /* Storage for things with the same lifetime as this read-in compilation
500 unit, including partial DIEs. */
501 auto_obstack comp_unit_obstack;
503 /* Backlink to our per_cu entry. */
504 struct dwarf2_per_cu_data *per_cu;
506 /* The dwarf2_per_objfile that owns this. */
507 dwarf2_per_objfile *per_objfile;
509 /* How many compilation units ago was this CU last referenced? */
512 /* A hash table of DIE cu_offset for following references with
513 die_info->offset.sect_off as hash. */
514 htab_t die_hash = nullptr;
516 /* Full DIEs if read in. */
517 struct die_info *dies = nullptr;
519 /* A set of pointers to dwarf2_per_cu_data objects for compilation
520 units referenced by this one. Only set during full symbol processing;
521 partial symbol tables do not have dependencies. */
522 htab_t dependencies = nullptr;
524 /* Header data from the line table, during full symbol processing. */
525 struct line_header *line_header = nullptr;
526 /* Non-NULL if LINE_HEADER is owned by this DWARF_CU. Otherwise,
527 it's owned by dwarf2_per_bfd::line_header_hash. If non-NULL,
528 this is the DW_TAG_compile_unit die for this CU. We'll hold on
529 to the line header as long as this DIE is being processed. See
530 process_die_scope. */
531 die_info *line_header_die_owner = nullptr;
533 /* A list of methods which need to have physnames computed
534 after all type information has been read. */
535 std::vector<delayed_method_info> method_list;
537 /* To be copied to symtab->call_site_htab. */
538 htab_t call_site_htab = nullptr;
540 /* Non-NULL if this CU came from a DWO file.
541 There is an invariant here that is important to remember:
542 Except for attributes copied from the top level DIE in the "main"
543 (or "stub") file in preparation for reading the DWO file
544 (e.g., DW_AT_addr_base), we KISS: there is only *one* CU.
545 Either there isn't a DWO file (in which case this is NULL and the point
546 is moot), or there is and either we're not going to read it (in which
547 case this is NULL) or there is and we are reading it (in which case this
549 struct dwo_unit *dwo_unit = nullptr;
551 /* The DW_AT_addr_base (DW_AT_GNU_addr_base) attribute if present.
552 Note this value comes from the Fission stub CU/TU's DIE. */
553 gdb::optional<ULONGEST> addr_base;
555 /* The DW_AT_GNU_ranges_base attribute, if present.
557 This is only relevant in the context of pre-DWARF 5 split units. In this
558 context, there is a .debug_ranges section in the linked executable,
559 containing all the ranges data for all the compilation units. Each
560 skeleton/stub unit has (if needed) a DW_AT_GNU_ranges_base attribute that
561 indicates the base of its contribution to that section. The DW_AT_ranges
562 attributes in the split-unit are of the form DW_FORM_sec_offset and point
563 into the .debug_ranges section of the linked file. However, they are not
564 "true" DW_FORM_sec_offset, because they are relative to the base of their
565 compilation unit's contribution, rather than relative to the beginning of
566 the section. The DW_AT_GNU_ranges_base value must be added to it to make
567 it relative to the beginning of the section.
569 Note that the value is zero when we are not in a pre-DWARF 5 split-unit
570 case, so this value can be added without needing to know whether we are in
573 N.B. If a DW_AT_ranges attribute is found on the DW_TAG_compile_unit in the
574 skeleton/stub, it must not have the base added, as it already points to the
575 right place. And since the DW_TAG_compile_unit DIE in the split-unit can't
576 have a DW_AT_ranges attribute, we can use the
578 die->tag != DW_AT_compile_unit
580 to determine whether the base should be added or not. */
581 ULONGEST gnu_ranges_base = 0;
583 /* The DW_AT_rnglists_base attribute, if present.
585 This is used when processing attributes of form DW_FORM_rnglistx in
586 non-split units. Attributes of this form found in a split unit don't
587 use it, as split-unit files have their own non-shared .debug_rnglists.dwo
589 ULONGEST rnglists_base = 0;
591 /* The DW_AT_loclists_base attribute if present. */
592 ULONGEST loclist_base = 0;
594 /* When reading debug info generated by older versions of rustc, we
595 have to rewrite some union types to be struct types with a
596 variant part. This rewriting must be done after the CU is fully
597 read in, because otherwise at the point of rewriting some struct
598 type might not have been fully processed. So, we keep a list of
599 all such types here and process them after expansion. */
600 std::vector<struct type *> rust_unions;
602 /* The DW_AT_str_offsets_base attribute if present. For DWARF 4 version DWO
603 files, the value is implicitly zero. For DWARF 5 version DWO files, the
604 value is often implicit and is the size of the header of
605 .debug_str_offsets section (8 or 4, depending on the address size). */
606 gdb::optional<ULONGEST> str_offsets_base;
608 /* Mark used when releasing cached dies. */
611 /* This CU references .debug_loc. See the symtab->locations_valid field.
612 This test is imperfect as there may exist optimized debug code not using
613 any location list and still facing inlining issues if handled as
614 unoptimized code. For a future better test see GCC PR other/32998. */
615 bool has_loclist : 1;
617 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is true
618 if all the producer_is_* fields are valid. This information is cached
619 because profiling CU expansion showed excessive time spent in
620 producer_is_gxx_lt_4_6. */
621 bool checked_producer : 1;
622 bool producer_is_gxx_lt_4_6 : 1;
623 bool producer_is_gcc_lt_4_3 : 1;
624 bool producer_is_icc : 1;
625 bool producer_is_icc_lt_14 : 1;
626 bool producer_is_codewarrior : 1;
628 /* When true, the file that we're processing is known to have
629 debugging info for C++ namespaces. GCC 3.3.x did not produce
630 this information, but later versions do. */
632 bool processing_has_namespace_info : 1;
634 struct partial_die_info *find_partial_die (sect_offset sect_off);
636 /* If this CU was inherited by another CU (via specification,
637 abstract_origin, etc), this is the ancestor CU. */
640 /* Get the buildsym_compunit for this CU. */
641 buildsym_compunit *get_builder ()
643 /* If this CU has a builder associated with it, use that. */
644 if (m_builder != nullptr)
645 return m_builder.get ();
647 /* Otherwise, search ancestors for a valid builder. */
648 if (ancestor != nullptr)
649 return ancestor->get_builder ();
655 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
656 This includes type_unit_group and quick_file_names. */
658 struct stmt_list_hash
660 /* The DWO unit this table is from or NULL if there is none. */
661 struct dwo_unit *dwo_unit;
663 /* Offset in .debug_line or .debug_line.dwo. */
664 sect_offset line_sect_off;
667 /* Each element of dwarf2_per_bfd->type_unit_groups is a pointer to
668 an object of this type. This contains elements of type unit groups
669 that can be shared across objfiles. The non-shareable parts are in
670 type_unit_group_unshareable. */
672 struct type_unit_group
674 /* dwarf2read.c's main "handle" on a TU symtab.
675 To simplify things we create an artificial CU that "includes" all the
676 type units using this stmt_list so that the rest of the code still has
677 a "per_cu" handle on the symtab. */
678 struct dwarf2_per_cu_data per_cu;
680 /* The TUs that share this DW_AT_stmt_list entry.
681 This is added to while parsing type units to build partial symtabs,
682 and is deleted afterwards and not used again. */
683 std::vector<signatured_type *> *tus;
685 /* The data used to construct the hash key. */
686 struct stmt_list_hash hash;
689 /* These sections are what may appear in a (real or virtual) DWO file. */
693 struct dwarf2_section_info abbrev;
694 struct dwarf2_section_info line;
695 struct dwarf2_section_info loc;
696 struct dwarf2_section_info loclists;
697 struct dwarf2_section_info macinfo;
698 struct dwarf2_section_info macro;
699 struct dwarf2_section_info rnglists;
700 struct dwarf2_section_info str;
701 struct dwarf2_section_info str_offsets;
702 /* In the case of a virtual DWO file, these two are unused. */
703 struct dwarf2_section_info info;
704 std::vector<dwarf2_section_info> types;
707 /* CUs/TUs in DWP/DWO files. */
711 /* Backlink to the containing struct dwo_file. */
712 struct dwo_file *dwo_file;
714 /* The "id" that distinguishes this CU/TU.
715 .debug_info calls this "dwo_id", .debug_types calls this "signature".
716 Since signatures came first, we stick with it for consistency. */
719 /* The section this CU/TU lives in, in the DWO file. */
720 struct dwarf2_section_info *section;
722 /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section. */
723 sect_offset sect_off;
726 /* For types, offset in the type's DIE of the type defined by this TU. */
727 cu_offset type_offset_in_tu;
730 /* include/dwarf2.h defines the DWP section codes.
731 It defines a max value but it doesn't define a min value, which we
732 use for error checking, so provide one. */
734 enum dwp_v2_section_ids
739 /* Data for one DWO file.
741 This includes virtual DWO files (a virtual DWO file is a DWO file as it
742 appears in a DWP file). DWP files don't really have DWO files per se -
743 comdat folding of types "loses" the DWO file they came from, and from
744 a high level view DWP files appear to contain a mass of random types.
745 However, to maintain consistency with the non-DWP case we pretend DWP
746 files contain virtual DWO files, and we assign each TU with one virtual
747 DWO file (generally based on the line and abbrev section offsets -
748 a heuristic that seems to work in practice). */
752 dwo_file () = default;
753 DISABLE_COPY_AND_ASSIGN (dwo_file);
755 /* The DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute.
756 For virtual DWO files the name is constructed from the section offsets
757 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
758 from related CU+TUs. */
759 const char *dwo_name = nullptr;
761 /* The DW_AT_comp_dir attribute. */
762 const char *comp_dir = nullptr;
764 /* The bfd, when the file is open. Otherwise this is NULL.
765 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
766 gdb_bfd_ref_ptr dbfd;
768 /* The sections that make up this DWO file.
769 Remember that for virtual DWO files in DWP V2 or DWP V5, these are virtual
770 sections (for lack of a better name). */
771 struct dwo_sections sections {};
773 /* The CUs in the file.
774 Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
775 an extension to handle LLVM's Link Time Optimization output (where
776 multiple source files may be compiled into a single object/dwo pair). */
779 /* Table of TUs in the file.
780 Each element is a struct dwo_unit. */
784 /* These sections are what may appear in a DWP file. */
788 /* These are used by all DWP versions (1, 2 and 5). */
789 struct dwarf2_section_info str;
790 struct dwarf2_section_info cu_index;
791 struct dwarf2_section_info tu_index;
793 /* These are only used by DWP version 2 and version 5 files.
794 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
795 sections are referenced by section number, and are not recorded here.
796 In DWP version 2 or 5 there is at most one copy of all these sections,
797 each section being (effectively) comprised of the concatenation of all of
798 the individual sections that exist in the version 1 format.
799 To keep the code simple we treat each of these concatenated pieces as a
800 section itself (a virtual section?). */
801 struct dwarf2_section_info abbrev;
802 struct dwarf2_section_info info;
803 struct dwarf2_section_info line;
804 struct dwarf2_section_info loc;
805 struct dwarf2_section_info loclists;
806 struct dwarf2_section_info macinfo;
807 struct dwarf2_section_info macro;
808 struct dwarf2_section_info rnglists;
809 struct dwarf2_section_info str_offsets;
810 struct dwarf2_section_info types;
813 /* These sections are what may appear in a virtual DWO file in DWP version 1.
814 A virtual DWO file is a DWO file as it appears in a DWP file. */
816 struct virtual_v1_dwo_sections
818 struct dwarf2_section_info abbrev;
819 struct dwarf2_section_info line;
820 struct dwarf2_section_info loc;
821 struct dwarf2_section_info macinfo;
822 struct dwarf2_section_info macro;
823 struct dwarf2_section_info str_offsets;
824 /* Each DWP hash table entry records one CU or one TU.
825 That is recorded here, and copied to dwo_unit.section. */
826 struct dwarf2_section_info info_or_types;
829 /* Similar to virtual_v1_dwo_sections, but for DWP version 2 or 5.
830 In version 2, the sections of the DWO files are concatenated together
831 and stored in one section of that name. Thus each ELF section contains
832 several "virtual" sections. */
834 struct virtual_v2_or_v5_dwo_sections
836 bfd_size_type abbrev_offset;
837 bfd_size_type abbrev_size;
839 bfd_size_type line_offset;
840 bfd_size_type line_size;
842 bfd_size_type loc_offset;
843 bfd_size_type loc_size;
845 bfd_size_type loclists_offset;
846 bfd_size_type loclists_size;
848 bfd_size_type macinfo_offset;
849 bfd_size_type macinfo_size;
851 bfd_size_type macro_offset;
852 bfd_size_type macro_size;
854 bfd_size_type rnglists_offset;
855 bfd_size_type rnglists_size;
857 bfd_size_type str_offsets_offset;
858 bfd_size_type str_offsets_size;
860 /* Each DWP hash table entry records one CU or one TU.
861 That is recorded here, and copied to dwo_unit.section. */
862 bfd_size_type info_or_types_offset;
863 bfd_size_type info_or_types_size;
866 /* Contents of DWP hash tables. */
868 struct dwp_hash_table
870 uint32_t version, nr_columns;
871 uint32_t nr_units, nr_slots;
872 const gdb_byte *hash_table, *unit_table;
877 const gdb_byte *indices;
881 /* This is indexed by column number and gives the id of the section
883 #define MAX_NR_V2_DWO_SECTIONS \
884 (1 /* .debug_info or .debug_types */ \
885 + 1 /* .debug_abbrev */ \
886 + 1 /* .debug_line */ \
887 + 1 /* .debug_loc */ \
888 + 1 /* .debug_str_offsets */ \
889 + 1 /* .debug_macro or .debug_macinfo */)
890 int section_ids[MAX_NR_V2_DWO_SECTIONS];
891 const gdb_byte *offsets;
892 const gdb_byte *sizes;
896 /* This is indexed by column number and gives the id of the section
898 #define MAX_NR_V5_DWO_SECTIONS \
899 (1 /* .debug_info */ \
900 + 1 /* .debug_abbrev */ \
901 + 1 /* .debug_line */ \
902 + 1 /* .debug_loclists */ \
903 + 1 /* .debug_str_offsets */ \
904 + 1 /* .debug_macro */ \
905 + 1 /* .debug_rnglists */)
906 int section_ids[MAX_NR_V5_DWO_SECTIONS];
907 const gdb_byte *offsets;
908 const gdb_byte *sizes;
913 /* Data for one DWP file. */
917 dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
919 dbfd (std::move (abfd))
923 /* Name of the file. */
926 /* File format version. */
930 gdb_bfd_ref_ptr dbfd;
932 /* Section info for this file. */
933 struct dwp_sections sections {};
935 /* Table of CUs in the file. */
936 const struct dwp_hash_table *cus = nullptr;
938 /* Table of TUs in the file. */
939 const struct dwp_hash_table *tus = nullptr;
941 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
945 /* Table to map ELF section numbers to their sections.
946 This is only needed for the DWP V1 file format. */
947 unsigned int num_sections = 0;
948 asection **elf_sections = nullptr;
951 /* Struct used to pass misc. parameters to read_die_and_children, et
952 al. which are used for both .debug_info and .debug_types dies.
953 All parameters here are unchanging for the life of the call. This
954 struct exists to abstract away the constant parameters of die reading. */
956 struct die_reader_specs
958 /* The bfd of die_section. */
961 /* The CU of the DIE we are parsing. */
962 struct dwarf2_cu *cu;
964 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
965 struct dwo_file *dwo_file;
967 /* The section the die comes from.
968 This is either .debug_info or .debug_types, or the .dwo variants. */
969 struct dwarf2_section_info *die_section;
971 /* die_section->buffer. */
972 const gdb_byte *buffer;
974 /* The end of the buffer. */
975 const gdb_byte *buffer_end;
977 /* The abbreviation table to use when reading the DIEs. */
978 struct abbrev_table *abbrev_table;
981 /* A subclass of die_reader_specs that holds storage and has complex
982 constructor and destructor behavior. */
984 class cutu_reader : public die_reader_specs
988 cutu_reader (dwarf2_per_cu_data *this_cu,
989 dwarf2_per_objfile *per_objfile,
990 struct abbrev_table *abbrev_table,
991 dwarf2_cu *existing_cu,
994 explicit cutu_reader (struct dwarf2_per_cu_data *this_cu,
995 dwarf2_per_objfile *per_objfile,
996 struct dwarf2_cu *parent_cu = nullptr,
997 struct dwo_file *dwo_file = nullptr);
999 DISABLE_COPY_AND_ASSIGN (cutu_reader);
1001 const gdb_byte *info_ptr = nullptr;
1002 struct die_info *comp_unit_die = nullptr;
1003 bool dummy_p = false;
1005 /* Release the new CU, putting it on the chain. This cannot be done
1010 void init_tu_and_read_dwo_dies (dwarf2_per_cu_data *this_cu,
1011 dwarf2_per_objfile *per_objfile,
1012 dwarf2_cu *existing_cu);
1014 struct dwarf2_per_cu_data *m_this_cu;
1015 std::unique_ptr<dwarf2_cu> m_new_cu;
1017 /* The ordinary abbreviation table. */
1018 abbrev_table_up m_abbrev_table_holder;
1020 /* The DWO abbreviation table. */
1021 abbrev_table_up m_dwo_abbrev_table;
1024 /* When we construct a partial symbol table entry we only
1025 need this much information. */
1026 struct partial_die_info : public allocate_on_obstack
1028 partial_die_info (sect_offset sect_off, const struct abbrev_info *abbrev);
1030 /* Disable assign but still keep copy ctor, which is needed
1031 load_partial_dies. */
1032 partial_die_info& operator=(const partial_die_info& rhs) = delete;
1034 /* Adjust the partial die before generating a symbol for it. This
1035 function may set the is_external flag or change the DIE's
1037 void fixup (struct dwarf2_cu *cu);
1039 /* Read a minimal amount of information into the minimal die
1041 const gdb_byte *read (const struct die_reader_specs *reader,
1042 const struct abbrev_info &abbrev,
1043 const gdb_byte *info_ptr);
1045 /* Compute the name of this partial DIE. This memoizes the
1046 result, so it is safe to call multiple times. */
1047 const char *name (dwarf2_cu *cu);
1049 /* Offset of this DIE. */
1050 const sect_offset sect_off;
1052 /* DWARF-2 tag for this DIE. */
1053 const ENUM_BITFIELD(dwarf_tag) tag : 16;
1055 /* Assorted flags describing the data found in this DIE. */
1056 const unsigned int has_children : 1;
1058 unsigned int is_external : 1;
1059 unsigned int is_declaration : 1;
1060 unsigned int has_type : 1;
1061 unsigned int has_specification : 1;
1062 unsigned int has_pc_info : 1;
1063 unsigned int may_be_inlined : 1;
1065 /* This DIE has been marked DW_AT_main_subprogram. */
1066 unsigned int main_subprogram : 1;
1068 /* Flag set if the SCOPE field of this structure has been
1070 unsigned int scope_set : 1;
1072 /* Flag set if the DIE has a byte_size attribute. */
1073 unsigned int has_byte_size : 1;
1075 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1076 unsigned int has_const_value : 1;
1078 /* Flag set if any of the DIE's children are template arguments. */
1079 unsigned int has_template_arguments : 1;
1081 /* Flag set if fixup has been called on this die. */
1082 unsigned int fixup_called : 1;
1084 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1085 unsigned int is_dwz : 1;
1087 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1088 unsigned int spec_is_dwz : 1;
1090 unsigned int canonical_name : 1;
1092 /* The name of this DIE. Normally the value of DW_AT_name, but
1093 sometimes a default name for unnamed DIEs. */
1094 const char *raw_name = nullptr;
1096 /* The linkage name, if present. */
1097 const char *linkage_name = nullptr;
1099 /* The scope to prepend to our children. This is generally
1100 allocated on the comp_unit_obstack, so will disappear
1101 when this compilation unit leaves the cache. */
1102 const char *scope = nullptr;
1104 /* Some data associated with the partial DIE. The tag determines
1105 which field is live. */
1108 /* The location description associated with this DIE, if any. */
1109 struct dwarf_block *locdesc;
1110 /* The offset of an import, for DW_TAG_imported_unit. */
1111 sect_offset sect_off;
1114 /* If HAS_PC_INFO, the PC range associated with this DIE. */
1115 CORE_ADDR lowpc = 0;
1116 CORE_ADDR highpc = 0;
1118 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1119 DW_AT_sibling, if any. */
1120 /* NOTE: This member isn't strictly necessary, partial_die_info::read
1121 could return DW_AT_sibling values to its caller load_partial_dies. */
1122 const gdb_byte *sibling = nullptr;
1124 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1125 DW_AT_specification (or DW_AT_abstract_origin or
1126 DW_AT_extension). */
1127 sect_offset spec_offset {};
1129 /* Pointers to this DIE's parent, first child, and next sibling,
1131 struct partial_die_info *die_parent = nullptr;
1132 struct partial_die_info *die_child = nullptr;
1133 struct partial_die_info *die_sibling = nullptr;
1135 friend struct partial_die_info *
1136 dwarf2_cu::find_partial_die (sect_offset sect_off);
1139 /* Only need to do look up in dwarf2_cu::find_partial_die. */
1140 partial_die_info (sect_offset sect_off)
1141 : partial_die_info (sect_off, DW_TAG_padding, 0)
1145 partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1147 : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1152 has_specification = 0;
1155 main_subprogram = 0;
1158 has_const_value = 0;
1159 has_template_arguments = 0;
1167 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1168 but this would require a corresponding change in unpack_field_as_long
1170 static int bits_per_byte = 8;
1172 struct variant_part_builder;
1174 /* When reading a variant, we track a bit more information about the
1175 field, and store it in an object of this type. */
1177 struct variant_field
1179 int first_field = -1;
1180 int last_field = -1;
1182 /* A variant can contain other variant parts. */
1183 std::vector<variant_part_builder> variant_parts;
1185 /* If we see a DW_TAG_variant, then this will be set if this is the
1187 bool default_branch = false;
1188 /* If we see a DW_AT_discr_value, then this will be the discriminant
1190 ULONGEST discriminant_value = 0;
1191 /* If we see a DW_AT_discr_list, then this is a pointer to the list
1193 struct dwarf_block *discr_list_data = nullptr;
1196 /* This represents a DW_TAG_variant_part. */
1198 struct variant_part_builder
1200 /* The offset of the discriminant field. */
1201 sect_offset discriminant_offset {};
1203 /* Variants that are direct children of this variant part. */
1204 std::vector<variant_field> variants;
1206 /* True if we're currently reading a variant. */
1207 bool processing_variant = false;
1212 int accessibility = 0;
1214 /* Variant parts need to find the discriminant, which is a DIE
1215 reference. We track the section offset of each field to make
1218 struct field field {};
1223 const char *name = nullptr;
1224 std::vector<struct fn_field> fnfields;
1227 /* The routines that read and process dies for a C struct or C++ class
1228 pass lists of data member fields and lists of member function fields
1229 in an instance of a field_info structure, as defined below. */
1232 /* List of data member and baseclasses fields. */
1233 std::vector<struct nextfield> fields;
1234 std::vector<struct nextfield> baseclasses;
1236 /* Set if the accessibility of one of the fields is not public. */
1237 bool non_public_fields = false;
1239 /* Member function fieldlist array, contains name of possibly overloaded
1240 member function, number of overloaded member functions and a pointer
1241 to the head of the member function field chain. */
1242 std::vector<struct fnfieldlist> fnfieldlists;
1244 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1245 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
1246 std::vector<struct decl_field> typedef_field_list;
1248 /* Nested types defined by this class and the number of elements in this
1250 std::vector<struct decl_field> nested_types_list;
1252 /* If non-null, this is the variant part we are currently
1254 variant_part_builder *current_variant_part = nullptr;
1255 /* This holds all the top-level variant parts attached to the type
1257 std::vector<variant_part_builder> variant_parts;
1259 /* Return the total number of fields (including baseclasses). */
1260 int nfields () const
1262 return fields.size () + baseclasses.size ();
1266 /* Loaded secondary compilation units are kept in memory until they
1267 have not been referenced for the processing of this many
1268 compilation units. Set this to zero to disable caching. Cache
1269 sizes of up to at least twenty will improve startup time for
1270 typical inter-CU-reference binaries, at an obvious memory cost. */
1271 static int dwarf_max_cache_age = 5;
1273 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1274 struct cmd_list_element *c, const char *value)
1276 fprintf_filtered (file, _("The upper bound on the age of cached "
1277 "DWARF compilation units is %s.\n"),
1281 /* local function prototypes */
1283 static void dwarf2_find_base_address (struct die_info *die,
1284 struct dwarf2_cu *cu);
1286 static dwarf2_psymtab *create_partial_symtab
1287 (dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
1290 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1291 const gdb_byte *info_ptr,
1292 struct die_info *type_unit_die);
1294 static void dwarf2_build_psymtabs_hard (dwarf2_per_objfile *per_objfile);
1296 static void scan_partial_symbols (struct partial_die_info *,
1297 CORE_ADDR *, CORE_ADDR *,
1298 int, struct dwarf2_cu *);
1300 static void add_partial_symbol (struct partial_die_info *,
1301 struct dwarf2_cu *);
1303 static void add_partial_namespace (struct partial_die_info *pdi,
1304 CORE_ADDR *lowpc, CORE_ADDR *highpc,
1305 int set_addrmap, struct dwarf2_cu *cu);
1307 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1308 CORE_ADDR *highpc, int set_addrmap,
1309 struct dwarf2_cu *cu);
1311 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1312 struct dwarf2_cu *cu);
1314 static void add_partial_subprogram (struct partial_die_info *pdi,
1315 CORE_ADDR *lowpc, CORE_ADDR *highpc,
1316 int need_pc, struct dwarf2_cu *cu);
1318 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1320 static struct partial_die_info *load_partial_dies
1321 (const struct die_reader_specs *, const gdb_byte *, int);
1323 /* A pair of partial_die_info and compilation unit. */
1324 struct cu_partial_die_info
1326 /* The compilation unit of the partial_die_info. */
1327 struct dwarf2_cu *cu;
1328 /* A partial_die_info. */
1329 struct partial_die_info *pdi;
1331 cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
1337 cu_partial_die_info () = delete;
1340 static const struct cu_partial_die_info find_partial_die (sect_offset, int,
1341 struct dwarf2_cu *);
1343 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1345 const struct attr_abbrev *,
1348 static void read_attribute_reprocess (const struct die_reader_specs *reader,
1349 struct attribute *attr, dwarf_tag tag);
1351 static CORE_ADDR read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index);
1353 static sect_offset read_abbrev_offset (dwarf2_per_objfile *per_objfile,
1354 dwarf2_section_info *, sect_offset);
1356 static const char *read_indirect_string
1357 (dwarf2_per_objfile *per_objfile, bfd *, const gdb_byte *,
1358 const struct comp_unit_head *, unsigned int *);
1360 static const char *read_indirect_string_at_offset
1361 (dwarf2_per_objfile *per_objfile, LONGEST str_offset);
1363 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1367 static const char *read_dwo_str_index (const struct die_reader_specs *reader,
1368 ULONGEST str_index);
1370 static const char *read_stub_str_index (struct dwarf2_cu *cu,
1371 ULONGEST str_index);
1373 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1375 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1376 struct dwarf2_cu *);
1378 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1379 struct dwarf2_cu *cu);
1381 static const char *dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu);
1383 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1384 struct dwarf2_cu *cu);
1386 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1388 static struct die_info *die_specification (struct die_info *die,
1389 struct dwarf2_cu **);
1391 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1392 struct dwarf2_cu *cu);
1394 static void dwarf_decode_lines (struct line_header *, const char *,
1395 struct dwarf2_cu *, dwarf2_psymtab *,
1396 CORE_ADDR, int decode_mapping);
1398 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1401 static struct symbol *new_symbol (struct die_info *, struct type *,
1402 struct dwarf2_cu *, struct symbol * = NULL);
1404 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1405 struct dwarf2_cu *);
1407 static void dwarf2_const_value_attr (const struct attribute *attr,
1410 struct obstack *obstack,
1411 struct dwarf2_cu *cu, LONGEST *value,
1412 const gdb_byte **bytes,
1413 struct dwarf2_locexpr_baton **baton);
1415 static struct type *read_subrange_index_type (struct die_info *die,
1416 struct dwarf2_cu *cu);
1418 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1420 static int need_gnat_info (struct dwarf2_cu *);
1422 static struct type *die_descriptive_type (struct die_info *,
1423 struct dwarf2_cu *);
1425 static void set_descriptive_type (struct type *, struct die_info *,
1426 struct dwarf2_cu *);
1428 static struct type *die_containing_type (struct die_info *,
1429 struct dwarf2_cu *);
1431 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1432 struct dwarf2_cu *);
1434 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1436 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1438 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1440 static char *typename_concat (struct obstack *obs, const char *prefix,
1441 const char *suffix, int physname,
1442 struct dwarf2_cu *cu);
1444 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1446 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1448 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1450 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1452 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1454 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1456 /* Return the .debug_loclists section to use for cu. */
1457 static struct dwarf2_section_info *cu_debug_loc_section (struct dwarf2_cu *cu);
1459 /* Return the .debug_rnglists section to use for cu. */
1460 static struct dwarf2_section_info *cu_debug_rnglists_section
1461 (struct dwarf2_cu *cu, dwarf_tag tag);
1463 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1464 values. Keep the items ordered with increasing constraints compliance. */
1467 /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found. */
1468 PC_BOUNDS_NOT_PRESENT,
1470 /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1471 were present but they do not form a valid range of PC addresses. */
1474 /* Discontiguous range was found - that is DW_AT_ranges was found. */
1477 /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found. */
1481 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1482 CORE_ADDR *, CORE_ADDR *,
1486 static void get_scope_pc_bounds (struct die_info *,
1487 CORE_ADDR *, CORE_ADDR *,
1488 struct dwarf2_cu *);
1490 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1491 CORE_ADDR, struct dwarf2_cu *);
1493 static void dwarf2_add_field (struct field_info *, struct die_info *,
1494 struct dwarf2_cu *);
1496 static void dwarf2_attach_fields_to_type (struct field_info *,
1497 struct type *, struct dwarf2_cu *);
1499 static void dwarf2_add_member_fn (struct field_info *,
1500 struct die_info *, struct type *,
1501 struct dwarf2_cu *);
1503 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1505 struct dwarf2_cu *);
1507 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1509 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1511 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1513 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1515 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1517 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1519 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1521 static struct type *read_module_type (struct die_info *die,
1522 struct dwarf2_cu *cu);
1524 static const char *namespace_name (struct die_info *die,
1525 int *is_anonymous, struct dwarf2_cu *);
1527 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1529 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *,
1532 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1533 struct dwarf2_cu *);
1535 static struct die_info *read_die_and_siblings_1
1536 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1539 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1540 const gdb_byte *info_ptr,
1541 const gdb_byte **new_info_ptr,
1542 struct die_info *parent);
1544 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1545 struct die_info **, const gdb_byte *,
1548 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1549 struct die_info **, const gdb_byte *);
1551 static void process_die (struct die_info *, struct dwarf2_cu *);
1553 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1556 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1558 static const char *dwarf2_full_name (const char *name,
1559 struct die_info *die,
1560 struct dwarf2_cu *cu);
1562 static const char *dwarf2_physname (const char *name, struct die_info *die,
1563 struct dwarf2_cu *cu);
1565 static struct die_info *dwarf2_extension (struct die_info *die,
1566 struct dwarf2_cu **);
1568 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1570 static void dump_die_for_error (struct die_info *);
1572 static void dump_die_1 (struct ui_file *, int level, int max_level,
1575 /*static*/ void dump_die (struct die_info *, int max_level);
1577 static void store_in_ref_table (struct die_info *,
1578 struct dwarf2_cu *);
1580 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1581 const struct attribute *,
1582 struct dwarf2_cu **);
1584 static struct die_info *follow_die_ref (struct die_info *,
1585 const struct attribute *,
1586 struct dwarf2_cu **);
1588 static struct die_info *follow_die_sig (struct die_info *,
1589 const struct attribute *,
1590 struct dwarf2_cu **);
1592 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1593 struct dwarf2_cu *);
1595 static struct type *get_DW_AT_signature_type (struct die_info *,
1596 const struct attribute *,
1597 struct dwarf2_cu *);
1599 static void load_full_type_unit (dwarf2_per_cu_data *per_cu,
1600 dwarf2_per_objfile *per_objfile);
1602 static void read_signatured_type (signatured_type *sig_type,
1603 dwarf2_per_objfile *per_objfile);
1605 static int attr_to_dynamic_prop (const struct attribute *attr,
1606 struct die_info *die, struct dwarf2_cu *cu,
1607 struct dynamic_prop *prop, struct type *type);
1609 /* memory allocation interface */
1611 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1613 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1615 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1617 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1618 struct dwarf2_loclist_baton *baton,
1619 const struct attribute *attr);
1621 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1623 struct dwarf2_cu *cu,
1626 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1627 const gdb_byte *info_ptr,
1628 const struct abbrev_info *abbrev);
1630 static hashval_t partial_die_hash (const void *item);
1632 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1634 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1635 (sect_offset sect_off, unsigned int offset_in_dwz,
1636 dwarf2_per_objfile *per_objfile);
1638 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1639 struct die_info *comp_unit_die,
1640 enum language pretend_language);
1642 static struct type *set_die_type (struct die_info *, struct type *,
1643 struct dwarf2_cu *, bool = false);
1645 static void create_all_comp_units (dwarf2_per_objfile *per_objfile);
1647 static int create_all_type_units (dwarf2_per_objfile *per_objfile);
1649 static void load_full_comp_unit (dwarf2_per_cu_data *per_cu,
1650 dwarf2_per_objfile *per_objfile,
1651 dwarf2_cu *existing_cu,
1653 enum language pretend_language);
1655 static void process_full_comp_unit (dwarf2_cu *cu,
1656 enum language pretend_language);
1658 static void process_full_type_unit (dwarf2_cu *cu,
1659 enum language pretend_language);
1661 static void dwarf2_add_dependence (struct dwarf2_cu *,
1662 struct dwarf2_per_cu_data *);
1664 static void dwarf2_mark (struct dwarf2_cu *);
1666 static struct type *get_die_type_at_offset (sect_offset,
1667 dwarf2_per_cu_data *per_cu,
1668 dwarf2_per_objfile *per_objfile);
1670 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1672 static void queue_comp_unit (dwarf2_per_cu_data *per_cu,
1673 dwarf2_per_objfile *per_objfile,
1674 enum language pretend_language);
1676 static void process_queue (dwarf2_per_objfile *per_objfile);
1678 /* Class, the destructor of which frees all allocated queue entries. This
1679 will only have work to do if an error was thrown while processing the
1680 dwarf. If no error was thrown then the queue entries should have all
1681 been processed, and freed, as we went along. */
1683 class dwarf2_queue_guard
1686 explicit dwarf2_queue_guard (dwarf2_per_objfile *per_objfile)
1687 : m_per_objfile (per_objfile)
1689 gdb_assert (!m_per_objfile->per_bfd->queue.has_value ());
1691 m_per_objfile->per_bfd->queue.emplace ();
1694 /* Free any entries remaining on the queue. There should only be
1695 entries left if we hit an error while processing the dwarf. */
1696 ~dwarf2_queue_guard ()
1698 gdb_assert (m_per_objfile->per_bfd->queue.has_value ());
1700 m_per_objfile->per_bfd->queue.reset ();
1703 DISABLE_COPY_AND_ASSIGN (dwarf2_queue_guard);
1706 dwarf2_per_objfile *m_per_objfile;
1709 dwarf2_queue_item::~dwarf2_queue_item ()
1711 /* Anything still marked queued is likely to be in an
1712 inconsistent state, so discard it. */
1715 per_objfile->remove_cu (per_cu);
1720 /* The return type of find_file_and_directory. Note, the enclosed
1721 string pointers are only valid while this object is valid. */
1723 struct file_and_directory
1725 /* The filename. This is never NULL. */
1728 /* The compilation directory. NULL if not known. If we needed to
1729 compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1730 points directly to the DW_AT_comp_dir string attribute owned by
1731 the obstack that owns the DIE. */
1732 const char *comp_dir;
1734 /* If we needed to build a new string for comp_dir, this is what
1735 owns the storage. */
1736 std::string comp_dir_storage;
1739 static file_and_directory find_file_and_directory (struct die_info *die,
1740 struct dwarf2_cu *cu);
1742 static htab_up allocate_signatured_type_table ();
1744 static htab_up allocate_dwo_unit_table ();
1746 static struct dwo_unit *lookup_dwo_unit_in_dwp
1747 (dwarf2_per_objfile *per_objfile, struct dwp_file *dwp_file,
1748 const char *comp_dir, ULONGEST signature, int is_debug_types);
1750 static struct dwp_file *get_dwp_file (dwarf2_per_objfile *per_objfile);
1752 static struct dwo_unit *lookup_dwo_comp_unit
1753 (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
1754 ULONGEST signature);
1756 static struct dwo_unit *lookup_dwo_type_unit
1757 (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir);
1759 static void queue_and_load_all_dwo_tus (dwarf2_cu *cu);
1761 /* A unique pointer to a dwo_file. */
1763 typedef std::unique_ptr<struct dwo_file> dwo_file_up;
1765 static void process_cu_includes (dwarf2_per_objfile *per_objfile);
1767 static void check_producer (struct dwarf2_cu *cu);
1769 static void free_line_header_voidp (void *arg);
1771 /* Various complaints about symbol reading that don't abort the process. */
1774 dwarf2_debug_line_missing_file_complaint (void)
1776 complaint (_(".debug_line section has line data without a file"));
1780 dwarf2_debug_line_missing_end_sequence_complaint (void)
1782 complaint (_(".debug_line section has line "
1783 "program sequence without an end"));
1787 dwarf2_complex_location_expr_complaint (void)
1789 complaint (_("location expression too complex"));
1793 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1796 complaint (_("const value length mismatch for '%s', got %d, expected %d"),
1801 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1803 complaint (_("invalid attribute class or form for '%s' in '%s'"),
1807 /* Hash function for line_header_hash. */
1810 line_header_hash (const struct line_header *ofs)
1812 return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
1815 /* Hash function for htab_create_alloc_ex for line_header_hash. */
1818 line_header_hash_voidp (const void *item)
1820 const struct line_header *ofs = (const struct line_header *) item;
1822 return line_header_hash (ofs);
1825 /* Equality function for line_header_hash. */
1828 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1830 const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
1831 const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
1833 return (ofs_lhs->sect_off == ofs_rhs->sect_off
1834 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1839 /* See declaration. */
1841 dwarf2_per_bfd::dwarf2_per_bfd (bfd *obfd, const dwarf2_debug_sections *names,
1844 can_copy (can_copy_)
1847 names = &dwarf2_elf_names;
1849 for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
1850 locate_sections (obfd, sec, *names);
1853 dwarf2_per_bfd::~dwarf2_per_bfd ()
1855 for (dwarf2_per_cu_data *per_cu : all_comp_units)
1856 per_cu->imported_symtabs_free ();
1858 for (signatured_type *sig_type : all_type_units)
1859 sig_type->per_cu.imported_symtabs_free ();
1861 /* Everything else should be on this->obstack. */
1867 dwarf2_per_objfile::remove_all_cus ()
1869 gdb_assert (!this->per_bfd->queue.has_value ());
1871 for (auto pair : m_dwarf2_cus)
1874 m_dwarf2_cus.clear ();
1877 /* A helper class that calls free_cached_comp_units on
1880 class free_cached_comp_units
1884 explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
1885 : m_per_objfile (per_objfile)
1889 ~free_cached_comp_units ()
1891 m_per_objfile->remove_all_cus ();
1894 DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
1898 dwarf2_per_objfile *m_per_objfile;
1904 dwarf2_per_objfile::symtab_set_p (const dwarf2_per_cu_data *per_cu) const
1906 gdb_assert (per_cu->index < this->m_symtabs.size ());
1908 return this->m_symtabs[per_cu->index] != nullptr;
1914 dwarf2_per_objfile::get_symtab (const dwarf2_per_cu_data *per_cu) const
1916 gdb_assert (per_cu->index < this->m_symtabs.size ());
1918 return this->m_symtabs[per_cu->index];
1924 dwarf2_per_objfile::set_symtab (const dwarf2_per_cu_data *per_cu,
1925 compunit_symtab *symtab)
1927 gdb_assert (per_cu->index < this->m_symtabs.size ());
1928 gdb_assert (this->m_symtabs[per_cu->index] == nullptr);
1930 this->m_symtabs[per_cu->index] = symtab;
1933 /* Try to locate the sections we need for DWARF 2 debugging
1934 information and return true if we have enough to do something.
1935 NAMES points to the dwarf2 section names, or is NULL if the standard
1936 ELF names are used. CAN_COPY is true for formats where symbol
1937 interposition is possible and so symbol values must follow copy
1938 relocation rules. */
1941 dwarf2_has_info (struct objfile *objfile,
1942 const struct dwarf2_debug_sections *names,
1945 if (objfile->flags & OBJF_READNEVER)
1948 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
1950 if (per_objfile == NULL)
1952 dwarf2_per_bfd *per_bfd;
1954 /* We can share a "dwarf2_per_bfd" with other objfiles if the BFD
1955 doesn't require relocations. */
1956 if (!gdb_bfd_requires_relocations (objfile->obfd))
1958 /* See if one has been created for this BFD yet. */
1959 per_bfd = dwarf2_per_bfd_bfd_data_key.get (objfile->obfd);
1961 if (per_bfd == nullptr)
1963 /* No, create it now. */
1964 per_bfd = new dwarf2_per_bfd (objfile->obfd, names, can_copy);
1965 dwarf2_per_bfd_bfd_data_key.set (objfile->obfd, per_bfd);
1970 /* No sharing possible, create one specifically for this objfile. */
1971 per_bfd = new dwarf2_per_bfd (objfile->obfd, names, can_copy);
1972 dwarf2_per_bfd_objfile_data_key.set (objfile, per_bfd);
1975 per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile, per_bfd);
1978 return (!per_objfile->per_bfd->info.is_virtual
1979 && per_objfile->per_bfd->info.s.section != NULL
1980 && !per_objfile->per_bfd->abbrev.is_virtual
1981 && per_objfile->per_bfd->abbrev.s.section != NULL);
1984 /* See declaration. */
1987 dwarf2_per_bfd::locate_sections (bfd *abfd, asection *sectp,
1988 const dwarf2_debug_sections &names)
1990 flagword aflag = bfd_section_flags (sectp);
1992 if ((aflag & SEC_HAS_CONTENTS) == 0)
1995 else if (elf_section_data (sectp)->this_hdr.sh_size
1996 > bfd_get_file_size (abfd))
1998 bfd_size_type size = elf_section_data (sectp)->this_hdr.sh_size;
1999 warning (_("Discarding section %s which has a section size (%s"
2000 ") larger than the file size [in module %s]"),
2001 bfd_section_name (sectp), phex_nz (size, sizeof (size)),
2002 bfd_get_filename (abfd));
2004 else if (names.info.matches (sectp->name))
2006 this->info.s.section = sectp;
2007 this->info.size = bfd_section_size (sectp);
2009 else if (names.abbrev.matches (sectp->name))
2011 this->abbrev.s.section = sectp;
2012 this->abbrev.size = bfd_section_size (sectp);
2014 else if (names.line.matches (sectp->name))
2016 this->line.s.section = sectp;
2017 this->line.size = bfd_section_size (sectp);
2019 else if (names.loc.matches (sectp->name))
2021 this->loc.s.section = sectp;
2022 this->loc.size = bfd_section_size (sectp);
2024 else if (names.loclists.matches (sectp->name))
2026 this->loclists.s.section = sectp;
2027 this->loclists.size = bfd_section_size (sectp);
2029 else if (names.macinfo.matches (sectp->name))
2031 this->macinfo.s.section = sectp;
2032 this->macinfo.size = bfd_section_size (sectp);
2034 else if (names.macro.matches (sectp->name))
2036 this->macro.s.section = sectp;
2037 this->macro.size = bfd_section_size (sectp);
2039 else if (names.str.matches (sectp->name))
2041 this->str.s.section = sectp;
2042 this->str.size = bfd_section_size (sectp);
2044 else if (names.str_offsets.matches (sectp->name))
2046 this->str_offsets.s.section = sectp;
2047 this->str_offsets.size = bfd_section_size (sectp);
2049 else if (names.line_str.matches (sectp->name))
2051 this->line_str.s.section = sectp;
2052 this->line_str.size = bfd_section_size (sectp);
2054 else if (names.addr.matches (sectp->name))
2056 this->addr.s.section = sectp;
2057 this->addr.size = bfd_section_size (sectp);
2059 else if (names.frame.matches (sectp->name))
2061 this->frame.s.section = sectp;
2062 this->frame.size = bfd_section_size (sectp);
2064 else if (names.eh_frame.matches (sectp->name))
2066 this->eh_frame.s.section = sectp;
2067 this->eh_frame.size = bfd_section_size (sectp);
2069 else if (names.ranges.matches (sectp->name))
2071 this->ranges.s.section = sectp;
2072 this->ranges.size = bfd_section_size (sectp);
2074 else if (names.rnglists.matches (sectp->name))
2076 this->rnglists.s.section = sectp;
2077 this->rnglists.size = bfd_section_size (sectp);
2079 else if (names.types.matches (sectp->name))
2081 struct dwarf2_section_info type_section;
2083 memset (&type_section, 0, sizeof (type_section));
2084 type_section.s.section = sectp;
2085 type_section.size = bfd_section_size (sectp);
2087 this->types.push_back (type_section);
2089 else if (names.gdb_index.matches (sectp->name))
2091 this->gdb_index.s.section = sectp;
2092 this->gdb_index.size = bfd_section_size (sectp);
2094 else if (names.debug_names.matches (sectp->name))
2096 this->debug_names.s.section = sectp;
2097 this->debug_names.size = bfd_section_size (sectp);
2099 else if (names.debug_aranges.matches (sectp->name))
2101 this->debug_aranges.s.section = sectp;
2102 this->debug_aranges.size = bfd_section_size (sectp);
2105 if ((bfd_section_flags (sectp) & (SEC_LOAD | SEC_ALLOC))
2106 && bfd_section_vma (sectp) == 0)
2107 this->has_section_at_zero = true;
2110 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2114 dwarf2_get_section_info (struct objfile *objfile,
2115 enum dwarf2_section_enum sect,
2116 asection **sectp, const gdb_byte **bufp,
2117 bfd_size_type *sizep)
2119 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
2120 struct dwarf2_section_info *info;
2122 /* We may see an objfile without any DWARF, in which case we just
2124 if (per_objfile == NULL)
2133 case DWARF2_DEBUG_FRAME:
2134 info = &per_objfile->per_bfd->frame;
2136 case DWARF2_EH_FRAME:
2137 info = &per_objfile->per_bfd->eh_frame;
2140 gdb_assert_not_reached ("unexpected section");
2143 info->read (objfile);
2145 *sectp = info->get_bfd_section ();
2146 *bufp = info->buffer;
2147 *sizep = info->size;
2151 /* DWARF quick_symbol_functions support. */
2153 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2154 unique line tables, so we maintain a separate table of all .debug_line
2155 derived entries to support the sharing.
2156 All the quick functions need is the list of file names. We discard the
2157 line_header when we're done and don't need to record it here. */
2158 struct quick_file_names
2160 /* The data used to construct the hash key. */
2161 struct stmt_list_hash hash;
2163 /* The number of entries in file_names, real_names. */
2164 unsigned int num_file_names;
2166 /* The file names from the line table, after being run through
2168 const char **file_names;
2170 /* The file names from the line table after being run through
2171 gdb_realpath. These are computed lazily. */
2172 const char **real_names;
2175 /* When using the index (and thus not using psymtabs), each CU has an
2176 object of this type. This is used to hold information needed by
2177 the various "quick" methods. */
2178 struct dwarf2_per_cu_quick_data
2180 /* The file table. This can be NULL if there was no file table
2181 or it's currently not read in.
2182 NOTE: This points into dwarf2_per_objfile->per_bfd->quick_file_names_table. */
2183 struct quick_file_names *file_names;
2185 /* A temporary mark bit used when iterating over all CUs in
2186 expand_symtabs_matching. */
2187 unsigned int mark : 1;
2189 /* True if we've tried to read the file table and found there isn't one.
2190 There will be no point in trying to read it again next time. */
2191 unsigned int no_file_data : 1;
2194 struct dwarf2_base_index_functions : public quick_symbol_functions
2196 bool has_symbols (struct objfile *objfile) override;
2198 struct symtab *find_last_source_symtab (struct objfile *objfile) override;
2200 void forget_cached_source_info (struct objfile *objfile) override;
2202 bool map_symtabs_matching_filename
2203 (struct objfile *objfile, const char *name, const char *real_path,
2204 gdb::function_view<bool (symtab *)> callback) override;
2206 enum language lookup_global_symbol_language (struct objfile *objfile,
2209 bool *symbol_found_p) override
2211 *symbol_found_p = false;
2212 return language_unknown;
2215 void print_stats (struct objfile *objfile, bool print_bcache) override;
2217 void expand_all_symtabs (struct objfile *objfile) override;
2219 void expand_symtabs_with_fullname (struct objfile *objfile,
2220 const char *fullname) override;
2222 struct compunit_symtab *find_pc_sect_compunit_symtab
2223 (struct objfile *objfile, struct bound_minimal_symbol msymbol,
2224 CORE_ADDR pc, struct obj_section *section, int warn_if_readin) override;
2226 struct compunit_symtab *find_compunit_symtab_by_address
2227 (struct objfile *objfile, CORE_ADDR address) override
2232 void map_symbol_filenames (struct objfile *objfile,
2233 symbol_filename_ftype *fun, void *data,
2234 int need_fullname) override;
2237 struct dwarf2_gdb_index : public dwarf2_base_index_functions
2239 struct compunit_symtab *lookup_symbol (struct objfile *objfile,
2240 block_enum block_index,
2242 domain_enum domain) override;
2244 void dump (struct objfile *objfile) override;
2246 void expand_symtabs_for_function (struct objfile *objfile,
2247 const char *func_name) override;
2249 void map_matching_symbols
2251 const lookup_name_info &lookup_name,
2254 gdb::function_view<symbol_found_callback_ftype> callback,
2255 symbol_compare_ftype *ordered_compare) override;
2257 void expand_symtabs_matching
2258 (struct objfile *objfile,
2259 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
2260 const lookup_name_info *lookup_name,
2261 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
2262 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
2263 enum search_domain kind) override;
2266 struct dwarf2_debug_names_index : public dwarf2_base_index_functions
2268 struct compunit_symtab *lookup_symbol (struct objfile *objfile,
2269 block_enum block_index,
2271 domain_enum domain) override;
2273 void dump (struct objfile *objfile) override;
2275 void expand_symtabs_for_function (struct objfile *objfile,
2276 const char *func_name) override;
2278 void map_matching_symbols
2280 const lookup_name_info &lookup_name,
2283 gdb::function_view<symbol_found_callback_ftype> callback,
2284 symbol_compare_ftype *ordered_compare) override;
2286 void expand_symtabs_matching
2287 (struct objfile *objfile,
2288 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
2289 const lookup_name_info *lookup_name,
2290 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
2291 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
2292 enum search_domain kind) override;
2295 quick_symbol_functions_up
2296 make_dwarf_gdb_index ()
2298 return quick_symbol_functions_up (new dwarf2_gdb_index);
2301 quick_symbol_functions_up
2302 make_dwarf_debug_names ()
2304 return quick_symbol_functions_up (new dwarf2_debug_names_index);
2307 /* Utility hash function for a stmt_list_hash. */
2310 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2314 if (stmt_list_hash->dwo_unit != NULL)
2315 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2316 v += to_underlying (stmt_list_hash->line_sect_off);
2320 /* Utility equality function for a stmt_list_hash. */
2323 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2324 const struct stmt_list_hash *rhs)
2326 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2328 if (lhs->dwo_unit != NULL
2329 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2332 return lhs->line_sect_off == rhs->line_sect_off;
2335 /* Hash function for a quick_file_names. */
2338 hash_file_name_entry (const void *e)
2340 const struct quick_file_names *file_data
2341 = (const struct quick_file_names *) e;
2343 return hash_stmt_list_entry (&file_data->hash);
2346 /* Equality function for a quick_file_names. */
2349 eq_file_name_entry (const void *a, const void *b)
2351 const struct quick_file_names *ea = (const struct quick_file_names *) a;
2352 const struct quick_file_names *eb = (const struct quick_file_names *) b;
2354 return eq_stmt_list_entry (&ea->hash, &eb->hash);
2357 /* Delete function for a quick_file_names. */
2360 delete_file_name_entry (void *e)
2362 struct quick_file_names *file_data = (struct quick_file_names *) e;
2365 for (i = 0; i < file_data->num_file_names; ++i)
2367 xfree ((void*) file_data->file_names[i]);
2368 if (file_data->real_names)
2369 xfree ((void*) file_data->real_names[i]);
2372 /* The space for the struct itself lives on the obstack, so we don't
2376 /* Create a quick_file_names hash table. */
2379 create_quick_file_names_table (unsigned int nr_initial_entries)
2381 return htab_up (htab_create_alloc (nr_initial_entries,
2382 hash_file_name_entry, eq_file_name_entry,
2383 delete_file_name_entry, xcalloc, xfree));
2386 /* Read in CU (dwarf2_cu object) for PER_CU in the context of PER_OBJFILE. This
2387 function is unrelated to symtabs, symtab would have to be created afterwards.
2388 You should call age_cached_comp_units after processing the CU. */
2391 load_cu (dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
2394 if (per_cu->is_debug_types)
2395 load_full_type_unit (per_cu, per_objfile);
2397 load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
2398 skip_partial, language_minimal);
2400 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
2402 return nullptr; /* Dummy CU. */
2404 dwarf2_find_base_address (cu->dies, cu);
2409 /* Read in the symbols for PER_CU in the context of PER_OBJFILE. */
2412 dw2_do_instantiate_symtab (dwarf2_per_cu_data *per_cu,
2413 dwarf2_per_objfile *per_objfile, bool skip_partial)
2415 /* Skip type_unit_groups, reading the type units they contain
2416 is handled elsewhere. */
2417 if (per_cu->type_unit_group_p ())
2421 /* The destructor of dwarf2_queue_guard frees any entries left on
2422 the queue. After this point we're guaranteed to leave this function
2423 with the dwarf queue empty. */
2424 dwarf2_queue_guard q_guard (per_objfile);
2426 if (!per_objfile->symtab_set_p (per_cu))
2428 queue_comp_unit (per_cu, per_objfile, language_minimal);
2429 dwarf2_cu *cu = load_cu (per_cu, per_objfile, skip_partial);
2431 /* If we just loaded a CU from a DWO, and we're working with an index
2432 that may badly handle TUs, load all the TUs in that DWO as well.
2433 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2434 if (!per_cu->is_debug_types
2436 && cu->dwo_unit != NULL
2437 && per_objfile->per_bfd->index_table != NULL
2438 && per_objfile->per_bfd->index_table->version <= 7
2439 /* DWP files aren't supported yet. */
2440 && get_dwp_file (per_objfile) == NULL)
2441 queue_and_load_all_dwo_tus (cu);
2444 process_queue (per_objfile);
2447 /* Age the cache, releasing compilation units that have not
2448 been used recently. */
2449 per_objfile->age_comp_units ();
2452 /* Ensure that the symbols for PER_CU have been read in. DWARF2_PER_OBJFILE is
2453 the per-objfile for which this symtab is instantiated.
2455 Returns the resulting symbol table. */
2457 static struct compunit_symtab *
2458 dw2_instantiate_symtab (dwarf2_per_cu_data *per_cu,
2459 dwarf2_per_objfile *per_objfile,
2462 gdb_assert (per_objfile->per_bfd->using_index);
2464 if (!per_objfile->symtab_set_p (per_cu))
2466 free_cached_comp_units freer (per_objfile);
2467 scoped_restore decrementer = increment_reading_symtab ();
2468 dw2_do_instantiate_symtab (per_cu, per_objfile, skip_partial);
2469 process_cu_includes (per_objfile);
2472 return per_objfile->get_symtab (per_cu);
2475 /* See declaration. */
2477 dwarf2_per_cu_data *
2478 dwarf2_per_bfd::get_cutu (int index)
2480 if (index >= this->all_comp_units.size ())
2482 index -= this->all_comp_units.size ();
2483 gdb_assert (index < this->all_type_units.size ());
2484 return &this->all_type_units[index]->per_cu;
2487 return this->all_comp_units[index];
2490 /* See declaration. */
2492 dwarf2_per_cu_data *
2493 dwarf2_per_bfd::get_cu (int index)
2495 gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2497 return this->all_comp_units[index];
2500 /* See declaration. */
2503 dwarf2_per_bfd::get_tu (int index)
2505 gdb_assert (index >= 0 && index < this->all_type_units.size ());
2507 return this->all_type_units[index];
2512 dwarf2_per_cu_data *
2513 dwarf2_per_bfd::allocate_per_cu ()
2515 dwarf2_per_cu_data *result = OBSTACK_ZALLOC (&obstack, dwarf2_per_cu_data);
2516 result->per_bfd = this;
2517 result->index = m_num_psymtabs++;
2524 dwarf2_per_bfd::allocate_signatured_type ()
2526 signatured_type *result = OBSTACK_ZALLOC (&obstack, signatured_type);
2527 result->per_cu.per_bfd = this;
2528 result->per_cu.index = m_num_psymtabs++;
2532 /* Return a new dwarf2_per_cu_data allocated on the per-bfd
2533 obstack, and constructed with the specified field values. */
2535 static dwarf2_per_cu_data *
2536 create_cu_from_index_list (dwarf2_per_bfd *per_bfd,
2537 struct dwarf2_section_info *section,
2539 sect_offset sect_off, ULONGEST length)
2541 dwarf2_per_cu_data *the_cu = per_bfd->allocate_per_cu ();
2542 the_cu->sect_off = sect_off;
2543 the_cu->length = length;
2544 the_cu->section = section;
2545 the_cu->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
2546 struct dwarf2_per_cu_quick_data);
2547 the_cu->is_dwz = is_dwz;
2551 /* A helper for create_cus_from_index that handles a given list of
2555 create_cus_from_index_list (dwarf2_per_bfd *per_bfd,
2556 const gdb_byte *cu_list, offset_type n_elements,
2557 struct dwarf2_section_info *section,
2560 for (offset_type i = 0; i < n_elements; i += 2)
2562 gdb_static_assert (sizeof (ULONGEST) >= 8);
2564 sect_offset sect_off
2565 = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2566 ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2569 dwarf2_per_cu_data *per_cu
2570 = create_cu_from_index_list (per_bfd, section, is_dwz, sect_off,
2572 per_bfd->all_comp_units.push_back (per_cu);
2576 /* Read the CU list from the mapped index, and use it to create all
2577 the CU objects for PER_BFD. */
2580 create_cus_from_index (dwarf2_per_bfd *per_bfd,
2581 const gdb_byte *cu_list, offset_type cu_list_elements,
2582 const gdb_byte *dwz_list, offset_type dwz_elements)
2584 gdb_assert (per_bfd->all_comp_units.empty ());
2585 per_bfd->all_comp_units.reserve ((cu_list_elements + dwz_elements) / 2);
2587 create_cus_from_index_list (per_bfd, cu_list, cu_list_elements,
2590 if (dwz_elements == 0)
2593 dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
2594 create_cus_from_index_list (per_bfd, dwz_list, dwz_elements,
2598 /* Create the signatured type hash table from the index. */
2601 create_signatured_type_table_from_index
2602 (dwarf2_per_bfd *per_bfd, struct dwarf2_section_info *section,
2603 const gdb_byte *bytes, offset_type elements)
2605 gdb_assert (per_bfd->all_type_units.empty ());
2606 per_bfd->all_type_units.reserve (elements / 3);
2608 htab_up sig_types_hash = allocate_signatured_type_table ();
2610 for (offset_type i = 0; i < elements; i += 3)
2612 struct signatured_type *sig_type;
2615 cu_offset type_offset_in_tu;
2617 gdb_static_assert (sizeof (ULONGEST) >= 8);
2618 sect_offset sect_off
2619 = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2621 = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
2623 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2626 sig_type = per_bfd->allocate_signatured_type ();
2627 sig_type->signature = signature;
2628 sig_type->type_offset_in_tu = type_offset_in_tu;
2629 sig_type->per_cu.is_debug_types = 1;
2630 sig_type->per_cu.section = section;
2631 sig_type->per_cu.sect_off = sect_off;
2632 sig_type->per_cu.v.quick
2633 = OBSTACK_ZALLOC (&per_bfd->obstack,
2634 struct dwarf2_per_cu_quick_data);
2636 slot = htab_find_slot (sig_types_hash.get (), sig_type, INSERT);
2639 per_bfd->all_type_units.push_back (sig_type);
2642 per_bfd->signatured_types = std::move (sig_types_hash);
2645 /* Create the signatured type hash table from .debug_names. */
2648 create_signatured_type_table_from_debug_names
2649 (dwarf2_per_objfile *per_objfile,
2650 const mapped_debug_names &map,
2651 struct dwarf2_section_info *section,
2652 struct dwarf2_section_info *abbrev_section)
2654 struct objfile *objfile = per_objfile->objfile;
2656 section->read (objfile);
2657 abbrev_section->read (objfile);
2659 gdb_assert (per_objfile->per_bfd->all_type_units.empty ());
2660 per_objfile->per_bfd->all_type_units.reserve (map.tu_count);
2662 htab_up sig_types_hash = allocate_signatured_type_table ();
2664 for (uint32_t i = 0; i < map.tu_count; ++i)
2666 struct signatured_type *sig_type;
2669 sect_offset sect_off
2670 = (sect_offset) (extract_unsigned_integer
2671 (map.tu_table_reordered + i * map.offset_size,
2673 map.dwarf5_byte_order));
2675 comp_unit_head cu_header;
2676 read_and_check_comp_unit_head (per_objfile, &cu_header, section,
2678 section->buffer + to_underlying (sect_off),
2681 sig_type = per_objfile->per_bfd->allocate_signatured_type ();
2682 sig_type->signature = cu_header.signature;
2683 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
2684 sig_type->per_cu.is_debug_types = 1;
2685 sig_type->per_cu.section = section;
2686 sig_type->per_cu.sect_off = sect_off;
2687 sig_type->per_cu.v.quick
2688 = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack,
2689 struct dwarf2_per_cu_quick_data);
2691 slot = htab_find_slot (sig_types_hash.get (), sig_type, INSERT);
2694 per_objfile->per_bfd->all_type_units.push_back (sig_type);
2697 per_objfile->per_bfd->signatured_types = std::move (sig_types_hash);
2700 /* Read the address map data from the mapped index, and use it to
2701 populate the psymtabs_addrmap. */
2704 create_addrmap_from_index (dwarf2_per_objfile *per_objfile,
2705 struct mapped_index *index)
2707 struct objfile *objfile = per_objfile->objfile;
2708 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
2709 struct gdbarch *gdbarch = objfile->arch ();
2710 const gdb_byte *iter, *end;
2711 struct addrmap *mutable_map;
2714 auto_obstack temp_obstack;
2716 mutable_map = addrmap_create_mutable (&temp_obstack);
2718 iter = index->address_table.data ();
2719 end = iter + index->address_table.size ();
2721 baseaddr = objfile->text_section_offset ();
2725 ULONGEST hi, lo, cu_index;
2726 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2728 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2730 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2735 complaint (_(".gdb_index address table has invalid range (%s - %s)"),
2736 hex_string (lo), hex_string (hi));
2740 if (cu_index >= per_bfd->all_comp_units.size ())
2742 complaint (_(".gdb_index address table has invalid CU number %u"),
2743 (unsigned) cu_index);
2747 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
2748 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
2749 addrmap_set_empty (mutable_map, lo, hi - 1,
2750 per_bfd->get_cu (cu_index));
2753 per_bfd->index_addrmap = addrmap_create_fixed (mutable_map,
2757 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
2758 populate the psymtabs_addrmap. */
2761 create_addrmap_from_aranges (dwarf2_per_objfile *per_objfile,
2762 struct dwarf2_section_info *section)
2764 struct objfile *objfile = per_objfile->objfile;
2765 bfd *abfd = objfile->obfd;
2766 struct gdbarch *gdbarch = objfile->arch ();
2767 const CORE_ADDR baseaddr = objfile->text_section_offset ();
2768 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
2770 auto_obstack temp_obstack;
2771 addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
2773 std::unordered_map<sect_offset,
2774 dwarf2_per_cu_data *,
2775 gdb::hash_enum<sect_offset>>
2776 debug_info_offset_to_per_cu;
2777 for (dwarf2_per_cu_data *per_cu : per_bfd->all_comp_units)
2779 const auto insertpair
2780 = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
2781 if (!insertpair.second)
2783 warning (_("Section .debug_aranges in %s has duplicate "
2784 "debug_info_offset %s, ignoring .debug_aranges."),
2785 objfile_name (objfile), sect_offset_str (per_cu->sect_off));
2790 section->read (objfile);
2792 const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
2794 const gdb_byte *addr = section->buffer;
2796 while (addr < section->buffer + section->size)
2798 const gdb_byte *const entry_addr = addr;
2799 unsigned int bytes_read;
2801 const LONGEST entry_length = read_initial_length (abfd, addr,
2805 const gdb_byte *const entry_end = addr + entry_length;
2806 const bool dwarf5_is_dwarf64 = bytes_read != 4;
2807 const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
2808 if (addr + entry_length > section->buffer + section->size)
2810 warning (_("Section .debug_aranges in %s entry at offset %s "
2811 "length %s exceeds section length %s, "
2812 "ignoring .debug_aranges."),
2813 objfile_name (objfile),
2814 plongest (entry_addr - section->buffer),
2815 plongest (bytes_read + entry_length),
2816 pulongest (section->size));
2820 /* The version number. */
2821 const uint16_t version = read_2_bytes (abfd, addr);
2825 warning (_("Section .debug_aranges in %s entry at offset %s "
2826 "has unsupported version %d, ignoring .debug_aranges."),
2827 objfile_name (objfile),
2828 plongest (entry_addr - section->buffer), version);
2832 const uint64_t debug_info_offset
2833 = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
2834 addr += offset_size;
2835 const auto per_cu_it
2836 = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
2837 if (per_cu_it == debug_info_offset_to_per_cu.cend ())
2839 warning (_("Section .debug_aranges in %s entry at offset %s "
2840 "debug_info_offset %s does not exists, "
2841 "ignoring .debug_aranges."),
2842 objfile_name (objfile),
2843 plongest (entry_addr - section->buffer),
2844 pulongest (debug_info_offset));
2847 dwarf2_per_cu_data *const per_cu = per_cu_it->second;
2849 const uint8_t address_size = *addr++;
2850 if (address_size < 1 || address_size > 8)
2852 warning (_("Section .debug_aranges in %s entry at offset %s "
2853 "address_size %u is invalid, ignoring .debug_aranges."),
2854 objfile_name (objfile),
2855 plongest (entry_addr - section->buffer), address_size);
2859 const uint8_t segment_selector_size = *addr++;
2860 if (segment_selector_size != 0)
2862 warning (_("Section .debug_aranges in %s entry at offset %s "
2863 "segment_selector_size %u is not supported, "
2864 "ignoring .debug_aranges."),
2865 objfile_name (objfile),
2866 plongest (entry_addr - section->buffer),
2867 segment_selector_size);
2871 /* Must pad to an alignment boundary that is twice the address
2872 size. It is undocumented by the DWARF standard but GCC does
2874 for (size_t padding = ((-(addr - section->buffer))
2875 & (2 * address_size - 1));
2876 padding > 0; padding--)
2879 warning (_("Section .debug_aranges in %s entry at offset %s "
2880 "padding is not zero, ignoring .debug_aranges."),
2881 objfile_name (objfile),
2882 plongest (entry_addr - section->buffer));
2888 if (addr + 2 * address_size > entry_end)
2890 warning (_("Section .debug_aranges in %s entry at offset %s "
2891 "address list is not properly terminated, "
2892 "ignoring .debug_aranges."),
2893 objfile_name (objfile),
2894 plongest (entry_addr - section->buffer));
2897 ULONGEST start = extract_unsigned_integer (addr, address_size,
2899 addr += address_size;
2900 ULONGEST length = extract_unsigned_integer (addr, address_size,
2902 addr += address_size;
2903 if (start == 0 && length == 0)
2905 if (start == 0 && !per_bfd->has_section_at_zero)
2907 /* Symbol was eliminated due to a COMDAT group. */
2910 ULONGEST end = start + length;
2911 start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
2913 end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
2915 addrmap_set_empty (mutable_map, start, end - 1, per_cu);
2919 per_bfd->index_addrmap = addrmap_create_fixed (mutable_map,
2923 /* Find a slot in the mapped index INDEX for the object named NAME.
2924 If NAME is found, set *VEC_OUT to point to the CU vector in the
2925 constant pool and return true. If NAME cannot be found, return
2929 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2930 offset_type **vec_out)
2933 offset_type slot, step;
2934 int (*cmp) (const char *, const char *);
2936 gdb::unique_xmalloc_ptr<char> without_params;
2937 if (current_language->la_language == language_cplus
2938 || current_language->la_language == language_fortran
2939 || current_language->la_language == language_d)
2941 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
2944 if (strchr (name, '(') != NULL)
2946 without_params = cp_remove_params (name);
2948 if (without_params != NULL)
2949 name = without_params.get ();
2953 /* Index version 4 did not support case insensitive searches. But the
2954 indices for case insensitive languages are built in lowercase, therefore
2955 simulate our NAME being searched is also lowercased. */
2956 hash = mapped_index_string_hash ((index->version == 4
2957 && case_sensitivity == case_sensitive_off
2958 ? 5 : index->version),
2961 slot = hash & (index->symbol_table.size () - 1);
2962 step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
2963 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
2969 const auto &bucket = index->symbol_table[slot];
2970 if (bucket.name == 0 && bucket.vec == 0)
2973 str = index->constant_pool + MAYBE_SWAP (bucket.name);
2974 if (!cmp (name, str))
2976 *vec_out = (offset_type *) (index->constant_pool
2977 + MAYBE_SWAP (bucket.vec));
2981 slot = (slot + step) & (index->symbol_table.size () - 1);
2985 /* A helper function that reads the .gdb_index from BUFFER and fills
2986 in MAP. FILENAME is the name of the file containing the data;
2987 it is used for error reporting. DEPRECATED_OK is true if it is
2988 ok to use deprecated sections.
2990 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
2991 out parameters that are filled in with information about the CU and
2992 TU lists in the section.
2994 Returns true if all went well, false otherwise. */
2997 read_gdb_index_from_buffer (const char *filename,
2999 gdb::array_view<const gdb_byte> buffer,
3000 struct mapped_index *map,
3001 const gdb_byte **cu_list,
3002 offset_type *cu_list_elements,
3003 const gdb_byte **types_list,
3004 offset_type *types_list_elements)
3006 const gdb_byte *addr = &buffer[0];
3008 /* Version check. */
3009 offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3010 /* Versions earlier than 3 emitted every copy of a psymbol. This
3011 causes the index to behave very poorly for certain requests. Version 3
3012 contained incomplete addrmap. So, it seems better to just ignore such
3016 static int warning_printed = 0;
3017 if (!warning_printed)
3019 warning (_("Skipping obsolete .gdb_index section in %s."),
3021 warning_printed = 1;
3025 /* Index version 4 uses a different hash function than index version
3028 Versions earlier than 6 did not emit psymbols for inlined
3029 functions. Using these files will cause GDB not to be able to
3030 set breakpoints on inlined functions by name, so we ignore these
3031 indices unless the user has done
3032 "set use-deprecated-index-sections on". */
3033 if (version < 6 && !deprecated_ok)
3035 static int warning_printed = 0;
3036 if (!warning_printed)
3039 Skipping deprecated .gdb_index section in %s.\n\
3040 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3041 to use the section anyway."),
3043 warning_printed = 1;
3047 /* Version 7 indices generated by gold refer to the CU for a symbol instead
3048 of the TU (for symbols coming from TUs),
3049 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3050 Plus gold-generated indices can have duplicate entries for global symbols,
3051 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3052 These are just performance bugs, and we can't distinguish gdb-generated
3053 indices from gold-generated ones, so issue no warning here. */
3055 /* Indexes with higher version than the one supported by GDB may be no
3056 longer backward compatible. */
3060 map->version = version;
3062 offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3065 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3066 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3070 *types_list = addr + MAYBE_SWAP (metadata[i]);
3071 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3072 - MAYBE_SWAP (metadata[i]))
3076 const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3077 const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3079 = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3082 const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3083 const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3085 = gdb::array_view<mapped_index::symbol_table_slot>
3086 ((mapped_index::symbol_table_slot *) symbol_table,
3087 (mapped_index::symbol_table_slot *) symbol_table_end);
3090 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3095 /* Callback types for dwarf2_read_gdb_index. */
3097 typedef gdb::function_view
3098 <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_bfd *)>
3099 get_gdb_index_contents_ftype;
3100 typedef gdb::function_view
3101 <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3102 get_gdb_index_contents_dwz_ftype;
3104 /* Read .gdb_index. If everything went ok, initialize the "quick"
3105 elements of all the CUs and return 1. Otherwise, return 0. */
3108 dwarf2_read_gdb_index
3109 (dwarf2_per_objfile *per_objfile,
3110 get_gdb_index_contents_ftype get_gdb_index_contents,
3111 get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3113 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3114 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3115 struct dwz_file *dwz;
3116 struct objfile *objfile = per_objfile->objfile;
3117 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
3119 gdb::array_view<const gdb_byte> main_index_contents
3120 = get_gdb_index_contents (objfile, per_bfd);
3122 if (main_index_contents.empty ())
3125 std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3126 if (!read_gdb_index_from_buffer (objfile_name (objfile),
3127 use_deprecated_index_sections,
3128 main_index_contents, map.get (), &cu_list,
3129 &cu_list_elements, &types_list,
3130 &types_list_elements))
3133 /* Don't use the index if it's empty. */
3134 if (map->symbol_table.empty ())
3137 /* If there is a .dwz file, read it so we can get its CU list as
3139 dwz = dwarf2_get_dwz_file (per_bfd);
3142 struct mapped_index dwz_map;
3143 const gdb_byte *dwz_types_ignore;
3144 offset_type dwz_types_elements_ignore;
3146 gdb::array_view<const gdb_byte> dwz_index_content
3147 = get_gdb_index_contents_dwz (objfile, dwz);
3149 if (dwz_index_content.empty ())
3152 if (!read_gdb_index_from_buffer (bfd_get_filename (dwz->dwz_bfd.get ()),
3153 1, dwz_index_content, &dwz_map,
3154 &dwz_list, &dwz_list_elements,
3156 &dwz_types_elements_ignore))
3158 warning (_("could not read '.gdb_index' section from %s; skipping"),
3159 bfd_get_filename (dwz->dwz_bfd.get ()));
3164 create_cus_from_index (per_bfd, cu_list, cu_list_elements, dwz_list,
3167 if (types_list_elements)
3169 /* We can only handle a single .debug_types when we have an
3171 if (per_bfd->types.size () != 1)
3174 dwarf2_section_info *section = &per_bfd->types[0];
3176 create_signatured_type_table_from_index (per_bfd, section, types_list,
3177 types_list_elements);
3180 create_addrmap_from_index (per_objfile, map.get ());
3182 per_bfd->index_table = std::move (map);
3183 per_bfd->using_index = 1;
3184 per_bfd->quick_file_names_table =
3185 create_quick_file_names_table (per_bfd->all_comp_units.size ());
3190 /* die_reader_func for dw2_get_file_names. */
3193 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3194 struct die_info *comp_unit_die)
3196 struct dwarf2_cu *cu = reader->cu;
3197 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3198 dwarf2_per_objfile *per_objfile = cu->per_objfile;
3199 struct dwarf2_per_cu_data *lh_cu;
3200 struct attribute *attr;
3202 struct quick_file_names *qfn;
3204 gdb_assert (! this_cu->is_debug_types);
3206 /* Our callers never want to match partial units -- instead they
3207 will match the enclosing full CU. */
3208 if (comp_unit_die->tag == DW_TAG_partial_unit)
3210 this_cu->v.quick->no_file_data = 1;
3218 sect_offset line_offset {};
3220 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3221 if (attr != nullptr && attr->form_is_unsigned ())
3223 struct quick_file_names find_entry;
3225 line_offset = (sect_offset) attr->as_unsigned ();
3227 /* We may have already read in this line header (TU line header sharing).
3228 If we have we're done. */
3229 find_entry.hash.dwo_unit = cu->dwo_unit;
3230 find_entry.hash.line_sect_off = line_offset;
3231 slot = htab_find_slot (per_objfile->per_bfd->quick_file_names_table.get (),
3232 &find_entry, INSERT);
3235 lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3239 lh = dwarf_decode_line_header (line_offset, cu);
3243 lh_cu->v.quick->no_file_data = 1;
3247 qfn = XOBNEW (&per_objfile->per_bfd->obstack, struct quick_file_names);
3248 qfn->hash.dwo_unit = cu->dwo_unit;
3249 qfn->hash.line_sect_off = line_offset;
3250 gdb_assert (slot != NULL);
3253 file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3256 if (strcmp (fnd.name, "<unknown>") != 0)
3259 qfn->num_file_names = offset + lh->file_names_size ();
3261 XOBNEWVEC (&per_objfile->per_bfd->obstack, const char *,
3262 qfn->num_file_names);
3264 qfn->file_names[0] = xstrdup (fnd.name);
3265 for (int i = 0; i < lh->file_names_size (); ++i)
3266 qfn->file_names[i + offset] = lh->file_full_name (i + 1,
3267 fnd.comp_dir).release ();
3268 qfn->real_names = NULL;
3270 lh_cu->v.quick->file_names = qfn;
3273 /* A helper for the "quick" functions which attempts to read the line
3274 table for THIS_CU. */
3276 static struct quick_file_names *
3277 dw2_get_file_names (dwarf2_per_cu_data *this_cu,
3278 dwarf2_per_objfile *per_objfile)
3280 /* This should never be called for TUs. */
3281 gdb_assert (! this_cu->is_debug_types);
3282 /* Nor type unit groups. */
3283 gdb_assert (! this_cu->type_unit_group_p ());
3285 if (this_cu->v.quick->file_names != NULL)
3286 return this_cu->v.quick->file_names;
3287 /* If we know there is no line data, no point in looking again. */
3288 if (this_cu->v.quick->no_file_data)
3291 cutu_reader reader (this_cu, per_objfile);
3292 if (!reader.dummy_p)
3293 dw2_get_file_names_reader (&reader, reader.comp_unit_die);
3295 if (this_cu->v.quick->no_file_data)
3297 return this_cu->v.quick->file_names;
3300 /* A helper for the "quick" functions which computes and caches the
3301 real path for a given file name from the line table. */
3304 dw2_get_real_path (dwarf2_per_objfile *per_objfile,
3305 struct quick_file_names *qfn, int index)
3307 if (qfn->real_names == NULL)
3308 qfn->real_names = OBSTACK_CALLOC (&per_objfile->per_bfd->obstack,
3309 qfn->num_file_names, const char *);
3311 if (qfn->real_names[index] == NULL)
3312 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3314 return qfn->real_names[index];
3318 dwarf2_base_index_functions::find_last_source_symtab (struct objfile *objfile)
3320 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3321 dwarf2_per_cu_data *dwarf_cu = per_objfile->per_bfd->all_comp_units.back ();
3322 compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, per_objfile, false);
3327 return compunit_primary_filetab (cust);
3330 /* Traversal function for dw2_forget_cached_source_info. */
3333 dw2_free_cached_file_names (void **slot, void *info)
3335 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3337 if (file_data->real_names)
3341 for (i = 0; i < file_data->num_file_names; ++i)
3343 xfree ((void*) file_data->real_names[i]);
3344 file_data->real_names[i] = NULL;
3352 dwarf2_base_index_functions::forget_cached_source_info
3353 (struct objfile *objfile)
3355 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3357 htab_traverse_noresize (per_objfile->per_bfd->quick_file_names_table.get (),
3358 dw2_free_cached_file_names, NULL);
3361 /* Helper function for dw2_map_symtabs_matching_filename that expands
3362 the symtabs and calls the iterator. */
3365 dw2_map_expand_apply (struct objfile *objfile,
3366 struct dwarf2_per_cu_data *per_cu,
3367 const char *name, const char *real_path,
3368 gdb::function_view<bool (symtab *)> callback)
3370 struct compunit_symtab *last_made = objfile->compunit_symtabs;
3372 /* Don't visit already-expanded CUs. */
3373 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3374 if (per_objfile->symtab_set_p (per_cu))
3377 /* This may expand more than one symtab, and we want to iterate over
3379 dw2_instantiate_symtab (per_cu, per_objfile, false);
3381 return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3382 last_made, callback);
3385 /* Implementation of the map_symtabs_matching_filename method. */
3388 dwarf2_base_index_functions::map_symtabs_matching_filename
3389 (struct objfile *objfile, const char *name, const char *real_path,
3390 gdb::function_view<bool (symtab *)> callback)
3392 const char *name_basename = lbasename (name);
3393 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3395 /* The rule is CUs specify all the files, including those used by
3396 any TU, so there's no need to scan TUs here. */
3398 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
3400 /* We only need to look at symtabs not already expanded. */
3401 if (per_objfile->symtab_set_p (per_cu))
3404 quick_file_names *file_data = dw2_get_file_names (per_cu, per_objfile);
3405 if (file_data == NULL)
3408 for (int j = 0; j < file_data->num_file_names; ++j)
3410 const char *this_name = file_data->file_names[j];
3411 const char *this_real_name;
3413 if (compare_filenames_for_search (this_name, name))
3415 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3421 /* Before we invoke realpath, which can get expensive when many
3422 files are involved, do a quick comparison of the basenames. */
3423 if (! basenames_may_differ
3424 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3427 this_real_name = dw2_get_real_path (per_objfile, file_data, j);
3428 if (compare_filenames_for_search (this_real_name, name))
3430 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3436 if (real_path != NULL)
3438 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3439 gdb_assert (IS_ABSOLUTE_PATH (name));
3440 if (this_real_name != NULL
3441 && FILENAME_CMP (real_path, this_real_name) == 0)
3443 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3455 /* Struct used to manage iterating over all CUs looking for a symbol. */
3457 struct dw2_symtab_iterator
3459 /* The dwarf2_per_objfile owning the CUs we are iterating on. */
3460 dwarf2_per_objfile *per_objfile;
3461 /* If set, only look for symbols that match that block. Valid values are
3462 GLOBAL_BLOCK and STATIC_BLOCK. */
3463 gdb::optional<block_enum> block_index;
3464 /* The kind of symbol we're looking for. */
3466 /* The list of CUs from the index entry of the symbol,
3467 or NULL if not found. */
3469 /* The next element in VEC to look at. */
3471 /* The number of elements in VEC, or zero if there is no match. */
3473 /* Have we seen a global version of the symbol?
3474 If so we can ignore all further global instances.
3475 This is to work around gold/15646, inefficient gold-generated
3480 /* Initialize the index symtab iterator ITER, common part. */
3483 dw2_symtab_iter_init_common (struct dw2_symtab_iterator *iter,
3484 dwarf2_per_objfile *per_objfile,
3485 gdb::optional<block_enum> block_index,
3488 iter->per_objfile = per_objfile;
3489 iter->block_index = block_index;
3490 iter->domain = domain;
3492 iter->global_seen = 0;
3497 /* Initialize the index symtab iterator ITER, const char *NAME variant. */
3500 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3501 dwarf2_per_objfile *per_objfile,
3502 gdb::optional<block_enum> block_index,
3506 dw2_symtab_iter_init_common (iter, per_objfile, block_index, domain);
3508 mapped_index *index = per_objfile->per_bfd->index_table.get ();
3509 /* index is NULL if OBJF_READNOW. */
3513 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3514 iter->length = MAYBE_SWAP (*iter->vec);
3517 /* Initialize the index symtab iterator ITER, offset_type NAMEI variant. */
3520 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3521 dwarf2_per_objfile *per_objfile,
3522 gdb::optional<block_enum> block_index,
3523 domain_enum domain, offset_type namei)
3525 dw2_symtab_iter_init_common (iter, per_objfile, block_index, domain);
3527 mapped_index *index = per_objfile->per_bfd->index_table.get ();
3528 /* index is NULL if OBJF_READNOW. */
3532 gdb_assert (!index->symbol_name_slot_invalid (namei));
3533 const auto &bucket = index->symbol_table[namei];
3535 iter->vec = (offset_type *) (index->constant_pool
3536 + MAYBE_SWAP (bucket.vec));
3537 iter->length = MAYBE_SWAP (*iter->vec);
3540 /* Return the next matching CU or NULL if there are no more. */
3542 static struct dwarf2_per_cu_data *
3543 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3545 dwarf2_per_objfile *per_objfile = iter->per_objfile;
3547 for ( ; iter->next < iter->length; ++iter->next)
3549 offset_type cu_index_and_attrs =
3550 MAYBE_SWAP (iter->vec[iter->next + 1]);
3551 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3552 gdb_index_symbol_kind symbol_kind =
3553 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3554 /* Only check the symbol attributes if they're present.
3555 Indices prior to version 7 don't record them,
3556 and indices >= 7 may elide them for certain symbols
3557 (gold does this). */
3559 (per_objfile->per_bfd->index_table->version >= 7
3560 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3562 /* Don't crash on bad data. */
3563 if (cu_index >= (per_objfile->per_bfd->all_comp_units.size ()
3564 + per_objfile->per_bfd->all_type_units.size ()))
3566 complaint (_(".gdb_index entry has bad CU index"
3567 " [in module %s]"), objfile_name (per_objfile->objfile));
3571 dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cutu (cu_index);
3573 /* Skip if already read in. */
3574 if (per_objfile->symtab_set_p (per_cu))
3577 /* Check static vs global. */
3580 bool is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3582 if (iter->block_index.has_value ())
3584 bool want_static = *iter->block_index == STATIC_BLOCK;
3586 if (is_static != want_static)
3590 /* Work around gold/15646. */
3592 && symbol_kind == GDB_INDEX_SYMBOL_KIND_TYPE)
3594 if (iter->global_seen)
3597 iter->global_seen = 1;
3601 /* Only check the symbol's kind if it has one. */
3604 switch (iter->domain)
3607 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3608 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3609 /* Some types are also in VAR_DOMAIN. */
3610 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3614 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3618 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3622 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3637 struct compunit_symtab *
3638 dwarf2_gdb_index::lookup_symbol (struct objfile *objfile,
3639 block_enum block_index,
3640 const char *name, domain_enum domain)
3642 struct compunit_symtab *stab_best = NULL;
3643 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3645 lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
3647 struct dw2_symtab_iterator iter;
3648 struct dwarf2_per_cu_data *per_cu;
3650 dw2_symtab_iter_init (&iter, per_objfile, block_index, domain, name);
3652 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3654 struct symbol *sym, *with_opaque = NULL;
3655 struct compunit_symtab *stab
3656 = dw2_instantiate_symtab (per_cu, per_objfile, false);
3657 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
3658 const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
3660 sym = block_find_symbol (block, name, domain,
3661 block_find_non_opaque_type_preferred,
3664 /* Some caution must be observed with overloaded functions
3665 and methods, since the index will not contain any overload
3666 information (but NAME might contain it). */
3669 && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
3671 if (with_opaque != NULL
3672 && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
3675 /* Keep looking through other CUs. */
3682 dwarf2_base_index_functions::print_stats (struct objfile *objfile,
3688 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3689 int total = (per_objfile->per_bfd->all_comp_units.size ()
3690 + per_objfile->per_bfd->all_type_units.size ());
3693 for (int i = 0; i < total; ++i)
3695 dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cutu (i);
3697 if (!per_objfile->symtab_set_p (per_cu))
3700 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
3701 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3704 /* This dumps minimal information about the index.
3705 It is called via "mt print objfiles".
3706 One use is to verify .gdb_index has been loaded by the
3707 gdb.dwarf2/gdb-index.exp testcase. */
3710 dwarf2_gdb_index::dump (struct objfile *objfile)
3712 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3714 gdb_assert (per_objfile->per_bfd->using_index);
3715 printf_filtered (".gdb_index:");
3716 if (per_objfile->per_bfd->index_table != NULL)
3718 printf_filtered (" version %d\n",
3719 per_objfile->per_bfd->index_table->version);
3722 printf_filtered (" faked for \"readnow\"\n");
3723 printf_filtered ("\n");
3727 dwarf2_gdb_index::expand_symtabs_for_function (struct objfile *objfile,
3728 const char *func_name)
3730 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3732 struct dw2_symtab_iterator iter;
3733 struct dwarf2_per_cu_data *per_cu;
3735 dw2_symtab_iter_init (&iter, per_objfile, {}, VAR_DOMAIN, func_name);
3737 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3738 dw2_instantiate_symtab (per_cu, per_objfile, false);
3743 dwarf2_base_index_functions::expand_all_symtabs (struct objfile *objfile)
3745 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3746 int total_units = (per_objfile->per_bfd->all_comp_units.size ()
3747 + per_objfile->per_bfd->all_type_units.size ());
3749 for (int i = 0; i < total_units; ++i)
3751 dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cutu (i);
3753 /* We don't want to directly expand a partial CU, because if we
3754 read it with the wrong language, then assertion failures can
3755 be triggered later on. See PR symtab/23010. So, tell
3756 dw2_instantiate_symtab to skip partial CUs -- any important
3757 partial CU will be read via DW_TAG_imported_unit anyway. */
3758 dw2_instantiate_symtab (per_cu, per_objfile, true);
3763 dwarf2_base_index_functions::expand_symtabs_with_fullname
3764 (struct objfile *objfile, const char *fullname)
3766 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3768 /* We don't need to consider type units here.
3769 This is only called for examining code, e.g. expand_line_sal.
3770 There can be an order of magnitude (or more) more type units
3771 than comp units, and we avoid them if we can. */
3773 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
3775 /* We only need to look at symtabs not already expanded. */
3776 if (per_objfile->symtab_set_p (per_cu))
3779 quick_file_names *file_data = dw2_get_file_names (per_cu, per_objfile);
3780 if (file_data == NULL)
3783 for (int j = 0; j < file_data->num_file_names; ++j)
3785 const char *this_fullname = file_data->file_names[j];
3787 if (filename_cmp (this_fullname, fullname) == 0)
3789 dw2_instantiate_symtab (per_cu, per_objfile, false);
3797 dw2_expand_symtabs_matching_symbol
3798 (mapped_index_base &index,
3799 const lookup_name_info &lookup_name_in,
3800 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
3801 gdb::function_view<bool (offset_type)> match_callback,
3802 dwarf2_per_objfile *per_objfile);
3805 dw2_expand_symtabs_matching_one
3806 (dwarf2_per_cu_data *per_cu,
3807 dwarf2_per_objfile *per_objfile,
3808 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
3809 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify);
3812 dw2_map_matching_symbols
3813 (struct objfile *objfile,
3814 const lookup_name_info &name, domain_enum domain,
3816 gdb::function_view<symbol_found_callback_ftype> callback,
3817 symbol_compare_ftype *ordered_compare)
3820 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3822 const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
3824 if (per_objfile->per_bfd->index_table != nullptr)
3826 mapped_index &index = *per_objfile->per_bfd->index_table;
3828 const char *match_name = name.ada ().lookup_name ().c_str ();
3829 auto matcher = [&] (const char *symname)
3831 if (ordered_compare == nullptr)
3833 return ordered_compare (symname, match_name) == 0;
3836 dw2_expand_symtabs_matching_symbol (index, name, matcher,
3837 [&] (offset_type namei)
3839 struct dw2_symtab_iterator iter;
3840 struct dwarf2_per_cu_data *per_cu;
3842 dw2_symtab_iter_init (&iter, per_objfile, block_kind, domain,
3844 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3845 dw2_expand_symtabs_matching_one (per_cu, per_objfile, nullptr,
3852 /* We have -readnow: no .gdb_index, but no partial symtabs either. So,
3853 proceed assuming all symtabs have been read in. */
3856 for (compunit_symtab *cust : objfile->compunits ())
3858 const struct block *block;
3862 block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust), block_kind);
3863 if (!iterate_over_symbols_terminated (block, name,
3870 dwarf2_gdb_index::map_matching_symbols
3871 (struct objfile *objfile,
3872 const lookup_name_info &name, domain_enum domain,
3874 gdb::function_view<symbol_found_callback_ftype> callback,
3875 symbol_compare_ftype *ordered_compare)
3877 dw2_map_matching_symbols (objfile, name, domain, global, callback,
3881 /* Starting from a search name, return the string that finds the upper
3882 bound of all strings that start with SEARCH_NAME in a sorted name
3883 list. Returns the empty string to indicate that the upper bound is
3884 the end of the list. */
3887 make_sort_after_prefix_name (const char *search_name)
3889 /* When looking to complete "func", we find the upper bound of all
3890 symbols that start with "func" by looking for where we'd insert
3891 the closest string that would follow "func" in lexicographical
3892 order. Usually, that's "func"-with-last-character-incremented,
3893 i.e. "fund". Mind non-ASCII characters, though. Usually those
3894 will be UTF-8 multi-byte sequences, but we can't be certain.
3895 Especially mind the 0xff character, which is a valid character in
3896 non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
3897 rule out compilers allowing it in identifiers. Note that
3898 conveniently, strcmp/strcasecmp are specified to compare
3899 characters interpreted as unsigned char. So what we do is treat
3900 the whole string as a base 256 number composed of a sequence of
3901 base 256 "digits" and add 1 to it. I.e., adding 1 to 0xff wraps
3902 to 0, and carries 1 to the following more-significant position.
3903 If the very first character in SEARCH_NAME ends up incremented
3904 and carries/overflows, then the upper bound is the end of the
3905 list. The string after the empty string is also the empty
3908 Some examples of this operation:
3910 SEARCH_NAME => "+1" RESULT
3914 "\xff" "a" "\xff" => "\xff" "b"
3919 Then, with these symbols for example:
3925 completing "func" looks for symbols between "func" and
3926 "func"-with-last-character-incremented, i.e. "fund" (exclusive),
3927 which finds "func" and "func1", but not "fund".
3931 funcÿ (Latin1 'ÿ' [0xff])
3935 completing "funcÿ" looks for symbols between "funcÿ" and "fund"
3936 (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
3940 ÿÿ (Latin1 'ÿ' [0xff])
3943 completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
3944 the end of the list.
3946 std::string after = search_name;
3947 while (!after.empty () && (unsigned char) after.back () == 0xff)
3949 if (!after.empty ())
3950 after.back () = (unsigned char) after.back () + 1;
3954 /* See declaration. */
3956 std::pair<std::vector<name_component>::const_iterator,
3957 std::vector<name_component>::const_iterator>
3958 mapped_index_base::find_name_components_bounds
3959 (const lookup_name_info &lookup_name_without_params, language lang,
3960 dwarf2_per_objfile *per_objfile) const
3963 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
3965 const char *lang_name
3966 = lookup_name_without_params.language_lookup_name (lang);
3968 /* Comparison function object for lower_bound that matches against a
3969 given symbol name. */
3970 auto lookup_compare_lower = [&] (const name_component &elem,
3973 const char *elem_qualified = this->symbol_name_at (elem.idx, per_objfile);
3974 const char *elem_name = elem_qualified + elem.name_offset;
3975 return name_cmp (elem_name, name) < 0;
3978 /* Comparison function object for upper_bound that matches against a
3979 given symbol name. */
3980 auto lookup_compare_upper = [&] (const char *name,
3981 const name_component &elem)
3983 const char *elem_qualified = this->symbol_name_at (elem.idx, per_objfile);
3984 const char *elem_name = elem_qualified + elem.name_offset;
3985 return name_cmp (name, elem_name) < 0;
3988 auto begin = this->name_components.begin ();
3989 auto end = this->name_components.end ();
3991 /* Find the lower bound. */
3994 if (lookup_name_without_params.completion_mode () && lang_name[0] == '\0')
3997 return std::lower_bound (begin, end, lang_name, lookup_compare_lower);
4000 /* Find the upper bound. */
4003 if (lookup_name_without_params.completion_mode ())
4005 /* In completion mode, we want UPPER to point past all
4006 symbols names that have the same prefix. I.e., with
4007 these symbols, and completing "func":
4009 function << lower bound
4011 other_function << upper bound
4013 We find the upper bound by looking for the insertion
4014 point of "func"-with-last-character-incremented,
4016 std::string after = make_sort_after_prefix_name (lang_name);
4019 return std::lower_bound (lower, end, after.c_str (),
4020 lookup_compare_lower);
4023 return std::upper_bound (lower, end, lang_name, lookup_compare_upper);
4026 return {lower, upper};
4029 /* See declaration. */
4032 mapped_index_base::build_name_components (dwarf2_per_objfile *per_objfile)
4034 if (!this->name_components.empty ())
4037 this->name_components_casing = case_sensitivity;
4039 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4041 /* The code below only knows how to break apart components of C++
4042 symbol names (and other languages that use '::' as
4043 namespace/module separator) and Ada symbol names. */
4044 auto count = this->symbol_name_count ();
4045 for (offset_type idx = 0; idx < count; idx++)
4047 if (this->symbol_name_slot_invalid (idx))
4050 const char *name = this->symbol_name_at (idx, per_objfile);
4052 /* Add each name component to the name component table. */
4053 unsigned int previous_len = 0;
4055 if (strstr (name, "::") != nullptr)
4057 for (unsigned int current_len = cp_find_first_component (name);
4058 name[current_len] != '\0';
4059 current_len += cp_find_first_component (name + current_len))
4061 gdb_assert (name[current_len] == ':');
4062 this->name_components.push_back ({previous_len, idx});
4063 /* Skip the '::'. */
4065 previous_len = current_len;
4070 /* Handle the Ada encoded (aka mangled) form here. */
4071 for (const char *iter = strstr (name, "__");
4073 iter = strstr (iter, "__"))
4075 this->name_components.push_back ({previous_len, idx});
4077 previous_len = iter - name;
4081 this->name_components.push_back ({previous_len, idx});
4084 /* Sort name_components elements by name. */
4085 auto name_comp_compare = [&] (const name_component &left,
4086 const name_component &right)
4088 const char *left_qualified
4089 = this->symbol_name_at (left.idx, per_objfile);
4090 const char *right_qualified
4091 = this->symbol_name_at (right.idx, per_objfile);
4093 const char *left_name = left_qualified + left.name_offset;
4094 const char *right_name = right_qualified + right.name_offset;
4096 return name_cmp (left_name, right_name) < 0;
4099 std::sort (this->name_components.begin (),
4100 this->name_components.end (),
4104 /* Helper for dw2_expand_symtabs_matching that works with a
4105 mapped_index_base instead of the containing objfile. This is split
4106 to a separate function in order to be able to unit test the
4107 name_components matching using a mock mapped_index_base. For each
4108 symbol name that matches, calls MATCH_CALLBACK, passing it the
4109 symbol's index in the mapped_index_base symbol table. */
4112 dw2_expand_symtabs_matching_symbol
4113 (mapped_index_base &index,
4114 const lookup_name_info &lookup_name_in,
4115 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4116 gdb::function_view<bool (offset_type)> match_callback,
4117 dwarf2_per_objfile *per_objfile)
4119 lookup_name_info lookup_name_without_params
4120 = lookup_name_in.make_ignore_params ();
4122 /* Build the symbol name component sorted vector, if we haven't
4124 index.build_name_components (per_objfile);
4126 /* The same symbol may appear more than once in the range though.
4127 E.g., if we're looking for symbols that complete "w", and we have
4128 a symbol named "w1::w2", we'll find the two name components for
4129 that same symbol in the range. To be sure we only call the
4130 callback once per symbol, we first collect the symbol name
4131 indexes that matched in a temporary vector and ignore
4133 std::vector<offset_type> matches;
4135 struct name_and_matcher
4137 symbol_name_matcher_ftype *matcher;
4140 bool operator== (const name_and_matcher &other) const
4142 return matcher == other.matcher && strcmp (name, other.name) == 0;
4146 /* A vector holding all the different symbol name matchers, for all
4148 std::vector<name_and_matcher> matchers;
4150 for (int i = 0; i < nr_languages; i++)
4152 enum language lang_e = (enum language) i;
4154 const language_defn *lang = language_def (lang_e);
4155 symbol_name_matcher_ftype *name_matcher
4156 = lang->get_symbol_name_matcher (lookup_name_without_params);
4158 name_and_matcher key {
4160 lookup_name_without_params.language_lookup_name (lang_e)
4163 /* Don't insert the same comparison routine more than once.
4164 Note that we do this linear walk. This is not a problem in
4165 practice because the number of supported languages is
4167 if (std::find (matchers.begin (), matchers.end (), key)
4170 matchers.push_back (std::move (key));
4173 = index.find_name_components_bounds (lookup_name_without_params,
4174 lang_e, per_objfile);
4176 /* Now for each symbol name in range, check to see if we have a name
4177 match, and if so, call the MATCH_CALLBACK callback. */
4179 for (; bounds.first != bounds.second; ++bounds.first)
4181 const char *qualified
4182 = index.symbol_name_at (bounds.first->idx, per_objfile);
4184 if (!name_matcher (qualified, lookup_name_without_params, NULL)
4185 || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4188 matches.push_back (bounds.first->idx);
4192 std::sort (matches.begin (), matches.end ());
4194 /* Finally call the callback, once per match. */
4196 for (offset_type idx : matches)
4200 if (!match_callback (idx))
4206 /* Above we use a type wider than idx's for 'prev', since 0 and
4207 (offset_type)-1 are both possible values. */
4208 static_assert (sizeof (prev) > sizeof (offset_type), "");
4213 namespace selftests { namespace dw2_expand_symtabs_matching {
4215 /* A mock .gdb_index/.debug_names-like name index table, enough to
4216 exercise dw2_expand_symtabs_matching_symbol, which works with the
4217 mapped_index_base interface. Builds an index from the symbol list
4218 passed as parameter to the constructor. */
4219 class mock_mapped_index : public mapped_index_base
4222 mock_mapped_index (gdb::array_view<const char *> symbols)
4223 : m_symbol_table (symbols)
4226 DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4228 /* Return the number of names in the symbol table. */
4229 size_t symbol_name_count () const override
4231 return m_symbol_table.size ();
4234 /* Get the name of the symbol at IDX in the symbol table. */
4235 const char *symbol_name_at
4236 (offset_type idx, dwarf2_per_objfile *per_objfile) const override
4238 return m_symbol_table[idx];
4242 gdb::array_view<const char *> m_symbol_table;
4245 /* Convenience function that converts a NULL pointer to a "<null>"
4246 string, to pass to print routines. */
4249 string_or_null (const char *str)
4251 return str != NULL ? str : "<null>";
4254 /* Check if a lookup_name_info built from
4255 NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4256 index. EXPECTED_LIST is the list of expected matches, in expected
4257 matching order. If no match expected, then an empty list is
4258 specified. Returns true on success. On failure prints a warning
4259 indicating the file:line that failed, and returns false. */
4262 check_match (const char *file, int line,
4263 mock_mapped_index &mock_index,
4264 const char *name, symbol_name_match_type match_type,
4265 bool completion_mode,
4266 std::initializer_list<const char *> expected_list,
4267 dwarf2_per_objfile *per_objfile)
4269 lookup_name_info lookup_name (name, match_type, completion_mode);
4271 bool matched = true;
4273 auto mismatch = [&] (const char *expected_str,
4276 warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4277 "expected=\"%s\", got=\"%s\"\n"),
4279 (match_type == symbol_name_match_type::FULL
4281 name, string_or_null (expected_str), string_or_null (got));
4285 auto expected_it = expected_list.begin ();
4286 auto expected_end = expected_list.end ();
4288 dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4290 [&] (offset_type idx)
4292 const char *matched_name = mock_index.symbol_name_at (idx, per_objfile);
4293 const char *expected_str
4294 = expected_it == expected_end ? NULL : *expected_it++;
4296 if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4297 mismatch (expected_str, matched_name);
4301 const char *expected_str
4302 = expected_it == expected_end ? NULL : *expected_it++;
4303 if (expected_str != NULL)
4304 mismatch (expected_str, NULL);
4309 /* The symbols added to the mock mapped_index for testing (in
4311 static const char *test_symbols[] = {
4320 "ns2::tmpl<int>::foo2",
4321 "(anonymous namespace)::A::B::C",
4323 /* These are used to check that the increment-last-char in the
4324 matching algorithm for completion doesn't match "t1_fund" when
4325 completing "t1_func". */
4331 /* A UTF-8 name with multi-byte sequences to make sure that
4332 cp-name-parser understands this as a single identifier ("função"
4333 is "function" in PT). */
4336 /* \377 (0xff) is Latin1 'ÿ'. */
4339 /* \377 (0xff) is Latin1 'ÿ'. */
4343 /* A name with all sorts of complications. Starts with "z" to make
4344 it easier for the completion tests below. */
4345 #define Z_SYM_NAME \
4346 "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4347 "::tuple<(anonymous namespace)::ui*, " \
4348 "std::default_delete<(anonymous namespace)::ui>, void>"
4353 /* Returns true if the mapped_index_base::find_name_component_bounds
4354 method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4355 in completion mode. */
4358 check_find_bounds_finds (mapped_index_base &index,
4359 const char *search_name,
4360 gdb::array_view<const char *> expected_syms,
4361 dwarf2_per_objfile *per_objfile)
4363 lookup_name_info lookup_name (search_name,
4364 symbol_name_match_type::FULL, true);
4366 auto bounds = index.find_name_components_bounds (lookup_name,
4370 size_t distance = std::distance (bounds.first, bounds.second);
4371 if (distance != expected_syms.size ())
4374 for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4376 auto nc_elem = bounds.first + exp_elem;
4377 const char *qualified = index.symbol_name_at (nc_elem->idx, per_objfile);
4378 if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4385 /* Test the lower-level mapped_index::find_name_component_bounds
4389 test_mapped_index_find_name_component_bounds ()
4391 mock_mapped_index mock_index (test_symbols);
4393 mock_index.build_name_components (NULL /* per_objfile */);
4395 /* Test the lower-level mapped_index::find_name_component_bounds
4396 method in completion mode. */
4398 static const char *expected_syms[] = {
4403 SELF_CHECK (check_find_bounds_finds
4404 (mock_index, "t1_func", expected_syms,
4405 NULL /* per_objfile */));
4408 /* Check that the increment-last-char in the name matching algorithm
4409 for completion doesn't get confused with Ansi1 'ÿ' / 0xff. */
4411 static const char *expected_syms1[] = {
4415 SELF_CHECK (check_find_bounds_finds
4416 (mock_index, "\377", expected_syms1, NULL /* per_objfile */));
4418 static const char *expected_syms2[] = {
4421 SELF_CHECK (check_find_bounds_finds
4422 (mock_index, "\377\377", expected_syms2,
4423 NULL /* per_objfile */));
4427 /* Test dw2_expand_symtabs_matching_symbol. */
4430 test_dw2_expand_symtabs_matching_symbol ()
4432 mock_mapped_index mock_index (test_symbols);
4434 /* We let all tests run until the end even if some fails, for debug
4436 bool any_mismatch = false;
4438 /* Create the expected symbols list (an initializer_list). Needed
4439 because lists have commas, and we need to pass them to CHECK,
4440 which is a macro. */
4441 #define EXPECT(...) { __VA_ARGS__ }
4443 /* Wrapper for check_match that passes down the current
4444 __FILE__/__LINE__. */
4445 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST) \
4446 any_mismatch |= !check_match (__FILE__, __LINE__, \
4448 NAME, MATCH_TYPE, COMPLETION_MODE, \
4449 EXPECTED_LIST, NULL)
4451 /* Identity checks. */
4452 for (const char *sym : test_symbols)
4454 /* Should be able to match all existing symbols. */
4455 CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4458 /* Should be able to match all existing symbols with
4460 std::string with_params = std::string (sym) + "(int)";
4461 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4464 /* Should be able to match all existing symbols with
4465 parameters and qualifiers. */
4466 with_params = std::string (sym) + " ( int ) const";
4467 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4470 /* This should really find sym, but cp-name-parser.y doesn't
4471 know about lvalue/rvalue qualifiers yet. */
4472 with_params = std::string (sym) + " ( int ) &&";
4473 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4477 /* Check that the name matching algorithm for completion doesn't get
4478 confused with Latin1 'ÿ' / 0xff. */
4480 static const char str[] = "\377";
4481 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4482 EXPECT ("\377", "\377\377123"));
4485 /* Check that the increment-last-char in the matching algorithm for
4486 completion doesn't match "t1_fund" when completing "t1_func". */
4488 static const char str[] = "t1_func";
4489 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4490 EXPECT ("t1_func", "t1_func1"));
4493 /* Check that completion mode works at each prefix of the expected
4496 static const char str[] = "function(int)";
4497 size_t len = strlen (str);
4500 for (size_t i = 1; i < len; i++)
4502 lookup.assign (str, i);
4503 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4504 EXPECT ("function"));
4508 /* While "w" is a prefix of both components, the match function
4509 should still only be called once. */
4511 CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4513 CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4517 /* Same, with a "complicated" symbol. */
4519 static const char str[] = Z_SYM_NAME;
4520 size_t len = strlen (str);
4523 for (size_t i = 1; i < len; i++)
4525 lookup.assign (str, i);
4526 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4527 EXPECT (Z_SYM_NAME));
4531 /* In FULL mode, an incomplete symbol doesn't match. */
4533 CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4537 /* A complete symbol with parameters matches any overload, since the
4538 index has no overload info. */
4540 CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4541 EXPECT ("std::zfunction", "std::zfunction2"));
4542 CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4543 EXPECT ("std::zfunction", "std::zfunction2"));
4544 CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4545 EXPECT ("std::zfunction", "std::zfunction2"));
4548 /* Check that whitespace is ignored appropriately. A symbol with a
4549 template argument list. */
4551 static const char expected[] = "ns::foo<int>";
4552 CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4554 CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4558 /* Check that whitespace is ignored appropriately. A symbol with a
4559 template argument list that includes a pointer. */
4561 static const char expected[] = "ns::foo<char*>";
4562 /* Try both completion and non-completion modes. */
4563 static const bool completion_mode[2] = {false, true};
4564 for (size_t i = 0; i < 2; i++)
4566 CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4567 completion_mode[i], EXPECT (expected));
4568 CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4569 completion_mode[i], EXPECT (expected));
4571 CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4572 completion_mode[i], EXPECT (expected));
4573 CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4574 completion_mode[i], EXPECT (expected));
4579 /* Check method qualifiers are ignored. */
4580 static const char expected[] = "ns::foo<char*>";
4581 CHECK_MATCH ("ns :: foo < char * > ( int ) const",
4582 symbol_name_match_type::FULL, true, EXPECT (expected));
4583 CHECK_MATCH ("ns :: foo < char * > ( int ) &&",
4584 symbol_name_match_type::FULL, true, EXPECT (expected));
4585 CHECK_MATCH ("foo < char * > ( int ) const",
4586 symbol_name_match_type::WILD, true, EXPECT (expected));
4587 CHECK_MATCH ("foo < char * > ( int ) &&",
4588 symbol_name_match_type::WILD, true, EXPECT (expected));
4591 /* Test lookup names that don't match anything. */
4593 CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4596 CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4600 /* Some wild matching tests, exercising "(anonymous namespace)",
4601 which should not be confused with a parameter list. */
4603 static const char *syms[] = {
4607 "A :: B :: C ( int )",
4612 for (const char *s : syms)
4614 CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4615 EXPECT ("(anonymous namespace)::A::B::C"));
4620 static const char expected[] = "ns2::tmpl<int>::foo2";
4621 CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4623 CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4627 SELF_CHECK (!any_mismatch);
4636 test_mapped_index_find_name_component_bounds ();
4637 test_dw2_expand_symtabs_matching_symbol ();
4640 }} // namespace selftests::dw2_expand_symtabs_matching
4642 #endif /* GDB_SELF_TEST */
4644 /* If FILE_MATCHER is NULL or if PER_CU has
4645 dwarf2_per_cu_quick_data::MARK set (see
4646 dw_expand_symtabs_matching_file_matcher), expand the CU and call
4647 EXPANSION_NOTIFY on it. */
4650 dw2_expand_symtabs_matching_one
4651 (dwarf2_per_cu_data *per_cu,
4652 dwarf2_per_objfile *per_objfile,
4653 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4654 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
4656 if (file_matcher == NULL || per_cu->v.quick->mark)
4658 bool symtab_was_null = !per_objfile->symtab_set_p (per_cu);
4660 compunit_symtab *symtab
4661 = dw2_instantiate_symtab (per_cu, per_objfile, false);
4662 gdb_assert (symtab != nullptr);
4664 if (expansion_notify != NULL && symtab_was_null)
4665 expansion_notify (symtab);
4669 /* Helper for dw2_expand_matching symtabs. Called on each symbol
4670 matched, to expand corresponding CUs that were marked. IDX is the
4671 index of the symbol name that matched. */
4674 dw2_expand_marked_cus
4675 (dwarf2_per_objfile *per_objfile, offset_type idx,
4676 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4677 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
4680 offset_type *vec, vec_len, vec_idx;
4681 bool global_seen = false;
4682 mapped_index &index = *per_objfile->per_bfd->index_table;
4684 vec = (offset_type *) (index.constant_pool
4685 + MAYBE_SWAP (index.symbol_table[idx].vec));
4686 vec_len = MAYBE_SWAP (vec[0]);
4687 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
4689 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
4690 /* This value is only valid for index versions >= 7. */
4691 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
4692 gdb_index_symbol_kind symbol_kind =
4693 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
4694 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
4695 /* Only check the symbol attributes if they're present.
4696 Indices prior to version 7 don't record them,
4697 and indices >= 7 may elide them for certain symbols
4698 (gold does this). */
4701 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4703 /* Work around gold/15646. */
4706 && symbol_kind == GDB_INDEX_SYMBOL_KIND_TYPE)
4714 /* Only check the symbol's kind if it has one. */
4719 case VARIABLES_DOMAIN:
4720 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
4723 case FUNCTIONS_DOMAIN:
4724 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4728 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4731 case MODULES_DOMAIN:
4732 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4740 /* Don't crash on bad data. */
4741 if (cu_index >= (per_objfile->per_bfd->all_comp_units.size ()
4742 + per_objfile->per_bfd->all_type_units.size ()))
4744 complaint (_(".gdb_index entry has bad CU index"
4745 " [in module %s]"), objfile_name (per_objfile->objfile));
4749 dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cutu (cu_index);
4750 dw2_expand_symtabs_matching_one (per_cu, per_objfile, file_matcher,
4755 /* If FILE_MATCHER is non-NULL, set all the
4756 dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
4757 that match FILE_MATCHER. */
4760 dw_expand_symtabs_matching_file_matcher
4761 (dwarf2_per_objfile *per_objfile,
4762 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
4764 if (file_matcher == NULL)
4767 htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
4769 NULL, xcalloc, xfree));
4770 htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
4772 NULL, xcalloc, xfree));
4774 /* The rule is CUs specify all the files, including those used by
4775 any TU, so there's no need to scan TUs here. */
4777 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
4781 per_cu->v.quick->mark = 0;
4783 /* We only need to look at symtabs not already expanded. */
4784 if (per_objfile->symtab_set_p (per_cu))
4787 quick_file_names *file_data = dw2_get_file_names (per_cu, per_objfile);
4788 if (file_data == NULL)
4791 if (htab_find (visited_not_found.get (), file_data) != NULL)
4793 else if (htab_find (visited_found.get (), file_data) != NULL)
4795 per_cu->v.quick->mark = 1;
4799 for (int j = 0; j < file_data->num_file_names; ++j)
4801 const char *this_real_name;
4803 if (file_matcher (file_data->file_names[j], false))
4805 per_cu->v.quick->mark = 1;
4809 /* Before we invoke realpath, which can get expensive when many
4810 files are involved, do a quick comparison of the basenames. */
4811 if (!basenames_may_differ
4812 && !file_matcher (lbasename (file_data->file_names[j]),
4816 this_real_name = dw2_get_real_path (per_objfile, file_data, j);
4817 if (file_matcher (this_real_name, false))
4819 per_cu->v.quick->mark = 1;
4824 void **slot = htab_find_slot (per_cu->v.quick->mark
4825 ? visited_found.get ()
4826 : visited_not_found.get (),
4833 dw2_expand_symtabs_matching
4834 (struct objfile *objfile,
4835 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4836 const lookup_name_info *lookup_name,
4837 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4838 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
4839 enum search_domain kind)
4841 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
4843 /* index_table is NULL if OBJF_READNOW. */
4844 if (!per_objfile->per_bfd->index_table)
4847 dw_expand_symtabs_matching_file_matcher (per_objfile, file_matcher);
4849 if (symbol_matcher == NULL && lookup_name == NULL)
4851 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
4855 dw2_expand_symtabs_matching_one (per_cu, per_objfile,
4856 file_matcher, expansion_notify);
4861 mapped_index &index = *per_objfile->per_bfd->index_table;
4863 dw2_expand_symtabs_matching_symbol (index, *lookup_name,
4865 [&] (offset_type idx)
4867 dw2_expand_marked_cus (per_objfile, idx, file_matcher, expansion_notify,
4874 dwarf2_gdb_index::expand_symtabs_matching
4875 (struct objfile *objfile,
4876 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4877 const lookup_name_info *lookup_name,
4878 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4879 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
4880 enum search_domain kind)
4882 dw2_expand_symtabs_matching (objfile, file_matcher, lookup_name,
4883 symbol_matcher, expansion_notify, kind);
4886 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
4889 static struct compunit_symtab *
4890 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4895 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4896 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4899 if (cust->includes == NULL)
4902 for (i = 0; cust->includes[i]; ++i)
4904 struct compunit_symtab *s = cust->includes[i];
4906 s = recursively_find_pc_sect_compunit_symtab (s, pc);
4914 struct compunit_symtab *
4915 dwarf2_base_index_functions::find_pc_sect_compunit_symtab
4916 (struct objfile *objfile,
4917 struct bound_minimal_symbol msymbol,
4919 struct obj_section *section,
4922 struct dwarf2_per_cu_data *data;
4923 struct compunit_symtab *result;
4925 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
4926 if (per_objfile->per_bfd->index_addrmap == nullptr)
4929 CORE_ADDR baseaddr = objfile->text_section_offset ();
4930 data = ((struct dwarf2_per_cu_data *)
4931 addrmap_find (per_objfile->per_bfd->index_addrmap,
4936 if (warn_if_readin && per_objfile->symtab_set_p (data))
4937 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4938 paddress (objfile->arch (), pc));
4940 result = recursively_find_pc_sect_compunit_symtab
4941 (dw2_instantiate_symtab (data, per_objfile, false), pc);
4943 gdb_assert (result != NULL);
4948 dwarf2_base_index_functions::map_symbol_filenames (struct objfile *objfile,
4949 symbol_filename_ftype *fun,
4953 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
4955 if (!per_objfile->per_bfd->filenames_cache)
4957 per_objfile->per_bfd->filenames_cache.emplace ();
4959 htab_up visited (htab_create_alloc (10,
4960 htab_hash_pointer, htab_eq_pointer,
4961 NULL, xcalloc, xfree));
4963 /* The rule is CUs specify all the files, including those used
4964 by any TU, so there's no need to scan TUs here. We can
4965 ignore file names coming from already-expanded CUs. */
4967 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
4969 if (per_objfile->symtab_set_p (per_cu))
4971 void **slot = htab_find_slot (visited.get (),
4972 per_cu->v.quick->file_names,
4975 *slot = per_cu->v.quick->file_names;
4979 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
4981 /* We only need to look at symtabs not already expanded. */
4982 if (per_objfile->symtab_set_p (per_cu))
4985 quick_file_names *file_data
4986 = dw2_get_file_names (per_cu, per_objfile);
4987 if (file_data == NULL)
4990 void **slot = htab_find_slot (visited.get (), file_data, INSERT);
4993 /* Already visited. */
4998 for (int j = 0; j < file_data->num_file_names; ++j)
5000 const char *filename = file_data->file_names[j];
5001 per_objfile->per_bfd->filenames_cache->seen (filename);
5006 per_objfile->per_bfd->filenames_cache->traverse ([&] (const char *filename)
5008 gdb::unique_xmalloc_ptr<char> this_real_name;
5011 this_real_name = gdb_realpath (filename);
5012 (*fun) (filename, this_real_name.get (), data);
5017 dwarf2_base_index_functions::has_symbols (struct objfile *objfile)
5022 /* DWARF-5 debug_names reader. */
5024 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension. */
5025 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5027 /* A helper function that reads the .debug_names section in SECTION
5028 and fills in MAP. FILENAME is the name of the file containing the
5029 section; it is used for error reporting.
5031 Returns true if all went well, false otherwise. */
5034 read_debug_names_from_section (struct objfile *objfile,
5035 const char *filename,
5036 struct dwarf2_section_info *section,
5037 mapped_debug_names &map)
5039 if (section->empty ())
5042 /* Older elfutils strip versions could keep the section in the main
5043 executable while splitting it for the separate debug info file. */
5044 if ((section->get_flags () & SEC_HAS_CONTENTS) == 0)
5047 section->read (objfile);
5049 map.dwarf5_byte_order = gdbarch_byte_order (objfile->arch ());
5051 const gdb_byte *addr = section->buffer;
5053 bfd *const abfd = section->get_bfd_owner ();
5055 unsigned int bytes_read;
5056 LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5059 map.dwarf5_is_dwarf64 = bytes_read != 4;
5060 map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5061 if (bytes_read + length != section->size)
5063 /* There may be multiple per-CU indices. */
5064 warning (_("Section .debug_names in %s length %s does not match "
5065 "section length %s, ignoring .debug_names."),
5066 filename, plongest (bytes_read + length),
5067 pulongest (section->size));
5071 /* The version number. */
5072 uint16_t version = read_2_bytes (abfd, addr);
5076 warning (_("Section .debug_names in %s has unsupported version %d, "
5077 "ignoring .debug_names."),
5083 uint16_t padding = read_2_bytes (abfd, addr);
5087 warning (_("Section .debug_names in %s has unsupported padding %d, "
5088 "ignoring .debug_names."),
5093 /* comp_unit_count - The number of CUs in the CU list. */
5094 map.cu_count = read_4_bytes (abfd, addr);
5097 /* local_type_unit_count - The number of TUs in the local TU
5099 map.tu_count = read_4_bytes (abfd, addr);
5102 /* foreign_type_unit_count - The number of TUs in the foreign TU
5104 uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5106 if (foreign_tu_count != 0)
5108 warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5109 "ignoring .debug_names."),
5110 filename, static_cast<unsigned long> (foreign_tu_count));
5114 /* bucket_count - The number of hash buckets in the hash lookup
5116 map.bucket_count = read_4_bytes (abfd, addr);
5119 /* name_count - The number of unique names in the index. */
5120 map.name_count = read_4_bytes (abfd, addr);
5123 /* abbrev_table_size - The size in bytes of the abbreviations
5125 uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5128 /* augmentation_string_size - The size in bytes of the augmentation
5129 string. This value is rounded up to a multiple of 4. */
5130 uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5132 map.augmentation_is_gdb = ((augmentation_string_size
5133 == sizeof (dwarf5_augmentation))
5134 && memcmp (addr, dwarf5_augmentation,
5135 sizeof (dwarf5_augmentation)) == 0);
5136 augmentation_string_size += (-augmentation_string_size) & 3;
5137 addr += augmentation_string_size;
5140 map.cu_table_reordered = addr;
5141 addr += map.cu_count * map.offset_size;
5143 /* List of Local TUs */
5144 map.tu_table_reordered = addr;
5145 addr += map.tu_count * map.offset_size;
5147 /* Hash Lookup Table */
5148 map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5149 addr += map.bucket_count * 4;
5150 map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5151 addr += map.name_count * 4;
5154 map.name_table_string_offs_reordered = addr;
5155 addr += map.name_count * map.offset_size;
5156 map.name_table_entry_offs_reordered = addr;
5157 addr += map.name_count * map.offset_size;
5159 const gdb_byte *abbrev_table_start = addr;
5162 const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5167 const auto insertpair
5168 = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5169 if (!insertpair.second)
5171 warning (_("Section .debug_names in %s has duplicate index %s, "
5172 "ignoring .debug_names."),
5173 filename, pulongest (index_num));
5176 mapped_debug_names::index_val &indexval = insertpair.first->second;
5177 indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5182 mapped_debug_names::index_val::attr attr;
5183 attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5185 attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5187 if (attr.form == DW_FORM_implicit_const)
5189 attr.implicit_const = read_signed_leb128 (abfd, addr,
5193 if (attr.dw_idx == 0 && attr.form == 0)
5195 indexval.attr_vec.push_back (std::move (attr));
5198 if (addr != abbrev_table_start + abbrev_table_size)
5200 warning (_("Section .debug_names in %s has abbreviation_table "
5201 "of size %s vs. written as %u, ignoring .debug_names."),
5202 filename, plongest (addr - abbrev_table_start),
5206 map.entry_pool = addr;
5211 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5215 create_cus_from_debug_names_list (dwarf2_per_bfd *per_bfd,
5216 const mapped_debug_names &map,
5217 dwarf2_section_info §ion,
5220 if (!map.augmentation_is_gdb)
5222 for (uint32_t i = 0; i < map.cu_count; ++i)
5224 sect_offset sect_off
5225 = (sect_offset) (extract_unsigned_integer
5226 (map.cu_table_reordered + i * map.offset_size,
5228 map.dwarf5_byte_order));
5229 /* We don't know the length of the CU, because the CU list in a
5230 .debug_names index can be incomplete, so we can't use the start
5231 of the next CU as end of this CU. We create the CUs here with
5232 length 0, and in cutu_reader::cutu_reader we'll fill in the
5234 dwarf2_per_cu_data *per_cu
5235 = create_cu_from_index_list (per_bfd, §ion, is_dwz,
5237 per_bfd->all_comp_units.push_back (per_cu);
5242 sect_offset sect_off_prev;
5243 for (uint32_t i = 0; i <= map.cu_count; ++i)
5245 sect_offset sect_off_next;
5246 if (i < map.cu_count)
5249 = (sect_offset) (extract_unsigned_integer
5250 (map.cu_table_reordered + i * map.offset_size,
5252 map.dwarf5_byte_order));
5255 sect_off_next = (sect_offset) section.size;
5258 const ULONGEST length = sect_off_next - sect_off_prev;
5259 dwarf2_per_cu_data *per_cu
5260 = create_cu_from_index_list (per_bfd, §ion, is_dwz,
5261 sect_off_prev, length);
5262 per_bfd->all_comp_units.push_back (per_cu);
5264 sect_off_prev = sect_off_next;
5268 /* Read the CU list from the mapped index, and use it to create all
5269 the CU objects for this dwarf2_per_objfile. */
5272 create_cus_from_debug_names (dwarf2_per_bfd *per_bfd,
5273 const mapped_debug_names &map,
5274 const mapped_debug_names &dwz_map)
5276 gdb_assert (per_bfd->all_comp_units.empty ());
5277 per_bfd->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5279 create_cus_from_debug_names_list (per_bfd, map, per_bfd->info,
5280 false /* is_dwz */);
5282 if (dwz_map.cu_count == 0)
5285 dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
5286 create_cus_from_debug_names_list (per_bfd, dwz_map, dwz->info,
5290 /* Read .debug_names. If everything went ok, initialize the "quick"
5291 elements of all the CUs and return true. Otherwise, return false. */
5294 dwarf2_read_debug_names (dwarf2_per_objfile *per_objfile)
5296 std::unique_ptr<mapped_debug_names> map (new mapped_debug_names);
5297 mapped_debug_names dwz_map;
5298 struct objfile *objfile = per_objfile->objfile;
5299 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
5301 if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5302 &per_bfd->debug_names, *map))
5305 /* Don't use the index if it's empty. */
5306 if (map->name_count == 0)
5309 /* If there is a .dwz file, read it so we can get its CU list as
5311 dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
5314 if (!read_debug_names_from_section (objfile,
5315 bfd_get_filename (dwz->dwz_bfd.get ()),
5316 &dwz->debug_names, dwz_map))
5318 warning (_("could not read '.debug_names' section from %s; skipping"),
5319 bfd_get_filename (dwz->dwz_bfd.get ()));
5324 create_cus_from_debug_names (per_bfd, *map, dwz_map);
5326 if (map->tu_count != 0)
5328 /* We can only handle a single .debug_types when we have an
5330 if (per_bfd->types.size () != 1)
5333 dwarf2_section_info *section = &per_bfd->types[0];
5335 create_signatured_type_table_from_debug_names
5336 (per_objfile, *map, section, &per_bfd->abbrev);
5339 create_addrmap_from_aranges (per_objfile, &per_bfd->debug_aranges);
5341 per_bfd->debug_names_table = std::move (map);
5342 per_bfd->using_index = 1;
5343 per_bfd->quick_file_names_table =
5344 create_quick_file_names_table (per_bfd->all_comp_units.size ());
5349 /* Type used to manage iterating over all CUs looking for a symbol for
5352 class dw2_debug_names_iterator
5355 dw2_debug_names_iterator (const mapped_debug_names &map,
5356 gdb::optional<block_enum> block_index,
5358 const char *name, dwarf2_per_objfile *per_objfile)
5359 : m_map (map), m_block_index (block_index), m_domain (domain),
5360 m_addr (find_vec_in_debug_names (map, name, per_objfile)),
5361 m_per_objfile (per_objfile)
5364 dw2_debug_names_iterator (const mapped_debug_names &map,
5365 search_domain search, uint32_t namei, dwarf2_per_objfile *per_objfile)
5368 m_addr (find_vec_in_debug_names (map, namei, per_objfile)),
5369 m_per_objfile (per_objfile)
5372 dw2_debug_names_iterator (const mapped_debug_names &map,
5373 block_enum block_index, domain_enum domain,
5374 uint32_t namei, dwarf2_per_objfile *per_objfile)
5375 : m_map (map), m_block_index (block_index), m_domain (domain),
5376 m_addr (find_vec_in_debug_names (map, namei, per_objfile)),
5377 m_per_objfile (per_objfile)
5380 /* Return the next matching CU or NULL if there are no more. */
5381 dwarf2_per_cu_data *next ();
5384 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5386 dwarf2_per_objfile *per_objfile);
5387 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5389 dwarf2_per_objfile *per_objfile);
5391 /* The internalized form of .debug_names. */
5392 const mapped_debug_names &m_map;
5394 /* If set, only look for symbols that match that block. Valid values are
5395 GLOBAL_BLOCK and STATIC_BLOCK. */
5396 const gdb::optional<block_enum> m_block_index;
5398 /* The kind of symbol we're looking for. */
5399 const domain_enum m_domain = UNDEF_DOMAIN;
5400 const search_domain m_search = ALL_DOMAIN;
5402 /* The list of CUs from the index entry of the symbol, or NULL if
5404 const gdb_byte *m_addr;
5406 dwarf2_per_objfile *m_per_objfile;
5410 mapped_debug_names::namei_to_name
5411 (uint32_t namei, dwarf2_per_objfile *per_objfile) const
5413 const ULONGEST namei_string_offs
5414 = extract_unsigned_integer ((name_table_string_offs_reordered
5415 + namei * offset_size),
5418 return read_indirect_string_at_offset (per_objfile, namei_string_offs);
5421 /* Find a slot in .debug_names for the object named NAME. If NAME is
5422 found, return pointer to its pool data. If NAME cannot be found,
5426 dw2_debug_names_iterator::find_vec_in_debug_names
5427 (const mapped_debug_names &map, const char *name,
5428 dwarf2_per_objfile *per_objfile)
5430 int (*cmp) (const char *, const char *);
5432 gdb::unique_xmalloc_ptr<char> without_params;
5433 if (current_language->la_language == language_cplus
5434 || current_language->la_language == language_fortran
5435 || current_language->la_language == language_d)
5437 /* NAME is already canonical. Drop any qualifiers as
5438 .debug_names does not contain any. */
5440 if (strchr (name, '(') != NULL)
5442 without_params = cp_remove_params (name);
5443 if (without_params != NULL)
5444 name = without_params.get ();
5448 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5450 const uint32_t full_hash = dwarf5_djb_hash (name);
5452 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5453 (map.bucket_table_reordered
5454 + (full_hash % map.bucket_count)), 4,
5455 map.dwarf5_byte_order);
5459 if (namei >= map.name_count)
5461 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5463 namei, map.name_count,
5464 objfile_name (per_objfile->objfile));
5470 const uint32_t namei_full_hash
5471 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5472 (map.hash_table_reordered + namei), 4,
5473 map.dwarf5_byte_order);
5474 if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5477 if (full_hash == namei_full_hash)
5479 const char *const namei_string = map.namei_to_name (namei, per_objfile);
5481 #if 0 /* An expensive sanity check. */
5482 if (namei_full_hash != dwarf5_djb_hash (namei_string))
5484 complaint (_("Wrong .debug_names hash for string at index %u "
5486 namei, objfile_name (dwarf2_per_objfile->objfile));
5491 if (cmp (namei_string, name) == 0)
5493 const ULONGEST namei_entry_offs
5494 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5495 + namei * map.offset_size),
5496 map.offset_size, map.dwarf5_byte_order);
5497 return map.entry_pool + namei_entry_offs;
5502 if (namei >= map.name_count)
5508 dw2_debug_names_iterator::find_vec_in_debug_names
5509 (const mapped_debug_names &map, uint32_t namei, dwarf2_per_objfile *per_objfile)
5511 if (namei >= map.name_count)
5513 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5515 namei, map.name_count,
5516 objfile_name (per_objfile->objfile));
5520 const ULONGEST namei_entry_offs
5521 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5522 + namei * map.offset_size),
5523 map.offset_size, map.dwarf5_byte_order);
5524 return map.entry_pool + namei_entry_offs;
5527 /* See dw2_debug_names_iterator. */
5529 dwarf2_per_cu_data *
5530 dw2_debug_names_iterator::next ()
5535 dwarf2_per_bfd *per_bfd = m_per_objfile->per_bfd;
5536 struct objfile *objfile = m_per_objfile->objfile;
5537 bfd *const abfd = objfile->obfd;
5541 unsigned int bytes_read;
5542 const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5543 m_addr += bytes_read;
5547 const auto indexval_it = m_map.abbrev_map.find (abbrev);
5548 if (indexval_it == m_map.abbrev_map.cend ())
5550 complaint (_("Wrong .debug_names undefined abbrev code %s "
5552 pulongest (abbrev), objfile_name (objfile));
5555 const mapped_debug_names::index_val &indexval = indexval_it->second;
5556 enum class symbol_linkage {
5560 } symbol_linkage_ = symbol_linkage::unknown;
5561 dwarf2_per_cu_data *per_cu = NULL;
5562 for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5567 case DW_FORM_implicit_const:
5568 ull = attr.implicit_const;
5570 case DW_FORM_flag_present:
5574 ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5575 m_addr += bytes_read;
5578 ull = read_4_bytes (abfd, m_addr);
5582 ull = read_8_bytes (abfd, m_addr);
5585 case DW_FORM_ref_sig8:
5586 ull = read_8_bytes (abfd, m_addr);
5590 complaint (_("Unsupported .debug_names form %s [in module %s]"),
5591 dwarf_form_name (attr.form),
5592 objfile_name (objfile));
5595 switch (attr.dw_idx)
5597 case DW_IDX_compile_unit:
5598 /* Don't crash on bad data. */
5599 if (ull >= per_bfd->all_comp_units.size ())
5601 complaint (_(".debug_names entry has bad CU index %s"
5604 objfile_name (objfile));
5607 per_cu = per_bfd->get_cutu (ull);
5609 case DW_IDX_type_unit:
5610 /* Don't crash on bad data. */
5611 if (ull >= per_bfd->all_type_units.size ())
5613 complaint (_(".debug_names entry has bad TU index %s"
5616 objfile_name (objfile));
5619 per_cu = &per_bfd->get_tu (ull)->per_cu;
5621 case DW_IDX_die_offset:
5622 /* In a per-CU index (as opposed to a per-module index), index
5623 entries without CU attribute implicitly refer to the single CU. */
5625 per_cu = per_bfd->get_cu (0);
5627 case DW_IDX_GNU_internal:
5628 if (!m_map.augmentation_is_gdb)
5630 symbol_linkage_ = symbol_linkage::static_;
5632 case DW_IDX_GNU_external:
5633 if (!m_map.augmentation_is_gdb)
5635 symbol_linkage_ = symbol_linkage::extern_;
5640 /* Skip if already read in. */
5641 if (m_per_objfile->symtab_set_p (per_cu))
5644 /* Check static vs global. */
5645 if (symbol_linkage_ != symbol_linkage::unknown && m_block_index.has_value ())
5647 const bool want_static = *m_block_index == STATIC_BLOCK;
5648 const bool symbol_is_static =
5649 symbol_linkage_ == symbol_linkage::static_;
5650 if (want_static != symbol_is_static)
5654 /* Match dw2_symtab_iter_next, symbol_kind
5655 and debug_names::psymbol_tag. */
5659 switch (indexval.dwarf_tag)
5661 case DW_TAG_variable:
5662 case DW_TAG_subprogram:
5663 /* Some types are also in VAR_DOMAIN. */
5664 case DW_TAG_typedef:
5665 case DW_TAG_structure_type:
5672 switch (indexval.dwarf_tag)
5674 case DW_TAG_typedef:
5675 case DW_TAG_structure_type:
5682 switch (indexval.dwarf_tag)
5685 case DW_TAG_variable:
5692 switch (indexval.dwarf_tag)
5704 /* Match dw2_expand_symtabs_matching, symbol_kind and
5705 debug_names::psymbol_tag. */
5708 case VARIABLES_DOMAIN:
5709 switch (indexval.dwarf_tag)
5711 case DW_TAG_variable:
5717 case FUNCTIONS_DOMAIN:
5718 switch (indexval.dwarf_tag)
5720 case DW_TAG_subprogram:
5727 switch (indexval.dwarf_tag)
5729 case DW_TAG_typedef:
5730 case DW_TAG_structure_type:
5736 case MODULES_DOMAIN:
5737 switch (indexval.dwarf_tag)
5751 struct compunit_symtab *
5752 dwarf2_debug_names_index::lookup_symbol
5753 (struct objfile *objfile, block_enum block_index,
5754 const char *name, domain_enum domain)
5756 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5758 const auto &mapp = per_objfile->per_bfd->debug_names_table;
5761 /* index is NULL if OBJF_READNOW. */
5764 const auto &map = *mapp;
5766 dw2_debug_names_iterator iter (map, block_index, domain, name, per_objfile);
5768 struct compunit_symtab *stab_best = NULL;
5769 struct dwarf2_per_cu_data *per_cu;
5770 while ((per_cu = iter.next ()) != NULL)
5772 struct symbol *sym, *with_opaque = NULL;
5773 compunit_symtab *stab
5774 = dw2_instantiate_symtab (per_cu, per_objfile, false);
5775 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
5776 const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
5778 sym = block_find_symbol (block, name, domain,
5779 block_find_non_opaque_type_preferred,
5782 /* Some caution must be observed with overloaded functions and
5783 methods, since the index will not contain any overload
5784 information (but NAME might contain it). */
5787 && strcmp_iw (sym->search_name (), name) == 0)
5789 if (with_opaque != NULL
5790 && strcmp_iw (with_opaque->search_name (), name) == 0)
5793 /* Keep looking through other CUs. */
5799 /* This dumps minimal information about .debug_names. It is called
5800 via "mt print objfiles". The gdb.dwarf2/gdb-index.exp testcase
5801 uses this to verify that .debug_names has been loaded. */
5804 dwarf2_debug_names_index::dump (struct objfile *objfile)
5806 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5808 gdb_assert (per_objfile->per_bfd->using_index);
5809 printf_filtered (".debug_names:");
5810 if (per_objfile->per_bfd->debug_names_table)
5811 printf_filtered (" exists\n");
5813 printf_filtered (" faked for \"readnow\"\n");
5814 printf_filtered ("\n");
5818 dwarf2_debug_names_index::expand_symtabs_for_function
5819 (struct objfile *objfile, const char *func_name)
5821 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5823 /* per_objfile->per_bfd->debug_names_table is NULL if OBJF_READNOW. */
5824 if (per_objfile->per_bfd->debug_names_table)
5826 const mapped_debug_names &map = *per_objfile->per_bfd->debug_names_table;
5828 dw2_debug_names_iterator iter (map, {}, VAR_DOMAIN, func_name,
5831 struct dwarf2_per_cu_data *per_cu;
5832 while ((per_cu = iter.next ()) != NULL)
5833 dw2_instantiate_symtab (per_cu, per_objfile, false);
5838 dwarf2_debug_names_index::map_matching_symbols
5839 (struct objfile *objfile,
5840 const lookup_name_info &name, domain_enum domain,
5842 gdb::function_view<symbol_found_callback_ftype> callback,
5843 symbol_compare_ftype *ordered_compare)
5845 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5847 /* debug_names_table is NULL if OBJF_READNOW. */
5848 if (!per_objfile->per_bfd->debug_names_table)
5851 mapped_debug_names &map = *per_objfile->per_bfd->debug_names_table;
5852 const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
5854 const char *match_name = name.ada ().lookup_name ().c_str ();
5855 auto matcher = [&] (const char *symname)
5857 if (ordered_compare == nullptr)
5859 return ordered_compare (symname, match_name) == 0;
5862 dw2_expand_symtabs_matching_symbol (map, name, matcher,
5863 [&] (offset_type namei)
5865 /* The name was matched, now expand corresponding CUs that were
5867 dw2_debug_names_iterator iter (map, block_kind, domain, namei,
5870 struct dwarf2_per_cu_data *per_cu;
5871 while ((per_cu = iter.next ()) != NULL)
5872 dw2_expand_symtabs_matching_one (per_cu, per_objfile, nullptr,
5877 /* It's a shame we couldn't do this inside the
5878 dw2_expand_symtabs_matching_symbol callback, but that skips CUs
5879 that have already been expanded. Instead, this loop matches what
5880 the psymtab code does. */
5881 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
5883 compunit_symtab *symtab = per_objfile->get_symtab (per_cu);
5884 if (symtab != nullptr)
5886 const struct block *block
5887 = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (symtab), block_kind);
5888 if (!iterate_over_symbols_terminated (block, name,
5896 dwarf2_debug_names_index::expand_symtabs_matching
5897 (struct objfile *objfile,
5898 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5899 const lookup_name_info *lookup_name,
5900 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5901 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5902 enum search_domain kind)
5904 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5906 /* debug_names_table is NULL if OBJF_READNOW. */
5907 if (!per_objfile->per_bfd->debug_names_table)
5910 dw_expand_symtabs_matching_file_matcher (per_objfile, file_matcher);
5912 if (symbol_matcher == NULL && lookup_name == NULL)
5914 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
5918 dw2_expand_symtabs_matching_one (per_cu, per_objfile, file_matcher,
5924 mapped_debug_names &map = *per_objfile->per_bfd->debug_names_table;
5926 dw2_expand_symtabs_matching_symbol (map, *lookup_name,
5928 [&] (offset_type namei)
5930 /* The name was matched, now expand corresponding CUs that were
5932 dw2_debug_names_iterator iter (map, kind, namei, per_objfile);
5934 struct dwarf2_per_cu_data *per_cu;
5935 while ((per_cu = iter.next ()) != NULL)
5936 dw2_expand_symtabs_matching_one (per_cu, per_objfile, file_matcher,
5942 /* Get the content of the .gdb_index section of OBJ. SECTION_OWNER should point
5943 to either a dwarf2_per_bfd or dwz_file object. */
5945 template <typename T>
5946 static gdb::array_view<const gdb_byte>
5947 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
5949 dwarf2_section_info *section = §ion_owner->gdb_index;
5951 if (section->empty ())
5954 /* Older elfutils strip versions could keep the section in the main
5955 executable while splitting it for the separate debug info file. */
5956 if ((section->get_flags () & SEC_HAS_CONTENTS) == 0)
5959 section->read (obj);
5961 /* dwarf2_section_info::size is a bfd_size_type, while
5962 gdb::array_view works with size_t. On 32-bit hosts, with
5963 --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
5964 is 32-bit. So we need an explicit narrowing conversion here.
5965 This is fine, because it's impossible to allocate or mmap an
5966 array/buffer larger than what size_t can represent. */
5967 return gdb::make_array_view (section->buffer, section->size);
5970 /* Lookup the index cache for the contents of the index associated to
5973 static gdb::array_view<const gdb_byte>
5974 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_bfd *dwarf2_per_bfd)
5976 const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
5977 if (build_id == nullptr)
5980 return global_index_cache.lookup_gdb_index (build_id,
5981 &dwarf2_per_bfd->index_cache_res);
5984 /* Same as the above, but for DWZ. */
5986 static gdb::array_view<const gdb_byte>
5987 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
5989 const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
5990 if (build_id == nullptr)
5993 return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
5996 /* See symfile.h. */
5999 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6001 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
6002 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
6004 dwarf_read_debug_printf ("called");
6006 /* If we're about to read full symbols, don't bother with the
6007 indices. In this case we also don't care if some other debug
6008 format is making psymtabs, because they are all about to be
6010 if ((objfile->flags & OBJF_READNOW))
6012 dwarf_read_debug_printf ("readnow requested");
6014 /* When using READNOW, the using_index flag (set below) indicates that
6015 PER_BFD was already initialized, when we loaded some other objfile. */
6016 if (per_bfd->using_index)
6018 dwarf_read_debug_printf ("using_index already set");
6019 *index_kind = dw_index_kind::GDB_INDEX;
6020 per_objfile->resize_symtabs ();
6024 per_bfd->using_index = 1;
6025 create_all_comp_units (per_objfile);
6026 create_all_type_units (per_objfile);
6027 per_bfd->quick_file_names_table
6028 = create_quick_file_names_table (per_bfd->all_comp_units.size ());
6029 per_objfile->resize_symtabs ();
6031 for (int i = 0; i < (per_bfd->all_comp_units.size ()
6032 + per_bfd->all_type_units.size ()); ++i)
6034 dwarf2_per_cu_data *per_cu = per_bfd->get_cutu (i);
6036 per_cu->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
6037 struct dwarf2_per_cu_quick_data);
6040 /* Return 1 so that gdb sees the "quick" functions. However,
6041 these functions will be no-ops because we will have expanded
6043 *index_kind = dw_index_kind::GDB_INDEX;
6047 /* Was a debug names index already read when we processed an objfile sharing
6049 if (per_bfd->debug_names_table != nullptr)
6051 dwarf_read_debug_printf ("re-using shared debug names table");
6052 *index_kind = dw_index_kind::DEBUG_NAMES;
6053 per_objfile->resize_symtabs ();
6057 /* Was a GDB index already read when we processed an objfile sharing
6059 if (per_bfd->index_table != nullptr)
6061 dwarf_read_debug_printf ("re-using shared index table");
6062 *index_kind = dw_index_kind::GDB_INDEX;
6063 per_objfile->resize_symtabs ();
6067 /* There might already be partial symtabs built for this BFD. This happens
6068 when loading the same binary twice with the index-cache enabled. If so,
6069 don't try to read an index. The objfile / per_objfile initialization will
6070 be completed in dwarf2_build_psymtabs, in the standard partial symtabs
6072 if (per_bfd->partial_symtabs != nullptr)
6074 dwarf_read_debug_printf ("re-using shared partial symtabs");
6078 if (dwarf2_read_debug_names (per_objfile))
6080 dwarf_read_debug_printf ("found debug names");
6081 *index_kind = dw_index_kind::DEBUG_NAMES;
6082 per_objfile->resize_symtabs ();
6086 if (dwarf2_read_gdb_index (per_objfile,
6087 get_gdb_index_contents_from_section<struct dwarf2_per_bfd>,
6088 get_gdb_index_contents_from_section<dwz_file>))
6090 dwarf_read_debug_printf ("found gdb index from file");
6091 *index_kind = dw_index_kind::GDB_INDEX;
6092 per_objfile->resize_symtabs ();
6096 /* ... otherwise, try to find the index in the index cache. */
6097 if (dwarf2_read_gdb_index (per_objfile,
6098 get_gdb_index_contents_from_cache,
6099 get_gdb_index_contents_from_cache_dwz))
6101 dwarf_read_debug_printf ("found gdb index from cache");
6102 global_index_cache.hit ();
6103 *index_kind = dw_index_kind::GDB_INDEX;
6104 per_objfile->resize_symtabs ();
6108 global_index_cache.miss ();
6114 /* Build a partial symbol table. */
6117 dwarf2_build_psymtabs (struct objfile *objfile, psymbol_functions *psf)
6119 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
6120 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
6122 if (per_bfd->partial_symtabs != nullptr)
6124 /* Partial symbols were already read, so now we can simply
6128 psf = new psymbol_functions (per_bfd->partial_symtabs);
6129 objfile->qf.emplace_front (psf);
6132 psf->set_partial_symtabs (per_bfd->partial_symtabs);
6133 per_objfile->resize_symtabs ();
6139 psf = new psymbol_functions;
6140 objfile->qf.emplace_front (psf);
6142 const std::shared_ptr<psymtab_storage> &partial_symtabs
6143 = psf->get_partial_symtabs ();
6145 /* Set the local reference to partial symtabs, so that we don't try
6146 to read them again if reading another objfile with the same BFD.
6147 If we can't in fact share, this won't make a difference anyway as
6148 the dwarf2_per_bfd object won't be shared. */
6149 per_bfd->partial_symtabs = partial_symtabs;
6153 /* This isn't really ideal: all the data we allocate on the
6154 objfile's obstack is still uselessly kept around. However,
6155 freeing it seems unsafe. */
6156 psymtab_discarder psymtabs (partial_symtabs.get ());
6157 dwarf2_build_psymtabs_hard (per_objfile);
6160 per_objfile->resize_symtabs ();
6162 /* (maybe) store an index in the cache. */
6163 global_index_cache.store (per_objfile);
6165 catch (const gdb_exception_error &except)
6167 exception_print (gdb_stderr, except);
6171 /* Find the base address of the compilation unit for range lists and
6172 location lists. It will normally be specified by DW_AT_low_pc.
6173 In DWARF-3 draft 4, the base address could be overridden by
6174 DW_AT_entry_pc. It's been removed, but GCC still uses this for
6175 compilation units with discontinuous ranges. */
6178 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6180 struct attribute *attr;
6182 cu->base_address.reset ();
6184 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6185 if (attr != nullptr)
6186 cu->base_address = attr->as_address ();
6189 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6190 if (attr != nullptr)
6191 cu->base_address = attr->as_address ();
6195 /* Helper function that returns the proper abbrev section for
6198 static struct dwarf2_section_info *
6199 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6201 struct dwarf2_section_info *abbrev;
6202 dwarf2_per_bfd *per_bfd = this_cu->per_bfd;
6204 if (this_cu->is_dwz)
6205 abbrev = &dwarf2_get_dwz_file (per_bfd, true)->abbrev;
6207 abbrev = &per_bfd->abbrev;
6212 /* Fetch the abbreviation table offset from a comp or type unit header. */
6215 read_abbrev_offset (dwarf2_per_objfile *per_objfile,
6216 struct dwarf2_section_info *section,
6217 sect_offset sect_off)
6219 bfd *abfd = section->get_bfd_owner ();
6220 const gdb_byte *info_ptr;
6221 unsigned int initial_length_size, offset_size;
6224 section->read (per_objfile->objfile);
6225 info_ptr = section->buffer + to_underlying (sect_off);
6226 read_initial_length (abfd, info_ptr, &initial_length_size);
6227 offset_size = initial_length_size == 4 ? 4 : 8;
6228 info_ptr += initial_length_size;
6230 version = read_2_bytes (abfd, info_ptr);
6234 /* Skip unit type and address size. */
6238 return (sect_offset) read_offset (abfd, info_ptr, offset_size);
6241 /* A partial symtab that is used only for include files. */
6242 struct dwarf2_include_psymtab : public partial_symtab
6244 dwarf2_include_psymtab (const char *filename,
6245 psymtab_storage *partial_symtabs,
6246 struct objfile *objfile)
6247 : partial_symtab (filename, partial_symtabs, objfile)
6251 void read_symtab (struct objfile *objfile) override
6253 /* It's an include file, no symbols to read for it.
6254 Everything is in the includer symtab. */
6256 /* The expansion of a dwarf2_include_psymtab is just a trigger for
6257 expansion of the includer psymtab. We use the dependencies[0] field to
6258 model the includer. But if we go the regular route of calling
6259 expand_psymtab here, and having expand_psymtab call expand_dependencies
6260 to expand the includer, we'll only use expand_psymtab on the includer
6261 (making it a non-toplevel psymtab), while if we expand the includer via
6262 another path, we'll use read_symtab (making it a toplevel psymtab).
6263 So, don't pretend a dwarf2_include_psymtab is an actual toplevel
6264 psymtab, and trigger read_symtab on the includer here directly. */
6265 includer ()->read_symtab (objfile);
6268 void expand_psymtab (struct objfile *objfile) override
6270 /* This is not called by read_symtab, and should not be called by any
6271 expand_dependencies. */
6275 bool readin_p (struct objfile *objfile) const override
6277 return includer ()->readin_p (objfile);
6280 compunit_symtab *get_compunit_symtab (struct objfile *objfile) const override
6286 partial_symtab *includer () const
6288 /* An include psymtab has exactly one dependency: the psymtab that
6290 gdb_assert (this->number_of_dependencies == 1);
6291 return this->dependencies[0];
6295 /* Allocate a new partial symtab for file named NAME and mark this new
6296 partial symtab as being an include of PST. */
6299 dwarf2_create_include_psymtab (dwarf2_per_bfd *per_bfd,
6301 dwarf2_psymtab *pst,
6302 psymtab_storage *partial_symtabs,
6303 struct objfile *objfile)
6305 dwarf2_include_psymtab *subpst
6306 = new dwarf2_include_psymtab (name, partial_symtabs, objfile);
6308 if (!IS_ABSOLUTE_PATH (subpst->filename))
6309 subpst->dirname = pst->dirname;
6311 subpst->dependencies = per_bfd->partial_symtabs->allocate_dependencies (1);
6312 subpst->dependencies[0] = pst;
6313 subpst->number_of_dependencies = 1;
6316 /* Read the Line Number Program data and extract the list of files
6317 included by the source file represented by PST. Build an include
6318 partial symtab for each of these included files. */
6321 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6322 struct die_info *die,
6323 dwarf2_psymtab *pst)
6326 struct attribute *attr;
6328 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6329 if (attr != nullptr && attr->form_is_unsigned ())
6330 lh = dwarf_decode_line_header ((sect_offset) attr->as_unsigned (), cu);
6332 return; /* No linetable, so no includes. */
6334 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). Also note
6335 that we pass in the raw text_low here; that is ok because we're
6336 only decoding the line table to make include partial symtabs, and
6337 so the addresses aren't really used. */
6338 dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6339 pst->raw_text_low (), 1);
6343 hash_signatured_type (const void *item)
6345 const struct signatured_type *sig_type
6346 = (const struct signatured_type *) item;
6348 /* This drops the top 32 bits of the signature, but is ok for a hash. */
6349 return sig_type->signature;
6353 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6355 const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6356 const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6358 return lhs->signature == rhs->signature;
6361 /* Allocate a hash table for signatured types. */
6364 allocate_signatured_type_table ()
6366 return htab_up (htab_create_alloc (41,
6367 hash_signatured_type,
6369 NULL, xcalloc, xfree));
6372 /* A helper function to add a signatured type CU to a table. */
6375 add_signatured_type_cu_to_table (void **slot, void *datum)
6377 struct signatured_type *sigt = (struct signatured_type *) *slot;
6378 std::vector<signatured_type *> *all_type_units
6379 = (std::vector<signatured_type *> *) datum;
6381 all_type_units->push_back (sigt);
6386 /* A helper for create_debug_types_hash_table. Read types from SECTION
6387 and fill them into TYPES_HTAB. It will process only type units,
6388 therefore DW_UT_type. */
6391 create_debug_type_hash_table (dwarf2_per_objfile *per_objfile,
6392 struct dwo_file *dwo_file,
6393 dwarf2_section_info *section, htab_up &types_htab,
6394 rcuh_kind section_kind)
6396 struct objfile *objfile = per_objfile->objfile;
6397 struct dwarf2_section_info *abbrev_section;
6399 const gdb_byte *info_ptr, *end_ptr;
6401 abbrev_section = (dwo_file != NULL
6402 ? &dwo_file->sections.abbrev
6403 : &per_objfile->per_bfd->abbrev);
6405 dwarf_read_debug_printf ("Reading %s for %s",
6406 section->get_name (),
6407 abbrev_section->get_file_name ());
6409 section->read (objfile);
6410 info_ptr = section->buffer;
6412 if (info_ptr == NULL)
6415 /* We can't set abfd until now because the section may be empty or
6416 not present, in which case the bfd is unknown. */
6417 abfd = section->get_bfd_owner ();
6419 /* We don't use cutu_reader here because we don't need to read
6420 any dies: the signature is in the header. */
6422 end_ptr = info_ptr + section->size;
6423 while (info_ptr < end_ptr)
6425 struct signatured_type *sig_type;
6426 struct dwo_unit *dwo_tu;
6428 const gdb_byte *ptr = info_ptr;
6429 struct comp_unit_head header;
6430 unsigned int length;
6432 sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6434 /* Initialize it due to a false compiler warning. */
6435 header.signature = -1;
6436 header.type_cu_offset_in_tu = (cu_offset) -1;
6438 /* We need to read the type's signature in order to build the hash
6439 table, but we don't need anything else just yet. */
6441 ptr = read_and_check_comp_unit_head (per_objfile, &header, section,
6442 abbrev_section, ptr, section_kind);
6444 length = header.get_length ();
6446 /* Skip dummy type units. */
6447 if (ptr >= info_ptr + length
6448 || peek_abbrev_code (abfd, ptr) == 0
6449 || (header.unit_type != DW_UT_type
6450 && header.unit_type != DW_UT_split_type))
6456 if (types_htab == NULL)
6459 types_htab = allocate_dwo_unit_table ();
6461 types_htab = allocate_signatured_type_table ();
6467 dwo_tu = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, dwo_unit);
6468 dwo_tu->dwo_file = dwo_file;
6469 dwo_tu->signature = header.signature;
6470 dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6471 dwo_tu->section = section;
6472 dwo_tu->sect_off = sect_off;
6473 dwo_tu->length = length;
6477 /* N.B.: type_offset is not usable if this type uses a DWO file.
6478 The real type_offset is in the DWO file. */
6480 sig_type = per_objfile->per_bfd->allocate_signatured_type ();
6481 sig_type->signature = header.signature;
6482 sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6483 sig_type->per_cu.is_debug_types = 1;
6484 sig_type->per_cu.section = section;
6485 sig_type->per_cu.sect_off = sect_off;
6486 sig_type->per_cu.length = length;
6489 slot = htab_find_slot (types_htab.get (),
6490 dwo_file ? (void*) dwo_tu : (void *) sig_type,
6492 gdb_assert (slot != NULL);
6495 sect_offset dup_sect_off;
6499 const struct dwo_unit *dup_tu
6500 = (const struct dwo_unit *) *slot;
6502 dup_sect_off = dup_tu->sect_off;
6506 const struct signatured_type *dup_tu
6507 = (const struct signatured_type *) *slot;
6509 dup_sect_off = dup_tu->per_cu.sect_off;
6512 complaint (_("debug type entry at offset %s is duplicate to"
6513 " the entry at offset %s, signature %s"),
6514 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6515 hex_string (header.signature));
6517 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6519 dwarf_read_debug_printf_v (" offset %s, signature %s",
6520 sect_offset_str (sect_off),
6521 hex_string (header.signature));
6527 /* Create the hash table of all entries in the .debug_types
6528 (or .debug_types.dwo) section(s).
6529 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6530 otherwise it is NULL.
6532 The result is a pointer to the hash table or NULL if there are no types.
6534 Note: This function processes DWO files only, not DWP files. */
6537 create_debug_types_hash_table (dwarf2_per_objfile *per_objfile,
6538 struct dwo_file *dwo_file,
6539 gdb::array_view<dwarf2_section_info> type_sections,
6540 htab_up &types_htab)
6542 for (dwarf2_section_info §ion : type_sections)
6543 create_debug_type_hash_table (per_objfile, dwo_file, §ion, types_htab,
6547 /* Create the hash table of all entries in the .debug_types section,
6548 and initialize all_type_units.
6549 The result is zero if there is an error (e.g. missing .debug_types section),
6550 otherwise non-zero. */
6553 create_all_type_units (dwarf2_per_objfile *per_objfile)
6557 create_debug_type_hash_table (per_objfile, NULL, &per_objfile->per_bfd->info,
6558 types_htab, rcuh_kind::COMPILE);
6559 create_debug_types_hash_table (per_objfile, NULL, per_objfile->per_bfd->types,
6561 if (types_htab == NULL)
6563 per_objfile->per_bfd->signatured_types = NULL;
6567 per_objfile->per_bfd->signatured_types = std::move (types_htab);
6569 gdb_assert (per_objfile->per_bfd->all_type_units.empty ());
6570 per_objfile->per_bfd->all_type_units.reserve
6571 (htab_elements (per_objfile->per_bfd->signatured_types.get ()));
6573 htab_traverse_noresize (per_objfile->per_bfd->signatured_types.get (),
6574 add_signatured_type_cu_to_table,
6575 &per_objfile->per_bfd->all_type_units);
6580 /* Add an entry for signature SIG to dwarf2_per_objfile->per_bfd->signatured_types.
6581 If SLOT is non-NULL, it is the entry to use in the hash table.
6582 Otherwise we find one. */
6584 static struct signatured_type *
6585 add_type_unit (dwarf2_per_objfile *per_objfile, ULONGEST sig, void **slot)
6587 if (per_objfile->per_bfd->all_type_units.size ()
6588 == per_objfile->per_bfd->all_type_units.capacity ())
6589 ++per_objfile->per_bfd->tu_stats.nr_all_type_units_reallocs;
6591 signatured_type *sig_type = per_objfile->per_bfd->allocate_signatured_type ();
6593 per_objfile->resize_symtabs ();
6595 per_objfile->per_bfd->all_type_units.push_back (sig_type);
6596 sig_type->signature = sig;
6597 sig_type->per_cu.is_debug_types = 1;
6598 if (per_objfile->per_bfd->using_index)
6600 sig_type->per_cu.v.quick =
6601 OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack,
6602 struct dwarf2_per_cu_quick_data);
6607 slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
6610 gdb_assert (*slot == NULL);
6612 /* The rest of sig_type must be filled in by the caller. */
6616 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6617 Fill in SIG_ENTRY with DWO_ENTRY. */
6620 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile *per_objfile,
6621 struct signatured_type *sig_entry,
6622 struct dwo_unit *dwo_entry)
6624 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
6626 /* Make sure we're not clobbering something we don't expect to. */
6627 gdb_assert (! sig_entry->per_cu.queued);
6628 gdb_assert (per_objfile->get_cu (&sig_entry->per_cu) == NULL);
6629 if (per_bfd->using_index)
6631 gdb_assert (sig_entry->per_cu.v.quick != NULL);
6632 gdb_assert (!per_objfile->symtab_set_p (&sig_entry->per_cu));
6635 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6636 gdb_assert (sig_entry->signature == dwo_entry->signature);
6637 gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6638 gdb_assert (sig_entry->type_unit_group == NULL);
6639 gdb_assert (sig_entry->dwo_unit == NULL);
6641 sig_entry->per_cu.section = dwo_entry->section;
6642 sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6643 sig_entry->per_cu.length = dwo_entry->length;
6644 sig_entry->per_cu.reading_dwo_directly = 1;
6645 sig_entry->per_cu.per_bfd = per_bfd;
6646 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6647 sig_entry->dwo_unit = dwo_entry;
6650 /* Subroutine of lookup_signatured_type.
6651 If we haven't read the TU yet, create the signatured_type data structure
6652 for a TU to be read in directly from a DWO file, bypassing the stub.
6653 This is the "Stay in DWO Optimization": When there is no DWP file and we're
6654 using .gdb_index, then when reading a CU we want to stay in the DWO file
6655 containing that CU. Otherwise we could end up reading several other DWO
6656 files (due to comdat folding) to process the transitive closure of all the
6657 mentioned TUs, and that can be slow. The current DWO file will have every
6658 type signature that it needs.
6659 We only do this for .gdb_index because in the psymtab case we already have
6660 to read all the DWOs to build the type unit groups. */
6662 static struct signatured_type *
6663 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6665 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6666 struct dwo_file *dwo_file;
6667 struct dwo_unit find_dwo_entry, *dwo_entry;
6668 struct signatured_type find_sig_entry, *sig_entry;
6671 gdb_assert (cu->dwo_unit && per_objfile->per_bfd->using_index);
6673 /* If TU skeletons have been removed then we may not have read in any
6675 if (per_objfile->per_bfd->signatured_types == NULL)
6676 per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
6678 /* We only ever need to read in one copy of a signatured type.
6679 Use the global signatured_types array to do our own comdat-folding
6680 of types. If this is the first time we're reading this TU, and
6681 the TU has an entry in .gdb_index, replace the recorded data from
6682 .gdb_index with this TU. */
6684 find_sig_entry.signature = sig;
6685 slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
6686 &find_sig_entry, INSERT);
6687 sig_entry = (struct signatured_type *) *slot;
6689 /* We can get here with the TU already read, *or* in the process of being
6690 read. Don't reassign the global entry to point to this DWO if that's
6691 the case. Also note that if the TU is already being read, it may not
6692 have come from a DWO, the program may be a mix of Fission-compiled
6693 code and non-Fission-compiled code. */
6695 /* Have we already tried to read this TU?
6696 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6697 needn't exist in the global table yet). */
6698 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
6701 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
6702 dwo_unit of the TU itself. */
6703 dwo_file = cu->dwo_unit->dwo_file;
6705 /* Ok, this is the first time we're reading this TU. */
6706 if (dwo_file->tus == NULL)
6708 find_dwo_entry.signature = sig;
6709 dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus.get (),
6711 if (dwo_entry == NULL)
6714 /* If the global table doesn't have an entry for this TU, add one. */
6715 if (sig_entry == NULL)
6716 sig_entry = add_type_unit (per_objfile, sig, slot);
6718 fill_in_sig_entry_from_dwo_entry (per_objfile, sig_entry, dwo_entry);
6719 sig_entry->per_cu.tu_read = 1;
6723 /* Subroutine of lookup_signatured_type.
6724 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6725 then try the DWP file. If the TU stub (skeleton) has been removed then
6726 it won't be in .gdb_index. */
6728 static struct signatured_type *
6729 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6731 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6732 struct dwp_file *dwp_file = get_dwp_file (per_objfile);
6733 struct dwo_unit *dwo_entry;
6734 struct signatured_type find_sig_entry, *sig_entry;
6737 gdb_assert (cu->dwo_unit && per_objfile->per_bfd->using_index);
6738 gdb_assert (dwp_file != NULL);
6740 /* If TU skeletons have been removed then we may not have read in any
6742 if (per_objfile->per_bfd->signatured_types == NULL)
6743 per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
6745 find_sig_entry.signature = sig;
6746 slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
6747 &find_sig_entry, INSERT);
6748 sig_entry = (struct signatured_type *) *slot;
6750 /* Have we already tried to read this TU?
6751 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6752 needn't exist in the global table yet). */
6753 if (sig_entry != NULL)
6756 if (dwp_file->tus == NULL)
6758 dwo_entry = lookup_dwo_unit_in_dwp (per_objfile, dwp_file, NULL, sig,
6759 1 /* is_debug_types */);
6760 if (dwo_entry == NULL)
6763 sig_entry = add_type_unit (per_objfile, sig, slot);
6764 fill_in_sig_entry_from_dwo_entry (per_objfile, sig_entry, dwo_entry);
6769 /* Lookup a signature based type for DW_FORM_ref_sig8.
6770 Returns NULL if signature SIG is not present in the table.
6771 It is up to the caller to complain about this. */
6773 static struct signatured_type *
6774 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6776 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6778 if (cu->dwo_unit && per_objfile->per_bfd->using_index)
6780 /* We're in a DWO/DWP file, and we're using .gdb_index.
6781 These cases require special processing. */
6782 if (get_dwp_file (per_objfile) == NULL)
6783 return lookup_dwo_signatured_type (cu, sig);
6785 return lookup_dwp_signatured_type (cu, sig);
6789 struct signatured_type find_entry, *entry;
6791 if (per_objfile->per_bfd->signatured_types == NULL)
6793 find_entry.signature = sig;
6794 entry = ((struct signatured_type *)
6795 htab_find (per_objfile->per_bfd->signatured_types.get (),
6801 /* Low level DIE reading support. */
6803 /* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
6806 init_cu_die_reader (struct die_reader_specs *reader,
6807 struct dwarf2_cu *cu,
6808 struct dwarf2_section_info *section,
6809 struct dwo_file *dwo_file,
6810 struct abbrev_table *abbrev_table)
6812 gdb_assert (section->readin && section->buffer != NULL);
6813 reader->abfd = section->get_bfd_owner ();
6815 reader->dwo_file = dwo_file;
6816 reader->die_section = section;
6817 reader->buffer = section->buffer;
6818 reader->buffer_end = section->buffer + section->size;
6819 reader->abbrev_table = abbrev_table;
6822 /* Subroutine of cutu_reader to simplify it.
6823 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
6824 There's just a lot of work to do, and cutu_reader is big enough
6827 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
6828 from it to the DIE in the DWO. If NULL we are skipping the stub.
6829 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
6830 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
6831 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
6832 STUB_COMP_DIR may be non-NULL.
6833 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE
6834 are filled in with the info of the DIE from the DWO file.
6835 *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
6836 from the dwo. Since *RESULT_READER references this abbrev table, it must be
6837 kept around for at least as long as *RESULT_READER.
6839 The result is non-zero if a valid (non-dummy) DIE was found. */
6842 read_cutu_die_from_dwo (dwarf2_cu *cu,
6843 struct dwo_unit *dwo_unit,
6844 struct die_info *stub_comp_unit_die,
6845 const char *stub_comp_dir,
6846 struct die_reader_specs *result_reader,
6847 const gdb_byte **result_info_ptr,
6848 struct die_info **result_comp_unit_die,
6849 abbrev_table_up *result_dwo_abbrev_table)
6851 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6852 dwarf2_per_cu_data *per_cu = cu->per_cu;
6853 struct objfile *objfile = per_objfile->objfile;
6855 const gdb_byte *begin_info_ptr, *info_ptr;
6856 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
6857 int i,num_extra_attrs;
6858 struct dwarf2_section_info *dwo_abbrev_section;
6859 struct die_info *comp_unit_die;
6861 /* At most one of these may be provided. */
6862 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
6864 /* These attributes aren't processed until later:
6865 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
6866 DW_AT_comp_dir is used now, to find the DWO file, but it is also
6867 referenced later. However, these attributes are found in the stub
6868 which we won't have later. In order to not impose this complication
6869 on the rest of the code, we read them here and copy them to the
6878 if (stub_comp_unit_die != NULL)
6880 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
6882 if (!per_cu->is_debug_types)
6883 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
6884 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
6885 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
6886 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
6887 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
6889 cu->addr_base = stub_comp_unit_die->addr_base ();
6891 /* There should be a DW_AT_GNU_ranges_base attribute here (if needed).
6892 We need the value before we can process DW_AT_ranges values from the
6894 cu->gnu_ranges_base = stub_comp_unit_die->gnu_ranges_base ();
6896 /* For DWARF5: record the DW_AT_rnglists_base value from the skeleton. If
6897 there are attributes of form DW_FORM_rnglistx in the skeleton, they'll
6898 need the rnglists base. Attributes of form DW_FORM_rnglistx in the
6899 split unit don't use it, as the DWO has its own .debug_rnglists.dwo
6901 cu->rnglists_base = stub_comp_unit_die->rnglists_base ();
6903 else if (stub_comp_dir != NULL)
6905 /* Reconstruct the comp_dir attribute to simplify the code below. */
6906 comp_dir = OBSTACK_ZALLOC (&cu->comp_unit_obstack, struct attribute);
6907 comp_dir->name = DW_AT_comp_dir;
6908 comp_dir->form = DW_FORM_string;
6909 comp_dir->set_string_noncanonical (stub_comp_dir);
6912 /* Set up for reading the DWO CU/TU. */
6913 cu->dwo_unit = dwo_unit;
6914 dwarf2_section_info *section = dwo_unit->section;
6915 section->read (objfile);
6916 abfd = section->get_bfd_owner ();
6917 begin_info_ptr = info_ptr = (section->buffer
6918 + to_underlying (dwo_unit->sect_off));
6919 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
6921 if (per_cu->is_debug_types)
6923 signatured_type *sig_type = (struct signatured_type *) per_cu;
6925 info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
6926 section, dwo_abbrev_section,
6927 info_ptr, rcuh_kind::TYPE);
6928 /* This is not an assert because it can be caused by bad debug info. */
6929 if (sig_type->signature != cu->header.signature)
6931 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
6932 " TU at offset %s [in module %s]"),
6933 hex_string (sig_type->signature),
6934 hex_string (cu->header.signature),
6935 sect_offset_str (dwo_unit->sect_off),
6936 bfd_get_filename (abfd));
6938 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
6939 /* For DWOs coming from DWP files, we don't know the CU length
6940 nor the type's offset in the TU until now. */
6941 dwo_unit->length = cu->header.get_length ();
6942 dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
6944 /* Establish the type offset that can be used to lookup the type.
6945 For DWO files, we don't know it until now. */
6946 sig_type->type_offset_in_section
6947 = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
6951 info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
6952 section, dwo_abbrev_section,
6953 info_ptr, rcuh_kind::COMPILE);
6954 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
6955 /* For DWOs coming from DWP files, we don't know the CU length
6957 dwo_unit->length = cu->header.get_length ();
6960 dwo_abbrev_section->read (objfile);
6961 *result_dwo_abbrev_table
6962 = abbrev_table::read (dwo_abbrev_section, cu->header.abbrev_sect_off);
6963 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
6964 result_dwo_abbrev_table->get ());
6966 /* Read in the die, but leave space to copy over the attributes
6967 from the stub. This has the benefit of simplifying the rest of
6968 the code - all the work to maintain the illusion of a single
6969 DW_TAG_{compile,type}_unit DIE is done here. */
6970 num_extra_attrs = ((stmt_list != NULL)
6974 + (comp_dir != NULL));
6975 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
6978 /* Copy over the attributes from the stub to the DIE we just read in. */
6979 comp_unit_die = *result_comp_unit_die;
6980 i = comp_unit_die->num_attrs;
6981 if (stmt_list != NULL)
6982 comp_unit_die->attrs[i++] = *stmt_list;
6984 comp_unit_die->attrs[i++] = *low_pc;
6985 if (high_pc != NULL)
6986 comp_unit_die->attrs[i++] = *high_pc;
6988 comp_unit_die->attrs[i++] = *ranges;
6989 if (comp_dir != NULL)
6990 comp_unit_die->attrs[i++] = *comp_dir;
6991 comp_unit_die->num_attrs += num_extra_attrs;
6993 if (dwarf_die_debug)
6995 fprintf_unfiltered (gdb_stdlog,
6996 "Read die from %s@0x%x of %s:\n",
6997 section->get_name (),
6998 (unsigned) (begin_info_ptr - section->buffer),
6999 bfd_get_filename (abfd));
7000 dump_die (comp_unit_die, dwarf_die_debug);
7003 /* Skip dummy compilation units. */
7004 if (info_ptr >= begin_info_ptr + dwo_unit->length
7005 || peek_abbrev_code (abfd, info_ptr) == 0)
7008 *result_info_ptr = info_ptr;
7012 /* Return the signature of the compile unit, if found. In DWARF 4 and before,
7013 the signature is in the DW_AT_GNU_dwo_id attribute. In DWARF 5 and later, the
7014 signature is part of the header. */
7015 static gdb::optional<ULONGEST>
7016 lookup_dwo_id (struct dwarf2_cu *cu, struct die_info* comp_unit_die)
7018 if (cu->header.version >= 5)
7019 return cu->header.signature;
7020 struct attribute *attr;
7021 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7022 if (attr == nullptr || !attr->form_is_unsigned ())
7023 return gdb::optional<ULONGEST> ();
7024 return attr->as_unsigned ();
7027 /* Subroutine of cutu_reader to simplify it.
7028 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7029 Returns NULL if the specified DWO unit cannot be found. */
7031 static struct dwo_unit *
7032 lookup_dwo_unit (dwarf2_cu *cu, die_info *comp_unit_die, const char *dwo_name)
7034 dwarf2_per_cu_data *per_cu = cu->per_cu;
7035 struct dwo_unit *dwo_unit;
7036 const char *comp_dir;
7038 gdb_assert (cu != NULL);
7040 /* Yeah, we look dwo_name up again, but it simplifies the code. */
7041 dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
7042 comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7044 if (per_cu->is_debug_types)
7045 dwo_unit = lookup_dwo_type_unit (cu, dwo_name, comp_dir);
7048 gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
7050 if (!signature.has_value ())
7051 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7053 dwo_name, bfd_get_filename (per_cu->per_bfd->obfd));
7055 dwo_unit = lookup_dwo_comp_unit (cu, dwo_name, comp_dir, *signature);
7061 /* Subroutine of cutu_reader to simplify it.
7062 See it for a description of the parameters.
7063 Read a TU directly from a DWO file, bypassing the stub. */
7066 cutu_reader::init_tu_and_read_dwo_dies (dwarf2_per_cu_data *this_cu,
7067 dwarf2_per_objfile *per_objfile,
7068 dwarf2_cu *existing_cu)
7070 struct signatured_type *sig_type;
7072 /* Verify we can do the following downcast, and that we have the
7074 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7075 sig_type = (struct signatured_type *) this_cu;
7076 gdb_assert (sig_type->dwo_unit != NULL);
7080 if (existing_cu != nullptr)
7083 gdb_assert (cu->dwo_unit == sig_type->dwo_unit);
7084 /* There's no need to do the rereading_dwo_cu handling that
7085 cutu_reader does since we don't read the stub. */
7089 /* If an existing_cu is provided, a dwarf2_cu must not exist for this_cu
7090 in per_objfile yet. */
7091 gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
7092 m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
7093 cu = m_new_cu.get ();
7096 /* A future optimization, if needed, would be to use an existing
7097 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
7098 could share abbrev tables. */
7100 if (read_cutu_die_from_dwo (cu, sig_type->dwo_unit,
7101 NULL /* stub_comp_unit_die */,
7102 sig_type->dwo_unit->dwo_file->comp_dir,
7105 &m_dwo_abbrev_table) == 0)
7112 /* Initialize a CU (or TU) and read its DIEs.
7113 If the CU defers to a DWO file, read the DWO file as well.
7115 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7116 Otherwise the table specified in the comp unit header is read in and used.
7117 This is an optimization for when we already have the abbrev table.
7119 If EXISTING_CU is non-NULL, then use it. Otherwise, a new CU is
7122 cutu_reader::cutu_reader (dwarf2_per_cu_data *this_cu,
7123 dwarf2_per_objfile *per_objfile,
7124 struct abbrev_table *abbrev_table,
7125 dwarf2_cu *existing_cu,
7127 : die_reader_specs {},
7130 struct objfile *objfile = per_objfile->objfile;
7131 struct dwarf2_section_info *section = this_cu->section;
7132 bfd *abfd = section->get_bfd_owner ();
7133 const gdb_byte *begin_info_ptr;
7134 struct signatured_type *sig_type = NULL;
7135 struct dwarf2_section_info *abbrev_section;
7136 /* Non-zero if CU currently points to a DWO file and we need to
7137 reread it. When this happens we need to reread the skeleton die
7138 before we can reread the DWO file (this only applies to CUs, not TUs). */
7139 int rereading_dwo_cu = 0;
7141 if (dwarf_die_debug)
7142 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7143 this_cu->is_debug_types ? "type" : "comp",
7144 sect_offset_str (this_cu->sect_off));
7146 /* If we're reading a TU directly from a DWO file, including a virtual DWO
7147 file (instead of going through the stub), short-circuit all of this. */
7148 if (this_cu->reading_dwo_directly)
7150 /* Narrow down the scope of possibilities to have to understand. */
7151 gdb_assert (this_cu->is_debug_types);
7152 gdb_assert (abbrev_table == NULL);
7153 init_tu_and_read_dwo_dies (this_cu, per_objfile, existing_cu);
7157 /* This is cheap if the section is already read in. */
7158 section->read (objfile);
7160 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7162 abbrev_section = get_abbrev_section_for_cu (this_cu);
7166 if (existing_cu != nullptr)
7169 /* If this CU is from a DWO file we need to start over, we need to
7170 refetch the attributes from the skeleton CU.
7171 This could be optimized by retrieving those attributes from when we
7172 were here the first time: the previous comp_unit_die was stored in
7173 comp_unit_obstack. But there's no data yet that we need this
7175 if (cu->dwo_unit != NULL)
7176 rereading_dwo_cu = 1;
7180 /* If an existing_cu is provided, a dwarf2_cu must not exist for this_cu
7181 in per_objfile yet. */
7182 gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
7183 m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
7184 cu = m_new_cu.get ();
7187 /* Get the header. */
7188 if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7190 /* We already have the header, there's no need to read it in again. */
7191 info_ptr += to_underlying (cu->header.first_die_cu_offset);
7195 if (this_cu->is_debug_types)
7197 info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
7198 section, abbrev_section,
7199 info_ptr, rcuh_kind::TYPE);
7201 /* Since per_cu is the first member of struct signatured_type,
7202 we can go from a pointer to one to a pointer to the other. */
7203 sig_type = (struct signatured_type *) this_cu;
7204 gdb_assert (sig_type->signature == cu->header.signature);
7205 gdb_assert (sig_type->type_offset_in_tu
7206 == cu->header.type_cu_offset_in_tu);
7207 gdb_assert (this_cu->sect_off == cu->header.sect_off);
7209 /* LENGTH has not been set yet for type units if we're
7210 using .gdb_index. */
7211 this_cu->length = cu->header.get_length ();
7213 /* Establish the type offset that can be used to lookup the type. */
7214 sig_type->type_offset_in_section =
7215 this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7217 this_cu->dwarf_version = cu->header.version;
7221 info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
7222 section, abbrev_section,
7224 rcuh_kind::COMPILE);
7226 gdb_assert (this_cu->sect_off == cu->header.sect_off);
7227 if (this_cu->length == 0)
7228 this_cu->length = cu->header.get_length ();
7230 gdb_assert (this_cu->length == cu->header.get_length ());
7231 this_cu->dwarf_version = cu->header.version;
7235 /* Skip dummy compilation units. */
7236 if (info_ptr >= begin_info_ptr + this_cu->length
7237 || peek_abbrev_code (abfd, info_ptr) == 0)
7243 /* If we don't have them yet, read the abbrevs for this compilation unit.
7244 And if we need to read them now, make sure they're freed when we're
7246 if (abbrev_table != NULL)
7247 gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7250 abbrev_section->read (objfile);
7251 m_abbrev_table_holder
7252 = abbrev_table::read (abbrev_section, cu->header.abbrev_sect_off);
7253 abbrev_table = m_abbrev_table_holder.get ();
7256 /* Read the top level CU/TU die. */
7257 init_cu_die_reader (this, cu, section, NULL, abbrev_table);
7258 info_ptr = read_full_die (this, &comp_unit_die, info_ptr);
7260 if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7266 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7267 from the DWO file. read_cutu_die_from_dwo will allocate the abbreviation
7268 table from the DWO file and pass the ownership over to us. It will be
7269 referenced from READER, so we must make sure to free it after we're done
7272 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7273 DWO CU, that this test will fail (the attribute will not be present). */
7274 const char *dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
7275 if (dwo_name != nullptr)
7277 struct dwo_unit *dwo_unit;
7278 struct die_info *dwo_comp_unit_die;
7280 if (comp_unit_die->has_children)
7282 complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7283 " has children (offset %s) [in module %s]"),
7284 sect_offset_str (this_cu->sect_off),
7285 bfd_get_filename (abfd));
7287 dwo_unit = lookup_dwo_unit (cu, comp_unit_die, dwo_name);
7288 if (dwo_unit != NULL)
7290 if (read_cutu_die_from_dwo (cu, dwo_unit,
7291 comp_unit_die, NULL,
7294 &m_dwo_abbrev_table) == 0)
7300 comp_unit_die = dwo_comp_unit_die;
7304 /* Yikes, we couldn't find the rest of the DIE, we only have
7305 the stub. A complaint has already been logged. There's
7306 not much more we can do except pass on the stub DIE to
7307 die_reader_func. We don't want to throw an error on bad
7314 cutu_reader::keep ()
7316 /* Done, clean up. */
7317 gdb_assert (!dummy_p);
7318 if (m_new_cu != NULL)
7320 /* Save this dwarf2_cu in the per_objfile. The per_objfile owns it
7322 dwarf2_per_objfile *per_objfile = m_new_cu->per_objfile;
7323 per_objfile->set_cu (m_this_cu, m_new_cu.release ());
7327 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name (DW_AT_dwo_name)
7328 if present. DWO_FILE, if non-NULL, is the DWO file to read (the caller is
7329 assumed to have already done the lookup to find the DWO file).
7331 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7332 THIS_CU->is_debug_types, but nothing else.
7334 We fill in THIS_CU->length.
7336 THIS_CU->cu is always freed when done.
7337 This is done in order to not leave THIS_CU->cu in a state where we have
7338 to care whether it refers to the "main" CU or the DWO CU.
7340 When parent_cu is passed, it is used to provide a default value for
7341 str_offsets_base and addr_base from the parent. */
7343 cutu_reader::cutu_reader (dwarf2_per_cu_data *this_cu,
7344 dwarf2_per_objfile *per_objfile,
7345 struct dwarf2_cu *parent_cu,
7346 struct dwo_file *dwo_file)
7347 : die_reader_specs {},
7350 struct objfile *objfile = per_objfile->objfile;
7351 struct dwarf2_section_info *section = this_cu->section;
7352 bfd *abfd = section->get_bfd_owner ();
7353 struct dwarf2_section_info *abbrev_section;
7354 const gdb_byte *begin_info_ptr, *info_ptr;
7356 if (dwarf_die_debug)
7357 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7358 this_cu->is_debug_types ? "type" : "comp",
7359 sect_offset_str (this_cu->sect_off));
7361 gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
7363 abbrev_section = (dwo_file != NULL
7364 ? &dwo_file->sections.abbrev
7365 : get_abbrev_section_for_cu (this_cu));
7367 /* This is cheap if the section is already read in. */
7368 section->read (objfile);
7370 m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
7372 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7373 info_ptr = read_and_check_comp_unit_head (per_objfile, &m_new_cu->header,
7374 section, abbrev_section, info_ptr,
7375 (this_cu->is_debug_types
7377 : rcuh_kind::COMPILE));
7379 if (parent_cu != nullptr)
7381 m_new_cu->str_offsets_base = parent_cu->str_offsets_base;
7382 m_new_cu->addr_base = parent_cu->addr_base;
7384 this_cu->length = m_new_cu->header.get_length ();
7386 /* Skip dummy compilation units. */
7387 if (info_ptr >= begin_info_ptr + this_cu->length
7388 || peek_abbrev_code (abfd, info_ptr) == 0)
7394 abbrev_section->read (objfile);
7395 m_abbrev_table_holder
7396 = abbrev_table::read (abbrev_section, m_new_cu->header.abbrev_sect_off);
7398 init_cu_die_reader (this, m_new_cu.get (), section, dwo_file,
7399 m_abbrev_table_holder.get ());
7400 info_ptr = read_full_die (this, &comp_unit_die, info_ptr);
7404 /* Type Unit Groups.
7406 Type Unit Groups are a way to collapse the set of all TUs (type units) into
7407 a more manageable set. The grouping is done by DW_AT_stmt_list entry
7408 so that all types coming from the same compilation (.o file) are grouped
7409 together. A future step could be to put the types in the same symtab as
7410 the CU the types ultimately came from. */
7413 hash_type_unit_group (const void *item)
7415 const struct type_unit_group *tu_group
7416 = (const struct type_unit_group *) item;
7418 return hash_stmt_list_entry (&tu_group->hash);
7422 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7424 const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7425 const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7427 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7430 /* Allocate a hash table for type unit groups. */
7433 allocate_type_unit_groups_table ()
7435 return htab_up (htab_create_alloc (3,
7436 hash_type_unit_group,
7438 NULL, xcalloc, xfree));
7441 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7442 partial symtabs. We combine several TUs per psymtab to not let the size
7443 of any one psymtab grow too big. */
7444 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7445 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7447 /* Helper routine for get_type_unit_group.
7448 Create the type_unit_group object used to hold one or more TUs. */
7450 static struct type_unit_group *
7451 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7453 dwarf2_per_objfile *per_objfile = cu->per_objfile;
7454 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
7455 struct dwarf2_per_cu_data *per_cu;
7456 struct type_unit_group *tu_group;
7458 tu_group = OBSTACK_ZALLOC (&per_bfd->obstack, type_unit_group);
7459 per_cu = &tu_group->per_cu;
7460 per_cu->per_bfd = per_bfd;
7462 if (per_bfd->using_index)
7464 per_cu->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
7465 struct dwarf2_per_cu_quick_data);
7469 unsigned int line_offset = to_underlying (line_offset_struct);
7470 dwarf2_psymtab *pst;
7473 /* Give the symtab a useful name for debug purposes. */
7474 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7475 name = string_printf ("<type_units_%d>",
7476 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7478 name = string_printf ("<type_units_at_0x%x>", line_offset);
7480 pst = create_partial_symtab (per_cu, per_objfile, name.c_str ());
7481 pst->anonymous = true;
7484 tu_group->hash.dwo_unit = cu->dwo_unit;
7485 tu_group->hash.line_sect_off = line_offset_struct;
7490 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7491 STMT_LIST is a DW_AT_stmt_list attribute. */
7493 static struct type_unit_group *
7494 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7496 dwarf2_per_objfile *per_objfile = cu->per_objfile;
7497 struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
7498 struct type_unit_group *tu_group;
7500 unsigned int line_offset;
7501 struct type_unit_group type_unit_group_for_lookup;
7503 if (per_objfile->per_bfd->type_unit_groups == NULL)
7504 per_objfile->per_bfd->type_unit_groups = allocate_type_unit_groups_table ();
7506 /* Do we need to create a new group, or can we use an existing one? */
7508 if (stmt_list != nullptr && stmt_list->form_is_unsigned ())
7510 line_offset = stmt_list->as_unsigned ();
7511 ++tu_stats->nr_symtab_sharers;
7515 /* Ugh, no stmt_list. Rare, but we have to handle it.
7516 We can do various things here like create one group per TU or
7517 spread them over multiple groups to split up the expansion work.
7518 To avoid worst case scenarios (too many groups or too large groups)
7519 we, umm, group them in bunches. */
7520 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7521 | (tu_stats->nr_stmt_less_type_units
7522 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7523 ++tu_stats->nr_stmt_less_type_units;
7526 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7527 type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7528 slot = htab_find_slot (per_objfile->per_bfd->type_unit_groups.get (),
7529 &type_unit_group_for_lookup, INSERT);
7532 tu_group = (struct type_unit_group *) *slot;
7533 gdb_assert (tu_group != NULL);
7537 sect_offset line_offset_struct = (sect_offset) line_offset;
7538 tu_group = create_type_unit_group (cu, line_offset_struct);
7540 ++tu_stats->nr_symtabs;
7546 /* Partial symbol tables. */
7548 /* Create a psymtab named NAME and assign it to PER_CU.
7550 The caller must fill in the following details:
7551 dirname, textlow, texthigh. */
7553 static dwarf2_psymtab *
7554 create_partial_symtab (dwarf2_per_cu_data *per_cu,
7555 dwarf2_per_objfile *per_objfile,
7558 struct objfile *objfile = per_objfile->objfile;
7559 dwarf2_psymtab *pst;
7561 pst = new dwarf2_psymtab (name, per_objfile->per_bfd->partial_symtabs.get (),
7564 pst->psymtabs_addrmap_supported = true;
7566 /* This is the glue that links PST into GDB's symbol API. */
7567 per_cu->v.psymtab = pst;
7572 /* DIE reader function for process_psymtab_comp_unit. */
7575 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7576 const gdb_byte *info_ptr,
7577 struct die_info *comp_unit_die,
7578 enum language pretend_language)
7580 struct dwarf2_cu *cu = reader->cu;
7581 dwarf2_per_objfile *per_objfile = cu->per_objfile;
7582 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
7583 struct objfile *objfile = per_objfile->objfile;
7584 struct gdbarch *gdbarch = objfile->arch ();
7585 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7587 CORE_ADDR best_lowpc = 0, best_highpc = 0;
7588 dwarf2_psymtab *pst;
7589 enum pc_bounds_kind cu_bounds_kind;
7590 const char *filename;
7592 gdb_assert (! per_cu->is_debug_types);
7594 prepare_one_comp_unit (cu, comp_unit_die, pretend_language);
7596 /* Allocate a new partial symbol table structure. */
7597 gdb::unique_xmalloc_ptr<char> debug_filename;
7598 static const char artificial[] = "<artificial>";
7599 filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7600 if (filename == NULL)
7602 else if (strcmp (filename, artificial) == 0)
7604 debug_filename.reset (concat (artificial, "@",
7605 sect_offset_str (per_cu->sect_off),
7607 filename = debug_filename.get ();
7610 pst = create_partial_symtab (per_cu, per_objfile, filename);
7612 /* This must be done before calling dwarf2_build_include_psymtabs. */
7613 pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7615 baseaddr = objfile->text_section_offset ();
7617 dwarf2_find_base_address (comp_unit_die, cu);
7619 /* Possibly set the default values of LOWPC and HIGHPC from
7621 cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
7622 &best_highpc, cu, pst);
7623 if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
7626 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
7629 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
7631 /* Store the contiguous range if it is not empty; it can be
7632 empty for CUs with no code. */
7633 addrmap_set_empty (per_bfd->partial_symtabs->psymtabs_addrmap,
7637 /* Check if comp unit has_children.
7638 If so, read the rest of the partial symbols from this comp unit.
7639 If not, there's no more debug_info for this comp unit. */
7640 if (comp_unit_die->has_children)
7642 struct partial_die_info *first_die;
7643 CORE_ADDR lowpc, highpc;
7645 lowpc = ((CORE_ADDR) -1);
7646 highpc = ((CORE_ADDR) 0);
7648 first_die = load_partial_dies (reader, info_ptr, 1);
7650 scan_partial_symbols (first_die, &lowpc, &highpc,
7651 cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
7653 /* If we didn't find a lowpc, set it to highpc to avoid
7654 complaints from `maint check'. */
7655 if (lowpc == ((CORE_ADDR) -1))
7658 /* If the compilation unit didn't have an explicit address range,
7659 then use the information extracted from its child dies. */
7660 if (cu_bounds_kind <= PC_BOUNDS_INVALID)
7663 best_highpc = highpc;
7666 pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
7667 best_lowpc + baseaddr)
7669 pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
7670 best_highpc + baseaddr)
7675 if (!cu->per_cu->imported_symtabs_empty ())
7678 int len = cu->per_cu->imported_symtabs_size ();
7680 /* Fill in 'dependencies' here; we fill in 'users' in a
7682 pst->number_of_dependencies = len;
7684 = per_bfd->partial_symtabs->allocate_dependencies (len);
7685 for (i = 0; i < len; ++i)
7687 pst->dependencies[i]
7688 = cu->per_cu->imported_symtabs->at (i)->v.psymtab;
7691 cu->per_cu->imported_symtabs_free ();
7694 /* Get the list of files included in the current compilation unit,
7695 and build a psymtab for each of them. */
7696 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
7698 dwarf_read_debug_printf ("Psymtab for %s unit @%s: %s - %s"
7699 ", %d global, %d static syms",
7700 per_cu->is_debug_types ? "type" : "comp",
7701 sect_offset_str (per_cu->sect_off),
7702 paddress (gdbarch, pst->text_low (objfile)),
7703 paddress (gdbarch, pst->text_high (objfile)),
7704 (int) pst->global_psymbols.size (),
7705 (int) pst->static_psymbols.size ());
7708 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
7709 Process compilation unit THIS_CU for a psymtab. */
7712 process_psymtab_comp_unit (dwarf2_per_cu_data *this_cu,
7713 dwarf2_per_objfile *per_objfile,
7714 bool want_partial_unit,
7715 enum language pretend_language)
7717 /* If this compilation unit was already read in, free the
7718 cached copy in order to read it in again. This is
7719 necessary because we skipped some symbols when we first
7720 read in the compilation unit (see load_partial_dies).
7721 This problem could be avoided, but the benefit is unclear. */
7722 per_objfile->remove_cu (this_cu);
7724 cutu_reader reader (this_cu, per_objfile, nullptr, nullptr, false);
7726 switch (reader.comp_unit_die->tag)
7728 case DW_TAG_compile_unit:
7729 this_cu->unit_type = DW_UT_compile;
7731 case DW_TAG_partial_unit:
7732 this_cu->unit_type = DW_UT_partial;
7734 case DW_TAG_type_unit:
7735 this_cu->unit_type = DW_UT_type;
7738 error (_("Dwarf Error: unexpected tag '%s' at offset %s [in module %s]"),
7739 dwarf_tag_name (reader.comp_unit_die->tag),
7740 sect_offset_str (reader.cu->per_cu->sect_off),
7741 objfile_name (per_objfile->objfile));
7748 else if (this_cu->is_debug_types)
7749 build_type_psymtabs_reader (&reader, reader.info_ptr,
7750 reader.comp_unit_die);
7751 else if (want_partial_unit
7752 || reader.comp_unit_die->tag != DW_TAG_partial_unit)
7753 process_psymtab_comp_unit_reader (&reader, reader.info_ptr,
7754 reader.comp_unit_die,
7757 this_cu->lang = reader.cu->language;
7759 /* Age out any secondary CUs. */
7760 per_objfile->age_comp_units ();
7763 /* Reader function for build_type_psymtabs. */
7766 build_type_psymtabs_reader (const struct die_reader_specs *reader,
7767 const gdb_byte *info_ptr,
7768 struct die_info *type_unit_die)
7770 dwarf2_per_objfile *per_objfile = reader->cu->per_objfile;
7771 struct dwarf2_cu *cu = reader->cu;
7772 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7773 struct signatured_type *sig_type;
7774 struct type_unit_group *tu_group;
7775 struct attribute *attr;
7776 struct partial_die_info *first_die;
7777 CORE_ADDR lowpc, highpc;
7778 dwarf2_psymtab *pst;
7780 gdb_assert (per_cu->is_debug_types);
7781 sig_type = (struct signatured_type *) per_cu;
7783 if (! type_unit_die->has_children)
7786 attr = type_unit_die->attr (DW_AT_stmt_list);
7787 tu_group = get_type_unit_group (cu, attr);
7789 if (tu_group->tus == nullptr)
7790 tu_group->tus = new std::vector<signatured_type *>;
7791 tu_group->tus->push_back (sig_type);
7793 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
7794 pst = create_partial_symtab (per_cu, per_objfile, "");
7795 pst->anonymous = true;
7797 first_die = load_partial_dies (reader, info_ptr, 1);
7799 lowpc = (CORE_ADDR) -1;
7800 highpc = (CORE_ADDR) 0;
7801 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
7806 /* Struct used to sort TUs by their abbreviation table offset. */
7808 struct tu_abbrev_offset
7810 tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
7811 : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
7814 signatured_type *sig_type;
7815 sect_offset abbrev_offset;
7818 /* Helper routine for build_type_psymtabs_1, passed to std::sort. */
7821 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
7822 const struct tu_abbrev_offset &b)
7824 return a.abbrev_offset < b.abbrev_offset;
7827 /* Efficiently read all the type units.
7828 This does the bulk of the work for build_type_psymtabs.
7830 The efficiency is because we sort TUs by the abbrev table they use and
7831 only read each abbrev table once. In one program there are 200K TUs
7832 sharing 8K abbrev tables.
7834 The main purpose of this function is to support building the
7835 dwarf2_per_objfile->per_bfd->type_unit_groups table.
7836 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
7837 can collapse the search space by grouping them by stmt_list.
7838 The savings can be significant, in the same program from above the 200K TUs
7839 share 8K stmt_list tables.
7841 FUNC is expected to call get_type_unit_group, which will create the
7842 struct type_unit_group if necessary and add it to
7843 dwarf2_per_objfile->per_bfd->type_unit_groups. */
7846 build_type_psymtabs_1 (dwarf2_per_objfile *per_objfile)
7848 struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
7849 abbrev_table_up abbrev_table;
7850 sect_offset abbrev_offset;
7852 /* It's up to the caller to not call us multiple times. */
7853 gdb_assert (per_objfile->per_bfd->type_unit_groups == NULL);
7855 if (per_objfile->per_bfd->all_type_units.empty ())
7858 /* TUs typically share abbrev tables, and there can be way more TUs than
7859 abbrev tables. Sort by abbrev table to reduce the number of times we
7860 read each abbrev table in.
7861 Alternatives are to punt or to maintain a cache of abbrev tables.
7862 This is simpler and efficient enough for now.
7864 Later we group TUs by their DW_AT_stmt_list value (as this defines the
7865 symtab to use). Typically TUs with the same abbrev offset have the same
7866 stmt_list value too so in practice this should work well.
7868 The basic algorithm here is:
7870 sort TUs by abbrev table
7871 for each TU with same abbrev table:
7872 read abbrev table if first user
7873 read TU top level DIE
7874 [IWBN if DWO skeletons had DW_AT_stmt_list]
7877 dwarf_read_debug_printf ("Building type unit groups ...");
7879 /* Sort in a separate table to maintain the order of all_type_units
7880 for .gdb_index: TU indices directly index all_type_units. */
7881 std::vector<tu_abbrev_offset> sorted_by_abbrev;
7882 sorted_by_abbrev.reserve (per_objfile->per_bfd->all_type_units.size ());
7884 for (signatured_type *sig_type : per_objfile->per_bfd->all_type_units)
7885 sorted_by_abbrev.emplace_back
7886 (sig_type, read_abbrev_offset (per_objfile, sig_type->per_cu.section,
7887 sig_type->per_cu.sect_off));
7889 std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
7890 sort_tu_by_abbrev_offset);
7892 abbrev_offset = (sect_offset) ~(unsigned) 0;
7894 for (const tu_abbrev_offset &tu : sorted_by_abbrev)
7896 /* Switch to the next abbrev table if necessary. */
7897 if (abbrev_table == NULL
7898 || tu.abbrev_offset != abbrev_offset)
7900 abbrev_offset = tu.abbrev_offset;
7901 per_objfile->per_bfd->abbrev.read (per_objfile->objfile);
7903 abbrev_table::read (&per_objfile->per_bfd->abbrev, abbrev_offset);
7904 ++tu_stats->nr_uniq_abbrev_tables;
7907 cutu_reader reader (&tu.sig_type->per_cu, per_objfile,
7908 abbrev_table.get (), nullptr, false);
7909 if (!reader.dummy_p)
7910 build_type_psymtabs_reader (&reader, reader.info_ptr,
7911 reader.comp_unit_die);
7915 /* Print collected type unit statistics. */
7918 print_tu_stats (dwarf2_per_objfile *per_objfile)
7920 struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
7922 dwarf_read_debug_printf ("Type unit statistics:");
7923 dwarf_read_debug_printf (" %zu TUs",
7924 per_objfile->per_bfd->all_type_units.size ());
7925 dwarf_read_debug_printf (" %d uniq abbrev tables",
7926 tu_stats->nr_uniq_abbrev_tables);
7927 dwarf_read_debug_printf (" %d symtabs from stmt_list entries",
7928 tu_stats->nr_symtabs);
7929 dwarf_read_debug_printf (" %d symtab sharers",
7930 tu_stats->nr_symtab_sharers);
7931 dwarf_read_debug_printf (" %d type units without a stmt_list",
7932 tu_stats->nr_stmt_less_type_units);
7933 dwarf_read_debug_printf (" %d all_type_units reallocs",
7934 tu_stats->nr_all_type_units_reallocs);
7937 /* Traversal function for build_type_psymtabs. */
7940 build_type_psymtab_dependencies (void **slot, void *info)
7942 dwarf2_per_objfile *per_objfile = (dwarf2_per_objfile *) info;
7943 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
7944 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
7945 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
7946 dwarf2_psymtab *pst = per_cu->v.psymtab;
7947 int len = (tu_group->tus == nullptr) ? 0 : tu_group->tus->size ();
7950 gdb_assert (len > 0);
7951 gdb_assert (per_cu->type_unit_group_p ());
7953 pst->number_of_dependencies = len;
7954 pst->dependencies = per_bfd->partial_symtabs->allocate_dependencies (len);
7955 for (i = 0; i < len; ++i)
7957 struct signatured_type *iter = tu_group->tus->at (i);
7958 gdb_assert (iter->per_cu.is_debug_types);
7959 pst->dependencies[i] = iter->per_cu.v.psymtab;
7960 iter->type_unit_group = tu_group;
7963 delete tu_group->tus;
7964 tu_group->tus = nullptr;
7969 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
7970 Build partial symbol tables for the .debug_types comp-units. */
7973 build_type_psymtabs (dwarf2_per_objfile *per_objfile)
7975 if (! create_all_type_units (per_objfile))
7978 build_type_psymtabs_1 (per_objfile);
7981 /* Traversal function for process_skeletonless_type_unit.
7982 Read a TU in a DWO file and build partial symbols for it. */
7985 process_skeletonless_type_unit (void **slot, void *info)
7987 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
7988 dwarf2_per_objfile *per_objfile = (dwarf2_per_objfile *) info;
7989 struct signatured_type find_entry, *entry;
7991 /* If this TU doesn't exist in the global table, add it and read it in. */
7993 if (per_objfile->per_bfd->signatured_types == NULL)
7994 per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
7996 find_entry.signature = dwo_unit->signature;
7997 slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
7998 &find_entry, INSERT);
7999 /* If we've already seen this type there's nothing to do. What's happening
8000 is we're doing our own version of comdat-folding here. */
8004 /* This does the job that create_all_type_units would have done for
8006 entry = add_type_unit (per_objfile, dwo_unit->signature, slot);
8007 fill_in_sig_entry_from_dwo_entry (per_objfile, entry, dwo_unit);
8010 /* This does the job that build_type_psymtabs_1 would have done. */
8011 cutu_reader reader (&entry->per_cu, per_objfile, nullptr, nullptr, false);
8012 if (!reader.dummy_p)
8013 build_type_psymtabs_reader (&reader, reader.info_ptr,
8014 reader.comp_unit_die);
8019 /* Traversal function for process_skeletonless_type_units. */
8022 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8024 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8026 if (dwo_file->tus != NULL)
8027 htab_traverse_noresize (dwo_file->tus.get (),
8028 process_skeletonless_type_unit, info);
8033 /* Scan all TUs of DWO files, verifying we've processed them.
8034 This is needed in case a TU was emitted without its skeleton.
8035 Note: This can't be done until we know what all the DWO files are. */
8038 process_skeletonless_type_units (dwarf2_per_objfile *per_objfile)
8040 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
8041 if (get_dwp_file (per_objfile) == NULL
8042 && per_objfile->per_bfd->dwo_files != NULL)
8044 htab_traverse_noresize (per_objfile->per_bfd->dwo_files.get (),
8045 process_dwo_file_for_skeletonless_type_units,
8050 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE. */
8053 set_partial_user (dwarf2_per_objfile *per_objfile)
8055 for (dwarf2_per_cu_data *per_cu : per_objfile->per_bfd->all_comp_units)
8057 dwarf2_psymtab *pst = per_cu->v.psymtab;
8062 for (int j = 0; j < pst->number_of_dependencies; ++j)
8064 /* Set the 'user' field only if it is not already set. */
8065 if (pst->dependencies[j]->user == NULL)
8066 pst->dependencies[j]->user = pst;
8071 /* Build the partial symbol table by doing a quick pass through the
8072 .debug_info and .debug_abbrev sections. */
8075 dwarf2_build_psymtabs_hard (dwarf2_per_objfile *per_objfile)
8077 struct objfile *objfile = per_objfile->objfile;
8078 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
8080 dwarf_read_debug_printf ("Building psymtabs of objfile %s ...",
8081 objfile_name (objfile));
8083 scoped_restore restore_reading_psyms
8084 = make_scoped_restore (&per_bfd->reading_partial_symbols, true);
8086 per_bfd->info.read (objfile);
8088 /* Any cached compilation units will be linked by the per-objfile
8089 read_in_chain. Make sure to free them when we're done. */
8090 free_cached_comp_units freer (per_objfile);
8092 build_type_psymtabs (per_objfile);
8094 create_all_comp_units (per_objfile);
8096 /* Create a temporary address map on a temporary obstack. We later
8097 copy this to the final obstack. */
8098 auto_obstack temp_obstack;
8100 scoped_restore save_psymtabs_addrmap
8101 = make_scoped_restore (&per_bfd->partial_symtabs->psymtabs_addrmap,
8102 addrmap_create_mutable (&temp_obstack));
8104 for (dwarf2_per_cu_data *per_cu : per_bfd->all_comp_units)
8106 if (per_cu->v.psymtab != NULL)
8107 /* In case a forward DW_TAG_imported_unit has read the CU already. */
8109 process_psymtab_comp_unit (per_cu, per_objfile, false,
8113 /* This has to wait until we read the CUs, we need the list of DWOs. */
8114 process_skeletonless_type_units (per_objfile);
8116 /* Now that all TUs have been processed we can fill in the dependencies. */
8117 if (per_bfd->type_unit_groups != NULL)
8119 htab_traverse_noresize (per_bfd->type_unit_groups.get (),
8120 build_type_psymtab_dependencies, per_objfile);
8123 if (dwarf_read_debug > 0)
8124 print_tu_stats (per_objfile);
8126 set_partial_user (per_objfile);
8128 per_bfd->partial_symtabs->psymtabs_addrmap
8129 = addrmap_create_fixed (per_bfd->partial_symtabs->psymtabs_addrmap,
8130 per_bfd->partial_symtabs->obstack ());
8131 /* At this point we want to keep the address map. */
8132 save_psymtabs_addrmap.release ();
8134 dwarf_read_debug_printf ("Done building psymtabs of %s",
8135 objfile_name (objfile));
8138 /* Load the partial DIEs for a secondary CU into memory.
8139 This is also used when rereading a primary CU with load_all_dies. */
8142 load_partial_comp_unit (dwarf2_per_cu_data *this_cu,
8143 dwarf2_per_objfile *per_objfile,
8144 dwarf2_cu *existing_cu)
8146 cutu_reader reader (this_cu, per_objfile, nullptr, existing_cu, false);
8148 if (!reader.dummy_p)
8150 prepare_one_comp_unit (reader.cu, reader.comp_unit_die,
8153 /* Check if comp unit has_children.
8154 If so, read the rest of the partial symbols from this comp unit.
8155 If not, there's no more debug_info for this comp unit. */
8156 if (reader.comp_unit_die->has_children)
8157 load_partial_dies (&reader, reader.info_ptr, 0);
8164 read_comp_units_from_section (dwarf2_per_objfile *per_objfile,
8165 struct dwarf2_section_info *section,
8166 struct dwarf2_section_info *abbrev_section,
8167 unsigned int is_dwz)
8169 const gdb_byte *info_ptr;
8170 struct objfile *objfile = per_objfile->objfile;
8172 dwarf_read_debug_printf ("Reading %s for %s",
8173 section->get_name (),
8174 section->get_file_name ());
8176 section->read (objfile);
8178 info_ptr = section->buffer;
8180 while (info_ptr < section->buffer + section->size)
8182 struct dwarf2_per_cu_data *this_cu;
8184 sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8186 comp_unit_head cu_header;
8187 read_and_check_comp_unit_head (per_objfile, &cu_header, section,
8188 abbrev_section, info_ptr,
8189 rcuh_kind::COMPILE);
8191 /* Save the compilation unit for later lookup. */
8192 if (cu_header.unit_type != DW_UT_type)
8193 this_cu = per_objfile->per_bfd->allocate_per_cu ();
8196 auto sig_type = per_objfile->per_bfd->allocate_signatured_type ();
8197 sig_type->signature = cu_header.signature;
8198 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8199 this_cu = &sig_type->per_cu;
8201 this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8202 this_cu->sect_off = sect_off;
8203 this_cu->length = cu_header.length + cu_header.initial_length_size;
8204 this_cu->is_dwz = is_dwz;
8205 this_cu->section = section;
8207 per_objfile->per_bfd->all_comp_units.push_back (this_cu);
8209 info_ptr = info_ptr + this_cu->length;
8213 /* Create a list of all compilation units in OBJFILE.
8214 This is only done for -readnow and building partial symtabs. */
8217 create_all_comp_units (dwarf2_per_objfile *per_objfile)
8219 gdb_assert (per_objfile->per_bfd->all_comp_units.empty ());
8220 read_comp_units_from_section (per_objfile, &per_objfile->per_bfd->info,
8221 &per_objfile->per_bfd->abbrev, 0);
8223 dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
8225 read_comp_units_from_section (per_objfile, &dwz->info, &dwz->abbrev, 1);
8228 /* Process all loaded DIEs for compilation unit CU, starting at
8229 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
8230 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8231 DW_AT_ranges). See the comments of add_partial_subprogram on how
8232 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
8235 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8236 CORE_ADDR *highpc, int set_addrmap,
8237 struct dwarf2_cu *cu)
8239 struct partial_die_info *pdi;
8241 /* Now, march along the PDI's, descending into ones which have
8242 interesting children but skipping the children of the other ones,
8243 until we reach the end of the compilation unit. */
8251 /* Anonymous namespaces or modules have no name but have interesting
8252 children, so we need to look at them. Ditto for anonymous
8255 if (pdi->raw_name != NULL || pdi->tag == DW_TAG_namespace
8256 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8257 || pdi->tag == DW_TAG_imported_unit
8258 || pdi->tag == DW_TAG_inlined_subroutine)
8262 case DW_TAG_subprogram:
8263 case DW_TAG_inlined_subroutine:
8264 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8265 if (cu->language == language_cplus)
8266 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8269 case DW_TAG_constant:
8270 case DW_TAG_variable:
8271 case DW_TAG_typedef:
8272 case DW_TAG_union_type:
8273 if (!pdi->is_declaration
8274 || (pdi->tag == DW_TAG_variable && pdi->is_external))
8276 add_partial_symbol (pdi, cu);
8279 case DW_TAG_class_type:
8280 case DW_TAG_interface_type:
8281 case DW_TAG_structure_type:
8282 if (!pdi->is_declaration)
8284 add_partial_symbol (pdi, cu);
8286 if ((cu->language == language_rust
8287 || cu->language == language_cplus) && pdi->has_children)
8288 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8291 case DW_TAG_enumeration_type:
8292 if (!pdi->is_declaration)
8293 add_partial_enumeration (pdi, cu);
8295 case DW_TAG_base_type:
8296 case DW_TAG_subrange_type:
8297 /* File scope base type definitions are added to the partial
8299 add_partial_symbol (pdi, cu);
8301 case DW_TAG_namespace:
8302 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8305 if (!pdi->is_declaration)
8306 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8308 case DW_TAG_imported_unit:
8310 struct dwarf2_per_cu_data *per_cu;
8312 /* For now we don't handle imported units in type units. */
8313 if (cu->per_cu->is_debug_types)
8315 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8316 " supported in type units [in module %s]"),
8317 objfile_name (cu->per_objfile->objfile));
8320 per_cu = dwarf2_find_containing_comp_unit
8321 (pdi->d.sect_off, pdi->is_dwz, cu->per_objfile);
8323 /* Go read the partial unit, if needed. */
8324 if (per_cu->v.psymtab == NULL)
8325 process_psymtab_comp_unit (per_cu, cu->per_objfile, true,
8328 cu->per_cu->imported_symtabs_push (per_cu);
8331 case DW_TAG_imported_declaration:
8332 add_partial_symbol (pdi, cu);
8339 /* If the die has a sibling, skip to the sibling. */
8341 pdi = pdi->die_sibling;
8345 /* Functions used to compute the fully scoped name of a partial DIE.
8347 Normally, this is simple. For C++, the parent DIE's fully scoped
8348 name is concatenated with "::" and the partial DIE's name.
8349 Enumerators are an exception; they use the scope of their parent
8350 enumeration type, i.e. the name of the enumeration type is not
8351 prepended to the enumerator.
8353 There are two complexities. One is DW_AT_specification; in this
8354 case "parent" means the parent of the target of the specification,
8355 instead of the direct parent of the DIE. The other is compilers
8356 which do not emit DW_TAG_namespace; in this case we try to guess
8357 the fully qualified name of structure types from their members'
8358 linkage names. This must be done using the DIE's children rather
8359 than the children of any DW_AT_specification target. We only need
8360 to do this for structures at the top level, i.e. if the target of
8361 any DW_AT_specification (if any; otherwise the DIE itself) does not
8364 /* Compute the scope prefix associated with PDI's parent, in
8365 compilation unit CU. The result will be allocated on CU's
8366 comp_unit_obstack, or a copy of the already allocated PDI->NAME
8367 field. NULL is returned if no prefix is necessary. */
8369 partial_die_parent_scope (struct partial_die_info *pdi,
8370 struct dwarf2_cu *cu)
8372 const char *grandparent_scope;
8373 struct partial_die_info *parent, *real_pdi;
8375 /* We need to look at our parent DIE; if we have a DW_AT_specification,
8376 then this means the parent of the specification DIE. */
8379 while (real_pdi->has_specification)
8381 auto res = find_partial_die (real_pdi->spec_offset,
8382 real_pdi->spec_is_dwz, cu);
8387 parent = real_pdi->die_parent;
8391 if (parent->scope_set)
8392 return parent->scope;
8396 grandparent_scope = partial_die_parent_scope (parent, cu);
8398 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8399 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8400 Work around this problem here. */
8401 if (cu->language == language_cplus
8402 && parent->tag == DW_TAG_namespace
8403 && strcmp (parent->name (cu), "::") == 0
8404 && grandparent_scope == NULL)
8406 parent->scope = NULL;
8407 parent->scope_set = 1;
8411 /* Nested subroutines in Fortran get a prefix. */
8412 if (pdi->tag == DW_TAG_enumerator)
8413 /* Enumerators should not get the name of the enumeration as a prefix. */
8414 parent->scope = grandparent_scope;
8415 else if (parent->tag == DW_TAG_namespace
8416 || parent->tag == DW_TAG_module
8417 || parent->tag == DW_TAG_structure_type
8418 || parent->tag == DW_TAG_class_type
8419 || parent->tag == DW_TAG_interface_type
8420 || parent->tag == DW_TAG_union_type
8421 || parent->tag == DW_TAG_enumeration_type
8422 || (cu->language == language_fortran
8423 && parent->tag == DW_TAG_subprogram
8424 && pdi->tag == DW_TAG_subprogram))
8426 if (grandparent_scope == NULL)
8427 parent->scope = parent->name (cu);
8429 parent->scope = typename_concat (&cu->comp_unit_obstack,
8431 parent->name (cu), 0, cu);
8435 /* FIXME drow/2004-04-01: What should we be doing with
8436 function-local names? For partial symbols, we should probably be
8438 complaint (_("unhandled containing DIE tag %s for DIE at %s"),
8439 dwarf_tag_name (parent->tag),
8440 sect_offset_str (pdi->sect_off));
8441 parent->scope = grandparent_scope;
8444 parent->scope_set = 1;
8445 return parent->scope;
8448 /* Return the fully scoped name associated with PDI, from compilation unit
8449 CU. The result will be allocated with malloc. */
8451 static gdb::unique_xmalloc_ptr<char>
8452 partial_die_full_name (struct partial_die_info *pdi,
8453 struct dwarf2_cu *cu)
8455 const char *parent_scope;
8457 /* If this is a template instantiation, we can not work out the
8458 template arguments from partial DIEs. So, unfortunately, we have
8459 to go through the full DIEs. At least any work we do building
8460 types here will be reused if full symbols are loaded later. */
8461 if (pdi->has_template_arguments)
8465 if (pdi->name (cu) != NULL && strchr (pdi->name (cu), '<') == NULL)
8467 struct die_info *die;
8468 struct attribute attr;
8469 struct dwarf2_cu *ref_cu = cu;
8471 /* DW_FORM_ref_addr is using section offset. */
8472 attr.name = (enum dwarf_attribute) 0;
8473 attr.form = DW_FORM_ref_addr;
8474 attr.u.unsnd = to_underlying (pdi->sect_off);
8475 die = follow_die_ref (NULL, &attr, &ref_cu);
8477 return make_unique_xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8481 parent_scope = partial_die_parent_scope (pdi, cu);
8482 if (parent_scope == NULL)
8485 return gdb::unique_xmalloc_ptr<char> (typename_concat (NULL, parent_scope,
8491 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8493 dwarf2_per_objfile *per_objfile = cu->per_objfile;
8494 struct objfile *objfile = per_objfile->objfile;
8495 struct gdbarch *gdbarch = objfile->arch ();
8497 const char *actual_name = NULL;
8500 baseaddr = objfile->text_section_offset ();
8502 gdb::unique_xmalloc_ptr<char> built_actual_name
8503 = partial_die_full_name (pdi, cu);
8504 if (built_actual_name != NULL)
8505 actual_name = built_actual_name.get ();
8507 if (actual_name == NULL)
8508 actual_name = pdi->name (cu);
8510 partial_symbol psymbol;
8511 memset (&psymbol, 0, sizeof (psymbol));
8512 psymbol.ginfo.set_language (cu->language, &objfile->objfile_obstack);
8513 psymbol.ginfo.set_section_index (-1);
8515 /* The code below indicates that the psymbol should be installed by
8517 gdb::optional<psymbol_placement> where;
8521 case DW_TAG_inlined_subroutine:
8522 case DW_TAG_subprogram:
8523 addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8525 if (pdi->is_external
8526 || cu->language == language_ada
8527 || (cu->language == language_fortran
8528 && pdi->die_parent != NULL
8529 && pdi->die_parent->tag == DW_TAG_subprogram))
8531 /* Normally, only "external" DIEs are part of the global scope.
8532 But in Ada and Fortran, we want to be able to access nested
8533 procedures globally. So all Ada and Fortran subprograms are
8534 stored in the global scope. */
8535 where = psymbol_placement::GLOBAL;
8538 where = psymbol_placement::STATIC;
8540 psymbol.domain = VAR_DOMAIN;
8541 psymbol.aclass = LOC_BLOCK;
8542 psymbol.ginfo.set_section_index (SECT_OFF_TEXT (objfile));
8543 psymbol.ginfo.value.address = addr;
8545 if (pdi->main_subprogram && actual_name != NULL)
8546 set_objfile_main_name (objfile, actual_name, cu->language);
8548 case DW_TAG_constant:
8549 psymbol.domain = VAR_DOMAIN;
8550 psymbol.aclass = LOC_STATIC;
8551 where = (pdi->is_external
8552 ? psymbol_placement::GLOBAL
8553 : psymbol_placement::STATIC);
8555 case DW_TAG_variable:
8557 addr = decode_locdesc (pdi->d.locdesc, cu);
8561 && !per_objfile->per_bfd->has_section_at_zero)
8563 /* A global or static variable may also have been stripped
8564 out by the linker if unused, in which case its address
8565 will be nullified; do not add such variables into partial
8566 symbol table then. */
8568 else if (pdi->is_external)
8571 Don't enter into the minimal symbol tables as there is
8572 a minimal symbol table entry from the ELF symbols already.
8573 Enter into partial symbol table if it has a location
8574 descriptor or a type.
8575 If the location descriptor is missing, new_symbol will create
8576 a LOC_UNRESOLVED symbol, the address of the variable will then
8577 be determined from the minimal symbol table whenever the variable
8579 The address for the partial symbol table entry is not
8580 used by GDB, but it comes in handy for debugging partial symbol
8583 if (pdi->d.locdesc || pdi->has_type)
8585 psymbol.domain = VAR_DOMAIN;
8586 psymbol.aclass = LOC_STATIC;
8587 psymbol.ginfo.set_section_index (SECT_OFF_TEXT (objfile));
8588 psymbol.ginfo.value.address = addr;
8589 where = psymbol_placement::GLOBAL;
8594 int has_loc = pdi->d.locdesc != NULL;
8596 /* Static Variable. Skip symbols whose value we cannot know (those
8597 without location descriptors or constant values). */
8598 if (!has_loc && !pdi->has_const_value)
8601 psymbol.domain = VAR_DOMAIN;
8602 psymbol.aclass = LOC_STATIC;
8603 psymbol.ginfo.set_section_index (SECT_OFF_TEXT (objfile));
8605 psymbol.ginfo.value.address = addr;
8606 where = psymbol_placement::STATIC;
8609 case DW_TAG_array_type:
8610 case DW_TAG_typedef:
8611 case DW_TAG_base_type:
8612 case DW_TAG_subrange_type:
8613 psymbol.domain = VAR_DOMAIN;
8614 psymbol.aclass = LOC_TYPEDEF;
8615 where = psymbol_placement::STATIC;
8617 case DW_TAG_imported_declaration:
8618 case DW_TAG_namespace:
8619 psymbol.domain = VAR_DOMAIN;
8620 psymbol.aclass = LOC_TYPEDEF;
8621 where = psymbol_placement::GLOBAL;
8624 /* With Fortran 77 there might be a "BLOCK DATA" module
8625 available without any name. If so, we skip the module as it
8626 doesn't bring any value. */
8627 if (actual_name != nullptr)
8629 psymbol.domain = MODULE_DOMAIN;
8630 psymbol.aclass = LOC_TYPEDEF;
8631 where = psymbol_placement::GLOBAL;
8634 case DW_TAG_class_type:
8635 case DW_TAG_interface_type:
8636 case DW_TAG_structure_type:
8637 case DW_TAG_union_type:
8638 case DW_TAG_enumeration_type:
8639 /* Skip external references. The DWARF standard says in the section
8640 about "Structure, Union, and Class Type Entries": "An incomplete
8641 structure, union or class type is represented by a structure,
8642 union or class entry that does not have a byte size attribute
8643 and that has a DW_AT_declaration attribute." */
8644 if (!pdi->has_byte_size && pdi->is_declaration)
8647 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
8648 static vs. global. */
8649 psymbol.domain = STRUCT_DOMAIN;
8650 psymbol.aclass = LOC_TYPEDEF;
8651 where = (cu->language == language_cplus
8652 ? psymbol_placement::GLOBAL
8653 : psymbol_placement::STATIC);
8655 case DW_TAG_enumerator:
8656 psymbol.domain = VAR_DOMAIN;
8657 psymbol.aclass = LOC_CONST;
8658 where = (cu->language == language_cplus
8659 ? psymbol_placement::GLOBAL
8660 : psymbol_placement::STATIC);
8666 if (where.has_value ())
8668 if (built_actual_name != nullptr)
8669 actual_name = objfile->intern (actual_name);
8670 if (pdi->linkage_name == nullptr || cu->language == language_ada)
8671 psymbol.ginfo.set_linkage_name (actual_name);
8674 psymbol.ginfo.set_demangled_name (actual_name,
8675 &objfile->objfile_obstack);
8676 psymbol.ginfo.set_linkage_name (pdi->linkage_name);
8678 cu->per_cu->v.psymtab->add_psymbol
8679 (psymbol, *where, per_objfile->per_bfd->partial_symtabs.get (),
8684 /* Read a partial die corresponding to a namespace; also, add a symbol
8685 corresponding to that namespace to the symbol table. NAMESPACE is
8686 the name of the enclosing namespace. */
8689 add_partial_namespace (struct partial_die_info *pdi,
8690 CORE_ADDR *lowpc, CORE_ADDR *highpc,
8691 int set_addrmap, struct dwarf2_cu *cu)
8693 /* Add a symbol for the namespace. */
8695 add_partial_symbol (pdi, cu);
8697 /* Now scan partial symbols in that namespace. */
8699 if (pdi->has_children)
8700 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
8703 /* Read a partial die corresponding to a Fortran module. */
8706 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
8707 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
8709 /* Add a symbol for the namespace. */
8711 add_partial_symbol (pdi, cu);
8713 /* Now scan partial symbols in that module. */
8715 if (pdi->has_children)
8716 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
8719 /* Read a partial die corresponding to a subprogram or an inlined
8720 subprogram and create a partial symbol for that subprogram.
8721 When the CU language allows it, this routine also defines a partial
8722 symbol for each nested subprogram that this subprogram contains.
8723 If SET_ADDRMAP is true, record the covered ranges in the addrmap.
8724 Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
8726 PDI may also be a lexical block, in which case we simply search
8727 recursively for subprograms defined inside that lexical block.
8728 Again, this is only performed when the CU language allows this
8729 type of definitions. */
8732 add_partial_subprogram (struct partial_die_info *pdi,
8733 CORE_ADDR *lowpc, CORE_ADDR *highpc,
8734 int set_addrmap, struct dwarf2_cu *cu)
8736 if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
8738 if (pdi->has_pc_info)
8740 if (pdi->lowpc < *lowpc)
8741 *lowpc = pdi->lowpc;
8742 if (pdi->highpc > *highpc)
8743 *highpc = pdi->highpc;
8746 struct objfile *objfile = cu->per_objfile->objfile;
8747 dwarf2_per_bfd *per_bfd = cu->per_objfile->per_bfd;
8748 struct gdbarch *gdbarch = objfile->arch ();
8750 CORE_ADDR this_highpc;
8751 CORE_ADDR this_lowpc;
8753 baseaddr = objfile->text_section_offset ();
8755 = (gdbarch_adjust_dwarf2_addr (gdbarch,
8756 pdi->lowpc + baseaddr)
8759 = (gdbarch_adjust_dwarf2_addr (gdbarch,
8760 pdi->highpc + baseaddr)
8762 addrmap_set_empty (per_bfd->partial_symtabs->psymtabs_addrmap,
8763 this_lowpc, this_highpc - 1,
8764 cu->per_cu->v.psymtab);
8768 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
8770 if (!pdi->is_declaration)
8771 /* Ignore subprogram DIEs that do not have a name, they are
8772 illegal. Do not emit a complaint at this point, we will
8773 do so when we convert this psymtab into a symtab. */
8775 add_partial_symbol (pdi, cu);
8779 if (! pdi->has_children)
8782 if (cu->language == language_ada || cu->language == language_fortran)
8784 pdi = pdi->die_child;
8788 if (pdi->tag == DW_TAG_subprogram
8789 || pdi->tag == DW_TAG_inlined_subroutine
8790 || pdi->tag == DW_TAG_lexical_block)
8791 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8792 pdi = pdi->die_sibling;
8797 /* Read a partial die corresponding to an enumeration type. */
8800 add_partial_enumeration (struct partial_die_info *enum_pdi,
8801 struct dwarf2_cu *cu)
8803 struct partial_die_info *pdi;
8805 if (enum_pdi->name (cu) != NULL)
8806 add_partial_symbol (enum_pdi, cu);
8808 pdi = enum_pdi->die_child;
8811 if (pdi->tag != DW_TAG_enumerator || pdi->raw_name == NULL)
8812 complaint (_("malformed enumerator DIE ignored"));
8814 add_partial_symbol (pdi, cu);
8815 pdi = pdi->die_sibling;
8819 /* Return the initial uleb128 in the die at INFO_PTR. */
8822 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
8824 unsigned int bytes_read;
8826 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
8829 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
8830 READER::CU. Use READER::ABBREV_TABLE to lookup any abbreviation.
8832 Return the corresponding abbrev, or NULL if the number is zero (indicating
8833 an empty DIE). In either case *BYTES_READ will be set to the length of
8834 the initial number. */
8836 static const struct abbrev_info *
8837 peek_die_abbrev (const die_reader_specs &reader,
8838 const gdb_byte *info_ptr, unsigned int *bytes_read)
8840 dwarf2_cu *cu = reader.cu;
8841 bfd *abfd = reader.abfd;
8842 unsigned int abbrev_number
8843 = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
8845 if (abbrev_number == 0)
8848 const abbrev_info *abbrev
8849 = reader.abbrev_table->lookup_abbrev (abbrev_number);
8852 error (_("Dwarf Error: Could not find abbrev number %d in %s"
8853 " at offset %s [in module %s]"),
8854 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
8855 sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
8861 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
8862 Returns a pointer to the end of a series of DIEs, terminated by an empty
8863 DIE. Any children of the skipped DIEs will also be skipped. */
8865 static const gdb_byte *
8866 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
8870 unsigned int bytes_read;
8871 const abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr,
8875 return info_ptr + bytes_read;
8877 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
8881 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
8882 INFO_PTR should point just after the initial uleb128 of a DIE, and the
8883 abbrev corresponding to that skipped uleb128 should be passed in
8884 ABBREV. Returns a pointer to this DIE's sibling, skipping any
8887 static const gdb_byte *
8888 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
8889 const struct abbrev_info *abbrev)
8891 unsigned int bytes_read;
8892 struct attribute attr;
8893 bfd *abfd = reader->abfd;
8894 struct dwarf2_cu *cu = reader->cu;
8895 const gdb_byte *buffer = reader->buffer;
8896 const gdb_byte *buffer_end = reader->buffer_end;
8897 unsigned int form, i;
8899 for (i = 0; i < abbrev->num_attrs; i++)
8901 /* The only abbrev we care about is DW_AT_sibling. */
8902 if (abbrev->attrs[i].name == DW_AT_sibling)
8904 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
8905 if (attr.form == DW_FORM_ref_addr)
8906 complaint (_("ignoring absolute DW_AT_sibling"));
8909 sect_offset off = attr.get_ref_die_offset ();
8910 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
8912 if (sibling_ptr < info_ptr)
8913 complaint (_("DW_AT_sibling points backwards"));
8914 else if (sibling_ptr > reader->buffer_end)
8915 reader->die_section->overflow_complaint ();
8921 /* If it isn't DW_AT_sibling, skip this attribute. */
8922 form = abbrev->attrs[i].form;
8926 case DW_FORM_ref_addr:
8927 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
8928 and later it is offset sized. */
8929 if (cu->header.version == 2)
8930 info_ptr += cu->header.addr_size;
8932 info_ptr += cu->header.offset_size;
8934 case DW_FORM_GNU_ref_alt:
8935 info_ptr += cu->header.offset_size;
8938 info_ptr += cu->header.addr_size;
8946 case DW_FORM_flag_present:
8947 case DW_FORM_implicit_const:
8964 case DW_FORM_ref_sig8:
8967 case DW_FORM_data16:
8970 case DW_FORM_string:
8971 read_direct_string (abfd, info_ptr, &bytes_read);
8972 info_ptr += bytes_read;
8974 case DW_FORM_sec_offset:
8976 case DW_FORM_GNU_strp_alt:
8977 info_ptr += cu->header.offset_size;
8979 case DW_FORM_exprloc:
8981 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
8982 info_ptr += bytes_read;
8984 case DW_FORM_block1:
8985 info_ptr += 1 + read_1_byte (abfd, info_ptr);
8987 case DW_FORM_block2:
8988 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
8990 case DW_FORM_block4:
8991 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
8997 case DW_FORM_ref_udata:
8998 case DW_FORM_GNU_addr_index:
8999 case DW_FORM_GNU_str_index:
9000 case DW_FORM_rnglistx:
9001 case DW_FORM_loclistx:
9002 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9004 case DW_FORM_indirect:
9005 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9006 info_ptr += bytes_read;
9007 /* We need to continue parsing from here, so just go back to
9009 goto skip_attribute;
9012 error (_("Dwarf Error: Cannot handle %s "
9013 "in DWARF reader [in module %s]"),
9014 dwarf_form_name (form),
9015 bfd_get_filename (abfd));
9019 if (abbrev->has_children)
9020 return skip_children (reader, info_ptr);
9025 /* Locate ORIG_PDI's sibling.
9026 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
9028 static const gdb_byte *
9029 locate_pdi_sibling (const struct die_reader_specs *reader,
9030 struct partial_die_info *orig_pdi,
9031 const gdb_byte *info_ptr)
9033 /* Do we know the sibling already? */
9035 if (orig_pdi->sibling)
9036 return orig_pdi->sibling;
9038 /* Are there any children to deal with? */
9040 if (!orig_pdi->has_children)
9043 /* Skip the children the long way. */
9045 return skip_children (reader, info_ptr);
9048 /* Expand this partial symbol table into a full symbol table. SELF is
9052 dwarf2_psymtab::read_symtab (struct objfile *objfile)
9054 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
9056 gdb_assert (!per_objfile->symtab_set_p (per_cu_data));
9058 /* If this psymtab is constructed from a debug-only objfile, the
9059 has_section_at_zero flag will not necessarily be correct. We
9060 can get the correct value for this flag by looking at the data
9061 associated with the (presumably stripped) associated objfile. */
9062 if (objfile->separate_debug_objfile_backlink)
9064 dwarf2_per_objfile *per_objfile_backlink
9065 = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9067 per_objfile->per_bfd->has_section_at_zero
9068 = per_objfile_backlink->per_bfd->has_section_at_zero;
9071 expand_psymtab (objfile);
9073 process_cu_includes (per_objfile);
9076 /* Reading in full CUs. */
9078 /* Add PER_CU to the queue. */
9081 queue_comp_unit (dwarf2_per_cu_data *per_cu,
9082 dwarf2_per_objfile *per_objfile,
9083 enum language pretend_language)
9087 gdb_assert (per_objfile->per_bfd->queue.has_value ());
9088 per_cu->per_bfd->queue->emplace (per_cu, per_objfile, pretend_language);
9091 /* If PER_CU is not yet expanded of queued for expansion, add it to the queue.
9093 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9096 Return true if maybe_queue_comp_unit requires the caller to load the CU's
9097 DIEs, false otherwise.
9099 Explanation: there is an invariant that if a CU is queued for expansion
9100 (present in `dwarf2_per_bfd::queue`), then its DIEs are loaded
9101 (a dwarf2_cu object exists for this CU, and `dwarf2_per_objfile::get_cu`
9102 returns non-nullptr). If the CU gets enqueued by this function but its DIEs
9103 are not yet loaded, the the caller must load the CU's DIEs to ensure the
9104 invariant is respected.
9106 The caller is therefore not required to load the CU's DIEs (we return false)
9109 - the CU is already expanded, and therefore does not get enqueued
9110 - the CU gets enqueued for expansion, but its DIEs are already loaded
9112 Note that the caller should not use this function's return value as an
9113 indicator of whether the CU's DIEs are loaded right now, it should check
9114 that by calling `dwarf2_per_objfile::get_cu` instead. */
9117 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9118 dwarf2_per_cu_data *per_cu,
9119 dwarf2_per_objfile *per_objfile,
9120 enum language pretend_language)
9122 /* We may arrive here during partial symbol reading, if we need full
9123 DIEs to process an unusual case (e.g. template arguments). Do
9124 not queue PER_CU, just tell our caller to load its DIEs. */
9125 if (per_cu->per_bfd->reading_partial_symbols)
9127 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
9129 if (cu == NULL || cu->dies == NULL)
9134 /* Mark the dependence relation so that we don't flush PER_CU
9136 if (dependent_cu != NULL)
9137 dwarf2_add_dependence (dependent_cu, per_cu);
9139 /* If it's already on the queue, we have nothing to do. */
9142 /* Verify the invariant that if a CU is queued for expansion, its DIEs are
9144 gdb_assert (per_objfile->get_cu (per_cu) != nullptr);
9146 /* If the CU is queued for expansion, it should not already be
9148 gdb_assert (!per_objfile->symtab_set_p (per_cu));
9150 /* The DIEs are already loaded, the caller doesn't need to do it. */
9154 bool queued = false;
9155 if (!per_objfile->symtab_set_p (per_cu))
9157 /* Add it to the queue. */
9158 queue_comp_unit (per_cu, per_objfile, pretend_language);
9162 /* If the compilation unit is already loaded, just mark it as
9164 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
9168 /* Ask the caller to load the CU's DIEs if the CU got enqueued for expansion
9169 and the DIEs are not already loaded. */
9170 return queued && cu == nullptr;
9173 /* Process the queue. */
9176 process_queue (dwarf2_per_objfile *per_objfile)
9178 dwarf_read_debug_printf ("Expanding one or more symtabs of objfile %s ...",
9179 objfile_name (per_objfile->objfile));
9181 /* The queue starts out with one item, but following a DIE reference
9182 may load a new CU, adding it to the end of the queue. */
9183 while (!per_objfile->per_bfd->queue->empty ())
9185 dwarf2_queue_item &item = per_objfile->per_bfd->queue->front ();
9186 dwarf2_per_cu_data *per_cu = item.per_cu;
9188 if (!per_objfile->symtab_set_p (per_cu))
9190 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
9192 /* Skip dummy CUs. */
9195 unsigned int debug_print_threshold;
9198 if (per_cu->is_debug_types)
9200 struct signatured_type *sig_type =
9201 (struct signatured_type *) per_cu;
9203 sprintf (buf, "TU %s at offset %s",
9204 hex_string (sig_type->signature),
9205 sect_offset_str (per_cu->sect_off));
9206 /* There can be 100s of TUs.
9207 Only print them in verbose mode. */
9208 debug_print_threshold = 2;
9212 sprintf (buf, "CU at offset %s",
9213 sect_offset_str (per_cu->sect_off));
9214 debug_print_threshold = 1;
9217 if (dwarf_read_debug >= debug_print_threshold)
9218 dwarf_read_debug_printf ("Expanding symtab of %s", buf);
9220 if (per_cu->is_debug_types)
9221 process_full_type_unit (cu, item.pretend_language);
9223 process_full_comp_unit (cu, item.pretend_language);
9225 if (dwarf_read_debug >= debug_print_threshold)
9226 dwarf_read_debug_printf ("Done expanding %s", buf);
9231 per_objfile->per_bfd->queue->pop ();
9234 dwarf_read_debug_printf ("Done expanding symtabs of %s.",
9235 objfile_name (per_objfile->objfile));
9238 /* Read in full symbols for PST, and anything it depends on. */
9241 dwarf2_psymtab::expand_psymtab (struct objfile *objfile)
9243 gdb_assert (!readin_p (objfile));
9245 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
9246 free_cached_comp_units freer (per_objfile);
9247 expand_dependencies (objfile);
9249 dw2_do_instantiate_symtab (per_cu_data, per_objfile, false);
9250 gdb_assert (get_compunit_symtab (objfile) != nullptr);
9253 /* See psympriv.h. */
9256 dwarf2_psymtab::readin_p (struct objfile *objfile) const
9258 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
9259 return per_objfile->symtab_set_p (per_cu_data);
9262 /* See psympriv.h. */
9265 dwarf2_psymtab::get_compunit_symtab (struct objfile *objfile) const
9267 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
9268 return per_objfile->get_symtab (per_cu_data);
9271 /* Trivial hash function for die_info: the hash value of a DIE
9272 is its offset in .debug_info for this objfile. */
9275 die_hash (const void *item)
9277 const struct die_info *die = (const struct die_info *) item;
9279 return to_underlying (die->sect_off);
9282 /* Trivial comparison function for die_info structures: two DIEs
9283 are equal if they have the same offset. */
9286 die_eq (const void *item_lhs, const void *item_rhs)
9288 const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9289 const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9291 return die_lhs->sect_off == die_rhs->sect_off;
9294 /* Load the DIEs associated with PER_CU into memory.
9296 In some cases, the caller, while reading partial symbols, will need to load
9297 the full symbols for the CU for some reason. It will already have a
9298 dwarf2_cu object for THIS_CU and pass it as EXISTING_CU, so it can be re-used
9299 rather than creating a new one. */
9302 load_full_comp_unit (dwarf2_per_cu_data *this_cu,
9303 dwarf2_per_objfile *per_objfile,
9304 dwarf2_cu *existing_cu,
9306 enum language pretend_language)
9308 gdb_assert (! this_cu->is_debug_types);
9310 cutu_reader reader (this_cu, per_objfile, NULL, existing_cu, skip_partial);
9314 struct dwarf2_cu *cu = reader.cu;
9315 const gdb_byte *info_ptr = reader.info_ptr;
9317 gdb_assert (cu->die_hash == NULL);
9319 htab_create_alloc_ex (cu->header.length / 12,
9323 &cu->comp_unit_obstack,
9324 hashtab_obstack_allocate,
9325 dummy_obstack_deallocate);
9327 if (reader.comp_unit_die->has_children)
9328 reader.comp_unit_die->child
9329 = read_die_and_siblings (&reader, reader.info_ptr,
9330 &info_ptr, reader.comp_unit_die);
9331 cu->dies = reader.comp_unit_die;
9332 /* comp_unit_die is not stored in die_hash, no need. */
9334 /* We try not to read any attributes in this function, because not
9335 all CUs needed for references have been loaded yet, and symbol
9336 table processing isn't initialized. But we have to set the CU language,
9337 or we won't be able to build types correctly.
9338 Similarly, if we do not read the producer, we can not apply
9339 producer-specific interpretation. */
9340 prepare_one_comp_unit (cu, cu->dies, pretend_language);
9345 /* Add a DIE to the delayed physname list. */
9348 add_to_method_list (struct type *type, int fnfield_index, int index,
9349 const char *name, struct die_info *die,
9350 struct dwarf2_cu *cu)
9352 struct delayed_method_info mi;
9354 mi.fnfield_index = fnfield_index;
9358 cu->method_list.push_back (mi);
9361 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9362 "const" / "volatile". If so, decrements LEN by the length of the
9363 modifier and return true. Otherwise return false. */
9367 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9369 size_t mod_len = sizeof (mod) - 1;
9370 if (len > mod_len && startswith (physname + (len - mod_len), mod))
9378 /* Compute the physnames of any methods on the CU's method list.
9380 The computation of method physnames is delayed in order to avoid the
9381 (bad) condition that one of the method's formal parameters is of an as yet
9385 compute_delayed_physnames (struct dwarf2_cu *cu)
9387 /* Only C++ delays computing physnames. */
9388 if (cu->method_list.empty ())
9390 gdb_assert (cu->language == language_cplus);
9392 for (const delayed_method_info &mi : cu->method_list)
9394 const char *physname;
9395 struct fn_fieldlist *fn_flp
9396 = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9397 physname = dwarf2_physname (mi.name, mi.die, cu);
9398 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9399 = physname ? physname : "";
9401 /* Since there's no tag to indicate whether a method is a
9402 const/volatile overload, extract that information out of the
9404 if (physname != NULL)
9406 size_t len = strlen (physname);
9410 if (physname[len] == ')') /* shortcut */
9412 else if (check_modifier (physname, len, " const"))
9413 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9414 else if (check_modifier (physname, len, " volatile"))
9415 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9422 /* The list is no longer needed. */
9423 cu->method_list.clear ();
9426 /* Go objects should be embedded in a DW_TAG_module DIE,
9427 and it's not clear if/how imported objects will appear.
9428 To keep Go support simple until that's worked out,
9429 go back through what we've read and create something usable.
9430 We could do this while processing each DIE, and feels kinda cleaner,
9431 but that way is more invasive.
9432 This is to, for example, allow the user to type "p var" or "b main"
9433 without having to specify the package name, and allow lookups
9434 of module.object to work in contexts that use the expression
9438 fixup_go_packaging (struct dwarf2_cu *cu)
9440 gdb::unique_xmalloc_ptr<char> package_name;
9441 struct pending *list;
9444 for (list = *cu->get_builder ()->get_global_symbols ();
9448 for (i = 0; i < list->nsyms; ++i)
9450 struct symbol *sym = list->symbol[i];
9452 if (sym->language () == language_go
9453 && SYMBOL_CLASS (sym) == LOC_BLOCK)
9455 gdb::unique_xmalloc_ptr<char> this_package_name
9456 (go_symbol_package_name (sym));
9458 if (this_package_name == NULL)
9460 if (package_name == NULL)
9461 package_name = std::move (this_package_name);
9464 struct objfile *objfile = cu->per_objfile->objfile;
9465 if (strcmp (package_name.get (), this_package_name.get ()) != 0)
9466 complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9467 (symbol_symtab (sym) != NULL
9468 ? symtab_to_filename_for_display
9469 (symbol_symtab (sym))
9470 : objfile_name (objfile)),
9471 this_package_name.get (), package_name.get ());
9477 if (package_name != NULL)
9479 struct objfile *objfile = cu->per_objfile->objfile;
9480 const char *saved_package_name = objfile->intern (package_name.get ());
9481 struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9482 saved_package_name);
9485 sym = new (&objfile->objfile_obstack) symbol;
9486 sym->set_language (language_go, &objfile->objfile_obstack);
9487 sym->compute_and_set_names (saved_package_name, false, objfile->per_bfd);
9488 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9489 e.g., "main" finds the "main" module and not C's main(). */
9490 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9491 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9492 SYMBOL_TYPE (sym) = type;
9494 add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
9498 /* Allocate a fully-qualified name consisting of the two parts on the
9502 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9504 return obconcat (obstack, p1, "::", p2, (char *) NULL);
9507 /* A helper that allocates a variant part to attach to a Rust enum
9508 type. OBSTACK is where the results should be allocated. TYPE is
9509 the type we're processing. DISCRIMINANT_INDEX is the index of the
9510 discriminant. It must be the index of one of the fields of TYPE,
9511 or -1 to mean there is no discriminant (univariant enum).
9512 DEFAULT_INDEX is the index of the default field; or -1 if there is
9513 no default. RANGES is indexed by "effective" field number (the
9514 field index, but omitting the discriminant and default fields) and
9515 must hold the discriminant values used by the variants. Note that
9516 RANGES must have a lifetime at least as long as OBSTACK -- either
9517 already allocated on it, or static. */
9520 alloc_rust_variant (struct obstack *obstack, struct type *type,
9521 int discriminant_index, int default_index,
9522 gdb::array_view<discriminant_range> ranges)
9524 /* When DISCRIMINANT_INDEX == -1, we have a univariant enum. */
9525 gdb_assert (discriminant_index == -1
9526 || (discriminant_index >= 0
9527 && discriminant_index < type->num_fields ()));
9528 gdb_assert (default_index == -1
9529 || (default_index >= 0 && default_index < type->num_fields ()));
9531 /* We have one variant for each non-discriminant field. */
9532 int n_variants = type->num_fields ();
9533 if (discriminant_index != -1)
9536 variant *variants = new (obstack) variant[n_variants];
9539 for (int i = 0; i < type->num_fields (); ++i)
9541 if (i == discriminant_index)
9544 variants[var_idx].first_field = i;
9545 variants[var_idx].last_field = i + 1;
9547 /* The default field does not need a range, but other fields do.
9548 We skipped the discriminant above. */
9549 if (i != default_index)
9551 variants[var_idx].discriminants = ranges.slice (range_idx, 1);
9558 gdb_assert (range_idx == ranges.size ());
9559 gdb_assert (var_idx == n_variants);
9561 variant_part *part = new (obstack) variant_part;
9562 part->discriminant_index = discriminant_index;
9563 /* If there is no discriminant, then whether it is signed is of no
9566 = (discriminant_index == -1
9568 : type->field (discriminant_index).type ()->is_unsigned ());
9569 part->variants = gdb::array_view<variant> (variants, n_variants);
9571 void *storage = obstack_alloc (obstack, sizeof (gdb::array_view<variant_part>));
9572 gdb::array_view<variant_part> *prop_value
9573 = new (storage) gdb::array_view<variant_part> (part, 1);
9575 struct dynamic_prop prop;
9576 prop.set_variant_parts (prop_value);
9578 type->add_dyn_prop (DYN_PROP_VARIANT_PARTS, prop);
9581 /* Some versions of rustc emitted enums in an unusual way.
9583 Ordinary enums were emitted as unions. The first element of each
9584 structure in the union was named "RUST$ENUM$DISR". This element
9585 held the discriminant.
9587 These versions of Rust also implemented the "non-zero"
9588 optimization. When the enum had two values, and one is empty and
9589 the other holds a pointer that cannot be zero, the pointer is used
9590 as the discriminant, with a zero value meaning the empty variant.
9591 Here, the union's first member is of the form
9592 RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9593 where the fieldnos are the indices of the fields that should be
9594 traversed in order to find the field (which may be several fields deep)
9595 and the variantname is the name of the variant of the case when the
9598 This function recognizes whether TYPE is of one of these forms,
9599 and, if so, smashes it to be a variant type. */
9602 quirk_rust_enum (struct type *type, struct objfile *objfile)
9604 gdb_assert (type->code () == TYPE_CODE_UNION);
9606 /* We don't need to deal with empty enums. */
9607 if (type->num_fields () == 0)
9610 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9611 if (type->num_fields () == 1
9612 && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9614 const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9616 /* Decode the field name to find the offset of the
9618 ULONGEST bit_offset = 0;
9619 struct type *field_type = type->field (0).type ();
9620 while (name[0] >= '0' && name[0] <= '9')
9623 unsigned long index = strtoul (name, &tail, 10);
9626 || index >= field_type->num_fields ()
9627 || (TYPE_FIELD_LOC_KIND (field_type, index)
9628 != FIELD_LOC_KIND_BITPOS))
9630 complaint (_("Could not parse Rust enum encoding string \"%s\""
9632 TYPE_FIELD_NAME (type, 0),
9633 objfile_name (objfile));
9638 bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9639 field_type = field_type->field (index).type ();
9642 /* Smash this type to be a structure type. We have to do this
9643 because the type has already been recorded. */
9644 type->set_code (TYPE_CODE_STRUCT);
9645 type->set_num_fields (3);
9646 /* Save the field we care about. */
9647 struct field saved_field = type->field (0);
9649 ((struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field)));
9651 /* Put the discriminant at index 0. */
9652 type->field (0).set_type (field_type);
9653 TYPE_FIELD_ARTIFICIAL (type, 0) = 1;
9654 TYPE_FIELD_NAME (type, 0) = "<<discriminant>>";
9655 SET_FIELD_BITPOS (type->field (0), bit_offset);
9657 /* The order of fields doesn't really matter, so put the real
9658 field at index 1 and the data-less field at index 2. */
9659 type->field (1) = saved_field;
9660 TYPE_FIELD_NAME (type, 1)
9661 = rust_last_path_segment (type->field (1).type ()->name ());
9662 type->field (1).type ()->set_name
9663 (rust_fully_qualify (&objfile->objfile_obstack, type->name (),
9664 TYPE_FIELD_NAME (type, 1)));
9666 const char *dataless_name
9667 = rust_fully_qualify (&objfile->objfile_obstack, type->name (),
9669 struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
9671 type->field (2).set_type (dataless_type);
9672 /* NAME points into the original discriminant name, which
9673 already has the correct lifetime. */
9674 TYPE_FIELD_NAME (type, 2) = name;
9675 SET_FIELD_BITPOS (type->field (2), 0);
9677 /* Indicate that this is a variant type. */
9678 static discriminant_range ranges[1] = { { 0, 0 } };
9679 alloc_rust_variant (&objfile->objfile_obstack, type, 0, 1, ranges);
9681 /* A union with a single anonymous field is probably an old-style
9683 else if (type->num_fields () == 1 && streq (TYPE_FIELD_NAME (type, 0), ""))
9685 /* Smash this type to be a structure type. We have to do this
9686 because the type has already been recorded. */
9687 type->set_code (TYPE_CODE_STRUCT);
9689 struct type *field_type = type->field (0).type ();
9690 const char *variant_name
9691 = rust_last_path_segment (field_type->name ());
9692 TYPE_FIELD_NAME (type, 0) = variant_name;
9693 field_type->set_name
9694 (rust_fully_qualify (&objfile->objfile_obstack,
9695 type->name (), variant_name));
9697 alloc_rust_variant (&objfile->objfile_obstack, type, -1, 0, {});
9701 struct type *disr_type = nullptr;
9702 for (int i = 0; i < type->num_fields (); ++i)
9704 disr_type = type->field (i).type ();
9706 if (disr_type->code () != TYPE_CODE_STRUCT)
9708 /* All fields of a true enum will be structs. */
9711 else if (disr_type->num_fields () == 0)
9713 /* Could be data-less variant, so keep going. */
9714 disr_type = nullptr;
9716 else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
9717 "RUST$ENUM$DISR") != 0)
9719 /* Not a Rust enum. */
9729 /* If we got here without a discriminant, then it's probably
9731 if (disr_type == nullptr)
9734 /* Smash this type to be a structure type. We have to do this
9735 because the type has already been recorded. */
9736 type->set_code (TYPE_CODE_STRUCT);
9738 /* Make space for the discriminant field. */
9739 struct field *disr_field = &disr_type->field (0);
9741 = (struct field *) TYPE_ZALLOC (type, ((type->num_fields () + 1)
9742 * sizeof (struct field)));
9743 memcpy (new_fields + 1, type->fields (),
9744 type->num_fields () * sizeof (struct field));
9745 type->set_fields (new_fields);
9746 type->set_num_fields (type->num_fields () + 1);
9748 /* Install the discriminant at index 0 in the union. */
9749 type->field (0) = *disr_field;
9750 TYPE_FIELD_ARTIFICIAL (type, 0) = 1;
9751 TYPE_FIELD_NAME (type, 0) = "<<discriminant>>";
9753 /* We need a way to find the correct discriminant given a
9754 variant name. For convenience we build a map here. */
9755 struct type *enum_type = disr_field->type ();
9756 std::unordered_map<std::string, ULONGEST> discriminant_map;
9757 for (int i = 0; i < enum_type->num_fields (); ++i)
9759 if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
9762 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
9763 discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
9767 int n_fields = type->num_fields ();
9768 /* We don't need a range entry for the discriminant, but we do
9769 need one for every other field, as there is no default
9771 discriminant_range *ranges = XOBNEWVEC (&objfile->objfile_obstack,
9774 /* Skip the discriminant here. */
9775 for (int i = 1; i < n_fields; ++i)
9777 /* Find the final word in the name of this variant's type.
9778 That name can be used to look up the correct
9780 const char *variant_name
9781 = rust_last_path_segment (type->field (i).type ()->name ());
9783 auto iter = discriminant_map.find (variant_name);
9784 if (iter != discriminant_map.end ())
9786 ranges[i - 1].low = iter->second;
9787 ranges[i - 1].high = iter->second;
9790 /* In Rust, each element should have the size of the
9792 TYPE_LENGTH (type->field (i).type ()) = TYPE_LENGTH (type);
9794 /* Remove the discriminant field, if it exists. */
9795 struct type *sub_type = type->field (i).type ();
9796 if (sub_type->num_fields () > 0)
9798 sub_type->set_num_fields (sub_type->num_fields () - 1);
9799 sub_type->set_fields (sub_type->fields () + 1);
9801 TYPE_FIELD_NAME (type, i) = variant_name;
9803 (rust_fully_qualify (&objfile->objfile_obstack,
9804 type->name (), variant_name));
9807 /* Indicate that this is a variant type. */
9808 alloc_rust_variant (&objfile->objfile_obstack, type, 0, -1,
9809 gdb::array_view<discriminant_range> (ranges,
9814 /* Rewrite some Rust unions to be structures with variants parts. */
9817 rust_union_quirks (struct dwarf2_cu *cu)
9819 gdb_assert (cu->language == language_rust);
9820 for (type *type_ : cu->rust_unions)
9821 quirk_rust_enum (type_, cu->per_objfile->objfile);
9822 /* We don't need this any more. */
9823 cu->rust_unions.clear ();
9828 type_unit_group_unshareable *
9829 dwarf2_per_objfile::get_type_unit_group_unshareable (type_unit_group *tu_group)
9831 auto iter = this->m_type_units.find (tu_group);
9832 if (iter != this->m_type_units.end ())
9833 return iter->second.get ();
9835 type_unit_group_unshareable_up uniq (new type_unit_group_unshareable);
9836 type_unit_group_unshareable *result = uniq.get ();
9837 this->m_type_units[tu_group] = std::move (uniq);
9842 dwarf2_per_objfile::get_type_for_signatured_type
9843 (signatured_type *sig_type) const
9845 auto iter = this->m_type_map.find (sig_type);
9846 if (iter == this->m_type_map.end ())
9849 return iter->second;
9852 void dwarf2_per_objfile::set_type_for_signatured_type
9853 (signatured_type *sig_type, struct type *type)
9855 gdb_assert (this->m_type_map.find (sig_type) == this->m_type_map.end ());
9857 this->m_type_map[sig_type] = type;
9860 /* A helper function for computing the list of all symbol tables
9861 included by PER_CU. */
9864 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
9865 htab_t all_children, htab_t all_type_symtabs,
9866 dwarf2_per_cu_data *per_cu,
9867 dwarf2_per_objfile *per_objfile,
9868 struct compunit_symtab *immediate_parent)
9870 void **slot = htab_find_slot (all_children, per_cu, INSERT);
9873 /* This inclusion and its children have been processed. */
9879 /* Only add a CU if it has a symbol table. */
9880 compunit_symtab *cust = per_objfile->get_symtab (per_cu);
9883 /* If this is a type unit only add its symbol table if we haven't
9884 seen it yet (type unit per_cu's can share symtabs). */
9885 if (per_cu->is_debug_types)
9887 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
9891 result->push_back (cust);
9892 if (cust->user == NULL)
9893 cust->user = immediate_parent;
9898 result->push_back (cust);
9899 if (cust->user == NULL)
9900 cust->user = immediate_parent;
9904 if (!per_cu->imported_symtabs_empty ())
9905 for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
9907 recursively_compute_inclusions (result, all_children,
9908 all_type_symtabs, ptr, per_objfile,
9913 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
9917 compute_compunit_symtab_includes (dwarf2_per_cu_data *per_cu,
9918 dwarf2_per_objfile *per_objfile)
9920 gdb_assert (! per_cu->is_debug_types);
9922 if (!per_cu->imported_symtabs_empty ())
9925 std::vector<compunit_symtab *> result_symtabs;
9926 compunit_symtab *cust = per_objfile->get_symtab (per_cu);
9928 /* If we don't have a symtab, we can just skip this case. */
9932 htab_up all_children (htab_create_alloc (1, htab_hash_pointer,
9934 NULL, xcalloc, xfree));
9935 htab_up all_type_symtabs (htab_create_alloc (1, htab_hash_pointer,
9937 NULL, xcalloc, xfree));
9939 for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
9941 recursively_compute_inclusions (&result_symtabs, all_children.get (),
9942 all_type_symtabs.get (), ptr,
9946 /* Now we have a transitive closure of all the included symtabs. */
9947 len = result_symtabs.size ();
9949 = XOBNEWVEC (&per_objfile->objfile->objfile_obstack,
9950 struct compunit_symtab *, len + 1);
9951 memcpy (cust->includes, result_symtabs.data (),
9952 len * sizeof (compunit_symtab *));
9953 cust->includes[len] = NULL;
9957 /* Compute the 'includes' field for the symtabs of all the CUs we just
9961 process_cu_includes (dwarf2_per_objfile *per_objfile)
9963 for (dwarf2_per_cu_data *iter : per_objfile->per_bfd->just_read_cus)
9965 if (! iter->is_debug_types)
9966 compute_compunit_symtab_includes (iter, per_objfile);
9969 per_objfile->per_bfd->just_read_cus.clear ();
9972 /* Generate full symbol information for CU, whose DIEs have
9973 already been loaded into memory. */
9976 process_full_comp_unit (dwarf2_cu *cu, enum language pretend_language)
9978 dwarf2_per_objfile *per_objfile = cu->per_objfile;
9979 struct objfile *objfile = per_objfile->objfile;
9980 struct gdbarch *gdbarch = objfile->arch ();
9981 CORE_ADDR lowpc, highpc;
9982 struct compunit_symtab *cust;
9984 struct block *static_block;
9987 baseaddr = objfile->text_section_offset ();
9989 /* Clear the list here in case something was left over. */
9990 cu->method_list.clear ();
9992 cu->language = pretend_language;
9993 cu->language_defn = language_def (cu->language);
9995 dwarf2_find_base_address (cu->dies, cu);
9997 /* Before we start reading the top-level DIE, ensure it has a valid tag
9999 switch (cu->dies->tag)
10001 case DW_TAG_compile_unit:
10002 case DW_TAG_partial_unit:
10003 case DW_TAG_type_unit:
10006 error (_("Dwarf Error: unexpected tag '%s' at offset %s [in module %s]"),
10007 dwarf_tag_name (cu->dies->tag),
10008 sect_offset_str (cu->per_cu->sect_off),
10009 objfile_name (per_objfile->objfile));
10012 /* Do line number decoding in read_file_scope () */
10013 process_die (cu->dies, cu);
10015 /* For now fudge the Go package. */
10016 if (cu->language == language_go)
10017 fixup_go_packaging (cu);
10019 /* Now that we have processed all the DIEs in the CU, all the types
10020 should be complete, and it should now be safe to compute all of the
10022 compute_delayed_physnames (cu);
10024 if (cu->language == language_rust)
10025 rust_union_quirks (cu);
10027 /* Some compilers don't define a DW_AT_high_pc attribute for the
10028 compilation unit. If the DW_AT_high_pc is missing, synthesize
10029 it, by scanning the DIE's below the compilation unit. */
10030 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10032 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10033 static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
10035 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10036 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10037 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
10038 addrmap to help ensure it has an accurate map of pc values belonging to
10040 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10042 cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
10043 SECT_OFF_TEXT (objfile),
10048 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10050 /* Set symtab language to language from DW_AT_language. If the
10051 compilation is from a C file generated by language preprocessors, do
10052 not set the language if it was already deduced by start_subfile. */
10053 if (!(cu->language == language_c
10054 && COMPUNIT_FILETABS (cust)->language != language_unknown))
10055 COMPUNIT_FILETABS (cust)->language = cu->language;
10057 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
10058 produce DW_AT_location with location lists but it can be possibly
10059 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
10060 there were bugs in prologue debug info, fixed later in GCC-4.5
10061 by "unwind info for epilogues" patch (which is not directly related).
10063 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10064 needed, it would be wrong due to missing DW_AT_producer there.
10066 Still one can confuse GDB by using non-standard GCC compilation
10067 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10069 if (cu->has_loclist && gcc_4_minor >= 5)
10070 cust->locations_valid = 1;
10072 if (gcc_4_minor >= 5)
10073 cust->epilogue_unwind_valid = 1;
10075 cust->call_site_htab = cu->call_site_htab;
10078 per_objfile->set_symtab (cu->per_cu, cust);
10080 /* Push it for inclusion processing later. */
10081 per_objfile->per_bfd->just_read_cus.push_back (cu->per_cu);
10083 /* Not needed any more. */
10084 cu->reset_builder ();
10087 /* Generate full symbol information for type unit CU, whose DIEs have
10088 already been loaded into memory. */
10091 process_full_type_unit (dwarf2_cu *cu,
10092 enum language pretend_language)
10094 dwarf2_per_objfile *per_objfile = cu->per_objfile;
10095 struct objfile *objfile = per_objfile->objfile;
10096 struct compunit_symtab *cust;
10097 struct signatured_type *sig_type;
10099 gdb_assert (cu->per_cu->is_debug_types);
10100 sig_type = (struct signatured_type *) cu->per_cu;
10102 /* Clear the list here in case something was left over. */
10103 cu->method_list.clear ();
10105 cu->language = pretend_language;
10106 cu->language_defn = language_def (cu->language);
10108 /* The symbol tables are set up in read_type_unit_scope. */
10109 process_die (cu->dies, cu);
10111 /* For now fudge the Go package. */
10112 if (cu->language == language_go)
10113 fixup_go_packaging (cu);
10115 /* Now that we have processed all the DIEs in the CU, all the types
10116 should be complete, and it should now be safe to compute all of the
10118 compute_delayed_physnames (cu);
10120 if (cu->language == language_rust)
10121 rust_union_quirks (cu);
10123 /* TUs share symbol tables.
10124 If this is the first TU to use this symtab, complete the construction
10125 of it with end_expandable_symtab. Otherwise, complete the addition of
10126 this TU's symbols to the existing symtab. */
10127 type_unit_group_unshareable *tug_unshare =
10128 per_objfile->get_type_unit_group_unshareable (sig_type->type_unit_group);
10129 if (tug_unshare->compunit_symtab == NULL)
10131 buildsym_compunit *builder = cu->get_builder ();
10132 cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10133 tug_unshare->compunit_symtab = cust;
10137 /* Set symtab language to language from DW_AT_language. If the
10138 compilation is from a C file generated by language preprocessors,
10139 do not set the language if it was already deduced by
10141 if (!(cu->language == language_c
10142 && COMPUNIT_FILETABS (cust)->language != language_c))
10143 COMPUNIT_FILETABS (cust)->language = cu->language;
10148 cu->get_builder ()->augment_type_symtab ();
10149 cust = tug_unshare->compunit_symtab;
10152 per_objfile->set_symtab (cu->per_cu, cust);
10154 /* Not needed any more. */
10155 cu->reset_builder ();
10158 /* Process an imported unit DIE. */
10161 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10163 struct attribute *attr;
10165 /* For now we don't handle imported units in type units. */
10166 if (cu->per_cu->is_debug_types)
10168 error (_("Dwarf Error: DW_TAG_imported_unit is not"
10169 " supported in type units [in module %s]"),
10170 objfile_name (cu->per_objfile->objfile));
10173 attr = dwarf2_attr (die, DW_AT_import, cu);
10176 sect_offset sect_off = attr->get_ref_die_offset ();
10177 bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10178 dwarf2_per_objfile *per_objfile = cu->per_objfile;
10179 dwarf2_per_cu_data *per_cu
10180 = dwarf2_find_containing_comp_unit (sect_off, is_dwz, per_objfile);
10182 /* We're importing a C++ compilation unit with tag DW_TAG_compile_unit
10183 into another compilation unit, at root level. Regard this as a hint,
10185 if (die->parent && die->parent->parent == NULL
10186 && per_cu->unit_type == DW_UT_compile
10187 && per_cu->lang == language_cplus)
10190 /* If necessary, add it to the queue and load its DIEs. */
10191 if (maybe_queue_comp_unit (cu, per_cu, per_objfile, cu->language))
10192 load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
10193 false, cu->language);
10195 cu->per_cu->imported_symtabs_push (per_cu);
10199 /* RAII object that represents a process_die scope: i.e.,
10200 starts/finishes processing a DIE. */
10201 class process_die_scope
10204 process_die_scope (die_info *die, dwarf2_cu *cu)
10205 : m_die (die), m_cu (cu)
10207 /* We should only be processing DIEs not already in process. */
10208 gdb_assert (!m_die->in_process);
10209 m_die->in_process = true;
10212 ~process_die_scope ()
10214 m_die->in_process = false;
10216 /* If we're done processing the DIE for the CU that owns the line
10217 header, we don't need the line header anymore. */
10218 if (m_cu->line_header_die_owner == m_die)
10220 delete m_cu->line_header;
10221 m_cu->line_header = NULL;
10222 m_cu->line_header_die_owner = NULL;
10231 /* Process a die and its children. */
10234 process_die (struct die_info *die, struct dwarf2_cu *cu)
10236 process_die_scope scope (die, cu);
10240 case DW_TAG_padding:
10242 case DW_TAG_compile_unit:
10243 case DW_TAG_partial_unit:
10244 read_file_scope (die, cu);
10246 case DW_TAG_type_unit:
10247 read_type_unit_scope (die, cu);
10249 case DW_TAG_subprogram:
10250 /* Nested subprograms in Fortran get a prefix. */
10251 if (cu->language == language_fortran
10252 && die->parent != NULL
10253 && die->parent->tag == DW_TAG_subprogram)
10254 cu->processing_has_namespace_info = true;
10255 /* Fall through. */
10256 case DW_TAG_inlined_subroutine:
10257 read_func_scope (die, cu);
10259 case DW_TAG_lexical_block:
10260 case DW_TAG_try_block:
10261 case DW_TAG_catch_block:
10262 read_lexical_block_scope (die, cu);
10264 case DW_TAG_call_site:
10265 case DW_TAG_GNU_call_site:
10266 read_call_site_scope (die, cu);
10268 case DW_TAG_class_type:
10269 case DW_TAG_interface_type:
10270 case DW_TAG_structure_type:
10271 case DW_TAG_union_type:
10272 process_structure_scope (die, cu);
10274 case DW_TAG_enumeration_type:
10275 process_enumeration_scope (die, cu);
10278 /* These dies have a type, but processing them does not create
10279 a symbol or recurse to process the children. Therefore we can
10280 read them on-demand through read_type_die. */
10281 case DW_TAG_subroutine_type:
10282 case DW_TAG_set_type:
10283 case DW_TAG_pointer_type:
10284 case DW_TAG_ptr_to_member_type:
10285 case DW_TAG_reference_type:
10286 case DW_TAG_rvalue_reference_type:
10287 case DW_TAG_string_type:
10290 case DW_TAG_array_type:
10291 /* We only need to handle this case for Ada -- in other
10292 languages, it's normal for the compiler to emit a typedef
10294 if (cu->language != language_ada)
10297 case DW_TAG_base_type:
10298 case DW_TAG_subrange_type:
10299 case DW_TAG_typedef:
10300 /* Add a typedef symbol for the type definition, if it has a
10302 new_symbol (die, read_type_die (die, cu), cu);
10304 case DW_TAG_common_block:
10305 read_common_block (die, cu);
10307 case DW_TAG_common_inclusion:
10309 case DW_TAG_namespace:
10310 cu->processing_has_namespace_info = true;
10311 read_namespace (die, cu);
10313 case DW_TAG_module:
10314 cu->processing_has_namespace_info = true;
10315 read_module (die, cu);
10317 case DW_TAG_imported_declaration:
10318 cu->processing_has_namespace_info = true;
10319 if (read_namespace_alias (die, cu))
10321 /* The declaration is not a global namespace alias. */
10322 /* Fall through. */
10323 case DW_TAG_imported_module:
10324 cu->processing_has_namespace_info = true;
10325 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10326 || cu->language != language_fortran))
10327 complaint (_("Tag '%s' has unexpected children"),
10328 dwarf_tag_name (die->tag));
10329 read_import_statement (die, cu);
10332 case DW_TAG_imported_unit:
10333 process_imported_unit_die (die, cu);
10336 case DW_TAG_variable:
10337 read_variable (die, cu);
10341 new_symbol (die, NULL, cu);
10346 /* DWARF name computation. */
10348 /* A helper function for dwarf2_compute_name which determines whether DIE
10349 needs to have the name of the scope prepended to the name listed in the
10353 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10355 struct attribute *attr;
10359 case DW_TAG_namespace:
10360 case DW_TAG_typedef:
10361 case DW_TAG_class_type:
10362 case DW_TAG_interface_type:
10363 case DW_TAG_structure_type:
10364 case DW_TAG_union_type:
10365 case DW_TAG_enumeration_type:
10366 case DW_TAG_enumerator:
10367 case DW_TAG_subprogram:
10368 case DW_TAG_inlined_subroutine:
10369 case DW_TAG_member:
10370 case DW_TAG_imported_declaration:
10373 case DW_TAG_variable:
10374 case DW_TAG_constant:
10375 /* We only need to prefix "globally" visible variables. These include
10376 any variable marked with DW_AT_external or any variable that
10377 lives in a namespace. [Variables in anonymous namespaces
10378 require prefixing, but they are not DW_AT_external.] */
10380 if (dwarf2_attr (die, DW_AT_specification, cu))
10382 struct dwarf2_cu *spec_cu = cu;
10384 return die_needs_namespace (die_specification (die, &spec_cu),
10388 attr = dwarf2_attr (die, DW_AT_external, cu);
10389 if (attr == NULL && die->parent->tag != DW_TAG_namespace
10390 && die->parent->tag != DW_TAG_module)
10392 /* A variable in a lexical block of some kind does not need a
10393 namespace, even though in C++ such variables may be external
10394 and have a mangled name. */
10395 if (die->parent->tag == DW_TAG_lexical_block
10396 || die->parent->tag == DW_TAG_try_block
10397 || die->parent->tag == DW_TAG_catch_block
10398 || die->parent->tag == DW_TAG_subprogram)
10407 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10408 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
10409 defined for the given DIE. */
10411 static struct attribute *
10412 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10414 struct attribute *attr;
10416 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10418 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10423 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10424 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
10425 defined for the given DIE. */
10427 static const char *
10428 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10430 const char *linkage_name;
10432 linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10433 if (linkage_name == NULL)
10434 linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10436 /* rustc emits invalid values for DW_AT_linkage_name. Ignore these.
10437 See https://github.com/rust-lang/rust/issues/32925. */
10438 if (cu->language == language_rust && linkage_name != NULL
10439 && strchr (linkage_name, '{') != NULL)
10440 linkage_name = NULL;
10442 return linkage_name;
10445 /* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
10446 compute the physname for the object, which include a method's:
10447 - formal parameters (C++),
10448 - receiver type (Go),
10450 The term "physname" is a bit confusing.
10451 For C++, for example, it is the demangled name.
10452 For Go, for example, it's the mangled name.
10454 For Ada, return the DIE's linkage name rather than the fully qualified
10455 name. PHYSNAME is ignored..
10457 The result is allocated on the objfile->per_bfd's obstack and
10460 static const char *
10461 dwarf2_compute_name (const char *name,
10462 struct die_info *die, struct dwarf2_cu *cu,
10465 struct objfile *objfile = cu->per_objfile->objfile;
10468 name = dwarf2_name (die, cu);
10470 /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10471 but otherwise compute it by typename_concat inside GDB.
10472 FIXME: Actually this is not really true, or at least not always true.
10473 It's all very confusing. compute_and_set_names doesn't try to demangle
10474 Fortran names because there is no mangling standard. So new_symbol
10475 will set the demangled name to the result of dwarf2_full_name, and it is
10476 the demangled name that GDB uses if it exists. */
10477 if (cu->language == language_ada
10478 || (cu->language == language_fortran && physname))
10480 /* For Ada unit, we prefer the linkage name over the name, as
10481 the former contains the exported name, which the user expects
10482 to be able to reference. Ideally, we want the user to be able
10483 to reference this entity using either natural or linkage name,
10484 but we haven't started looking at this enhancement yet. */
10485 const char *linkage_name = dw2_linkage_name (die, cu);
10487 if (linkage_name != NULL)
10488 return linkage_name;
10491 /* These are the only languages we know how to qualify names in. */
10493 && (cu->language == language_cplus
10494 || cu->language == language_fortran || cu->language == language_d
10495 || cu->language == language_rust))
10497 if (die_needs_namespace (die, cu))
10499 const char *prefix;
10500 const char *canonical_name = NULL;
10504 prefix = determine_prefix (die, cu);
10505 if (*prefix != '\0')
10507 gdb::unique_xmalloc_ptr<char> prefixed_name
10508 (typename_concat (NULL, prefix, name, physname, cu));
10510 buf.puts (prefixed_name.get ());
10515 /* Template parameters may be specified in the DIE's DW_AT_name, or
10516 as children with DW_TAG_template_type_param or
10517 DW_TAG_value_type_param. If the latter, add them to the name
10518 here. If the name already has template parameters, then
10519 skip this step; some versions of GCC emit both, and
10520 it is more efficient to use the pre-computed name.
10522 Something to keep in mind about this process: it is very
10523 unlikely, or in some cases downright impossible, to produce
10524 something that will match the mangled name of a function.
10525 If the definition of the function has the same debug info,
10526 we should be able to match up with it anyway. But fallbacks
10527 using the minimal symbol, for instance to find a method
10528 implemented in a stripped copy of libstdc++, will not work.
10529 If we do not have debug info for the definition, we will have to
10530 match them up some other way.
10532 When we do name matching there is a related problem with function
10533 templates; two instantiated function templates are allowed to
10534 differ only by their return types, which we do not add here. */
10536 if (cu->language == language_cplus && strchr (name, '<') == NULL)
10538 struct attribute *attr;
10539 struct die_info *child;
10541 const language_defn *cplus_lang = language_def (cu->language);
10543 die->building_fullname = 1;
10545 for (child = die->child; child != NULL; child = child->sibling)
10549 const gdb_byte *bytes;
10550 struct dwarf2_locexpr_baton *baton;
10553 if (child->tag != DW_TAG_template_type_param
10554 && child->tag != DW_TAG_template_value_param)
10565 attr = dwarf2_attr (child, DW_AT_type, cu);
10568 complaint (_("template parameter missing DW_AT_type"));
10569 buf.puts ("UNKNOWN_TYPE");
10572 type = die_type (child, cu);
10574 if (child->tag == DW_TAG_template_type_param)
10576 cplus_lang->print_type (type, "", &buf, -1, 0,
10577 &type_print_raw_options);
10581 attr = dwarf2_attr (child, DW_AT_const_value, cu);
10584 complaint (_("template parameter missing "
10585 "DW_AT_const_value"));
10586 buf.puts ("UNKNOWN_VALUE");
10590 dwarf2_const_value_attr (attr, type, name,
10591 &cu->comp_unit_obstack, cu,
10592 &value, &bytes, &baton);
10594 if (type->has_no_signedness ())
10595 /* GDB prints characters as NUMBER 'CHAR'. If that's
10596 changed, this can use value_print instead. */
10597 cplus_lang->printchar (value, type, &buf);
10600 struct value_print_options opts;
10603 v = dwarf2_evaluate_loc_desc (type, NULL,
10607 baton->per_objfile);
10608 else if (bytes != NULL)
10610 v = allocate_value (type);
10611 memcpy (value_contents_writeable (v), bytes,
10612 TYPE_LENGTH (type));
10615 v = value_from_longest (type, value);
10617 /* Specify decimal so that we do not depend on
10619 get_formatted_print_options (&opts, 'd');
10621 value_print (v, &buf, &opts);
10626 die->building_fullname = 0;
10630 /* Close the argument list, with a space if necessary
10631 (nested templates). */
10632 if (!buf.empty () && buf.string ().back () == '>')
10639 /* For C++ methods, append formal parameter type
10640 information, if PHYSNAME. */
10642 if (physname && die->tag == DW_TAG_subprogram
10643 && cu->language == language_cplus)
10645 struct type *type = read_type_die (die, cu);
10647 c_type_print_args (type, &buf, 1, cu->language,
10648 &type_print_raw_options);
10650 if (cu->language == language_cplus)
10652 /* Assume that an artificial first parameter is
10653 "this", but do not crash if it is not. RealView
10654 marks unnamed (and thus unused) parameters as
10655 artificial; there is no way to differentiate
10657 if (type->num_fields () > 0
10658 && TYPE_FIELD_ARTIFICIAL (type, 0)
10659 && type->field (0).type ()->code () == TYPE_CODE_PTR
10660 && TYPE_CONST (TYPE_TARGET_TYPE (type->field (0).type ())))
10661 buf.puts (" const");
10665 const std::string &intermediate_name = buf.string ();
10667 if (cu->language == language_cplus)
10669 = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
10672 /* If we only computed INTERMEDIATE_NAME, or if
10673 INTERMEDIATE_NAME is already canonical, then we need to
10675 if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
10676 name = objfile->intern (intermediate_name);
10678 name = canonical_name;
10685 /* Return the fully qualified name of DIE, based on its DW_AT_name.
10686 If scope qualifiers are appropriate they will be added. The result
10687 will be allocated on the storage_obstack, or NULL if the DIE does
10688 not have a name. NAME may either be from a previous call to
10689 dwarf2_name or NULL.
10691 The output string will be canonicalized (if C++). */
10693 static const char *
10694 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
10696 return dwarf2_compute_name (name, die, cu, 0);
10699 /* Construct a physname for the given DIE in CU. NAME may either be
10700 from a previous call to dwarf2_name or NULL. The result will be
10701 allocated on the objfile_objstack or NULL if the DIE does not have a
10704 The output string will be canonicalized (if C++). */
10706 static const char *
10707 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
10709 struct objfile *objfile = cu->per_objfile->objfile;
10710 const char *retval, *mangled = NULL, *canon = NULL;
10713 /* In this case dwarf2_compute_name is just a shortcut not building anything
10715 if (!die_needs_namespace (die, cu))
10716 return dwarf2_compute_name (name, die, cu, 1);
10718 if (cu->language != language_rust)
10719 mangled = dw2_linkage_name (die, cu);
10721 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
10723 gdb::unique_xmalloc_ptr<char> demangled;
10724 if (mangled != NULL)
10727 if (language_def (cu->language)->store_sym_names_in_linkage_form_p ())
10729 /* Do nothing (do not demangle the symbol name). */
10733 /* Use DMGL_RET_DROP for C++ template functions to suppress
10734 their return type. It is easier for GDB users to search
10735 for such functions as `name(params)' than `long name(params)'.
10736 In such case the minimal symbol names do not match the full
10737 symbol names but for template functions there is never a need
10738 to look up their definition from their declaration so
10739 the only disadvantage remains the minimal symbol variant
10740 `long name(params)' does not have the proper inferior type. */
10741 demangled.reset (gdb_demangle (mangled,
10742 (DMGL_PARAMS | DMGL_ANSI
10743 | DMGL_RET_DROP)));
10746 canon = demangled.get ();
10754 if (canon == NULL || check_physname)
10756 const char *physname = dwarf2_compute_name (name, die, cu, 1);
10758 if (canon != NULL && strcmp (physname, canon) != 0)
10760 /* It may not mean a bug in GDB. The compiler could also
10761 compute DW_AT_linkage_name incorrectly. But in such case
10762 GDB would need to be bug-to-bug compatible. */
10764 complaint (_("Computed physname <%s> does not match demangled <%s> "
10765 "(from linkage <%s>) - DIE at %s [in module %s]"),
10766 physname, canon, mangled, sect_offset_str (die->sect_off),
10767 objfile_name (objfile));
10769 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
10770 is available here - over computed PHYSNAME. It is safer
10771 against both buggy GDB and buggy compilers. */
10785 retval = objfile->intern (retval);
10790 /* Inspect DIE in CU for a namespace alias. If one exists, record
10791 a new symbol for it.
10793 Returns 1 if a namespace alias was recorded, 0 otherwise. */
10796 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
10798 struct attribute *attr;
10800 /* If the die does not have a name, this is not a namespace
10802 attr = dwarf2_attr (die, DW_AT_name, cu);
10806 struct die_info *d = die;
10807 struct dwarf2_cu *imported_cu = cu;
10809 /* If the compiler has nested DW_AT_imported_declaration DIEs,
10810 keep inspecting DIEs until we hit the underlying import. */
10811 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
10812 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
10814 attr = dwarf2_attr (d, DW_AT_import, cu);
10818 d = follow_die_ref (d, attr, &imported_cu);
10819 if (d->tag != DW_TAG_imported_declaration)
10823 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
10825 complaint (_("DIE at %s has too many recursively imported "
10826 "declarations"), sect_offset_str (d->sect_off));
10833 sect_offset sect_off = attr->get_ref_die_offset ();
10835 type = get_die_type_at_offset (sect_off, cu->per_cu, cu->per_objfile);
10836 if (type != NULL && type->code () == TYPE_CODE_NAMESPACE)
10838 /* This declaration is a global namespace alias. Add
10839 a symbol for it whose type is the aliased namespace. */
10840 new_symbol (die, type, cu);
10849 /* Return the using directives repository (global or local?) to use in the
10850 current context for CU.
10852 For Ada, imported declarations can materialize renamings, which *may* be
10853 global. However it is impossible (for now?) in DWARF to distinguish
10854 "external" imported declarations and "static" ones. As all imported
10855 declarations seem to be static in all other languages, make them all CU-wide
10856 global only in Ada. */
10858 static struct using_direct **
10859 using_directives (struct dwarf2_cu *cu)
10861 if (cu->language == language_ada
10862 && cu->get_builder ()->outermost_context_p ())
10863 return cu->get_builder ()->get_global_using_directives ();
10865 return cu->get_builder ()->get_local_using_directives ();
10868 /* Read the import statement specified by the given die and record it. */
10871 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
10873 struct objfile *objfile = cu->per_objfile->objfile;
10874 struct attribute *import_attr;
10875 struct die_info *imported_die, *child_die;
10876 struct dwarf2_cu *imported_cu;
10877 const char *imported_name;
10878 const char *imported_name_prefix;
10879 const char *canonical_name;
10880 const char *import_alias;
10881 const char *imported_declaration = NULL;
10882 const char *import_prefix;
10883 std::vector<const char *> excludes;
10885 import_attr = dwarf2_attr (die, DW_AT_import, cu);
10886 if (import_attr == NULL)
10888 complaint (_("Tag '%s' has no DW_AT_import"),
10889 dwarf_tag_name (die->tag));
10894 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
10895 imported_name = dwarf2_name (imported_die, imported_cu);
10896 if (imported_name == NULL)
10898 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
10900 The import in the following code:
10914 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
10915 <52> DW_AT_decl_file : 1
10916 <53> DW_AT_decl_line : 6
10917 <54> DW_AT_import : <0x75>
10918 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
10919 <59> DW_AT_name : B
10920 <5b> DW_AT_decl_file : 1
10921 <5c> DW_AT_decl_line : 2
10922 <5d> DW_AT_type : <0x6e>
10924 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
10925 <76> DW_AT_byte_size : 4
10926 <77> DW_AT_encoding : 5 (signed)
10928 imports the wrong die ( 0x75 instead of 0x58 ).
10929 This case will be ignored until the gcc bug is fixed. */
10933 /* Figure out the local name after import. */
10934 import_alias = dwarf2_name (die, cu);
10936 /* Figure out where the statement is being imported to. */
10937 import_prefix = determine_prefix (die, cu);
10939 /* Figure out what the scope of the imported die is and prepend it
10940 to the name of the imported die. */
10941 imported_name_prefix = determine_prefix (imported_die, imported_cu);
10943 if (imported_die->tag != DW_TAG_namespace
10944 && imported_die->tag != DW_TAG_module)
10946 imported_declaration = imported_name;
10947 canonical_name = imported_name_prefix;
10949 else if (strlen (imported_name_prefix) > 0)
10950 canonical_name = obconcat (&objfile->objfile_obstack,
10951 imported_name_prefix,
10952 (cu->language == language_d ? "." : "::"),
10953 imported_name, (char *) NULL);
10955 canonical_name = imported_name;
10957 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
10958 for (child_die = die->child; child_die && child_die->tag;
10959 child_die = child_die->sibling)
10961 /* DWARF-4: A Fortran use statement with a “rename list” may be
10962 represented by an imported module entry with an import attribute
10963 referring to the module and owned entries corresponding to those
10964 entities that are renamed as part of being imported. */
10966 if (child_die->tag != DW_TAG_imported_declaration)
10968 complaint (_("child DW_TAG_imported_declaration expected "
10969 "- DIE at %s [in module %s]"),
10970 sect_offset_str (child_die->sect_off),
10971 objfile_name (objfile));
10975 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
10976 if (import_attr == NULL)
10978 complaint (_("Tag '%s' has no DW_AT_import"),
10979 dwarf_tag_name (child_die->tag));
10984 imported_die = follow_die_ref_or_sig (child_die, import_attr,
10986 imported_name = dwarf2_name (imported_die, imported_cu);
10987 if (imported_name == NULL)
10989 complaint (_("child DW_TAG_imported_declaration has unknown "
10990 "imported name - DIE at %s [in module %s]"),
10991 sect_offset_str (child_die->sect_off),
10992 objfile_name (objfile));
10996 excludes.push_back (imported_name);
10998 process_die (child_die, cu);
11001 add_using_directive (using_directives (cu),
11005 imported_declaration,
11008 &objfile->objfile_obstack);
11011 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11012 types, but gives them a size of zero. Starting with version 14,
11013 ICC is compatible with GCC. */
11016 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11018 if (!cu->checked_producer)
11019 check_producer (cu);
11021 return cu->producer_is_icc_lt_14;
11024 /* ICC generates a DW_AT_type for C void functions. This was observed on
11025 ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11026 which says that void functions should not have a DW_AT_type. */
11029 producer_is_icc (struct dwarf2_cu *cu)
11031 if (!cu->checked_producer)
11032 check_producer (cu);
11034 return cu->producer_is_icc;
11037 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11038 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11039 this, it was first present in GCC release 4.3.0. */
11042 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11044 if (!cu->checked_producer)
11045 check_producer (cu);
11047 return cu->producer_is_gcc_lt_4_3;
11050 static file_and_directory
11051 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11053 file_and_directory res;
11055 /* Find the filename. Do not use dwarf2_name here, since the filename
11056 is not a source language identifier. */
11057 res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11058 res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11060 if (res.comp_dir == NULL
11061 && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11062 && IS_ABSOLUTE_PATH (res.name))
11064 res.comp_dir_storage = ldirname (res.name);
11065 if (!res.comp_dir_storage.empty ())
11066 res.comp_dir = res.comp_dir_storage.c_str ();
11068 if (res.comp_dir != NULL)
11070 /* Irix 6.2 native cc prepends <machine>.: to the compilation
11071 directory, get rid of it. */
11072 const char *cp = strchr (res.comp_dir, ':');
11074 if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11075 res.comp_dir = cp + 1;
11078 if (res.name == NULL)
11079 res.name = "<unknown>";
11084 /* Handle DW_AT_stmt_list for a compilation unit.
11085 DIE is the DW_TAG_compile_unit die for CU.
11086 COMP_DIR is the compilation directory. LOWPC is passed to
11087 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
11090 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11091 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11093 dwarf2_per_objfile *per_objfile = cu->per_objfile;
11094 struct attribute *attr;
11095 struct line_header line_header_local;
11096 hashval_t line_header_local_hash;
11098 int decode_mapping;
11100 gdb_assert (! cu->per_cu->is_debug_types);
11102 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11103 if (attr == NULL || !attr->form_is_unsigned ())
11106 sect_offset line_offset = (sect_offset) attr->as_unsigned ();
11108 /* The line header hash table is only created if needed (it exists to
11109 prevent redundant reading of the line table for partial_units).
11110 If we're given a partial_unit, we'll need it. If we're given a
11111 compile_unit, then use the line header hash table if it's already
11112 created, but don't create one just yet. */
11114 if (per_objfile->line_header_hash == NULL
11115 && die->tag == DW_TAG_partial_unit)
11117 per_objfile->line_header_hash
11118 .reset (htab_create_alloc (127, line_header_hash_voidp,
11119 line_header_eq_voidp,
11120 free_line_header_voidp,
11124 line_header_local.sect_off = line_offset;
11125 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11126 line_header_local_hash = line_header_hash (&line_header_local);
11127 if (per_objfile->line_header_hash != NULL)
11129 slot = htab_find_slot_with_hash (per_objfile->line_header_hash.get (),
11130 &line_header_local,
11131 line_header_local_hash, NO_INSERT);
11133 /* For DW_TAG_compile_unit we need info like symtab::linetable which
11134 is not present in *SLOT (since if there is something in *SLOT then
11135 it will be for a partial_unit). */
11136 if (die->tag == DW_TAG_partial_unit && slot != NULL)
11138 gdb_assert (*slot != NULL);
11139 cu->line_header = (struct line_header *) *slot;
11144 /* dwarf_decode_line_header does not yet provide sufficient information.
11145 We always have to call also dwarf_decode_lines for it. */
11146 line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11150 cu->line_header = lh.release ();
11151 cu->line_header_die_owner = die;
11153 if (per_objfile->line_header_hash == NULL)
11157 slot = htab_find_slot_with_hash (per_objfile->line_header_hash.get (),
11158 &line_header_local,
11159 line_header_local_hash, INSERT);
11160 gdb_assert (slot != NULL);
11162 if (slot != NULL && *slot == NULL)
11164 /* This newly decoded line number information unit will be owned
11165 by line_header_hash hash table. */
11166 *slot = cu->line_header;
11167 cu->line_header_die_owner = NULL;
11171 /* We cannot free any current entry in (*slot) as that struct line_header
11172 may be already used by multiple CUs. Create only temporary decoded
11173 line_header for this CU - it may happen at most once for each line
11174 number information unit. And if we're not using line_header_hash
11175 then this is what we want as well. */
11176 gdb_assert (die->tag != DW_TAG_partial_unit);
11178 decode_mapping = (die->tag != DW_TAG_partial_unit);
11179 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11184 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
11187 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11189 dwarf2_per_objfile *per_objfile = cu->per_objfile;
11190 struct objfile *objfile = per_objfile->objfile;
11191 struct gdbarch *gdbarch = objfile->arch ();
11192 CORE_ADDR lowpc = ((CORE_ADDR) -1);
11193 CORE_ADDR highpc = ((CORE_ADDR) 0);
11194 struct attribute *attr;
11195 struct die_info *child_die;
11196 CORE_ADDR baseaddr;
11198 prepare_one_comp_unit (cu, die, cu->language);
11199 baseaddr = objfile->text_section_offset ();
11201 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11203 /* If we didn't find a lowpc, set it to highpc to avoid complaints
11204 from finish_block. */
11205 if (lowpc == ((CORE_ADDR) -1))
11207 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11209 file_and_directory fnd = find_file_and_directory (die, cu);
11211 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11212 standardised yet. As a workaround for the language detection we fall
11213 back to the DW_AT_producer string. */
11214 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11215 cu->language = language_opencl;
11217 /* Similar hack for Go. */
11218 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11219 set_cu_language (DW_LANG_Go, cu);
11221 cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
11223 /* Decode line number information if present. We do this before
11224 processing child DIEs, so that the line header table is available
11225 for DW_AT_decl_file. */
11226 handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11228 /* Process all dies in compilation unit. */
11229 if (die->child != NULL)
11231 child_die = die->child;
11232 while (child_die && child_die->tag)
11234 process_die (child_die, cu);
11235 child_die = child_die->sibling;
11239 /* Decode macro information, if present. Dwarf 2 macro information
11240 refers to information in the line number info statement program
11241 header, so we can only read it if we've read the header
11243 attr = dwarf2_attr (die, DW_AT_macros, cu);
11245 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11246 if (attr != nullptr && attr->form_is_unsigned () && cu->line_header)
11248 if (dwarf2_attr (die, DW_AT_macro_info, cu))
11249 complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11251 dwarf_decode_macros (cu, attr->as_unsigned (), 1);
11255 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11256 if (attr != nullptr && attr->form_is_unsigned () && cu->line_header)
11258 unsigned int macro_offset = attr->as_unsigned ();
11260 dwarf_decode_macros (cu, macro_offset, 0);
11266 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
11268 struct type_unit_group *tu_group;
11270 struct attribute *attr;
11272 struct signatured_type *sig_type;
11274 gdb_assert (per_cu->is_debug_types);
11275 sig_type = (struct signatured_type *) per_cu;
11277 attr = dwarf2_attr (die, DW_AT_stmt_list, this);
11279 /* If we're using .gdb_index (includes -readnow) then
11280 per_cu->type_unit_group may not have been set up yet. */
11281 if (sig_type->type_unit_group == NULL)
11282 sig_type->type_unit_group = get_type_unit_group (this, attr);
11283 tu_group = sig_type->type_unit_group;
11285 /* If we've already processed this stmt_list there's no real need to
11286 do it again, we could fake it and just recreate the part we need
11287 (file name,index -> symtab mapping). If data shows this optimization
11288 is useful we can do it then. */
11289 type_unit_group_unshareable *tug_unshare
11290 = per_objfile->get_type_unit_group_unshareable (tu_group);
11291 first_time = tug_unshare->compunit_symtab == NULL;
11293 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11296 if (attr != NULL && attr->form_is_unsigned ())
11298 sect_offset line_offset = (sect_offset) attr->as_unsigned ();
11299 lh = dwarf_decode_line_header (line_offset, this);
11304 start_symtab ("", NULL, 0);
11307 gdb_assert (tug_unshare->symtabs == NULL);
11308 gdb_assert (m_builder == nullptr);
11309 struct compunit_symtab *cust = tug_unshare->compunit_symtab;
11310 m_builder.reset (new struct buildsym_compunit
11311 (COMPUNIT_OBJFILE (cust), "",
11312 COMPUNIT_DIRNAME (cust),
11313 compunit_language (cust),
11315 list_in_scope = get_builder ()->get_file_symbols ();
11320 line_header = lh.release ();
11321 line_header_die_owner = die;
11325 struct compunit_symtab *cust = start_symtab ("", NULL, 0);
11327 /* Note: We don't assign tu_group->compunit_symtab yet because we're
11328 still initializing it, and our caller (a few levels up)
11329 process_full_type_unit still needs to know if this is the first
11332 tug_unshare->symtabs
11333 = XOBNEWVEC (&COMPUNIT_OBJFILE (cust)->objfile_obstack,
11334 struct symtab *, line_header->file_names_size ());
11336 auto &file_names = line_header->file_names ();
11337 for (i = 0; i < file_names.size (); ++i)
11339 file_entry &fe = file_names[i];
11340 dwarf2_start_subfile (this, fe.name,
11341 fe.include_dir (line_header));
11342 buildsym_compunit *b = get_builder ();
11343 if (b->get_current_subfile ()->symtab == NULL)
11345 /* NOTE: start_subfile will recognize when it's been
11346 passed a file it has already seen. So we can't
11347 assume there's a simple mapping from
11348 cu->line_header->file_names to subfiles, plus
11349 cu->line_header->file_names may contain dups. */
11350 b->get_current_subfile ()->symtab
11351 = allocate_symtab (cust, b->get_current_subfile ()->name);
11354 fe.symtab = b->get_current_subfile ()->symtab;
11355 tug_unshare->symtabs[i] = fe.symtab;
11360 gdb_assert (m_builder == nullptr);
11361 struct compunit_symtab *cust = tug_unshare->compunit_symtab;
11362 m_builder.reset (new struct buildsym_compunit
11363 (COMPUNIT_OBJFILE (cust), "",
11364 COMPUNIT_DIRNAME (cust),
11365 compunit_language (cust),
11367 list_in_scope = get_builder ()->get_file_symbols ();
11369 auto &file_names = line_header->file_names ();
11370 for (i = 0; i < file_names.size (); ++i)
11372 file_entry &fe = file_names[i];
11373 fe.symtab = tug_unshare->symtabs[i];
11377 /* The main symtab is allocated last. Type units don't have DW_AT_name
11378 so they don't have a "real" (so to speak) symtab anyway.
11379 There is later code that will assign the main symtab to all symbols
11380 that don't have one. We need to handle the case of a symbol with a
11381 missing symtab (DW_AT_decl_file) anyway. */
11384 /* Process DW_TAG_type_unit.
11385 For TUs we want to skip the first top level sibling if it's not the
11386 actual type being defined by this TU. In this case the first top
11387 level sibling is there to provide context only. */
11390 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11392 struct die_info *child_die;
11394 prepare_one_comp_unit (cu, die, language_minimal);
11396 /* Initialize (or reinitialize) the machinery for building symtabs.
11397 We do this before processing child DIEs, so that the line header table
11398 is available for DW_AT_decl_file. */
11399 cu->setup_type_unit_groups (die);
11401 if (die->child != NULL)
11403 child_die = die->child;
11404 while (child_die && child_die->tag)
11406 process_die (child_die, cu);
11407 child_die = child_die->sibling;
11414 http://gcc.gnu.org/wiki/DebugFission
11415 http://gcc.gnu.org/wiki/DebugFissionDWP
11417 To simplify handling of both DWO files ("object" files with the DWARF info)
11418 and DWP files (a file with the DWOs packaged up into one file), we treat
11419 DWP files as having a collection of virtual DWO files. */
11422 hash_dwo_file (const void *item)
11424 const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11427 hash = htab_hash_string (dwo_file->dwo_name);
11428 if (dwo_file->comp_dir != NULL)
11429 hash += htab_hash_string (dwo_file->comp_dir);
11434 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11436 const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11437 const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11439 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11441 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11442 return lhs->comp_dir == rhs->comp_dir;
11443 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11446 /* Allocate a hash table for DWO files. */
11449 allocate_dwo_file_hash_table ()
11451 auto delete_dwo_file = [] (void *item)
11453 struct dwo_file *dwo_file = (struct dwo_file *) item;
11458 return htab_up (htab_create_alloc (41,
11465 /* Lookup DWO file DWO_NAME. */
11468 lookup_dwo_file_slot (dwarf2_per_objfile *per_objfile,
11469 const char *dwo_name,
11470 const char *comp_dir)
11472 struct dwo_file find_entry;
11475 if (per_objfile->per_bfd->dwo_files == NULL)
11476 per_objfile->per_bfd->dwo_files = allocate_dwo_file_hash_table ();
11478 find_entry.dwo_name = dwo_name;
11479 find_entry.comp_dir = comp_dir;
11480 slot = htab_find_slot (per_objfile->per_bfd->dwo_files.get (), &find_entry,
11487 hash_dwo_unit (const void *item)
11489 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11491 /* This drops the top 32 bits of the id, but is ok for a hash. */
11492 return dwo_unit->signature;
11496 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11498 const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11499 const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11501 /* The signature is assumed to be unique within the DWO file.
11502 So while object file CU dwo_id's always have the value zero,
11503 that's OK, assuming each object file DWO file has only one CU,
11504 and that's the rule for now. */
11505 return lhs->signature == rhs->signature;
11508 /* Allocate a hash table for DWO CUs,TUs.
11509 There is one of these tables for each of CUs,TUs for each DWO file. */
11512 allocate_dwo_unit_table ()
11514 /* Start out with a pretty small number.
11515 Generally DWO files contain only one CU and maybe some TUs. */
11516 return htab_up (htab_create_alloc (3,
11519 NULL, xcalloc, xfree));
11522 /* die_reader_func for create_dwo_cu. */
11525 create_dwo_cu_reader (const struct die_reader_specs *reader,
11526 const gdb_byte *info_ptr,
11527 struct die_info *comp_unit_die,
11528 struct dwo_file *dwo_file,
11529 struct dwo_unit *dwo_unit)
11531 struct dwarf2_cu *cu = reader->cu;
11532 sect_offset sect_off = cu->per_cu->sect_off;
11533 struct dwarf2_section_info *section = cu->per_cu->section;
11535 gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
11536 if (!signature.has_value ())
11538 complaint (_("Dwarf Error: debug entry at offset %s is missing"
11539 " its dwo_id [in module %s]"),
11540 sect_offset_str (sect_off), dwo_file->dwo_name);
11544 dwo_unit->dwo_file = dwo_file;
11545 dwo_unit->signature = *signature;
11546 dwo_unit->section = section;
11547 dwo_unit->sect_off = sect_off;
11548 dwo_unit->length = cu->per_cu->length;
11550 dwarf_read_debug_printf (" offset %s, dwo_id %s",
11551 sect_offset_str (sect_off),
11552 hex_string (dwo_unit->signature));
11555 /* Create the dwo_units for the CUs in a DWO_FILE.
11556 Note: This function processes DWO files only, not DWP files. */
11559 create_cus_hash_table (dwarf2_per_objfile *per_objfile,
11560 dwarf2_cu *cu, struct dwo_file &dwo_file,
11561 dwarf2_section_info §ion, htab_up &cus_htab)
11563 struct objfile *objfile = per_objfile->objfile;
11564 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
11565 const gdb_byte *info_ptr, *end_ptr;
11567 section.read (objfile);
11568 info_ptr = section.buffer;
11570 if (info_ptr == NULL)
11573 dwarf_read_debug_printf ("Reading %s for %s:",
11574 section.get_name (),
11575 section.get_file_name ());
11577 end_ptr = info_ptr + section.size;
11578 while (info_ptr < end_ptr)
11580 struct dwarf2_per_cu_data per_cu;
11581 struct dwo_unit read_unit {};
11582 struct dwo_unit *dwo_unit;
11584 sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11586 memset (&per_cu, 0, sizeof (per_cu));
11587 per_cu.per_bfd = per_bfd;
11588 per_cu.is_debug_types = 0;
11589 per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11590 per_cu.section = §ion;
11592 cutu_reader reader (&per_cu, per_objfile, cu, &dwo_file);
11593 if (!reader.dummy_p)
11594 create_dwo_cu_reader (&reader, reader.info_ptr, reader.comp_unit_die,
11595 &dwo_file, &read_unit);
11596 info_ptr += per_cu.length;
11598 // If the unit could not be parsed, skip it.
11599 if (read_unit.dwo_file == NULL)
11602 if (cus_htab == NULL)
11603 cus_htab = allocate_dwo_unit_table ();
11605 dwo_unit = OBSTACK_ZALLOC (&per_bfd->obstack,
11607 *dwo_unit = read_unit;
11608 slot = htab_find_slot (cus_htab.get (), dwo_unit, INSERT);
11609 gdb_assert (slot != NULL);
11612 const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11613 sect_offset dup_sect_off = dup_cu->sect_off;
11615 complaint (_("debug cu entry at offset %s is duplicate to"
11616 " the entry at offset %s, signature %s"),
11617 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11618 hex_string (dwo_unit->signature));
11620 *slot = (void *)dwo_unit;
11624 /* DWP file .debug_{cu,tu}_index section format:
11625 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11626 [ref: http://dwarfstd.org/doc/DWARF5.pdf, sect 7.3.5 "DWARF Package Files"]
11628 DWP Versions 1 & 2 are older, pre-standard format versions. The first
11629 officially standard DWP format was published with DWARF v5 and is called
11630 Version 5. There are no versions 3 or 4.
11634 Both index sections have the same format, and serve to map a 64-bit
11635 signature to a set of section numbers. Each section begins with a header,
11636 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11637 indexes, and a pool of 32-bit section numbers. The index sections will be
11638 aligned at 8-byte boundaries in the file.
11640 The index section header consists of:
11642 V, 32 bit version number
11644 N, 32 bit number of compilation units or type units in the index
11645 M, 32 bit number of slots in the hash table
11647 Numbers are recorded using the byte order of the application binary.
11649 The hash table begins at offset 16 in the section, and consists of an array
11650 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
11651 order of the application binary). Unused slots in the hash table are 0.
11652 (We rely on the extreme unlikeliness of a signature being exactly 0.)
11654 The parallel table begins immediately after the hash table
11655 (at offset 16 + 8 * M from the beginning of the section), and consists of an
11656 array of 32-bit indexes (using the byte order of the application binary),
11657 corresponding 1-1 with slots in the hash table. Each entry in the parallel
11658 table contains a 32-bit index into the pool of section numbers. For unused
11659 hash table slots, the corresponding entry in the parallel table will be 0.
11661 The pool of section numbers begins immediately following the hash table
11662 (at offset 16 + 12 * M from the beginning of the section). The pool of
11663 section numbers consists of an array of 32-bit words (using the byte order
11664 of the application binary). Each item in the array is indexed starting
11665 from 0. The hash table entry provides the index of the first section
11666 number in the set. Additional section numbers in the set follow, and the
11667 set is terminated by a 0 entry (section number 0 is not used in ELF).
11669 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
11670 section must be the first entry in the set, and the .debug_abbrev.dwo must
11671 be the second entry. Other members of the set may follow in any order.
11675 DWP Versions 2 and 5:
11677 DWP Versions 2 and 5 combine all the .debug_info, etc. sections into one,
11678 and the entries in the index tables are now offsets into these sections.
11679 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
11682 Index Section Contents:
11684 Hash Table of Signatures dwp_hash_table.hash_table
11685 Parallel Table of Indices dwp_hash_table.unit_table
11686 Table of Section Offsets dwp_hash_table.{v2|v5}.{section_ids,offsets}
11687 Table of Section Sizes dwp_hash_table.{v2|v5}.sizes
11689 The index section header consists of:
11691 V, 32 bit version number
11692 L, 32 bit number of columns in the table of section offsets
11693 N, 32 bit number of compilation units or type units in the index
11694 M, 32 bit number of slots in the hash table
11696 Numbers are recorded using the byte order of the application binary.
11698 The hash table has the same format as version 1.
11699 The parallel table of indices has the same format as version 1,
11700 except that the entries are origin-1 indices into the table of sections
11701 offsets and the table of section sizes.
11703 The table of offsets begins immediately following the parallel table
11704 (at offset 16 + 12 * M from the beginning of the section). The table is
11705 a two-dimensional array of 32-bit words (using the byte order of the
11706 application binary), with L columns and N+1 rows, in row-major order.
11707 Each row in the array is indexed starting from 0. The first row provides
11708 a key to the remaining rows: each column in this row provides an identifier
11709 for a debug section, and the offsets in the same column of subsequent rows
11710 refer to that section. The section identifiers for Version 2 are:
11712 DW_SECT_INFO 1 .debug_info.dwo
11713 DW_SECT_TYPES 2 .debug_types.dwo
11714 DW_SECT_ABBREV 3 .debug_abbrev.dwo
11715 DW_SECT_LINE 4 .debug_line.dwo
11716 DW_SECT_LOC 5 .debug_loc.dwo
11717 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
11718 DW_SECT_MACINFO 7 .debug_macinfo.dwo
11719 DW_SECT_MACRO 8 .debug_macro.dwo
11721 The section identifiers for Version 5 are:
11723 DW_SECT_INFO_V5 1 .debug_info.dwo
11724 DW_SECT_RESERVED_V5 2 --
11725 DW_SECT_ABBREV_V5 3 .debug_abbrev.dwo
11726 DW_SECT_LINE_V5 4 .debug_line.dwo
11727 DW_SECT_LOCLISTS_V5 5 .debug_loclists.dwo
11728 DW_SECT_STR_OFFSETS_V5 6 .debug_str_offsets.dwo
11729 DW_SECT_MACRO_V5 7 .debug_macro.dwo
11730 DW_SECT_RNGLISTS_V5 8 .debug_rnglists.dwo
11732 The offsets provided by the CU and TU index sections are the base offsets
11733 for the contributions made by each CU or TU to the corresponding section
11734 in the package file. Each CU and TU header contains an abbrev_offset
11735 field, used to find the abbreviations table for that CU or TU within the
11736 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
11737 be interpreted as relative to the base offset given in the index section.
11738 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
11739 should be interpreted as relative to the base offset for .debug_line.dwo,
11740 and offsets into other debug sections obtained from DWARF attributes should
11741 also be interpreted as relative to the corresponding base offset.
11743 The table of sizes begins immediately following the table of offsets.
11744 Like the table of offsets, it is a two-dimensional array of 32-bit words,
11745 with L columns and N rows, in row-major order. Each row in the array is
11746 indexed starting from 1 (row 0 is shared by the two tables).
11750 Hash table lookup is handled the same in version 1 and 2:
11752 We assume that N and M will not exceed 2^32 - 1.
11753 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
11755 Given a 64-bit compilation unit signature or a type signature S, an entry
11756 in the hash table is located as follows:
11758 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
11759 the low-order k bits all set to 1.
11761 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
11763 3) If the hash table entry at index H matches the signature, use that
11764 entry. If the hash table entry at index H is unused (all zeroes),
11765 terminate the search: the signature is not present in the table.
11767 4) Let H = (H + H') modulo M. Repeat at Step 3.
11769 Because M > N and H' and M are relatively prime, the search is guaranteed
11770 to stop at an unused slot or find the match. */
11772 /* Create a hash table to map DWO IDs to their CU/TU entry in
11773 .debug_{info,types}.dwo in DWP_FILE.
11774 Returns NULL if there isn't one.
11775 Note: This function processes DWP files only, not DWO files. */
11777 static struct dwp_hash_table *
11778 create_dwp_hash_table (dwarf2_per_objfile *per_objfile,
11779 struct dwp_file *dwp_file, int is_debug_types)
11781 struct objfile *objfile = per_objfile->objfile;
11782 bfd *dbfd = dwp_file->dbfd.get ();
11783 const gdb_byte *index_ptr, *index_end;
11784 struct dwarf2_section_info *index;
11785 uint32_t version, nr_columns, nr_units, nr_slots;
11786 struct dwp_hash_table *htab;
11788 if (is_debug_types)
11789 index = &dwp_file->sections.tu_index;
11791 index = &dwp_file->sections.cu_index;
11793 if (index->empty ())
11795 index->read (objfile);
11797 index_ptr = index->buffer;
11798 index_end = index_ptr + index->size;
11800 /* For Version 5, the version is really 2 bytes of data & 2 bytes of padding.
11801 For now it's safe to just read 4 bytes (particularly as it's difficult to
11802 tell if you're dealing with Version 5 before you've read the version). */
11803 version = read_4_bytes (dbfd, index_ptr);
11805 if (version == 2 || version == 5)
11806 nr_columns = read_4_bytes (dbfd, index_ptr);
11810 nr_units = read_4_bytes (dbfd, index_ptr);
11812 nr_slots = read_4_bytes (dbfd, index_ptr);
11815 if (version != 1 && version != 2 && version != 5)
11817 error (_("Dwarf Error: unsupported DWP file version (%s)"
11818 " [in module %s]"),
11819 pulongest (version), dwp_file->name);
11821 if (nr_slots != (nr_slots & -nr_slots))
11823 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
11824 " is not power of 2 [in module %s]"),
11825 pulongest (nr_slots), dwp_file->name);
11828 htab = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwp_hash_table);
11829 htab->version = version;
11830 htab->nr_columns = nr_columns;
11831 htab->nr_units = nr_units;
11832 htab->nr_slots = nr_slots;
11833 htab->hash_table = index_ptr;
11834 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
11836 /* Exit early if the table is empty. */
11837 if (nr_slots == 0 || nr_units == 0
11838 || (version == 2 && nr_columns == 0)
11839 || (version == 5 && nr_columns == 0))
11841 /* All must be zero. */
11842 if (nr_slots != 0 || nr_units != 0
11843 || (version == 2 && nr_columns != 0)
11844 || (version == 5 && nr_columns != 0))
11846 complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
11847 " all zero [in modules %s]"),
11855 htab->section_pool.v1.indices =
11856 htab->unit_table + sizeof (uint32_t) * nr_slots;
11857 /* It's harder to decide whether the section is too small in v1.
11858 V1 is deprecated anyway so we punt. */
11860 else if (version == 2)
11862 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
11863 int *ids = htab->section_pool.v2.section_ids;
11864 size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
11865 /* Reverse map for error checking. */
11866 int ids_seen[DW_SECT_MAX + 1];
11869 if (nr_columns < 2)
11871 error (_("Dwarf Error: bad DWP hash table, too few columns"
11872 " in section table [in module %s]"),
11875 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
11877 error (_("Dwarf Error: bad DWP hash table, too many columns"
11878 " in section table [in module %s]"),
11881 memset (ids, 255, sizeof_ids);
11882 memset (ids_seen, 255, sizeof (ids_seen));
11883 for (i = 0; i < nr_columns; ++i)
11885 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
11887 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
11889 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
11890 " in section table [in module %s]"),
11891 id, dwp_file->name);
11893 if (ids_seen[id] != -1)
11895 error (_("Dwarf Error: bad DWP hash table, duplicate section"
11896 " id %d in section table [in module %s]"),
11897 id, dwp_file->name);
11902 /* Must have exactly one info or types section. */
11903 if (((ids_seen[DW_SECT_INFO] != -1)
11904 + (ids_seen[DW_SECT_TYPES] != -1))
11907 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
11908 " DWO info/types section [in module %s]"),
11911 /* Must have an abbrev section. */
11912 if (ids_seen[DW_SECT_ABBREV] == -1)
11914 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
11915 " section [in module %s]"),
11918 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
11919 htab->section_pool.v2.sizes =
11920 htab->section_pool.v2.offsets + (sizeof (uint32_t)
11921 * nr_units * nr_columns);
11922 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
11923 * nr_units * nr_columns))
11926 error (_("Dwarf Error: DWP index section is corrupt (too small)"
11927 " [in module %s]"),
11931 else /* version == 5 */
11933 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
11934 int *ids = htab->section_pool.v5.section_ids;
11935 size_t sizeof_ids = sizeof (htab->section_pool.v5.section_ids);
11936 /* Reverse map for error checking. */
11937 int ids_seen[DW_SECT_MAX_V5 + 1];
11939 if (nr_columns < 2)
11941 error (_("Dwarf Error: bad DWP hash table, too few columns"
11942 " in section table [in module %s]"),
11945 if (nr_columns > MAX_NR_V5_DWO_SECTIONS)
11947 error (_("Dwarf Error: bad DWP hash table, too many columns"
11948 " in section table [in module %s]"),
11951 memset (ids, 255, sizeof_ids);
11952 memset (ids_seen, 255, sizeof (ids_seen));
11953 for (int i = 0; i < nr_columns; ++i)
11955 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
11957 if (id < DW_SECT_MIN || id > DW_SECT_MAX_V5)
11959 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
11960 " in section table [in module %s]"),
11961 id, dwp_file->name);
11963 if (ids_seen[id] != -1)
11965 error (_("Dwarf Error: bad DWP hash table, duplicate section"
11966 " id %d in section table [in module %s]"),
11967 id, dwp_file->name);
11972 /* Must have seen an info section. */
11973 if (ids_seen[DW_SECT_INFO_V5] == -1)
11975 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
11976 " DWO info/types section [in module %s]"),
11979 /* Must have an abbrev section. */
11980 if (ids_seen[DW_SECT_ABBREV_V5] == -1)
11982 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
11983 " section [in module %s]"),
11986 htab->section_pool.v5.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
11987 htab->section_pool.v5.sizes
11988 = htab->section_pool.v5.offsets + (sizeof (uint32_t)
11989 * nr_units * nr_columns);
11990 if ((htab->section_pool.v5.sizes + (sizeof (uint32_t)
11991 * nr_units * nr_columns))
11994 error (_("Dwarf Error: DWP index section is corrupt (too small)"
11995 " [in module %s]"),
12003 /* Update SECTIONS with the data from SECTP.
12005 This function is like the other "locate" section routines, but in
12006 this context the sections to read comes from the DWP V1 hash table,
12007 not the full ELF section table.
12009 The result is non-zero for success, or zero if an error was found. */
12012 locate_v1_virtual_dwo_sections (asection *sectp,
12013 struct virtual_v1_dwo_sections *sections)
12015 const struct dwop_section_names *names = &dwop_section_names;
12017 if (names->abbrev_dwo.matches (sectp->name))
12019 /* There can be only one. */
12020 if (sections->abbrev.s.section != NULL)
12022 sections->abbrev.s.section = sectp;
12023 sections->abbrev.size = bfd_section_size (sectp);
12025 else if (names->info_dwo.matches (sectp->name)
12026 || names->types_dwo.matches (sectp->name))
12028 /* There can be only one. */
12029 if (sections->info_or_types.s.section != NULL)
12031 sections->info_or_types.s.section = sectp;
12032 sections->info_or_types.size = bfd_section_size (sectp);
12034 else if (names->line_dwo.matches (sectp->name))
12036 /* There can be only one. */
12037 if (sections->line.s.section != NULL)
12039 sections->line.s.section = sectp;
12040 sections->line.size = bfd_section_size (sectp);
12042 else if (names->loc_dwo.matches (sectp->name))
12044 /* There can be only one. */
12045 if (sections->loc.s.section != NULL)
12047 sections->loc.s.section = sectp;
12048 sections->loc.size = bfd_section_size (sectp);
12050 else if (names->macinfo_dwo.matches (sectp->name))
12052 /* There can be only one. */
12053 if (sections->macinfo.s.section != NULL)
12055 sections->macinfo.s.section = sectp;
12056 sections->macinfo.size = bfd_section_size (sectp);
12058 else if (names->macro_dwo.matches (sectp->name))
12060 /* There can be only one. */
12061 if (sections->macro.s.section != NULL)
12063 sections->macro.s.section = sectp;
12064 sections->macro.size = bfd_section_size (sectp);
12066 else if (names->str_offsets_dwo.matches (sectp->name))
12068 /* There can be only one. */
12069 if (sections->str_offsets.s.section != NULL)
12071 sections->str_offsets.s.section = sectp;
12072 sections->str_offsets.size = bfd_section_size (sectp);
12076 /* No other kind of section is valid. */
12083 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12084 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12085 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12086 This is for DWP version 1 files. */
12088 static struct dwo_unit *
12089 create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile *per_objfile,
12090 struct dwp_file *dwp_file,
12091 uint32_t unit_index,
12092 const char *comp_dir,
12093 ULONGEST signature, int is_debug_types)
12095 const struct dwp_hash_table *dwp_htab =
12096 is_debug_types ? dwp_file->tus : dwp_file->cus;
12097 bfd *dbfd = dwp_file->dbfd.get ();
12098 const char *kind = is_debug_types ? "TU" : "CU";
12099 struct dwo_file *dwo_file;
12100 struct dwo_unit *dwo_unit;
12101 struct virtual_v1_dwo_sections sections;
12102 void **dwo_file_slot;
12105 gdb_assert (dwp_file->version == 1);
12107 dwarf_read_debug_printf ("Reading %s %s/%s in DWP V1 file: %s",
12108 kind, pulongest (unit_index), hex_string (signature),
12111 /* Fetch the sections of this DWO unit.
12112 Put a limit on the number of sections we look for so that bad data
12113 doesn't cause us to loop forever. */
12115 #define MAX_NR_V1_DWO_SECTIONS \
12116 (1 /* .debug_info or .debug_types */ \
12117 + 1 /* .debug_abbrev */ \
12118 + 1 /* .debug_line */ \
12119 + 1 /* .debug_loc */ \
12120 + 1 /* .debug_str_offsets */ \
12121 + 1 /* .debug_macro or .debug_macinfo */ \
12122 + 1 /* trailing zero */)
12124 memset (§ions, 0, sizeof (sections));
12126 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12129 uint32_t section_nr =
12130 read_4_bytes (dbfd,
12131 dwp_htab->section_pool.v1.indices
12132 + (unit_index + i) * sizeof (uint32_t));
12134 if (section_nr == 0)
12136 if (section_nr >= dwp_file->num_sections)
12138 error (_("Dwarf Error: bad DWP hash table, section number too large"
12139 " [in module %s]"),
12143 sectp = dwp_file->elf_sections[section_nr];
12144 if (! locate_v1_virtual_dwo_sections (sectp, §ions))
12146 error (_("Dwarf Error: bad DWP hash table, invalid section found"
12147 " [in module %s]"),
12153 || sections.info_or_types.empty ()
12154 || sections.abbrev.empty ())
12156 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12157 " [in module %s]"),
12160 if (i == MAX_NR_V1_DWO_SECTIONS)
12162 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12163 " [in module %s]"),
12167 /* It's easier for the rest of the code if we fake a struct dwo_file and
12168 have dwo_unit "live" in that. At least for now.
12170 The DWP file can be made up of a random collection of CUs and TUs.
12171 However, for each CU + set of TUs that came from the same original DWO
12172 file, we can combine them back into a virtual DWO file to save space
12173 (fewer struct dwo_file objects to allocate). Remember that for really
12174 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12176 std::string virtual_dwo_name =
12177 string_printf ("virtual-dwo/%d-%d-%d-%d",
12178 sections.abbrev.get_id (),
12179 sections.line.get_id (),
12180 sections.loc.get_id (),
12181 sections.str_offsets.get_id ());
12182 /* Can we use an existing virtual DWO file? */
12183 dwo_file_slot = lookup_dwo_file_slot (per_objfile, virtual_dwo_name.c_str (),
12185 /* Create one if necessary. */
12186 if (*dwo_file_slot == NULL)
12188 dwarf_read_debug_printf ("Creating virtual DWO: %s",
12189 virtual_dwo_name.c_str ());
12191 dwo_file = new struct dwo_file;
12192 dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
12193 dwo_file->comp_dir = comp_dir;
12194 dwo_file->sections.abbrev = sections.abbrev;
12195 dwo_file->sections.line = sections.line;
12196 dwo_file->sections.loc = sections.loc;
12197 dwo_file->sections.macinfo = sections.macinfo;
12198 dwo_file->sections.macro = sections.macro;
12199 dwo_file->sections.str_offsets = sections.str_offsets;
12200 /* The "str" section is global to the entire DWP file. */
12201 dwo_file->sections.str = dwp_file->sections.str;
12202 /* The info or types section is assigned below to dwo_unit,
12203 there's no need to record it in dwo_file.
12204 Also, we can't simply record type sections in dwo_file because
12205 we record a pointer into the vector in dwo_unit. As we collect more
12206 types we'll grow the vector and eventually have to reallocate space
12207 for it, invalidating all copies of pointers into the previous
12209 *dwo_file_slot = dwo_file;
12213 dwarf_read_debug_printf ("Using existing virtual DWO: %s",
12214 virtual_dwo_name.c_str ());
12216 dwo_file = (struct dwo_file *) *dwo_file_slot;
12219 dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
12220 dwo_unit->dwo_file = dwo_file;
12221 dwo_unit->signature = signature;
12222 dwo_unit->section =
12223 XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
12224 *dwo_unit->section = sections.info_or_types;
12225 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
12230 /* Subroutine of create_dwo_unit_in_dwp_v2 and create_dwo_unit_in_dwp_v5 to
12231 simplify them. Given a pointer to the containing section SECTION, and
12232 OFFSET,SIZE of the piece within that section used by a TU/CU, return a
12233 virtual section of just that piece. */
12235 static struct dwarf2_section_info
12236 create_dwp_v2_or_v5_section (dwarf2_per_objfile *per_objfile,
12237 struct dwarf2_section_info *section,
12238 bfd_size_type offset, bfd_size_type size)
12240 struct dwarf2_section_info result;
12243 gdb_assert (section != NULL);
12244 gdb_assert (!section->is_virtual);
12246 memset (&result, 0, sizeof (result));
12247 result.s.containing_section = section;
12248 result.is_virtual = true;
12253 sectp = section->get_bfd_section ();
12255 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12256 bounds of the real section. This is a pretty-rare event, so just
12257 flag an error (easier) instead of a warning and trying to cope. */
12259 || offset + size > bfd_section_size (sectp))
12261 error (_("Dwarf Error: Bad DWP V2 or V5 section info, doesn't fit"
12262 " in section %s [in module %s]"),
12263 sectp ? bfd_section_name (sectp) : "<unknown>",
12264 objfile_name (per_objfile->objfile));
12267 result.virtual_offset = offset;
12268 result.size = size;
12272 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12273 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12274 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12275 This is for DWP version 2 files. */
12277 static struct dwo_unit *
12278 create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile *per_objfile,
12279 struct dwp_file *dwp_file,
12280 uint32_t unit_index,
12281 const char *comp_dir,
12282 ULONGEST signature, int is_debug_types)
12284 const struct dwp_hash_table *dwp_htab =
12285 is_debug_types ? dwp_file->tus : dwp_file->cus;
12286 bfd *dbfd = dwp_file->dbfd.get ();
12287 const char *kind = is_debug_types ? "TU" : "CU";
12288 struct dwo_file *dwo_file;
12289 struct dwo_unit *dwo_unit;
12290 struct virtual_v2_or_v5_dwo_sections sections;
12291 void **dwo_file_slot;
12294 gdb_assert (dwp_file->version == 2);
12296 dwarf_read_debug_printf ("Reading %s %s/%s in DWP V2 file: %s",
12297 kind, pulongest (unit_index), hex_string (signature),
12300 /* Fetch the section offsets of this DWO unit. */
12302 memset (§ions, 0, sizeof (sections));
12304 for (i = 0; i < dwp_htab->nr_columns; ++i)
12306 uint32_t offset = read_4_bytes (dbfd,
12307 dwp_htab->section_pool.v2.offsets
12308 + (((unit_index - 1) * dwp_htab->nr_columns
12310 * sizeof (uint32_t)));
12311 uint32_t size = read_4_bytes (dbfd,
12312 dwp_htab->section_pool.v2.sizes
12313 + (((unit_index - 1) * dwp_htab->nr_columns
12315 * sizeof (uint32_t)));
12317 switch (dwp_htab->section_pool.v2.section_ids[i])
12320 case DW_SECT_TYPES:
12321 sections.info_or_types_offset = offset;
12322 sections.info_or_types_size = size;
12324 case DW_SECT_ABBREV:
12325 sections.abbrev_offset = offset;
12326 sections.abbrev_size = size;
12329 sections.line_offset = offset;
12330 sections.line_size = size;
12333 sections.loc_offset = offset;
12334 sections.loc_size = size;
12336 case DW_SECT_STR_OFFSETS:
12337 sections.str_offsets_offset = offset;
12338 sections.str_offsets_size = size;
12340 case DW_SECT_MACINFO:
12341 sections.macinfo_offset = offset;
12342 sections.macinfo_size = size;
12344 case DW_SECT_MACRO:
12345 sections.macro_offset = offset;
12346 sections.macro_size = size;
12351 /* It's easier for the rest of the code if we fake a struct dwo_file and
12352 have dwo_unit "live" in that. At least for now.
12354 The DWP file can be made up of a random collection of CUs and TUs.
12355 However, for each CU + set of TUs that came from the same original DWO
12356 file, we can combine them back into a virtual DWO file to save space
12357 (fewer struct dwo_file objects to allocate). Remember that for really
12358 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12360 std::string virtual_dwo_name =
12361 string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12362 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12363 (long) (sections.line_size ? sections.line_offset : 0),
12364 (long) (sections.loc_size ? sections.loc_offset : 0),
12365 (long) (sections.str_offsets_size
12366 ? sections.str_offsets_offset : 0));
12367 /* Can we use an existing virtual DWO file? */
12368 dwo_file_slot = lookup_dwo_file_slot (per_objfile, virtual_dwo_name.c_str (),
12370 /* Create one if necessary. */
12371 if (*dwo_file_slot == NULL)
12373 dwarf_read_debug_printf ("Creating virtual DWO: %s",
12374 virtual_dwo_name.c_str ());
12376 dwo_file = new struct dwo_file;
12377 dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
12378 dwo_file->comp_dir = comp_dir;
12379 dwo_file->sections.abbrev =
12380 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.abbrev,
12381 sections.abbrev_offset,
12382 sections.abbrev_size);
12383 dwo_file->sections.line =
12384 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.line,
12385 sections.line_offset,
12386 sections.line_size);
12387 dwo_file->sections.loc =
12388 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.loc,
12389 sections.loc_offset, sections.loc_size);
12390 dwo_file->sections.macinfo =
12391 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.macinfo,
12392 sections.macinfo_offset,
12393 sections.macinfo_size);
12394 dwo_file->sections.macro =
12395 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.macro,
12396 sections.macro_offset,
12397 sections.macro_size);
12398 dwo_file->sections.str_offsets =
12399 create_dwp_v2_or_v5_section (per_objfile,
12400 &dwp_file->sections.str_offsets,
12401 sections.str_offsets_offset,
12402 sections.str_offsets_size);
12403 /* The "str" section is global to the entire DWP file. */
12404 dwo_file->sections.str = dwp_file->sections.str;
12405 /* The info or types section is assigned below to dwo_unit,
12406 there's no need to record it in dwo_file.
12407 Also, we can't simply record type sections in dwo_file because
12408 we record a pointer into the vector in dwo_unit. As we collect more
12409 types we'll grow the vector and eventually have to reallocate space
12410 for it, invalidating all copies of pointers into the previous
12412 *dwo_file_slot = dwo_file;
12416 dwarf_read_debug_printf ("Using existing virtual DWO: %s",
12417 virtual_dwo_name.c_str ());
12419 dwo_file = (struct dwo_file *) *dwo_file_slot;
12422 dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
12423 dwo_unit->dwo_file = dwo_file;
12424 dwo_unit->signature = signature;
12425 dwo_unit->section =
12426 XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
12427 *dwo_unit->section = create_dwp_v2_or_v5_section
12430 ? &dwp_file->sections.types
12431 : &dwp_file->sections.info,
12432 sections.info_or_types_offset,
12433 sections.info_or_types_size);
12434 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
12439 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12440 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12441 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12442 This is for DWP version 5 files. */
12444 static struct dwo_unit *
12445 create_dwo_unit_in_dwp_v5 (dwarf2_per_objfile *per_objfile,
12446 struct dwp_file *dwp_file,
12447 uint32_t unit_index,
12448 const char *comp_dir,
12449 ULONGEST signature, int is_debug_types)
12451 const struct dwp_hash_table *dwp_htab
12452 = is_debug_types ? dwp_file->tus : dwp_file->cus;
12453 bfd *dbfd = dwp_file->dbfd.get ();
12454 const char *kind = is_debug_types ? "TU" : "CU";
12455 struct dwo_file *dwo_file;
12456 struct dwo_unit *dwo_unit;
12457 struct virtual_v2_or_v5_dwo_sections sections {};
12458 void **dwo_file_slot;
12460 gdb_assert (dwp_file->version == 5);
12462 dwarf_read_debug_printf ("Reading %s %s/%s in DWP V5 file: %s",
12463 kind, pulongest (unit_index), hex_string (signature),
12466 /* Fetch the section offsets of this DWO unit. */
12468 /* memset (§ions, 0, sizeof (sections)); */
12470 for (int i = 0; i < dwp_htab->nr_columns; ++i)
12472 uint32_t offset = read_4_bytes (dbfd,
12473 dwp_htab->section_pool.v5.offsets
12474 + (((unit_index - 1)
12475 * dwp_htab->nr_columns
12477 * sizeof (uint32_t)));
12478 uint32_t size = read_4_bytes (dbfd,
12479 dwp_htab->section_pool.v5.sizes
12480 + (((unit_index - 1) * dwp_htab->nr_columns
12482 * sizeof (uint32_t)));
12484 switch (dwp_htab->section_pool.v5.section_ids[i])
12486 case DW_SECT_ABBREV_V5:
12487 sections.abbrev_offset = offset;
12488 sections.abbrev_size = size;
12490 case DW_SECT_INFO_V5:
12491 sections.info_or_types_offset = offset;
12492 sections.info_or_types_size = size;
12494 case DW_SECT_LINE_V5:
12495 sections.line_offset = offset;
12496 sections.line_size = size;
12498 case DW_SECT_LOCLISTS_V5:
12499 sections.loclists_offset = offset;
12500 sections.loclists_size = size;
12502 case DW_SECT_MACRO_V5:
12503 sections.macro_offset = offset;
12504 sections.macro_size = size;
12506 case DW_SECT_RNGLISTS_V5:
12507 sections.rnglists_offset = offset;
12508 sections.rnglists_size = size;
12510 case DW_SECT_STR_OFFSETS_V5:
12511 sections.str_offsets_offset = offset;
12512 sections.str_offsets_size = size;
12514 case DW_SECT_RESERVED_V5:
12520 /* It's easier for the rest of the code if we fake a struct dwo_file and
12521 have dwo_unit "live" in that. At least for now.
12523 The DWP file can be made up of a random collection of CUs and TUs.
12524 However, for each CU + set of TUs that came from the same original DWO
12525 file, we can combine them back into a virtual DWO file to save space
12526 (fewer struct dwo_file objects to allocate). Remember that for really
12527 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12529 std::string virtual_dwo_name =
12530 string_printf ("virtual-dwo/%ld-%ld-%ld-%ld-%ld-%ld",
12531 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12532 (long) (sections.line_size ? sections.line_offset : 0),
12533 (long) (sections.loclists_size ? sections.loclists_offset : 0),
12534 (long) (sections.str_offsets_size
12535 ? sections.str_offsets_offset : 0),
12536 (long) (sections.macro_size ? sections.macro_offset : 0),
12537 (long) (sections.rnglists_size ? sections.rnglists_offset: 0));
12538 /* Can we use an existing virtual DWO file? */
12539 dwo_file_slot = lookup_dwo_file_slot (per_objfile,
12540 virtual_dwo_name.c_str (),
12542 /* Create one if necessary. */
12543 if (*dwo_file_slot == NULL)
12545 dwarf_read_debug_printf ("Creating virtual DWO: %s",
12546 virtual_dwo_name.c_str ());
12548 dwo_file = new struct dwo_file;
12549 dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
12550 dwo_file->comp_dir = comp_dir;
12551 dwo_file->sections.abbrev =
12552 create_dwp_v2_or_v5_section (per_objfile,
12553 &dwp_file->sections.abbrev,
12554 sections.abbrev_offset,
12555 sections.abbrev_size);
12556 dwo_file->sections.line =
12557 create_dwp_v2_or_v5_section (per_objfile,
12558 &dwp_file->sections.line,
12559 sections.line_offset, sections.line_size);
12560 dwo_file->sections.macro =
12561 create_dwp_v2_or_v5_section (per_objfile,
12562 &dwp_file->sections.macro,
12563 sections.macro_offset,
12564 sections.macro_size);
12565 dwo_file->sections.loclists =
12566 create_dwp_v2_or_v5_section (per_objfile,
12567 &dwp_file->sections.loclists,
12568 sections.loclists_offset,
12569 sections.loclists_size);
12570 dwo_file->sections.rnglists =
12571 create_dwp_v2_or_v5_section (per_objfile,
12572 &dwp_file->sections.rnglists,
12573 sections.rnglists_offset,
12574 sections.rnglists_size);
12575 dwo_file->sections.str_offsets =
12576 create_dwp_v2_or_v5_section (per_objfile,
12577 &dwp_file->sections.str_offsets,
12578 sections.str_offsets_offset,
12579 sections.str_offsets_size);
12580 /* The "str" section is global to the entire DWP file. */
12581 dwo_file->sections.str = dwp_file->sections.str;
12582 /* The info or types section is assigned below to dwo_unit,
12583 there's no need to record it in dwo_file.
12584 Also, we can't simply record type sections in dwo_file because
12585 we record a pointer into the vector in dwo_unit. As we collect more
12586 types we'll grow the vector and eventually have to reallocate space
12587 for it, invalidating all copies of pointers into the previous
12589 *dwo_file_slot = dwo_file;
12593 dwarf_read_debug_printf ("Using existing virtual DWO: %s",
12594 virtual_dwo_name.c_str ());
12596 dwo_file = (struct dwo_file *) *dwo_file_slot;
12599 dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
12600 dwo_unit->dwo_file = dwo_file;
12601 dwo_unit->signature = signature;
12603 = XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
12604 *dwo_unit->section = create_dwp_v2_or_v5_section (per_objfile,
12605 &dwp_file->sections.info,
12606 sections.info_or_types_offset,
12607 sections.info_or_types_size);
12608 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
12613 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12614 Returns NULL if the signature isn't found. */
12616 static struct dwo_unit *
12617 lookup_dwo_unit_in_dwp (dwarf2_per_objfile *per_objfile,
12618 struct dwp_file *dwp_file, const char *comp_dir,
12619 ULONGEST signature, int is_debug_types)
12621 const struct dwp_hash_table *dwp_htab =
12622 is_debug_types ? dwp_file->tus : dwp_file->cus;
12623 bfd *dbfd = dwp_file->dbfd.get ();
12624 uint32_t mask = dwp_htab->nr_slots - 1;
12625 uint32_t hash = signature & mask;
12626 uint32_t hash2 = ((signature >> 32) & mask) | 1;
12629 struct dwo_unit find_dwo_cu;
12631 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12632 find_dwo_cu.signature = signature;
12633 slot = htab_find_slot (is_debug_types
12634 ? dwp_file->loaded_tus.get ()
12635 : dwp_file->loaded_cus.get (),
12636 &find_dwo_cu, INSERT);
12639 return (struct dwo_unit *) *slot;
12641 /* Use a for loop so that we don't loop forever on bad debug info. */
12642 for (i = 0; i < dwp_htab->nr_slots; ++i)
12644 ULONGEST signature_in_table;
12646 signature_in_table =
12647 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12648 if (signature_in_table == signature)
12650 uint32_t unit_index =
12651 read_4_bytes (dbfd,
12652 dwp_htab->unit_table + hash * sizeof (uint32_t));
12654 if (dwp_file->version == 1)
12656 *slot = create_dwo_unit_in_dwp_v1 (per_objfile, dwp_file,
12657 unit_index, comp_dir,
12658 signature, is_debug_types);
12660 else if (dwp_file->version == 2)
12662 *slot = create_dwo_unit_in_dwp_v2 (per_objfile, dwp_file,
12663 unit_index, comp_dir,
12664 signature, is_debug_types);
12666 else /* version == 5 */
12668 *slot = create_dwo_unit_in_dwp_v5 (per_objfile, dwp_file,
12669 unit_index, comp_dir,
12670 signature, is_debug_types);
12672 return (struct dwo_unit *) *slot;
12674 if (signature_in_table == 0)
12676 hash = (hash + hash2) & mask;
12679 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12680 " [in module %s]"),
12684 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12685 Open the file specified by FILE_NAME and hand it off to BFD for
12686 preliminary analysis. Return a newly initialized bfd *, which
12687 includes a canonicalized copy of FILE_NAME.
12688 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12689 SEARCH_CWD is true if the current directory is to be searched.
12690 It will be searched before debug-file-directory.
12691 If successful, the file is added to the bfd include table of the
12692 objfile's bfd (see gdb_bfd_record_inclusion).
12693 If unable to find/open the file, return NULL.
12694 NOTE: This function is derived from symfile_bfd_open. */
12696 static gdb_bfd_ref_ptr
12697 try_open_dwop_file (dwarf2_per_objfile *per_objfile,
12698 const char *file_name, int is_dwp, int search_cwd)
12701 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
12702 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
12703 to debug_file_directory. */
12704 const char *search_path;
12705 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12707 gdb::unique_xmalloc_ptr<char> search_path_holder;
12710 if (*debug_file_directory != '\0')
12712 search_path_holder.reset (concat (".", dirname_separator_string,
12713 debug_file_directory,
12715 search_path = search_path_holder.get ();
12721 search_path = debug_file_directory;
12723 openp_flags flags = OPF_RETURN_REALPATH;
12725 flags |= OPF_SEARCH_IN_PATH;
12727 gdb::unique_xmalloc_ptr<char> absolute_name;
12728 desc = openp (search_path, flags, file_name,
12729 O_RDONLY | O_BINARY, &absolute_name);
12733 gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12735 if (sym_bfd == NULL)
12737 bfd_set_cacheable (sym_bfd.get (), 1);
12739 if (!bfd_check_format (sym_bfd.get (), bfd_object))
12742 /* Success. Record the bfd as having been included by the objfile's bfd.
12743 This is important because things like demangled_names_hash lives in the
12744 objfile's per_bfd space and may have references to things like symbol
12745 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
12746 gdb_bfd_record_inclusion (per_objfile->objfile->obfd, sym_bfd.get ());
12751 /* Try to open DWO file FILE_NAME.
12752 COMP_DIR is the DW_AT_comp_dir attribute.
12753 The result is the bfd handle of the file.
12754 If there is a problem finding or opening the file, return NULL.
12755 Upon success, the canonicalized path of the file is stored in the bfd,
12756 same as symfile_bfd_open. */
12758 static gdb_bfd_ref_ptr
12759 open_dwo_file (dwarf2_per_objfile *per_objfile,
12760 const char *file_name, const char *comp_dir)
12762 if (IS_ABSOLUTE_PATH (file_name))
12763 return try_open_dwop_file (per_objfile, file_name,
12764 0 /*is_dwp*/, 0 /*search_cwd*/);
12766 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
12768 if (comp_dir != NULL)
12770 gdb::unique_xmalloc_ptr<char> path_to_try
12771 (concat (comp_dir, SLASH_STRING, file_name, (char *) NULL));
12773 /* NOTE: If comp_dir is a relative path, this will also try the
12774 search path, which seems useful. */
12775 gdb_bfd_ref_ptr abfd (try_open_dwop_file (per_objfile, path_to_try.get (),
12777 1 /*search_cwd*/));
12782 /* That didn't work, try debug-file-directory, which, despite its name,
12783 is a list of paths. */
12785 if (*debug_file_directory == '\0')
12788 return try_open_dwop_file (per_objfile, file_name,
12789 0 /*is_dwp*/, 1 /*search_cwd*/);
12792 /* This function is mapped across the sections and remembers the offset and
12793 size of each of the DWO debugging sections we are interested in. */
12796 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp,
12797 dwo_sections *dwo_sections)
12799 const struct dwop_section_names *names = &dwop_section_names;
12801 if (names->abbrev_dwo.matches (sectp->name))
12803 dwo_sections->abbrev.s.section = sectp;
12804 dwo_sections->abbrev.size = bfd_section_size (sectp);
12806 else if (names->info_dwo.matches (sectp->name))
12808 dwo_sections->info.s.section = sectp;
12809 dwo_sections->info.size = bfd_section_size (sectp);
12811 else if (names->line_dwo.matches (sectp->name))
12813 dwo_sections->line.s.section = sectp;
12814 dwo_sections->line.size = bfd_section_size (sectp);
12816 else if (names->loc_dwo.matches (sectp->name))
12818 dwo_sections->loc.s.section = sectp;
12819 dwo_sections->loc.size = bfd_section_size (sectp);
12821 else if (names->loclists_dwo.matches (sectp->name))
12823 dwo_sections->loclists.s.section = sectp;
12824 dwo_sections->loclists.size = bfd_section_size (sectp);
12826 else if (names->macinfo_dwo.matches (sectp->name))
12828 dwo_sections->macinfo.s.section = sectp;
12829 dwo_sections->macinfo.size = bfd_section_size (sectp);
12831 else if (names->macro_dwo.matches (sectp->name))
12833 dwo_sections->macro.s.section = sectp;
12834 dwo_sections->macro.size = bfd_section_size (sectp);
12836 else if (names->rnglists_dwo.matches (sectp->name))
12838 dwo_sections->rnglists.s.section = sectp;
12839 dwo_sections->rnglists.size = bfd_section_size (sectp);
12841 else if (names->str_dwo.matches (sectp->name))
12843 dwo_sections->str.s.section = sectp;
12844 dwo_sections->str.size = bfd_section_size (sectp);
12846 else if (names->str_offsets_dwo.matches (sectp->name))
12848 dwo_sections->str_offsets.s.section = sectp;
12849 dwo_sections->str_offsets.size = bfd_section_size (sectp);
12851 else if (names->types_dwo.matches (sectp->name))
12853 struct dwarf2_section_info type_section;
12855 memset (&type_section, 0, sizeof (type_section));
12856 type_section.s.section = sectp;
12857 type_section.size = bfd_section_size (sectp);
12858 dwo_sections->types.push_back (type_section);
12862 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12863 by PER_CU. This is for the non-DWP case.
12864 The result is NULL if DWO_NAME can't be found. */
12866 static struct dwo_file *
12867 open_and_init_dwo_file (dwarf2_cu *cu, const char *dwo_name,
12868 const char *comp_dir)
12870 dwarf2_per_objfile *per_objfile = cu->per_objfile;
12872 gdb_bfd_ref_ptr dbfd = open_dwo_file (per_objfile, dwo_name, comp_dir);
12875 dwarf_read_debug_printf ("DWO file not found: %s", dwo_name);
12880 dwo_file_up dwo_file (new struct dwo_file);
12881 dwo_file->dwo_name = dwo_name;
12882 dwo_file->comp_dir = comp_dir;
12883 dwo_file->dbfd = std::move (dbfd);
12885 for (asection *sec : gdb_bfd_sections (dwo_file->dbfd))
12886 dwarf2_locate_dwo_sections (dwo_file->dbfd.get (), sec,
12887 &dwo_file->sections);
12889 create_cus_hash_table (per_objfile, cu, *dwo_file, dwo_file->sections.info,
12892 if (cu->per_cu->dwarf_version < 5)
12894 create_debug_types_hash_table (per_objfile, dwo_file.get (),
12895 dwo_file->sections.types, dwo_file->tus);
12899 create_debug_type_hash_table (per_objfile, dwo_file.get (),
12900 &dwo_file->sections.info, dwo_file->tus,
12901 rcuh_kind::COMPILE);
12904 dwarf_read_debug_printf ("DWO file found: %s", dwo_name);
12906 return dwo_file.release ();
12909 /* This function is mapped across the sections and remembers the offset and
12910 size of each of the DWP debugging sections common to version 1 and 2 that
12911 we are interested in. */
12914 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
12915 dwp_file *dwp_file)
12917 const struct dwop_section_names *names = &dwop_section_names;
12918 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12920 /* Record the ELF section number for later lookup: this is what the
12921 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
12922 gdb_assert (elf_section_nr < dwp_file->num_sections);
12923 dwp_file->elf_sections[elf_section_nr] = sectp;
12925 /* Look for specific sections that we need. */
12926 if (names->str_dwo.matches (sectp->name))
12928 dwp_file->sections.str.s.section = sectp;
12929 dwp_file->sections.str.size = bfd_section_size (sectp);
12931 else if (names->cu_index.matches (sectp->name))
12933 dwp_file->sections.cu_index.s.section = sectp;
12934 dwp_file->sections.cu_index.size = bfd_section_size (sectp);
12936 else if (names->tu_index.matches (sectp->name))
12938 dwp_file->sections.tu_index.s.section = sectp;
12939 dwp_file->sections.tu_index.size = bfd_section_size (sectp);
12943 /* This function is mapped across the sections and remembers the offset and
12944 size of each of the DWP version 2 debugging sections that we are interested
12945 in. This is split into a separate function because we don't know if we
12946 have version 1 or 2 or 5 until we parse the cu_index/tu_index sections. */
12949 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
12951 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
12952 const struct dwop_section_names *names = &dwop_section_names;
12953 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12955 /* Record the ELF section number for later lookup: this is what the
12956 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
12957 gdb_assert (elf_section_nr < dwp_file->num_sections);
12958 dwp_file->elf_sections[elf_section_nr] = sectp;
12960 /* Look for specific sections that we need. */
12961 if (names->abbrev_dwo.matches (sectp->name))
12963 dwp_file->sections.abbrev.s.section = sectp;
12964 dwp_file->sections.abbrev.size = bfd_section_size (sectp);
12966 else if (names->info_dwo.matches (sectp->name))
12968 dwp_file->sections.info.s.section = sectp;
12969 dwp_file->sections.info.size = bfd_section_size (sectp);
12971 else if (names->line_dwo.matches (sectp->name))
12973 dwp_file->sections.line.s.section = sectp;
12974 dwp_file->sections.line.size = bfd_section_size (sectp);
12976 else if (names->loc_dwo.matches (sectp->name))
12978 dwp_file->sections.loc.s.section = sectp;
12979 dwp_file->sections.loc.size = bfd_section_size (sectp);
12981 else if (names->macinfo_dwo.matches (sectp->name))
12983 dwp_file->sections.macinfo.s.section = sectp;
12984 dwp_file->sections.macinfo.size = bfd_section_size (sectp);
12986 else if (names->macro_dwo.matches (sectp->name))
12988 dwp_file->sections.macro.s.section = sectp;
12989 dwp_file->sections.macro.size = bfd_section_size (sectp);
12991 else if (names->str_offsets_dwo.matches (sectp->name))
12993 dwp_file->sections.str_offsets.s.section = sectp;
12994 dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
12996 else if (names->types_dwo.matches (sectp->name))
12998 dwp_file->sections.types.s.section = sectp;
12999 dwp_file->sections.types.size = bfd_section_size (sectp);
13003 /* This function is mapped across the sections and remembers the offset and
13004 size of each of the DWP version 5 debugging sections that we are interested
13005 in. This is split into a separate function because we don't know if we
13006 have version 1 or 2 or 5 until we parse the cu_index/tu_index sections. */
13009 dwarf2_locate_v5_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13011 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13012 const struct dwop_section_names *names = &dwop_section_names;
13013 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13015 /* Record the ELF section number for later lookup: this is what the
13016 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
13017 gdb_assert (elf_section_nr < dwp_file->num_sections);
13018 dwp_file->elf_sections[elf_section_nr] = sectp;
13020 /* Look for specific sections that we need. */
13021 if (names->abbrev_dwo.matches (sectp->name))
13023 dwp_file->sections.abbrev.s.section = sectp;
13024 dwp_file->sections.abbrev.size = bfd_section_size (sectp);
13026 else if (names->info_dwo.matches (sectp->name))
13028 dwp_file->sections.info.s.section = sectp;
13029 dwp_file->sections.info.size = bfd_section_size (sectp);
13031 else if (names->line_dwo.matches (sectp->name))
13033 dwp_file->sections.line.s.section = sectp;
13034 dwp_file->sections.line.size = bfd_section_size (sectp);
13036 else if (names->loclists_dwo.matches (sectp->name))
13038 dwp_file->sections.loclists.s.section = sectp;
13039 dwp_file->sections.loclists.size = bfd_section_size (sectp);
13041 else if (names->macro_dwo.matches (sectp->name))
13043 dwp_file->sections.macro.s.section = sectp;
13044 dwp_file->sections.macro.size = bfd_section_size (sectp);
13046 else if (names->rnglists_dwo.matches (sectp->name))
13048 dwp_file->sections.rnglists.s.section = sectp;
13049 dwp_file->sections.rnglists.size = bfd_section_size (sectp);
13051 else if (names->str_offsets_dwo.matches (sectp->name))
13053 dwp_file->sections.str_offsets.s.section = sectp;
13054 dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
13058 /* Hash function for dwp_file loaded CUs/TUs. */
13061 hash_dwp_loaded_cutus (const void *item)
13063 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13065 /* This drops the top 32 bits of the signature, but is ok for a hash. */
13066 return dwo_unit->signature;
13069 /* Equality function for dwp_file loaded CUs/TUs. */
13072 eq_dwp_loaded_cutus (const void *a, const void *b)
13074 const struct dwo_unit *dua = (const struct dwo_unit *) a;
13075 const struct dwo_unit *dub = (const struct dwo_unit *) b;
13077 return dua->signature == dub->signature;
13080 /* Allocate a hash table for dwp_file loaded CUs/TUs. */
13083 allocate_dwp_loaded_cutus_table ()
13085 return htab_up (htab_create_alloc (3,
13086 hash_dwp_loaded_cutus,
13087 eq_dwp_loaded_cutus,
13088 NULL, xcalloc, xfree));
13091 /* Try to open DWP file FILE_NAME.
13092 The result is the bfd handle of the file.
13093 If there is a problem finding or opening the file, return NULL.
13094 Upon success, the canonicalized path of the file is stored in the bfd,
13095 same as symfile_bfd_open. */
13097 static gdb_bfd_ref_ptr
13098 open_dwp_file (dwarf2_per_objfile *per_objfile, const char *file_name)
13100 gdb_bfd_ref_ptr abfd (try_open_dwop_file (per_objfile, file_name,
13102 1 /*search_cwd*/));
13106 /* Work around upstream bug 15652.
13107 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13108 [Whether that's a "bug" is debatable, but it is getting in our way.]
13109 We have no real idea where the dwp file is, because gdb's realpath-ing
13110 of the executable's path may have discarded the needed info.
13111 [IWBN if the dwp file name was recorded in the executable, akin to
13112 .gnu_debuglink, but that doesn't exist yet.]
13113 Strip the directory from FILE_NAME and search again. */
13114 if (*debug_file_directory != '\0')
13116 /* Don't implicitly search the current directory here.
13117 If the user wants to search "." to handle this case,
13118 it must be added to debug-file-directory. */
13119 return try_open_dwop_file (per_objfile, lbasename (file_name),
13127 /* Initialize the use of the DWP file for the current objfile.
13128 By convention the name of the DWP file is ${objfile}.dwp.
13129 The result is NULL if it can't be found. */
13131 static std::unique_ptr<struct dwp_file>
13132 open_and_init_dwp_file (dwarf2_per_objfile *per_objfile)
13134 struct objfile *objfile = per_objfile->objfile;
13136 /* Try to find first .dwp for the binary file before any symbolic links
13139 /* If the objfile is a debug file, find the name of the real binary
13140 file and get the name of dwp file from there. */
13141 std::string dwp_name;
13142 if (objfile->separate_debug_objfile_backlink != NULL)
13144 struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13145 const char *backlink_basename = lbasename (backlink->original_name);
13147 dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13150 dwp_name = objfile->original_name;
13152 dwp_name += ".dwp";
13154 gdb_bfd_ref_ptr dbfd (open_dwp_file (per_objfile, dwp_name.c_str ()));
13156 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13158 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
13159 dwp_name = objfile_name (objfile);
13160 dwp_name += ".dwp";
13161 dbfd = open_dwp_file (per_objfile, dwp_name.c_str ());
13166 dwarf_read_debug_printf ("DWP file not found: %s", dwp_name.c_str ());
13168 return std::unique_ptr<dwp_file> ();
13171 const char *name = bfd_get_filename (dbfd.get ());
13172 std::unique_ptr<struct dwp_file> dwp_file
13173 (new struct dwp_file (name, std::move (dbfd)));
13175 dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
13176 dwp_file->elf_sections =
13177 OBSTACK_CALLOC (&per_objfile->per_bfd->obstack,
13178 dwp_file->num_sections, asection *);
13180 for (asection *sec : gdb_bfd_sections (dwp_file->dbfd))
13181 dwarf2_locate_common_dwp_sections (dwp_file->dbfd.get (), sec,
13184 dwp_file->cus = create_dwp_hash_table (per_objfile, dwp_file.get (), 0);
13186 dwp_file->tus = create_dwp_hash_table (per_objfile, dwp_file.get (), 1);
13188 /* The DWP file version is stored in the hash table. Oh well. */
13189 if (dwp_file->cus && dwp_file->tus
13190 && dwp_file->cus->version != dwp_file->tus->version)
13192 /* Technically speaking, we should try to limp along, but this is
13193 pretty bizarre. We use pulongest here because that's the established
13194 portability solution (e.g, we cannot use %u for uint32_t). */
13195 error (_("Dwarf Error: DWP file CU version %s doesn't match"
13196 " TU version %s [in DWP file %s]"),
13197 pulongest (dwp_file->cus->version),
13198 pulongest (dwp_file->tus->version), dwp_name.c_str ());
13202 dwp_file->version = dwp_file->cus->version;
13203 else if (dwp_file->tus)
13204 dwp_file->version = dwp_file->tus->version;
13206 dwp_file->version = 2;
13208 for (asection *sec : gdb_bfd_sections (dwp_file->dbfd))
13210 if (dwp_file->version == 2)
13211 dwarf2_locate_v2_dwp_sections (dwp_file->dbfd.get (), sec,
13214 dwarf2_locate_v5_dwp_sections (dwp_file->dbfd.get (), sec,
13218 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table ();
13219 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table ();
13221 dwarf_read_debug_printf ("DWP file found: %s", dwp_file->name);
13222 dwarf_read_debug_printf (" %s CUs, %s TUs",
13223 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13224 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13229 /* Wrapper around open_and_init_dwp_file, only open it once. */
13231 static struct dwp_file *
13232 get_dwp_file (dwarf2_per_objfile *per_objfile)
13234 if (!per_objfile->per_bfd->dwp_checked)
13236 per_objfile->per_bfd->dwp_file = open_and_init_dwp_file (per_objfile);
13237 per_objfile->per_bfd->dwp_checked = 1;
13239 return per_objfile->per_bfd->dwp_file.get ();
13242 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13243 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13244 or in the DWP file for the objfile, referenced by THIS_UNIT.
13245 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13246 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13248 This is called, for example, when wanting to read a variable with a
13249 complex location. Therefore we don't want to do file i/o for every call.
13250 Therefore we don't want to look for a DWO file on every call.
13251 Therefore we first see if we've already seen SIGNATURE in a DWP file,
13252 then we check if we've already seen DWO_NAME, and only THEN do we check
13255 The result is a pointer to the dwo_unit object or NULL if we didn't find it
13256 (dwo_id mismatch or couldn't find the DWO/DWP file). */
13258 static struct dwo_unit *
13259 lookup_dwo_cutu (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
13260 ULONGEST signature, int is_debug_types)
13262 dwarf2_per_objfile *per_objfile = cu->per_objfile;
13263 struct objfile *objfile = per_objfile->objfile;
13264 const char *kind = is_debug_types ? "TU" : "CU";
13265 void **dwo_file_slot;
13266 struct dwo_file *dwo_file;
13267 struct dwp_file *dwp_file;
13269 /* First see if there's a DWP file.
13270 If we have a DWP file but didn't find the DWO inside it, don't
13271 look for the original DWO file. It makes gdb behave differently
13272 depending on whether one is debugging in the build tree. */
13274 dwp_file = get_dwp_file (per_objfile);
13275 if (dwp_file != NULL)
13277 const struct dwp_hash_table *dwp_htab =
13278 is_debug_types ? dwp_file->tus : dwp_file->cus;
13280 if (dwp_htab != NULL)
13282 struct dwo_unit *dwo_cutu =
13283 lookup_dwo_unit_in_dwp (per_objfile, dwp_file, comp_dir, signature,
13286 if (dwo_cutu != NULL)
13288 dwarf_read_debug_printf ("Virtual DWO %s %s found: @%s",
13289 kind, hex_string (signature),
13290 host_address_to_string (dwo_cutu));
13298 /* No DWP file, look for the DWO file. */
13300 dwo_file_slot = lookup_dwo_file_slot (per_objfile, dwo_name, comp_dir);
13301 if (*dwo_file_slot == NULL)
13303 /* Read in the file and build a table of the CUs/TUs it contains. */
13304 *dwo_file_slot = open_and_init_dwo_file (cu, dwo_name, comp_dir);
13306 /* NOTE: This will be NULL if unable to open the file. */
13307 dwo_file = (struct dwo_file *) *dwo_file_slot;
13309 if (dwo_file != NULL)
13311 struct dwo_unit *dwo_cutu = NULL;
13313 if (is_debug_types && dwo_file->tus)
13315 struct dwo_unit find_dwo_cutu;
13317 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13318 find_dwo_cutu.signature = signature;
13320 = (struct dwo_unit *) htab_find (dwo_file->tus.get (),
13323 else if (!is_debug_types && dwo_file->cus)
13325 struct dwo_unit find_dwo_cutu;
13327 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13328 find_dwo_cutu.signature = signature;
13329 dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus.get (),
13333 if (dwo_cutu != NULL)
13335 dwarf_read_debug_printf ("DWO %s %s(%s) found: @%s",
13336 kind, dwo_name, hex_string (signature),
13337 host_address_to_string (dwo_cutu));
13344 /* We didn't find it. This could mean a dwo_id mismatch, or
13345 someone deleted the DWO/DWP file, or the search path isn't set up
13346 correctly to find the file. */
13348 dwarf_read_debug_printf ("DWO %s %s(%s) not found",
13349 kind, dwo_name, hex_string (signature));
13351 /* This is a warning and not a complaint because it can be caused by
13352 pilot error (e.g., user accidentally deleting the DWO). */
13354 /* Print the name of the DWP file if we looked there, helps the user
13355 better diagnose the problem. */
13356 std::string dwp_text;
13358 if (dwp_file != NULL)
13359 dwp_text = string_printf (" [in DWP file %s]",
13360 lbasename (dwp_file->name));
13362 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13363 " [in module %s]"),
13364 kind, dwo_name, hex_string (signature), dwp_text.c_str (), kind,
13365 sect_offset_str (cu->per_cu->sect_off), objfile_name (objfile));
13370 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13371 See lookup_dwo_cutu_unit for details. */
13373 static struct dwo_unit *
13374 lookup_dwo_comp_unit (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
13375 ULONGEST signature)
13377 gdb_assert (!cu->per_cu->is_debug_types);
13379 return lookup_dwo_cutu (cu, dwo_name, comp_dir, signature, 0);
13382 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13383 See lookup_dwo_cutu_unit for details. */
13385 static struct dwo_unit *
13386 lookup_dwo_type_unit (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir)
13388 gdb_assert (cu->per_cu->is_debug_types);
13390 signatured_type *sig_type = (signatured_type *) cu->per_cu;
13392 return lookup_dwo_cutu (cu, dwo_name, comp_dir, sig_type->signature, 1);
13395 /* Traversal function for queue_and_load_all_dwo_tus. */
13398 queue_and_load_dwo_tu (void **slot, void *info)
13400 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13401 dwarf2_cu *cu = (dwarf2_cu *) info;
13402 ULONGEST signature = dwo_unit->signature;
13403 signatured_type *sig_type = lookup_dwo_signatured_type (cu, signature);
13405 if (sig_type != NULL)
13407 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13409 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13410 a real dependency of PER_CU on SIG_TYPE. That is detected later
13411 while processing PER_CU. */
13412 if (maybe_queue_comp_unit (NULL, sig_cu, cu->per_objfile, cu->language))
13413 load_full_type_unit (sig_cu, cu->per_objfile);
13414 cu->per_cu->imported_symtabs_push (sig_cu);
13420 /* Queue all TUs contained in the DWO of CU to be read in.
13421 The DWO may have the only definition of the type, though it may not be
13422 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
13423 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
13426 queue_and_load_all_dwo_tus (dwarf2_cu *cu)
13428 struct dwo_unit *dwo_unit;
13429 struct dwo_file *dwo_file;
13431 gdb_assert (cu != nullptr);
13432 gdb_assert (!cu->per_cu->is_debug_types);
13433 gdb_assert (get_dwp_file (cu->per_objfile) == nullptr);
13435 dwo_unit = cu->dwo_unit;
13436 gdb_assert (dwo_unit != NULL);
13438 dwo_file = dwo_unit->dwo_file;
13439 if (dwo_file->tus != NULL)
13440 htab_traverse_noresize (dwo_file->tus.get (), queue_and_load_dwo_tu, cu);
13443 /* Read in various DIEs. */
13445 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13446 Inherit only the children of the DW_AT_abstract_origin DIE not being
13447 already referenced by DW_AT_abstract_origin from the children of the
13451 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13453 struct die_info *child_die;
13454 sect_offset *offsetp;
13455 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
13456 struct die_info *origin_die;
13457 /* Iterator of the ORIGIN_DIE children. */
13458 struct die_info *origin_child_die;
13459 struct attribute *attr;
13460 struct dwarf2_cu *origin_cu;
13461 struct pending **origin_previous_list_in_scope;
13463 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13467 /* Note that following die references may follow to a die in a
13471 origin_die = follow_die_ref (die, attr, &origin_cu);
13473 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13475 origin_previous_list_in_scope = origin_cu->list_in_scope;
13476 origin_cu->list_in_scope = cu->list_in_scope;
13478 if (die->tag != origin_die->tag
13479 && !(die->tag == DW_TAG_inlined_subroutine
13480 && origin_die->tag == DW_TAG_subprogram))
13481 complaint (_("DIE %s and its abstract origin %s have different tags"),
13482 sect_offset_str (die->sect_off),
13483 sect_offset_str (origin_die->sect_off));
13485 std::vector<sect_offset> offsets;
13487 for (child_die = die->child;
13488 child_die && child_die->tag;
13489 child_die = child_die->sibling)
13491 struct die_info *child_origin_die;
13492 struct dwarf2_cu *child_origin_cu;
13494 /* We are trying to process concrete instance entries:
13495 DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13496 it's not relevant to our analysis here. i.e. detecting DIEs that are
13497 present in the abstract instance but not referenced in the concrete
13499 if (child_die->tag == DW_TAG_call_site
13500 || child_die->tag == DW_TAG_GNU_call_site)
13503 /* For each CHILD_DIE, find the corresponding child of
13504 ORIGIN_DIE. If there is more than one layer of
13505 DW_AT_abstract_origin, follow them all; there shouldn't be,
13506 but GCC versions at least through 4.4 generate this (GCC PR
13508 child_origin_die = child_die;
13509 child_origin_cu = cu;
13512 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13516 child_origin_die = follow_die_ref (child_origin_die, attr,
13520 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13521 counterpart may exist. */
13522 if (child_origin_die != child_die)
13524 if (child_die->tag != child_origin_die->tag
13525 && !(child_die->tag == DW_TAG_inlined_subroutine
13526 && child_origin_die->tag == DW_TAG_subprogram))
13527 complaint (_("Child DIE %s and its abstract origin %s have "
13529 sect_offset_str (child_die->sect_off),
13530 sect_offset_str (child_origin_die->sect_off));
13531 if (child_origin_die->parent != origin_die)
13532 complaint (_("Child DIE %s and its abstract origin %s have "
13533 "different parents"),
13534 sect_offset_str (child_die->sect_off),
13535 sect_offset_str (child_origin_die->sect_off));
13537 offsets.push_back (child_origin_die->sect_off);
13540 std::sort (offsets.begin (), offsets.end ());
13541 sect_offset *offsets_end = offsets.data () + offsets.size ();
13542 for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13543 if (offsetp[-1] == *offsetp)
13544 complaint (_("Multiple children of DIE %s refer "
13545 "to DIE %s as their abstract origin"),
13546 sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13548 offsetp = offsets.data ();
13549 origin_child_die = origin_die->child;
13550 while (origin_child_die && origin_child_die->tag)
13552 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
13553 while (offsetp < offsets_end
13554 && *offsetp < origin_child_die->sect_off)
13556 if (offsetp >= offsets_end
13557 || *offsetp > origin_child_die->sect_off)
13559 /* Found that ORIGIN_CHILD_DIE is really not referenced.
13560 Check whether we're already processing ORIGIN_CHILD_DIE.
13561 This can happen with mutually referenced abstract_origins.
13563 if (!origin_child_die->in_process)
13564 process_die (origin_child_die, origin_cu);
13566 origin_child_die = origin_child_die->sibling;
13568 origin_cu->list_in_scope = origin_previous_list_in_scope;
13570 if (cu != origin_cu)
13571 compute_delayed_physnames (origin_cu);
13575 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13577 struct objfile *objfile = cu->per_objfile->objfile;
13578 struct gdbarch *gdbarch = objfile->arch ();
13579 struct context_stack *newobj;
13582 struct die_info *child_die;
13583 struct attribute *attr, *call_line, *call_file;
13585 CORE_ADDR baseaddr;
13586 struct block *block;
13587 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13588 std::vector<struct symbol *> template_args;
13589 struct template_symbol *templ_func = NULL;
13593 /* If we do not have call site information, we can't show the
13594 caller of this inlined function. That's too confusing, so
13595 only use the scope for local variables. */
13596 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13597 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13598 if (call_line == NULL || call_file == NULL)
13600 read_lexical_block_scope (die, cu);
13605 baseaddr = objfile->text_section_offset ();
13607 name = dwarf2_name (die, cu);
13609 /* Ignore functions with missing or empty names. These are actually
13610 illegal according to the DWARF standard. */
13613 complaint (_("missing name for subprogram DIE at %s"),
13614 sect_offset_str (die->sect_off));
13618 /* Ignore functions with missing or invalid low and high pc attributes. */
13619 if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13620 <= PC_BOUNDS_INVALID)
13622 attr = dwarf2_attr (die, DW_AT_external, cu);
13623 if (attr == nullptr || !attr->as_boolean ())
13624 complaint (_("cannot get low and high bounds "
13625 "for subprogram DIE at %s"),
13626 sect_offset_str (die->sect_off));
13630 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13631 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13633 /* If we have any template arguments, then we must allocate a
13634 different sort of symbol. */
13635 for (child_die = die->child; child_die; child_die = child_die->sibling)
13637 if (child_die->tag == DW_TAG_template_type_param
13638 || child_die->tag == DW_TAG_template_value_param)
13640 templ_func = new (&objfile->objfile_obstack) template_symbol;
13641 templ_func->subclass = SYMBOL_TEMPLATE;
13646 gdb_assert (cu->get_builder () != nullptr);
13647 newobj = cu->get_builder ()->push_context (0, lowpc);
13648 newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13649 (struct symbol *) templ_func);
13651 if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
13652 set_objfile_main_name (objfile, newobj->name->linkage_name (),
13655 /* If there is a location expression for DW_AT_frame_base, record
13657 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13658 if (attr != nullptr)
13659 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13661 /* If there is a location for the static link, record it. */
13662 newobj->static_link = NULL;
13663 attr = dwarf2_attr (die, DW_AT_static_link, cu);
13664 if (attr != nullptr)
13666 newobj->static_link
13667 = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13668 attr_to_dynamic_prop (attr, die, cu, newobj->static_link,
13672 cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13674 if (die->child != NULL)
13676 child_die = die->child;
13677 while (child_die && child_die->tag)
13679 if (child_die->tag == DW_TAG_template_type_param
13680 || child_die->tag == DW_TAG_template_value_param)
13682 struct symbol *arg = new_symbol (child_die, NULL, cu);
13685 template_args.push_back (arg);
13688 process_die (child_die, cu);
13689 child_die = child_die->sibling;
13693 inherit_abstract_dies (die, cu);
13695 /* If we have a DW_AT_specification, we might need to import using
13696 directives from the context of the specification DIE. See the
13697 comment in determine_prefix. */
13698 if (cu->language == language_cplus
13699 && dwarf2_attr (die, DW_AT_specification, cu))
13701 struct dwarf2_cu *spec_cu = cu;
13702 struct die_info *spec_die = die_specification (die, &spec_cu);
13706 child_die = spec_die->child;
13707 while (child_die && child_die->tag)
13709 if (child_die->tag == DW_TAG_imported_module)
13710 process_die (child_die, spec_cu);
13711 child_die = child_die->sibling;
13714 /* In some cases, GCC generates specification DIEs that
13715 themselves contain DW_AT_specification attributes. */
13716 spec_die = die_specification (spec_die, &spec_cu);
13720 struct context_stack cstk = cu->get_builder ()->pop_context ();
13721 /* Make a block for the local symbols within. */
13722 block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13723 cstk.static_link, lowpc, highpc);
13725 /* For C++, set the block's scope. */
13726 if ((cu->language == language_cplus
13727 || cu->language == language_fortran
13728 || cu->language == language_d
13729 || cu->language == language_rust)
13730 && cu->processing_has_namespace_info)
13731 block_set_scope (block, determine_prefix (die, cu),
13732 &objfile->objfile_obstack);
13734 /* If we have address ranges, record them. */
13735 dwarf2_record_block_ranges (die, block, baseaddr, cu);
13737 gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13739 /* Attach template arguments to function. */
13740 if (!template_args.empty ())
13742 gdb_assert (templ_func != NULL);
13744 templ_func->n_template_arguments = template_args.size ();
13745 templ_func->template_arguments
13746 = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13747 templ_func->n_template_arguments);
13748 memcpy (templ_func->template_arguments,
13749 template_args.data (),
13750 (templ_func->n_template_arguments * sizeof (struct symbol *)));
13752 /* Make sure that the symtab is set on the new symbols. Even
13753 though they don't appear in this symtab directly, other parts
13754 of gdb assume that symbols do, and this is reasonably
13756 for (symbol *sym : template_args)
13757 symbol_set_symtab (sym, symbol_symtab (templ_func));
13760 /* In C++, we can have functions nested inside functions (e.g., when
13761 a function declares a class that has methods). This means that
13762 when we finish processing a function scope, we may need to go
13763 back to building a containing block's symbol lists. */
13764 *cu->get_builder ()->get_local_symbols () = cstk.locals;
13765 cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13767 /* If we've finished processing a top-level function, subsequent
13768 symbols go in the file symbol list. */
13769 if (cu->get_builder ()->outermost_context_p ())
13770 cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13773 /* Process all the DIES contained within a lexical block scope. Start
13774 a new scope, process the dies, and then close the scope. */
13777 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13779 struct objfile *objfile = cu->per_objfile->objfile;
13780 struct gdbarch *gdbarch = objfile->arch ();
13781 CORE_ADDR lowpc, highpc;
13782 struct die_info *child_die;
13783 CORE_ADDR baseaddr;
13785 baseaddr = objfile->text_section_offset ();
13787 /* Ignore blocks with missing or invalid low and high pc attributes. */
13788 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13789 as multiple lexical blocks? Handling children in a sane way would
13790 be nasty. Might be easier to properly extend generic blocks to
13791 describe ranges. */
13792 switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13794 case PC_BOUNDS_NOT_PRESENT:
13795 /* DW_TAG_lexical_block has no attributes, process its children as if
13796 there was no wrapping by that DW_TAG_lexical_block.
13797 GCC does no longer produces such DWARF since GCC r224161. */
13798 for (child_die = die->child;
13799 child_die != NULL && child_die->tag;
13800 child_die = child_die->sibling)
13802 /* We might already be processing this DIE. This can happen
13803 in an unusual circumstance -- where a subroutine A
13804 appears lexically in another subroutine B, but A actually
13805 inlines B. The recursion is broken here, rather than in
13806 inherit_abstract_dies, because it seems better to simply
13807 drop concrete children here. */
13808 if (!child_die->in_process)
13809 process_die (child_die, cu);
13812 case PC_BOUNDS_INVALID:
13815 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13816 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13818 cu->get_builder ()->push_context (0, lowpc);
13819 if (die->child != NULL)
13821 child_die = die->child;
13822 while (child_die && child_die->tag)
13824 process_die (child_die, cu);
13825 child_die = child_die->sibling;
13828 inherit_abstract_dies (die, cu);
13829 struct context_stack cstk = cu->get_builder ()->pop_context ();
13831 if (*cu->get_builder ()->get_local_symbols () != NULL
13832 || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13834 struct block *block
13835 = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13836 cstk.start_addr, highpc);
13838 /* Note that recording ranges after traversing children, as we
13839 do here, means that recording a parent's ranges entails
13840 walking across all its children's ranges as they appear in
13841 the address map, which is quadratic behavior.
13843 It would be nicer to record the parent's ranges before
13844 traversing its children, simply overriding whatever you find
13845 there. But since we don't even decide whether to create a
13846 block until after we've traversed its children, that's hard
13848 dwarf2_record_block_ranges (die, block, baseaddr, cu);
13850 *cu->get_builder ()->get_local_symbols () = cstk.locals;
13851 cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13854 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab. */
13857 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13859 dwarf2_per_objfile *per_objfile = cu->per_objfile;
13860 struct objfile *objfile = per_objfile->objfile;
13861 struct gdbarch *gdbarch = objfile->arch ();
13862 CORE_ADDR pc, baseaddr;
13863 struct attribute *attr;
13864 struct call_site *call_site, call_site_local;
13867 struct die_info *child_die;
13869 baseaddr = objfile->text_section_offset ();
13871 attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13874 /* This was a pre-DWARF-5 GNU extension alias
13875 for DW_AT_call_return_pc. */
13876 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13880 complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13881 "DIE %s [in module %s]"),
13882 sect_offset_str (die->sect_off), objfile_name (objfile));
13885 pc = attr->as_address () + baseaddr;
13886 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13888 if (cu->call_site_htab == NULL)
13889 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13890 NULL, &objfile->objfile_obstack,
13891 hashtab_obstack_allocate, NULL);
13892 call_site_local.pc = pc;
13893 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13896 complaint (_("Duplicate PC %s for DW_TAG_call_site "
13897 "DIE %s [in module %s]"),
13898 paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13899 objfile_name (objfile));
13903 /* Count parameters at the caller. */
13906 for (child_die = die->child; child_die && child_die->tag;
13907 child_die = child_die->sibling)
13909 if (child_die->tag != DW_TAG_call_site_parameter
13910 && child_die->tag != DW_TAG_GNU_call_site_parameter)
13912 complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13913 "DW_TAG_call_site child DIE %s [in module %s]"),
13914 child_die->tag, sect_offset_str (child_die->sect_off),
13915 objfile_name (objfile));
13923 = ((struct call_site *)
13924 obstack_alloc (&objfile->objfile_obstack,
13925 sizeof (*call_site)
13926 + (sizeof (*call_site->parameter) * (nparams - 1))));
13928 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13929 call_site->pc = pc;
13931 if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13932 || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
13934 struct die_info *func_die;
13936 /* Skip also over DW_TAG_inlined_subroutine. */
13937 for (func_die = die->parent;
13938 func_die && func_die->tag != DW_TAG_subprogram
13939 && func_die->tag != DW_TAG_subroutine_type;
13940 func_die = func_die->parent);
13942 /* DW_AT_call_all_calls is a superset
13943 of DW_AT_call_all_tail_calls. */
13945 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
13946 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
13947 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
13948 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
13950 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
13951 not complete. But keep CALL_SITE for look ups via call_site_htab,
13952 both the initial caller containing the real return address PC and
13953 the final callee containing the current PC of a chain of tail
13954 calls do not need to have the tail call list complete. But any
13955 function candidate for a virtual tail call frame searched via
13956 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
13957 determined unambiguously. */
13961 struct type *func_type = NULL;
13964 func_type = get_die_type (func_die, cu);
13965 if (func_type != NULL)
13967 gdb_assert (func_type->code () == TYPE_CODE_FUNC);
13969 /* Enlist this call site to the function. */
13970 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
13971 TYPE_TAIL_CALL_LIST (func_type) = call_site;
13974 complaint (_("Cannot find function owning DW_TAG_call_site "
13975 "DIE %s [in module %s]"),
13976 sect_offset_str (die->sect_off), objfile_name (objfile));
13980 attr = dwarf2_attr (die, DW_AT_call_target, cu);
13982 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
13984 attr = dwarf2_attr (die, DW_AT_call_origin, cu);
13987 /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin. */
13988 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13990 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
13991 if (!attr || (attr->form_is_block () && attr->as_block ()->size == 0))
13992 /* Keep NULL DWARF_BLOCK. */;
13993 else if (attr->form_is_block ())
13995 struct dwarf2_locexpr_baton *dlbaton;
13996 struct dwarf_block *block = attr->as_block ();
13998 dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
13999 dlbaton->data = block->data;
14000 dlbaton->size = block->size;
14001 dlbaton->per_objfile = per_objfile;
14002 dlbaton->per_cu = cu->per_cu;
14004 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14006 else if (attr->form_is_ref ())
14008 struct dwarf2_cu *target_cu = cu;
14009 struct die_info *target_die;
14011 target_die = follow_die_ref (die, attr, &target_cu);
14012 gdb_assert (target_cu->per_objfile->objfile == objfile);
14013 if (die_is_declaration (target_die, target_cu))
14015 const char *target_physname;
14017 /* Prefer the mangled name; otherwise compute the demangled one. */
14018 target_physname = dw2_linkage_name (target_die, target_cu);
14019 if (target_physname == NULL)
14020 target_physname = dwarf2_physname (NULL, target_die, target_cu);
14021 if (target_physname == NULL)
14022 complaint (_("DW_AT_call_target target DIE has invalid "
14023 "physname, for referencing DIE %s [in module %s]"),
14024 sect_offset_str (die->sect_off), objfile_name (objfile));
14026 SET_FIELD_PHYSNAME (call_site->target, target_physname);
14032 /* DW_AT_entry_pc should be preferred. */
14033 if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14034 <= PC_BOUNDS_INVALID)
14035 complaint (_("DW_AT_call_target target DIE has invalid "
14036 "low pc, for referencing DIE %s [in module %s]"),
14037 sect_offset_str (die->sect_off), objfile_name (objfile));
14040 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14041 SET_FIELD_PHYSADDR (call_site->target, lowpc);
14046 complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14047 "block nor reference, for DIE %s [in module %s]"),
14048 sect_offset_str (die->sect_off), objfile_name (objfile));
14050 call_site->per_cu = cu->per_cu;
14051 call_site->per_objfile = per_objfile;
14053 for (child_die = die->child;
14054 child_die && child_die->tag;
14055 child_die = child_die->sibling)
14057 struct call_site_parameter *parameter;
14058 struct attribute *loc, *origin;
14060 if (child_die->tag != DW_TAG_call_site_parameter
14061 && child_die->tag != DW_TAG_GNU_call_site_parameter)
14063 /* Already printed the complaint above. */
14067 gdb_assert (call_site->parameter_count < nparams);
14068 parameter = &call_site->parameter[call_site->parameter_count];
14070 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14071 specifies DW_TAG_formal_parameter. Value of the data assumed for the
14072 register is contained in DW_AT_call_value. */
14074 loc = dwarf2_attr (child_die, DW_AT_location, cu);
14075 origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14076 if (origin == NULL)
14078 /* This was a pre-DWARF-5 GNU extension alias
14079 for DW_AT_call_parameter. */
14080 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14082 if (loc == NULL && origin != NULL && origin->form_is_ref ())
14084 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14086 sect_offset sect_off = origin->get_ref_die_offset ();
14087 if (!cu->header.offset_in_cu_p (sect_off))
14089 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14090 binding can be done only inside one CU. Such referenced DIE
14091 therefore cannot be even moved to DW_TAG_partial_unit. */
14092 complaint (_("DW_AT_call_parameter offset is not in CU for "
14093 "DW_TAG_call_site child DIE %s [in module %s]"),
14094 sect_offset_str (child_die->sect_off),
14095 objfile_name (objfile));
14098 parameter->u.param_cu_off
14099 = (cu_offset) (sect_off - cu->header.sect_off);
14101 else if (loc == NULL || origin != NULL || !loc->form_is_block ())
14103 complaint (_("No DW_FORM_block* DW_AT_location for "
14104 "DW_TAG_call_site child DIE %s [in module %s]"),
14105 sect_offset_str (child_die->sect_off), objfile_name (objfile));
14110 struct dwarf_block *block = loc->as_block ();
14112 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14113 (block->data, &block->data[block->size]);
14114 if (parameter->u.dwarf_reg != -1)
14115 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14116 else if (dwarf_block_to_sp_offset (gdbarch, block->data,
14117 &block->data[block->size],
14118 ¶meter->u.fb_offset))
14119 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14122 complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14123 "for DW_FORM_block* DW_AT_location is supported for "
14124 "DW_TAG_call_site child DIE %s "
14126 sect_offset_str (child_die->sect_off),
14127 objfile_name (objfile));
14132 attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14134 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14135 if (attr == NULL || !attr->form_is_block ())
14137 complaint (_("No DW_FORM_block* DW_AT_call_value for "
14138 "DW_TAG_call_site child DIE %s [in module %s]"),
14139 sect_offset_str (child_die->sect_off),
14140 objfile_name (objfile));
14144 struct dwarf_block *block = attr->as_block ();
14145 parameter->value = block->data;
14146 parameter->value_size = block->size;
14148 /* Parameters are not pre-cleared by memset above. */
14149 parameter->data_value = NULL;
14150 parameter->data_value_size = 0;
14151 call_site->parameter_count++;
14153 attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14155 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14156 if (attr != nullptr)
14158 if (!attr->form_is_block ())
14159 complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14160 "DW_TAG_call_site child DIE %s [in module %s]"),
14161 sect_offset_str (child_die->sect_off),
14162 objfile_name (objfile));
14165 block = attr->as_block ();
14166 parameter->data_value = block->data;
14167 parameter->data_value_size = block->size;
14173 /* Helper function for read_variable. If DIE represents a virtual
14174 table, then return the type of the concrete object that is
14175 associated with the virtual table. Otherwise, return NULL. */
14177 static struct type *
14178 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14180 struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14184 /* Find the type DIE. */
14185 struct die_info *type_die = NULL;
14186 struct dwarf2_cu *type_cu = cu;
14188 if (attr->form_is_ref ())
14189 type_die = follow_die_ref (die, attr, &type_cu);
14190 if (type_die == NULL)
14193 if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14195 return die_containing_type (type_die, type_cu);
14198 /* Read a variable (DW_TAG_variable) DIE and create a new symbol. */
14201 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14203 struct rust_vtable_symbol *storage = NULL;
14205 if (cu->language == language_rust)
14207 struct type *containing_type = rust_containing_type (die, cu);
14209 if (containing_type != NULL)
14211 struct objfile *objfile = cu->per_objfile->objfile;
14213 storage = new (&objfile->objfile_obstack) rust_vtable_symbol;
14214 storage->concrete_type = containing_type;
14215 storage->subclass = SYMBOL_RUST_VTABLE;
14219 struct symbol *res = new_symbol (die, NULL, cu, storage);
14220 struct attribute *abstract_origin
14221 = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14222 struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14223 if (res == NULL && loc && abstract_origin)
14225 /* We have a variable without a name, but with a location and an abstract
14226 origin. This may be a concrete instance of an abstract variable
14227 referenced from an DW_OP_GNU_variable_value, so save it to find it back
14229 struct dwarf2_cu *origin_cu = cu;
14230 struct die_info *origin_die
14231 = follow_die_ref (die, abstract_origin, &origin_cu);
14232 dwarf2_per_objfile *per_objfile = cu->per_objfile;
14233 per_objfile->per_bfd->abstract_to_concrete
14234 [origin_die->sect_off].push_back (die->sect_off);
14238 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14239 reading .debug_rnglists.
14240 Callback's type should be:
14241 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14242 Return true if the attributes are present and valid, otherwise,
14245 template <typename Callback>
14247 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14248 dwarf_tag tag, Callback &&callback)
14250 dwarf2_per_objfile *per_objfile = cu->per_objfile;
14251 struct objfile *objfile = per_objfile->objfile;
14252 bfd *obfd = objfile->obfd;
14253 /* Base address selection entry. */
14254 gdb::optional<CORE_ADDR> base;
14255 const gdb_byte *buffer;
14256 CORE_ADDR baseaddr;
14257 bool overflow = false;
14258 ULONGEST addr_index;
14259 struct dwarf2_section_info *rnglists_section;
14261 base = cu->base_address;
14262 rnglists_section = cu_debug_rnglists_section (cu, tag);
14263 rnglists_section->read (objfile);
14265 if (offset >= rnglists_section->size)
14267 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14271 buffer = rnglists_section->buffer + offset;
14273 baseaddr = objfile->text_section_offset ();
14277 /* Initialize it due to a false compiler warning. */
14278 CORE_ADDR range_beginning = 0, range_end = 0;
14279 const gdb_byte *buf_end = (rnglists_section->buffer
14280 + rnglists_section->size);
14281 unsigned int bytes_read;
14283 if (buffer == buf_end)
14288 const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14291 case DW_RLE_end_of_list:
14293 case DW_RLE_base_address:
14294 if (buffer + cu->header.addr_size > buf_end)
14299 base = cu->header.read_address (obfd, buffer, &bytes_read);
14300 buffer += bytes_read;
14302 case DW_RLE_base_addressx:
14303 addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14304 buffer += bytes_read;
14305 base = read_addr_index (cu, addr_index);
14307 case DW_RLE_start_length:
14308 if (buffer + cu->header.addr_size > buf_end)
14313 range_beginning = cu->header.read_address (obfd, buffer,
14315 buffer += bytes_read;
14316 range_end = (range_beginning
14317 + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14318 buffer += bytes_read;
14319 if (buffer > buf_end)
14325 case DW_RLE_startx_length:
14326 addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14327 buffer += bytes_read;
14328 range_beginning = read_addr_index (cu, addr_index);
14329 if (buffer > buf_end)
14334 range_end = (range_beginning
14335 + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14336 buffer += bytes_read;
14338 case DW_RLE_offset_pair:
14339 range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14340 buffer += bytes_read;
14341 if (buffer > buf_end)
14346 range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14347 buffer += bytes_read;
14348 if (buffer > buf_end)
14354 case DW_RLE_start_end:
14355 if (buffer + 2 * cu->header.addr_size > buf_end)
14360 range_beginning = cu->header.read_address (obfd, buffer,
14362 buffer += bytes_read;
14363 range_end = cu->header.read_address (obfd, buffer, &bytes_read);
14364 buffer += bytes_read;
14366 case DW_RLE_startx_endx:
14367 addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14368 buffer += bytes_read;
14369 range_beginning = read_addr_index (cu, addr_index);
14370 if (buffer > buf_end)
14375 addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14376 buffer += bytes_read;
14377 range_end = read_addr_index (cu, addr_index);
14380 complaint (_("Invalid .debug_rnglists data (no base address)"));
14383 if (rlet == DW_RLE_end_of_list || overflow)
14385 if (rlet == DW_RLE_base_address)
14388 if (range_beginning > range_end)
14390 /* Inverted range entries are invalid. */
14391 complaint (_("Invalid .debug_rnglists data (inverted range)"));
14395 /* Empty range entries have no effect. */
14396 if (range_beginning == range_end)
14399 /* Only DW_RLE_offset_pair needs the base address added. */
14400 if (rlet == DW_RLE_offset_pair)
14402 if (!base.has_value ())
14404 /* We have no valid base address for the DW_RLE_offset_pair. */
14405 complaint (_("Invalid .debug_rnglists data (no base address for "
14406 "DW_RLE_offset_pair)"));
14410 range_beginning += *base;
14411 range_end += *base;
14414 /* A not-uncommon case of bad debug info.
14415 Don't pollute the addrmap with bad data. */
14416 if (range_beginning + baseaddr == 0
14417 && !per_objfile->per_bfd->has_section_at_zero)
14419 complaint (_(".debug_rnglists entry has start address of zero"
14420 " [in module %s]"), objfile_name (objfile));
14424 callback (range_beginning, range_end);
14429 complaint (_("Offset %d is not terminated "
14430 "for DW_AT_ranges attribute"),
14438 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14439 Callback's type should be:
14440 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14441 Return 1 if the attributes are present and valid, otherwise, return 0. */
14443 template <typename Callback>
14445 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu, dwarf_tag tag,
14446 Callback &&callback)
14448 dwarf2_per_objfile *per_objfile = cu->per_objfile;
14449 struct objfile *objfile = per_objfile->objfile;
14450 struct comp_unit_head *cu_header = &cu->header;
14451 bfd *obfd = objfile->obfd;
14452 unsigned int addr_size = cu_header->addr_size;
14453 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14454 /* Base address selection entry. */
14455 gdb::optional<CORE_ADDR> base;
14456 unsigned int dummy;
14457 const gdb_byte *buffer;
14458 CORE_ADDR baseaddr;
14460 if (cu_header->version >= 5)
14461 return dwarf2_rnglists_process (offset, cu, tag, callback);
14463 base = cu->base_address;
14465 per_objfile->per_bfd->ranges.read (objfile);
14466 if (offset >= per_objfile->per_bfd->ranges.size)
14468 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14472 buffer = per_objfile->per_bfd->ranges.buffer + offset;
14474 baseaddr = objfile->text_section_offset ();
14478 CORE_ADDR range_beginning, range_end;
14480 range_beginning = cu->header.read_address (obfd, buffer, &dummy);
14481 buffer += addr_size;
14482 range_end = cu->header.read_address (obfd, buffer, &dummy);
14483 buffer += addr_size;
14484 offset += 2 * addr_size;
14486 /* An end of list marker is a pair of zero addresses. */
14487 if (range_beginning == 0 && range_end == 0)
14488 /* Found the end of list entry. */
14491 /* Each base address selection entry is a pair of 2 values.
14492 The first is the largest possible address, the second is
14493 the base address. Check for a base address here. */
14494 if ((range_beginning & mask) == mask)
14496 /* If we found the largest possible address, then we already
14497 have the base address in range_end. */
14502 if (!base.has_value ())
14504 /* We have no valid base address for the ranges
14506 complaint (_("Invalid .debug_ranges data (no base address)"));
14510 if (range_beginning > range_end)
14512 /* Inverted range entries are invalid. */
14513 complaint (_("Invalid .debug_ranges data (inverted range)"));
14517 /* Empty range entries have no effect. */
14518 if (range_beginning == range_end)
14521 range_beginning += *base;
14522 range_end += *base;
14524 /* A not-uncommon case of bad debug info.
14525 Don't pollute the addrmap with bad data. */
14526 if (range_beginning + baseaddr == 0
14527 && !per_objfile->per_bfd->has_section_at_zero)
14529 complaint (_(".debug_ranges entry has start address of zero"
14530 " [in module %s]"), objfile_name (objfile));
14534 callback (range_beginning, range_end);
14540 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14541 Return 1 if the attributes are present and valid, otherwise, return 0.
14542 If RANGES_PST is not NULL we should set up the `psymtabs_addrmap'. */
14545 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14546 CORE_ADDR *high_return, struct dwarf2_cu *cu,
14547 dwarf2_psymtab *ranges_pst, dwarf_tag tag)
14549 struct objfile *objfile = cu->per_objfile->objfile;
14550 dwarf2_per_bfd *per_bfd = cu->per_objfile->per_bfd;
14551 struct gdbarch *gdbarch = objfile->arch ();
14552 const CORE_ADDR baseaddr = objfile->text_section_offset ();
14555 CORE_ADDR high = 0;
14558 retval = dwarf2_ranges_process (offset, cu, tag,
14559 [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14561 if (ranges_pst != NULL)
14566 lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14567 range_beginning + baseaddr)
14569 highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14570 range_end + baseaddr)
14572 addrmap_set_empty (per_bfd->partial_symtabs->psymtabs_addrmap,
14573 lowpc, highpc - 1, ranges_pst);
14576 /* FIXME: This is recording everything as a low-high
14577 segment of consecutive addresses. We should have a
14578 data structure for discontiguous block ranges
14582 low = range_beginning;
14588 if (range_beginning < low)
14589 low = range_beginning;
14590 if (range_end > high)
14598 /* If the first entry is an end-of-list marker, the range
14599 describes an empty scope, i.e. no instructions. */
14605 *high_return = high;
14609 /* Get low and high pc attributes from a die. See enum pc_bounds_kind
14610 definition for the return value. *LOWPC and *HIGHPC are set iff
14611 neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned. */
14613 static enum pc_bounds_kind
14614 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14615 CORE_ADDR *highpc, struct dwarf2_cu *cu,
14616 dwarf2_psymtab *pst)
14618 dwarf2_per_objfile *per_objfile = cu->per_objfile;
14619 struct attribute *attr;
14620 struct attribute *attr_high;
14622 CORE_ADDR high = 0;
14623 enum pc_bounds_kind ret;
14625 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14628 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14629 if (attr != nullptr)
14631 low = attr->as_address ();
14632 high = attr_high->as_address ();
14633 if (cu->header.version >= 4 && attr_high->form_is_constant ())
14637 /* Found high w/o low attribute. */
14638 return PC_BOUNDS_INVALID;
14640 /* Found consecutive range of addresses. */
14641 ret = PC_BOUNDS_HIGH_LOW;
14645 attr = dwarf2_attr (die, DW_AT_ranges, cu);
14646 if (attr != nullptr && attr->form_is_unsigned ())
14648 /* Offset in the .debug_ranges or .debug_rnglist section (depending
14649 on DWARF version). */
14650 ULONGEST ranges_offset = attr->as_unsigned ();
14652 /* See dwarf2_cu::gnu_ranges_base's doc for why we might want to add
14654 if (die->tag != DW_TAG_compile_unit)
14655 ranges_offset += cu->gnu_ranges_base;
14657 /* Value of the DW_AT_ranges attribute is the offset in the
14658 .debug_ranges section. */
14659 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst,
14661 return PC_BOUNDS_INVALID;
14662 /* Found discontinuous range of addresses. */
14663 ret = PC_BOUNDS_RANGES;
14666 return PC_BOUNDS_NOT_PRESENT;
14669 /* partial_die_info::read has also the strict LOW < HIGH requirement. */
14671 return PC_BOUNDS_INVALID;
14673 /* When using the GNU linker, .gnu.linkonce. sections are used to
14674 eliminate duplicate copies of functions and vtables and such.
14675 The linker will arbitrarily choose one and discard the others.
14676 The AT_*_pc values for such functions refer to local labels in
14677 these sections. If the section from that file was discarded, the
14678 labels are not in the output, so the relocs get a value of 0.
14679 If this is a discarded function, mark the pc bounds as invalid,
14680 so that GDB will ignore it. */
14681 if (low == 0 && !per_objfile->per_bfd->has_section_at_zero)
14682 return PC_BOUNDS_INVALID;
14690 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14691 its low and high PC addresses. Do nothing if these addresses could not
14692 be determined. Otherwise, set LOWPC to the low address if it is smaller,
14693 and HIGHPC to the high address if greater than HIGHPC. */
14696 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14697 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14698 struct dwarf2_cu *cu)
14700 CORE_ADDR low, high;
14701 struct die_info *child = die->child;
14703 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14705 *lowpc = std::min (*lowpc, low);
14706 *highpc = std::max (*highpc, high);
14709 /* If the language does not allow nested subprograms (either inside
14710 subprograms or lexical blocks), we're done. */
14711 if (cu->language != language_ada)
14714 /* Check all the children of the given DIE. If it contains nested
14715 subprograms, then check their pc bounds. Likewise, we need to
14716 check lexical blocks as well, as they may also contain subprogram
14718 while (child && child->tag)
14720 if (child->tag == DW_TAG_subprogram
14721 || child->tag == DW_TAG_lexical_block)
14722 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14723 child = child->sibling;
14727 /* Get the low and high pc's represented by the scope DIE, and store
14728 them in *LOWPC and *HIGHPC. If the correct values can't be
14729 determined, set *LOWPC to -1 and *HIGHPC to 0. */
14732 get_scope_pc_bounds (struct die_info *die,
14733 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14734 struct dwarf2_cu *cu)
14736 CORE_ADDR best_low = (CORE_ADDR) -1;
14737 CORE_ADDR best_high = (CORE_ADDR) 0;
14738 CORE_ADDR current_low, current_high;
14740 if (dwarf2_get_pc_bounds (die, ¤t_low, ¤t_high, cu, NULL)
14741 >= PC_BOUNDS_RANGES)
14743 best_low = current_low;
14744 best_high = current_high;
14748 struct die_info *child = die->child;
14750 while (child && child->tag)
14752 switch (child->tag) {
14753 case DW_TAG_subprogram:
14754 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14756 case DW_TAG_namespace:
14757 case DW_TAG_module:
14758 /* FIXME: carlton/2004-01-16: Should we do this for
14759 DW_TAG_class_type/DW_TAG_structure_type, too? I think
14760 that current GCC's always emit the DIEs corresponding
14761 to definitions of methods of classes as children of a
14762 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14763 the DIEs giving the declarations, which could be
14764 anywhere). But I don't see any reason why the
14765 standards says that they have to be there. */
14766 get_scope_pc_bounds (child, ¤t_low, ¤t_high, cu);
14768 if (current_low != ((CORE_ADDR) -1))
14770 best_low = std::min (best_low, current_low);
14771 best_high = std::max (best_high, current_high);
14779 child = child->sibling;
14784 *highpc = best_high;
14787 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14791 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14792 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14794 struct objfile *objfile = cu->per_objfile->objfile;
14795 struct gdbarch *gdbarch = objfile->arch ();
14796 struct attribute *attr;
14797 struct attribute *attr_high;
14799 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14802 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14803 if (attr != nullptr)
14805 CORE_ADDR low = attr->as_address ();
14806 CORE_ADDR high = attr_high->as_address ();
14808 if (cu->header.version >= 4 && attr_high->form_is_constant ())
14811 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14812 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14813 cu->get_builder ()->record_block_range (block, low, high - 1);
14817 attr = dwarf2_attr (die, DW_AT_ranges, cu);
14818 if (attr != nullptr && attr->form_is_unsigned ())
14820 /* Offset in the .debug_ranges or .debug_rnglist section (depending
14821 on DWARF version). */
14822 ULONGEST ranges_offset = attr->as_unsigned ();
14824 /* See dwarf2_cu::gnu_ranges_base's doc for why we might want to add
14826 if (die->tag != DW_TAG_compile_unit)
14827 ranges_offset += cu->gnu_ranges_base;
14829 std::vector<blockrange> blockvec;
14830 dwarf2_ranges_process (ranges_offset, cu, die->tag,
14831 [&] (CORE_ADDR start, CORE_ADDR end)
14835 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14836 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14837 cu->get_builder ()->record_block_range (block, start, end - 1);
14838 blockvec.emplace_back (start, end);
14841 BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14845 /* Check whether the producer field indicates either of GCC < 4.6, or the
14846 Intel C/C++ compiler, and cache the result in CU. */
14849 check_producer (struct dwarf2_cu *cu)
14853 if (cu->producer == NULL)
14855 /* For unknown compilers expect their behavior is DWARF version
14858 GCC started to support .debug_types sections by -gdwarf-4 since
14859 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
14860 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14861 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14862 interpreted incorrectly by GDB now - GCC PR debug/48229. */
14864 else if (producer_is_gcc (cu->producer, &major, &minor))
14866 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14867 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14869 else if (producer_is_icc (cu->producer, &major, &minor))
14871 cu->producer_is_icc = true;
14872 cu->producer_is_icc_lt_14 = major < 14;
14874 else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14875 cu->producer_is_codewarrior = true;
14878 /* For other non-GCC compilers, expect their behavior is DWARF version
14882 cu->checked_producer = true;
14885 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14886 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14887 during 4.6.0 experimental. */
14890 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14892 if (!cu->checked_producer)
14893 check_producer (cu);
14895 return cu->producer_is_gxx_lt_4_6;
14899 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14900 with incorrect is_stmt attributes. */
14903 producer_is_codewarrior (struct dwarf2_cu *cu)
14905 if (!cu->checked_producer)
14906 check_producer (cu);
14908 return cu->producer_is_codewarrior;
14911 /* Return the accessibility of DIE, as given by DW_AT_accessibility.
14912 If that attribute is not available, return the appropriate
14915 static enum dwarf_access_attribute
14916 dwarf2_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14918 attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
14919 if (attr != nullptr)
14921 LONGEST value = attr->constant_value (-1);
14922 if (value == DW_ACCESS_public
14923 || value == DW_ACCESS_protected
14924 || value == DW_ACCESS_private)
14925 return (dwarf_access_attribute) value;
14926 complaint (_("Unhandled DW_AT_accessibility value (%s)"),
14930 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14932 /* The default DWARF 2 accessibility for members is public, the default
14933 accessibility for inheritance is private. */
14935 if (die->tag != DW_TAG_inheritance)
14936 return DW_ACCESS_public;
14938 return DW_ACCESS_private;
14942 /* DWARF 3+ defines the default accessibility a different way. The same
14943 rules apply now for DW_TAG_inheritance as for the members and it only
14944 depends on the container kind. */
14946 if (die->parent->tag == DW_TAG_class_type)
14947 return DW_ACCESS_private;
14949 return DW_ACCESS_public;
14953 /* Look for DW_AT_data_member_location. Set *OFFSET to the byte
14954 offset. If the attribute was not found return 0, otherwise return
14955 1. If it was found but could not properly be handled, set *OFFSET
14959 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14962 struct attribute *attr;
14964 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14969 /* Note that we do not check for a section offset first here.
14970 This is because DW_AT_data_member_location is new in DWARF 4,
14971 so if we see it, we can assume that a constant form is really
14972 a constant and not a section offset. */
14973 if (attr->form_is_constant ())
14974 *offset = attr->constant_value (0);
14975 else if (attr->form_is_section_offset ())
14976 dwarf2_complex_location_expr_complaint ();
14977 else if (attr->form_is_block ())
14978 *offset = decode_locdesc (attr->as_block (), cu);
14980 dwarf2_complex_location_expr_complaint ();
14988 /* Look for DW_AT_data_member_location and store the results in FIELD. */
14991 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14992 struct field *field)
14994 struct attribute *attr;
14996 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14999 if (attr->form_is_constant ())
15001 LONGEST offset = attr->constant_value (0);
15002 SET_FIELD_BITPOS (*field, offset * bits_per_byte);
15004 else if (attr->form_is_section_offset ())
15005 dwarf2_complex_location_expr_complaint ();
15006 else if (attr->form_is_block ())
15009 CORE_ADDR offset = decode_locdesc (attr->as_block (), cu, &handled);
15011 SET_FIELD_BITPOS (*field, offset * bits_per_byte);
15014 dwarf2_per_objfile *per_objfile = cu->per_objfile;
15015 struct objfile *objfile = per_objfile->objfile;
15016 struct dwarf2_locexpr_baton *dlbaton
15017 = XOBNEW (&objfile->objfile_obstack,
15018 struct dwarf2_locexpr_baton);
15019 dlbaton->data = attr->as_block ()->data;
15020 dlbaton->size = attr->as_block ()->size;
15021 /* When using this baton, we want to compute the address
15022 of the field, not the value. This is why
15023 is_reference is set to false here. */
15024 dlbaton->is_reference = false;
15025 dlbaton->per_objfile = per_objfile;
15026 dlbaton->per_cu = cu->per_cu;
15028 SET_FIELD_DWARF_BLOCK (*field, dlbaton);
15032 dwarf2_complex_location_expr_complaint ();
15036 /* Add an aggregate field to the field list. */
15039 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15040 struct dwarf2_cu *cu)
15042 struct objfile *objfile = cu->per_objfile->objfile;
15043 struct gdbarch *gdbarch = objfile->arch ();
15044 struct nextfield *new_field;
15045 struct attribute *attr;
15047 const char *fieldname = "";
15049 if (die->tag == DW_TAG_inheritance)
15051 fip->baseclasses.emplace_back ();
15052 new_field = &fip->baseclasses.back ();
15056 fip->fields.emplace_back ();
15057 new_field = &fip->fields.back ();
15060 new_field->offset = die->sect_off;
15062 new_field->accessibility = dwarf2_access_attribute (die, cu);
15063 if (new_field->accessibility != DW_ACCESS_public)
15064 fip->non_public_fields = true;
15066 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15067 if (attr != nullptr)
15068 new_field->virtuality = attr->as_virtuality ();
15070 new_field->virtuality = DW_VIRTUALITY_none;
15072 fp = &new_field->field;
15074 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15076 /* Data member other than a C++ static data member. */
15078 /* Get type of field. */
15079 fp->set_type (die_type (die, cu));
15081 SET_FIELD_BITPOS (*fp, 0);
15083 /* Get bit size of field (zero if none). */
15084 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15085 if (attr != nullptr)
15087 FIELD_BITSIZE (*fp) = attr->constant_value (0);
15091 FIELD_BITSIZE (*fp) = 0;
15094 /* Get bit offset of field. */
15095 handle_data_member_location (die, cu, fp);
15096 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15097 if (attr != nullptr && attr->form_is_constant ())
15099 if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
15101 /* For big endian bits, the DW_AT_bit_offset gives the
15102 additional bit offset from the MSB of the containing
15103 anonymous object to the MSB of the field. We don't
15104 have to do anything special since we don't need to
15105 know the size of the anonymous object. */
15106 SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15107 + attr->constant_value (0)));
15111 /* For little endian bits, compute the bit offset to the
15112 MSB of the anonymous object, subtract off the number of
15113 bits from the MSB of the field to the MSB of the
15114 object, and then subtract off the number of bits of
15115 the field itself. The result is the bit offset of
15116 the LSB of the field. */
15117 int anonymous_size;
15118 int bit_offset = attr->constant_value (0);
15120 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15121 if (attr != nullptr && attr->form_is_constant ())
15123 /* The size of the anonymous object containing
15124 the bit field is explicit, so use the
15125 indicated size (in bytes). */
15126 anonymous_size = attr->constant_value (0);
15130 /* The size of the anonymous object containing
15131 the bit field must be inferred from the type
15132 attribute of the data member containing the
15134 anonymous_size = TYPE_LENGTH (fp->type ());
15136 SET_FIELD_BITPOS (*fp,
15137 (FIELD_BITPOS (*fp)
15138 + anonymous_size * bits_per_byte
15139 - bit_offset - FIELD_BITSIZE (*fp)));
15142 attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15144 SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15145 + attr->constant_value (0)));
15147 /* Get name of field. */
15148 fieldname = dwarf2_name (die, cu);
15149 if (fieldname == NULL)
15152 /* The name is already allocated along with this objfile, so we don't
15153 need to duplicate it for the type. */
15154 fp->name = fieldname;
15156 /* Change accessibility for artificial fields (e.g. virtual table
15157 pointer or virtual base class pointer) to private. */
15158 if (dwarf2_attr (die, DW_AT_artificial, cu))
15160 FIELD_ARTIFICIAL (*fp) = 1;
15161 new_field->accessibility = DW_ACCESS_private;
15162 fip->non_public_fields = true;
15165 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15167 /* C++ static member. */
15169 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15170 is a declaration, but all versions of G++ as of this writing
15171 (so through at least 3.2.1) incorrectly generate
15172 DW_TAG_variable tags. */
15174 const char *physname;
15176 /* Get name of field. */
15177 fieldname = dwarf2_name (die, cu);
15178 if (fieldname == NULL)
15181 attr = dwarf2_attr (die, DW_AT_const_value, cu);
15183 /* Only create a symbol if this is an external value.
15184 new_symbol checks this and puts the value in the global symbol
15185 table, which we want. If it is not external, new_symbol
15186 will try to put the value in cu->list_in_scope which is wrong. */
15187 && dwarf2_flag_true_p (die, DW_AT_external, cu))
15189 /* A static const member, not much different than an enum as far as
15190 we're concerned, except that we can support more types. */
15191 new_symbol (die, NULL, cu);
15194 /* Get physical name. */
15195 physname = dwarf2_physname (fieldname, die, cu);
15197 /* The name is already allocated along with this objfile, so we don't
15198 need to duplicate it for the type. */
15199 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15200 fp->set_type (die_type (die, cu));
15201 FIELD_NAME (*fp) = fieldname;
15203 else if (die->tag == DW_TAG_inheritance)
15205 /* C++ base class field. */
15206 handle_data_member_location (die, cu, fp);
15207 FIELD_BITSIZE (*fp) = 0;
15208 fp->set_type (die_type (die, cu));
15209 FIELD_NAME (*fp) = fp->type ()->name ();
15212 gdb_assert_not_reached ("missing case in dwarf2_add_field");
15215 /* Can the type given by DIE define another type? */
15218 type_can_define_types (const struct die_info *die)
15222 case DW_TAG_typedef:
15223 case DW_TAG_class_type:
15224 case DW_TAG_structure_type:
15225 case DW_TAG_union_type:
15226 case DW_TAG_enumeration_type:
15234 /* Add a type definition defined in the scope of the FIP's class. */
15237 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15238 struct dwarf2_cu *cu)
15240 struct decl_field fp;
15241 memset (&fp, 0, sizeof (fp));
15243 gdb_assert (type_can_define_types (die));
15245 /* Get name of field. NULL is okay here, meaning an anonymous type. */
15246 fp.name = dwarf2_name (die, cu);
15247 fp.type = read_type_die (die, cu);
15249 /* Save accessibility. */
15250 dwarf_access_attribute accessibility = dwarf2_access_attribute (die, cu);
15251 switch (accessibility)
15253 case DW_ACCESS_public:
15254 /* The assumed value if neither private nor protected. */
15256 case DW_ACCESS_private:
15259 case DW_ACCESS_protected:
15260 fp.is_protected = 1;
15264 if (die->tag == DW_TAG_typedef)
15265 fip->typedef_field_list.push_back (fp);
15267 fip->nested_types_list.push_back (fp);
15270 /* A convenience typedef that's used when finding the discriminant
15271 field for a variant part. */
15272 typedef std::unordered_map<sect_offset, int, gdb::hash_enum<sect_offset>>
15275 /* Compute the discriminant range for a given variant. OBSTACK is
15276 where the results will be stored. VARIANT is the variant to
15277 process. IS_UNSIGNED indicates whether the discriminant is signed
15280 static const gdb::array_view<discriminant_range>
15281 convert_variant_range (struct obstack *obstack, const variant_field &variant,
15284 std::vector<discriminant_range> ranges;
15286 if (variant.default_branch)
15289 if (variant.discr_list_data == nullptr)
15291 discriminant_range r
15292 = {variant.discriminant_value, variant.discriminant_value};
15293 ranges.push_back (r);
15297 gdb::array_view<const gdb_byte> data (variant.discr_list_data->data,
15298 variant.discr_list_data->size);
15299 while (!data.empty ())
15301 if (data[0] != DW_DSC_range && data[0] != DW_DSC_label)
15303 complaint (_("invalid discriminant marker: %d"), data[0]);
15306 bool is_range = data[0] == DW_DSC_range;
15307 data = data.slice (1);
15309 ULONGEST low, high;
15310 unsigned int bytes_read;
15314 complaint (_("DW_AT_discr_list missing low value"));
15318 low = read_unsigned_leb128 (nullptr, data.data (), &bytes_read);
15320 low = (ULONGEST) read_signed_leb128 (nullptr, data.data (),
15322 data = data.slice (bytes_read);
15328 complaint (_("DW_AT_discr_list missing high value"));
15332 high = read_unsigned_leb128 (nullptr, data.data (),
15335 high = (LONGEST) read_signed_leb128 (nullptr, data.data (),
15337 data = data.slice (bytes_read);
15342 ranges.push_back ({ low, high });
15346 discriminant_range *result = XOBNEWVEC (obstack, discriminant_range,
15348 std::copy (ranges.begin (), ranges.end (), result);
15349 return gdb::array_view<discriminant_range> (result, ranges.size ());
15352 static const gdb::array_view<variant_part> create_variant_parts
15353 (struct obstack *obstack,
15354 const offset_map_type &offset_map,
15355 struct field_info *fi,
15356 const std::vector<variant_part_builder> &variant_parts);
15358 /* Fill in a "struct variant" for a given variant field. RESULT is
15359 the variant to fill in. OBSTACK is where any needed allocations
15360 will be done. OFFSET_MAP holds the mapping from section offsets to
15361 fields for the type. FI describes the fields of the type we're
15362 processing. FIELD is the variant field we're converting. */
15365 create_one_variant (variant &result, struct obstack *obstack,
15366 const offset_map_type &offset_map,
15367 struct field_info *fi, const variant_field &field)
15369 result.discriminants = convert_variant_range (obstack, field, false);
15370 result.first_field = field.first_field + fi->baseclasses.size ();
15371 result.last_field = field.last_field + fi->baseclasses.size ();
15372 result.parts = create_variant_parts (obstack, offset_map, fi,
15373 field.variant_parts);
15376 /* Fill in a "struct variant_part" for a given variant part. RESULT
15377 is the variant part to fill in. OBSTACK is where any needed
15378 allocations will be done. OFFSET_MAP holds the mapping from
15379 section offsets to fields for the type. FI describes the fields of
15380 the type we're processing. BUILDER is the variant part to be
15384 create_one_variant_part (variant_part &result,
15385 struct obstack *obstack,
15386 const offset_map_type &offset_map,
15387 struct field_info *fi,
15388 const variant_part_builder &builder)
15390 auto iter = offset_map.find (builder.discriminant_offset);
15391 if (iter == offset_map.end ())
15393 result.discriminant_index = -1;
15394 /* Doesn't matter. */
15395 result.is_unsigned = false;
15399 result.discriminant_index = iter->second;
15401 = fi->fields[result.discriminant_index].field.type ()->is_unsigned ();
15404 size_t n = builder.variants.size ();
15405 variant *output = new (obstack) variant[n];
15406 for (size_t i = 0; i < n; ++i)
15407 create_one_variant (output[i], obstack, offset_map, fi,
15408 builder.variants[i]);
15410 result.variants = gdb::array_view<variant> (output, n);
15413 /* Create a vector of variant parts that can be attached to a type.
15414 OBSTACK is where any needed allocations will be done. OFFSET_MAP
15415 holds the mapping from section offsets to fields for the type. FI
15416 describes the fields of the type we're processing. VARIANT_PARTS
15417 is the vector to convert. */
15419 static const gdb::array_view<variant_part>
15420 create_variant_parts (struct obstack *obstack,
15421 const offset_map_type &offset_map,
15422 struct field_info *fi,
15423 const std::vector<variant_part_builder> &variant_parts)
15425 if (variant_parts.empty ())
15428 size_t n = variant_parts.size ();
15429 variant_part *result = new (obstack) variant_part[n];
15430 for (size_t i = 0; i < n; ++i)
15431 create_one_variant_part (result[i], obstack, offset_map, fi,
15434 return gdb::array_view<variant_part> (result, n);
15437 /* Compute the variant part vector for FIP, attaching it to TYPE when
15441 add_variant_property (struct field_info *fip, struct type *type,
15442 struct dwarf2_cu *cu)
15444 /* Map section offsets of fields to their field index. Note the
15445 field index here does not take the number of baseclasses into
15447 offset_map_type offset_map;
15448 for (int i = 0; i < fip->fields.size (); ++i)
15449 offset_map[fip->fields[i].offset] = i;
15451 struct objfile *objfile = cu->per_objfile->objfile;
15452 gdb::array_view<variant_part> parts
15453 = create_variant_parts (&objfile->objfile_obstack, offset_map, fip,
15454 fip->variant_parts);
15456 struct dynamic_prop prop;
15457 prop.set_variant_parts ((gdb::array_view<variant_part> *)
15458 obstack_copy (&objfile->objfile_obstack, &parts,
15461 type->add_dyn_prop (DYN_PROP_VARIANT_PARTS, prop);
15464 /* Create the vector of fields, and attach it to the type. */
15467 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15468 struct dwarf2_cu *cu)
15470 int nfields = fip->nfields ();
15472 /* Record the field count, allocate space for the array of fields,
15473 and create blank accessibility bitfields if necessary. */
15474 type->set_num_fields (nfields);
15476 ((struct field *) TYPE_ZALLOC (type, sizeof (struct field) * nfields));
15478 if (fip->non_public_fields && cu->language != language_ada)
15480 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15482 TYPE_FIELD_PRIVATE_BITS (type) =
15483 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15484 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15486 TYPE_FIELD_PROTECTED_BITS (type) =
15487 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15488 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15490 TYPE_FIELD_IGNORE_BITS (type) =
15491 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15492 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15495 /* If the type has baseclasses, allocate and clear a bit vector for
15496 TYPE_FIELD_VIRTUAL_BITS. */
15497 if (!fip->baseclasses.empty () && cu->language != language_ada)
15499 int num_bytes = B_BYTES (fip->baseclasses.size ());
15500 unsigned char *pointer;
15502 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15503 pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15504 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15505 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15506 TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15509 if (!fip->variant_parts.empty ())
15510 add_variant_property (fip, type, cu);
15512 /* Copy the saved-up fields into the field vector. */
15513 for (int i = 0; i < nfields; ++i)
15515 struct nextfield &field
15516 = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15517 : fip->fields[i - fip->baseclasses.size ()]);
15519 type->field (i) = field.field;
15520 switch (field.accessibility)
15522 case DW_ACCESS_private:
15523 if (cu->language != language_ada)
15524 SET_TYPE_FIELD_PRIVATE (type, i);
15527 case DW_ACCESS_protected:
15528 if (cu->language != language_ada)
15529 SET_TYPE_FIELD_PROTECTED (type, i);
15532 case DW_ACCESS_public:
15536 /* Unknown accessibility. Complain and treat it as public. */
15538 complaint (_("unsupported accessibility %d"),
15539 field.accessibility);
15543 if (i < fip->baseclasses.size ())
15545 switch (field.virtuality)
15547 case DW_VIRTUALITY_virtual:
15548 case DW_VIRTUALITY_pure_virtual:
15549 if (cu->language == language_ada)
15550 error (_("unexpected virtuality in component of Ada type"));
15551 SET_TYPE_FIELD_VIRTUAL (type, i);
15558 /* Return true if this member function is a constructor, false
15562 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15564 const char *fieldname;
15565 const char *type_name;
15568 if (die->parent == NULL)
15571 if (die->parent->tag != DW_TAG_structure_type
15572 && die->parent->tag != DW_TAG_union_type
15573 && die->parent->tag != DW_TAG_class_type)
15576 fieldname = dwarf2_name (die, cu);
15577 type_name = dwarf2_name (die->parent, cu);
15578 if (fieldname == NULL || type_name == NULL)
15581 len = strlen (fieldname);
15582 return (strncmp (fieldname, type_name, len) == 0
15583 && (type_name[len] == '\0' || type_name[len] == '<'));
15586 /* Add a member function to the proper fieldlist. */
15589 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15590 struct type *type, struct dwarf2_cu *cu)
15592 struct objfile *objfile = cu->per_objfile->objfile;
15593 struct attribute *attr;
15595 struct fnfieldlist *flp = nullptr;
15596 struct fn_field *fnp;
15597 const char *fieldname;
15598 struct type *this_type;
15600 if (cu->language == language_ada)
15601 error (_("unexpected member function in Ada type"));
15603 /* Get name of member function. */
15604 fieldname = dwarf2_name (die, cu);
15605 if (fieldname == NULL)
15608 /* Look up member function name in fieldlist. */
15609 for (i = 0; i < fip->fnfieldlists.size (); i++)
15611 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15613 flp = &fip->fnfieldlists[i];
15618 /* Create a new fnfieldlist if necessary. */
15619 if (flp == nullptr)
15621 fip->fnfieldlists.emplace_back ();
15622 flp = &fip->fnfieldlists.back ();
15623 flp->name = fieldname;
15624 i = fip->fnfieldlists.size () - 1;
15627 /* Create a new member function field and add it to the vector of
15629 flp->fnfields.emplace_back ();
15630 fnp = &flp->fnfields.back ();
15632 /* Delay processing of the physname until later. */
15633 if (cu->language == language_cplus)
15634 add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15638 const char *physname = dwarf2_physname (fieldname, die, cu);
15639 fnp->physname = physname ? physname : "";
15642 fnp->type = alloc_type (objfile);
15643 this_type = read_type_die (die, cu);
15644 if (this_type && this_type->code () == TYPE_CODE_FUNC)
15646 int nparams = this_type->num_fields ();
15648 /* TYPE is the domain of this method, and THIS_TYPE is the type
15649 of the method itself (TYPE_CODE_METHOD). */
15650 smash_to_method_type (fnp->type, type,
15651 TYPE_TARGET_TYPE (this_type),
15652 this_type->fields (),
15653 this_type->num_fields (),
15654 this_type->has_varargs ());
15656 /* Handle static member functions.
15657 Dwarf2 has no clean way to discern C++ static and non-static
15658 member functions. G++ helps GDB by marking the first
15659 parameter for non-static member functions (which is the this
15660 pointer) as artificial. We obtain this information from
15661 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
15662 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15663 fnp->voffset = VOFFSET_STATIC;
15666 complaint (_("member function type missing for '%s'"),
15667 dwarf2_full_name (fieldname, die, cu));
15669 /* Get fcontext from DW_AT_containing_type if present. */
15670 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15671 fnp->fcontext = die_containing_type (die, cu);
15673 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15674 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
15676 /* Get accessibility. */
15677 dwarf_access_attribute accessibility = dwarf2_access_attribute (die, cu);
15678 switch (accessibility)
15680 case DW_ACCESS_private:
15681 fnp->is_private = 1;
15683 case DW_ACCESS_protected:
15684 fnp->is_protected = 1;
15688 /* Check for artificial methods. */
15689 attr = dwarf2_attr (die, DW_AT_artificial, cu);
15690 if (attr && attr->as_boolean ())
15691 fnp->is_artificial = 1;
15693 /* Check for defaulted methods. */
15694 attr = dwarf2_attr (die, DW_AT_defaulted, cu);
15695 if (attr != nullptr)
15696 fnp->defaulted = attr->defaulted ();
15698 /* Check for deleted methods. */
15699 attr = dwarf2_attr (die, DW_AT_deleted, cu);
15700 if (attr != nullptr && attr->as_boolean ())
15701 fnp->is_deleted = 1;
15703 fnp->is_constructor = dwarf2_is_constructor (die, cu);
15705 /* Get index in virtual function table if it is a virtual member
15706 function. For older versions of GCC, this is an offset in the
15707 appropriate virtual table, as specified by DW_AT_containing_type.
15708 For everyone else, it is an expression to be evaluated relative
15709 to the object address. */
15711 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15712 if (attr != nullptr)
15714 if (attr->form_is_block () && attr->as_block ()->size > 0)
15716 struct dwarf_block *block = attr->as_block ();
15718 if (block->data[0] == DW_OP_constu)
15720 /* Old-style GCC. */
15721 fnp->voffset = decode_locdesc (block, cu) + 2;
15723 else if (block->data[0] == DW_OP_deref
15724 || (block->size > 1
15725 && block->data[0] == DW_OP_deref_size
15726 && block->data[1] == cu->header.addr_size))
15728 fnp->voffset = decode_locdesc (block, cu);
15729 if ((fnp->voffset % cu->header.addr_size) != 0)
15730 dwarf2_complex_location_expr_complaint ();
15732 fnp->voffset /= cu->header.addr_size;
15736 dwarf2_complex_location_expr_complaint ();
15738 if (!fnp->fcontext)
15740 /* If there is no `this' field and no DW_AT_containing_type,
15741 we cannot actually find a base class context for the
15743 if (this_type->num_fields () == 0
15744 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15746 complaint (_("cannot determine context for virtual member "
15747 "function \"%s\" (offset %s)"),
15748 fieldname, sect_offset_str (die->sect_off));
15753 = TYPE_TARGET_TYPE (this_type->field (0).type ());
15757 else if (attr->form_is_section_offset ())
15759 dwarf2_complex_location_expr_complaint ();
15763 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15769 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15770 if (attr != nullptr && attr->as_virtuality () != DW_VIRTUALITY_none)
15772 /* GCC does this, as of 2008-08-25; PR debug/37237. */
15773 complaint (_("Member function \"%s\" (offset %s) is virtual "
15774 "but the vtable offset is not specified"),
15775 fieldname, sect_offset_str (die->sect_off));
15776 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15777 TYPE_CPLUS_DYNAMIC (type) = 1;
15782 /* Create the vector of member function fields, and attach it to the type. */
15785 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15786 struct dwarf2_cu *cu)
15788 if (cu->language == language_ada)
15789 error (_("unexpected member functions in Ada type"));
15791 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15792 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15794 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15796 for (int i = 0; i < fip->fnfieldlists.size (); i++)
15798 struct fnfieldlist &nf = fip->fnfieldlists[i];
15799 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15801 TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15802 TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15803 fn_flp->fn_fields = (struct fn_field *)
15804 TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15806 for (int k = 0; k < nf.fnfields.size (); ++k)
15807 fn_flp->fn_fields[k] = nf.fnfields[k];
15810 TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15813 /* Returns non-zero if NAME is the name of a vtable member in CU's
15814 language, zero otherwise. */
15816 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15818 static const char vptr[] = "_vptr";
15820 /* Look for the C++ form of the vtable. */
15821 if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15827 /* GCC outputs unnamed structures that are really pointers to member
15828 functions, with the ABI-specified layout. If TYPE describes
15829 such a structure, smash it into a member function type.
15831 GCC shouldn't do this; it should just output pointer to member DIEs.
15832 This is GCC PR debug/28767. */
15835 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15837 struct type *pfn_type, *self_type, *new_type;
15839 /* Check for a structure with no name and two children. */
15840 if (type->code () != TYPE_CODE_STRUCT || type->num_fields () != 2)
15843 /* Check for __pfn and __delta members. */
15844 if (TYPE_FIELD_NAME (type, 0) == NULL
15845 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15846 || TYPE_FIELD_NAME (type, 1) == NULL
15847 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15850 /* Find the type of the method. */
15851 pfn_type = type->field (0).type ();
15852 if (pfn_type == NULL
15853 || pfn_type->code () != TYPE_CODE_PTR
15854 || TYPE_TARGET_TYPE (pfn_type)->code () != TYPE_CODE_FUNC)
15857 /* Look for the "this" argument. */
15858 pfn_type = TYPE_TARGET_TYPE (pfn_type);
15859 if (pfn_type->num_fields () == 0
15860 /* || pfn_type->field (0).type () == NULL */
15861 || pfn_type->field (0).type ()->code () != TYPE_CODE_PTR)
15864 self_type = TYPE_TARGET_TYPE (pfn_type->field (0).type ());
15865 new_type = alloc_type (objfile);
15866 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15867 pfn_type->fields (), pfn_type->num_fields (),
15868 pfn_type->has_varargs ());
15869 smash_to_methodptr_type (type, new_type);
15872 /* Helper for quirk_ada_thick_pointer. If TYPE is an array type that
15873 requires rewriting, then copy it and return the updated copy.
15874 Otherwise return nullptr. */
15876 static struct type *
15877 rewrite_array_type (struct type *type)
15879 if (type->code () != TYPE_CODE_ARRAY)
15882 struct type *index_type = type->index_type ();
15883 range_bounds *current_bounds = index_type->bounds ();
15885 /* Handle multi-dimensional arrays. */
15886 struct type *new_target = rewrite_array_type (TYPE_TARGET_TYPE (type));
15887 if (new_target == nullptr)
15889 /* Maybe we don't need to rewrite this array. */
15890 if (current_bounds->low.kind () == PROP_CONST
15891 && current_bounds->high.kind () == PROP_CONST)
15895 /* Either the target type was rewritten, or the bounds have to be
15896 updated. Either way we want to copy the type and update
15898 struct type *copy = copy_type (type);
15899 int nfields = copy->num_fields ();
15901 = ((struct field *) TYPE_ZALLOC (copy,
15902 nfields * sizeof (struct field)));
15903 memcpy (new_fields, copy->fields (), nfields * sizeof (struct field));
15904 copy->set_fields (new_fields);
15905 if (new_target != nullptr)
15906 TYPE_TARGET_TYPE (copy) = new_target;
15908 struct type *index_copy = copy_type (index_type);
15909 range_bounds *bounds
15910 = (struct range_bounds *) TYPE_ZALLOC (index_copy,
15911 sizeof (range_bounds));
15912 *bounds = *current_bounds;
15913 bounds->low.set_const_val (1);
15914 bounds->high.set_const_val (0);
15915 index_copy->set_bounds (bounds);
15916 copy->set_index_type (index_copy);
15921 /* While some versions of GCC will generate complicated DWARF for an
15922 array (see quirk_ada_thick_pointer), more recent versions were
15923 modified to emit an explicit thick pointer structure. However, in
15924 this case, the array still has DWARF expressions for its ranges,
15925 and these must be ignored. */
15928 quirk_ada_thick_pointer_struct (struct die_info *die, struct dwarf2_cu *cu,
15931 gdb_assert (cu->language == language_ada);
15933 /* Check for a structure with two children. */
15934 if (type->code () != TYPE_CODE_STRUCT || type->num_fields () != 2)
15937 /* Check for P_ARRAY and P_BOUNDS members. */
15938 if (TYPE_FIELD_NAME (type, 0) == NULL
15939 || strcmp (TYPE_FIELD_NAME (type, 0), "P_ARRAY") != 0
15940 || TYPE_FIELD_NAME (type, 1) == NULL
15941 || strcmp (TYPE_FIELD_NAME (type, 1), "P_BOUNDS") != 0)
15944 /* Make sure we're looking at a pointer to an array. */
15945 if (type->field (0).type ()->code () != TYPE_CODE_PTR)
15948 /* The Ada code already knows how to handle these types, so all that
15949 we need to do is turn the bounds into static bounds. However, we
15950 don't want to rewrite existing array or index types in-place,
15951 because those may be referenced in other contexts where this
15952 rewriting is undesirable. */
15953 struct type *new_ary_type
15954 = rewrite_array_type (TYPE_TARGET_TYPE (type->field (0).type ()));
15955 if (new_ary_type != nullptr)
15956 type->field (0).set_type (lookup_pointer_type (new_ary_type));
15959 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15960 appropriate error checking and issuing complaints if there is a
15964 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15966 struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15968 if (attr == nullptr)
15971 if (!attr->form_is_constant ())
15973 complaint (_("DW_AT_alignment must have constant form"
15974 " - DIE at %s [in module %s]"),
15975 sect_offset_str (die->sect_off),
15976 objfile_name (cu->per_objfile->objfile));
15980 LONGEST val = attr->constant_value (0);
15983 complaint (_("DW_AT_alignment value must not be negative"
15984 " - DIE at %s [in module %s]"),
15985 sect_offset_str (die->sect_off),
15986 objfile_name (cu->per_objfile->objfile));
15989 ULONGEST align = val;
15993 complaint (_("DW_AT_alignment value must not be zero"
15994 " - DIE at %s [in module %s]"),
15995 sect_offset_str (die->sect_off),
15996 objfile_name (cu->per_objfile->objfile));
15999 if ((align & (align - 1)) != 0)
16001 complaint (_("DW_AT_alignment value must be a power of 2"
16002 " - DIE at %s [in module %s]"),
16003 sect_offset_str (die->sect_off),
16004 objfile_name (cu->per_objfile->objfile));
16011 /* If the DIE has a DW_AT_alignment attribute, use its value to set
16012 the alignment for TYPE. */
16015 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
16018 if (!set_type_align (type, get_alignment (cu, die)))
16019 complaint (_("DW_AT_alignment value too large"
16020 " - DIE at %s [in module %s]"),
16021 sect_offset_str (die->sect_off),
16022 objfile_name (cu->per_objfile->objfile));
16025 /* Check if the given VALUE is a valid enum dwarf_calling_convention
16026 constant for a type, according to DWARF5 spec, Table 5.5. */
16029 is_valid_DW_AT_calling_convention_for_type (ULONGEST value)
16034 case DW_CC_pass_by_reference:
16035 case DW_CC_pass_by_value:
16039 complaint (_("unrecognized DW_AT_calling_convention value "
16040 "(%s) for a type"), pulongest (value));
16045 /* Check if the given VALUE is a valid enum dwarf_calling_convention
16046 constant for a subroutine, according to DWARF5 spec, Table 3.3, and
16047 also according to GNU-specific values (see include/dwarf2.h). */
16050 is_valid_DW_AT_calling_convention_for_subroutine (ULONGEST value)
16055 case DW_CC_program:
16059 case DW_CC_GNU_renesas_sh:
16060 case DW_CC_GNU_borland_fastcall_i386:
16061 case DW_CC_GDB_IBM_OpenCL:
16065 complaint (_("unrecognized DW_AT_calling_convention value "
16066 "(%s) for a subroutine"), pulongest (value));
16071 /* Called when we find the DIE that starts a structure or union scope
16072 (definition) to create a type for the structure or union. Fill in
16073 the type's name and general properties; the members will not be
16074 processed until process_structure_scope. A symbol table entry for
16075 the type will also not be done until process_structure_scope (assuming
16076 the type has a name).
16078 NOTE: we need to call these functions regardless of whether or not the
16079 DIE has a DW_AT_name attribute, since it might be an anonymous
16080 structure or union. This gets the type entered into our set of
16081 user defined types. */
16083 static struct type *
16084 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
16086 struct objfile *objfile = cu->per_objfile->objfile;
16088 struct attribute *attr;
16091 /* If the definition of this type lives in .debug_types, read that type.
16092 Don't follow DW_AT_specification though, that will take us back up
16093 the chain and we want to go down. */
16094 attr = die->attr (DW_AT_signature);
16095 if (attr != nullptr)
16097 type = get_DW_AT_signature_type (die, attr, cu);
16099 /* The type's CU may not be the same as CU.
16100 Ensure TYPE is recorded with CU in die_type_hash. */
16101 return set_die_type (die, type, cu);
16104 type = alloc_type (objfile);
16105 INIT_CPLUS_SPECIFIC (type);
16107 name = dwarf2_name (die, cu);
16110 if (cu->language == language_cplus
16111 || cu->language == language_d
16112 || cu->language == language_rust)
16114 const char *full_name = dwarf2_full_name (name, die, cu);
16116 /* dwarf2_full_name might have already finished building the DIE's
16117 type. If so, there is no need to continue. */
16118 if (get_die_type (die, cu) != NULL)
16119 return get_die_type (die, cu);
16121 type->set_name (full_name);
16125 /* The name is already allocated along with this objfile, so
16126 we don't need to duplicate it for the type. */
16127 type->set_name (name);
16131 if (die->tag == DW_TAG_structure_type)
16133 type->set_code (TYPE_CODE_STRUCT);
16135 else if (die->tag == DW_TAG_union_type)
16137 type->set_code (TYPE_CODE_UNION);
16141 type->set_code (TYPE_CODE_STRUCT);
16144 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
16145 TYPE_DECLARED_CLASS (type) = 1;
16147 /* Store the calling convention in the type if it's available in
16148 the die. Otherwise the calling convention remains set to
16149 the default value DW_CC_normal. */
16150 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
16151 if (attr != nullptr
16152 && is_valid_DW_AT_calling_convention_for_type (attr->constant_value (0)))
16154 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16155 TYPE_CPLUS_CALLING_CONVENTION (type)
16156 = (enum dwarf_calling_convention) (attr->constant_value (0));
16159 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16160 if (attr != nullptr)
16162 if (attr->form_is_constant ())
16163 TYPE_LENGTH (type) = attr->constant_value (0);
16166 struct dynamic_prop prop;
16167 if (attr_to_dynamic_prop (attr, die, cu, &prop, cu->addr_type ()))
16168 type->add_dyn_prop (DYN_PROP_BYTE_SIZE, prop);
16169 TYPE_LENGTH (type) = 0;
16174 TYPE_LENGTH (type) = 0;
16177 maybe_set_alignment (cu, die, type);
16179 if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
16181 /* ICC<14 does not output the required DW_AT_declaration on
16182 incomplete types, but gives them a size of zero. */
16183 type->set_is_stub (true);
16186 type->set_stub_is_supported (true);
16188 if (die_is_declaration (die, cu))
16189 type->set_is_stub (true);
16190 else if (attr == NULL && die->child == NULL
16191 && producer_is_realview (cu->producer))
16192 /* RealView does not output the required DW_AT_declaration
16193 on incomplete types. */
16194 type->set_is_stub (true);
16196 /* We need to add the type field to the die immediately so we don't
16197 infinitely recurse when dealing with pointers to the structure
16198 type within the structure itself. */
16199 set_die_type (die, type, cu);
16201 /* set_die_type should be already done. */
16202 set_descriptive_type (type, die, cu);
16207 static void handle_struct_member_die
16208 (struct die_info *child_die,
16210 struct field_info *fi,
16211 std::vector<struct symbol *> *template_args,
16212 struct dwarf2_cu *cu);
16214 /* A helper for handle_struct_member_die that handles
16215 DW_TAG_variant_part. */
16218 handle_variant_part (struct die_info *die, struct type *type,
16219 struct field_info *fi,
16220 std::vector<struct symbol *> *template_args,
16221 struct dwarf2_cu *cu)
16223 variant_part_builder *new_part;
16224 if (fi->current_variant_part == nullptr)
16226 fi->variant_parts.emplace_back ();
16227 new_part = &fi->variant_parts.back ();
16229 else if (!fi->current_variant_part->processing_variant)
16231 complaint (_("nested DW_TAG_variant_part seen "
16232 "- DIE at %s [in module %s]"),
16233 sect_offset_str (die->sect_off),
16234 objfile_name (cu->per_objfile->objfile));
16239 variant_field ¤t = fi->current_variant_part->variants.back ();
16240 current.variant_parts.emplace_back ();
16241 new_part = ¤t.variant_parts.back ();
16244 /* When we recurse, we want callees to add to this new variant
16246 scoped_restore save_current_variant_part
16247 = make_scoped_restore (&fi->current_variant_part, new_part);
16249 struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16252 /* It's a univariant form, an extension we support. */
16254 else if (discr->form_is_ref ())
16256 struct dwarf2_cu *target_cu = cu;
16257 struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16259 new_part->discriminant_offset = target_die->sect_off;
16263 complaint (_("DW_AT_discr does not have DIE reference form"
16264 " - DIE at %s [in module %s]"),
16265 sect_offset_str (die->sect_off),
16266 objfile_name (cu->per_objfile->objfile));
16269 for (die_info *child_die = die->child;
16271 child_die = child_die->sibling)
16272 handle_struct_member_die (child_die, type, fi, template_args, cu);
16275 /* A helper for handle_struct_member_die that handles
16279 handle_variant (struct die_info *die, struct type *type,
16280 struct field_info *fi,
16281 std::vector<struct symbol *> *template_args,
16282 struct dwarf2_cu *cu)
16284 if (fi->current_variant_part == nullptr)
16286 complaint (_("saw DW_TAG_variant outside DW_TAG_variant_part "
16287 "- DIE at %s [in module %s]"),
16288 sect_offset_str (die->sect_off),
16289 objfile_name (cu->per_objfile->objfile));
16292 if (fi->current_variant_part->processing_variant)
16294 complaint (_("nested DW_TAG_variant seen "
16295 "- DIE at %s [in module %s]"),
16296 sect_offset_str (die->sect_off),
16297 objfile_name (cu->per_objfile->objfile));
16301 scoped_restore save_processing_variant
16302 = make_scoped_restore (&fi->current_variant_part->processing_variant,
16305 fi->current_variant_part->variants.emplace_back ();
16306 variant_field &variant = fi->current_variant_part->variants.back ();
16307 variant.first_field = fi->fields.size ();
16309 /* In a variant we want to get the discriminant and also add a
16310 field for our sole member child. */
16311 struct attribute *discr = dwarf2_attr (die, DW_AT_discr_value, cu);
16312 if (discr == nullptr || !discr->form_is_constant ())
16314 discr = dwarf2_attr (die, DW_AT_discr_list, cu);
16315 if (discr == nullptr || discr->as_block ()->size == 0)
16316 variant.default_branch = true;
16318 variant.discr_list_data = discr->as_block ();
16321 variant.discriminant_value = discr->constant_value (0);
16323 for (die_info *variant_child = die->child;
16324 variant_child != NULL;
16325 variant_child = variant_child->sibling)
16326 handle_struct_member_die (variant_child, type, fi, template_args, cu);
16328 variant.last_field = fi->fields.size ();
16331 /* A helper for process_structure_scope that handles a single member
16335 handle_struct_member_die (struct die_info *child_die, struct type *type,
16336 struct field_info *fi,
16337 std::vector<struct symbol *> *template_args,
16338 struct dwarf2_cu *cu)
16340 if (child_die->tag == DW_TAG_member
16341 || child_die->tag == DW_TAG_variable)
16343 /* NOTE: carlton/2002-11-05: A C++ static data member
16344 should be a DW_TAG_member that is a declaration, but
16345 all versions of G++ as of this writing (so through at
16346 least 3.2.1) incorrectly generate DW_TAG_variable
16347 tags for them instead. */
16348 dwarf2_add_field (fi, child_die, cu);
16350 else if (child_die->tag == DW_TAG_subprogram)
16352 /* Rust doesn't have member functions in the C++ sense.
16353 However, it does emit ordinary functions as children
16354 of a struct DIE. */
16355 if (cu->language == language_rust)
16356 read_func_scope (child_die, cu);
16359 /* C++ member function. */
16360 dwarf2_add_member_fn (fi, child_die, type, cu);
16363 else if (child_die->tag == DW_TAG_inheritance)
16365 /* C++ base class field. */
16366 dwarf2_add_field (fi, child_die, cu);
16368 else if (type_can_define_types (child_die))
16369 dwarf2_add_type_defn (fi, child_die, cu);
16370 else if (child_die->tag == DW_TAG_template_type_param
16371 || child_die->tag == DW_TAG_template_value_param)
16373 struct symbol *arg = new_symbol (child_die, NULL, cu);
16376 template_args->push_back (arg);
16378 else if (child_die->tag == DW_TAG_variant_part)
16379 handle_variant_part (child_die, type, fi, template_args, cu);
16380 else if (child_die->tag == DW_TAG_variant)
16381 handle_variant (child_die, type, fi, template_args, cu);
16384 /* Finish creating a structure or union type, including filling in
16385 its members and creating a symbol for it. */
16388 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
16390 struct objfile *objfile = cu->per_objfile->objfile;
16391 struct die_info *child_die;
16394 type = get_die_type (die, cu);
16396 type = read_structure_type (die, cu);
16398 bool has_template_parameters = false;
16399 if (die->child != NULL && ! die_is_declaration (die, cu))
16401 struct field_info fi;
16402 std::vector<struct symbol *> template_args;
16404 child_die = die->child;
16406 while (child_die && child_die->tag)
16408 handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16409 child_die = child_die->sibling;
16412 /* Attach template arguments to type. */
16413 if (!template_args.empty ())
16415 has_template_parameters = true;
16416 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16417 TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16418 TYPE_TEMPLATE_ARGUMENTS (type)
16419 = XOBNEWVEC (&objfile->objfile_obstack,
16421 TYPE_N_TEMPLATE_ARGUMENTS (type));
16422 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16423 template_args.data (),
16424 (TYPE_N_TEMPLATE_ARGUMENTS (type)
16425 * sizeof (struct symbol *)));
16428 /* Attach fields and member functions to the type. */
16429 if (fi.nfields () > 0)
16430 dwarf2_attach_fields_to_type (&fi, type, cu);
16431 if (!fi.fnfieldlists.empty ())
16433 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16435 /* Get the type which refers to the base class (possibly this
16436 class itself) which contains the vtable pointer for the current
16437 class from the DW_AT_containing_type attribute. This use of
16438 DW_AT_containing_type is a GNU extension. */
16440 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16442 struct type *t = die_containing_type (die, cu);
16444 set_type_vptr_basetype (type, t);
16449 /* Our own class provides vtbl ptr. */
16450 for (i = t->num_fields () - 1;
16451 i >= TYPE_N_BASECLASSES (t);
16454 const char *fieldname = TYPE_FIELD_NAME (t, i);
16456 if (is_vtable_name (fieldname, cu))
16458 set_type_vptr_fieldno (type, i);
16463 /* Complain if virtual function table field not found. */
16464 if (i < TYPE_N_BASECLASSES (t))
16465 complaint (_("virtual function table pointer "
16466 "not found when defining class '%s'"),
16467 type->name () ? type->name () : "");
16471 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16474 else if (cu->producer
16475 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16477 /* The IBM XLC compiler does not provide direct indication
16478 of the containing type, but the vtable pointer is
16479 always named __vfp. */
16483 for (i = type->num_fields () - 1;
16484 i >= TYPE_N_BASECLASSES (type);
16487 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16489 set_type_vptr_fieldno (type, i);
16490 set_type_vptr_basetype (type, type);
16497 /* Copy fi.typedef_field_list linked list elements content into the
16498 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
16499 if (!fi.typedef_field_list.empty ())
16501 int count = fi.typedef_field_list.size ();
16503 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16504 TYPE_TYPEDEF_FIELD_ARRAY (type)
16505 = ((struct decl_field *)
16507 sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16508 TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16510 for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16511 TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16514 /* Copy fi.nested_types_list linked list elements content into the
16515 allocated array TYPE_NESTED_TYPES_ARRAY (type). */
16516 if (!fi.nested_types_list.empty () && cu->language != language_ada)
16518 int count = fi.nested_types_list.size ();
16520 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16521 TYPE_NESTED_TYPES_ARRAY (type)
16522 = ((struct decl_field *)
16523 TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16524 TYPE_NESTED_TYPES_COUNT (type) = count;
16526 for (int i = 0; i < fi.nested_types_list.size (); ++i)
16527 TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16531 quirk_gcc_member_function_pointer (type, objfile);
16532 if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16533 cu->rust_unions.push_back (type);
16534 else if (cu->language == language_ada)
16535 quirk_ada_thick_pointer_struct (die, cu, type);
16537 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16538 snapshots) has been known to create a die giving a declaration
16539 for a class that has, as a child, a die giving a definition for a
16540 nested class. So we have to process our children even if the
16541 current die is a declaration. Normally, of course, a declaration
16542 won't have any children at all. */
16544 child_die = die->child;
16546 while (child_die != NULL && child_die->tag)
16548 if (child_die->tag == DW_TAG_member
16549 || child_die->tag == DW_TAG_variable
16550 || child_die->tag == DW_TAG_inheritance
16551 || child_die->tag == DW_TAG_template_value_param
16552 || child_die->tag == DW_TAG_template_type_param)
16557 process_die (child_die, cu);
16559 child_die = child_die->sibling;
16562 /* Do not consider external references. According to the DWARF standard,
16563 these DIEs are identified by the fact that they have no byte_size
16564 attribute, and a declaration attribute. */
16565 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16566 || !die_is_declaration (die, cu)
16567 || dwarf2_attr (die, DW_AT_signature, cu) != NULL)
16569 struct symbol *sym = new_symbol (die, type, cu);
16571 if (has_template_parameters)
16573 struct symtab *symtab;
16574 if (sym != nullptr)
16575 symtab = symbol_symtab (sym);
16576 else if (cu->line_header != nullptr)
16578 /* Any related symtab will do. */
16580 = cu->line_header->file_names ()[0].symtab;
16585 complaint (_("could not find suitable "
16586 "symtab for template parameter"
16587 " - DIE at %s [in module %s]"),
16588 sect_offset_str (die->sect_off),
16589 objfile_name (objfile));
16592 if (symtab != nullptr)
16594 /* Make sure that the symtab is set on the new symbols.
16595 Even though they don't appear in this symtab directly,
16596 other parts of gdb assume that symbols do, and this is
16597 reasonably true. */
16598 for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16599 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
16605 /* Assuming DIE is an enumeration type, and TYPE is its associated
16606 type, update TYPE using some information only available in DIE's
16607 children. In particular, the fields are computed. */
16610 update_enumeration_type_from_children (struct die_info *die,
16612 struct dwarf2_cu *cu)
16614 struct die_info *child_die;
16615 int unsigned_enum = 1;
16618 auto_obstack obstack;
16619 std::vector<struct field> fields;
16621 for (child_die = die->child;
16622 child_die != NULL && child_die->tag;
16623 child_die = child_die->sibling)
16625 struct attribute *attr;
16627 const gdb_byte *bytes;
16628 struct dwarf2_locexpr_baton *baton;
16631 if (child_die->tag != DW_TAG_enumerator)
16634 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16638 name = dwarf2_name (child_die, cu);
16640 name = "<anonymous enumerator>";
16642 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16643 &value, &bytes, &baton);
16651 if (count_one_bits_ll (value) >= 2)
16655 fields.emplace_back ();
16656 struct field &field = fields.back ();
16657 FIELD_NAME (field) = dwarf2_physname (name, child_die, cu);
16658 SET_FIELD_ENUMVAL (field, value);
16661 if (!fields.empty ())
16663 type->set_num_fields (fields.size ());
16666 TYPE_ALLOC (type, sizeof (struct field) * fields.size ()));
16667 memcpy (type->fields (), fields.data (),
16668 sizeof (struct field) * fields.size ());
16672 type->set_is_unsigned (true);
16675 TYPE_FLAG_ENUM (type) = 1;
16678 /* Given a DW_AT_enumeration_type die, set its type. We do not
16679 complete the type's fields yet, or create any symbols. */
16681 static struct type *
16682 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16684 struct objfile *objfile = cu->per_objfile->objfile;
16686 struct attribute *attr;
16689 /* If the definition of this type lives in .debug_types, read that type.
16690 Don't follow DW_AT_specification though, that will take us back up
16691 the chain and we want to go down. */
16692 attr = die->attr (DW_AT_signature);
16693 if (attr != nullptr)
16695 type = get_DW_AT_signature_type (die, attr, cu);
16697 /* The type's CU may not be the same as CU.
16698 Ensure TYPE is recorded with CU in die_type_hash. */
16699 return set_die_type (die, type, cu);
16702 type = alloc_type (objfile);
16704 type->set_code (TYPE_CODE_ENUM);
16705 name = dwarf2_full_name (NULL, die, cu);
16707 type->set_name (name);
16709 attr = dwarf2_attr (die, DW_AT_type, cu);
16712 struct type *underlying_type = die_type (die, cu);
16714 TYPE_TARGET_TYPE (type) = underlying_type;
16717 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16718 if (attr != nullptr)
16720 TYPE_LENGTH (type) = attr->constant_value (0);
16724 TYPE_LENGTH (type) = 0;
16727 maybe_set_alignment (cu, die, type);
16729 /* The enumeration DIE can be incomplete. In Ada, any type can be
16730 declared as private in the package spec, and then defined only
16731 inside the package body. Such types are known as Taft Amendment
16732 Types. When another package uses such a type, an incomplete DIE
16733 may be generated by the compiler. */
16734 if (die_is_declaration (die, cu))
16735 type->set_is_stub (true);
16737 /* If this type has an underlying type that is not a stub, then we
16738 may use its attributes. We always use the "unsigned" attribute
16739 in this situation, because ordinarily we guess whether the type
16740 is unsigned -- but the guess can be wrong and the underlying type
16741 can tell us the reality. However, we defer to a local size
16742 attribute if one exists, because this lets the compiler override
16743 the underlying type if needed. */
16744 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_TARGET_TYPE (type)->is_stub ())
16746 struct type *underlying_type = TYPE_TARGET_TYPE (type);
16747 underlying_type = check_typedef (underlying_type);
16749 type->set_is_unsigned (underlying_type->is_unsigned ());
16751 if (TYPE_LENGTH (type) == 0)
16752 TYPE_LENGTH (type) = TYPE_LENGTH (underlying_type);
16754 if (TYPE_RAW_ALIGN (type) == 0
16755 && TYPE_RAW_ALIGN (underlying_type) != 0)
16756 set_type_align (type, TYPE_RAW_ALIGN (underlying_type));
16759 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16761 set_die_type (die, type, cu);
16763 /* Finish the creation of this type by using the enum's children.
16764 Note that, as usual, this must come after set_die_type to avoid
16765 infinite recursion when trying to compute the names of the
16767 update_enumeration_type_from_children (die, type, cu);
16772 /* Given a pointer to a die which begins an enumeration, process all
16773 the dies that define the members of the enumeration, and create the
16774 symbol for the enumeration type.
16776 NOTE: We reverse the order of the element list. */
16779 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16781 struct type *this_type;
16783 this_type = get_die_type (die, cu);
16784 if (this_type == NULL)
16785 this_type = read_enumeration_type (die, cu);
16787 if (die->child != NULL)
16789 struct die_info *child_die;
16792 child_die = die->child;
16793 while (child_die && child_die->tag)
16795 if (child_die->tag != DW_TAG_enumerator)
16797 process_die (child_die, cu);
16801 name = dwarf2_name (child_die, cu);
16803 new_symbol (child_die, this_type, cu);
16806 child_die = child_die->sibling;
16810 /* If we are reading an enum from a .debug_types unit, and the enum
16811 is a declaration, and the enum is not the signatured type in the
16812 unit, then we do not want to add a symbol for it. Adding a
16813 symbol would in some cases obscure the true definition of the
16814 enum, giving users an incomplete type when the definition is
16815 actually available. Note that we do not want to do this for all
16816 enums which are just declarations, because C++0x allows forward
16817 enum declarations. */
16818 if (cu->per_cu->is_debug_types
16819 && die_is_declaration (die, cu))
16821 struct signatured_type *sig_type;
16823 sig_type = (struct signatured_type *) cu->per_cu;
16824 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16825 if (sig_type->type_offset_in_section != die->sect_off)
16829 new_symbol (die, this_type, cu);
16832 /* Helper function for quirk_ada_thick_pointer that examines a bounds
16833 expression for an index type and finds the corresponding field
16834 offset in the hidden "P_BOUNDS" structure. Returns true on success
16835 and updates *FIELD, false if it fails to recognize an
16839 recognize_bound_expression (struct die_info *die, enum dwarf_attribute name,
16840 int *bounds_offset, struct field *field,
16841 struct dwarf2_cu *cu)
16843 struct attribute *attr = dwarf2_attr (die, name, cu);
16844 if (attr == nullptr || !attr->form_is_block ())
16847 const struct dwarf_block *block = attr->as_block ();
16848 const gdb_byte *start = block->data;
16849 const gdb_byte *end = block->data + block->size;
16851 /* The expression to recognize generally looks like:
16853 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
16854 DW_OP_plus_uconst: 4; DW_OP_deref_size: 4)
16856 However, the second "plus_uconst" may be missing:
16858 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
16859 DW_OP_deref_size: 4)
16861 This happens when the field is at the start of the structure.
16863 Also, the final deref may not be sized:
16865 (DW_OP_push_object_address; DW_OP_plus_uconst: 4; DW_OP_deref;
16868 This happens when the size of the index type happens to be the
16869 same as the architecture's word size. This can occur with or
16870 without the second plus_uconst. */
16872 if (end - start < 2)
16874 if (*start++ != DW_OP_push_object_address)
16876 if (*start++ != DW_OP_plus_uconst)
16879 uint64_t this_bound_off;
16880 start = gdb_read_uleb128 (start, end, &this_bound_off);
16881 if (start == nullptr || (int) this_bound_off != this_bound_off)
16883 /* Update *BOUNDS_OFFSET if needed, or alternatively verify that it
16884 is consistent among all bounds. */
16885 if (*bounds_offset == -1)
16886 *bounds_offset = this_bound_off;
16887 else if (*bounds_offset != this_bound_off)
16890 if (start == end || *start++ != DW_OP_deref)
16896 else if (*start == DW_OP_deref_size || *start == DW_OP_deref)
16898 /* This means an offset of 0. */
16900 else if (*start++ != DW_OP_plus_uconst)
16904 /* The size is the parameter to DW_OP_plus_uconst. */
16906 start = gdb_read_uleb128 (start, end, &val);
16907 if (start == nullptr)
16909 if ((int) val != val)
16918 if (*start == DW_OP_deref_size)
16920 start = gdb_read_uleb128 (start + 1, end, &size);
16921 if (start == nullptr)
16924 else if (*start == DW_OP_deref)
16926 size = cu->header.addr_size;
16932 SET_FIELD_BITPOS (*field, 8 * offset);
16933 if (size != TYPE_LENGTH (field->type ()))
16934 FIELD_BITSIZE (*field) = 8 * size;
16939 /* With -fgnat-encodings=minimal, gcc will emit some unusual DWARF for
16940 some kinds of Ada arrays:
16942 <1><11db>: Abbrev Number: 7 (DW_TAG_array_type)
16943 <11dc> DW_AT_name : (indirect string, offset: 0x1bb8): string
16944 <11e0> DW_AT_data_location: 2 byte block: 97 6
16945 (DW_OP_push_object_address; DW_OP_deref)
16946 <11e3> DW_AT_type : <0x1173>
16947 <11e7> DW_AT_sibling : <0x1201>
16948 <2><11eb>: Abbrev Number: 8 (DW_TAG_subrange_type)
16949 <11ec> DW_AT_type : <0x1206>
16950 <11f0> DW_AT_lower_bound : 6 byte block: 97 23 8 6 94 4
16951 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
16952 DW_OP_deref_size: 4)
16953 <11f7> DW_AT_upper_bound : 8 byte block: 97 23 8 6 23 4 94 4
16954 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
16955 DW_OP_plus_uconst: 4; DW_OP_deref_size: 4)
16957 This actually represents a "thick pointer", which is a structure
16958 with two elements: one that is a pointer to the array data, and one
16959 that is a pointer to another structure; this second structure holds
16962 This returns a new type on success, or nullptr if this didn't
16963 recognize the type. */
16965 static struct type *
16966 quirk_ada_thick_pointer (struct die_info *die, struct dwarf2_cu *cu,
16969 struct attribute *attr = dwarf2_attr (die, DW_AT_data_location, cu);
16970 /* So far we've only seen this with block form. */
16971 if (attr == nullptr || !attr->form_is_block ())
16974 /* Note that this will fail if the structure layout is changed by
16975 the compiler. However, we have no good way to recognize some
16976 other layout, because we don't know what expression the compiler
16977 might choose to emit should this happen. */
16978 struct dwarf_block *blk = attr->as_block ();
16980 || blk->data[0] != DW_OP_push_object_address
16981 || blk->data[1] != DW_OP_deref)
16984 int bounds_offset = -1;
16985 int max_align = -1;
16986 std::vector<struct field> range_fields;
16987 for (struct die_info *child_die = die->child;
16989 child_die = child_die->sibling)
16991 if (child_die->tag == DW_TAG_subrange_type)
16993 struct type *underlying = read_subrange_index_type (child_die, cu);
16995 int this_align = type_align (underlying);
16996 if (this_align > max_align)
16997 max_align = this_align;
16999 range_fields.emplace_back ();
17000 range_fields.emplace_back ();
17002 struct field &lower = range_fields[range_fields.size () - 2];
17003 struct field &upper = range_fields[range_fields.size () - 1];
17005 lower.set_type (underlying);
17006 FIELD_ARTIFICIAL (lower) = 1;
17008 upper.set_type (underlying);
17009 FIELD_ARTIFICIAL (upper) = 1;
17011 if (!recognize_bound_expression (child_die, DW_AT_lower_bound,
17012 &bounds_offset, &lower, cu)
17013 || !recognize_bound_expression (child_die, DW_AT_upper_bound,
17014 &bounds_offset, &upper, cu))
17019 /* This shouldn't really happen, but double-check that we found
17020 where the bounds are stored. */
17021 if (bounds_offset == -1)
17024 struct objfile *objfile = cu->per_objfile->objfile;
17025 for (int i = 0; i < range_fields.size (); i += 2)
17029 /* Set the name of each field in the bounds. */
17030 xsnprintf (name, sizeof (name), "LB%d", i / 2);
17031 FIELD_NAME (range_fields[i]) = objfile->intern (name);
17032 xsnprintf (name, sizeof (name), "UB%d", i / 2);
17033 FIELD_NAME (range_fields[i + 1]) = objfile->intern (name);
17036 struct type *bounds = alloc_type (objfile);
17037 bounds->set_code (TYPE_CODE_STRUCT);
17039 bounds->set_num_fields (range_fields.size ());
17041 ((struct field *) TYPE_ALLOC (bounds, (bounds->num_fields ()
17042 * sizeof (struct field))));
17043 memcpy (bounds->fields (), range_fields.data (),
17044 bounds->num_fields () * sizeof (struct field));
17046 int last_fieldno = range_fields.size () - 1;
17047 int bounds_size = (TYPE_FIELD_BITPOS (bounds, last_fieldno) / 8
17048 + TYPE_LENGTH (bounds->field (last_fieldno).type ()));
17049 TYPE_LENGTH (bounds) = align_up (bounds_size, max_align);
17051 /* Rewrite the existing array type in place. Specifically, we
17052 remove any dynamic properties we might have read, and we replace
17053 the index types. */
17054 struct type *iter = type;
17055 for (int i = 0; i < range_fields.size (); i += 2)
17057 gdb_assert (iter->code () == TYPE_CODE_ARRAY);
17058 iter->main_type->dyn_prop_list = nullptr;
17059 iter->set_index_type
17060 (create_static_range_type (NULL, bounds->field (i).type (), 1, 0));
17061 iter = TYPE_TARGET_TYPE (iter);
17064 struct type *result = alloc_type (objfile);
17065 result->set_code (TYPE_CODE_STRUCT);
17067 result->set_num_fields (2);
17069 ((struct field *) TYPE_ZALLOC (result, (result->num_fields ()
17070 * sizeof (struct field))));
17072 /* The names are chosen to coincide with what the compiler does with
17073 -fgnat-encodings=all, which the Ada code in gdb already
17075 TYPE_FIELD_NAME (result, 0) = "P_ARRAY";
17076 result->field (0).set_type (lookup_pointer_type (type));
17078 TYPE_FIELD_NAME (result, 1) = "P_BOUNDS";
17079 result->field (1).set_type (lookup_pointer_type (bounds));
17080 SET_FIELD_BITPOS (result->field (1), 8 * bounds_offset);
17082 result->set_name (type->name ());
17083 TYPE_LENGTH (result) = (TYPE_LENGTH (result->field (0).type ())
17084 + TYPE_LENGTH (result->field (1).type ()));
17089 /* Extract all information from a DW_TAG_array_type DIE and put it in
17090 the DIE's type field. For now, this only handles one dimensional
17093 static struct type *
17094 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
17096 struct objfile *objfile = cu->per_objfile->objfile;
17097 struct die_info *child_die;
17099 struct type *element_type, *range_type, *index_type;
17100 struct attribute *attr;
17102 struct dynamic_prop *byte_stride_prop = NULL;
17103 unsigned int bit_stride = 0;
17105 element_type = die_type (die, cu);
17107 /* The die_type call above may have already set the type for this DIE. */
17108 type = get_die_type (die, cu);
17112 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
17116 struct type *prop_type = cu->addr_sized_int_type (false);
17119 = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
17120 stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
17124 complaint (_("unable to read array DW_AT_byte_stride "
17125 " - DIE at %s [in module %s]"),
17126 sect_offset_str (die->sect_off),
17127 objfile_name (cu->per_objfile->objfile));
17128 /* Ignore this attribute. We will likely not be able to print
17129 arrays of this type correctly, but there is little we can do
17130 to help if we cannot read the attribute's value. */
17131 byte_stride_prop = NULL;
17135 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
17137 bit_stride = attr->constant_value (0);
17139 /* Irix 6.2 native cc creates array types without children for
17140 arrays with unspecified length. */
17141 if (die->child == NULL)
17143 index_type = objfile_type (objfile)->builtin_int;
17144 range_type = create_static_range_type (NULL, index_type, 0, -1);
17145 type = create_array_type_with_stride (NULL, element_type, range_type,
17146 byte_stride_prop, bit_stride);
17147 return set_die_type (die, type, cu);
17150 std::vector<struct type *> range_types;
17151 child_die = die->child;
17152 while (child_die && child_die->tag)
17154 if (child_die->tag == DW_TAG_subrange_type)
17156 struct type *child_type = read_type_die (child_die, cu);
17158 if (child_type != NULL)
17160 /* The range type was succesfully read. Save it for the
17161 array type creation. */
17162 range_types.push_back (child_type);
17165 child_die = child_die->sibling;
17168 if (range_types.empty ())
17170 complaint (_("unable to find array range - DIE at %s [in module %s]"),
17171 sect_offset_str (die->sect_off),
17172 objfile_name (cu->per_objfile->objfile));
17176 /* Dwarf2 dimensions are output from left to right, create the
17177 necessary array types in backwards order. */
17179 type = element_type;
17181 if (read_array_order (die, cu) == DW_ORD_col_major)
17185 while (i < range_types.size ())
17187 type = create_array_type_with_stride (NULL, type, range_types[i++],
17188 byte_stride_prop, bit_stride);
17190 byte_stride_prop = nullptr;
17195 size_t ndim = range_types.size ();
17198 type = create_array_type_with_stride (NULL, type, range_types[ndim],
17199 byte_stride_prop, bit_stride);
17201 byte_stride_prop = nullptr;
17205 gdb_assert (type != element_type);
17207 /* Understand Dwarf2 support for vector types (like they occur on
17208 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
17209 array type. This is not part of the Dwarf2/3 standard yet, but a
17210 custom vendor extension. The main difference between a regular
17211 array and the vector variant is that vectors are passed by value
17213 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
17214 if (attr != nullptr)
17215 make_vector_type (type);
17217 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
17218 implementation may choose to implement triple vectors using this
17220 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17221 if (attr != nullptr && attr->form_is_unsigned ())
17223 if (attr->as_unsigned () >= TYPE_LENGTH (type))
17224 TYPE_LENGTH (type) = attr->as_unsigned ();
17226 complaint (_("DW_AT_byte_size for array type smaller "
17227 "than the total size of elements"));
17230 name = dwarf2_name (die, cu);
17232 type->set_name (name);
17234 maybe_set_alignment (cu, die, type);
17236 struct type *replacement_type = nullptr;
17237 if (cu->language == language_ada)
17239 replacement_type = quirk_ada_thick_pointer (die, cu, type);
17240 if (replacement_type != nullptr)
17241 type = replacement_type;
17244 /* Install the type in the die. */
17245 set_die_type (die, type, cu, replacement_type != nullptr);
17247 /* set_die_type should be already done. */
17248 set_descriptive_type (type, die, cu);
17253 static enum dwarf_array_dim_ordering
17254 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
17256 struct attribute *attr;
17258 attr = dwarf2_attr (die, DW_AT_ordering, cu);
17260 if (attr != nullptr)
17262 LONGEST val = attr->constant_value (-1);
17263 if (val == DW_ORD_row_major || val == DW_ORD_col_major)
17264 return (enum dwarf_array_dim_ordering) val;
17267 /* GNU F77 is a special case, as at 08/2004 array type info is the
17268 opposite order to the dwarf2 specification, but data is still
17269 laid out as per normal fortran.
17271 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
17272 version checking. */
17274 if (cu->language == language_fortran
17275 && cu->producer && strstr (cu->producer, "GNU F77"))
17277 return DW_ORD_row_major;
17280 switch (cu->language_defn->array_ordering ())
17282 case array_column_major:
17283 return DW_ORD_col_major;
17284 case array_row_major:
17286 return DW_ORD_row_major;
17290 /* Extract all information from a DW_TAG_set_type DIE and put it in
17291 the DIE's type field. */
17293 static struct type *
17294 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
17296 struct type *domain_type, *set_type;
17297 struct attribute *attr;
17299 domain_type = die_type (die, cu);
17301 /* The die_type call above may have already set the type for this DIE. */
17302 set_type = get_die_type (die, cu);
17306 set_type = create_set_type (NULL, domain_type);
17308 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17309 if (attr != nullptr && attr->form_is_unsigned ())
17310 TYPE_LENGTH (set_type) = attr->as_unsigned ();
17312 maybe_set_alignment (cu, die, set_type);
17314 return set_die_type (die, set_type, cu);
17317 /* A helper for read_common_block that creates a locexpr baton.
17318 SYM is the symbol which we are marking as computed.
17319 COMMON_DIE is the DIE for the common block.
17320 COMMON_LOC is the location expression attribute for the common
17322 MEMBER_LOC is the location expression attribute for the particular
17323 member of the common block that we are processing.
17324 CU is the CU from which the above come. */
17327 mark_common_block_symbol_computed (struct symbol *sym,
17328 struct die_info *common_die,
17329 struct attribute *common_loc,
17330 struct attribute *member_loc,
17331 struct dwarf2_cu *cu)
17333 dwarf2_per_objfile *per_objfile = cu->per_objfile;
17334 struct objfile *objfile = per_objfile->objfile;
17335 struct dwarf2_locexpr_baton *baton;
17337 unsigned int cu_off;
17338 enum bfd_endian byte_order = gdbarch_byte_order (objfile->arch ());
17339 LONGEST offset = 0;
17341 gdb_assert (common_loc && member_loc);
17342 gdb_assert (common_loc->form_is_block ());
17343 gdb_assert (member_loc->form_is_block ()
17344 || member_loc->form_is_constant ());
17346 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
17347 baton->per_objfile = per_objfile;
17348 baton->per_cu = cu->per_cu;
17349 gdb_assert (baton->per_cu);
17351 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
17353 if (member_loc->form_is_constant ())
17355 offset = member_loc->constant_value (0);
17356 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
17359 baton->size += member_loc->as_block ()->size;
17361 ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
17364 *ptr++ = DW_OP_call4;
17365 cu_off = common_die->sect_off - cu->per_cu->sect_off;
17366 store_unsigned_integer (ptr, 4, byte_order, cu_off);
17369 if (member_loc->form_is_constant ())
17371 *ptr++ = DW_OP_addr;
17372 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
17373 ptr += cu->header.addr_size;
17377 /* We have to copy the data here, because DW_OP_call4 will only
17378 use a DW_AT_location attribute. */
17379 struct dwarf_block *block = member_loc->as_block ();
17380 memcpy (ptr, block->data, block->size);
17381 ptr += block->size;
17384 *ptr++ = DW_OP_plus;
17385 gdb_assert (ptr - baton->data == baton->size);
17387 SYMBOL_LOCATION_BATON (sym) = baton;
17388 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
17391 /* Create appropriate locally-scoped variables for all the
17392 DW_TAG_common_block entries. Also create a struct common_block
17393 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
17394 is used to separate the common blocks name namespace from regular
17398 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
17400 struct attribute *attr;
17402 attr = dwarf2_attr (die, DW_AT_location, cu);
17403 if (attr != nullptr)
17405 /* Support the .debug_loc offsets. */
17406 if (attr->form_is_block ())
17410 else if (attr->form_is_section_offset ())
17412 dwarf2_complex_location_expr_complaint ();
17417 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17418 "common block member");
17423 if (die->child != NULL)
17425 struct objfile *objfile = cu->per_objfile->objfile;
17426 struct die_info *child_die;
17427 size_t n_entries = 0, size;
17428 struct common_block *common_block;
17429 struct symbol *sym;
17431 for (child_die = die->child;
17432 child_die && child_die->tag;
17433 child_die = child_die->sibling)
17436 size = (sizeof (struct common_block)
17437 + (n_entries - 1) * sizeof (struct symbol *));
17439 = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
17441 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
17442 common_block->n_entries = 0;
17444 for (child_die = die->child;
17445 child_die && child_die->tag;
17446 child_die = child_die->sibling)
17448 /* Create the symbol in the DW_TAG_common_block block in the current
17450 sym = new_symbol (child_die, NULL, cu);
17453 struct attribute *member_loc;
17455 common_block->contents[common_block->n_entries++] = sym;
17457 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
17461 /* GDB has handled this for a long time, but it is
17462 not specified by DWARF. It seems to have been
17463 emitted by gfortran at least as recently as:
17464 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
17465 complaint (_("Variable in common block has "
17466 "DW_AT_data_member_location "
17467 "- DIE at %s [in module %s]"),
17468 sect_offset_str (child_die->sect_off),
17469 objfile_name (objfile));
17471 if (member_loc->form_is_section_offset ())
17472 dwarf2_complex_location_expr_complaint ();
17473 else if (member_loc->form_is_constant ()
17474 || member_loc->form_is_block ())
17476 if (attr != nullptr)
17477 mark_common_block_symbol_computed (sym, die, attr,
17481 dwarf2_complex_location_expr_complaint ();
17486 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
17487 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
17491 /* Create a type for a C++ namespace. */
17493 static struct type *
17494 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
17496 struct objfile *objfile = cu->per_objfile->objfile;
17497 const char *previous_prefix, *name;
17501 /* For extensions, reuse the type of the original namespace. */
17502 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
17504 struct die_info *ext_die;
17505 struct dwarf2_cu *ext_cu = cu;
17507 ext_die = dwarf2_extension (die, &ext_cu);
17508 type = read_type_die (ext_die, ext_cu);
17510 /* EXT_CU may not be the same as CU.
17511 Ensure TYPE is recorded with CU in die_type_hash. */
17512 return set_die_type (die, type, cu);
17515 name = namespace_name (die, &is_anonymous, cu);
17517 /* Now build the name of the current namespace. */
17519 previous_prefix = determine_prefix (die, cu);
17520 if (previous_prefix[0] != '\0')
17521 name = typename_concat (&objfile->objfile_obstack,
17522 previous_prefix, name, 0, cu);
17524 /* Create the type. */
17525 type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
17527 return set_die_type (die, type, cu);
17530 /* Read a namespace scope. */
17533 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
17535 struct objfile *objfile = cu->per_objfile->objfile;
17538 /* Add a symbol associated to this if we haven't seen the namespace
17539 before. Also, add a using directive if it's an anonymous
17542 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
17546 type = read_type_die (die, cu);
17547 new_symbol (die, type, cu);
17549 namespace_name (die, &is_anonymous, cu);
17552 const char *previous_prefix = determine_prefix (die, cu);
17554 std::vector<const char *> excludes;
17555 add_using_directive (using_directives (cu),
17556 previous_prefix, type->name (), NULL,
17557 NULL, excludes, 0, &objfile->objfile_obstack);
17561 if (die->child != NULL)
17563 struct die_info *child_die = die->child;
17565 while (child_die && child_die->tag)
17567 process_die (child_die, cu);
17568 child_die = child_die->sibling;
17573 /* Read a Fortran module as type. This DIE can be only a declaration used for
17574 imported module. Still we need that type as local Fortran "use ... only"
17575 declaration imports depend on the created type in determine_prefix. */
17577 static struct type *
17578 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
17580 struct objfile *objfile = cu->per_objfile->objfile;
17581 const char *module_name;
17584 module_name = dwarf2_name (die, cu);
17585 type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
17587 return set_die_type (die, type, cu);
17590 /* Read a Fortran module. */
17593 read_module (struct die_info *die, struct dwarf2_cu *cu)
17595 struct die_info *child_die = die->child;
17598 type = read_type_die (die, cu);
17599 new_symbol (die, type, cu);
17601 while (child_die && child_die->tag)
17603 process_die (child_die, cu);
17604 child_die = child_die->sibling;
17608 /* Return the name of the namespace represented by DIE. Set
17609 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
17612 static const char *
17613 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
17615 struct die_info *current_die;
17616 const char *name = NULL;
17618 /* Loop through the extensions until we find a name. */
17620 for (current_die = die;
17621 current_die != NULL;
17622 current_die = dwarf2_extension (die, &cu))
17624 /* We don't use dwarf2_name here so that we can detect the absence
17625 of a name -> anonymous namespace. */
17626 name = dwarf2_string_attr (die, DW_AT_name, cu);
17632 /* Is it an anonymous namespace? */
17634 *is_anonymous = (name == NULL);
17636 name = CP_ANONYMOUS_NAMESPACE_STR;
17641 /* Extract all information from a DW_TAG_pointer_type DIE and add to
17642 the user defined type vector. */
17644 static struct type *
17645 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
17647 struct gdbarch *gdbarch = cu->per_objfile->objfile->arch ();
17648 struct comp_unit_head *cu_header = &cu->header;
17650 struct attribute *attr_byte_size;
17651 struct attribute *attr_address_class;
17652 int byte_size, addr_class;
17653 struct type *target_type;
17655 target_type = die_type (die, cu);
17657 /* The die_type call above may have already set the type for this DIE. */
17658 type = get_die_type (die, cu);
17662 type = lookup_pointer_type (target_type);
17664 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17665 if (attr_byte_size)
17666 byte_size = attr_byte_size->constant_value (cu_header->addr_size);
17668 byte_size = cu_header->addr_size;
17670 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17671 if (attr_address_class)
17672 addr_class = attr_address_class->constant_value (DW_ADDR_none);
17674 addr_class = DW_ADDR_none;
17676 ULONGEST alignment = get_alignment (cu, die);
17678 /* If the pointer size, alignment, or address class is different
17679 than the default, create a type variant marked as such and set
17680 the length accordingly. */
17681 if (TYPE_LENGTH (type) != byte_size
17682 || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17683 && alignment != TYPE_RAW_ALIGN (type))
17684 || addr_class != DW_ADDR_none)
17686 if (gdbarch_address_class_type_flags_p (gdbarch))
17688 type_instance_flags type_flags
17689 = gdbarch_address_class_type_flags (gdbarch, byte_size,
17691 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17693 type = make_type_with_address_space (type, type_flags);
17695 else if (TYPE_LENGTH (type) != byte_size)
17697 complaint (_("invalid pointer size %d"), byte_size);
17699 else if (TYPE_RAW_ALIGN (type) != alignment)
17701 complaint (_("Invalid DW_AT_alignment"
17702 " - DIE at %s [in module %s]"),
17703 sect_offset_str (die->sect_off),
17704 objfile_name (cu->per_objfile->objfile));
17708 /* Should we also complain about unhandled address classes? */
17712 TYPE_LENGTH (type) = byte_size;
17713 set_type_align (type, alignment);
17714 return set_die_type (die, type, cu);
17717 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17718 the user defined type vector. */
17720 static struct type *
17721 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17724 struct type *to_type;
17725 struct type *domain;
17727 to_type = die_type (die, cu);
17728 domain = die_containing_type (die, cu);
17730 /* The calls above may have already set the type for this DIE. */
17731 type = get_die_type (die, cu);
17735 if (check_typedef (to_type)->code () == TYPE_CODE_METHOD)
17736 type = lookup_methodptr_type (to_type);
17737 else if (check_typedef (to_type)->code () == TYPE_CODE_FUNC)
17739 struct type *new_type = alloc_type (cu->per_objfile->objfile);
17741 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17742 to_type->fields (), to_type->num_fields (),
17743 to_type->has_varargs ());
17744 type = lookup_methodptr_type (new_type);
17747 type = lookup_memberptr_type (to_type, domain);
17749 return set_die_type (die, type, cu);
17752 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17753 the user defined type vector. */
17755 static struct type *
17756 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17757 enum type_code refcode)
17759 struct comp_unit_head *cu_header = &cu->header;
17760 struct type *type, *target_type;
17761 struct attribute *attr;
17763 gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17765 target_type = die_type (die, cu);
17767 /* The die_type call above may have already set the type for this DIE. */
17768 type = get_die_type (die, cu);
17772 type = lookup_reference_type (target_type, refcode);
17773 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17774 if (attr != nullptr)
17776 TYPE_LENGTH (type) = attr->constant_value (cu_header->addr_size);
17780 TYPE_LENGTH (type) = cu_header->addr_size;
17782 maybe_set_alignment (cu, die, type);
17783 return set_die_type (die, type, cu);
17786 /* Add the given cv-qualifiers to the element type of the array. GCC
17787 outputs DWARF type qualifiers that apply to an array, not the
17788 element type. But GDB relies on the array element type to carry
17789 the cv-qualifiers. This mimics section 6.7.3 of the C99
17792 static struct type *
17793 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17794 struct type *base_type, int cnst, int voltl)
17796 struct type *el_type, *inner_array;
17798 base_type = copy_type (base_type);
17799 inner_array = base_type;
17801 while (TYPE_TARGET_TYPE (inner_array)->code () == TYPE_CODE_ARRAY)
17803 TYPE_TARGET_TYPE (inner_array) =
17804 copy_type (TYPE_TARGET_TYPE (inner_array));
17805 inner_array = TYPE_TARGET_TYPE (inner_array);
17808 el_type = TYPE_TARGET_TYPE (inner_array);
17809 cnst |= TYPE_CONST (el_type);
17810 voltl |= TYPE_VOLATILE (el_type);
17811 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17813 return set_die_type (die, base_type, cu);
17816 static struct type *
17817 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17819 struct type *base_type, *cv_type;
17821 base_type = die_type (die, cu);
17823 /* The die_type call above may have already set the type for this DIE. */
17824 cv_type = get_die_type (die, cu);
17828 /* In case the const qualifier is applied to an array type, the element type
17829 is so qualified, not the array type (section 6.7.3 of C99). */
17830 if (base_type->code () == TYPE_CODE_ARRAY)
17831 return add_array_cv_type (die, cu, base_type, 1, 0);
17833 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17834 return set_die_type (die, cv_type, cu);
17837 static struct type *
17838 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17840 struct type *base_type, *cv_type;
17842 base_type = die_type (die, cu);
17844 /* The die_type call above may have already set the type for this DIE. */
17845 cv_type = get_die_type (die, cu);
17849 /* In case the volatile qualifier is applied to an array type, the
17850 element type is so qualified, not the array type (section 6.7.3
17852 if (base_type->code () == TYPE_CODE_ARRAY)
17853 return add_array_cv_type (die, cu, base_type, 0, 1);
17855 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17856 return set_die_type (die, cv_type, cu);
17859 /* Handle DW_TAG_restrict_type. */
17861 static struct type *
17862 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17864 struct type *base_type, *cv_type;
17866 base_type = die_type (die, cu);
17868 /* The die_type call above may have already set the type for this DIE. */
17869 cv_type = get_die_type (die, cu);
17873 cv_type = make_restrict_type (base_type);
17874 return set_die_type (die, cv_type, cu);
17877 /* Handle DW_TAG_atomic_type. */
17879 static struct type *
17880 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17882 struct type *base_type, *cv_type;
17884 base_type = die_type (die, cu);
17886 /* The die_type call above may have already set the type for this DIE. */
17887 cv_type = get_die_type (die, cu);
17891 cv_type = make_atomic_type (base_type);
17892 return set_die_type (die, cv_type, cu);
17895 /* Extract all information from a DW_TAG_string_type DIE and add to
17896 the user defined type vector. It isn't really a user defined type,
17897 but it behaves like one, with other DIE's using an AT_user_def_type
17898 attribute to reference it. */
17900 static struct type *
17901 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17903 struct objfile *objfile = cu->per_objfile->objfile;
17904 struct gdbarch *gdbarch = objfile->arch ();
17905 struct type *type, *range_type, *index_type, *char_type;
17906 struct attribute *attr;
17907 struct dynamic_prop prop;
17908 bool length_is_constant = true;
17911 /* There are a couple of places where bit sizes might be made use of
17912 when parsing a DW_TAG_string_type, however, no producer that we know
17913 of make use of these. Handling bit sizes that are a multiple of the
17914 byte size is easy enough, but what about other bit sizes? Lets deal
17915 with that problem when we have to. Warn about these attributes being
17916 unsupported, then parse the type and ignore them like we always
17918 if (dwarf2_attr (die, DW_AT_bit_size, cu) != nullptr
17919 || dwarf2_attr (die, DW_AT_string_length_bit_size, cu) != nullptr)
17921 static bool warning_printed = false;
17922 if (!warning_printed)
17924 warning (_("DW_AT_bit_size and DW_AT_string_length_bit_size not "
17925 "currently supported on DW_TAG_string_type."));
17926 warning_printed = true;
17930 attr = dwarf2_attr (die, DW_AT_string_length, cu);
17931 if (attr != nullptr && !attr->form_is_constant ())
17933 /* The string length describes the location at which the length of
17934 the string can be found. The size of the length field can be
17935 specified with one of the attributes below. */
17936 struct type *prop_type;
17937 struct attribute *len
17938 = dwarf2_attr (die, DW_AT_string_length_byte_size, cu);
17939 if (len == nullptr)
17940 len = dwarf2_attr (die, DW_AT_byte_size, cu);
17941 if (len != nullptr && len->form_is_constant ())
17943 /* Pass 0 as the default as we know this attribute is constant
17944 and the default value will not be returned. */
17945 LONGEST sz = len->constant_value (0);
17946 prop_type = cu->per_objfile->int_type (sz, true);
17950 /* If the size is not specified then we assume it is the size of
17951 an address on this target. */
17952 prop_type = cu->addr_sized_int_type (true);
17955 /* Convert the attribute into a dynamic property. */
17956 if (!attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
17959 length_is_constant = false;
17961 else if (attr != nullptr)
17963 /* This DW_AT_string_length just contains the length with no
17964 indirection. There's no need to create a dynamic property in this
17965 case. Pass 0 for the default value as we know it will not be
17966 returned in this case. */
17967 length = attr->constant_value (0);
17969 else if ((attr = dwarf2_attr (die, DW_AT_byte_size, cu)) != nullptr)
17971 /* We don't currently support non-constant byte sizes for strings. */
17972 length = attr->constant_value (1);
17976 /* Use 1 as a fallback length if we have nothing else. */
17980 index_type = objfile_type (objfile)->builtin_int;
17981 if (length_is_constant)
17982 range_type = create_static_range_type (NULL, index_type, 1, length);
17985 struct dynamic_prop low_bound;
17987 low_bound.set_const_val (1);
17988 range_type = create_range_type (NULL, index_type, &low_bound, &prop, 0);
17990 char_type = language_string_char_type (cu->language_defn, gdbarch);
17991 type = create_string_type (NULL, char_type, range_type);
17993 return set_die_type (die, type, cu);
17996 /* Assuming that DIE corresponds to a function, returns nonzero
17997 if the function is prototyped. */
18000 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
18002 struct attribute *attr;
18004 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
18005 if (attr && attr->as_boolean ())
18008 /* The DWARF standard implies that the DW_AT_prototyped attribute
18009 is only meaningful for C, but the concept also extends to other
18010 languages that allow unprototyped functions (Eg: Objective C).
18011 For all other languages, assume that functions are always
18013 if (cu->language != language_c
18014 && cu->language != language_objc
18015 && cu->language != language_opencl)
18018 /* RealView does not emit DW_AT_prototyped. We can not distinguish
18019 prototyped and unprototyped functions; default to prototyped,
18020 since that is more common in modern code (and RealView warns
18021 about unprototyped functions). */
18022 if (producer_is_realview (cu->producer))
18028 /* Handle DIES due to C code like:
18032 int (*funcp)(int a, long l);
18036 ('funcp' generates a DW_TAG_subroutine_type DIE). */
18038 static struct type *
18039 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
18041 struct objfile *objfile = cu->per_objfile->objfile;
18042 struct type *type; /* Type that this function returns. */
18043 struct type *ftype; /* Function that returns above type. */
18044 struct attribute *attr;
18046 type = die_type (die, cu);
18048 /* The die_type call above may have already set the type for this DIE. */
18049 ftype = get_die_type (die, cu);
18053 ftype = lookup_function_type (type);
18055 if (prototyped_function_p (die, cu))
18056 ftype->set_is_prototyped (true);
18058 /* Store the calling convention in the type if it's available in
18059 the subroutine die. Otherwise set the calling convention to
18060 the default value DW_CC_normal. */
18061 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
18062 if (attr != nullptr
18063 && is_valid_DW_AT_calling_convention_for_subroutine (attr->constant_value (0)))
18064 TYPE_CALLING_CONVENTION (ftype)
18065 = (enum dwarf_calling_convention) attr->constant_value (0);
18066 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
18067 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
18069 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
18071 /* Record whether the function returns normally to its caller or not
18072 if the DWARF producer set that information. */
18073 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
18074 if (attr && attr->as_boolean ())
18075 TYPE_NO_RETURN (ftype) = 1;
18077 /* We need to add the subroutine type to the die immediately so
18078 we don't infinitely recurse when dealing with parameters
18079 declared as the same subroutine type. */
18080 set_die_type (die, ftype, cu);
18082 if (die->child != NULL)
18084 struct type *void_type = objfile_type (objfile)->builtin_void;
18085 struct die_info *child_die;
18086 int nparams, iparams;
18088 /* Count the number of parameters.
18089 FIXME: GDB currently ignores vararg functions, but knows about
18090 vararg member functions. */
18092 child_die = die->child;
18093 while (child_die && child_die->tag)
18095 if (child_die->tag == DW_TAG_formal_parameter)
18097 else if (child_die->tag == DW_TAG_unspecified_parameters)
18098 ftype->set_has_varargs (true);
18100 child_die = child_die->sibling;
18103 /* Allocate storage for parameters and fill them in. */
18104 ftype->set_num_fields (nparams);
18106 ((struct field *) TYPE_ZALLOC (ftype, nparams * sizeof (struct field)));
18108 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
18109 even if we error out during the parameters reading below. */
18110 for (iparams = 0; iparams < nparams; iparams++)
18111 ftype->field (iparams).set_type (void_type);
18114 child_die = die->child;
18115 while (child_die && child_die->tag)
18117 if (child_die->tag == DW_TAG_formal_parameter)
18119 struct type *arg_type;
18121 /* DWARF version 2 has no clean way to discern C++
18122 static and non-static member functions. G++ helps
18123 GDB by marking the first parameter for non-static
18124 member functions (which is the this pointer) as
18125 artificial. We pass this information to
18126 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
18128 DWARF version 3 added DW_AT_object_pointer, which GCC
18129 4.5 does not yet generate. */
18130 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
18131 if (attr != nullptr)
18132 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = attr->as_boolean ();
18134 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
18135 arg_type = die_type (child_die, cu);
18137 /* RealView does not mark THIS as const, which the testsuite
18138 expects. GCC marks THIS as const in method definitions,
18139 but not in the class specifications (GCC PR 43053). */
18140 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
18141 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
18144 struct dwarf2_cu *arg_cu = cu;
18145 const char *name = dwarf2_name (child_die, cu);
18147 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
18148 if (attr != nullptr)
18150 /* If the compiler emits this, use it. */
18151 if (follow_die_ref (die, attr, &arg_cu) == child_die)
18154 else if (name && strcmp (name, "this") == 0)
18155 /* Function definitions will have the argument names. */
18157 else if (name == NULL && iparams == 0)
18158 /* Declarations may not have the names, so like
18159 elsewhere in GDB, assume an artificial first
18160 argument is "this". */
18164 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
18168 ftype->field (iparams).set_type (arg_type);
18171 child_die = child_die->sibling;
18178 static struct type *
18179 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
18181 struct objfile *objfile = cu->per_objfile->objfile;
18182 const char *name = NULL;
18183 struct type *this_type, *target_type;
18185 name = dwarf2_full_name (NULL, die, cu);
18186 this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
18187 this_type->set_target_is_stub (true);
18188 set_die_type (die, this_type, cu);
18189 target_type = die_type (die, cu);
18190 if (target_type != this_type)
18191 TYPE_TARGET_TYPE (this_type) = target_type;
18194 /* Self-referential typedefs are, it seems, not allowed by the DWARF
18195 spec and cause infinite loops in GDB. */
18196 complaint (_("Self-referential DW_TAG_typedef "
18197 "- DIE at %s [in module %s]"),
18198 sect_offset_str (die->sect_off), objfile_name (objfile));
18199 TYPE_TARGET_TYPE (this_type) = NULL;
18203 /* Gcc-7 and before supports -feliminate-dwarf2-dups, which generates
18204 anonymous typedefs, which is, strictly speaking, invalid DWARF.
18205 Handle these by just returning the target type, rather than
18206 constructing an anonymous typedef type and trying to handle this
18208 set_die_type (die, target_type, cu);
18209 return target_type;
18214 /* Helper for get_dwarf2_rational_constant that computes the value of
18215 a given gmp_mpz given an attribute. */
18218 get_mpz (struct dwarf2_cu *cu, gdb_mpz *value, struct attribute *attr)
18220 /* GCC will sometimes emit a 16-byte constant value as a DWARF
18221 location expression that pushes an implicit value. */
18222 if (attr->form == DW_FORM_exprloc)
18224 dwarf_block *blk = attr->as_block ();
18225 if (blk->size > 0 && blk->data[0] == DW_OP_implicit_value)
18228 const gdb_byte *ptr = safe_read_uleb128 (blk->data + 1,
18229 blk->data + blk->size,
18231 if (ptr - blk->data + len <= blk->size)
18233 mpz_import (value->val, len,
18234 bfd_big_endian (cu->per_objfile->objfile->obfd) ? 1 : -1,
18240 /* On failure set it to 1. */
18241 *value = gdb_mpz (1);
18243 else if (attr->form_is_block ())
18245 dwarf_block *blk = attr->as_block ();
18246 mpz_import (value->val, blk->size,
18247 bfd_big_endian (cu->per_objfile->objfile->obfd) ? 1 : -1,
18248 1, 0, 0, blk->data);
18251 *value = gdb_mpz (attr->constant_value (1));
18254 /* Assuming DIE is a rational DW_TAG_constant, read the DIE's
18255 numerator and denominator into NUMERATOR and DENOMINATOR (resp).
18257 If the numerator and/or numerator attribute is missing,
18258 a complaint is filed, and NUMERATOR and DENOMINATOR are left
18262 get_dwarf2_rational_constant (struct die_info *die, struct dwarf2_cu *cu,
18263 gdb_mpz *numerator, gdb_mpz *denominator)
18265 struct attribute *num_attr, *denom_attr;
18267 num_attr = dwarf2_attr (die, DW_AT_GNU_numerator, cu);
18268 if (num_attr == nullptr)
18269 complaint (_("DW_AT_GNU_numerator missing in %s DIE at %s"),
18270 dwarf_tag_name (die->tag), sect_offset_str (die->sect_off));
18272 denom_attr = dwarf2_attr (die, DW_AT_GNU_denominator, cu);
18273 if (denom_attr == nullptr)
18274 complaint (_("DW_AT_GNU_denominator missing in %s DIE at %s"),
18275 dwarf_tag_name (die->tag), sect_offset_str (die->sect_off));
18277 if (num_attr == nullptr || denom_attr == nullptr)
18280 get_mpz (cu, numerator, num_attr);
18281 get_mpz (cu, denominator, denom_attr);
18284 /* Same as get_dwarf2_rational_constant, but extracting an unsigned
18285 rational constant, rather than a signed one.
18287 If the rational constant has a negative value, a complaint
18288 is filed, and NUMERATOR and DENOMINATOR are left untouched. */
18291 get_dwarf2_unsigned_rational_constant (struct die_info *die,
18292 struct dwarf2_cu *cu,
18293 gdb_mpz *numerator,
18294 gdb_mpz *denominator)
18299 get_dwarf2_rational_constant (die, cu, &num, &denom);
18300 if (mpz_sgn (num.val) == -1 && mpz_sgn (denom.val) == -1)
18302 mpz_neg (num.val, num.val);
18303 mpz_neg (denom.val, denom.val);
18305 else if (mpz_sgn (num.val) == -1)
18307 complaint (_("unexpected negative value for DW_AT_GNU_numerator"
18309 sect_offset_str (die->sect_off));
18312 else if (mpz_sgn (denom.val) == -1)
18314 complaint (_("unexpected negative value for DW_AT_GNU_denominator"
18316 sect_offset_str (die->sect_off));
18320 *numerator = std::move (num);
18321 *denominator = std::move (denom);
18324 /* Assuming that ENCODING is a string whose contents starting at the
18325 K'th character is "_nn" where "nn" is a decimal number, scan that
18326 number and set RESULT to the value. K is updated to point to the
18327 character immediately following the number.
18329 If the string does not conform to the format described above, false
18330 is returned, and K may or may not be changed. */
18333 ada_get_gnat_encoded_number (const char *encoding, int &k, gdb_mpz *result)
18335 /* The next character should be an underscore ('_') followed
18337 if (encoding[k] != '_' || !isdigit (encoding[k + 1]))
18340 /* Skip the underscore. */
18344 /* Determine the number of digits for our number. */
18345 while (isdigit (encoding[k]))
18350 std::string copy (&encoding[start], k - start);
18351 if (mpz_set_str (result->val, copy.c_str (), 10) == -1)
18357 /* Scan two numbers from ENCODING at OFFSET, assuming the string is of
18358 the form _NN_DD, where NN and DD are decimal numbers. Set NUM and
18359 DENOM, update OFFSET, and return true on success. Return false on
18363 ada_get_gnat_encoded_ratio (const char *encoding, int &offset,
18364 gdb_mpz *num, gdb_mpz *denom)
18366 if (!ada_get_gnat_encoded_number (encoding, offset, num))
18368 return ada_get_gnat_encoded_number (encoding, offset, denom);
18371 /* Assuming DIE corresponds to a fixed point type, finish the creation
18372 of the corresponding TYPE by setting its type-specific data. CU is
18373 the DIE's CU. SUFFIX is the "XF" type name suffix coming from GNAT
18374 encodings. It is nullptr if the GNAT encoding should be
18378 finish_fixed_point_type (struct type *type, const char *suffix,
18379 struct die_info *die, struct dwarf2_cu *cu)
18381 gdb_assert (type->code () == TYPE_CODE_FIXED_POINT
18382 && TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FIXED_POINT);
18384 /* If GNAT encodings are preferred, don't examine the
18386 struct attribute *attr = nullptr;
18387 if (suffix == nullptr)
18389 attr = dwarf2_attr (die, DW_AT_binary_scale, cu);
18390 if (attr == nullptr)
18391 attr = dwarf2_attr (die, DW_AT_decimal_scale, cu);
18392 if (attr == nullptr)
18393 attr = dwarf2_attr (die, DW_AT_small, cu);
18396 /* Numerator and denominator of our fixed-point type's scaling factor.
18397 The default is a scaling factor of 1, which we use as a fallback
18398 when we are not able to decode it (problem with the debugging info,
18399 unsupported forms, bug in GDB, etc...). Using that as the default
18400 allows us to at least print the unscaled value, which might still
18401 be useful to a user. */
18402 gdb_mpz scale_num (1);
18403 gdb_mpz scale_denom (1);
18405 if (attr == nullptr)
18408 if (suffix != nullptr
18409 && ada_get_gnat_encoded_ratio (suffix, offset, &scale_num,
18411 /* The number might be encoded as _nn_dd_nn_dd, where the
18412 second ratio is the 'small value. In this situation, we
18413 want the second value. */
18414 && (suffix[offset] != '_'
18415 || ada_get_gnat_encoded_ratio (suffix, offset, &scale_num,
18422 /* Scaling factor not found. Assume a scaling factor of 1,
18423 and hope for the best. At least the user will be able to
18424 see the encoded value. */
18427 complaint (_("no scale found for fixed-point type (DIE at %s)"),
18428 sect_offset_str (die->sect_off));
18431 else if (attr->name == DW_AT_binary_scale)
18433 LONGEST scale_exp = attr->constant_value (0);
18434 gdb_mpz *num_or_denom = scale_exp > 0 ? &scale_num : &scale_denom;
18436 mpz_mul_2exp (num_or_denom->val, num_or_denom->val, std::abs (scale_exp));
18438 else if (attr->name == DW_AT_decimal_scale)
18440 LONGEST scale_exp = attr->constant_value (0);
18441 gdb_mpz *num_or_denom = scale_exp > 0 ? &scale_num : &scale_denom;
18443 mpz_ui_pow_ui (num_or_denom->val, 10, std::abs (scale_exp));
18445 else if (attr->name == DW_AT_small)
18447 struct die_info *scale_die;
18448 struct dwarf2_cu *scale_cu = cu;
18450 scale_die = follow_die_ref (die, attr, &scale_cu);
18451 if (scale_die->tag == DW_TAG_constant)
18452 get_dwarf2_unsigned_rational_constant (scale_die, scale_cu,
18453 &scale_num, &scale_denom);
18455 complaint (_("%s DIE not supported as target of DW_AT_small attribute"
18457 dwarf_tag_name (die->tag), sect_offset_str (die->sect_off));
18461 complaint (_("unsupported scale attribute %s for fixed-point type"
18463 dwarf_attr_name (attr->name),
18464 sect_offset_str (die->sect_off));
18467 gdb_mpq &scaling_factor = type->fixed_point_info ().scaling_factor;
18468 mpz_set (mpq_numref (scaling_factor.val), scale_num.val);
18469 mpz_set (mpq_denref (scaling_factor.val), scale_denom.val);
18470 mpq_canonicalize (scaling_factor.val);
18473 /* The gnat-encoding suffix for fixed point. */
18475 #define GNAT_FIXED_POINT_SUFFIX "___XF_"
18477 /* If NAME encodes an Ada fixed-point type, return a pointer to the
18478 "XF" suffix of the name. The text after this is what encodes the
18479 'small and 'delta information. Otherwise, return nullptr. */
18481 static const char *
18482 gnat_encoded_fixed_point_type_info (const char *name)
18484 return strstr (name, GNAT_FIXED_POINT_SUFFIX);
18487 /* Allocate a floating-point type of size BITS and name NAME. Pass NAME_HINT
18488 (which may be different from NAME) to the architecture back-end to allow
18489 it to guess the correct format if necessary. */
18491 static struct type *
18492 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
18493 const char *name_hint, enum bfd_endian byte_order)
18495 struct gdbarch *gdbarch = objfile->arch ();
18496 const struct floatformat **format;
18499 format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
18501 type = init_float_type (objfile, bits, name, format, byte_order);
18503 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
18508 /* Allocate an integer type of size BITS and name NAME. */
18510 static struct type *
18511 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
18512 int bits, int unsigned_p, const char *name)
18516 /* Versions of Intel's C Compiler generate an integer type called "void"
18517 instead of using DW_TAG_unspecified_type. This has been seen on
18518 at least versions 14, 17, and 18. */
18519 if (bits == 0 && producer_is_icc (cu) && name != nullptr
18520 && strcmp (name, "void") == 0)
18521 type = objfile_type (objfile)->builtin_void;
18523 type = init_integer_type (objfile, bits, unsigned_p, name);
18528 /* Return true if DIE has a DW_AT_small attribute whose value is
18529 a constant rational, where both the numerator and denominator
18532 CU is the DIE's Compilation Unit. */
18535 has_zero_over_zero_small_attribute (struct die_info *die,
18536 struct dwarf2_cu *cu)
18538 struct attribute *attr = dwarf2_attr (die, DW_AT_small, cu);
18539 if (attr == nullptr)
18542 struct dwarf2_cu *scale_cu = cu;
18543 struct die_info *scale_die
18544 = follow_die_ref (die, attr, &scale_cu);
18546 if (scale_die->tag != DW_TAG_constant)
18549 gdb_mpz num (1), denom (1);
18550 get_dwarf2_rational_constant (scale_die, cu, &num, &denom);
18551 return mpz_sgn (num.val) == 0 && mpz_sgn (denom.val) == 0;
18554 /* Initialise and return a floating point type of size BITS suitable for
18555 use as a component of a complex number. The NAME_HINT is passed through
18556 when initialising the floating point type and is the name of the complex
18559 As DWARF doesn't currently provide an explicit name for the components
18560 of a complex number, but it can be helpful to have these components
18561 named, we try to select a suitable name based on the size of the
18563 static struct type *
18564 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
18565 struct objfile *objfile,
18566 int bits, const char *name_hint,
18567 enum bfd_endian byte_order)
18569 gdbarch *gdbarch = objfile->arch ();
18570 struct type *tt = nullptr;
18572 /* Try to find a suitable floating point builtin type of size BITS.
18573 We're going to use the name of this type as the name for the complex
18574 target type that we are about to create. */
18575 switch (cu->language)
18577 case language_fortran:
18581 tt = builtin_f_type (gdbarch)->builtin_real;
18584 tt = builtin_f_type (gdbarch)->builtin_real_s8;
18586 case 96: /* The x86-32 ABI specifies 96-bit long double. */
18588 tt = builtin_f_type (gdbarch)->builtin_real_s16;
18596 tt = builtin_type (gdbarch)->builtin_float;
18599 tt = builtin_type (gdbarch)->builtin_double;
18601 case 96: /* The x86-32 ABI specifies 96-bit long double. */
18603 tt = builtin_type (gdbarch)->builtin_long_double;
18609 /* If the type we found doesn't match the size we were looking for, then
18610 pretend we didn't find a type at all, the complex target type we
18611 create will then be nameless. */
18612 if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
18615 const char *name = (tt == nullptr) ? nullptr : tt->name ();
18616 return dwarf2_init_float_type (objfile, bits, name, name_hint, byte_order);
18619 /* Find a representation of a given base type and install
18620 it in the TYPE field of the die. */
18622 static struct type *
18623 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
18625 struct objfile *objfile = cu->per_objfile->objfile;
18627 struct attribute *attr;
18628 int encoding = 0, bits = 0;
18632 attr = dwarf2_attr (die, DW_AT_encoding, cu);
18633 if (attr != nullptr && attr->form_is_constant ())
18634 encoding = attr->constant_value (0);
18635 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
18636 if (attr != nullptr)
18637 bits = attr->constant_value (0) * TARGET_CHAR_BIT;
18638 name = dwarf2_name (die, cu);
18640 complaint (_("DW_AT_name missing from DW_TAG_base_type"));
18642 arch = objfile->arch ();
18643 enum bfd_endian byte_order = gdbarch_byte_order (arch);
18645 attr = dwarf2_attr (die, DW_AT_endianity, cu);
18646 if (attr != nullptr && attr->form_is_constant ())
18648 int endianity = attr->constant_value (0);
18653 byte_order = BFD_ENDIAN_BIG;
18655 case DW_END_little:
18656 byte_order = BFD_ENDIAN_LITTLE;
18659 complaint (_("DW_AT_endianity has unrecognized value %d"), endianity);
18664 if ((encoding == DW_ATE_signed_fixed || encoding == DW_ATE_unsigned_fixed)
18665 && cu->language == language_ada
18666 && has_zero_over_zero_small_attribute (die, cu))
18668 /* brobecker/2018-02-24: This is a fixed point type for which
18669 the scaling factor is represented as fraction whose value
18670 does not make sense (zero divided by zero), so we should
18671 normally never see these. However, there is a small category
18672 of fixed point types for which GNAT is unable to provide
18673 the scaling factor via the standard DWARF mechanisms, and
18674 for which the info is provided via the GNAT encodings instead.
18675 This is likely what this DIE is about. */
18676 encoding = (encoding == DW_ATE_signed_fixed
18678 : DW_ATE_unsigned);
18681 /* With GNAT encodings, fixed-point information will be encoded in
18682 the type name. Note that this can also occur with the above
18683 zero-over-zero case, which is why this is a separate "if" rather
18684 than an "else if". */
18685 const char *gnat_encoding_suffix = nullptr;
18686 if ((encoding == DW_ATE_signed || encoding == DW_ATE_unsigned)
18687 && cu->language == language_ada
18688 && name != nullptr)
18690 gnat_encoding_suffix = gnat_encoded_fixed_point_type_info (name);
18691 if (gnat_encoding_suffix != nullptr)
18693 gdb_assert (startswith (gnat_encoding_suffix,
18694 GNAT_FIXED_POINT_SUFFIX));
18695 name = obstack_strndup (&cu->per_objfile->objfile->objfile_obstack,
18696 name, gnat_encoding_suffix - name);
18697 /* Use -1 here so that SUFFIX points at the "_" after the
18699 gnat_encoding_suffix += strlen (GNAT_FIXED_POINT_SUFFIX) - 1;
18701 encoding = (encoding == DW_ATE_signed
18702 ? DW_ATE_signed_fixed
18703 : DW_ATE_unsigned_fixed);
18709 case DW_ATE_address:
18710 /* Turn DW_ATE_address into a void * pointer. */
18711 type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
18712 type = init_pointer_type (objfile, bits, name, type);
18714 case DW_ATE_boolean:
18715 type = init_boolean_type (objfile, bits, 1, name);
18717 case DW_ATE_complex_float:
18718 type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name,
18720 if (type->code () == TYPE_CODE_ERROR)
18722 if (name == nullptr)
18724 struct obstack *obstack
18725 = &cu->per_objfile->objfile->objfile_obstack;
18726 name = obconcat (obstack, "_Complex ", type->name (),
18729 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
18732 type = init_complex_type (name, type);
18734 case DW_ATE_decimal_float:
18735 type = init_decfloat_type (objfile, bits, name);
18738 type = dwarf2_init_float_type (objfile, bits, name, name, byte_order);
18740 case DW_ATE_signed:
18741 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
18743 case DW_ATE_unsigned:
18744 if (cu->language == language_fortran
18746 && startswith (name, "character("))
18747 type = init_character_type (objfile, bits, 1, name);
18749 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
18751 case DW_ATE_signed_char:
18752 if (cu->language == language_ada || cu->language == language_m2
18753 || cu->language == language_pascal
18754 || cu->language == language_fortran)
18755 type = init_character_type (objfile, bits, 0, name);
18757 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
18759 case DW_ATE_unsigned_char:
18760 if (cu->language == language_ada || cu->language == language_m2
18761 || cu->language == language_pascal
18762 || cu->language == language_fortran
18763 || cu->language == language_rust)
18764 type = init_character_type (objfile, bits, 1, name);
18766 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
18771 type = builtin_type (arch)->builtin_char16;
18772 else if (bits == 32)
18773 type = builtin_type (arch)->builtin_char32;
18776 complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
18778 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
18780 return set_die_type (die, type, cu);
18783 case DW_ATE_signed_fixed:
18784 type = init_fixed_point_type (objfile, bits, 0, name);
18785 finish_fixed_point_type (type, gnat_encoding_suffix, die, cu);
18787 case DW_ATE_unsigned_fixed:
18788 type = init_fixed_point_type (objfile, bits, 1, name);
18789 finish_fixed_point_type (type, gnat_encoding_suffix, die, cu);
18793 complaint (_("unsupported DW_AT_encoding: '%s'"),
18794 dwarf_type_encoding_name (encoding));
18795 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
18799 if (name && strcmp (name, "char") == 0)
18800 type->set_has_no_signedness (true);
18802 maybe_set_alignment (cu, die, type);
18804 type->set_endianity_is_not_default (gdbarch_byte_order (arch) != byte_order);
18806 if (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_INT)
18808 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
18809 if (attr != nullptr && attr->as_unsigned () <= 8 * TYPE_LENGTH (type))
18811 unsigned real_bit_size = attr->as_unsigned ();
18812 attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
18813 /* Only use the attributes if they make sense together. */
18814 if (attr == nullptr
18815 || (attr->as_unsigned () + real_bit_size
18816 <= 8 * TYPE_LENGTH (type)))
18818 TYPE_MAIN_TYPE (type)->type_specific.int_stuff.bit_size
18820 if (attr != nullptr)
18821 TYPE_MAIN_TYPE (type)->type_specific.int_stuff.bit_offset
18822 = attr->as_unsigned ();
18827 return set_die_type (die, type, cu);
18830 /* Parse dwarf attribute if it's a block, reference or constant and put the
18831 resulting value of the attribute into struct bound_prop.
18832 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
18835 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
18836 struct dwarf2_cu *cu, struct dynamic_prop *prop,
18837 struct type *default_type)
18839 struct dwarf2_property_baton *baton;
18840 dwarf2_per_objfile *per_objfile = cu->per_objfile;
18841 struct objfile *objfile = per_objfile->objfile;
18842 struct obstack *obstack = &objfile->objfile_obstack;
18844 gdb_assert (default_type != NULL);
18846 if (attr == NULL || prop == NULL)
18849 if (attr->form_is_block ())
18851 baton = XOBNEW (obstack, struct dwarf2_property_baton);
18852 baton->property_type = default_type;
18853 baton->locexpr.per_cu = cu->per_cu;
18854 baton->locexpr.per_objfile = per_objfile;
18856 struct dwarf_block *block = attr->as_block ();
18857 baton->locexpr.size = block->size;
18858 baton->locexpr.data = block->data;
18859 switch (attr->name)
18861 case DW_AT_string_length:
18862 baton->locexpr.is_reference = true;
18865 baton->locexpr.is_reference = false;
18869 prop->set_locexpr (baton);
18870 gdb_assert (prop->baton () != NULL);
18872 else if (attr->form_is_ref ())
18874 struct dwarf2_cu *target_cu = cu;
18875 struct die_info *target_die;
18876 struct attribute *target_attr;
18878 target_die = follow_die_ref (die, attr, &target_cu);
18879 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
18880 if (target_attr == NULL)
18881 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
18883 if (target_attr == NULL)
18886 switch (target_attr->name)
18888 case DW_AT_location:
18889 if (target_attr->form_is_section_offset ())
18891 baton = XOBNEW (obstack, struct dwarf2_property_baton);
18892 baton->property_type = die_type (target_die, target_cu);
18893 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
18894 prop->set_loclist (baton);
18895 gdb_assert (prop->baton () != NULL);
18897 else if (target_attr->form_is_block ())
18899 baton = XOBNEW (obstack, struct dwarf2_property_baton);
18900 baton->property_type = die_type (target_die, target_cu);
18901 baton->locexpr.per_cu = cu->per_cu;
18902 baton->locexpr.per_objfile = per_objfile;
18903 struct dwarf_block *block = target_attr->as_block ();
18904 baton->locexpr.size = block->size;
18905 baton->locexpr.data = block->data;
18906 baton->locexpr.is_reference = true;
18907 prop->set_locexpr (baton);
18908 gdb_assert (prop->baton () != NULL);
18912 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18913 "dynamic property");
18917 case DW_AT_data_member_location:
18921 if (!handle_data_member_location (target_die, target_cu,
18925 baton = XOBNEW (obstack, struct dwarf2_property_baton);
18926 baton->property_type = read_type_die (target_die->parent,
18928 baton->offset_info.offset = offset;
18929 baton->offset_info.type = die_type (target_die, target_cu);
18930 prop->set_addr_offset (baton);
18935 else if (attr->form_is_constant ())
18936 prop->set_const_val (attr->constant_value (0));
18939 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
18940 dwarf2_name (die, cu));
18950 dwarf2_per_objfile::int_type (int size_in_bytes, bool unsigned_p) const
18952 struct type *int_type;
18954 /* Helper macro to examine the various builtin types. */
18955 #define TRY_TYPE(F) \
18956 int_type = (unsigned_p \
18957 ? objfile_type (objfile)->builtin_unsigned_ ## F \
18958 : objfile_type (objfile)->builtin_ ## F); \
18959 if (int_type != NULL && TYPE_LENGTH (int_type) == size_in_bytes) \
18966 TRY_TYPE (long_long);
18970 gdb_assert_not_reached ("unable to find suitable integer type");
18976 dwarf2_cu::addr_sized_int_type (bool unsigned_p) const
18978 int addr_size = this->per_cu->addr_size ();
18979 return this->per_objfile->int_type (addr_size, unsigned_p);
18982 /* Read the DW_AT_type attribute for a sub-range. If this attribute is not
18983 present (which is valid) then compute the default type based on the
18984 compilation units address size. */
18986 static struct type *
18987 read_subrange_index_type (struct die_info *die, struct dwarf2_cu *cu)
18989 struct type *index_type = die_type (die, cu);
18991 /* Dwarf-2 specifications explicitly allows to create subrange types
18992 without specifying a base type.
18993 In that case, the base type must be set to the type of
18994 the lower bound, upper bound or count, in that order, if any of these
18995 three attributes references an object that has a type.
18996 If no base type is found, the Dwarf-2 specifications say that
18997 a signed integer type of size equal to the size of an address should
18999 For the following C code: `extern char gdb_int [];'
19000 GCC produces an empty range DIE.
19001 FIXME: muller/2010-05-28: Possible references to object for low bound,
19002 high bound or count are not yet handled by this code. */
19003 if (index_type->code () == TYPE_CODE_VOID)
19004 index_type = cu->addr_sized_int_type (false);
19009 /* Read the given DW_AT_subrange DIE. */
19011 static struct type *
19012 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
19014 struct type *base_type, *orig_base_type;
19015 struct type *range_type;
19016 struct attribute *attr;
19017 struct dynamic_prop low, high;
19018 int low_default_is_valid;
19019 int high_bound_is_count = 0;
19021 ULONGEST negative_mask;
19023 orig_base_type = read_subrange_index_type (die, cu);
19025 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
19026 whereas the real type might be. So, we use ORIG_BASE_TYPE when
19027 creating the range type, but we use the result of check_typedef
19028 when examining properties of the type. */
19029 base_type = check_typedef (orig_base_type);
19031 /* The die_type call above may have already set the type for this DIE. */
19032 range_type = get_die_type (die, cu);
19036 high.set_const_val (0);
19038 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
19039 omitting DW_AT_lower_bound. */
19040 switch (cu->language)
19043 case language_cplus:
19044 low.set_const_val (0);
19045 low_default_is_valid = 1;
19047 case language_fortran:
19048 low.set_const_val (1);
19049 low_default_is_valid = 1;
19052 case language_objc:
19053 case language_rust:
19054 low.set_const_val (0);
19055 low_default_is_valid = (cu->header.version >= 4);
19059 case language_pascal:
19060 low.set_const_val (1);
19061 low_default_is_valid = (cu->header.version >= 4);
19064 low.set_const_val (0);
19065 low_default_is_valid = 0;
19069 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
19070 if (attr != nullptr)
19071 attr_to_dynamic_prop (attr, die, cu, &low, base_type);
19072 else if (!low_default_is_valid)
19073 complaint (_("Missing DW_AT_lower_bound "
19074 "- DIE at %s [in module %s]"),
19075 sect_offset_str (die->sect_off),
19076 objfile_name (cu->per_objfile->objfile));
19078 struct attribute *attr_ub, *attr_count;
19079 attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
19080 if (!attr_to_dynamic_prop (attr, die, cu, &high, base_type))
19082 attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
19083 if (attr_to_dynamic_prop (attr, die, cu, &high, base_type))
19085 /* If bounds are constant do the final calculation here. */
19086 if (low.kind () == PROP_CONST && high.kind () == PROP_CONST)
19087 high.set_const_val (low.const_val () + high.const_val () - 1);
19089 high_bound_is_count = 1;
19093 if (attr_ub != NULL)
19094 complaint (_("Unresolved DW_AT_upper_bound "
19095 "- DIE at %s [in module %s]"),
19096 sect_offset_str (die->sect_off),
19097 objfile_name (cu->per_objfile->objfile));
19098 if (attr_count != NULL)
19099 complaint (_("Unresolved DW_AT_count "
19100 "- DIE at %s [in module %s]"),
19101 sect_offset_str (die->sect_off),
19102 objfile_name (cu->per_objfile->objfile));
19107 struct attribute *bias_attr = dwarf2_attr (die, DW_AT_GNU_bias, cu);
19108 if (bias_attr != nullptr && bias_attr->form_is_constant ())
19109 bias = bias_attr->constant_value (0);
19111 /* Normally, the DWARF producers are expected to use a signed
19112 constant form (Eg. DW_FORM_sdata) to express negative bounds.
19113 But this is unfortunately not always the case, as witnessed
19114 with GCC, for instance, where the ambiguous DW_FORM_dataN form
19115 is used instead. To work around that ambiguity, we treat
19116 the bounds as signed, and thus sign-extend their values, when
19117 the base type is signed. */
19119 -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
19120 if (low.kind () == PROP_CONST
19121 && !base_type->is_unsigned () && (low.const_val () & negative_mask))
19122 low.set_const_val (low.const_val () | negative_mask);
19123 if (high.kind () == PROP_CONST
19124 && !base_type->is_unsigned () && (high.const_val () & negative_mask))
19125 high.set_const_val (high.const_val () | negative_mask);
19127 /* Check for bit and byte strides. */
19128 struct dynamic_prop byte_stride_prop;
19129 attribute *attr_byte_stride = dwarf2_attr (die, DW_AT_byte_stride, cu);
19130 if (attr_byte_stride != nullptr)
19132 struct type *prop_type = cu->addr_sized_int_type (false);
19133 attr_to_dynamic_prop (attr_byte_stride, die, cu, &byte_stride_prop,
19137 struct dynamic_prop bit_stride_prop;
19138 attribute *attr_bit_stride = dwarf2_attr (die, DW_AT_bit_stride, cu);
19139 if (attr_bit_stride != nullptr)
19141 /* It only makes sense to have either a bit or byte stride. */
19142 if (attr_byte_stride != nullptr)
19144 complaint (_("Found DW_AT_bit_stride and DW_AT_byte_stride "
19145 "- DIE at %s [in module %s]"),
19146 sect_offset_str (die->sect_off),
19147 objfile_name (cu->per_objfile->objfile));
19148 attr_bit_stride = nullptr;
19152 struct type *prop_type = cu->addr_sized_int_type (false);
19153 attr_to_dynamic_prop (attr_bit_stride, die, cu, &bit_stride_prop,
19158 if (attr_byte_stride != nullptr
19159 || attr_bit_stride != nullptr)
19161 bool byte_stride_p = (attr_byte_stride != nullptr);
19162 struct dynamic_prop *stride
19163 = byte_stride_p ? &byte_stride_prop : &bit_stride_prop;
19166 = create_range_type_with_stride (NULL, orig_base_type, &low,
19167 &high, bias, stride, byte_stride_p);
19170 range_type = create_range_type (NULL, orig_base_type, &low, &high, bias);
19172 if (high_bound_is_count)
19173 range_type->bounds ()->flag_upper_bound_is_count = 1;
19175 /* Ada expects an empty array on no boundary attributes. */
19176 if (attr == NULL && cu->language != language_ada)
19177 range_type->bounds ()->high.set_undefined ();
19179 name = dwarf2_name (die, cu);
19181 range_type->set_name (name);
19183 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
19184 if (attr != nullptr)
19185 TYPE_LENGTH (range_type) = attr->constant_value (0);
19187 maybe_set_alignment (cu, die, range_type);
19189 set_die_type (die, range_type, cu);
19191 /* set_die_type should be already done. */
19192 set_descriptive_type (range_type, die, cu);
19197 static struct type *
19198 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
19202 type = init_type (cu->per_objfile->objfile, TYPE_CODE_VOID, 0, NULL);
19203 type->set_name (dwarf2_name (die, cu));
19205 /* In Ada, an unspecified type is typically used when the description
19206 of the type is deferred to a different unit. When encountering
19207 such a type, we treat it as a stub, and try to resolve it later on,
19209 if (cu->language == language_ada)
19210 type->set_is_stub (true);
19212 return set_die_type (die, type, cu);
19215 /* Read a single die and all its descendents. Set the die's sibling
19216 field to NULL; set other fields in the die correctly, and set all
19217 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
19218 location of the info_ptr after reading all of those dies. PARENT
19219 is the parent of the die in question. */
19221 static struct die_info *
19222 read_die_and_children (const struct die_reader_specs *reader,
19223 const gdb_byte *info_ptr,
19224 const gdb_byte **new_info_ptr,
19225 struct die_info *parent)
19227 struct die_info *die;
19228 const gdb_byte *cur_ptr;
19230 cur_ptr = read_full_die_1 (reader, &die, info_ptr, 0);
19233 *new_info_ptr = cur_ptr;
19236 store_in_ref_table (die, reader->cu);
19238 if (die->has_children)
19239 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
19243 *new_info_ptr = cur_ptr;
19246 die->sibling = NULL;
19247 die->parent = parent;
19251 /* Read a die, all of its descendents, and all of its siblings; set
19252 all of the fields of all of the dies correctly. Arguments are as
19253 in read_die_and_children. */
19255 static struct die_info *
19256 read_die_and_siblings_1 (const struct die_reader_specs *reader,
19257 const gdb_byte *info_ptr,
19258 const gdb_byte **new_info_ptr,
19259 struct die_info *parent)
19261 struct die_info *first_die, *last_sibling;
19262 const gdb_byte *cur_ptr;
19264 cur_ptr = info_ptr;
19265 first_die = last_sibling = NULL;
19269 struct die_info *die
19270 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
19274 *new_info_ptr = cur_ptr;
19281 last_sibling->sibling = die;
19283 last_sibling = die;
19287 /* Read a die, all of its descendents, and all of its siblings; set
19288 all of the fields of all of the dies correctly. Arguments are as
19289 in read_die_and_children.
19290 This the main entry point for reading a DIE and all its children. */
19292 static struct die_info *
19293 read_die_and_siblings (const struct die_reader_specs *reader,
19294 const gdb_byte *info_ptr,
19295 const gdb_byte **new_info_ptr,
19296 struct die_info *parent)
19298 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
19299 new_info_ptr, parent);
19301 if (dwarf_die_debug)
19303 fprintf_unfiltered (gdb_stdlog,
19304 "Read die from %s@0x%x of %s:\n",
19305 reader->die_section->get_name (),
19306 (unsigned) (info_ptr - reader->die_section->buffer),
19307 bfd_get_filename (reader->abfd));
19308 dump_die (die, dwarf_die_debug);
19314 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
19316 The caller is responsible for filling in the extra attributes
19317 and updating (*DIEP)->num_attrs.
19318 Set DIEP to point to a newly allocated die with its information,
19319 except for its child, sibling, and parent fields. */
19321 static const gdb_byte *
19322 read_full_die_1 (const struct die_reader_specs *reader,
19323 struct die_info **diep, const gdb_byte *info_ptr,
19324 int num_extra_attrs)
19326 unsigned int abbrev_number, bytes_read, i;
19327 const struct abbrev_info *abbrev;
19328 struct die_info *die;
19329 struct dwarf2_cu *cu = reader->cu;
19330 bfd *abfd = reader->abfd;
19332 sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
19333 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19334 info_ptr += bytes_read;
19335 if (!abbrev_number)
19341 abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
19343 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
19345 bfd_get_filename (abfd));
19347 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
19348 die->sect_off = sect_off;
19349 die->tag = abbrev->tag;
19350 die->abbrev = abbrev_number;
19351 die->has_children = abbrev->has_children;
19353 /* Make the result usable.
19354 The caller needs to update num_attrs after adding the extra
19356 die->num_attrs = abbrev->num_attrs;
19358 bool any_need_reprocess = false;
19359 for (i = 0; i < abbrev->num_attrs; ++i)
19361 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
19363 if (die->attrs[i].requires_reprocessing_p ())
19364 any_need_reprocess = true;
19367 struct attribute *attr = die->attr (DW_AT_str_offsets_base);
19368 if (attr != nullptr && attr->form_is_unsigned ())
19369 cu->str_offsets_base = attr->as_unsigned ();
19371 attr = die->attr (DW_AT_loclists_base);
19372 if (attr != nullptr)
19373 cu->loclist_base = attr->as_unsigned ();
19375 auto maybe_addr_base = die->addr_base ();
19376 if (maybe_addr_base.has_value ())
19377 cu->addr_base = *maybe_addr_base;
19379 attr = die->attr (DW_AT_rnglists_base);
19380 if (attr != nullptr)
19381 cu->rnglists_base = attr->as_unsigned ();
19383 if (any_need_reprocess)
19385 for (i = 0; i < abbrev->num_attrs; ++i)
19387 if (die->attrs[i].requires_reprocessing_p ())
19388 read_attribute_reprocess (reader, &die->attrs[i], die->tag);
19395 /* Read a die and all its attributes.
19396 Set DIEP to point to a newly allocated die with its information,
19397 except for its child, sibling, and parent fields. */
19399 static const gdb_byte *
19400 read_full_die (const struct die_reader_specs *reader,
19401 struct die_info **diep, const gdb_byte *info_ptr)
19403 const gdb_byte *result;
19405 result = read_full_die_1 (reader, diep, info_ptr, 0);
19407 if (dwarf_die_debug)
19409 fprintf_unfiltered (gdb_stdlog,
19410 "Read die from %s@0x%x of %s:\n",
19411 reader->die_section->get_name (),
19412 (unsigned) (info_ptr - reader->die_section->buffer),
19413 bfd_get_filename (reader->abfd));
19414 dump_die (*diep, dwarf_die_debug);
19421 /* Returns nonzero if TAG represents a type that we might generate a partial
19425 is_type_tag_for_partial (int tag, enum language lang)
19430 /* Some types that would be reasonable to generate partial symbols for,
19431 that we don't at present. Note that normally this does not
19432 matter, mainly because C compilers don't give names to these
19433 types, but instead emit DW_TAG_typedef. */
19434 case DW_TAG_file_type:
19435 case DW_TAG_ptr_to_member_type:
19436 case DW_TAG_set_type:
19437 case DW_TAG_string_type:
19438 case DW_TAG_subroutine_type:
19441 /* GNAT may emit an array with a name, but no typedef, so we
19442 need to make a symbol in this case. */
19443 case DW_TAG_array_type:
19444 return lang == language_ada;
19446 case DW_TAG_base_type:
19447 case DW_TAG_class_type:
19448 case DW_TAG_interface_type:
19449 case DW_TAG_enumeration_type:
19450 case DW_TAG_structure_type:
19451 case DW_TAG_subrange_type:
19452 case DW_TAG_typedef:
19453 case DW_TAG_union_type:
19460 /* Load all DIEs that are interesting for partial symbols into memory. */
19462 static struct partial_die_info *
19463 load_partial_dies (const struct die_reader_specs *reader,
19464 const gdb_byte *info_ptr, int building_psymtab)
19466 struct dwarf2_cu *cu = reader->cu;
19467 struct objfile *objfile = cu->per_objfile->objfile;
19468 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
19469 unsigned int bytes_read;
19470 unsigned int load_all = 0;
19471 int nesting_level = 1;
19476 gdb_assert (cu->per_cu != NULL);
19477 if (cu->per_cu->load_all_dies)
19481 = htab_create_alloc_ex (cu->header.length / 12,
19485 &cu->comp_unit_obstack,
19486 hashtab_obstack_allocate,
19487 dummy_obstack_deallocate);
19491 const abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr,
19494 /* A NULL abbrev means the end of a series of children. */
19495 if (abbrev == NULL)
19497 if (--nesting_level == 0)
19500 info_ptr += bytes_read;
19501 last_die = parent_die;
19502 parent_die = parent_die->die_parent;
19506 /* Check for template arguments. We never save these; if
19507 they're seen, we just mark the parent, and go on our way. */
19508 if (parent_die != NULL
19509 && cu->language == language_cplus
19510 && (abbrev->tag == DW_TAG_template_type_param
19511 || abbrev->tag == DW_TAG_template_value_param))
19513 parent_die->has_template_arguments = 1;
19517 /* We don't need a partial DIE for the template argument. */
19518 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
19523 /* We only recurse into c++ subprograms looking for template arguments.
19524 Skip their other children. */
19526 && cu->language == language_cplus
19527 && parent_die != NULL
19528 && parent_die->tag == DW_TAG_subprogram
19529 && abbrev->tag != DW_TAG_inlined_subroutine)
19531 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
19535 /* Check whether this DIE is interesting enough to save. Normally
19536 we would not be interested in members here, but there may be
19537 later variables referencing them via DW_AT_specification (for
19538 static members). */
19540 && !is_type_tag_for_partial (abbrev->tag, cu->language)
19541 && abbrev->tag != DW_TAG_constant
19542 && abbrev->tag != DW_TAG_enumerator
19543 && abbrev->tag != DW_TAG_subprogram
19544 && abbrev->tag != DW_TAG_inlined_subroutine
19545 && abbrev->tag != DW_TAG_lexical_block
19546 && abbrev->tag != DW_TAG_variable
19547 && abbrev->tag != DW_TAG_namespace
19548 && abbrev->tag != DW_TAG_module
19549 && abbrev->tag != DW_TAG_member
19550 && abbrev->tag != DW_TAG_imported_unit
19551 && abbrev->tag != DW_TAG_imported_declaration)
19553 /* Otherwise we skip to the next sibling, if any. */
19554 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
19558 struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
19561 info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
19563 /* This two-pass algorithm for processing partial symbols has a
19564 high cost in cache pressure. Thus, handle some simple cases
19565 here which cover the majority of C partial symbols. DIEs
19566 which neither have specification tags in them, nor could have
19567 specification tags elsewhere pointing at them, can simply be
19568 processed and discarded.
19570 This segment is also optional; scan_partial_symbols and
19571 add_partial_symbol will handle these DIEs if we chain
19572 them in normally. When compilers which do not emit large
19573 quantities of duplicate debug information are more common,
19574 this code can probably be removed. */
19576 /* Any complete simple types at the top level (pretty much all
19577 of them, for a language without namespaces), can be processed
19579 if (parent_die == NULL
19580 && pdi.has_specification == 0
19581 && pdi.is_declaration == 0
19582 && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
19583 || pdi.tag == DW_TAG_base_type
19584 || pdi.tag == DW_TAG_array_type
19585 || pdi.tag == DW_TAG_subrange_type))
19587 if (building_psymtab && pdi.raw_name != NULL)
19588 add_partial_symbol (&pdi, cu);
19590 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
19594 /* The exception for DW_TAG_typedef with has_children above is
19595 a workaround of GCC PR debug/47510. In the case of this complaint
19596 type_name_or_error will error on such types later.
19598 GDB skipped children of DW_TAG_typedef by the shortcut above and then
19599 it could not find the child DIEs referenced later, this is checked
19600 above. In correct DWARF DW_TAG_typedef should have no children. */
19602 if (pdi.tag == DW_TAG_typedef && pdi.has_children)
19603 complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
19604 "- DIE at %s [in module %s]"),
19605 sect_offset_str (pdi.sect_off), objfile_name (objfile));
19607 /* If we're at the second level, and we're an enumerator, and
19608 our parent has no specification (meaning possibly lives in a
19609 namespace elsewhere), then we can add the partial symbol now
19610 instead of queueing it. */
19611 if (pdi.tag == DW_TAG_enumerator
19612 && parent_die != NULL
19613 && parent_die->die_parent == NULL
19614 && parent_die->tag == DW_TAG_enumeration_type
19615 && parent_die->has_specification == 0)
19617 if (pdi.raw_name == NULL)
19618 complaint (_("malformed enumerator DIE ignored"));
19619 else if (building_psymtab)
19620 add_partial_symbol (&pdi, cu);
19622 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
19626 struct partial_die_info *part_die
19627 = new (&cu->comp_unit_obstack) partial_die_info (pdi);
19629 /* We'll save this DIE so link it in. */
19630 part_die->die_parent = parent_die;
19631 part_die->die_sibling = NULL;
19632 part_die->die_child = NULL;
19634 if (last_die && last_die == parent_die)
19635 last_die->die_child = part_die;
19637 last_die->die_sibling = part_die;
19639 last_die = part_die;
19641 if (first_die == NULL)
19642 first_die = part_die;
19644 /* Maybe add the DIE to the hash table. Not all DIEs that we
19645 find interesting need to be in the hash table, because we
19646 also have the parent/sibling/child chains; only those that we
19647 might refer to by offset later during partial symbol reading.
19649 For now this means things that might have be the target of a
19650 DW_AT_specification, DW_AT_abstract_origin, or
19651 DW_AT_extension. DW_AT_extension will refer only to
19652 namespaces; DW_AT_abstract_origin refers to functions (and
19653 many things under the function DIE, but we do not recurse
19654 into function DIEs during partial symbol reading) and
19655 possibly variables as well; DW_AT_specification refers to
19656 declarations. Declarations ought to have the DW_AT_declaration
19657 flag. It happens that GCC forgets to put it in sometimes, but
19658 only for functions, not for types.
19660 Adding more things than necessary to the hash table is harmless
19661 except for the performance cost. Adding too few will result in
19662 wasted time in find_partial_die, when we reread the compilation
19663 unit with load_all_dies set. */
19666 || abbrev->tag == DW_TAG_constant
19667 || abbrev->tag == DW_TAG_subprogram
19668 || abbrev->tag == DW_TAG_variable
19669 || abbrev->tag == DW_TAG_namespace
19670 || part_die->is_declaration)
19674 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
19675 to_underlying (part_die->sect_off),
19680 /* For some DIEs we want to follow their children (if any). For C
19681 we have no reason to follow the children of structures; for other
19682 languages we have to, so that we can get at method physnames
19683 to infer fully qualified class names, for DW_AT_specification,
19684 and for C++ template arguments. For C++, we also look one level
19685 inside functions to find template arguments (if the name of the
19686 function does not already contain the template arguments).
19688 For Ada and Fortran, we need to scan the children of subprograms
19689 and lexical blocks as well because these languages allow the
19690 definition of nested entities that could be interesting for the
19691 debugger, such as nested subprograms for instance. */
19692 if (last_die->has_children
19694 || last_die->tag == DW_TAG_namespace
19695 || last_die->tag == DW_TAG_module
19696 || last_die->tag == DW_TAG_enumeration_type
19697 || (cu->language == language_cplus
19698 && last_die->tag == DW_TAG_subprogram
19699 && (last_die->raw_name == NULL
19700 || strchr (last_die->raw_name, '<') == NULL))
19701 || (cu->language != language_c
19702 && (last_die->tag == DW_TAG_class_type
19703 || last_die->tag == DW_TAG_interface_type
19704 || last_die->tag == DW_TAG_structure_type
19705 || last_die->tag == DW_TAG_union_type))
19706 || ((cu->language == language_ada
19707 || cu->language == language_fortran)
19708 && (last_die->tag == DW_TAG_subprogram
19709 || last_die->tag == DW_TAG_lexical_block))))
19712 parent_die = last_die;
19716 /* Otherwise we skip to the next sibling, if any. */
19717 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
19719 /* Back to the top, do it again. */
19723 partial_die_info::partial_die_info (sect_offset sect_off_,
19724 const struct abbrev_info *abbrev)
19725 : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
19729 /* See class definition. */
19732 partial_die_info::name (dwarf2_cu *cu)
19734 if (!canonical_name && raw_name != nullptr)
19736 struct objfile *objfile = cu->per_objfile->objfile;
19737 raw_name = dwarf2_canonicalize_name (raw_name, cu, objfile);
19738 canonical_name = 1;
19744 /* Read a minimal amount of information into the minimal die structure.
19745 INFO_PTR should point just after the initial uleb128 of a DIE. */
19748 partial_die_info::read (const struct die_reader_specs *reader,
19749 const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
19751 struct dwarf2_cu *cu = reader->cu;
19752 dwarf2_per_objfile *per_objfile = cu->per_objfile;
19754 int has_low_pc_attr = 0;
19755 int has_high_pc_attr = 0;
19756 int high_pc_relative = 0;
19758 for (i = 0; i < abbrev.num_attrs; ++i)
19761 info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
19762 /* String and address offsets that need to do the reprocessing have
19763 already been read at this point, so there is no need to wait until
19764 the loop terminates to do the reprocessing. */
19765 if (attr.requires_reprocessing_p ())
19766 read_attribute_reprocess (reader, &attr, tag);
19767 /* Store the data if it is of an attribute we want to keep in a
19768 partial symbol table. */
19774 case DW_TAG_compile_unit:
19775 case DW_TAG_partial_unit:
19776 case DW_TAG_type_unit:
19777 /* Compilation units have a DW_AT_name that is a filename, not
19778 a source language identifier. */
19779 case DW_TAG_enumeration_type:
19780 case DW_TAG_enumerator:
19781 /* These tags always have simple identifiers already; no need
19782 to canonicalize them. */
19783 canonical_name = 1;
19784 raw_name = attr.as_string ();
19787 canonical_name = 0;
19788 raw_name = attr.as_string ();
19792 case DW_AT_linkage_name:
19793 case DW_AT_MIPS_linkage_name:
19794 /* Note that both forms of linkage name might appear. We
19795 assume they will be the same, and we only store the last
19797 linkage_name = attr.as_string ();
19800 has_low_pc_attr = 1;
19801 lowpc = attr.as_address ();
19803 case DW_AT_high_pc:
19804 has_high_pc_attr = 1;
19805 highpc = attr.as_address ();
19806 if (cu->header.version >= 4 && attr.form_is_constant ())
19807 high_pc_relative = 1;
19809 case DW_AT_location:
19810 /* Support the .debug_loc offsets. */
19811 if (attr.form_is_block ())
19813 d.locdesc = attr.as_block ();
19815 else if (attr.form_is_section_offset ())
19817 dwarf2_complex_location_expr_complaint ();
19821 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
19822 "partial symbol information");
19825 case DW_AT_external:
19826 is_external = attr.as_boolean ();
19828 case DW_AT_declaration:
19829 is_declaration = attr.as_boolean ();
19834 case DW_AT_abstract_origin:
19835 case DW_AT_specification:
19836 case DW_AT_extension:
19837 has_specification = 1;
19838 spec_offset = attr.get_ref_die_offset ();
19839 spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
19840 || cu->per_cu->is_dwz);
19842 case DW_AT_sibling:
19843 /* Ignore absolute siblings, they might point outside of
19844 the current compile unit. */
19845 if (attr.form == DW_FORM_ref_addr)
19846 complaint (_("ignoring absolute DW_AT_sibling"));
19849 const gdb_byte *buffer = reader->buffer;
19850 sect_offset off = attr.get_ref_die_offset ();
19851 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
19853 if (sibling_ptr < info_ptr)
19854 complaint (_("DW_AT_sibling points backwards"));
19855 else if (sibling_ptr > reader->buffer_end)
19856 reader->die_section->overflow_complaint ();
19858 sibling = sibling_ptr;
19861 case DW_AT_byte_size:
19864 case DW_AT_const_value:
19865 has_const_value = 1;
19867 case DW_AT_calling_convention:
19868 /* DWARF doesn't provide a way to identify a program's source-level
19869 entry point. DW_AT_calling_convention attributes are only meant
19870 to describe functions' calling conventions.
19872 However, because it's a necessary piece of information in
19873 Fortran, and before DWARF 4 DW_CC_program was the only
19874 piece of debugging information whose definition refers to
19875 a 'main program' at all, several compilers marked Fortran
19876 main programs with DW_CC_program --- even when those
19877 functions use the standard calling conventions.
19879 Although DWARF now specifies a way to provide this
19880 information, we support this practice for backward
19882 if (attr.constant_value (0) == DW_CC_program
19883 && cu->language == language_fortran)
19884 main_subprogram = 1;
19888 LONGEST value = attr.constant_value (-1);
19889 if (value == DW_INL_inlined
19890 || value == DW_INL_declared_inlined)
19891 may_be_inlined = 1;
19896 if (tag == DW_TAG_imported_unit)
19898 d.sect_off = attr.get_ref_die_offset ();
19899 is_dwz = (attr.form == DW_FORM_GNU_ref_alt
19900 || cu->per_cu->is_dwz);
19904 case DW_AT_main_subprogram:
19905 main_subprogram = attr.as_boolean ();
19910 /* Offset in the .debug_ranges or .debug_rnglist section (depending
19911 on DWARF version). */
19912 ULONGEST ranges_offset = attr.as_unsigned ();
19914 /* See dwarf2_cu::gnu_ranges_base's doc for why we might want to add
19916 if (tag != DW_TAG_compile_unit)
19917 ranges_offset += cu->gnu_ranges_base;
19919 if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
19930 /* For Ada, if both the name and the linkage name appear, we prefer
19931 the latter. This lets "catch exception" work better, regardless
19932 of the order in which the name and linkage name were emitted.
19933 Really, though, this is just a workaround for the fact that gdb
19934 doesn't store both the name and the linkage name. */
19935 if (cu->language == language_ada && linkage_name != nullptr)
19936 raw_name = linkage_name;
19938 if (high_pc_relative)
19941 if (has_low_pc_attr && has_high_pc_attr)
19943 /* When using the GNU linker, .gnu.linkonce. sections are used to
19944 eliminate duplicate copies of functions and vtables and such.
19945 The linker will arbitrarily choose one and discard the others.
19946 The AT_*_pc values for such functions refer to local labels in
19947 these sections. If the section from that file was discarded, the
19948 labels are not in the output, so the relocs get a value of 0.
19949 If this is a discarded function, mark the pc bounds as invalid,
19950 so that GDB will ignore it. */
19951 if (lowpc == 0 && !per_objfile->per_bfd->has_section_at_zero)
19953 struct objfile *objfile = per_objfile->objfile;
19954 struct gdbarch *gdbarch = objfile->arch ();
19956 complaint (_("DW_AT_low_pc %s is zero "
19957 "for DIE at %s [in module %s]"),
19958 paddress (gdbarch, lowpc),
19959 sect_offset_str (sect_off),
19960 objfile_name (objfile));
19962 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
19963 else if (lowpc >= highpc)
19965 struct objfile *objfile = per_objfile->objfile;
19966 struct gdbarch *gdbarch = objfile->arch ();
19968 complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
19969 "for DIE at %s [in module %s]"),
19970 paddress (gdbarch, lowpc),
19971 paddress (gdbarch, highpc),
19972 sect_offset_str (sect_off),
19973 objfile_name (objfile));
19982 /* Find a cached partial DIE at OFFSET in CU. */
19984 struct partial_die_info *
19985 dwarf2_cu::find_partial_die (sect_offset sect_off)
19987 struct partial_die_info *lookup_die = NULL;
19988 struct partial_die_info part_die (sect_off);
19990 lookup_die = ((struct partial_die_info *)
19991 htab_find_with_hash (partial_dies, &part_die,
19992 to_underlying (sect_off)));
19997 /* Find a partial DIE at OFFSET, which may or may not be in CU,
19998 except in the case of .debug_types DIEs which do not reference
19999 outside their CU (they do however referencing other types via
20000 DW_FORM_ref_sig8). */
20002 static const struct cu_partial_die_info
20003 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
20005 dwarf2_per_objfile *per_objfile = cu->per_objfile;
20006 struct objfile *objfile = per_objfile->objfile;
20007 struct partial_die_info *pd = NULL;
20009 if (offset_in_dwz == cu->per_cu->is_dwz
20010 && cu->header.offset_in_cu_p (sect_off))
20012 pd = cu->find_partial_die (sect_off);
20015 /* We missed recording what we needed.
20016 Load all dies and try again. */
20020 /* TUs don't reference other CUs/TUs (except via type signatures). */
20021 if (cu->per_cu->is_debug_types)
20023 error (_("Dwarf Error: Type Unit at offset %s contains"
20024 " external reference to offset %s [in module %s].\n"),
20025 sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
20026 bfd_get_filename (objfile->obfd));
20028 dwarf2_per_cu_data *per_cu
20029 = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
20032 cu = per_objfile->get_cu (per_cu);
20033 if (cu == NULL || cu->partial_dies == NULL)
20034 load_partial_comp_unit (per_cu, per_objfile, nullptr);
20036 cu = per_objfile->get_cu (per_cu);
20039 pd = cu->find_partial_die (sect_off);
20042 /* If we didn't find it, and not all dies have been loaded,
20043 load them all and try again. */
20045 if (pd == NULL && cu->per_cu->load_all_dies == 0)
20047 cu->per_cu->load_all_dies = 1;
20049 /* This is nasty. When we reread the DIEs, somewhere up the call chain
20050 THIS_CU->cu may already be in use. So we can't just free it and
20051 replace its DIEs with the ones we read in. Instead, we leave those
20052 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
20053 and clobber THIS_CU->cu->partial_dies with the hash table for the new
20055 load_partial_comp_unit (cu->per_cu, per_objfile, cu);
20057 pd = cu->find_partial_die (sect_off);
20061 error (_("Dwarf Error: Cannot not find DIE at %s [from module %s]\n"),
20062 sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
20066 /* See if we can figure out if the class lives in a namespace. We do
20067 this by looking for a member function; its demangled name will
20068 contain namespace info, if there is any. */
20071 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
20072 struct dwarf2_cu *cu)
20074 /* NOTE: carlton/2003-10-07: Getting the info this way changes
20075 what template types look like, because the demangler
20076 frequently doesn't give the same name as the debug info. We
20077 could fix this by only using the demangled name to get the
20078 prefix (but see comment in read_structure_type). */
20080 struct partial_die_info *real_pdi;
20081 struct partial_die_info *child_pdi;
20083 /* If this DIE (this DIE's specification, if any) has a parent, then
20084 we should not do this. We'll prepend the parent's fully qualified
20085 name when we create the partial symbol. */
20087 real_pdi = struct_pdi;
20088 while (real_pdi->has_specification)
20090 auto res = find_partial_die (real_pdi->spec_offset,
20091 real_pdi->spec_is_dwz, cu);
20092 real_pdi = res.pdi;
20096 if (real_pdi->die_parent != NULL)
20099 for (child_pdi = struct_pdi->die_child;
20101 child_pdi = child_pdi->die_sibling)
20103 if (child_pdi->tag == DW_TAG_subprogram
20104 && child_pdi->linkage_name != NULL)
20106 gdb::unique_xmalloc_ptr<char> actual_class_name
20107 (cu->language_defn->class_name_from_physname
20108 (child_pdi->linkage_name));
20109 if (actual_class_name != NULL)
20111 struct objfile *objfile = cu->per_objfile->objfile;
20112 struct_pdi->raw_name = objfile->intern (actual_class_name.get ());
20113 struct_pdi->canonical_name = 1;
20120 /* Return true if a DIE with TAG may have the DW_AT_const_value
20124 can_have_DW_AT_const_value_p (enum dwarf_tag tag)
20128 case DW_TAG_constant:
20129 case DW_TAG_enumerator:
20130 case DW_TAG_formal_parameter:
20131 case DW_TAG_template_value_param:
20132 case DW_TAG_variable:
20140 partial_die_info::fixup (struct dwarf2_cu *cu)
20142 /* Once we've fixed up a die, there's no point in doing so again.
20143 This also avoids a memory leak if we were to call
20144 guess_partial_die_structure_name multiple times. */
20148 /* If we found a reference attribute and the DIE has no name, try
20149 to find a name in the referred to DIE. */
20151 if (raw_name == NULL && has_specification)
20153 struct partial_die_info *spec_die;
20155 auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
20156 spec_die = res.pdi;
20159 spec_die->fixup (cu);
20161 if (spec_die->raw_name)
20163 raw_name = spec_die->raw_name;
20164 canonical_name = spec_die->canonical_name;
20166 /* Copy DW_AT_external attribute if it is set. */
20167 if (spec_die->is_external)
20168 is_external = spec_die->is_external;
20172 if (!has_const_value && has_specification
20173 && can_have_DW_AT_const_value_p (tag))
20175 struct partial_die_info *spec_die;
20177 auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
20178 spec_die = res.pdi;
20181 spec_die->fixup (cu);
20183 if (spec_die->has_const_value)
20185 /* Copy DW_AT_const_value attribute if it is set. */
20186 has_const_value = spec_die->has_const_value;
20190 /* Set default names for some unnamed DIEs. */
20192 if (raw_name == NULL && tag == DW_TAG_namespace)
20194 raw_name = CP_ANONYMOUS_NAMESPACE_STR;
20195 canonical_name = 1;
20198 /* If there is no parent die to provide a namespace, and there are
20199 children, see if we can determine the namespace from their linkage
20201 if (cu->language == language_cplus
20202 && !cu->per_objfile->per_bfd->types.empty ()
20203 && die_parent == NULL
20205 && (tag == DW_TAG_class_type
20206 || tag == DW_TAG_structure_type
20207 || tag == DW_TAG_union_type))
20208 guess_partial_die_structure_name (this, cu);
20210 /* GCC might emit a nameless struct or union that has a linkage
20211 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
20212 if (raw_name == NULL
20213 && (tag == DW_TAG_class_type
20214 || tag == DW_TAG_interface_type
20215 || tag == DW_TAG_structure_type
20216 || tag == DW_TAG_union_type)
20217 && linkage_name != NULL)
20219 gdb::unique_xmalloc_ptr<char> demangled
20220 (gdb_demangle (linkage_name, DMGL_TYPES));
20221 if (demangled != nullptr)
20225 /* Strip any leading namespaces/classes, keep only the base name.
20226 DW_AT_name for named DIEs does not contain the prefixes. */
20227 base = strrchr (demangled.get (), ':');
20228 if (base && base > demangled.get () && base[-1] == ':')
20231 base = demangled.get ();
20233 struct objfile *objfile = cu->per_objfile->objfile;
20234 raw_name = objfile->intern (base);
20235 canonical_name = 1;
20242 /* Read the .debug_loclists or .debug_rnglists header (they are the same format)
20243 contents from the given SECTION in the HEADER.
20245 HEADER_OFFSET is the offset of the header in the section. */
20247 read_loclists_rnglists_header (struct loclists_rnglists_header *header,
20248 struct dwarf2_section_info *section,
20249 sect_offset header_offset)
20251 unsigned int bytes_read;
20252 bfd *abfd = section->get_bfd_owner ();
20253 const gdb_byte *info_ptr = section->buffer + to_underlying (header_offset);
20255 header->length = read_initial_length (abfd, info_ptr, &bytes_read);
20256 info_ptr += bytes_read;
20258 header->version = read_2_bytes (abfd, info_ptr);
20261 header->addr_size = read_1_byte (abfd, info_ptr);
20264 header->segment_collector_size = read_1_byte (abfd, info_ptr);
20267 header->offset_entry_count = read_4_bytes (abfd, info_ptr);
20270 /* Return the DW_AT_loclists_base value for the CU. */
20272 lookup_loclist_base (struct dwarf2_cu *cu)
20274 /* For the .dwo unit, the loclist_base points to the first offset following
20275 the header. The header consists of the following entities-
20276 1. Unit Length (4 bytes for 32 bit DWARF format, and 12 bytes for the 64
20278 2. version (2 bytes)
20279 3. address size (1 byte)
20280 4. segment selector size (1 byte)
20281 5. offset entry count (4 bytes)
20282 These sizes are derived as per the DWARFv5 standard. */
20283 if (cu->dwo_unit != nullptr)
20285 if (cu->header.initial_length_size == 4)
20286 return LOCLIST_HEADER_SIZE32;
20287 return LOCLIST_HEADER_SIZE64;
20289 return cu->loclist_base;
20292 /* Given a DW_FORM_loclistx value LOCLIST_INDEX, fetch the offset from the
20293 array of offsets in the .debug_loclists section. */
20296 read_loclist_index (struct dwarf2_cu *cu, ULONGEST loclist_index)
20298 dwarf2_per_objfile *per_objfile = cu->per_objfile;
20299 struct objfile *objfile = per_objfile->objfile;
20300 bfd *abfd = objfile->obfd;
20301 ULONGEST loclist_header_size =
20302 (cu->header.initial_length_size == 4 ? LOCLIST_HEADER_SIZE32
20303 : LOCLIST_HEADER_SIZE64);
20304 ULONGEST loclist_base = lookup_loclist_base (cu);
20306 /* Offset in .debug_loclists of the offset for LOCLIST_INDEX. */
20307 ULONGEST start_offset =
20308 loclist_base + loclist_index * cu->header.offset_size;
20310 /* Get loclists section. */
20311 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
20313 /* Read the loclists section content. */
20314 section->read (objfile);
20315 if (section->buffer == NULL)
20316 error (_("DW_FORM_loclistx used without .debug_loclists "
20317 "section [in module %s]"), objfile_name (objfile));
20319 /* DW_AT_loclists_base points after the .debug_loclists contribution header,
20320 so if loclist_base is smaller than the header size, we have a problem. */
20321 if (loclist_base < loclist_header_size)
20322 error (_("DW_AT_loclists_base is smaller than header size [in module %s]"),
20323 objfile_name (objfile));
20325 /* Read the header of the loclists contribution. */
20326 struct loclists_rnglists_header header;
20327 read_loclists_rnglists_header (&header, section,
20328 (sect_offset) (loclist_base - loclist_header_size));
20330 /* Verify the loclist index is valid. */
20331 if (loclist_index >= header.offset_entry_count)
20332 error (_("DW_FORM_loclistx pointing outside of "
20333 ".debug_loclists offset array [in module %s]"),
20334 objfile_name (objfile));
20336 /* Validate that reading won't go beyond the end of the section. */
20337 if (start_offset + cu->header.offset_size > section->size)
20338 error (_("Reading DW_FORM_loclistx index beyond end of"
20339 ".debug_loclists section [in module %s]"),
20340 objfile_name (objfile));
20342 const gdb_byte *info_ptr = section->buffer + start_offset;
20344 if (cu->header.offset_size == 4)
20345 return (sect_offset) (bfd_get_32 (abfd, info_ptr) + loclist_base);
20347 return (sect_offset) (bfd_get_64 (abfd, info_ptr) + loclist_base);
20350 /* Given a DW_FORM_rnglistx value RNGLIST_INDEX, fetch the offset from the
20351 array of offsets in the .debug_rnglists section. */
20354 read_rnglist_index (struct dwarf2_cu *cu, ULONGEST rnglist_index,
20357 struct dwarf2_per_objfile *dwarf2_per_objfile = cu->per_objfile;
20358 struct objfile *objfile = dwarf2_per_objfile->objfile;
20359 bfd *abfd = objfile->obfd;
20360 ULONGEST rnglist_header_size =
20361 (cu->header.initial_length_size == 4 ? RNGLIST_HEADER_SIZE32
20362 : RNGLIST_HEADER_SIZE64);
20364 /* When reading a DW_FORM_rnglistx from a DWO, we read from the DWO's
20365 .debug_rnglists.dwo section. The rnglists base given in the skeleton
20367 ULONGEST rnglist_base =
20368 (cu->dwo_unit != nullptr) ? rnglist_header_size : cu->rnglists_base;
20370 /* Offset in .debug_rnglists of the offset for RNGLIST_INDEX. */
20371 ULONGEST start_offset =
20372 rnglist_base + rnglist_index * cu->header.offset_size;
20374 /* Get rnglists section. */
20375 struct dwarf2_section_info *section = cu_debug_rnglists_section (cu, tag);
20377 /* Read the rnglists section content. */
20378 section->read (objfile);
20379 if (section->buffer == nullptr)
20380 error (_("DW_FORM_rnglistx used without .debug_rnglists section "
20382 objfile_name (objfile));
20384 /* DW_AT_rnglists_base points after the .debug_rnglists contribution header,
20385 so if rnglist_base is smaller than the header size, we have a problem. */
20386 if (rnglist_base < rnglist_header_size)
20387 error (_("DW_AT_rnglists_base is smaller than header size [in module %s]"),
20388 objfile_name (objfile));
20390 /* Read the header of the rnglists contribution. */
20391 struct loclists_rnglists_header header;
20392 read_loclists_rnglists_header (&header, section,
20393 (sect_offset) (rnglist_base - rnglist_header_size));
20395 /* Verify the rnglist index is valid. */
20396 if (rnglist_index >= header.offset_entry_count)
20397 error (_("DW_FORM_rnglistx index pointing outside of "
20398 ".debug_rnglists offset array [in module %s]"),
20399 objfile_name (objfile));
20401 /* Validate that reading won't go beyond the end of the section. */
20402 if (start_offset + cu->header.offset_size > section->size)
20403 error (_("Reading DW_FORM_rnglistx index beyond end of"
20404 ".debug_rnglists section [in module %s]"),
20405 objfile_name (objfile));
20407 const gdb_byte *info_ptr = section->buffer + start_offset;
20409 if (cu->header.offset_size == 4)
20410 return (sect_offset) (read_4_bytes (abfd, info_ptr) + rnglist_base);
20412 return (sect_offset) (read_8_bytes (abfd, info_ptr) + rnglist_base);
20415 /* Process the attributes that had to be skipped in the first round. These
20416 attributes are the ones that need str_offsets_base or addr_base attributes.
20417 They could not have been processed in the first round, because at the time
20418 the values of str_offsets_base or addr_base may not have been known. */
20420 read_attribute_reprocess (const struct die_reader_specs *reader,
20421 struct attribute *attr, dwarf_tag tag)
20423 struct dwarf2_cu *cu = reader->cu;
20424 switch (attr->form)
20426 case DW_FORM_addrx:
20427 case DW_FORM_GNU_addr_index:
20428 attr->set_address (read_addr_index (cu,
20429 attr->as_unsigned_reprocess ()));
20431 case DW_FORM_loclistx:
20433 sect_offset loclists_sect_off
20434 = read_loclist_index (cu, attr->as_unsigned_reprocess ());
20436 attr->set_unsigned (to_underlying (loclists_sect_off));
20439 case DW_FORM_rnglistx:
20441 sect_offset rnglists_sect_off
20442 = read_rnglist_index (cu, attr->as_unsigned_reprocess (), tag);
20444 attr->set_unsigned (to_underlying (rnglists_sect_off));
20448 case DW_FORM_strx1:
20449 case DW_FORM_strx2:
20450 case DW_FORM_strx3:
20451 case DW_FORM_strx4:
20452 case DW_FORM_GNU_str_index:
20454 unsigned int str_index = attr->as_unsigned_reprocess ();
20455 gdb_assert (!attr->canonical_string_p ());
20456 if (reader->dwo_file != NULL)
20457 attr->set_string_noncanonical (read_dwo_str_index (reader,
20460 attr->set_string_noncanonical (read_stub_str_index (cu,
20465 gdb_assert_not_reached (_("Unexpected DWARF form."));
20469 /* Read an attribute value described by an attribute form. */
20471 static const gdb_byte *
20472 read_attribute_value (const struct die_reader_specs *reader,
20473 struct attribute *attr, unsigned form,
20474 LONGEST implicit_const, const gdb_byte *info_ptr)
20476 struct dwarf2_cu *cu = reader->cu;
20477 dwarf2_per_objfile *per_objfile = cu->per_objfile;
20478 struct objfile *objfile = per_objfile->objfile;
20479 bfd *abfd = reader->abfd;
20480 struct comp_unit_head *cu_header = &cu->header;
20481 unsigned int bytes_read;
20482 struct dwarf_block *blk;
20484 attr->form = (enum dwarf_form) form;
20487 case DW_FORM_ref_addr:
20488 if (cu_header->version == 2)
20489 attr->set_unsigned (cu_header->read_address (abfd, info_ptr,
20492 attr->set_unsigned (cu_header->read_offset (abfd, info_ptr,
20494 info_ptr += bytes_read;
20496 case DW_FORM_GNU_ref_alt:
20497 attr->set_unsigned (cu_header->read_offset (abfd, info_ptr,
20499 info_ptr += bytes_read;
20503 struct gdbarch *gdbarch = objfile->arch ();
20504 CORE_ADDR addr = cu_header->read_address (abfd, info_ptr, &bytes_read);
20505 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr);
20506 attr->set_address (addr);
20507 info_ptr += bytes_read;
20510 case DW_FORM_block2:
20511 blk = dwarf_alloc_block (cu);
20512 blk->size = read_2_bytes (abfd, info_ptr);
20514 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
20515 info_ptr += blk->size;
20516 attr->set_block (blk);
20518 case DW_FORM_block4:
20519 blk = dwarf_alloc_block (cu);
20520 blk->size = read_4_bytes (abfd, info_ptr);
20522 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
20523 info_ptr += blk->size;
20524 attr->set_block (blk);
20526 case DW_FORM_data2:
20527 attr->set_unsigned (read_2_bytes (abfd, info_ptr));
20530 case DW_FORM_data4:
20531 attr->set_unsigned (read_4_bytes (abfd, info_ptr));
20534 case DW_FORM_data8:
20535 attr->set_unsigned (read_8_bytes (abfd, info_ptr));
20538 case DW_FORM_data16:
20539 blk = dwarf_alloc_block (cu);
20541 blk->data = read_n_bytes (abfd, info_ptr, 16);
20543 attr->set_block (blk);
20545 case DW_FORM_sec_offset:
20546 attr->set_unsigned (cu_header->read_offset (abfd, info_ptr,
20548 info_ptr += bytes_read;
20550 case DW_FORM_loclistx:
20552 attr->set_unsigned_reprocess (read_unsigned_leb128 (abfd, info_ptr,
20554 info_ptr += bytes_read;
20557 case DW_FORM_string:
20558 attr->set_string_noncanonical (read_direct_string (abfd, info_ptr,
20560 info_ptr += bytes_read;
20563 if (!cu->per_cu->is_dwz)
20565 attr->set_string_noncanonical
20566 (read_indirect_string (per_objfile,
20567 abfd, info_ptr, cu_header,
20569 info_ptr += bytes_read;
20573 case DW_FORM_line_strp:
20574 if (!cu->per_cu->is_dwz)
20576 attr->set_string_noncanonical
20577 (per_objfile->read_line_string (info_ptr, cu_header,
20579 info_ptr += bytes_read;
20583 case DW_FORM_GNU_strp_alt:
20585 dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd, true);
20586 LONGEST str_offset = cu_header->read_offset (abfd, info_ptr,
20589 attr->set_string_noncanonical
20590 (dwz->read_string (objfile, str_offset));
20591 info_ptr += bytes_read;
20594 case DW_FORM_exprloc:
20595 case DW_FORM_block:
20596 blk = dwarf_alloc_block (cu);
20597 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
20598 info_ptr += bytes_read;
20599 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
20600 info_ptr += blk->size;
20601 attr->set_block (blk);
20603 case DW_FORM_block1:
20604 blk = dwarf_alloc_block (cu);
20605 blk->size = read_1_byte (abfd, info_ptr);
20607 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
20608 info_ptr += blk->size;
20609 attr->set_block (blk);
20611 case DW_FORM_data1:
20613 attr->set_unsigned (read_1_byte (abfd, info_ptr));
20616 case DW_FORM_flag_present:
20617 attr->set_unsigned (1);
20619 case DW_FORM_sdata:
20620 attr->set_signed (read_signed_leb128 (abfd, info_ptr, &bytes_read));
20621 info_ptr += bytes_read;
20623 case DW_FORM_rnglistx:
20625 attr->set_unsigned_reprocess (read_unsigned_leb128 (abfd, info_ptr,
20627 info_ptr += bytes_read;
20630 case DW_FORM_udata:
20631 attr->set_unsigned (read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
20632 info_ptr += bytes_read;
20635 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20636 + read_1_byte (abfd, info_ptr)));
20640 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20641 + read_2_bytes (abfd, info_ptr)));
20645 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20646 + read_4_bytes (abfd, info_ptr)));
20650 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20651 + read_8_bytes (abfd, info_ptr)));
20654 case DW_FORM_ref_sig8:
20655 attr->set_signature (read_8_bytes (abfd, info_ptr));
20658 case DW_FORM_ref_udata:
20659 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20660 + read_unsigned_leb128 (abfd, info_ptr,
20662 info_ptr += bytes_read;
20664 case DW_FORM_indirect:
20665 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
20666 info_ptr += bytes_read;
20667 if (form == DW_FORM_implicit_const)
20669 implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
20670 info_ptr += bytes_read;
20672 info_ptr = read_attribute_value (reader, attr, form, implicit_const,
20675 case DW_FORM_implicit_const:
20676 attr->set_signed (implicit_const);
20678 case DW_FORM_addrx:
20679 case DW_FORM_GNU_addr_index:
20680 attr->set_unsigned_reprocess (read_unsigned_leb128 (abfd, info_ptr,
20682 info_ptr += bytes_read;
20685 case DW_FORM_strx1:
20686 case DW_FORM_strx2:
20687 case DW_FORM_strx3:
20688 case DW_FORM_strx4:
20689 case DW_FORM_GNU_str_index:
20691 ULONGEST str_index;
20692 if (form == DW_FORM_strx1)
20694 str_index = read_1_byte (abfd, info_ptr);
20697 else if (form == DW_FORM_strx2)
20699 str_index = read_2_bytes (abfd, info_ptr);
20702 else if (form == DW_FORM_strx3)
20704 str_index = read_3_bytes (abfd, info_ptr);
20707 else if (form == DW_FORM_strx4)
20709 str_index = read_4_bytes (abfd, info_ptr);
20714 str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
20715 info_ptr += bytes_read;
20717 attr->set_unsigned_reprocess (str_index);
20721 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
20722 dwarf_form_name (form),
20723 bfd_get_filename (abfd));
20727 if (cu->per_cu->is_dwz && attr->form_is_ref ())
20728 attr->form = DW_FORM_GNU_ref_alt;
20730 /* We have seen instances where the compiler tried to emit a byte
20731 size attribute of -1 which ended up being encoded as an unsigned
20732 0xffffffff. Although 0xffffffff is technically a valid size value,
20733 an object of this size seems pretty unlikely so we can relatively
20734 safely treat these cases as if the size attribute was invalid and
20735 treat them as zero by default. */
20736 if (attr->name == DW_AT_byte_size
20737 && form == DW_FORM_data4
20738 && attr->as_unsigned () >= 0xffffffff)
20741 (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
20742 hex_string (attr->as_unsigned ()));
20743 attr->set_unsigned (0);
20749 /* Read an attribute described by an abbreviated attribute. */
20751 static const gdb_byte *
20752 read_attribute (const struct die_reader_specs *reader,
20753 struct attribute *attr, const struct attr_abbrev *abbrev,
20754 const gdb_byte *info_ptr)
20756 attr->name = abbrev->name;
20757 attr->string_is_canonical = 0;
20758 attr->requires_reprocessing = 0;
20759 return read_attribute_value (reader, attr, abbrev->form,
20760 abbrev->implicit_const, info_ptr);
20763 /* Return pointer to string at .debug_str offset STR_OFFSET. */
20765 static const char *
20766 read_indirect_string_at_offset (dwarf2_per_objfile *per_objfile,
20767 LONGEST str_offset)
20769 return per_objfile->per_bfd->str.read_string (per_objfile->objfile,
20770 str_offset, "DW_FORM_strp");
20773 /* Return pointer to string at .debug_str offset as read from BUF.
20774 BUF is assumed to be in a compilation unit described by CU_HEADER.
20775 Return *BYTES_READ_PTR count of bytes read from BUF. */
20777 static const char *
20778 read_indirect_string (dwarf2_per_objfile *per_objfile, bfd *abfd,
20779 const gdb_byte *buf,
20780 const struct comp_unit_head *cu_header,
20781 unsigned int *bytes_read_ptr)
20783 LONGEST str_offset = cu_header->read_offset (abfd, buf, bytes_read_ptr);
20785 return read_indirect_string_at_offset (per_objfile, str_offset);
20791 dwarf2_per_objfile::read_line_string (const gdb_byte *buf,
20792 const struct comp_unit_head *cu_header,
20793 unsigned int *bytes_read_ptr)
20795 bfd *abfd = objfile->obfd;
20796 LONGEST str_offset = cu_header->read_offset (abfd, buf, bytes_read_ptr);
20798 return per_bfd->line_str.read_string (objfile, str_offset, "DW_FORM_line_strp");
20801 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
20802 ADDR_BASE is the DW_AT_addr_base (DW_AT_GNU_addr_base) attribute or zero.
20803 ADDR_SIZE is the size of addresses from the CU header. */
20806 read_addr_index_1 (dwarf2_per_objfile *per_objfile, unsigned int addr_index,
20807 gdb::optional<ULONGEST> addr_base, int addr_size)
20809 struct objfile *objfile = per_objfile->objfile;
20810 bfd *abfd = objfile->obfd;
20811 const gdb_byte *info_ptr;
20812 ULONGEST addr_base_or_zero = addr_base.has_value () ? *addr_base : 0;
20814 per_objfile->per_bfd->addr.read (objfile);
20815 if (per_objfile->per_bfd->addr.buffer == NULL)
20816 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
20817 objfile_name (objfile));
20818 if (addr_base_or_zero + addr_index * addr_size
20819 >= per_objfile->per_bfd->addr.size)
20820 error (_("DW_FORM_addr_index pointing outside of "
20821 ".debug_addr section [in module %s]"),
20822 objfile_name (objfile));
20823 info_ptr = (per_objfile->per_bfd->addr.buffer + addr_base_or_zero
20824 + addr_index * addr_size);
20825 if (addr_size == 4)
20826 return bfd_get_32 (abfd, info_ptr);
20828 return bfd_get_64 (abfd, info_ptr);
20831 /* Given index ADDR_INDEX in .debug_addr, fetch the value. */
20834 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
20836 return read_addr_index_1 (cu->per_objfile, addr_index,
20837 cu->addr_base, cu->header.addr_size);
20840 /* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
20843 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
20844 unsigned int *bytes_read)
20846 bfd *abfd = cu->per_objfile->objfile->obfd;
20847 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
20849 return read_addr_index (cu, addr_index);
20855 dwarf2_read_addr_index (dwarf2_per_cu_data *per_cu,
20856 dwarf2_per_objfile *per_objfile,
20857 unsigned int addr_index)
20859 struct dwarf2_cu *cu = per_objfile->get_cu (per_cu);
20860 gdb::optional<ULONGEST> addr_base;
20863 /* We need addr_base and addr_size.
20864 If we don't have PER_CU->cu, we have to get it.
20865 Nasty, but the alternative is storing the needed info in PER_CU,
20866 which at this point doesn't seem justified: it's not clear how frequently
20867 it would get used and it would increase the size of every PER_CU.
20868 Entry points like dwarf2_per_cu_addr_size do a similar thing
20869 so we're not in uncharted territory here.
20870 Alas we need to be a bit more complicated as addr_base is contained
20873 We don't need to read the entire CU(/TU).
20874 We just need the header and top level die.
20876 IWBN to use the aging mechanism to let us lazily later discard the CU.
20877 For now we skip this optimization. */
20881 addr_base = cu->addr_base;
20882 addr_size = cu->header.addr_size;
20886 cutu_reader reader (per_cu, per_objfile, nullptr, nullptr, false);
20887 addr_base = reader.cu->addr_base;
20888 addr_size = reader.cu->header.addr_size;
20891 return read_addr_index_1 (per_objfile, addr_index, addr_base, addr_size);
20894 /* Given a DW_FORM_GNU_str_index value STR_INDEX, fetch the string.
20895 STR_SECTION, STR_OFFSETS_SECTION can be from a Fission stub or a
20898 static const char *
20899 read_str_index (struct dwarf2_cu *cu,
20900 struct dwarf2_section_info *str_section,
20901 struct dwarf2_section_info *str_offsets_section,
20902 ULONGEST str_offsets_base, ULONGEST str_index)
20904 dwarf2_per_objfile *per_objfile = cu->per_objfile;
20905 struct objfile *objfile = per_objfile->objfile;
20906 const char *objf_name = objfile_name (objfile);
20907 bfd *abfd = objfile->obfd;
20908 const gdb_byte *info_ptr;
20909 ULONGEST str_offset;
20910 static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
20912 str_section->read (objfile);
20913 str_offsets_section->read (objfile);
20914 if (str_section->buffer == NULL)
20915 error (_("%s used without %s section"
20916 " in CU at offset %s [in module %s]"),
20917 form_name, str_section->get_name (),
20918 sect_offset_str (cu->header.sect_off), objf_name);
20919 if (str_offsets_section->buffer == NULL)
20920 error (_("%s used without %s section"
20921 " in CU at offset %s [in module %s]"),
20922 form_name, str_section->get_name (),
20923 sect_offset_str (cu->header.sect_off), objf_name);
20924 info_ptr = (str_offsets_section->buffer
20926 + str_index * cu->header.offset_size);
20927 if (cu->header.offset_size == 4)
20928 str_offset = bfd_get_32 (abfd, info_ptr);
20930 str_offset = bfd_get_64 (abfd, info_ptr);
20931 if (str_offset >= str_section->size)
20932 error (_("Offset from %s pointing outside of"
20933 " .debug_str.dwo section in CU at offset %s [in module %s]"),
20934 form_name, sect_offset_str (cu->header.sect_off), objf_name);
20935 return (const char *) (str_section->buffer + str_offset);
20938 /* Given a DW_FORM_GNU_str_index from a DWO file, fetch the string. */
20940 static const char *
20941 read_dwo_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
20943 ULONGEST str_offsets_base = reader->cu->header.version >= 5
20944 ? reader->cu->header.addr_size : 0;
20945 return read_str_index (reader->cu,
20946 &reader->dwo_file->sections.str,
20947 &reader->dwo_file->sections.str_offsets,
20948 str_offsets_base, str_index);
20951 /* Given a DW_FORM_GNU_str_index from a Fission stub, fetch the string. */
20953 static const char *
20954 read_stub_str_index (struct dwarf2_cu *cu, ULONGEST str_index)
20956 struct objfile *objfile = cu->per_objfile->objfile;
20957 const char *objf_name = objfile_name (objfile);
20958 static const char form_name[] = "DW_FORM_GNU_str_index";
20959 static const char str_offsets_attr_name[] = "DW_AT_str_offsets";
20961 if (!cu->str_offsets_base.has_value ())
20962 error (_("%s used in Fission stub without %s"
20963 " in CU at offset 0x%lx [in module %s]"),
20964 form_name, str_offsets_attr_name,
20965 (long) cu->header.offset_size, objf_name);
20967 return read_str_index (cu,
20968 &cu->per_objfile->per_bfd->str,
20969 &cu->per_objfile->per_bfd->str_offsets,
20970 *cu->str_offsets_base, str_index);
20973 /* Return the length of an LEB128 number in BUF. */
20976 leb128_size (const gdb_byte *buf)
20978 const gdb_byte *begin = buf;
20984 if ((byte & 128) == 0)
20985 return buf - begin;
20990 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
20999 cu->language = language_c;
21002 case DW_LANG_C_plus_plus:
21003 case DW_LANG_C_plus_plus_11:
21004 case DW_LANG_C_plus_plus_14:
21005 cu->language = language_cplus;
21008 cu->language = language_d;
21010 case DW_LANG_Fortran77:
21011 case DW_LANG_Fortran90:
21012 case DW_LANG_Fortran95:
21013 case DW_LANG_Fortran03:
21014 case DW_LANG_Fortran08:
21015 cu->language = language_fortran;
21018 cu->language = language_go;
21020 case DW_LANG_Mips_Assembler:
21021 cu->language = language_asm;
21023 case DW_LANG_Ada83:
21024 case DW_LANG_Ada95:
21025 cu->language = language_ada;
21027 case DW_LANG_Modula2:
21028 cu->language = language_m2;
21030 case DW_LANG_Pascal83:
21031 cu->language = language_pascal;
21034 cu->language = language_objc;
21037 case DW_LANG_Rust_old:
21038 cu->language = language_rust;
21040 case DW_LANG_Cobol74:
21041 case DW_LANG_Cobol85:
21043 cu->language = language_minimal;
21046 cu->language_defn = language_def (cu->language);
21049 /* Return the named attribute or NULL if not there. */
21051 static struct attribute *
21052 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
21057 struct attribute *spec = NULL;
21059 for (i = 0; i < die->num_attrs; ++i)
21061 if (die->attrs[i].name == name)
21062 return &die->attrs[i];
21063 if (die->attrs[i].name == DW_AT_specification
21064 || die->attrs[i].name == DW_AT_abstract_origin)
21065 spec = &die->attrs[i];
21071 die = follow_die_ref (die, spec, &cu);
21077 /* Return the string associated with a string-typed attribute, or NULL if it
21078 is either not found or is of an incorrect type. */
21080 static const char *
21081 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
21083 struct attribute *attr;
21084 const char *str = NULL;
21086 attr = dwarf2_attr (die, name, cu);
21090 str = attr->as_string ();
21091 if (str == nullptr)
21092 complaint (_("string type expected for attribute %s for "
21093 "DIE at %s in module %s"),
21094 dwarf_attr_name (name), sect_offset_str (die->sect_off),
21095 objfile_name (cu->per_objfile->objfile));
21101 /* Return the dwo name or NULL if not present. If present, it is in either
21102 DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute. */
21103 static const char *
21104 dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu)
21106 const char *dwo_name = dwarf2_string_attr (die, DW_AT_GNU_dwo_name, cu);
21107 if (dwo_name == nullptr)
21108 dwo_name = dwarf2_string_attr (die, DW_AT_dwo_name, cu);
21112 /* Return non-zero iff the attribute NAME is defined for the given DIE,
21113 and holds a non-zero value. This function should only be used for
21114 DW_FORM_flag or DW_FORM_flag_present attributes. */
21117 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
21119 struct attribute *attr = dwarf2_attr (die, name, cu);
21121 return attr != nullptr && attr->as_boolean ();
21125 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
21127 /* A DIE is a declaration if it has a DW_AT_declaration attribute
21128 which value is non-zero. However, we have to be careful with
21129 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
21130 (via dwarf2_flag_true_p) follows this attribute. So we may
21131 end up accidently finding a declaration attribute that belongs
21132 to a different DIE referenced by the specification attribute,
21133 even though the given DIE does not have a declaration attribute. */
21134 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
21135 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
21138 /* Return the die giving the specification for DIE, if there is
21139 one. *SPEC_CU is the CU containing DIE on input, and the CU
21140 containing the return value on output. If there is no
21141 specification, but there is an abstract origin, that is
21144 static struct die_info *
21145 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
21147 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
21150 if (spec_attr == NULL)
21151 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
21153 if (spec_attr == NULL)
21156 return follow_die_ref (die, spec_attr, spec_cu);
21159 /* Stub for free_line_header to match void * callback types. */
21162 free_line_header_voidp (void *arg)
21164 struct line_header *lh = (struct line_header *) arg;
21169 /* A convenience function to find the proper .debug_line section for a CU. */
21171 static struct dwarf2_section_info *
21172 get_debug_line_section (struct dwarf2_cu *cu)
21174 struct dwarf2_section_info *section;
21175 dwarf2_per_objfile *per_objfile = cu->per_objfile;
21177 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
21179 if (cu->dwo_unit && cu->per_cu->is_debug_types)
21180 section = &cu->dwo_unit->dwo_file->sections.line;
21181 else if (cu->per_cu->is_dwz)
21183 dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd, true);
21185 section = &dwz->line;
21188 section = &per_objfile->per_bfd->line;
21193 /* Read the statement program header starting at OFFSET in
21194 .debug_line, or .debug_line.dwo. Return a pointer
21195 to a struct line_header, allocated using xmalloc.
21196 Returns NULL if there is a problem reading the header, e.g., if it
21197 has a version we don't understand.
21199 NOTE: the strings in the include directory and file name tables of
21200 the returned object point into the dwarf line section buffer,
21201 and must not be freed. */
21203 static line_header_up
21204 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
21206 struct dwarf2_section_info *section;
21207 dwarf2_per_objfile *per_objfile = cu->per_objfile;
21209 section = get_debug_line_section (cu);
21210 section->read (per_objfile->objfile);
21211 if (section->buffer == NULL)
21213 if (cu->dwo_unit && cu->per_cu->is_debug_types)
21214 complaint (_("missing .debug_line.dwo section"));
21216 complaint (_("missing .debug_line section"));
21220 return dwarf_decode_line_header (sect_off, cu->per_cu->is_dwz,
21221 per_objfile, section, &cu->header);
21224 /* Subroutine of dwarf_decode_lines to simplify it.
21225 Return the file name of the psymtab for the given file_entry.
21226 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21227 If space for the result is malloc'd, *NAME_HOLDER will be set.
21228 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename. */
21230 static const char *
21231 psymtab_include_file_name (const struct line_header *lh, const file_entry &fe,
21232 const dwarf2_psymtab *pst,
21233 const char *comp_dir,
21234 gdb::unique_xmalloc_ptr<char> *name_holder)
21236 const char *include_name = fe.name;
21237 const char *include_name_to_compare = include_name;
21238 const char *pst_filename;
21241 const char *dir_name = fe.include_dir (lh);
21243 gdb::unique_xmalloc_ptr<char> hold_compare;
21244 if (!IS_ABSOLUTE_PATH (include_name)
21245 && (dir_name != NULL || comp_dir != NULL))
21247 /* Avoid creating a duplicate psymtab for PST.
21248 We do this by comparing INCLUDE_NAME and PST_FILENAME.
21249 Before we do the comparison, however, we need to account
21250 for DIR_NAME and COMP_DIR.
21251 First prepend dir_name (if non-NULL). If we still don't
21252 have an absolute path prepend comp_dir (if non-NULL).
21253 However, the directory we record in the include-file's
21254 psymtab does not contain COMP_DIR (to match the
21255 corresponding symtab(s)).
21260 bash$ gcc -g ./hello.c
21261 include_name = "hello.c"
21263 DW_AT_comp_dir = comp_dir = "/tmp"
21264 DW_AT_name = "./hello.c"
21268 if (dir_name != NULL)
21270 name_holder->reset (concat (dir_name, SLASH_STRING,
21271 include_name, (char *) NULL));
21272 include_name = name_holder->get ();
21273 include_name_to_compare = include_name;
21275 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
21277 hold_compare.reset (concat (comp_dir, SLASH_STRING,
21278 include_name, (char *) NULL));
21279 include_name_to_compare = hold_compare.get ();
21283 pst_filename = pst->filename;
21284 gdb::unique_xmalloc_ptr<char> copied_name;
21285 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
21287 copied_name.reset (concat (pst->dirname, SLASH_STRING,
21288 pst_filename, (char *) NULL));
21289 pst_filename = copied_name.get ();
21292 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
21296 return include_name;
21299 /* State machine to track the state of the line number program. */
21301 class lnp_state_machine
21304 /* Initialize a machine state for the start of a line number
21306 lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
21307 bool record_lines_p);
21309 file_entry *current_file ()
21311 /* lh->file_names is 0-based, but the file name numbers in the
21312 statement program are 1-based. */
21313 return m_line_header->file_name_at (m_file);
21316 /* Record the line in the state machine. END_SEQUENCE is true if
21317 we're processing the end of a sequence. */
21318 void record_line (bool end_sequence);
21320 /* Check ADDRESS is -1, or zero and less than UNRELOCATED_LOWPC, and if true
21321 nop-out rest of the lines in this sequence. */
21322 void check_line_address (struct dwarf2_cu *cu,
21323 const gdb_byte *line_ptr,
21324 CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
21326 void handle_set_discriminator (unsigned int discriminator)
21328 m_discriminator = discriminator;
21329 m_line_has_non_zero_discriminator |= discriminator != 0;
21332 /* Handle DW_LNE_set_address. */
21333 void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
21336 address += baseaddr;
21337 m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
21340 /* Handle DW_LNS_advance_pc. */
21341 void handle_advance_pc (CORE_ADDR adjust);
21343 /* Handle a special opcode. */
21344 void handle_special_opcode (unsigned char op_code);
21346 /* Handle DW_LNS_advance_line. */
21347 void handle_advance_line (int line_delta)
21349 advance_line (line_delta);
21352 /* Handle DW_LNS_set_file. */
21353 void handle_set_file (file_name_index file);
21355 /* Handle DW_LNS_negate_stmt. */
21356 void handle_negate_stmt ()
21358 m_is_stmt = !m_is_stmt;
21361 /* Handle DW_LNS_const_add_pc. */
21362 void handle_const_add_pc ();
21364 /* Handle DW_LNS_fixed_advance_pc. */
21365 void handle_fixed_advance_pc (CORE_ADDR addr_adj)
21367 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
21371 /* Handle DW_LNS_copy. */
21372 void handle_copy ()
21374 record_line (false);
21375 m_discriminator = 0;
21378 /* Handle DW_LNE_end_sequence. */
21379 void handle_end_sequence ()
21381 m_currently_recording_lines = true;
21385 /* Advance the line by LINE_DELTA. */
21386 void advance_line (int line_delta)
21388 m_line += line_delta;
21390 if (line_delta != 0)
21391 m_line_has_non_zero_discriminator = m_discriminator != 0;
21394 struct dwarf2_cu *m_cu;
21396 gdbarch *m_gdbarch;
21398 /* True if we're recording lines.
21399 Otherwise we're building partial symtabs and are just interested in
21400 finding include files mentioned by the line number program. */
21401 bool m_record_lines_p;
21403 /* The line number header. */
21404 line_header *m_line_header;
21406 /* These are part of the standard DWARF line number state machine,
21407 and initialized according to the DWARF spec. */
21409 unsigned char m_op_index = 0;
21410 /* The line table index of the current file. */
21411 file_name_index m_file = 1;
21412 unsigned int m_line = 1;
21414 /* These are initialized in the constructor. */
21416 CORE_ADDR m_address;
21418 unsigned int m_discriminator;
21420 /* Additional bits of state we need to track. */
21422 /* The last file that we called dwarf2_start_subfile for.
21423 This is only used for TLLs. */
21424 unsigned int m_last_file = 0;
21425 /* The last file a line number was recorded for. */
21426 struct subfile *m_last_subfile = NULL;
21428 /* The address of the last line entry. */
21429 CORE_ADDR m_last_address;
21431 /* Set to true when a previous line at the same address (using
21432 m_last_address) had m_is_stmt true. This is reset to false when a
21433 line entry at a new address (m_address different to m_last_address) is
21435 bool m_stmt_at_address = false;
21437 /* When true, record the lines we decode. */
21438 bool m_currently_recording_lines = false;
21440 /* The last line number that was recorded, used to coalesce
21441 consecutive entries for the same line. This can happen, for
21442 example, when discriminators are present. PR 17276. */
21443 unsigned int m_last_line = 0;
21444 bool m_line_has_non_zero_discriminator = false;
21448 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
21450 CORE_ADDR addr_adj = (((m_op_index + adjust)
21451 / m_line_header->maximum_ops_per_instruction)
21452 * m_line_header->minimum_instruction_length);
21453 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
21454 m_op_index = ((m_op_index + adjust)
21455 % m_line_header->maximum_ops_per_instruction);
21459 lnp_state_machine::handle_special_opcode (unsigned char op_code)
21461 unsigned char adj_opcode = op_code - m_line_header->opcode_base;
21462 unsigned char adj_opcode_d = adj_opcode / m_line_header->line_range;
21463 unsigned char adj_opcode_r = adj_opcode % m_line_header->line_range;
21464 CORE_ADDR addr_adj = (((m_op_index + adj_opcode_d)
21465 / m_line_header->maximum_ops_per_instruction)
21466 * m_line_header->minimum_instruction_length);
21467 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
21468 m_op_index = ((m_op_index + adj_opcode_d)
21469 % m_line_header->maximum_ops_per_instruction);
21471 int line_delta = m_line_header->line_base + adj_opcode_r;
21472 advance_line (line_delta);
21473 record_line (false);
21474 m_discriminator = 0;
21478 lnp_state_machine::handle_set_file (file_name_index file)
21482 const file_entry *fe = current_file ();
21484 dwarf2_debug_line_missing_file_complaint ();
21485 else if (m_record_lines_p)
21487 const char *dir = fe->include_dir (m_line_header);
21489 m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
21490 m_line_has_non_zero_discriminator = m_discriminator != 0;
21491 dwarf2_start_subfile (m_cu, fe->name, dir);
21496 lnp_state_machine::handle_const_add_pc ()
21499 = (255 - m_line_header->opcode_base) / m_line_header->line_range;
21502 = (((m_op_index + adjust)
21503 / m_line_header->maximum_ops_per_instruction)
21504 * m_line_header->minimum_instruction_length);
21506 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
21507 m_op_index = ((m_op_index + adjust)
21508 % m_line_header->maximum_ops_per_instruction);
21511 /* Return non-zero if we should add LINE to the line number table.
21512 LINE is the line to add, LAST_LINE is the last line that was added,
21513 LAST_SUBFILE is the subfile for LAST_LINE.
21514 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
21515 had a non-zero discriminator.
21517 We have to be careful in the presence of discriminators.
21518 E.g., for this line:
21520 for (i = 0; i < 100000; i++);
21522 clang can emit four line number entries for that one line,
21523 each with a different discriminator.
21524 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
21526 However, we want gdb to coalesce all four entries into one.
21527 Otherwise the user could stepi into the middle of the line and
21528 gdb would get confused about whether the pc really was in the
21529 middle of the line.
21531 Things are further complicated by the fact that two consecutive
21532 line number entries for the same line is a heuristic used by gcc
21533 to denote the end of the prologue. So we can't just discard duplicate
21534 entries, we have to be selective about it. The heuristic we use is
21535 that we only collapse consecutive entries for the same line if at least
21536 one of those entries has a non-zero discriminator. PR 17276.
21538 Note: Addresses in the line number state machine can never go backwards
21539 within one sequence, thus this coalescing is ok. */
21542 dwarf_record_line_p (struct dwarf2_cu *cu,
21543 unsigned int line, unsigned int last_line,
21544 int line_has_non_zero_discriminator,
21545 struct subfile *last_subfile)
21547 if (cu->get_builder ()->get_current_subfile () != last_subfile)
21549 if (line != last_line)
21551 /* Same line for the same file that we've seen already.
21552 As a last check, for pr 17276, only record the line if the line
21553 has never had a non-zero discriminator. */
21554 if (!line_has_non_zero_discriminator)
21559 /* Use the CU's builder to record line number LINE beginning at
21560 address ADDRESS in the line table of subfile SUBFILE. */
21563 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
21564 unsigned int line, CORE_ADDR address, bool is_stmt,
21565 struct dwarf2_cu *cu)
21567 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
21569 if (dwarf_line_debug)
21571 fprintf_unfiltered (gdb_stdlog,
21572 "Recording line %u, file %s, address %s\n",
21573 line, lbasename (subfile->name),
21574 paddress (gdbarch, address));
21578 cu->get_builder ()->record_line (subfile, line, addr, is_stmt);
21581 /* Subroutine of dwarf_decode_lines_1 to simplify it.
21582 Mark the end of a set of line number records.
21583 The arguments are the same as for dwarf_record_line_1.
21584 If SUBFILE is NULL the request is ignored. */
21587 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
21588 CORE_ADDR address, struct dwarf2_cu *cu)
21590 if (subfile == NULL)
21593 if (dwarf_line_debug)
21595 fprintf_unfiltered (gdb_stdlog,
21596 "Finishing current line, file %s, address %s\n",
21597 lbasename (subfile->name),
21598 paddress (gdbarch, address));
21601 dwarf_record_line_1 (gdbarch, subfile, 0, address, true, cu);
21605 lnp_state_machine::record_line (bool end_sequence)
21607 if (dwarf_line_debug)
21609 fprintf_unfiltered (gdb_stdlog,
21610 "Processing actual line %u: file %u,"
21611 " address %s, is_stmt %u, discrim %u%s\n",
21613 paddress (m_gdbarch, m_address),
21614 m_is_stmt, m_discriminator,
21615 (end_sequence ? "\t(end sequence)" : ""));
21618 file_entry *fe = current_file ();
21621 dwarf2_debug_line_missing_file_complaint ();
21622 /* For now we ignore lines not starting on an instruction boundary.
21623 But not when processing end_sequence for compatibility with the
21624 previous version of the code. */
21625 else if (m_op_index == 0 || end_sequence)
21627 fe->included_p = 1;
21628 if (m_record_lines_p)
21630 /* When we switch files we insert an end maker in the first file,
21631 switch to the second file and add a new line entry. The
21632 problem is that the end marker inserted in the first file will
21633 discard any previous line entries at the same address. If the
21634 line entries in the first file are marked as is-stmt, while
21635 the new line in the second file is non-stmt, then this means
21636 the end marker will discard is-stmt lines so we can have a
21637 non-stmt line. This means that there are less addresses at
21638 which the user can insert a breakpoint.
21640 To improve this we track the last address in m_last_address,
21641 and whether we have seen an is-stmt at this address. Then
21642 when switching files, if we have seen a stmt at the current
21643 address, and we are switching to create a non-stmt line, then
21644 discard the new line. */
21646 = m_last_subfile != m_cu->get_builder ()->get_current_subfile ();
21647 bool ignore_this_line
21648 = ((file_changed && !end_sequence && m_last_address == m_address
21649 && !m_is_stmt && m_stmt_at_address)
21650 || (!end_sequence && m_line == 0));
21652 if ((file_changed && !ignore_this_line) || end_sequence)
21654 dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
21655 m_currently_recording_lines ? m_cu : nullptr);
21658 if (!end_sequence && !ignore_this_line)
21660 bool is_stmt = producer_is_codewarrior (m_cu) || m_is_stmt;
21662 if (dwarf_record_line_p (m_cu, m_line, m_last_line,
21663 m_line_has_non_zero_discriminator,
21666 buildsym_compunit *builder = m_cu->get_builder ();
21667 dwarf_record_line_1 (m_gdbarch,
21668 builder->get_current_subfile (),
21669 m_line, m_address, is_stmt,
21670 m_currently_recording_lines ? m_cu : nullptr);
21672 m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
21673 m_last_line = m_line;
21678 /* Track whether we have seen any m_is_stmt true at m_address in case we
21679 have multiple line table entries all at m_address. */
21680 if (m_last_address != m_address)
21682 m_stmt_at_address = false;
21683 m_last_address = m_address;
21685 m_stmt_at_address |= m_is_stmt;
21688 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
21689 line_header *lh, bool record_lines_p)
21693 m_record_lines_p = record_lines_p;
21694 m_line_header = lh;
21696 m_currently_recording_lines = true;
21698 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
21699 was a line entry for it so that the backend has a chance to adjust it
21700 and also record it in case it needs it. This is currently used by MIPS
21701 code, cf. `mips_adjust_dwarf2_line'. */
21702 m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
21703 m_is_stmt = lh->default_is_stmt;
21704 m_discriminator = 0;
21706 m_last_address = m_address;
21707 m_stmt_at_address = false;
21711 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
21712 const gdb_byte *line_ptr,
21713 CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
21715 /* Linkers resolve a symbolic relocation referencing a GC'd function to 0 or
21716 -1. If ADDRESS is 0, ignoring the opcode will err if the text section is
21717 located at 0x0. In this case, additionally check that if
21718 ADDRESS < UNRELOCATED_LOWPC. */
21720 if ((address == 0 && address < unrelocated_lowpc)
21721 || address == (CORE_ADDR) -1)
21723 /* This line table is for a function which has been
21724 GCd by the linker. Ignore it. PR gdb/12528 */
21726 struct objfile *objfile = cu->per_objfile->objfile;
21727 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
21729 complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
21730 line_offset, objfile_name (objfile));
21731 m_currently_recording_lines = false;
21732 /* Note: m_currently_recording_lines is left as false until we see
21733 DW_LNE_end_sequence. */
21737 /* Subroutine of dwarf_decode_lines to simplify it.
21738 Process the line number information in LH.
21739 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
21740 program in order to set included_p for every referenced header. */
21743 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
21744 const int decode_for_pst_p, CORE_ADDR lowpc)
21746 const gdb_byte *line_ptr, *extended_end;
21747 const gdb_byte *line_end;
21748 unsigned int bytes_read, extended_len;
21749 unsigned char op_code, extended_op;
21750 CORE_ADDR baseaddr;
21751 struct objfile *objfile = cu->per_objfile->objfile;
21752 bfd *abfd = objfile->obfd;
21753 struct gdbarch *gdbarch = objfile->arch ();
21754 /* True if we're recording line info (as opposed to building partial
21755 symtabs and just interested in finding include files mentioned by
21756 the line number program). */
21757 bool record_lines_p = !decode_for_pst_p;
21759 baseaddr = objfile->text_section_offset ();
21761 line_ptr = lh->statement_program_start;
21762 line_end = lh->statement_program_end;
21764 /* Read the statement sequences until there's nothing left. */
21765 while (line_ptr < line_end)
21767 /* The DWARF line number program state machine. Reset the state
21768 machine at the start of each sequence. */
21769 lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
21770 bool end_sequence = false;
21772 if (record_lines_p)
21774 /* Start a subfile for the current file of the state
21776 const file_entry *fe = state_machine.current_file ();
21779 dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
21782 /* Decode the table. */
21783 while (line_ptr < line_end && !end_sequence)
21785 op_code = read_1_byte (abfd, line_ptr);
21788 if (op_code >= lh->opcode_base)
21790 /* Special opcode. */
21791 state_machine.handle_special_opcode (op_code);
21793 else switch (op_code)
21795 case DW_LNS_extended_op:
21796 extended_len = read_unsigned_leb128 (abfd, line_ptr,
21798 line_ptr += bytes_read;
21799 extended_end = line_ptr + extended_len;
21800 extended_op = read_1_byte (abfd, line_ptr);
21802 if (DW_LNE_lo_user <= extended_op
21803 && extended_op <= DW_LNE_hi_user)
21805 /* Vendor extension, ignore. */
21806 line_ptr = extended_end;
21809 switch (extended_op)
21811 case DW_LNE_end_sequence:
21812 state_machine.handle_end_sequence ();
21813 end_sequence = true;
21815 case DW_LNE_set_address:
21818 = cu->header.read_address (abfd, line_ptr, &bytes_read);
21819 line_ptr += bytes_read;
21821 state_machine.check_line_address (cu, line_ptr,
21822 lowpc - baseaddr, address);
21823 state_machine.handle_set_address (baseaddr, address);
21826 case DW_LNE_define_file:
21828 const char *cur_file;
21829 unsigned int mod_time, length;
21832 cur_file = read_direct_string (abfd, line_ptr,
21834 line_ptr += bytes_read;
21835 dindex = (dir_index)
21836 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21837 line_ptr += bytes_read;
21839 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21840 line_ptr += bytes_read;
21842 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21843 line_ptr += bytes_read;
21844 lh->add_file_name (cur_file, dindex, mod_time, length);
21847 case DW_LNE_set_discriminator:
21849 /* The discriminator is not interesting to the
21850 debugger; just ignore it. We still need to
21851 check its value though:
21852 if there are consecutive entries for the same
21853 (non-prologue) line we want to coalesce them.
21856 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21857 line_ptr += bytes_read;
21859 state_machine.handle_set_discriminator (discr);
21863 complaint (_("mangled .debug_line section"));
21866 /* Make sure that we parsed the extended op correctly. If e.g.
21867 we expected a different address size than the producer used,
21868 we may have read the wrong number of bytes. */
21869 if (line_ptr != extended_end)
21871 complaint (_("mangled .debug_line section"));
21876 state_machine.handle_copy ();
21878 case DW_LNS_advance_pc:
21881 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21882 line_ptr += bytes_read;
21884 state_machine.handle_advance_pc (adjust);
21887 case DW_LNS_advance_line:
21890 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21891 line_ptr += bytes_read;
21893 state_machine.handle_advance_line (line_delta);
21896 case DW_LNS_set_file:
21898 file_name_index file
21899 = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21901 line_ptr += bytes_read;
21903 state_machine.handle_set_file (file);
21906 case DW_LNS_set_column:
21907 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21908 line_ptr += bytes_read;
21910 case DW_LNS_negate_stmt:
21911 state_machine.handle_negate_stmt ();
21913 case DW_LNS_set_basic_block:
21915 /* Add to the address register of the state machine the
21916 address increment value corresponding to special opcode
21917 255. I.e., this value is scaled by the minimum
21918 instruction length since special opcode 255 would have
21919 scaled the increment. */
21920 case DW_LNS_const_add_pc:
21921 state_machine.handle_const_add_pc ();
21923 case DW_LNS_fixed_advance_pc:
21925 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21928 state_machine.handle_fixed_advance_pc (addr_adj);
21933 /* Unknown standard opcode, ignore it. */
21936 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21938 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21939 line_ptr += bytes_read;
21946 dwarf2_debug_line_missing_end_sequence_complaint ();
21948 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21949 in which case we still finish recording the last line). */
21950 state_machine.record_line (true);
21954 /* Decode the Line Number Program (LNP) for the given line_header
21955 structure and CU. The actual information extracted and the type
21956 of structures created from the LNP depends on the value of PST.
21958 1. If PST is NULL, then this procedure uses the data from the program
21959 to create all necessary symbol tables, and their linetables.
21961 2. If PST is not NULL, this procedure reads the program to determine
21962 the list of files included by the unit represented by PST, and
21963 builds all the associated partial symbol tables.
21965 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21966 It is used for relative paths in the line table.
21967 NOTE: When processing partial symtabs (pst != NULL),
21968 comp_dir == pst->dirname.
21970 NOTE: It is important that psymtabs have the same file name (via strcmp)
21971 as the corresponding symtab. Since COMP_DIR is not used in the name of the
21972 symtab we don't use it in the name of the psymtabs we create.
21973 E.g. expand_line_sal requires this when finding psymtabs to expand.
21974 A good testcase for this is mb-inline.exp.
21976 LOWPC is the lowest address in CU (or 0 if not known).
21978 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21979 for its PC<->lines mapping information. Otherwise only the filename
21980 table is read in. */
21983 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21984 struct dwarf2_cu *cu, dwarf2_psymtab *pst,
21985 CORE_ADDR lowpc, int decode_mapping)
21987 struct objfile *objfile = cu->per_objfile->objfile;
21988 const int decode_for_pst_p = (pst != NULL);
21990 if (decode_mapping)
21991 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21993 if (decode_for_pst_p)
21995 /* Now that we're done scanning the Line Header Program, we can
21996 create the psymtab of each included file. */
21997 for (auto &file_entry : lh->file_names ())
21998 if (file_entry.included_p == 1)
22000 gdb::unique_xmalloc_ptr<char> name_holder;
22001 const char *include_name =
22002 psymtab_include_file_name (lh, file_entry, pst,
22003 comp_dir, &name_holder);
22004 if (include_name != NULL)
22005 dwarf2_create_include_psymtab
22006 (cu->per_objfile->per_bfd, include_name, pst,
22007 cu->per_objfile->per_bfd->partial_symtabs.get (),
22013 /* Make sure a symtab is created for every file, even files
22014 which contain only variables (i.e. no code with associated
22016 buildsym_compunit *builder = cu->get_builder ();
22017 struct compunit_symtab *cust = builder->get_compunit_symtab ();
22019 for (auto &fe : lh->file_names ())
22021 dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
22022 if (builder->get_current_subfile ()->symtab == NULL)
22024 builder->get_current_subfile ()->symtab
22025 = allocate_symtab (cust,
22026 builder->get_current_subfile ()->name);
22028 fe.symtab = builder->get_current_subfile ()->symtab;
22033 /* Start a subfile for DWARF. FILENAME is the name of the file and
22034 DIRNAME the name of the source directory which contains FILENAME
22035 or NULL if not known.
22036 This routine tries to keep line numbers from identical absolute and
22037 relative file names in a common subfile.
22039 Using the `list' example from the GDB testsuite, which resides in
22040 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
22041 of /srcdir/list0.c yields the following debugging information for list0.c:
22043 DW_AT_name: /srcdir/list0.c
22044 DW_AT_comp_dir: /compdir
22045 files.files[0].name: list0.h
22046 files.files[0].dir: /srcdir
22047 files.files[1].name: list0.c
22048 files.files[1].dir: /srcdir
22050 The line number information for list0.c has to end up in a single
22051 subfile, so that `break /srcdir/list0.c:1' works as expected.
22052 start_subfile will ensure that this happens provided that we pass the
22053 concatenation of files.files[1].dir and files.files[1].name as the
22057 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
22058 const char *dirname)
22060 gdb::unique_xmalloc_ptr<char> copy;
22062 /* In order not to lose the line information directory,
22063 we concatenate it to the filename when it makes sense.
22064 Note that the Dwarf3 standard says (speaking of filenames in line
22065 information): ``The directory index is ignored for file names
22066 that represent full path names''. Thus ignoring dirname in the
22067 `else' branch below isn't an issue. */
22069 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
22071 copy.reset (concat (dirname, SLASH_STRING, filename, (char *) NULL));
22072 filename = copy.get ();
22075 cu->get_builder ()->start_subfile (filename);
22078 /* Start a symtab for DWARF. NAME, COMP_DIR, LOW_PC are passed to the
22079 buildsym_compunit constructor. */
22081 struct compunit_symtab *
22082 dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
22085 gdb_assert (m_builder == nullptr);
22087 m_builder.reset (new struct buildsym_compunit
22088 (this->per_objfile->objfile,
22089 name, comp_dir, language, low_pc));
22091 list_in_scope = get_builder ()->get_file_symbols ();
22093 get_builder ()->record_debugformat ("DWARF 2");
22094 get_builder ()->record_producer (producer);
22096 processing_has_namespace_info = false;
22098 return get_builder ()->get_compunit_symtab ();
22102 var_decode_location (struct attribute *attr, struct symbol *sym,
22103 struct dwarf2_cu *cu)
22105 struct objfile *objfile = cu->per_objfile->objfile;
22106 struct comp_unit_head *cu_header = &cu->header;
22108 /* NOTE drow/2003-01-30: There used to be a comment and some special
22109 code here to turn a symbol with DW_AT_external and a
22110 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
22111 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
22112 with some versions of binutils) where shared libraries could have
22113 relocations against symbols in their debug information - the
22114 minimal symbol would have the right address, but the debug info
22115 would not. It's no longer necessary, because we will explicitly
22116 apply relocations when we read in the debug information now. */
22118 /* A DW_AT_location attribute with no contents indicates that a
22119 variable has been optimized away. */
22120 if (attr->form_is_block () && attr->as_block ()->size == 0)
22122 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
22126 /* Handle one degenerate form of location expression specially, to
22127 preserve GDB's previous behavior when section offsets are
22128 specified. If this is just a DW_OP_addr, DW_OP_addrx, or
22129 DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC. */
22131 if (attr->form_is_block ())
22133 struct dwarf_block *block = attr->as_block ();
22135 if ((block->data[0] == DW_OP_addr
22136 && block->size == 1 + cu_header->addr_size)
22137 || ((block->data[0] == DW_OP_GNU_addr_index
22138 || block->data[0] == DW_OP_addrx)
22140 == 1 + leb128_size (&block->data[1]))))
22142 unsigned int dummy;
22144 if (block->data[0] == DW_OP_addr)
22145 SET_SYMBOL_VALUE_ADDRESS
22146 (sym, cu->header.read_address (objfile->obfd,
22150 SET_SYMBOL_VALUE_ADDRESS
22151 (sym, read_addr_index_from_leb128 (cu, block->data + 1,
22153 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
22154 fixup_symbol_section (sym, objfile);
22155 SET_SYMBOL_VALUE_ADDRESS
22157 SYMBOL_VALUE_ADDRESS (sym)
22158 + objfile->section_offsets[sym->section_index ()]);
22163 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
22164 expression evaluator, and use LOC_COMPUTED only when necessary
22165 (i.e. when the value of a register or memory location is
22166 referenced, or a thread-local block, etc.). Then again, it might
22167 not be worthwhile. I'm assuming that it isn't unless performance
22168 or memory numbers show me otherwise. */
22170 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
22172 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
22173 cu->has_loclist = true;
22176 /* Given a pointer to a DWARF information entry, figure out if we need
22177 to make a symbol table entry for it, and if so, create a new entry
22178 and return a pointer to it.
22179 If TYPE is NULL, determine symbol type from the die, otherwise
22180 used the passed type.
22181 If SPACE is not NULL, use it to hold the new symbol. If it is
22182 NULL, allocate a new symbol on the objfile's obstack. */
22184 static struct symbol *
22185 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
22186 struct symbol *space)
22188 dwarf2_per_objfile *per_objfile = cu->per_objfile;
22189 struct objfile *objfile = per_objfile->objfile;
22190 struct gdbarch *gdbarch = objfile->arch ();
22191 struct symbol *sym = NULL;
22193 struct attribute *attr = NULL;
22194 struct attribute *attr2 = NULL;
22195 CORE_ADDR baseaddr;
22196 struct pending **list_to_add = NULL;
22198 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
22200 baseaddr = objfile->text_section_offset ();
22202 name = dwarf2_name (die, cu);
22205 int suppress_add = 0;
22210 sym = new (&objfile->objfile_obstack) symbol;
22211 OBJSTAT (objfile, n_syms++);
22213 /* Cache this symbol's name and the name's demangled form (if any). */
22214 sym->set_language (cu->language, &objfile->objfile_obstack);
22215 /* Fortran does not have mangling standard and the mangling does differ
22216 between gfortran, iFort etc. */
22217 const char *physname
22218 = (cu->language == language_fortran
22219 ? dwarf2_full_name (name, die, cu)
22220 : dwarf2_physname (name, die, cu));
22221 const char *linkagename = dw2_linkage_name (die, cu);
22223 if (linkagename == nullptr || cu->language == language_ada)
22224 sym->set_linkage_name (physname);
22227 sym->set_demangled_name (physname, &objfile->objfile_obstack);
22228 sym->set_linkage_name (linkagename);
22231 /* Default assumptions.
22232 Use the passed type or decode it from the die. */
22233 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
22234 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
22236 SYMBOL_TYPE (sym) = type;
22238 SYMBOL_TYPE (sym) = die_type (die, cu);
22239 attr = dwarf2_attr (die,
22240 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
22242 if (attr != nullptr)
22243 SYMBOL_LINE (sym) = attr->constant_value (0);
22245 attr = dwarf2_attr (die,
22246 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
22248 if (attr != nullptr && attr->is_nonnegative ())
22250 file_name_index file_index
22251 = (file_name_index) attr->as_nonnegative ();
22252 struct file_entry *fe;
22254 if (cu->line_header != NULL)
22255 fe = cu->line_header->file_name_at (file_index);
22260 complaint (_("file index out of range"));
22262 symbol_set_symtab (sym, fe->symtab);
22268 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
22269 if (attr != nullptr)
22273 addr = attr->as_address ();
22274 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
22275 SET_SYMBOL_VALUE_ADDRESS (sym, addr);
22276 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
22279 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
22280 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
22281 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
22282 add_symbol_to_list (sym, cu->list_in_scope);
22284 case DW_TAG_subprogram:
22285 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
22287 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
22288 attr2 = dwarf2_attr (die, DW_AT_external, cu);
22289 if ((attr2 != nullptr && attr2->as_boolean ())
22290 || cu->language == language_ada
22291 || cu->language == language_fortran)
22293 /* Subprograms marked external are stored as a global symbol.
22294 Ada and Fortran subprograms, whether marked external or
22295 not, are always stored as a global symbol, because we want
22296 to be able to access them globally. For instance, we want
22297 to be able to break on a nested subprogram without having
22298 to specify the context. */
22299 list_to_add = cu->get_builder ()->get_global_symbols ();
22303 list_to_add = cu->list_in_scope;
22306 case DW_TAG_inlined_subroutine:
22307 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
22309 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
22310 SYMBOL_INLINED (sym) = 1;
22311 list_to_add = cu->list_in_scope;
22313 case DW_TAG_template_value_param:
22315 /* Fall through. */
22316 case DW_TAG_constant:
22317 case DW_TAG_variable:
22318 case DW_TAG_member:
22319 /* Compilation with minimal debug info may result in
22320 variables with missing type entries. Change the
22321 misleading `void' type to something sensible. */
22322 if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_VOID)
22323 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
22325 attr = dwarf2_attr (die, DW_AT_const_value, cu);
22326 /* In the case of DW_TAG_member, we should only be called for
22327 static const members. */
22328 if (die->tag == DW_TAG_member)
22330 /* dwarf2_add_field uses die_is_declaration,
22331 so we do the same. */
22332 gdb_assert (die_is_declaration (die, cu));
22335 if (attr != nullptr)
22337 dwarf2_const_value (attr, sym, cu);
22338 attr2 = dwarf2_attr (die, DW_AT_external, cu);
22341 if (attr2 != nullptr && attr2->as_boolean ())
22342 list_to_add = cu->get_builder ()->get_global_symbols ();
22344 list_to_add = cu->list_in_scope;
22348 attr = dwarf2_attr (die, DW_AT_location, cu);
22349 if (attr != nullptr)
22351 var_decode_location (attr, sym, cu);
22352 attr2 = dwarf2_attr (die, DW_AT_external, cu);
22354 /* Fortran explicitly imports any global symbols to the local
22355 scope by DW_TAG_common_block. */
22356 if (cu->language == language_fortran && die->parent
22357 && die->parent->tag == DW_TAG_common_block)
22360 if (SYMBOL_CLASS (sym) == LOC_STATIC
22361 && SYMBOL_VALUE_ADDRESS (sym) == 0
22362 && !per_objfile->per_bfd->has_section_at_zero)
22364 /* When a static variable is eliminated by the linker,
22365 the corresponding debug information is not stripped
22366 out, but the variable address is set to null;
22367 do not add such variables into symbol table. */
22369 else if (attr2 != nullptr && attr2->as_boolean ())
22371 if (SYMBOL_CLASS (sym) == LOC_STATIC
22372 && (objfile->flags & OBJF_MAINLINE) == 0
22373 && per_objfile->per_bfd->can_copy)
22375 /* A global static variable might be subject to
22376 copy relocation. We first check for a local
22377 minsym, though, because maybe the symbol was
22378 marked hidden, in which case this would not
22380 bound_minimal_symbol found
22381 = (lookup_minimal_symbol_linkage
22382 (sym->linkage_name (), objfile));
22383 if (found.minsym != nullptr)
22384 sym->maybe_copied = 1;
22387 /* A variable with DW_AT_external is never static,
22388 but it may be block-scoped. */
22390 = ((cu->list_in_scope
22391 == cu->get_builder ()->get_file_symbols ())
22392 ? cu->get_builder ()->get_global_symbols ()
22393 : cu->list_in_scope);
22396 list_to_add = cu->list_in_scope;
22400 /* We do not know the address of this symbol.
22401 If it is an external symbol and we have type information
22402 for it, enter the symbol as a LOC_UNRESOLVED symbol.
22403 The address of the variable will then be determined from
22404 the minimal symbol table whenever the variable is
22406 attr2 = dwarf2_attr (die, DW_AT_external, cu);
22408 /* Fortran explicitly imports any global symbols to the local
22409 scope by DW_TAG_common_block. */
22410 if (cu->language == language_fortran && die->parent
22411 && die->parent->tag == DW_TAG_common_block)
22413 /* SYMBOL_CLASS doesn't matter here because
22414 read_common_block is going to reset it. */
22416 list_to_add = cu->list_in_scope;
22418 else if (attr2 != nullptr && attr2->as_boolean ()
22419 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
22421 /* A variable with DW_AT_external is never static, but it
22422 may be block-scoped. */
22424 = ((cu->list_in_scope
22425 == cu->get_builder ()->get_file_symbols ())
22426 ? cu->get_builder ()->get_global_symbols ()
22427 : cu->list_in_scope);
22429 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
22431 else if (!die_is_declaration (die, cu))
22433 /* Use the default LOC_OPTIMIZED_OUT class. */
22434 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
22436 list_to_add = cu->list_in_scope;
22440 case DW_TAG_formal_parameter:
22442 /* If we are inside a function, mark this as an argument. If
22443 not, we might be looking at an argument to an inlined function
22444 when we do not have enough information to show inlined frames;
22445 pretend it's a local variable in that case so that the user can
22447 struct context_stack *curr
22448 = cu->get_builder ()->get_current_context_stack ();
22449 if (curr != nullptr && curr->name != nullptr)
22450 SYMBOL_IS_ARGUMENT (sym) = 1;
22451 attr = dwarf2_attr (die, DW_AT_location, cu);
22452 if (attr != nullptr)
22454 var_decode_location (attr, sym, cu);
22456 attr = dwarf2_attr (die, DW_AT_const_value, cu);
22457 if (attr != nullptr)
22459 dwarf2_const_value (attr, sym, cu);
22462 list_to_add = cu->list_in_scope;
22465 case DW_TAG_unspecified_parameters:
22466 /* From varargs functions; gdb doesn't seem to have any
22467 interest in this information, so just ignore it for now.
22470 case DW_TAG_template_type_param:
22472 /* Fall through. */
22473 case DW_TAG_class_type:
22474 case DW_TAG_interface_type:
22475 case DW_TAG_structure_type:
22476 case DW_TAG_union_type:
22477 case DW_TAG_set_type:
22478 case DW_TAG_enumeration_type:
22479 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
22480 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
22483 /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
22484 really ever be static objects: otherwise, if you try
22485 to, say, break of a class's method and you're in a file
22486 which doesn't mention that class, it won't work unless
22487 the check for all static symbols in lookup_symbol_aux
22488 saves you. See the OtherFileClass tests in
22489 gdb.c++/namespace.exp. */
22493 buildsym_compunit *builder = cu->get_builder ();
22495 = (cu->list_in_scope == builder->get_file_symbols ()
22496 && cu->language == language_cplus
22497 ? builder->get_global_symbols ()
22498 : cu->list_in_scope);
22500 /* The semantics of C++ state that "struct foo {
22501 ... }" also defines a typedef for "foo". */
22502 if (cu->language == language_cplus
22503 || cu->language == language_ada
22504 || cu->language == language_d
22505 || cu->language == language_rust)
22507 /* The symbol's name is already allocated along
22508 with this objfile, so we don't need to
22509 duplicate it for the type. */
22510 if (SYMBOL_TYPE (sym)->name () == 0)
22511 SYMBOL_TYPE (sym)->set_name (sym->search_name ());
22516 case DW_TAG_typedef:
22517 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
22518 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
22519 list_to_add = cu->list_in_scope;
22521 case DW_TAG_array_type:
22522 case DW_TAG_base_type:
22523 case DW_TAG_subrange_type:
22524 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
22525 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
22526 list_to_add = cu->list_in_scope;
22528 case DW_TAG_enumerator:
22529 attr = dwarf2_attr (die, DW_AT_const_value, cu);
22530 if (attr != nullptr)
22532 dwarf2_const_value (attr, sym, cu);
22535 /* NOTE: carlton/2003-11-10: See comment above in the
22536 DW_TAG_class_type, etc. block. */
22539 = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
22540 && cu->language == language_cplus
22541 ? cu->get_builder ()->get_global_symbols ()
22542 : cu->list_in_scope);
22545 case DW_TAG_imported_declaration:
22546 case DW_TAG_namespace:
22547 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
22548 list_to_add = cu->get_builder ()->get_global_symbols ();
22550 case DW_TAG_module:
22551 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
22552 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
22553 list_to_add = cu->get_builder ()->get_global_symbols ();
22555 case DW_TAG_common_block:
22556 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
22557 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
22558 add_symbol_to_list (sym, cu->list_in_scope);
22561 /* Not a tag we recognize. Hopefully we aren't processing
22562 trash data, but since we must specifically ignore things
22563 we don't recognize, there is nothing else we should do at
22565 complaint (_("unsupported tag: '%s'"),
22566 dwarf_tag_name (die->tag));
22572 sym->hash_next = objfile->template_symbols;
22573 objfile->template_symbols = sym;
22574 list_to_add = NULL;
22577 if (list_to_add != NULL)
22578 add_symbol_to_list (sym, list_to_add);
22580 /* For the benefit of old versions of GCC, check for anonymous
22581 namespaces based on the demangled name. */
22582 if (!cu->processing_has_namespace_info
22583 && cu->language == language_cplus)
22584 cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
22589 /* Given an attr with a DW_FORM_dataN value in host byte order,
22590 zero-extend it as appropriate for the symbol's type. The DWARF
22591 standard (v4) is not entirely clear about the meaning of using
22592 DW_FORM_dataN for a constant with a signed type, where the type is
22593 wider than the data. The conclusion of a discussion on the DWARF
22594 list was that this is unspecified. We choose to always zero-extend
22595 because that is the interpretation long in use by GCC. */
22598 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
22599 struct dwarf2_cu *cu, LONGEST *value, int bits)
22601 struct objfile *objfile = cu->per_objfile->objfile;
22602 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
22603 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
22604 LONGEST l = attr->constant_value (0);
22606 if (bits < sizeof (*value) * 8)
22608 l &= ((LONGEST) 1 << bits) - 1;
22611 else if (bits == sizeof (*value) * 8)
22615 gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
22616 store_unsigned_integer (bytes, bits / 8, byte_order, l);
22623 /* Read a constant value from an attribute. Either set *VALUE, or if
22624 the value does not fit in *VALUE, set *BYTES - either already
22625 allocated on the objfile obstack, or newly allocated on OBSTACK,
22626 or, set *BATON, if we translated the constant to a location
22630 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
22631 const char *name, struct obstack *obstack,
22632 struct dwarf2_cu *cu,
22633 LONGEST *value, const gdb_byte **bytes,
22634 struct dwarf2_locexpr_baton **baton)
22636 dwarf2_per_objfile *per_objfile = cu->per_objfile;
22637 struct objfile *objfile = per_objfile->objfile;
22638 struct comp_unit_head *cu_header = &cu->header;
22639 struct dwarf_block *blk;
22640 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
22641 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
22647 switch (attr->form)
22650 case DW_FORM_addrx:
22651 case DW_FORM_GNU_addr_index:
22655 if (TYPE_LENGTH (type) != cu_header->addr_size)
22656 dwarf2_const_value_length_mismatch_complaint (name,
22657 cu_header->addr_size,
22658 TYPE_LENGTH (type));
22659 /* Symbols of this form are reasonably rare, so we just
22660 piggyback on the existing location code rather than writing
22661 a new implementation of symbol_computed_ops. */
22662 *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
22663 (*baton)->per_objfile = per_objfile;
22664 (*baton)->per_cu = cu->per_cu;
22665 gdb_assert ((*baton)->per_cu);
22667 (*baton)->size = 2 + cu_header->addr_size;
22668 data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
22669 (*baton)->data = data;
22671 data[0] = DW_OP_addr;
22672 store_unsigned_integer (&data[1], cu_header->addr_size,
22673 byte_order, attr->as_address ());
22674 data[cu_header->addr_size + 1] = DW_OP_stack_value;
22677 case DW_FORM_string:
22680 case DW_FORM_GNU_str_index:
22681 case DW_FORM_GNU_strp_alt:
22682 /* The string is already allocated on the objfile obstack, point
22684 *bytes = (const gdb_byte *) attr->as_string ();
22686 case DW_FORM_block1:
22687 case DW_FORM_block2:
22688 case DW_FORM_block4:
22689 case DW_FORM_block:
22690 case DW_FORM_exprloc:
22691 case DW_FORM_data16:
22692 blk = attr->as_block ();
22693 if (TYPE_LENGTH (type) != blk->size)
22694 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
22695 TYPE_LENGTH (type));
22696 *bytes = blk->data;
22699 /* The DW_AT_const_value attributes are supposed to carry the
22700 symbol's value "represented as it would be on the target
22701 architecture." By the time we get here, it's already been
22702 converted to host endianness, so we just need to sign- or
22703 zero-extend it as appropriate. */
22704 case DW_FORM_data1:
22705 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
22707 case DW_FORM_data2:
22708 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
22710 case DW_FORM_data4:
22711 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
22713 case DW_FORM_data8:
22714 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
22717 case DW_FORM_sdata:
22718 case DW_FORM_implicit_const:
22719 *value = attr->as_signed ();
22722 case DW_FORM_udata:
22723 *value = attr->as_unsigned ();
22727 complaint (_("unsupported const value attribute form: '%s'"),
22728 dwarf_form_name (attr->form));
22735 /* Copy constant value from an attribute to a symbol. */
22738 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
22739 struct dwarf2_cu *cu)
22741 struct objfile *objfile = cu->per_objfile->objfile;
22743 const gdb_byte *bytes;
22744 struct dwarf2_locexpr_baton *baton;
22746 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
22747 sym->print_name (),
22748 &objfile->objfile_obstack, cu,
22749 &value, &bytes, &baton);
22753 SYMBOL_LOCATION_BATON (sym) = baton;
22754 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
22756 else if (bytes != NULL)
22758 SYMBOL_VALUE_BYTES (sym) = bytes;
22759 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
22763 SYMBOL_VALUE (sym) = value;
22764 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
22768 /* Return the type of the die in question using its DW_AT_type attribute. */
22770 static struct type *
22771 die_type (struct die_info *die, struct dwarf2_cu *cu)
22773 struct attribute *type_attr;
22775 type_attr = dwarf2_attr (die, DW_AT_type, cu);
22778 struct objfile *objfile = cu->per_objfile->objfile;
22779 /* A missing DW_AT_type represents a void type. */
22780 return objfile_type (objfile)->builtin_void;
22783 return lookup_die_type (die, type_attr, cu);
22786 /* True iff CU's producer generates GNAT Ada auxiliary information
22787 that allows to find parallel types through that information instead
22788 of having to do expensive parallel lookups by type name. */
22791 need_gnat_info (struct dwarf2_cu *cu)
22793 /* Assume that the Ada compiler was GNAT, which always produces
22794 the auxiliary information. */
22795 return (cu->language == language_ada);
22798 /* Return the auxiliary type of the die in question using its
22799 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
22800 attribute is not present. */
22802 static struct type *
22803 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22805 struct attribute *type_attr;
22807 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22811 return lookup_die_type (die, type_attr, cu);
22814 /* If DIE has a descriptive_type attribute, then set the TYPE's
22815 descriptive type accordingly. */
22818 set_descriptive_type (struct type *type, struct die_info *die,
22819 struct dwarf2_cu *cu)
22821 struct type *descriptive_type = die_descriptive_type (die, cu);
22823 if (descriptive_type)
22825 ALLOCATE_GNAT_AUX_TYPE (type);
22826 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22830 /* Return the containing type of the die in question using its
22831 DW_AT_containing_type attribute. */
22833 static struct type *
22834 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22836 struct attribute *type_attr;
22837 struct objfile *objfile = cu->per_objfile->objfile;
22839 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22841 error (_("Dwarf Error: Problem turning containing type into gdb type "
22842 "[in module %s]"), objfile_name (objfile));
22844 return lookup_die_type (die, type_attr, cu);
22847 /* Return an error marker type to use for the ill formed type in DIE/CU. */
22849 static struct type *
22850 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22852 dwarf2_per_objfile *per_objfile = cu->per_objfile;
22853 struct objfile *objfile = per_objfile->objfile;
22856 std::string message
22857 = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22858 objfile_name (objfile),
22859 sect_offset_str (cu->header.sect_off),
22860 sect_offset_str (die->sect_off));
22861 saved = obstack_strdup (&objfile->objfile_obstack, message);
22863 return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22866 /* Look up the type of DIE in CU using its type attribute ATTR.
22867 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22868 DW_AT_containing_type.
22869 If there is no type substitute an error marker. */
22871 static struct type *
22872 lookup_die_type (struct die_info *die, const struct attribute *attr,
22873 struct dwarf2_cu *cu)
22875 dwarf2_per_objfile *per_objfile = cu->per_objfile;
22876 struct objfile *objfile = per_objfile->objfile;
22877 struct type *this_type;
22879 gdb_assert (attr->name == DW_AT_type
22880 || attr->name == DW_AT_GNAT_descriptive_type
22881 || attr->name == DW_AT_containing_type);
22883 /* First see if we have it cached. */
22885 if (attr->form == DW_FORM_GNU_ref_alt)
22887 struct dwarf2_per_cu_data *per_cu;
22888 sect_offset sect_off = attr->get_ref_die_offset ();
22890 per_cu = dwarf2_find_containing_comp_unit (sect_off, 1, per_objfile);
22891 this_type = get_die_type_at_offset (sect_off, per_cu, per_objfile);
22893 else if (attr->form_is_ref ())
22895 sect_offset sect_off = attr->get_ref_die_offset ();
22897 this_type = get_die_type_at_offset (sect_off, cu->per_cu, per_objfile);
22899 else if (attr->form == DW_FORM_ref_sig8)
22901 ULONGEST signature = attr->as_signature ();
22903 return get_signatured_type (die, signature, cu);
22907 complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22908 " at %s [in module %s]"),
22909 dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22910 objfile_name (objfile));
22911 return build_error_marker_type (cu, die);
22914 /* If not cached we need to read it in. */
22916 if (this_type == NULL)
22918 struct die_info *type_die = NULL;
22919 struct dwarf2_cu *type_cu = cu;
22921 if (attr->form_is_ref ())
22922 type_die = follow_die_ref (die, attr, &type_cu);
22923 if (type_die == NULL)
22924 return build_error_marker_type (cu, die);
22925 /* If we find the type now, it's probably because the type came
22926 from an inter-CU reference and the type's CU got expanded before
22928 this_type = read_type_die (type_die, type_cu);
22931 /* If we still don't have a type use an error marker. */
22933 if (this_type == NULL)
22934 return build_error_marker_type (cu, die);
22939 /* Return the type in DIE, CU.
22940 Returns NULL for invalid types.
22942 This first does a lookup in die_type_hash,
22943 and only reads the die in if necessary.
22945 NOTE: This can be called when reading in partial or full symbols. */
22947 static struct type *
22948 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22950 struct type *this_type;
22952 this_type = get_die_type (die, cu);
22956 return read_type_die_1 (die, cu);
22959 /* Read the type in DIE, CU.
22960 Returns NULL for invalid types. */
22962 static struct type *
22963 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22965 struct type *this_type = NULL;
22969 case DW_TAG_class_type:
22970 case DW_TAG_interface_type:
22971 case DW_TAG_structure_type:
22972 case DW_TAG_union_type:
22973 this_type = read_structure_type (die, cu);
22975 case DW_TAG_enumeration_type:
22976 this_type = read_enumeration_type (die, cu);
22978 case DW_TAG_subprogram:
22979 case DW_TAG_subroutine_type:
22980 case DW_TAG_inlined_subroutine:
22981 this_type = read_subroutine_type (die, cu);
22983 case DW_TAG_array_type:
22984 this_type = read_array_type (die, cu);
22986 case DW_TAG_set_type:
22987 this_type = read_set_type (die, cu);
22989 case DW_TAG_pointer_type:
22990 this_type = read_tag_pointer_type (die, cu);
22992 case DW_TAG_ptr_to_member_type:
22993 this_type = read_tag_ptr_to_member_type (die, cu);
22995 case DW_TAG_reference_type:
22996 this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22998 case DW_TAG_rvalue_reference_type:
22999 this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
23001 case DW_TAG_const_type:
23002 this_type = read_tag_const_type (die, cu);
23004 case DW_TAG_volatile_type:
23005 this_type = read_tag_volatile_type (die, cu);
23007 case DW_TAG_restrict_type:
23008 this_type = read_tag_restrict_type (die, cu);
23010 case DW_TAG_string_type:
23011 this_type = read_tag_string_type (die, cu);
23013 case DW_TAG_typedef:
23014 this_type = read_typedef (die, cu);
23016 case DW_TAG_subrange_type:
23017 this_type = read_subrange_type (die, cu);
23019 case DW_TAG_base_type:
23020 this_type = read_base_type (die, cu);
23022 case DW_TAG_unspecified_type:
23023 this_type = read_unspecified_type (die, cu);
23025 case DW_TAG_namespace:
23026 this_type = read_namespace_type (die, cu);
23028 case DW_TAG_module:
23029 this_type = read_module_type (die, cu);
23031 case DW_TAG_atomic_type:
23032 this_type = read_tag_atomic_type (die, cu);
23035 complaint (_("unexpected tag in read_type_die: '%s'"),
23036 dwarf_tag_name (die->tag));
23043 /* See if we can figure out if the class lives in a namespace. We do
23044 this by looking for a member function; its demangled name will
23045 contain namespace info, if there is any.
23046 Return the computed name or NULL.
23047 Space for the result is allocated on the objfile's obstack.
23048 This is the full-die version of guess_partial_die_structure_name.
23049 In this case we know DIE has no useful parent. */
23051 static const char *
23052 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
23054 struct die_info *spec_die;
23055 struct dwarf2_cu *spec_cu;
23056 struct die_info *child;
23057 struct objfile *objfile = cu->per_objfile->objfile;
23060 spec_die = die_specification (die, &spec_cu);
23061 if (spec_die != NULL)
23067 for (child = die->child;
23069 child = child->sibling)
23071 if (child->tag == DW_TAG_subprogram)
23073 const char *linkage_name = dw2_linkage_name (child, cu);
23075 if (linkage_name != NULL)
23077 gdb::unique_xmalloc_ptr<char> actual_name
23078 (cu->language_defn->class_name_from_physname (linkage_name));
23079 const char *name = NULL;
23081 if (actual_name != NULL)
23083 const char *die_name = dwarf2_name (die, cu);
23085 if (die_name != NULL
23086 && strcmp (die_name, actual_name.get ()) != 0)
23088 /* Strip off the class name from the full name.
23089 We want the prefix. */
23090 int die_name_len = strlen (die_name);
23091 int actual_name_len = strlen (actual_name.get ());
23092 const char *ptr = actual_name.get ();
23094 /* Test for '::' as a sanity check. */
23095 if (actual_name_len > die_name_len + 2
23096 && ptr[actual_name_len - die_name_len - 1] == ':')
23097 name = obstack_strndup (
23098 &objfile->per_bfd->storage_obstack,
23099 ptr, actual_name_len - die_name_len - 2);
23110 /* GCC might emit a nameless typedef that has a linkage name. Determine the
23111 prefix part in such case. See
23112 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
23114 static const char *
23115 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
23117 struct attribute *attr;
23120 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
23121 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
23124 if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
23127 attr = dw2_linkage_name_attr (die, cu);
23128 const char *attr_name = attr->as_string ();
23129 if (attr == NULL || attr_name == NULL)
23132 /* dwarf2_name had to be already called. */
23133 gdb_assert (attr->canonical_string_p ());
23135 /* Strip the base name, keep any leading namespaces/classes. */
23136 base = strrchr (attr_name, ':');
23137 if (base == NULL || base == attr_name || base[-1] != ':')
23140 struct objfile *objfile = cu->per_objfile->objfile;
23141 return obstack_strndup (&objfile->per_bfd->storage_obstack,
23143 &base[-1] - attr_name);
23146 /* Return the name of the namespace/class that DIE is defined within,
23147 or "" if we can't tell. The caller should not xfree the result.
23149 For example, if we're within the method foo() in the following
23159 then determine_prefix on foo's die will return "N::C". */
23161 static const char *
23162 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
23164 dwarf2_per_objfile *per_objfile = cu->per_objfile;
23165 struct die_info *parent, *spec_die;
23166 struct dwarf2_cu *spec_cu;
23167 struct type *parent_type;
23168 const char *retval;
23170 if (cu->language != language_cplus
23171 && cu->language != language_fortran && cu->language != language_d
23172 && cu->language != language_rust)
23175 retval = anonymous_struct_prefix (die, cu);
23179 /* We have to be careful in the presence of DW_AT_specification.
23180 For example, with GCC 3.4, given the code
23184 // Definition of N::foo.
23188 then we'll have a tree of DIEs like this:
23190 1: DW_TAG_compile_unit
23191 2: DW_TAG_namespace // N
23192 3: DW_TAG_subprogram // declaration of N::foo
23193 4: DW_TAG_subprogram // definition of N::foo
23194 DW_AT_specification // refers to die #3
23196 Thus, when processing die #4, we have to pretend that we're in
23197 the context of its DW_AT_specification, namely the contex of die
23200 spec_die = die_specification (die, &spec_cu);
23201 if (spec_die == NULL)
23202 parent = die->parent;
23205 parent = spec_die->parent;
23209 if (parent == NULL)
23211 else if (parent->building_fullname)
23214 const char *parent_name;
23216 /* It has been seen on RealView 2.2 built binaries,
23217 DW_TAG_template_type_param types actually _defined_ as
23218 children of the parent class:
23221 template class <class Enum> Class{};
23222 Class<enum E> class_e;
23224 1: DW_TAG_class_type (Class)
23225 2: DW_TAG_enumeration_type (E)
23226 3: DW_TAG_enumerator (enum1:0)
23227 3: DW_TAG_enumerator (enum2:1)
23229 2: DW_TAG_template_type_param
23230 DW_AT_type DW_FORM_ref_udata (E)
23232 Besides being broken debug info, it can put GDB into an
23233 infinite loop. Consider:
23235 When we're building the full name for Class<E>, we'll start
23236 at Class, and go look over its template type parameters,
23237 finding E. We'll then try to build the full name of E, and
23238 reach here. We're now trying to build the full name of E,
23239 and look over the parent DIE for containing scope. In the
23240 broken case, if we followed the parent DIE of E, we'd again
23241 find Class, and once again go look at its template type
23242 arguments, etc., etc. Simply don't consider such parent die
23243 as source-level parent of this die (it can't be, the language
23244 doesn't allow it), and break the loop here. */
23245 name = dwarf2_name (die, cu);
23246 parent_name = dwarf2_name (parent, cu);
23247 complaint (_("template param type '%s' defined within parent '%s'"),
23248 name ? name : "<unknown>",
23249 parent_name ? parent_name : "<unknown>");
23253 switch (parent->tag)
23255 case DW_TAG_namespace:
23256 parent_type = read_type_die (parent, cu);
23257 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
23258 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
23259 Work around this problem here. */
23260 if (cu->language == language_cplus
23261 && strcmp (parent_type->name (), "::") == 0)
23263 /* We give a name to even anonymous namespaces. */
23264 return parent_type->name ();
23265 case DW_TAG_class_type:
23266 case DW_TAG_interface_type:
23267 case DW_TAG_structure_type:
23268 case DW_TAG_union_type:
23269 case DW_TAG_module:
23270 parent_type = read_type_die (parent, cu);
23271 if (parent_type->name () != NULL)
23272 return parent_type->name ();
23274 /* An anonymous structure is only allowed non-static data
23275 members; no typedefs, no member functions, et cetera.
23276 So it does not need a prefix. */
23278 case DW_TAG_compile_unit:
23279 case DW_TAG_partial_unit:
23280 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
23281 if (cu->language == language_cplus
23282 && !per_objfile->per_bfd->types.empty ()
23283 && die->child != NULL
23284 && (die->tag == DW_TAG_class_type
23285 || die->tag == DW_TAG_structure_type
23286 || die->tag == DW_TAG_union_type))
23288 const char *name = guess_full_die_structure_name (die, cu);
23293 case DW_TAG_subprogram:
23294 /* Nested subroutines in Fortran get a prefix with the name
23295 of the parent's subroutine. */
23296 if (cu->language == language_fortran)
23298 if ((die->tag == DW_TAG_subprogram)
23299 && (dwarf2_name (parent, cu) != NULL))
23300 return dwarf2_name (parent, cu);
23302 return determine_prefix (parent, cu);
23303 case DW_TAG_enumeration_type:
23304 parent_type = read_type_die (parent, cu);
23305 if (TYPE_DECLARED_CLASS (parent_type))
23307 if (parent_type->name () != NULL)
23308 return parent_type->name ();
23311 /* Fall through. */
23313 return determine_prefix (parent, cu);
23317 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
23318 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
23319 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
23320 an obconcat, otherwise allocate storage for the result. The CU argument is
23321 used to determine the language and hence, the appropriate separator. */
23323 #define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
23326 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
23327 int physname, struct dwarf2_cu *cu)
23329 const char *lead = "";
23332 if (suffix == NULL || suffix[0] == '\0'
23333 || prefix == NULL || prefix[0] == '\0')
23335 else if (cu->language == language_d)
23337 /* For D, the 'main' function could be defined in any module, but it
23338 should never be prefixed. */
23339 if (strcmp (suffix, "D main") == 0)
23347 else if (cu->language == language_fortran && physname)
23349 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
23350 DW_AT_MIPS_linkage_name is preferred and used instead. */
23358 if (prefix == NULL)
23360 if (suffix == NULL)
23367 xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
23369 strcpy (retval, lead);
23370 strcat (retval, prefix);
23371 strcat (retval, sep);
23372 strcat (retval, suffix);
23377 /* We have an obstack. */
23378 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
23382 /* Get name of a die, return NULL if not found. */
23384 static const char *
23385 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
23386 struct objfile *objfile)
23388 if (name && cu->language == language_cplus)
23390 gdb::unique_xmalloc_ptr<char> canon_name
23391 = cp_canonicalize_string (name);
23393 if (canon_name != nullptr)
23394 name = objfile->intern (canon_name.get ());
23400 /* Get name of a die, return NULL if not found.
23401 Anonymous namespaces are converted to their magic string. */
23403 static const char *
23404 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
23406 struct attribute *attr;
23407 struct objfile *objfile = cu->per_objfile->objfile;
23409 attr = dwarf2_attr (die, DW_AT_name, cu);
23410 const char *attr_name = attr == nullptr ? nullptr : attr->as_string ();
23411 if (attr_name == nullptr
23412 && die->tag != DW_TAG_namespace
23413 && die->tag != DW_TAG_class_type
23414 && die->tag != DW_TAG_interface_type
23415 && die->tag != DW_TAG_structure_type
23416 && die->tag != DW_TAG_union_type)
23421 case DW_TAG_compile_unit:
23422 case DW_TAG_partial_unit:
23423 /* Compilation units have a DW_AT_name that is a filename, not
23424 a source language identifier. */
23425 case DW_TAG_enumeration_type:
23426 case DW_TAG_enumerator:
23427 /* These tags always have simple identifiers already; no need
23428 to canonicalize them. */
23431 case DW_TAG_namespace:
23432 if (attr_name != nullptr)
23434 return CP_ANONYMOUS_NAMESPACE_STR;
23436 case DW_TAG_class_type:
23437 case DW_TAG_interface_type:
23438 case DW_TAG_structure_type:
23439 case DW_TAG_union_type:
23440 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
23441 structures or unions. These were of the form "._%d" in GCC 4.1,
23442 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
23443 and GCC 4.4. We work around this problem by ignoring these. */
23444 if (attr_name != nullptr
23445 && (startswith (attr_name, "._")
23446 || startswith (attr_name, "<anonymous")))
23449 /* GCC might emit a nameless typedef that has a linkage name. See
23450 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
23451 if (!attr || attr_name == NULL)
23453 attr = dw2_linkage_name_attr (die, cu);
23454 attr_name = attr == nullptr ? nullptr : attr->as_string ();
23455 if (attr == NULL || attr_name == NULL)
23458 /* Avoid demangling attr_name the second time on a second
23459 call for the same DIE. */
23460 if (!attr->canonical_string_p ())
23462 gdb::unique_xmalloc_ptr<char> demangled
23463 (gdb_demangle (attr_name, DMGL_TYPES));
23464 if (demangled == nullptr)
23467 attr->set_string_canonical (objfile->intern (demangled.get ()));
23468 attr_name = attr->as_string ();
23471 /* Strip any leading namespaces/classes, keep only the
23472 base name. DW_AT_name for named DIEs does not
23473 contain the prefixes. */
23474 const char *base = strrchr (attr_name, ':');
23475 if (base && base > attr_name && base[-1] == ':')
23486 if (!attr->canonical_string_p ())
23487 attr->set_string_canonical (dwarf2_canonicalize_name (attr_name, cu,
23489 return attr->as_string ();
23492 /* Return the die that this die in an extension of, or NULL if there
23493 is none. *EXT_CU is the CU containing DIE on input, and the CU
23494 containing the return value on output. */
23496 static struct die_info *
23497 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
23499 struct attribute *attr;
23501 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
23505 return follow_die_ref (die, attr, ext_cu);
23509 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
23513 print_spaces (indent, f);
23514 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
23515 dwarf_tag_name (die->tag), die->abbrev,
23516 sect_offset_str (die->sect_off));
23518 if (die->parent != NULL)
23520 print_spaces (indent, f);
23521 fprintf_unfiltered (f, " parent at offset: %s\n",
23522 sect_offset_str (die->parent->sect_off));
23525 print_spaces (indent, f);
23526 fprintf_unfiltered (f, " has children: %s\n",
23527 dwarf_bool_name (die->child != NULL));
23529 print_spaces (indent, f);
23530 fprintf_unfiltered (f, " attributes:\n");
23532 for (i = 0; i < die->num_attrs; ++i)
23534 print_spaces (indent, f);
23535 fprintf_unfiltered (f, " %s (%s) ",
23536 dwarf_attr_name (die->attrs[i].name),
23537 dwarf_form_name (die->attrs[i].form));
23539 switch (die->attrs[i].form)
23542 case DW_FORM_addrx:
23543 case DW_FORM_GNU_addr_index:
23544 fprintf_unfiltered (f, "address: ");
23545 fputs_filtered (hex_string (die->attrs[i].as_address ()), f);
23547 case DW_FORM_block2:
23548 case DW_FORM_block4:
23549 case DW_FORM_block:
23550 case DW_FORM_block1:
23551 fprintf_unfiltered (f, "block: size %s",
23552 pulongest (die->attrs[i].as_block ()->size));
23554 case DW_FORM_exprloc:
23555 fprintf_unfiltered (f, "expression: size %s",
23556 pulongest (die->attrs[i].as_block ()->size));
23558 case DW_FORM_data16:
23559 fprintf_unfiltered (f, "constant of 16 bytes");
23561 case DW_FORM_ref_addr:
23562 fprintf_unfiltered (f, "ref address: ");
23563 fputs_filtered (hex_string (die->attrs[i].as_unsigned ()), f);
23565 case DW_FORM_GNU_ref_alt:
23566 fprintf_unfiltered (f, "alt ref address: ");
23567 fputs_filtered (hex_string (die->attrs[i].as_unsigned ()), f);
23573 case DW_FORM_ref_udata:
23574 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
23575 (long) (die->attrs[i].as_unsigned ()));
23577 case DW_FORM_data1:
23578 case DW_FORM_data2:
23579 case DW_FORM_data4:
23580 case DW_FORM_data8:
23581 case DW_FORM_udata:
23582 fprintf_unfiltered (f, "constant: %s",
23583 pulongest (die->attrs[i].as_unsigned ()));
23585 case DW_FORM_sec_offset:
23586 fprintf_unfiltered (f, "section offset: %s",
23587 pulongest (die->attrs[i].as_unsigned ()));
23589 case DW_FORM_ref_sig8:
23590 fprintf_unfiltered (f, "signature: %s",
23591 hex_string (die->attrs[i].as_signature ()));
23593 case DW_FORM_string:
23595 case DW_FORM_line_strp:
23597 case DW_FORM_GNU_str_index:
23598 case DW_FORM_GNU_strp_alt:
23599 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
23600 die->attrs[i].as_string ()
23601 ? die->attrs[i].as_string () : "",
23602 die->attrs[i].canonical_string_p () ? "is" : "not");
23605 if (die->attrs[i].as_boolean ())
23606 fprintf_unfiltered (f, "flag: TRUE");
23608 fprintf_unfiltered (f, "flag: FALSE");
23610 case DW_FORM_flag_present:
23611 fprintf_unfiltered (f, "flag: TRUE");
23613 case DW_FORM_indirect:
23614 /* The reader will have reduced the indirect form to
23615 the "base form" so this form should not occur. */
23616 fprintf_unfiltered (f,
23617 "unexpected attribute form: DW_FORM_indirect");
23619 case DW_FORM_sdata:
23620 case DW_FORM_implicit_const:
23621 fprintf_unfiltered (f, "constant: %s",
23622 plongest (die->attrs[i].as_signed ()));
23625 fprintf_unfiltered (f, "unsupported attribute form: %d.",
23626 die->attrs[i].form);
23629 fprintf_unfiltered (f, "\n");
23634 dump_die_for_error (struct die_info *die)
23636 dump_die_shallow (gdb_stderr, 0, die);
23640 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
23642 int indent = level * 4;
23644 gdb_assert (die != NULL);
23646 if (level >= max_level)
23649 dump_die_shallow (f, indent, die);
23651 if (die->child != NULL)
23653 print_spaces (indent, f);
23654 fprintf_unfiltered (f, " Children:");
23655 if (level + 1 < max_level)
23657 fprintf_unfiltered (f, "\n");
23658 dump_die_1 (f, level + 1, max_level, die->child);
23662 fprintf_unfiltered (f,
23663 " [not printed, max nesting level reached]\n");
23667 if (die->sibling != NULL && level > 0)
23669 dump_die_1 (f, level, max_level, die->sibling);
23673 /* This is called from the pdie macro in gdbinit.in.
23674 It's not static so gcc will keep a copy callable from gdb. */
23677 dump_die (struct die_info *die, int max_level)
23679 dump_die_1 (gdb_stdlog, 0, max_level, die);
23683 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
23687 slot = htab_find_slot_with_hash (cu->die_hash, die,
23688 to_underlying (die->sect_off),
23694 /* Follow reference or signature attribute ATTR of SRC_DIE.
23695 On entry *REF_CU is the CU of SRC_DIE.
23696 On exit *REF_CU is the CU of the result. */
23698 static struct die_info *
23699 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23700 struct dwarf2_cu **ref_cu)
23702 struct die_info *die;
23704 if (attr->form_is_ref ())
23705 die = follow_die_ref (src_die, attr, ref_cu);
23706 else if (attr->form == DW_FORM_ref_sig8)
23707 die = follow_die_sig (src_die, attr, ref_cu);
23710 dump_die_for_error (src_die);
23711 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23712 objfile_name ((*ref_cu)->per_objfile->objfile));
23718 /* Follow reference OFFSET.
23719 On entry *REF_CU is the CU of the source die referencing OFFSET.
23720 On exit *REF_CU is the CU of the result.
23721 Returns NULL if OFFSET is invalid. */
23723 static struct die_info *
23724 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23725 struct dwarf2_cu **ref_cu)
23727 struct die_info temp_die;
23728 struct dwarf2_cu *target_cu, *cu = *ref_cu;
23729 dwarf2_per_objfile *per_objfile = cu->per_objfile;
23731 gdb_assert (cu->per_cu != NULL);
23735 dwarf_read_debug_printf_v ("source CU offset: %s, target offset: %s, "
23736 "source CU contains target offset: %d",
23737 sect_offset_str (cu->per_cu->sect_off),
23738 sect_offset_str (sect_off),
23739 cu->header.offset_in_cu_p (sect_off));
23741 if (cu->per_cu->is_debug_types)
23743 /* .debug_types CUs cannot reference anything outside their CU.
23744 If they need to, they have to reference a signatured type via
23745 DW_FORM_ref_sig8. */
23746 if (!cu->header.offset_in_cu_p (sect_off))
23749 else if (offset_in_dwz != cu->per_cu->is_dwz
23750 || !cu->header.offset_in_cu_p (sect_off))
23752 struct dwarf2_per_cu_data *per_cu;
23754 per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23757 dwarf_read_debug_printf_v ("target CU offset: %s, "
23758 "target CU DIEs loaded: %d",
23759 sect_offset_str (per_cu->sect_off),
23760 per_objfile->get_cu (per_cu) != nullptr);
23762 /* If necessary, add it to the queue and load its DIEs.
23764 Even if maybe_queue_comp_unit doesn't require us to load the CU's DIEs,
23765 it doesn't mean they are currently loaded. Since we require them
23766 to be loaded, we must check for ourselves. */
23767 if (maybe_queue_comp_unit (cu, per_cu, per_objfile, cu->language)
23768 || per_objfile->get_cu (per_cu) == nullptr)
23769 load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
23770 false, cu->language);
23772 target_cu = per_objfile->get_cu (per_cu);
23773 gdb_assert (target_cu != nullptr);
23775 else if (cu->dies == NULL)
23777 /* We're loading full DIEs during partial symbol reading. */
23778 gdb_assert (per_objfile->per_bfd->reading_partial_symbols);
23779 load_full_comp_unit (cu->per_cu, per_objfile, cu, false,
23783 *ref_cu = target_cu;
23784 temp_die.sect_off = sect_off;
23786 if (target_cu != cu)
23787 target_cu->ancestor = cu;
23789 return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23791 to_underlying (sect_off));
23794 /* Follow reference attribute ATTR of SRC_DIE.
23795 On entry *REF_CU is the CU of SRC_DIE.
23796 On exit *REF_CU is the CU of the result. */
23798 static struct die_info *
23799 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23800 struct dwarf2_cu **ref_cu)
23802 sect_offset sect_off = attr->get_ref_die_offset ();
23803 struct dwarf2_cu *cu = *ref_cu;
23804 struct die_info *die;
23806 die = follow_die_offset (sect_off,
23807 (attr->form == DW_FORM_GNU_ref_alt
23808 || cu->per_cu->is_dwz),
23811 error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23812 "at %s [in module %s]"),
23813 sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23814 objfile_name (cu->per_objfile->objfile));
23821 struct dwarf2_locexpr_baton
23822 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23823 dwarf2_per_cu_data *per_cu,
23824 dwarf2_per_objfile *per_objfile,
23825 gdb::function_view<CORE_ADDR ()> get_frame_pc,
23826 bool resolve_abstract_p)
23828 struct die_info *die;
23829 struct attribute *attr;
23830 struct dwarf2_locexpr_baton retval;
23831 struct objfile *objfile = per_objfile->objfile;
23833 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
23835 cu = load_cu (per_cu, per_objfile, false);
23839 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23840 Instead just throw an error, not much else we can do. */
23841 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23842 sect_offset_str (sect_off), objfile_name (objfile));
23845 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23847 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23848 sect_offset_str (sect_off), objfile_name (objfile));
23850 attr = dwarf2_attr (die, DW_AT_location, cu);
23851 if (!attr && resolve_abstract_p
23852 && (per_objfile->per_bfd->abstract_to_concrete.find (die->sect_off)
23853 != per_objfile->per_bfd->abstract_to_concrete.end ()))
23855 CORE_ADDR pc = get_frame_pc ();
23856 CORE_ADDR baseaddr = objfile->text_section_offset ();
23857 struct gdbarch *gdbarch = objfile->arch ();
23859 for (const auto &cand_off
23860 : per_objfile->per_bfd->abstract_to_concrete[die->sect_off])
23862 struct dwarf2_cu *cand_cu = cu;
23863 struct die_info *cand
23864 = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu);
23867 || cand->parent->tag != DW_TAG_subprogram)
23870 CORE_ADDR pc_low, pc_high;
23871 get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23872 if (pc_low == ((CORE_ADDR) -1))
23874 pc_low = gdbarch_adjust_dwarf2_addr (gdbarch, pc_low + baseaddr);
23875 pc_high = gdbarch_adjust_dwarf2_addr (gdbarch, pc_high + baseaddr);
23876 if (!(pc_low <= pc && pc < pc_high))
23880 attr = dwarf2_attr (die, DW_AT_location, cu);
23887 /* DWARF: "If there is no such attribute, then there is no effect.".
23888 DATA is ignored if SIZE is 0. */
23890 retval.data = NULL;
23893 else if (attr->form_is_section_offset ())
23895 struct dwarf2_loclist_baton loclist_baton;
23896 CORE_ADDR pc = get_frame_pc ();
23899 fill_in_loclist_baton (cu, &loclist_baton, attr);
23901 retval.data = dwarf2_find_location_expression (&loclist_baton,
23903 retval.size = size;
23907 if (!attr->form_is_block ())
23908 error (_("Dwarf Error: DIE at %s referenced in module %s "
23909 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23910 sect_offset_str (sect_off), objfile_name (objfile));
23912 struct dwarf_block *block = attr->as_block ();
23913 retval.data = block->data;
23914 retval.size = block->size;
23916 retval.per_objfile = per_objfile;
23917 retval.per_cu = cu->per_cu;
23919 per_objfile->age_comp_units ();
23926 struct dwarf2_locexpr_baton
23927 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23928 dwarf2_per_cu_data *per_cu,
23929 dwarf2_per_objfile *per_objfile,
23930 gdb::function_view<CORE_ADDR ()> get_frame_pc)
23932 sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23934 return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, per_objfile,
23938 /* Write a constant of a given type as target-ordered bytes into
23941 static const gdb_byte *
23942 write_constant_as_bytes (struct obstack *obstack,
23943 enum bfd_endian byte_order,
23950 *len = TYPE_LENGTH (type);
23951 result = (gdb_byte *) obstack_alloc (obstack, *len);
23952 store_unsigned_integer (result, *len, byte_order, value);
23960 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23961 dwarf2_per_cu_data *per_cu,
23962 dwarf2_per_objfile *per_objfile,
23966 struct die_info *die;
23967 struct attribute *attr;
23968 const gdb_byte *result = NULL;
23971 enum bfd_endian byte_order;
23972 struct objfile *objfile = per_objfile->objfile;
23974 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
23976 cu = load_cu (per_cu, per_objfile, false);
23980 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23981 Instead just throw an error, not much else we can do. */
23982 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23983 sect_offset_str (sect_off), objfile_name (objfile));
23986 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23988 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23989 sect_offset_str (sect_off), objfile_name (objfile));
23991 attr = dwarf2_attr (die, DW_AT_const_value, cu);
23995 byte_order = (bfd_big_endian (objfile->obfd)
23996 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23998 switch (attr->form)
24001 case DW_FORM_addrx:
24002 case DW_FORM_GNU_addr_index:
24006 *len = cu->header.addr_size;
24007 tem = (gdb_byte *) obstack_alloc (obstack, *len);
24008 store_unsigned_integer (tem, *len, byte_order, attr->as_address ());
24012 case DW_FORM_string:
24015 case DW_FORM_GNU_str_index:
24016 case DW_FORM_GNU_strp_alt:
24017 /* The string is already allocated on the objfile obstack, point
24020 const char *attr_name = attr->as_string ();
24021 result = (const gdb_byte *) attr_name;
24022 *len = strlen (attr_name);
24025 case DW_FORM_block1:
24026 case DW_FORM_block2:
24027 case DW_FORM_block4:
24028 case DW_FORM_block:
24029 case DW_FORM_exprloc:
24030 case DW_FORM_data16:
24032 struct dwarf_block *block = attr->as_block ();
24033 result = block->data;
24034 *len = block->size;
24038 /* The DW_AT_const_value attributes are supposed to carry the
24039 symbol's value "represented as it would be on the target
24040 architecture." By the time we get here, it's already been
24041 converted to host endianness, so we just need to sign- or
24042 zero-extend it as appropriate. */
24043 case DW_FORM_data1:
24044 type = die_type (die, cu);
24045 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
24046 if (result == NULL)
24047 result = write_constant_as_bytes (obstack, byte_order,
24050 case DW_FORM_data2:
24051 type = die_type (die, cu);
24052 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
24053 if (result == NULL)
24054 result = write_constant_as_bytes (obstack, byte_order,
24057 case DW_FORM_data4:
24058 type = die_type (die, cu);
24059 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
24060 if (result == NULL)
24061 result = write_constant_as_bytes (obstack, byte_order,
24064 case DW_FORM_data8:
24065 type = die_type (die, cu);
24066 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
24067 if (result == NULL)
24068 result = write_constant_as_bytes (obstack, byte_order,
24072 case DW_FORM_sdata:
24073 case DW_FORM_implicit_const:
24074 type = die_type (die, cu);
24075 result = write_constant_as_bytes (obstack, byte_order,
24076 type, attr->as_signed (), len);
24079 case DW_FORM_udata:
24080 type = die_type (die, cu);
24081 result = write_constant_as_bytes (obstack, byte_order,
24082 type, attr->as_unsigned (), len);
24086 complaint (_("unsupported const value attribute form: '%s'"),
24087 dwarf_form_name (attr->form));
24097 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
24098 dwarf2_per_cu_data *per_cu,
24099 dwarf2_per_objfile *per_objfile)
24101 struct die_info *die;
24103 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
24105 cu = load_cu (per_cu, per_objfile, false);
24110 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
24114 return die_type (die, cu);
24120 dwarf2_get_die_type (cu_offset die_offset,
24121 dwarf2_per_cu_data *per_cu,
24122 dwarf2_per_objfile *per_objfile)
24124 sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
24125 return get_die_type_at_offset (die_offset_sect, per_cu, per_objfile);
24128 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
24129 On entry *REF_CU is the CU of SRC_DIE.
24130 On exit *REF_CU is the CU of the result.
24131 Returns NULL if the referenced DIE isn't found. */
24133 static struct die_info *
24134 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
24135 struct dwarf2_cu **ref_cu)
24137 struct die_info temp_die;
24138 struct dwarf2_cu *sig_cu, *cu = *ref_cu;
24139 struct die_info *die;
24140 dwarf2_per_objfile *per_objfile = (*ref_cu)->per_objfile;
24143 /* While it might be nice to assert sig_type->type == NULL here,
24144 we can get here for DW_AT_imported_declaration where we need
24145 the DIE not the type. */
24147 /* If necessary, add it to the queue and load its DIEs.
24149 Even if maybe_queue_comp_unit doesn't require us to load the CU's DIEs,
24150 it doesn't mean they are currently loaded. Since we require them
24151 to be loaded, we must check for ourselves. */
24152 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, per_objfile,
24154 || per_objfile->get_cu (&sig_type->per_cu) == nullptr)
24155 read_signatured_type (sig_type, per_objfile);
24157 sig_cu = per_objfile->get_cu (&sig_type->per_cu);
24158 gdb_assert (sig_cu != NULL);
24159 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
24160 temp_die.sect_off = sig_type->type_offset_in_section;
24161 die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
24162 to_underlying (temp_die.sect_off));
24165 /* For .gdb_index version 7 keep track of included TUs.
24166 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
24167 if (per_objfile->per_bfd->index_table != NULL
24168 && per_objfile->per_bfd->index_table->version <= 7)
24170 (*ref_cu)->per_cu->imported_symtabs_push (sig_cu->per_cu);
24175 sig_cu->ancestor = cu;
24183 /* Follow signatured type referenced by ATTR in SRC_DIE.
24184 On entry *REF_CU is the CU of SRC_DIE.
24185 On exit *REF_CU is the CU of the result.
24186 The result is the DIE of the type.
24187 If the referenced type cannot be found an error is thrown. */
24189 static struct die_info *
24190 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
24191 struct dwarf2_cu **ref_cu)
24193 ULONGEST signature = attr->as_signature ();
24194 struct signatured_type *sig_type;
24195 struct die_info *die;
24197 gdb_assert (attr->form == DW_FORM_ref_sig8);
24199 sig_type = lookup_signatured_type (*ref_cu, signature);
24200 /* sig_type will be NULL if the signatured type is missing from
24202 if (sig_type == NULL)
24204 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
24205 " from DIE at %s [in module %s]"),
24206 hex_string (signature), sect_offset_str (src_die->sect_off),
24207 objfile_name ((*ref_cu)->per_objfile->objfile));
24210 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
24213 dump_die_for_error (src_die);
24214 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
24215 " from DIE at %s [in module %s]"),
24216 hex_string (signature), sect_offset_str (src_die->sect_off),
24217 objfile_name ((*ref_cu)->per_objfile->objfile));
24223 /* Get the type specified by SIGNATURE referenced in DIE/CU,
24224 reading in and processing the type unit if necessary. */
24226 static struct type *
24227 get_signatured_type (struct die_info *die, ULONGEST signature,
24228 struct dwarf2_cu *cu)
24230 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24231 struct signatured_type *sig_type;
24232 struct dwarf2_cu *type_cu;
24233 struct die_info *type_die;
24236 sig_type = lookup_signatured_type (cu, signature);
24237 /* sig_type will be NULL if the signatured type is missing from
24239 if (sig_type == NULL)
24241 complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
24242 " from DIE at %s [in module %s]"),
24243 hex_string (signature), sect_offset_str (die->sect_off),
24244 objfile_name (per_objfile->objfile));
24245 return build_error_marker_type (cu, die);
24248 /* If we already know the type we're done. */
24249 type = per_objfile->get_type_for_signatured_type (sig_type);
24250 if (type != nullptr)
24254 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
24255 if (type_die != NULL)
24257 /* N.B. We need to call get_die_type to ensure only one type for this DIE
24258 is created. This is important, for example, because for c++ classes
24259 we need TYPE_NAME set which is only done by new_symbol. Blech. */
24260 type = read_type_die (type_die, type_cu);
24263 complaint (_("Dwarf Error: Cannot build signatured type %s"
24264 " referenced from DIE at %s [in module %s]"),
24265 hex_string (signature), sect_offset_str (die->sect_off),
24266 objfile_name (per_objfile->objfile));
24267 type = build_error_marker_type (cu, die);
24272 complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
24273 " from DIE at %s [in module %s]"),
24274 hex_string (signature), sect_offset_str (die->sect_off),
24275 objfile_name (per_objfile->objfile));
24276 type = build_error_marker_type (cu, die);
24279 per_objfile->set_type_for_signatured_type (sig_type, type);
24284 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
24285 reading in and processing the type unit if necessary. */
24287 static struct type *
24288 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
24289 struct dwarf2_cu *cu) /* ARI: editCase function */
24291 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
24292 if (attr->form_is_ref ())
24294 struct dwarf2_cu *type_cu = cu;
24295 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
24297 return read_type_die (type_die, type_cu);
24299 else if (attr->form == DW_FORM_ref_sig8)
24301 return get_signatured_type (die, attr->as_signature (), cu);
24305 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24307 complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
24308 " at %s [in module %s]"),
24309 dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
24310 objfile_name (per_objfile->objfile));
24311 return build_error_marker_type (cu, die);
24315 /* Load the DIEs associated with type unit PER_CU into memory. */
24318 load_full_type_unit (dwarf2_per_cu_data *per_cu,
24319 dwarf2_per_objfile *per_objfile)
24321 struct signatured_type *sig_type;
24323 /* Caller is responsible for ensuring type_unit_groups don't get here. */
24324 gdb_assert (! per_cu->type_unit_group_p ());
24326 /* We have the per_cu, but we need the signatured_type.
24327 Fortunately this is an easy translation. */
24328 gdb_assert (per_cu->is_debug_types);
24329 sig_type = (struct signatured_type *) per_cu;
24331 gdb_assert (per_objfile->get_cu (per_cu) == nullptr);
24333 read_signatured_type (sig_type, per_objfile);
24335 gdb_assert (per_objfile->get_cu (per_cu) != nullptr);
24338 /* Read in a signatured type and build its CU and DIEs.
24339 If the type is a stub for the real type in a DWO file,
24340 read in the real type from the DWO file as well. */
24343 read_signatured_type (signatured_type *sig_type,
24344 dwarf2_per_objfile *per_objfile)
24346 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
24348 gdb_assert (per_cu->is_debug_types);
24349 gdb_assert (per_objfile->get_cu (per_cu) == nullptr);
24351 cutu_reader reader (per_cu, per_objfile, nullptr, nullptr, false);
24353 if (!reader.dummy_p)
24355 struct dwarf2_cu *cu = reader.cu;
24356 const gdb_byte *info_ptr = reader.info_ptr;
24358 gdb_assert (cu->die_hash == NULL);
24360 htab_create_alloc_ex (cu->header.length / 12,
24364 &cu->comp_unit_obstack,
24365 hashtab_obstack_allocate,
24366 dummy_obstack_deallocate);
24368 if (reader.comp_unit_die->has_children)
24369 reader.comp_unit_die->child
24370 = read_die_and_siblings (&reader, info_ptr, &info_ptr,
24371 reader.comp_unit_die);
24372 cu->dies = reader.comp_unit_die;
24373 /* comp_unit_die is not stored in die_hash, no need. */
24375 /* We try not to read any attributes in this function, because
24376 not all CUs needed for references have been loaded yet, and
24377 symbol table processing isn't initialized. But we have to
24378 set the CU language, or we won't be able to build types
24379 correctly. Similarly, if we do not read the producer, we can
24380 not apply producer-specific interpretation. */
24381 prepare_one_comp_unit (cu, cu->dies, language_minimal);
24386 sig_type->per_cu.tu_read = 1;
24389 /* Decode simple location descriptions.
24390 Given a pointer to a dwarf block that defines a location, compute
24391 the location and return the value. If COMPUTED is non-null, it is
24392 set to true to indicate that decoding was successful, and false
24393 otherwise. If COMPUTED is null, then this function may emit a
24397 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu, bool *computed)
24399 struct objfile *objfile = cu->per_objfile->objfile;
24401 size_t size = blk->size;
24402 const gdb_byte *data = blk->data;
24403 CORE_ADDR stack[64];
24405 unsigned int bytes_read, unsnd;
24408 if (computed != nullptr)
24414 stack[++stacki] = 0;
24453 stack[++stacki] = op - DW_OP_lit0;
24488 stack[++stacki] = op - DW_OP_reg0;
24491 if (computed == nullptr)
24492 dwarf2_complex_location_expr_complaint ();
24499 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
24501 stack[++stacki] = unsnd;
24504 if (computed == nullptr)
24505 dwarf2_complex_location_expr_complaint ();
24512 stack[++stacki] = cu->header.read_address (objfile->obfd, &data[i],
24517 case DW_OP_const1u:
24518 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
24522 case DW_OP_const1s:
24523 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
24527 case DW_OP_const2u:
24528 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
24532 case DW_OP_const2s:
24533 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
24537 case DW_OP_const4u:
24538 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
24542 case DW_OP_const4s:
24543 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
24547 case DW_OP_const8u:
24548 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
24553 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
24559 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
24564 stack[stacki + 1] = stack[stacki];
24569 stack[stacki - 1] += stack[stacki];
24573 case DW_OP_plus_uconst:
24574 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
24580 stack[stacki - 1] -= stack[stacki];
24585 /* If we're not the last op, then we definitely can't encode
24586 this using GDB's address_class enum. This is valid for partial
24587 global symbols, although the variable's address will be bogus
24591 if (computed == nullptr)
24592 dwarf2_complex_location_expr_complaint ();
24598 case DW_OP_GNU_push_tls_address:
24599 case DW_OP_form_tls_address:
24600 /* The top of the stack has the offset from the beginning
24601 of the thread control block at which the variable is located. */
24602 /* Nothing should follow this operator, so the top of stack would
24604 /* This is valid for partial global symbols, but the variable's
24605 address will be bogus in the psymtab. Make it always at least
24606 non-zero to not look as a variable garbage collected by linker
24607 which have DW_OP_addr 0. */
24610 if (computed == nullptr)
24611 dwarf2_complex_location_expr_complaint ();
24618 case DW_OP_GNU_uninit:
24619 if (computed != nullptr)
24624 case DW_OP_GNU_addr_index:
24625 case DW_OP_GNU_const_index:
24626 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
24632 if (computed == nullptr)
24634 const char *name = get_DW_OP_name (op);
24637 complaint (_("unsupported stack op: '%s'"),
24640 complaint (_("unsupported stack op: '%02x'"),
24644 return (stack[stacki]);
24647 /* Enforce maximum stack depth of SIZE-1 to avoid writing
24648 outside of the allocated space. Also enforce minimum>0. */
24649 if (stacki >= ARRAY_SIZE (stack) - 1)
24651 if (computed == nullptr)
24652 complaint (_("location description stack overflow"));
24658 if (computed == nullptr)
24659 complaint (_("location description stack underflow"));
24664 if (computed != nullptr)
24666 return (stack[stacki]);
24669 /* memory allocation interface */
24671 static struct dwarf_block *
24672 dwarf_alloc_block (struct dwarf2_cu *cu)
24674 return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
24677 static struct die_info *
24678 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
24680 struct die_info *die;
24681 size_t size = sizeof (struct die_info);
24684 size += (num_attrs - 1) * sizeof (struct attribute);
24686 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
24687 memset (die, 0, sizeof (struct die_info));
24693 /* Macro support. */
24695 /* An overload of dwarf_decode_macros that finds the correct section
24696 and ensures it is read in before calling the other overload. */
24699 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24700 int section_is_gnu)
24702 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24703 struct objfile *objfile = per_objfile->objfile;
24704 const struct line_header *lh = cu->line_header;
24705 unsigned int offset_size = cu->header.offset_size;
24706 struct dwarf2_section_info *section;
24707 const char *section_name;
24709 if (cu->dwo_unit != nullptr)
24711 if (section_is_gnu)
24713 section = &cu->dwo_unit->dwo_file->sections.macro;
24714 section_name = ".debug_macro.dwo";
24718 section = &cu->dwo_unit->dwo_file->sections.macinfo;
24719 section_name = ".debug_macinfo.dwo";
24724 if (section_is_gnu)
24726 section = &per_objfile->per_bfd->macro;
24727 section_name = ".debug_macro";
24731 section = &per_objfile->per_bfd->macinfo;
24732 section_name = ".debug_macinfo";
24736 section->read (objfile);
24737 if (section->buffer == nullptr)
24739 complaint (_("missing %s section"), section_name);
24743 buildsym_compunit *builder = cu->get_builder ();
24745 struct dwarf2_section_info *str_offsets_section;
24746 struct dwarf2_section_info *str_section;
24747 ULONGEST str_offsets_base;
24749 if (cu->dwo_unit != nullptr)
24751 str_offsets_section = &cu->dwo_unit->dwo_file
24752 ->sections.str_offsets;
24753 str_section = &cu->dwo_unit->dwo_file->sections.str;
24754 str_offsets_base = cu->header.addr_size;
24758 str_offsets_section = &per_objfile->per_bfd->str_offsets;
24759 str_section = &per_objfile->per_bfd->str;
24760 str_offsets_base = *cu->str_offsets_base;
24763 dwarf_decode_macros (per_objfile, builder, section, lh,
24764 offset_size, offset, str_section, str_offsets_section,
24765 str_offsets_base, section_is_gnu);
24768 /* Return the .debug_loc section to use for CU.
24769 For DWO files use .debug_loc.dwo. */
24771 static struct dwarf2_section_info *
24772 cu_debug_loc_section (struct dwarf2_cu *cu)
24774 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24778 struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24780 return cu->header.version >= 5 ? §ions->loclists : §ions->loc;
24782 return (cu->header.version >= 5 ? &per_objfile->per_bfd->loclists
24783 : &per_objfile->per_bfd->loc);
24786 /* Return the .debug_rnglists section to use for CU. */
24787 static struct dwarf2_section_info *
24788 cu_debug_rnglists_section (struct dwarf2_cu *cu, dwarf_tag tag)
24790 if (cu->header.version < 5)
24791 error (_(".debug_rnglists section cannot be used in DWARF %d"),
24792 cu->header.version);
24793 struct dwarf2_per_objfile *dwarf2_per_objfile = cu->per_objfile;
24795 /* Make sure we read the .debug_rnglists section from the file that
24796 contains the DW_AT_ranges attribute we are reading. Normally that
24797 would be the .dwo file, if there is one. However for DW_TAG_compile_unit
24798 or DW_TAG_skeleton unit, we always want to read from objfile/linked
24800 if (cu->dwo_unit != nullptr
24801 && tag != DW_TAG_compile_unit
24802 && tag != DW_TAG_skeleton_unit)
24804 struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24806 if (sections->rnglists.size > 0)
24807 return §ions->rnglists;
24809 error (_(".debug_rnglists section is missing from .dwo file."));
24811 return &dwarf2_per_objfile->per_bfd->rnglists;
24814 /* A helper function that fills in a dwarf2_loclist_baton. */
24817 fill_in_loclist_baton (struct dwarf2_cu *cu,
24818 struct dwarf2_loclist_baton *baton,
24819 const struct attribute *attr)
24821 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24822 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24824 section->read (per_objfile->objfile);
24826 baton->per_objfile = per_objfile;
24827 baton->per_cu = cu->per_cu;
24828 gdb_assert (baton->per_cu);
24829 /* We don't know how long the location list is, but make sure we
24830 don't run off the edge of the section. */
24831 baton->size = section->size - attr->as_unsigned ();
24832 baton->data = section->buffer + attr->as_unsigned ();
24833 if (cu->base_address.has_value ())
24834 baton->base_address = *cu->base_address;
24836 baton->base_address = 0;
24837 baton->from_dwo = cu->dwo_unit != NULL;
24841 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24842 struct dwarf2_cu *cu, int is_block)
24844 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24845 struct objfile *objfile = per_objfile->objfile;
24846 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24848 if (attr->form_is_section_offset ()
24849 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24850 the section. If so, fall through to the complaint in the
24852 && attr->as_unsigned () < section->get_size (objfile))
24854 struct dwarf2_loclist_baton *baton;
24856 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24858 fill_in_loclist_baton (cu, baton, attr);
24860 if (!cu->base_address.has_value ())
24861 complaint (_("Location list used without "
24862 "specifying the CU base address."));
24864 SYMBOL_ACLASS_INDEX (sym) = (is_block
24865 ? dwarf2_loclist_block_index
24866 : dwarf2_loclist_index);
24867 SYMBOL_LOCATION_BATON (sym) = baton;
24871 struct dwarf2_locexpr_baton *baton;
24873 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24874 baton->per_objfile = per_objfile;
24875 baton->per_cu = cu->per_cu;
24876 gdb_assert (baton->per_cu);
24878 if (attr->form_is_block ())
24880 /* Note that we're just copying the block's data pointer
24881 here, not the actual data. We're still pointing into the
24882 info_buffer for SYM's objfile; right now we never release
24883 that buffer, but when we do clean up properly this may
24885 struct dwarf_block *block = attr->as_block ();
24886 baton->size = block->size;
24887 baton->data = block->data;
24891 dwarf2_invalid_attrib_class_complaint ("location description",
24892 sym->natural_name ());
24896 SYMBOL_ACLASS_INDEX (sym) = (is_block
24897 ? dwarf2_locexpr_block_index
24898 : dwarf2_locexpr_index);
24899 SYMBOL_LOCATION_BATON (sym) = baton;
24905 const comp_unit_head *
24906 dwarf2_per_cu_data::get_header () const
24908 if (!m_header_read_in)
24910 const gdb_byte *info_ptr
24911 = this->section->buffer + to_underlying (this->sect_off);
24913 memset (&m_header, 0, sizeof (m_header));
24915 read_comp_unit_head (&m_header, info_ptr, this->section,
24916 rcuh_kind::COMPILE);
24918 m_header_read_in = true;
24927 dwarf2_per_cu_data::addr_size () const
24929 return this->get_header ()->addr_size;
24935 dwarf2_per_cu_data::offset_size () const
24937 return this->get_header ()->offset_size;
24943 dwarf2_per_cu_data::ref_addr_size () const
24945 const comp_unit_head *header = this->get_header ();
24947 if (header->version == 2)
24948 return header->addr_size;
24950 return header->offset_size;
24956 dwarf2_cu::addr_type () const
24958 struct objfile *objfile = this->per_objfile->objfile;
24959 struct type *void_type = objfile_type (objfile)->builtin_void;
24960 struct type *addr_type = lookup_pointer_type (void_type);
24961 int addr_size = this->per_cu->addr_size ();
24963 if (TYPE_LENGTH (addr_type) == addr_size)
24966 addr_type = addr_sized_int_type (addr_type->is_unsigned ());
24970 /* A helper function for dwarf2_find_containing_comp_unit that returns
24971 the index of the result, and that searches a vector. It will
24972 return a result even if the offset in question does not actually
24973 occur in any CU. This is separate so that it can be unit
24977 dwarf2_find_containing_comp_unit
24978 (sect_offset sect_off,
24979 unsigned int offset_in_dwz,
24980 const std::vector<dwarf2_per_cu_data *> &all_comp_units)
24985 high = all_comp_units.size () - 1;
24988 struct dwarf2_per_cu_data *mid_cu;
24989 int mid = low + (high - low) / 2;
24991 mid_cu = all_comp_units[mid];
24992 if (mid_cu->is_dwz > offset_in_dwz
24993 || (mid_cu->is_dwz == offset_in_dwz
24994 && mid_cu->sect_off + mid_cu->length > sect_off))
24999 gdb_assert (low == high);
25003 /* Locate the .debug_info compilation unit from CU's objfile which contains
25004 the DIE at OFFSET. Raises an error on failure. */
25006 static struct dwarf2_per_cu_data *
25007 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25008 unsigned int offset_in_dwz,
25009 dwarf2_per_objfile *per_objfile)
25011 int low = dwarf2_find_containing_comp_unit
25012 (sect_off, offset_in_dwz, per_objfile->per_bfd->all_comp_units);
25013 dwarf2_per_cu_data *this_cu = per_objfile->per_bfd->all_comp_units[low];
25015 if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
25017 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25018 error (_("Dwarf Error: could not find partial DIE containing "
25019 "offset %s [in module %s]"),
25020 sect_offset_str (sect_off),
25021 bfd_get_filename (per_objfile->objfile->obfd));
25023 gdb_assert (per_objfile->per_bfd->all_comp_units[low-1]->sect_off
25025 return per_objfile->per_bfd->all_comp_units[low-1];
25029 if (low == per_objfile->per_bfd->all_comp_units.size () - 1
25030 && sect_off >= this_cu->sect_off + this_cu->length)
25031 error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25032 gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25039 namespace selftests {
25040 namespace find_containing_comp_unit {
25045 struct dwarf2_per_cu_data one {};
25046 struct dwarf2_per_cu_data two {};
25047 struct dwarf2_per_cu_data three {};
25048 struct dwarf2_per_cu_data four {};
25051 two.sect_off = sect_offset (one.length);
25056 four.sect_off = sect_offset (three.length);
25060 std::vector<dwarf2_per_cu_data *> units;
25061 units.push_back (&one);
25062 units.push_back (&two);
25063 units.push_back (&three);
25064 units.push_back (&four);
25068 result = dwarf2_find_containing_comp_unit (sect_offset (0), 0, units);
25069 SELF_CHECK (units[result] == &one);
25070 result = dwarf2_find_containing_comp_unit (sect_offset (3), 0, units);
25071 SELF_CHECK (units[result] == &one);
25072 result = dwarf2_find_containing_comp_unit (sect_offset (5), 0, units);
25073 SELF_CHECK (units[result] == &two);
25075 result = dwarf2_find_containing_comp_unit (sect_offset (0), 1, units);
25076 SELF_CHECK (units[result] == &three);
25077 result = dwarf2_find_containing_comp_unit (sect_offset (3), 1, units);
25078 SELF_CHECK (units[result] == &three);
25079 result = dwarf2_find_containing_comp_unit (sect_offset (5), 1, units);
25080 SELF_CHECK (units[result] == &four);
25086 #endif /* GDB_SELF_TEST */
25088 /* Initialize dwarf2_cu to read PER_CU, in the context of PER_OBJFILE. */
25090 dwarf2_cu::dwarf2_cu (dwarf2_per_cu_data *per_cu,
25091 dwarf2_per_objfile *per_objfile)
25093 per_objfile (per_objfile),
25095 has_loclist (false),
25096 checked_producer (false),
25097 producer_is_gxx_lt_4_6 (false),
25098 producer_is_gcc_lt_4_3 (false),
25099 producer_is_icc (false),
25100 producer_is_icc_lt_14 (false),
25101 producer_is_codewarrior (false),
25102 processing_has_namespace_info (false)
25106 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
25109 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25110 enum language pretend_language)
25112 struct attribute *attr;
25114 /* Set the language we're debugging. */
25115 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25116 if (attr != nullptr)
25117 set_cu_language (attr->constant_value (0), cu);
25120 cu->language = pretend_language;
25121 cu->language_defn = language_def (cu->language);
25124 cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25130 dwarf2_per_objfile::get_cu (dwarf2_per_cu_data *per_cu)
25132 auto it = m_dwarf2_cus.find (per_cu);
25133 if (it == m_dwarf2_cus.end ())
25142 dwarf2_per_objfile::set_cu (dwarf2_per_cu_data *per_cu, dwarf2_cu *cu)
25144 gdb_assert (this->get_cu (per_cu) == nullptr);
25146 m_dwarf2_cus[per_cu] = cu;
25152 dwarf2_per_objfile::age_comp_units ()
25154 dwarf_read_debug_printf_v ("running");
25156 /* This is not expected to be called in the middle of CU expansion. There is
25157 an invariant that if a CU is in the CUs-to-expand queue, its DIEs are
25158 loaded in memory. Calling age_comp_units while the queue is in use could
25159 make us free the DIEs for a CU that is in the queue and therefore break
25161 gdb_assert (!this->per_bfd->queue.has_value ());
25163 /* Start by clearing all marks. */
25164 for (auto pair : m_dwarf2_cus)
25165 pair.second->mark = false;
25167 /* Traverse all CUs, mark them and their dependencies if used recently
25169 for (auto pair : m_dwarf2_cus)
25171 dwarf2_cu *cu = pair.second;
25174 if (cu->last_used <= dwarf_max_cache_age)
25178 /* Delete all CUs still not marked. */
25179 for (auto it = m_dwarf2_cus.begin (); it != m_dwarf2_cus.end ();)
25181 dwarf2_cu *cu = it->second;
25185 dwarf_read_debug_printf_v ("deleting old CU %s",
25186 sect_offset_str (cu->per_cu->sect_off));
25188 it = m_dwarf2_cus.erase (it);
25198 dwarf2_per_objfile::remove_cu (dwarf2_per_cu_data *per_cu)
25200 auto it = m_dwarf2_cus.find (per_cu);
25201 if (it == m_dwarf2_cus.end ())
25206 m_dwarf2_cus.erase (it);
25209 dwarf2_per_objfile::~dwarf2_per_objfile ()
25214 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25215 We store these in a hash table separate from the DIEs, and preserve them
25216 when the DIEs are flushed out of cache.
25218 The CU "per_cu" pointer is needed because offset alone is not enough to
25219 uniquely identify the type. A file may have multiple .debug_types sections,
25220 or the type may come from a DWO file. Furthermore, while it's more logical
25221 to use per_cu->section+offset, with Fission the section with the data is in
25222 the DWO file but we don't know that section at the point we need it.
25223 We have to use something in dwarf2_per_cu_data (or the pointer to it)
25224 because we can enter the lookup routine, get_die_type_at_offset, from
25225 outside this file, and thus won't necessarily have PER_CU->cu.
25226 Fortunately, PER_CU is stable for the life of the objfile. */
25228 struct dwarf2_per_cu_offset_and_type
25230 const struct dwarf2_per_cu_data *per_cu;
25231 sect_offset sect_off;
25235 /* Hash function for a dwarf2_per_cu_offset_and_type. */
25238 per_cu_offset_and_type_hash (const void *item)
25240 const struct dwarf2_per_cu_offset_and_type *ofs
25241 = (const struct dwarf2_per_cu_offset_and_type *) item;
25243 return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25246 /* Equality function for a dwarf2_per_cu_offset_and_type. */
25249 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25251 const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25252 = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25253 const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25254 = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25256 return (ofs_lhs->per_cu == ofs_rhs->per_cu
25257 && ofs_lhs->sect_off == ofs_rhs->sect_off);
25260 /* Set the type associated with DIE to TYPE. Save it in CU's hash
25261 table if necessary. For convenience, return TYPE.
25263 The DIEs reading must have careful ordering to:
25264 * Not cause infinite loops trying to read in DIEs as a prerequisite for
25265 reading current DIE.
25266 * Not trying to dereference contents of still incompletely read in types
25267 while reading in other DIEs.
25268 * Enable referencing still incompletely read in types just by a pointer to
25269 the type without accessing its fields.
25271 Therefore caller should follow these rules:
25272 * Try to fetch any prerequisite types we may need to build this DIE type
25273 before building the type and calling set_die_type.
25274 * After building type call set_die_type for current DIE as soon as
25275 possible before fetching more types to complete the current type.
25276 * Make the type as complete as possible before fetching more types. */
25278 static struct type *
25279 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
25280 bool skip_data_location)
25282 dwarf2_per_objfile *per_objfile = cu->per_objfile;
25283 struct dwarf2_per_cu_offset_and_type **slot, ofs;
25284 struct objfile *objfile = per_objfile->objfile;
25285 struct attribute *attr;
25286 struct dynamic_prop prop;
25288 /* For Ada types, make sure that the gnat-specific data is always
25289 initialized (if not already set). There are a few types where
25290 we should not be doing so, because the type-specific area is
25291 already used to hold some other piece of info (eg: TYPE_CODE_FLT
25292 where the type-specific area is used to store the floatformat).
25293 But this is not a problem, because the gnat-specific information
25294 is actually not needed for these types. */
25295 if (need_gnat_info (cu)
25296 && type->code () != TYPE_CODE_FUNC
25297 && type->code () != TYPE_CODE_FLT
25298 && type->code () != TYPE_CODE_METHODPTR
25299 && type->code () != TYPE_CODE_MEMBERPTR
25300 && type->code () != TYPE_CODE_METHOD
25301 && type->code () != TYPE_CODE_FIXED_POINT
25302 && !HAVE_GNAT_AUX_INFO (type))
25303 INIT_GNAT_SPECIFIC (type);
25305 /* Read DW_AT_allocated and set in type. */
25306 attr = dwarf2_attr (die, DW_AT_allocated, cu);
25309 struct type *prop_type = cu->addr_sized_int_type (false);
25310 if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
25311 type->add_dyn_prop (DYN_PROP_ALLOCATED, prop);
25314 /* Read DW_AT_associated and set in type. */
25315 attr = dwarf2_attr (die, DW_AT_associated, cu);
25318 struct type *prop_type = cu->addr_sized_int_type (false);
25319 if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
25320 type->add_dyn_prop (DYN_PROP_ASSOCIATED, prop);
25323 /* Read DW_AT_data_location and set in type. */
25324 if (!skip_data_location)
25326 attr = dwarf2_attr (die, DW_AT_data_location, cu);
25327 if (attr_to_dynamic_prop (attr, die, cu, &prop, cu->addr_type ()))
25328 type->add_dyn_prop (DYN_PROP_DATA_LOCATION, prop);
25331 if (per_objfile->die_type_hash == NULL)
25332 per_objfile->die_type_hash
25333 = htab_up (htab_create_alloc (127,
25334 per_cu_offset_and_type_hash,
25335 per_cu_offset_and_type_eq,
25336 NULL, xcalloc, xfree));
25338 ofs.per_cu = cu->per_cu;
25339 ofs.sect_off = die->sect_off;
25341 slot = (struct dwarf2_per_cu_offset_and_type **)
25342 htab_find_slot (per_objfile->die_type_hash.get (), &ofs, INSERT);
25344 complaint (_("A problem internal to GDB: DIE %s has type already set"),
25345 sect_offset_str (die->sect_off));
25346 *slot = XOBNEW (&objfile->objfile_obstack,
25347 struct dwarf2_per_cu_offset_and_type);
25352 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25353 or return NULL if the die does not have a saved type. */
25355 static struct type *
25356 get_die_type_at_offset (sect_offset sect_off,
25357 dwarf2_per_cu_data *per_cu,
25358 dwarf2_per_objfile *per_objfile)
25360 struct dwarf2_per_cu_offset_and_type *slot, ofs;
25362 if (per_objfile->die_type_hash == NULL)
25365 ofs.per_cu = per_cu;
25366 ofs.sect_off = sect_off;
25367 slot = ((struct dwarf2_per_cu_offset_and_type *)
25368 htab_find (per_objfile->die_type_hash.get (), &ofs));
25375 /* Look up the type for DIE in CU in die_type_hash,
25376 or return NULL if DIE does not have a saved type. */
25378 static struct type *
25379 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25381 return get_die_type_at_offset (die->sect_off, cu->per_cu, cu->per_objfile);
25384 /* Add a dependence relationship from CU to REF_PER_CU. */
25387 dwarf2_add_dependence (struct dwarf2_cu *cu,
25388 struct dwarf2_per_cu_data *ref_per_cu)
25392 if (cu->dependencies == NULL)
25394 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25395 NULL, &cu->comp_unit_obstack,
25396 hashtab_obstack_allocate,
25397 dummy_obstack_deallocate);
25399 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25401 *slot = ref_per_cu;
25404 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25405 Set the mark field in every compilation unit in the
25406 cache that we must keep because we are keeping CU.
25408 DATA is the dwarf2_per_objfile object in which to look up CUs. */
25411 dwarf2_mark_helper (void **slot, void *data)
25413 dwarf2_per_cu_data *per_cu = (dwarf2_per_cu_data *) *slot;
25414 dwarf2_per_objfile *per_objfile = (dwarf2_per_objfile *) data;
25415 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
25417 /* cu->dependencies references may not yet have been ever read if QUIT aborts
25418 reading of the chain. As such dependencies remain valid it is not much
25419 useful to track and undo them during QUIT cleanups. */
25428 if (cu->dependencies != nullptr)
25429 htab_traverse (cu->dependencies, dwarf2_mark_helper, per_objfile);
25434 /* Set the mark field in CU and in every other compilation unit in the
25435 cache that we must keep because we are keeping CU. */
25438 dwarf2_mark (struct dwarf2_cu *cu)
25445 if (cu->dependencies != nullptr)
25446 htab_traverse (cu->dependencies, dwarf2_mark_helper, cu->per_objfile);
25449 /* Trivial hash function for partial_die_info: the hash value of a DIE
25450 is its offset in .debug_info for this objfile. */
25453 partial_die_hash (const void *item)
25455 const struct partial_die_info *part_die
25456 = (const struct partial_die_info *) item;
25458 return to_underlying (part_die->sect_off);
25461 /* Trivial comparison function for partial_die_info structures: two DIEs
25462 are equal if they have the same offset. */
25465 partial_die_eq (const void *item_lhs, const void *item_rhs)
25467 const struct partial_die_info *part_die_lhs
25468 = (const struct partial_die_info *) item_lhs;
25469 const struct partial_die_info *part_die_rhs
25470 = (const struct partial_die_info *) item_rhs;
25472 return part_die_lhs->sect_off == part_die_rhs->sect_off;
25475 struct cmd_list_element *set_dwarf_cmdlist;
25476 struct cmd_list_element *show_dwarf_cmdlist;
25479 show_check_physname (struct ui_file *file, int from_tty,
25480 struct cmd_list_element *c, const char *value)
25482 fprintf_filtered (file,
25483 _("Whether to check \"physname\" is %s.\n"),
25487 void _initialize_dwarf2_read ();
25489 _initialize_dwarf2_read ()
25491 add_basic_prefix_cmd ("dwarf", class_maintenance, _("\
25492 Set DWARF specific variables.\n\
25493 Configure DWARF variables such as the cache size."),
25494 &set_dwarf_cmdlist, "maintenance set dwarf ",
25495 0/*allow-unknown*/, &maintenance_set_cmdlist);
25497 add_show_prefix_cmd ("dwarf", class_maintenance, _("\
25498 Show DWARF specific variables.\n\
25499 Show DWARF variables such as the cache size."),
25500 &show_dwarf_cmdlist, "maintenance show dwarf ",
25501 0/*allow-unknown*/, &maintenance_show_cmdlist);
25503 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25504 &dwarf_max_cache_age, _("\
25505 Set the upper bound on the age of cached DWARF compilation units."), _("\
25506 Show the upper bound on the age of cached DWARF compilation units."), _("\
25507 A higher limit means that cached compilation units will be stored\n\
25508 in memory longer, and more total memory will be used. Zero disables\n\
25509 caching, which can slow down startup."),
25511 show_dwarf_max_cache_age,
25512 &set_dwarf_cmdlist,
25513 &show_dwarf_cmdlist);
25515 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25516 Set debugging of the DWARF reader."), _("\
25517 Show debugging of the DWARF reader."), _("\
25518 When enabled (non-zero), debugging messages are printed during DWARF\n\
25519 reading and symtab expansion. A value of 1 (one) provides basic\n\
25520 information. A value greater than 1 provides more verbose information."),
25523 &setdebuglist, &showdebuglist);
25525 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25526 Set debugging of the DWARF DIE reader."), _("\
25527 Show debugging of the DWARF DIE reader."), _("\
25528 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25529 The value is the maximum depth to print."),
25532 &setdebuglist, &showdebuglist);
25534 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25535 Set debugging of the dwarf line reader."), _("\
25536 Show debugging of the dwarf line reader."), _("\
25537 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25538 A value of 1 (one) provides basic information.\n\
25539 A value greater than 1 provides more verbose information."),
25542 &setdebuglist, &showdebuglist);
25544 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25545 Set cross-checking of \"physname\" code against demangler."), _("\
25546 Show cross-checking of \"physname\" code against demangler."), _("\
25547 When enabled, GDB's internal \"physname\" code is checked against\n\
25549 NULL, show_check_physname,
25550 &setdebuglist, &showdebuglist);
25552 add_setshow_boolean_cmd ("use-deprecated-index-sections",
25553 no_class, &use_deprecated_index_sections, _("\
25554 Set whether to use deprecated gdb_index sections."), _("\
25555 Show whether to use deprecated gdb_index sections."), _("\
25556 When enabled, deprecated .gdb_index sections are used anyway.\n\
25557 Normally they are ignored either because of a missing feature or\n\
25558 performance issue.\n\
25559 Warning: This option must be enabled before gdb reads the file."),
25562 &setlist, &showlist);
25564 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25565 &dwarf2_locexpr_funcs);
25566 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25567 &dwarf2_loclist_funcs);
25569 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25570 &dwarf2_block_frame_base_locexpr_funcs);
25571 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25572 &dwarf2_block_frame_base_loclist_funcs);
25575 selftests::register_test ("dw2_expand_symtabs_matching",
25576 selftests::dw2_expand_symtabs_matching::run_test);
25577 selftests::register_test ("dwarf2_find_containing_comp_unit",
25578 selftests::find_containing_comp_unit::run_test);