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-head.h"
36 #include "dwarf2/cu.h"
37 #include "dwarf2/index-cache.h"
38 #include "dwarf2/index-common.h"
39 #include "dwarf2/leb.h"
40 #include "dwarf2/line-header.h"
41 #include "dwarf2/dwz.h"
42 #include "dwarf2/macro.h"
43 #include "dwarf2/die.h"
44 #include "dwarf2/sect-names.h"
45 #include "dwarf2/stringify.h"
46 #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"
91 #include <unordered_set>
93 /* When == 1, print basic high level tracing messages.
94 When > 1, be more verbose.
95 This is in contrast to the low level DIE reading of dwarf_die_debug. */
96 static unsigned int dwarf_read_debug = 0;
98 /* Print a "dwarf-read" debug statement if dwarf_read_debug is >= 1. */
100 #define dwarf_read_debug_printf(fmt, ...) \
101 debug_prefixed_printf_cond (dwarf_read_debug >= 1, "dwarf-read", fmt, \
104 /* Print a "dwarf-read" debug statement if dwarf_read_debug is >= 2. */
106 #define dwarf_read_debug_printf_v(fmt, ...) \
107 debug_prefixed_printf_cond (dwarf_read_debug >= 2, "dwarf-read", fmt, \
110 /* When non-zero, dump DIEs after they are read in. */
111 static unsigned int dwarf_die_debug = 0;
113 /* When non-zero, dump line number entries as they are read in. */
114 unsigned int dwarf_line_debug = 0;
116 /* When true, cross-check physname against demangler. */
117 static bool check_physname = false;
119 /* When true, do not reject deprecated .gdb_index sections. */
120 static bool use_deprecated_index_sections = false;
122 /* This is used to store the data that is always per objfile. */
123 static const objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
125 /* These are used to store the dwarf2_per_bfd objects.
127 objfiles having the same BFD, which doesn't require relocations, are going to
128 share a dwarf2_per_bfd object, which is held in the _bfd_data_key version.
130 Other objfiles are not going to share a dwarf2_per_bfd with any other
131 objfiles, so they'll have their own version kept in the _objfile_data_key
133 static const struct bfd_key<dwarf2_per_bfd> dwarf2_per_bfd_bfd_data_key;
134 static const struct objfile_key<dwarf2_per_bfd> dwarf2_per_bfd_objfile_data_key;
136 /* The "aclass" indices for various kinds of computed DWARF symbols. */
138 static int dwarf2_locexpr_index;
139 static int dwarf2_loclist_index;
140 static int dwarf2_locexpr_block_index;
141 static int dwarf2_loclist_block_index;
143 /* Size of .debug_loclists section header for 32-bit DWARF format. */
144 #define LOCLIST_HEADER_SIZE32 12
146 /* Size of .debug_loclists section header for 64-bit DWARF format. */
147 #define LOCLIST_HEADER_SIZE64 20
149 /* Size of .debug_rnglists section header for 32-bit DWARF format. */
150 #define RNGLIST_HEADER_SIZE32 12
152 /* Size of .debug_rnglists section header for 64-bit DWARF format. */
153 #define RNGLIST_HEADER_SIZE64 20
155 /* An index into a (C++) symbol name component in a symbol name as
156 recorded in the mapped_index's symbol table. For each C++ symbol
157 in the symbol table, we record one entry for the start of each
158 component in the symbol in a table of name components, and then
159 sort the table, in order to be able to binary search symbol names,
160 ignoring leading namespaces, both completion and regular look up.
161 For example, for symbol "A::B::C", we'll have an entry that points
162 to "A::B::C", another that points to "B::C", and another for "C".
163 Note that function symbols in GDB index have no parameter
164 information, just the function/method names. You can convert a
165 name_component to a "const char *" using the
166 'mapped_index::symbol_name_at(offset_type)' method. */
168 struct name_component
170 /* Offset in the symbol name where the component starts. Stored as
171 a (32-bit) offset instead of a pointer to save memory and improve
172 locality on 64-bit architectures. */
173 offset_type name_offset;
175 /* The symbol's index in the symbol and constant pool tables of a
180 /* Base class containing bits shared by both .gdb_index and
181 .debug_name indexes. */
183 struct mapped_index_base
185 mapped_index_base () = default;
186 DISABLE_COPY_AND_ASSIGN (mapped_index_base);
188 /* The name_component table (a sorted vector). See name_component's
189 description above. */
190 std::vector<name_component> name_components;
192 /* How NAME_COMPONENTS is sorted. */
193 enum case_sensitivity name_components_casing;
195 /* Return the number of names in the symbol table. */
196 virtual size_t symbol_name_count () const = 0;
198 /* Get the name of the symbol at IDX in the symbol table. */
199 virtual const char *symbol_name_at
200 (offset_type idx, dwarf2_per_objfile *per_objfile) const = 0;
202 /* Return whether the name at IDX in the symbol table should be
204 virtual bool symbol_name_slot_invalid (offset_type idx) const
209 /* Build the symbol name component sorted vector, if we haven't
211 void build_name_components (dwarf2_per_objfile *per_objfile);
213 /* Returns the lower (inclusive) and upper (exclusive) bounds of the
214 possible matches for LN_NO_PARAMS in the name component
216 std::pair<std::vector<name_component>::const_iterator,
217 std::vector<name_component>::const_iterator>
218 find_name_components_bounds (const lookup_name_info &ln_no_params,
220 dwarf2_per_objfile *per_objfile) const;
222 /* Prevent deleting/destroying via a base class pointer. */
224 ~mapped_index_base() = default;
227 /* This is a view into the index that converts from bytes to an
228 offset_type, and allows indexing. Unaligned bytes are specifically
229 allowed here, and handled via unpacking. */
234 offset_view () = default;
236 explicit offset_view (gdb::array_view<const gdb_byte> bytes)
241 /* Extract the INDEXth offset_type from the array. */
242 offset_type operator[] (size_t index) const
244 const gdb_byte *bytes = &m_bytes[index * sizeof (offset_type)];
245 return (offset_type) extract_unsigned_integer (bytes,
246 sizeof (offset_type),
250 /* Return the number of offset_types in this array. */
253 return m_bytes.size () / sizeof (offset_type);
256 /* Return true if this view is empty. */
259 return m_bytes.empty ();
263 /* The underlying bytes. */
264 gdb::array_view<const gdb_byte> m_bytes;
267 /* A description of the mapped index. The file format is described in
268 a comment by the code that writes the index. */
269 struct mapped_index final : public mapped_index_base
271 /* Index data format version. */
274 /* The address table data. */
275 gdb::array_view<const gdb_byte> address_table;
277 /* The symbol table, implemented as a hash table. */
278 offset_view symbol_table;
280 /* A pointer to the constant pool. */
281 gdb::array_view<const gdb_byte> constant_pool;
283 /* Return the index into the constant pool of the name of the IDXth
284 symbol in the symbol table. */
285 offset_type symbol_name_index (offset_type idx) const
287 return symbol_table[2 * idx];
290 /* Return the index into the constant pool of the CU vector of the
291 IDXth symbol in the symbol table. */
292 offset_type symbol_vec_index (offset_type idx) const
294 return symbol_table[2 * idx + 1];
297 bool symbol_name_slot_invalid (offset_type idx) const override
299 return (symbol_name_index (idx) == 0
300 && symbol_vec_index (idx) == 0);
303 /* Convenience method to get at the name of the symbol at IDX in the
305 const char *symbol_name_at
306 (offset_type idx, dwarf2_per_objfile *per_objfile) const override
308 return (const char *) (this->constant_pool.data ()
309 + symbol_name_index (idx));
312 size_t symbol_name_count () const override
313 { return this->symbol_table.size () / 2; }
316 /* A description of the mapped .debug_names.
317 Uninitialized map has CU_COUNT 0. */
318 struct mapped_debug_names final : public mapped_index_base
320 bfd_endian dwarf5_byte_order;
321 bool dwarf5_is_dwarf64;
322 bool augmentation_is_gdb;
324 uint32_t cu_count = 0;
325 uint32_t tu_count, bucket_count, name_count;
326 const gdb_byte *cu_table_reordered, *tu_table_reordered;
327 const uint32_t *bucket_table_reordered, *hash_table_reordered;
328 const gdb_byte *name_table_string_offs_reordered;
329 const gdb_byte *name_table_entry_offs_reordered;
330 const gdb_byte *entry_pool;
337 /* Attribute name DW_IDX_*. */
340 /* Attribute form DW_FORM_*. */
343 /* Value if FORM is DW_FORM_implicit_const. */
344 LONGEST implicit_const;
346 std::vector<attr> attr_vec;
349 std::unordered_map<ULONGEST, index_val> abbrev_map;
351 const char *namei_to_name
352 (uint32_t namei, dwarf2_per_objfile *per_objfile) const;
354 /* Implementation of the mapped_index_base virtual interface, for
355 the name_components cache. */
357 const char *symbol_name_at
358 (offset_type idx, dwarf2_per_objfile *per_objfile) const override
359 { return namei_to_name (idx, per_objfile); }
361 size_t symbol_name_count () const override
362 { return this->name_count; }
365 /* See dwarf2read.h. */
368 get_dwarf2_per_objfile (struct objfile *objfile)
370 return dwarf2_objfile_data_key.get (objfile);
373 /* Default names of the debugging sections. */
375 /* Note that if the debugging section has been compressed, it might
376 have a name like .zdebug_info. */
378 const struct dwarf2_debug_sections dwarf2_elf_names =
380 { ".debug_info", ".zdebug_info" },
381 { ".debug_abbrev", ".zdebug_abbrev" },
382 { ".debug_line", ".zdebug_line" },
383 { ".debug_loc", ".zdebug_loc" },
384 { ".debug_loclists", ".zdebug_loclists" },
385 { ".debug_macinfo", ".zdebug_macinfo" },
386 { ".debug_macro", ".zdebug_macro" },
387 { ".debug_str", ".zdebug_str" },
388 { ".debug_str_offsets", ".zdebug_str_offsets" },
389 { ".debug_line_str", ".zdebug_line_str" },
390 { ".debug_ranges", ".zdebug_ranges" },
391 { ".debug_rnglists", ".zdebug_rnglists" },
392 { ".debug_types", ".zdebug_types" },
393 { ".debug_addr", ".zdebug_addr" },
394 { ".debug_frame", ".zdebug_frame" },
395 { ".eh_frame", NULL },
396 { ".gdb_index", ".zgdb_index" },
397 { ".debug_names", ".zdebug_names" },
398 { ".debug_aranges", ".zdebug_aranges" },
402 /* List of DWO/DWP sections. */
404 static const struct dwop_section_names
406 struct dwarf2_section_names abbrev_dwo;
407 struct dwarf2_section_names info_dwo;
408 struct dwarf2_section_names line_dwo;
409 struct dwarf2_section_names loc_dwo;
410 struct dwarf2_section_names loclists_dwo;
411 struct dwarf2_section_names macinfo_dwo;
412 struct dwarf2_section_names macro_dwo;
413 struct dwarf2_section_names rnglists_dwo;
414 struct dwarf2_section_names str_dwo;
415 struct dwarf2_section_names str_offsets_dwo;
416 struct dwarf2_section_names types_dwo;
417 struct dwarf2_section_names cu_index;
418 struct dwarf2_section_names tu_index;
422 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
423 { ".debug_info.dwo", ".zdebug_info.dwo" },
424 { ".debug_line.dwo", ".zdebug_line.dwo" },
425 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
426 { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
427 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
428 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
429 { ".debug_rnglists.dwo", ".zdebug_rnglists.dwo" },
430 { ".debug_str.dwo", ".zdebug_str.dwo" },
431 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
432 { ".debug_types.dwo", ".zdebug_types.dwo" },
433 { ".debug_cu_index", ".zdebug_cu_index" },
434 { ".debug_tu_index", ".zdebug_tu_index" },
437 /* local data types */
439 /* The location list and range list sections (.debug_loclists & .debug_rnglists)
440 begin with a header, which contains the following information. */
441 struct loclists_rnglists_header
443 /* A 4-byte or 12-byte length containing the length of the
444 set of entries for this compilation unit, not including the
445 length field itself. */
448 /* A 2-byte version identifier. */
451 /* A 1-byte unsigned integer containing the size in bytes of an address on
452 the target system. */
453 unsigned char addr_size;
455 /* A 1-byte unsigned integer containing the size in bytes of a segment selector
456 on the target system. */
457 unsigned char segment_collector_size;
459 /* A 4-byte count of the number of offsets that follow the header. */
460 unsigned int offset_entry_count;
463 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
464 This includes type_unit_group and quick_file_names. */
466 struct stmt_list_hash
468 /* The DWO unit this table is from or NULL if there is none. */
469 struct dwo_unit *dwo_unit;
471 /* Offset in .debug_line or .debug_line.dwo. */
472 sect_offset line_sect_off;
475 /* Each element of dwarf2_per_bfd->type_unit_groups is a pointer to
476 an object of this type. This contains elements of type unit groups
477 that can be shared across objfiles. The non-shareable parts are in
478 type_unit_group_unshareable. */
480 struct type_unit_group : public dwarf2_per_cu_data
482 /* The TUs that share this DW_AT_stmt_list entry.
483 This is added to while parsing type units to build partial symtabs,
484 and is deleted afterwards and not used again. */
485 std::vector<signatured_type *> *tus = nullptr;
487 /* The data used to construct the hash key. */
488 struct stmt_list_hash hash {};
491 /* These sections are what may appear in a (real or virtual) DWO file. */
495 struct dwarf2_section_info abbrev;
496 struct dwarf2_section_info line;
497 struct dwarf2_section_info loc;
498 struct dwarf2_section_info loclists;
499 struct dwarf2_section_info macinfo;
500 struct dwarf2_section_info macro;
501 struct dwarf2_section_info rnglists;
502 struct dwarf2_section_info str;
503 struct dwarf2_section_info str_offsets;
504 /* In the case of a virtual DWO file, these two are unused. */
505 struct dwarf2_section_info info;
506 std::vector<dwarf2_section_info> types;
509 /* CUs/TUs in DWP/DWO files. */
513 /* Backlink to the containing struct dwo_file. */
514 struct dwo_file *dwo_file;
516 /* The "id" that distinguishes this CU/TU.
517 .debug_info calls this "dwo_id", .debug_types calls this "signature".
518 Since signatures came first, we stick with it for consistency. */
521 /* The section this CU/TU lives in, in the DWO file. */
522 struct dwarf2_section_info *section;
524 /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section. */
525 sect_offset sect_off;
528 /* For types, offset in the type's DIE of the type defined by this TU. */
529 cu_offset type_offset_in_tu;
532 /* include/dwarf2.h defines the DWP section codes.
533 It defines a max value but it doesn't define a min value, which we
534 use for error checking, so provide one. */
536 enum dwp_v2_section_ids
541 /* Data for one DWO file.
543 This includes virtual DWO files (a virtual DWO file is a DWO file as it
544 appears in a DWP file). DWP files don't really have DWO files per se -
545 comdat folding of types "loses" the DWO file they came from, and from
546 a high level view DWP files appear to contain a mass of random types.
547 However, to maintain consistency with the non-DWP case we pretend DWP
548 files contain virtual DWO files, and we assign each TU with one virtual
549 DWO file (generally based on the line and abbrev section offsets -
550 a heuristic that seems to work in practice). */
554 dwo_file () = default;
555 DISABLE_COPY_AND_ASSIGN (dwo_file);
557 /* The DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute.
558 For virtual DWO files the name is constructed from the section offsets
559 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
560 from related CU+TUs. */
561 const char *dwo_name = nullptr;
563 /* The DW_AT_comp_dir attribute. */
564 const char *comp_dir = nullptr;
566 /* The bfd, when the file is open. Otherwise this is NULL.
567 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
568 gdb_bfd_ref_ptr dbfd;
570 /* The sections that make up this DWO file.
571 Remember that for virtual DWO files in DWP V2 or DWP V5, these are virtual
572 sections (for lack of a better name). */
573 struct dwo_sections sections {};
575 /* The CUs in the file.
576 Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
577 an extension to handle LLVM's Link Time Optimization output (where
578 multiple source files may be compiled into a single object/dwo pair). */
581 /* Table of TUs in the file.
582 Each element is a struct dwo_unit. */
586 /* These sections are what may appear in a DWP file. */
590 /* These are used by all DWP versions (1, 2 and 5). */
591 struct dwarf2_section_info str;
592 struct dwarf2_section_info cu_index;
593 struct dwarf2_section_info tu_index;
595 /* These are only used by DWP version 2 and version 5 files.
596 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
597 sections are referenced by section number, and are not recorded here.
598 In DWP version 2 or 5 there is at most one copy of all these sections,
599 each section being (effectively) comprised of the concatenation of all of
600 the individual sections that exist in the version 1 format.
601 To keep the code simple we treat each of these concatenated pieces as a
602 section itself (a virtual section?). */
603 struct dwarf2_section_info abbrev;
604 struct dwarf2_section_info info;
605 struct dwarf2_section_info line;
606 struct dwarf2_section_info loc;
607 struct dwarf2_section_info loclists;
608 struct dwarf2_section_info macinfo;
609 struct dwarf2_section_info macro;
610 struct dwarf2_section_info rnglists;
611 struct dwarf2_section_info str_offsets;
612 struct dwarf2_section_info types;
615 /* These sections are what may appear in a virtual DWO file in DWP version 1.
616 A virtual DWO file is a DWO file as it appears in a DWP file. */
618 struct virtual_v1_dwo_sections
620 struct dwarf2_section_info abbrev;
621 struct dwarf2_section_info line;
622 struct dwarf2_section_info loc;
623 struct dwarf2_section_info macinfo;
624 struct dwarf2_section_info macro;
625 struct dwarf2_section_info str_offsets;
626 /* Each DWP hash table entry records one CU or one TU.
627 That is recorded here, and copied to dwo_unit.section. */
628 struct dwarf2_section_info info_or_types;
631 /* Similar to virtual_v1_dwo_sections, but for DWP version 2 or 5.
632 In version 2, the sections of the DWO files are concatenated together
633 and stored in one section of that name. Thus each ELF section contains
634 several "virtual" sections. */
636 struct virtual_v2_or_v5_dwo_sections
638 bfd_size_type abbrev_offset;
639 bfd_size_type abbrev_size;
641 bfd_size_type line_offset;
642 bfd_size_type line_size;
644 bfd_size_type loc_offset;
645 bfd_size_type loc_size;
647 bfd_size_type loclists_offset;
648 bfd_size_type loclists_size;
650 bfd_size_type macinfo_offset;
651 bfd_size_type macinfo_size;
653 bfd_size_type macro_offset;
654 bfd_size_type macro_size;
656 bfd_size_type rnglists_offset;
657 bfd_size_type rnglists_size;
659 bfd_size_type str_offsets_offset;
660 bfd_size_type str_offsets_size;
662 /* Each DWP hash table entry records one CU or one TU.
663 That is recorded here, and copied to dwo_unit.section. */
664 bfd_size_type info_or_types_offset;
665 bfd_size_type info_or_types_size;
668 /* Contents of DWP hash tables. */
670 struct dwp_hash_table
672 uint32_t version, nr_columns;
673 uint32_t nr_units, nr_slots;
674 const gdb_byte *hash_table, *unit_table;
679 const gdb_byte *indices;
683 /* This is indexed by column number and gives the id of the section
685 #define MAX_NR_V2_DWO_SECTIONS \
686 (1 /* .debug_info or .debug_types */ \
687 + 1 /* .debug_abbrev */ \
688 + 1 /* .debug_line */ \
689 + 1 /* .debug_loc */ \
690 + 1 /* .debug_str_offsets */ \
691 + 1 /* .debug_macro or .debug_macinfo */)
692 int section_ids[MAX_NR_V2_DWO_SECTIONS];
693 const gdb_byte *offsets;
694 const gdb_byte *sizes;
698 /* This is indexed by column number and gives the id of the section
700 #define MAX_NR_V5_DWO_SECTIONS \
701 (1 /* .debug_info */ \
702 + 1 /* .debug_abbrev */ \
703 + 1 /* .debug_line */ \
704 + 1 /* .debug_loclists */ \
705 + 1 /* .debug_str_offsets */ \
706 + 1 /* .debug_macro */ \
707 + 1 /* .debug_rnglists */)
708 int section_ids[MAX_NR_V5_DWO_SECTIONS];
709 const gdb_byte *offsets;
710 const gdb_byte *sizes;
715 /* Data for one DWP file. */
719 dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
721 dbfd (std::move (abfd))
725 /* Name of the file. */
728 /* File format version. */
732 gdb_bfd_ref_ptr dbfd;
734 /* Section info for this file. */
735 struct dwp_sections sections {};
737 /* Table of CUs in the file. */
738 const struct dwp_hash_table *cus = nullptr;
740 /* Table of TUs in the file. */
741 const struct dwp_hash_table *tus = nullptr;
743 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
747 /* Table to map ELF section numbers to their sections.
748 This is only needed for the DWP V1 file format. */
749 unsigned int num_sections = 0;
750 asection **elf_sections = nullptr;
753 /* Struct used to pass misc. parameters to read_die_and_children, et
754 al. which are used for both .debug_info and .debug_types dies.
755 All parameters here are unchanging for the life of the call. This
756 struct exists to abstract away the constant parameters of die reading. */
758 struct die_reader_specs
760 /* The bfd of die_section. */
763 /* The CU of the DIE we are parsing. */
764 struct dwarf2_cu *cu;
766 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
767 struct dwo_file *dwo_file;
769 /* The section the die comes from.
770 This is either .debug_info or .debug_types, or the .dwo variants. */
771 struct dwarf2_section_info *die_section;
773 /* die_section->buffer. */
774 const gdb_byte *buffer;
776 /* The end of the buffer. */
777 const gdb_byte *buffer_end;
779 /* The abbreviation table to use when reading the DIEs. */
780 struct abbrev_table *abbrev_table;
783 /* A subclass of die_reader_specs that holds storage and has complex
784 constructor and destructor behavior. */
786 class cutu_reader : public die_reader_specs
790 cutu_reader (dwarf2_per_cu_data *this_cu,
791 dwarf2_per_objfile *per_objfile,
792 struct abbrev_table *abbrev_table,
793 dwarf2_cu *existing_cu,
796 explicit cutu_reader (struct dwarf2_per_cu_data *this_cu,
797 dwarf2_per_objfile *per_objfile,
798 struct dwarf2_cu *parent_cu = nullptr,
799 struct dwo_file *dwo_file = nullptr);
801 DISABLE_COPY_AND_ASSIGN (cutu_reader);
803 const gdb_byte *info_ptr = nullptr;
804 struct die_info *comp_unit_die = nullptr;
805 bool dummy_p = false;
807 /* Release the new CU, putting it on the chain. This cannot be done
812 void init_tu_and_read_dwo_dies (dwarf2_per_cu_data *this_cu,
813 dwarf2_per_objfile *per_objfile,
814 dwarf2_cu *existing_cu);
816 struct dwarf2_per_cu_data *m_this_cu;
817 std::unique_ptr<dwarf2_cu> m_new_cu;
819 /* The ordinary abbreviation table. */
820 abbrev_table_up m_abbrev_table_holder;
822 /* The DWO abbreviation table. */
823 abbrev_table_up m_dwo_abbrev_table;
826 /* When we construct a partial symbol table entry we only
827 need this much information. */
828 struct partial_die_info : public allocate_on_obstack
830 partial_die_info (sect_offset sect_off, const struct abbrev_info *abbrev);
832 /* Disable assign but still keep copy ctor, which is needed
833 load_partial_dies. */
834 partial_die_info& operator=(const partial_die_info& rhs) = delete;
835 partial_die_info (const partial_die_info &) = default;
837 /* Adjust the partial die before generating a symbol for it. This
838 function may set the is_external flag or change the DIE's
840 void fixup (struct dwarf2_cu *cu);
842 /* Read a minimal amount of information into the minimal die
844 const gdb_byte *read (const struct die_reader_specs *reader,
845 const struct abbrev_info &abbrev,
846 const gdb_byte *info_ptr);
848 /* Compute the name of this partial DIE. This memoizes the
849 result, so it is safe to call multiple times. */
850 const char *name (dwarf2_cu *cu);
852 /* Offset of this DIE. */
853 const sect_offset sect_off;
855 /* DWARF-2 tag for this DIE. */
856 const ENUM_BITFIELD(dwarf_tag) tag : 16;
858 /* Assorted flags describing the data found in this DIE. */
859 const unsigned int has_children : 1;
861 unsigned int is_external : 1;
862 unsigned int is_declaration : 1;
863 unsigned int has_type : 1;
864 unsigned int has_specification : 1;
865 unsigned int has_pc_info : 1;
866 unsigned int may_be_inlined : 1;
868 /* This DIE has been marked DW_AT_main_subprogram. */
869 unsigned int main_subprogram : 1;
871 /* Flag set if the SCOPE field of this structure has been
873 unsigned int scope_set : 1;
875 /* Flag set if the DIE has a byte_size attribute. */
876 unsigned int has_byte_size : 1;
878 /* Flag set if the DIE has a DW_AT_const_value attribute. */
879 unsigned int has_const_value : 1;
881 /* Flag set if any of the DIE's children are template arguments. */
882 unsigned int has_template_arguments : 1;
884 /* Flag set if fixup has been called on this die. */
885 unsigned int fixup_called : 1;
887 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
888 unsigned int is_dwz : 1;
890 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
891 unsigned int spec_is_dwz : 1;
893 unsigned int canonical_name : 1;
895 /* The name of this DIE. Normally the value of DW_AT_name, but
896 sometimes a default name for unnamed DIEs. */
897 const char *raw_name = nullptr;
899 /* The linkage name, if present. */
900 const char *linkage_name = nullptr;
902 /* The scope to prepend to our children. This is generally
903 allocated on the comp_unit_obstack, so will disappear
904 when this compilation unit leaves the cache. */
905 const char *scope = nullptr;
907 /* Some data associated with the partial DIE. The tag determines
908 which field is live. */
911 /* The location description associated with this DIE, if any. */
912 struct dwarf_block *locdesc;
913 /* The offset of an import, for DW_TAG_imported_unit. */
914 sect_offset sect_off;
917 /* If HAS_PC_INFO, the PC range associated with this DIE. */
919 CORE_ADDR highpc = 0;
921 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
922 DW_AT_sibling, if any. */
923 /* NOTE: This member isn't strictly necessary, partial_die_info::read
924 could return DW_AT_sibling values to its caller load_partial_dies. */
925 const gdb_byte *sibling = nullptr;
927 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
928 DW_AT_specification (or DW_AT_abstract_origin or
930 sect_offset spec_offset {};
932 /* Pointers to this DIE's parent, first child, and next sibling,
934 struct partial_die_info *die_parent = nullptr;
935 struct partial_die_info *die_child = nullptr;
936 struct partial_die_info *die_sibling = nullptr;
938 friend struct partial_die_info *
939 dwarf2_cu::find_partial_die (sect_offset sect_off);
942 /* Only need to do look up in dwarf2_cu::find_partial_die. */
943 partial_die_info (sect_offset sect_off)
944 : partial_die_info (sect_off, DW_TAG_padding, 0)
948 partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
950 : sect_off (sect_off_), tag (tag_), has_children (has_children_)
955 has_specification = 0;
962 has_template_arguments = 0;
970 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
971 but this would require a corresponding change in unpack_field_as_long
973 static int bits_per_byte = 8;
975 struct variant_part_builder;
977 /* When reading a variant, we track a bit more information about the
978 field, and store it in an object of this type. */
982 int first_field = -1;
985 /* A variant can contain other variant parts. */
986 std::vector<variant_part_builder> variant_parts;
988 /* If we see a DW_TAG_variant, then this will be set if this is the
990 bool default_branch = false;
991 /* If we see a DW_AT_discr_value, then this will be the discriminant
993 ULONGEST discriminant_value = 0;
994 /* If we see a DW_AT_discr_list, then this is a pointer to the list
996 struct dwarf_block *discr_list_data = nullptr;
999 /* This represents a DW_TAG_variant_part. */
1001 struct variant_part_builder
1003 /* The offset of the discriminant field. */
1004 sect_offset discriminant_offset {};
1006 /* Variants that are direct children of this variant part. */
1007 std::vector<variant_field> variants;
1009 /* True if we're currently reading a variant. */
1010 bool processing_variant = false;
1015 int accessibility = 0;
1017 /* Variant parts need to find the discriminant, which is a DIE
1018 reference. We track the section offset of each field to make
1021 struct field field {};
1026 const char *name = nullptr;
1027 std::vector<struct fn_field> fnfields;
1030 /* The routines that read and process dies for a C struct or C++ class
1031 pass lists of data member fields and lists of member function fields
1032 in an instance of a field_info structure, as defined below. */
1035 /* List of data member and baseclasses fields. */
1036 std::vector<struct nextfield> fields;
1037 std::vector<struct nextfield> baseclasses;
1039 /* Set if the accessibility of one of the fields is not public. */
1040 bool non_public_fields = false;
1042 /* Member function fieldlist array, contains name of possibly overloaded
1043 member function, number of overloaded member functions and a pointer
1044 to the head of the member function field chain. */
1045 std::vector<struct fnfieldlist> fnfieldlists;
1047 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1048 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
1049 std::vector<struct decl_field> typedef_field_list;
1051 /* Nested types defined by this class and the number of elements in this
1053 std::vector<struct decl_field> nested_types_list;
1055 /* If non-null, this is the variant part we are currently
1057 variant_part_builder *current_variant_part = nullptr;
1058 /* This holds all the top-level variant parts attached to the type
1060 std::vector<variant_part_builder> variant_parts;
1062 /* Return the total number of fields (including baseclasses). */
1063 int nfields () const
1065 return fields.size () + baseclasses.size ();
1069 /* Loaded secondary compilation units are kept in memory until they
1070 have not been referenced for the processing of this many
1071 compilation units. Set this to zero to disable caching. Cache
1072 sizes of up to at least twenty will improve startup time for
1073 typical inter-CU-reference binaries, at an obvious memory cost. */
1074 static int dwarf_max_cache_age = 5;
1076 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1077 struct cmd_list_element *c, const char *value)
1079 fprintf_filtered (file, _("The upper bound on the age of cached "
1080 "DWARF compilation units is %s.\n"),
1084 /* local function prototypes */
1086 static void dwarf2_find_base_address (struct die_info *die,
1087 struct dwarf2_cu *cu);
1089 static dwarf2_psymtab *create_partial_symtab
1090 (dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
1093 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1094 const gdb_byte *info_ptr,
1095 struct die_info *type_unit_die);
1097 static void dwarf2_build_psymtabs_hard (dwarf2_per_objfile *per_objfile);
1099 static void scan_partial_symbols (struct partial_die_info *,
1100 CORE_ADDR *, CORE_ADDR *,
1101 int, struct dwarf2_cu *);
1103 static void add_partial_symbol (struct partial_die_info *,
1104 struct dwarf2_cu *);
1106 static void add_partial_namespace (struct partial_die_info *pdi,
1107 CORE_ADDR *lowpc, CORE_ADDR *highpc,
1108 int set_addrmap, struct dwarf2_cu *cu);
1110 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1111 CORE_ADDR *highpc, int set_addrmap,
1112 struct dwarf2_cu *cu);
1114 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1115 struct dwarf2_cu *cu);
1117 static void add_partial_subprogram (struct partial_die_info *pdi,
1118 CORE_ADDR *lowpc, CORE_ADDR *highpc,
1119 int need_pc, struct dwarf2_cu *cu);
1121 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1123 static struct partial_die_info *load_partial_dies
1124 (const struct die_reader_specs *, const gdb_byte *, int);
1126 /* A pair of partial_die_info and compilation unit. */
1127 struct cu_partial_die_info
1129 /* The compilation unit of the partial_die_info. */
1130 struct dwarf2_cu *cu;
1131 /* A partial_die_info. */
1132 struct partial_die_info *pdi;
1134 cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
1140 cu_partial_die_info () = delete;
1143 static const struct cu_partial_die_info find_partial_die (sect_offset, int,
1144 struct dwarf2_cu *);
1146 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1148 const struct attr_abbrev *,
1151 static void read_attribute_reprocess (const struct die_reader_specs *reader,
1152 struct attribute *attr, dwarf_tag tag);
1154 static CORE_ADDR read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index);
1156 static sect_offset read_abbrev_offset (dwarf2_per_objfile *per_objfile,
1157 dwarf2_section_info *, sect_offset);
1159 static const char *read_indirect_string
1160 (dwarf2_per_objfile *per_objfile, bfd *, const gdb_byte *,
1161 const struct comp_unit_head *, unsigned int *);
1163 static const char *read_indirect_string_at_offset
1164 (dwarf2_per_objfile *per_objfile, LONGEST str_offset);
1166 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1170 static const char *read_dwo_str_index (const struct die_reader_specs *reader,
1171 ULONGEST str_index);
1173 static const char *read_stub_str_index (struct dwarf2_cu *cu,
1174 ULONGEST str_index);
1176 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1177 struct dwarf2_cu *);
1179 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1180 struct dwarf2_cu *cu);
1182 static const char *dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu);
1184 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1185 struct dwarf2_cu *cu);
1187 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1189 static struct die_info *die_specification (struct die_info *die,
1190 struct dwarf2_cu **);
1192 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1193 struct dwarf2_cu *cu);
1195 struct file_and_directory;
1196 static void dwarf_decode_lines (struct line_header *,
1197 const file_and_directory &,
1198 struct dwarf2_cu *, dwarf2_psymtab *,
1199 CORE_ADDR, int decode_mapping);
1201 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1204 static struct symbol *new_symbol (struct die_info *, struct type *,
1205 struct dwarf2_cu *, struct symbol * = NULL);
1207 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1208 struct dwarf2_cu *);
1210 static void dwarf2_const_value_attr (const struct attribute *attr,
1213 struct obstack *obstack,
1214 struct dwarf2_cu *cu, LONGEST *value,
1215 const gdb_byte **bytes,
1216 struct dwarf2_locexpr_baton **baton);
1218 static struct type *read_subrange_index_type (struct die_info *die,
1219 struct dwarf2_cu *cu);
1221 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1223 static int need_gnat_info (struct dwarf2_cu *);
1225 static struct type *die_descriptive_type (struct die_info *,
1226 struct dwarf2_cu *);
1228 static void set_descriptive_type (struct type *, struct die_info *,
1229 struct dwarf2_cu *);
1231 static struct type *die_containing_type (struct die_info *,
1232 struct dwarf2_cu *);
1234 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1235 struct dwarf2_cu *);
1237 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1239 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1241 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1243 static char *typename_concat (struct obstack *obs, const char *prefix,
1244 const char *suffix, int physname,
1245 struct dwarf2_cu *cu);
1247 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1249 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1251 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1253 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1255 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1257 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1259 /* Return the .debug_loclists section to use for cu. */
1260 static struct dwarf2_section_info *cu_debug_loc_section (struct dwarf2_cu *cu);
1262 /* Return the .debug_rnglists section to use for cu. */
1263 static struct dwarf2_section_info *cu_debug_rnglists_section
1264 (struct dwarf2_cu *cu, dwarf_tag tag);
1266 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1267 values. Keep the items ordered with increasing constraints compliance. */
1270 /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found. */
1271 PC_BOUNDS_NOT_PRESENT,
1273 /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1274 were present but they do not form a valid range of PC addresses. */
1277 /* Discontiguous range was found - that is DW_AT_ranges was found. */
1280 /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found. */
1284 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1285 CORE_ADDR *, CORE_ADDR *,
1289 static void get_scope_pc_bounds (struct die_info *,
1290 CORE_ADDR *, CORE_ADDR *,
1291 struct dwarf2_cu *);
1293 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1294 CORE_ADDR, struct dwarf2_cu *);
1296 static void dwarf2_add_field (struct field_info *, struct die_info *,
1297 struct dwarf2_cu *);
1299 static void dwarf2_attach_fields_to_type (struct field_info *,
1300 struct type *, struct dwarf2_cu *);
1302 static void dwarf2_add_member_fn (struct field_info *,
1303 struct die_info *, struct type *,
1304 struct dwarf2_cu *);
1306 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1308 struct dwarf2_cu *);
1310 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1312 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1314 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1316 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1318 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1320 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1322 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1324 static struct type *read_module_type (struct die_info *die,
1325 struct dwarf2_cu *cu);
1327 static const char *namespace_name (struct die_info *die,
1328 int *is_anonymous, struct dwarf2_cu *);
1330 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1332 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *,
1335 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1336 struct dwarf2_cu *);
1338 static struct die_info *read_die_and_siblings_1
1339 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1342 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1343 const gdb_byte *info_ptr,
1344 const gdb_byte **new_info_ptr,
1345 struct die_info *parent);
1347 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1348 struct die_info **, const gdb_byte *,
1351 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1352 struct die_info **, const gdb_byte *);
1354 static void process_die (struct die_info *, struct dwarf2_cu *);
1356 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1359 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1361 static const char *dwarf2_full_name (const char *name,
1362 struct die_info *die,
1363 struct dwarf2_cu *cu);
1365 static const char *dwarf2_physname (const char *name, struct die_info *die,
1366 struct dwarf2_cu *cu);
1368 static struct die_info *dwarf2_extension (struct die_info *die,
1369 struct dwarf2_cu **);
1371 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1373 static void dump_die_for_error (struct die_info *);
1375 static void dump_die_1 (struct ui_file *, int level, int max_level,
1378 /*static*/ void dump_die (struct die_info *, int max_level);
1380 static void store_in_ref_table (struct die_info *,
1381 struct dwarf2_cu *);
1383 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1384 const struct attribute *,
1385 struct dwarf2_cu **);
1387 static struct die_info *follow_die_ref (struct die_info *,
1388 const struct attribute *,
1389 struct dwarf2_cu **);
1391 static struct die_info *follow_die_sig (struct die_info *,
1392 const struct attribute *,
1393 struct dwarf2_cu **);
1395 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1396 struct dwarf2_cu *);
1398 static struct type *get_DW_AT_signature_type (struct die_info *,
1399 const struct attribute *,
1400 struct dwarf2_cu *);
1402 static void load_full_type_unit (dwarf2_per_cu_data *per_cu,
1403 dwarf2_per_objfile *per_objfile);
1405 static void read_signatured_type (signatured_type *sig_type,
1406 dwarf2_per_objfile *per_objfile);
1408 static int attr_to_dynamic_prop (const struct attribute *attr,
1409 struct die_info *die, struct dwarf2_cu *cu,
1410 struct dynamic_prop *prop, struct type *type);
1412 /* memory allocation interface */
1414 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1416 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1418 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1420 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1421 struct dwarf2_loclist_baton *baton,
1422 const struct attribute *attr);
1424 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1426 struct dwarf2_cu *cu,
1429 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1430 const gdb_byte *info_ptr,
1431 const struct abbrev_info *abbrev);
1433 static hashval_t partial_die_hash (const void *item);
1435 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1437 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1438 (sect_offset sect_off, unsigned int offset_in_dwz,
1439 dwarf2_per_objfile *per_objfile);
1441 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1442 struct die_info *comp_unit_die,
1443 enum language pretend_language);
1445 static struct type *set_die_type (struct die_info *, struct type *,
1446 struct dwarf2_cu *, bool = false);
1448 static void create_all_comp_units (dwarf2_per_objfile *per_objfile);
1450 static void load_full_comp_unit (dwarf2_per_cu_data *per_cu,
1451 dwarf2_per_objfile *per_objfile,
1452 dwarf2_cu *existing_cu,
1454 enum language pretend_language);
1456 static void process_full_comp_unit (dwarf2_cu *cu,
1457 enum language pretend_language);
1459 static void process_full_type_unit (dwarf2_cu *cu,
1460 enum language pretend_language);
1462 static struct type *get_die_type_at_offset (sect_offset,
1463 dwarf2_per_cu_data *per_cu,
1464 dwarf2_per_objfile *per_objfile);
1466 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1468 static void queue_comp_unit (dwarf2_per_cu_data *per_cu,
1469 dwarf2_per_objfile *per_objfile,
1470 enum language pretend_language);
1472 static void process_queue (dwarf2_per_objfile *per_objfile);
1474 /* Class, the destructor of which frees all allocated queue entries. This
1475 will only have work to do if an error was thrown while processing the
1476 dwarf. If no error was thrown then the queue entries should have all
1477 been processed, and freed, as we went along. */
1479 class dwarf2_queue_guard
1482 explicit dwarf2_queue_guard (dwarf2_per_objfile *per_objfile)
1483 : m_per_objfile (per_objfile)
1485 gdb_assert (!m_per_objfile->per_bfd->queue.has_value ());
1487 m_per_objfile->per_bfd->queue.emplace ();
1490 /* Free any entries remaining on the queue. There should only be
1491 entries left if we hit an error while processing the dwarf. */
1492 ~dwarf2_queue_guard ()
1494 gdb_assert (m_per_objfile->per_bfd->queue.has_value ());
1496 m_per_objfile->per_bfd->queue.reset ();
1499 DISABLE_COPY_AND_ASSIGN (dwarf2_queue_guard);
1502 dwarf2_per_objfile *m_per_objfile;
1505 dwarf2_queue_item::~dwarf2_queue_item ()
1507 /* Anything still marked queued is likely to be in an
1508 inconsistent state, so discard it. */
1511 per_objfile->remove_cu (per_cu);
1516 /* See dwarf2/read.h. */
1519 dwarf2_per_cu_data_deleter::operator() (dwarf2_per_cu_data *data)
1521 if (data->is_debug_types)
1522 delete static_cast<signatured_type *> (data);
1527 /* The return type of find_file_and_directory. Note, the enclosed
1528 string pointers are only valid while this object is valid. */
1530 struct file_and_directory
1532 /* The filename. This is never NULL. */
1535 /* The compilation directory. NULL if not known. If we needed to
1536 compute a new string, it will be stored in the per-BFD string
1537 bcache; otherwise, points directly to the DW_AT_comp_dir string
1538 attribute owned by the obstack that owns the DIE. */
1539 const char *comp_dir;
1542 static file_and_directory find_file_and_directory (struct die_info *die,
1543 struct dwarf2_cu *cu);
1545 static htab_up allocate_signatured_type_table ();
1547 static htab_up allocate_dwo_unit_table ();
1549 static struct dwo_unit *lookup_dwo_unit_in_dwp
1550 (dwarf2_per_objfile *per_objfile, struct dwp_file *dwp_file,
1551 const char *comp_dir, ULONGEST signature, int is_debug_types);
1553 static struct dwp_file *get_dwp_file (dwarf2_per_objfile *per_objfile);
1555 static struct dwo_unit *lookup_dwo_comp_unit
1556 (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
1557 ULONGEST signature);
1559 static struct dwo_unit *lookup_dwo_type_unit
1560 (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir);
1562 static void queue_and_load_all_dwo_tus (dwarf2_cu *cu);
1564 /* A unique pointer to a dwo_file. */
1566 typedef std::unique_ptr<struct dwo_file> dwo_file_up;
1568 static void process_cu_includes (dwarf2_per_objfile *per_objfile);
1570 static void check_producer (struct dwarf2_cu *cu);
1572 /* Various complaints about symbol reading that don't abort the process. */
1575 dwarf2_debug_line_missing_file_complaint (void)
1577 complaint (_(".debug_line section has line data without a file"));
1581 dwarf2_debug_line_missing_end_sequence_complaint (void)
1583 complaint (_(".debug_line section has line "
1584 "program sequence without an end"));
1588 dwarf2_complex_location_expr_complaint (void)
1590 complaint (_("location expression too complex"));
1594 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1597 complaint (_("const value length mismatch for '%s', got %d, expected %d"),
1602 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1604 complaint (_("invalid attribute class or form for '%s' in '%s'"),
1608 /* Hash function for line_header_hash. */
1611 line_header_hash (const struct line_header *ofs)
1613 return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
1616 /* Hash function for htab_create_alloc_ex for line_header_hash. */
1619 line_header_hash_voidp (const void *item)
1621 const struct line_header *ofs = (const struct line_header *) item;
1623 return line_header_hash (ofs);
1626 /* Equality function for line_header_hash. */
1629 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1631 const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
1632 const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
1634 return (ofs_lhs->sect_off == ofs_rhs->sect_off
1635 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1640 /* See declaration. */
1642 dwarf2_per_bfd::dwarf2_per_bfd (bfd *obfd, const dwarf2_debug_sections *names,
1645 can_copy (can_copy_)
1648 names = &dwarf2_elf_names;
1650 for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
1651 locate_sections (obfd, sec, *names);
1654 dwarf2_per_bfd::~dwarf2_per_bfd ()
1656 for (auto &per_cu : all_comp_units)
1657 per_cu->imported_symtabs_free ();
1659 /* Everything else should be on this->obstack. */
1665 dwarf2_per_objfile::remove_all_cus ()
1667 gdb_assert (!this->per_bfd->queue.has_value ());
1669 for (auto pair : m_dwarf2_cus)
1672 m_dwarf2_cus.clear ();
1675 /* A helper class that calls free_cached_comp_units on
1678 class free_cached_comp_units
1682 explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
1683 : m_per_objfile (per_objfile)
1687 ~free_cached_comp_units ()
1689 m_per_objfile->remove_all_cus ();
1692 DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
1696 dwarf2_per_objfile *m_per_objfile;
1702 dwarf2_per_objfile::symtab_set_p (const dwarf2_per_cu_data *per_cu) const
1704 gdb_assert (per_cu->index < this->m_symtabs.size ());
1706 return this->m_symtabs[per_cu->index] != nullptr;
1712 dwarf2_per_objfile::get_symtab (const dwarf2_per_cu_data *per_cu) const
1714 gdb_assert (per_cu->index < this->m_symtabs.size ());
1716 return this->m_symtabs[per_cu->index];
1722 dwarf2_per_objfile::set_symtab (const dwarf2_per_cu_data *per_cu,
1723 compunit_symtab *symtab)
1725 gdb_assert (per_cu->index < this->m_symtabs.size ());
1726 gdb_assert (this->m_symtabs[per_cu->index] == nullptr);
1728 this->m_symtabs[per_cu->index] = symtab;
1731 /* Try to locate the sections we need for DWARF 2 debugging
1732 information and return true if we have enough to do something.
1733 NAMES points to the dwarf2 section names, or is NULL if the standard
1734 ELF names are used. CAN_COPY is true for formats where symbol
1735 interposition is possible and so symbol values must follow copy
1736 relocation rules. */
1739 dwarf2_has_info (struct objfile *objfile,
1740 const struct dwarf2_debug_sections *names,
1743 if (objfile->flags & OBJF_READNEVER)
1746 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
1748 if (per_objfile == NULL)
1750 dwarf2_per_bfd *per_bfd;
1752 /* We can share a "dwarf2_per_bfd" with other objfiles if the
1753 BFD doesn't require relocations.
1755 We don't share with objfiles for which -readnow was requested,
1756 because it would complicate things when loading the same BFD with
1757 -readnow and then without -readnow. */
1758 if (!gdb_bfd_requires_relocations (objfile->obfd)
1759 && (objfile->flags & OBJF_READNOW) == 0)
1761 /* See if one has been created for this BFD yet. */
1762 per_bfd = dwarf2_per_bfd_bfd_data_key.get (objfile->obfd);
1764 if (per_bfd == nullptr)
1766 /* No, create it now. */
1767 per_bfd = new dwarf2_per_bfd (objfile->obfd, names, can_copy);
1768 dwarf2_per_bfd_bfd_data_key.set (objfile->obfd, per_bfd);
1773 /* No sharing possible, create one specifically for this objfile. */
1774 per_bfd = new dwarf2_per_bfd (objfile->obfd, names, can_copy);
1775 dwarf2_per_bfd_objfile_data_key.set (objfile, per_bfd);
1778 per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile, per_bfd);
1781 return (!per_objfile->per_bfd->info.is_virtual
1782 && per_objfile->per_bfd->info.s.section != NULL
1783 && !per_objfile->per_bfd->abbrev.is_virtual
1784 && per_objfile->per_bfd->abbrev.s.section != NULL);
1787 /* See declaration. */
1790 dwarf2_per_bfd::locate_sections (bfd *abfd, asection *sectp,
1791 const dwarf2_debug_sections &names)
1793 flagword aflag = bfd_section_flags (sectp);
1795 if ((aflag & SEC_HAS_CONTENTS) == 0)
1798 else if (elf_section_data (sectp)->this_hdr.sh_size
1799 > bfd_get_file_size (abfd))
1801 bfd_size_type size = elf_section_data (sectp)->this_hdr.sh_size;
1802 warning (_("Discarding section %s which has a section size (%s"
1803 ") larger than the file size [in module %s]"),
1804 bfd_section_name (sectp), phex_nz (size, sizeof (size)),
1805 bfd_get_filename (abfd));
1807 else if (names.info.matches (sectp->name))
1809 this->info.s.section = sectp;
1810 this->info.size = bfd_section_size (sectp);
1812 else if (names.abbrev.matches (sectp->name))
1814 this->abbrev.s.section = sectp;
1815 this->abbrev.size = bfd_section_size (sectp);
1817 else if (names.line.matches (sectp->name))
1819 this->line.s.section = sectp;
1820 this->line.size = bfd_section_size (sectp);
1822 else if (names.loc.matches (sectp->name))
1824 this->loc.s.section = sectp;
1825 this->loc.size = bfd_section_size (sectp);
1827 else if (names.loclists.matches (sectp->name))
1829 this->loclists.s.section = sectp;
1830 this->loclists.size = bfd_section_size (sectp);
1832 else if (names.macinfo.matches (sectp->name))
1834 this->macinfo.s.section = sectp;
1835 this->macinfo.size = bfd_section_size (sectp);
1837 else if (names.macro.matches (sectp->name))
1839 this->macro.s.section = sectp;
1840 this->macro.size = bfd_section_size (sectp);
1842 else if (names.str.matches (sectp->name))
1844 this->str.s.section = sectp;
1845 this->str.size = bfd_section_size (sectp);
1847 else if (names.str_offsets.matches (sectp->name))
1849 this->str_offsets.s.section = sectp;
1850 this->str_offsets.size = bfd_section_size (sectp);
1852 else if (names.line_str.matches (sectp->name))
1854 this->line_str.s.section = sectp;
1855 this->line_str.size = bfd_section_size (sectp);
1857 else if (names.addr.matches (sectp->name))
1859 this->addr.s.section = sectp;
1860 this->addr.size = bfd_section_size (sectp);
1862 else if (names.frame.matches (sectp->name))
1864 this->frame.s.section = sectp;
1865 this->frame.size = bfd_section_size (sectp);
1867 else if (names.eh_frame.matches (sectp->name))
1869 this->eh_frame.s.section = sectp;
1870 this->eh_frame.size = bfd_section_size (sectp);
1872 else if (names.ranges.matches (sectp->name))
1874 this->ranges.s.section = sectp;
1875 this->ranges.size = bfd_section_size (sectp);
1877 else if (names.rnglists.matches (sectp->name))
1879 this->rnglists.s.section = sectp;
1880 this->rnglists.size = bfd_section_size (sectp);
1882 else if (names.types.matches (sectp->name))
1884 struct dwarf2_section_info type_section;
1886 memset (&type_section, 0, sizeof (type_section));
1887 type_section.s.section = sectp;
1888 type_section.size = bfd_section_size (sectp);
1890 this->types.push_back (type_section);
1892 else if (names.gdb_index.matches (sectp->name))
1894 this->gdb_index.s.section = sectp;
1895 this->gdb_index.size = bfd_section_size (sectp);
1897 else if (names.debug_names.matches (sectp->name))
1899 this->debug_names.s.section = sectp;
1900 this->debug_names.size = bfd_section_size (sectp);
1902 else if (names.debug_aranges.matches (sectp->name))
1904 this->debug_aranges.s.section = sectp;
1905 this->debug_aranges.size = bfd_section_size (sectp);
1908 if ((bfd_section_flags (sectp) & (SEC_LOAD | SEC_ALLOC))
1909 && bfd_section_vma (sectp) == 0)
1910 this->has_section_at_zero = true;
1913 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
1917 dwarf2_get_section_info (struct objfile *objfile,
1918 enum dwarf2_section_enum sect,
1919 asection **sectp, const gdb_byte **bufp,
1920 bfd_size_type *sizep)
1922 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
1923 struct dwarf2_section_info *info;
1925 /* We may see an objfile without any DWARF, in which case we just
1927 if (per_objfile == NULL)
1936 case DWARF2_DEBUG_FRAME:
1937 info = &per_objfile->per_bfd->frame;
1939 case DWARF2_EH_FRAME:
1940 info = &per_objfile->per_bfd->eh_frame;
1943 gdb_assert_not_reached ("unexpected section");
1946 info->read (objfile);
1948 *sectp = info->get_bfd_section ();
1949 *bufp = info->buffer;
1950 *sizep = info->size;
1954 /* DWARF quick_symbol_functions support. */
1956 /* TUs can share .debug_line entries, and there can be a lot more TUs than
1957 unique line tables, so we maintain a separate table of all .debug_line
1958 derived entries to support the sharing.
1959 All the quick functions need is the list of file names. We discard the
1960 line_header when we're done and don't need to record it here. */
1961 struct quick_file_names
1963 /* The data used to construct the hash key. */
1964 struct stmt_list_hash hash;
1966 /* The number of entries in file_names, real_names. */
1967 unsigned int num_file_names;
1969 /* The file names from the line table, after being run through
1971 const char **file_names;
1973 /* The file names from the line table after being run through
1974 gdb_realpath. These are computed lazily. */
1975 const char **real_names;
1978 /* When using the index (and thus not using psymtabs), each CU has an
1979 object of this type. This is used to hold information needed by
1980 the various "quick" methods. */
1981 struct dwarf2_per_cu_quick_data
1983 /* The file table. This can be NULL if there was no file table
1984 or it's currently not read in.
1985 NOTE: This points into dwarf2_per_objfile->per_bfd->quick_file_names_table. */
1986 struct quick_file_names *file_names;
1988 /* A temporary mark bit used when iterating over all CUs in
1989 expand_symtabs_matching. */
1990 unsigned int mark : 1;
1992 /* True if we've tried to read the file table and found there isn't one.
1993 There will be no point in trying to read it again next time. */
1994 unsigned int no_file_data : 1;
1997 /* A subclass of psymbol_functions that arranges to read the DWARF
1998 partial symbols when needed. */
1999 struct lazy_dwarf_reader : public psymbol_functions
2001 using psymbol_functions::psymbol_functions;
2003 bool can_lazily_read_symbols () override
2008 void read_partial_symbols (struct objfile *objfile) override
2010 if (dwarf2_has_info (objfile, nullptr))
2011 dwarf2_build_psymtabs (objfile, this);
2015 static quick_symbol_functions_up
2016 make_lazy_dwarf_reader ()
2018 return quick_symbol_functions_up (new lazy_dwarf_reader);
2021 struct dwarf2_base_index_functions : public quick_symbol_functions
2023 bool has_symbols (struct objfile *objfile) override;
2025 bool has_unexpanded_symtabs (struct objfile *objfile) override;
2027 struct symtab *find_last_source_symtab (struct objfile *objfile) override;
2029 void forget_cached_source_info (struct objfile *objfile) override;
2031 enum language lookup_global_symbol_language (struct objfile *objfile,
2034 bool *symbol_found_p) override
2036 *symbol_found_p = false;
2037 return language_unknown;
2040 void print_stats (struct objfile *objfile, bool print_bcache) override;
2042 void expand_all_symtabs (struct objfile *objfile) override;
2044 struct compunit_symtab *find_pc_sect_compunit_symtab
2045 (struct objfile *objfile, struct bound_minimal_symbol msymbol,
2046 CORE_ADDR pc, struct obj_section *section, int warn_if_readin) override;
2048 struct compunit_symtab *find_compunit_symtab_by_address
2049 (struct objfile *objfile, CORE_ADDR address) override
2054 void map_symbol_filenames (struct objfile *objfile,
2055 gdb::function_view<symbol_filename_ftype> fun,
2056 bool need_fullname) override;
2059 struct dwarf2_gdb_index : public dwarf2_base_index_functions
2061 void dump (struct objfile *objfile) override;
2063 void expand_matching_symbols
2065 const lookup_name_info &lookup_name,
2068 symbol_compare_ftype *ordered_compare) override;
2070 bool expand_symtabs_matching
2071 (struct objfile *objfile,
2072 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
2073 const lookup_name_info *lookup_name,
2074 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
2075 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
2076 block_search_flags search_flags,
2078 enum search_domain kind) override;
2081 struct dwarf2_debug_names_index : public dwarf2_base_index_functions
2083 void dump (struct objfile *objfile) override;
2085 void expand_matching_symbols
2087 const lookup_name_info &lookup_name,
2090 symbol_compare_ftype *ordered_compare) override;
2092 bool expand_symtabs_matching
2093 (struct objfile *objfile,
2094 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
2095 const lookup_name_info *lookup_name,
2096 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
2097 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
2098 block_search_flags search_flags,
2100 enum search_domain kind) override;
2103 static quick_symbol_functions_up
2104 make_dwarf_gdb_index ()
2106 return quick_symbol_functions_up (new dwarf2_gdb_index);
2109 static quick_symbol_functions_up
2110 make_dwarf_debug_names ()
2112 return quick_symbol_functions_up (new dwarf2_debug_names_index);
2115 /* Utility hash function for a stmt_list_hash. */
2118 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2122 if (stmt_list_hash->dwo_unit != NULL)
2123 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2124 v += to_underlying (stmt_list_hash->line_sect_off);
2128 /* Utility equality function for a stmt_list_hash. */
2131 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2132 const struct stmt_list_hash *rhs)
2134 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2136 if (lhs->dwo_unit != NULL
2137 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2140 return lhs->line_sect_off == rhs->line_sect_off;
2143 /* Hash function for a quick_file_names. */
2146 hash_file_name_entry (const void *e)
2148 const struct quick_file_names *file_data
2149 = (const struct quick_file_names *) e;
2151 return hash_stmt_list_entry (&file_data->hash);
2154 /* Equality function for a quick_file_names. */
2157 eq_file_name_entry (const void *a, const void *b)
2159 const struct quick_file_names *ea = (const struct quick_file_names *) a;
2160 const struct quick_file_names *eb = (const struct quick_file_names *) b;
2162 return eq_stmt_list_entry (&ea->hash, &eb->hash);
2165 /* Delete function for a quick_file_names. */
2168 delete_file_name_entry (void *e)
2170 struct quick_file_names *file_data = (struct quick_file_names *) e;
2173 for (i = 0; i < file_data->num_file_names; ++i)
2175 xfree ((void*) file_data->file_names[i]);
2176 if (file_data->real_names)
2177 xfree ((void*) file_data->real_names[i]);
2180 /* The space for the struct itself lives on the obstack, so we don't
2184 /* Create a quick_file_names hash table. */
2187 create_quick_file_names_table (unsigned int nr_initial_entries)
2189 return htab_up (htab_create_alloc (nr_initial_entries,
2190 hash_file_name_entry, eq_file_name_entry,
2191 delete_file_name_entry, xcalloc, xfree));
2194 /* Read in CU (dwarf2_cu object) for PER_CU in the context of PER_OBJFILE. This
2195 function is unrelated to symtabs, symtab would have to be created afterwards.
2196 You should call age_cached_comp_units after processing the CU. */
2199 load_cu (dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile,
2202 if (per_cu->is_debug_types)
2203 load_full_type_unit (per_cu, per_objfile);
2205 load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
2206 skip_partial, language_minimal);
2208 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
2210 return nullptr; /* Dummy CU. */
2212 dwarf2_find_base_address (cu->dies, cu);
2217 /* Read in the symbols for PER_CU in the context of PER_OBJFILE. */
2220 dw2_do_instantiate_symtab (dwarf2_per_cu_data *per_cu,
2221 dwarf2_per_objfile *per_objfile, bool skip_partial)
2223 /* Skip type_unit_groups, reading the type units they contain
2224 is handled elsewhere. */
2225 if (per_cu->type_unit_group_p ())
2229 /* The destructor of dwarf2_queue_guard frees any entries left on
2230 the queue. After this point we're guaranteed to leave this function
2231 with the dwarf queue empty. */
2232 dwarf2_queue_guard q_guard (per_objfile);
2234 if (!per_objfile->symtab_set_p (per_cu))
2236 queue_comp_unit (per_cu, per_objfile, language_minimal);
2237 dwarf2_cu *cu = load_cu (per_cu, per_objfile, skip_partial);
2239 /* If we just loaded a CU from a DWO, and we're working with an index
2240 that may badly handle TUs, load all the TUs in that DWO as well.
2241 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2242 if (!per_cu->is_debug_types
2244 && cu->dwo_unit != NULL
2245 && per_objfile->per_bfd->index_table != NULL
2246 && per_objfile->per_bfd->index_table->version <= 7
2247 /* DWP files aren't supported yet. */
2248 && get_dwp_file (per_objfile) == NULL)
2249 queue_and_load_all_dwo_tus (cu);
2252 process_queue (per_objfile);
2255 /* Age the cache, releasing compilation units that have not
2256 been used recently. */
2257 per_objfile->age_comp_units ();
2260 /* Ensure that the symbols for PER_CU have been read in. DWARF2_PER_OBJFILE is
2261 the per-objfile for which this symtab is instantiated.
2263 Returns the resulting symbol table. */
2265 static struct compunit_symtab *
2266 dw2_instantiate_symtab (dwarf2_per_cu_data *per_cu,
2267 dwarf2_per_objfile *per_objfile,
2270 gdb_assert (per_objfile->per_bfd->using_index);
2272 if (!per_objfile->symtab_set_p (per_cu))
2274 free_cached_comp_units freer (per_objfile);
2275 scoped_restore decrementer = increment_reading_symtab ();
2276 dw2_do_instantiate_symtab (per_cu, per_objfile, skip_partial);
2277 process_cu_includes (per_objfile);
2280 return per_objfile->get_symtab (per_cu);
2285 dwarf2_per_cu_data_up
2286 dwarf2_per_bfd::allocate_per_cu ()
2288 dwarf2_per_cu_data_up result (new dwarf2_per_cu_data);
2289 result->per_bfd = this;
2290 result->index = all_comp_units.size ();
2297 dwarf2_per_bfd::allocate_signatured_type (ULONGEST signature)
2299 signatured_type_up result (new signatured_type (signature));
2300 result->per_bfd = this;
2301 result->index = all_comp_units.size ();
2302 result->is_debug_types = true;
2307 /* Return a new dwarf2_per_cu_data allocated on the per-bfd
2308 obstack, and constructed with the specified field values. */
2310 static dwarf2_per_cu_data_up
2311 create_cu_from_index_list (dwarf2_per_bfd *per_bfd,
2312 struct dwarf2_section_info *section,
2314 sect_offset sect_off, ULONGEST length)
2316 dwarf2_per_cu_data_up the_cu = per_bfd->allocate_per_cu ();
2317 the_cu->sect_off = sect_off;
2318 the_cu->length = length;
2319 the_cu->section = section;
2320 the_cu->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
2321 struct dwarf2_per_cu_quick_data);
2322 the_cu->is_dwz = is_dwz;
2326 /* A helper for create_cus_from_index that handles a given list of
2330 create_cus_from_index_list (dwarf2_per_bfd *per_bfd,
2331 const gdb_byte *cu_list, offset_type n_elements,
2332 struct dwarf2_section_info *section,
2335 for (offset_type i = 0; i < n_elements; i += 2)
2337 gdb_static_assert (sizeof (ULONGEST) >= 8);
2339 sect_offset sect_off
2340 = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2341 ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2344 dwarf2_per_cu_data_up per_cu
2345 = create_cu_from_index_list (per_bfd, section, is_dwz, sect_off,
2347 per_bfd->all_comp_units.push_back (std::move (per_cu));
2351 /* Read the CU list from the mapped index, and use it to create all
2352 the CU objects for PER_BFD. */
2355 create_cus_from_index (dwarf2_per_bfd *per_bfd,
2356 const gdb_byte *cu_list, offset_type cu_list_elements,
2357 const gdb_byte *dwz_list, offset_type dwz_elements)
2359 gdb_assert (per_bfd->all_comp_units.empty ());
2360 per_bfd->all_comp_units.reserve ((cu_list_elements + dwz_elements) / 2);
2362 create_cus_from_index_list (per_bfd, cu_list, cu_list_elements,
2365 if (dwz_elements == 0)
2368 dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
2369 create_cus_from_index_list (per_bfd, dwz_list, dwz_elements,
2373 /* Create the signatured type hash table from the index. */
2376 create_signatured_type_table_from_index
2377 (dwarf2_per_bfd *per_bfd, struct dwarf2_section_info *section,
2378 const gdb_byte *bytes, offset_type elements)
2380 htab_up sig_types_hash = allocate_signatured_type_table ();
2382 for (offset_type i = 0; i < elements; i += 3)
2384 signatured_type_up sig_type;
2387 cu_offset type_offset_in_tu;
2389 gdb_static_assert (sizeof (ULONGEST) >= 8);
2390 sect_offset sect_off
2391 = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2393 = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
2395 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2398 sig_type = per_bfd->allocate_signatured_type (signature);
2399 sig_type->type_offset_in_tu = type_offset_in_tu;
2400 sig_type->section = section;
2401 sig_type->sect_off = sect_off;
2403 = OBSTACK_ZALLOC (&per_bfd->obstack,
2404 struct dwarf2_per_cu_quick_data);
2406 slot = htab_find_slot (sig_types_hash.get (), sig_type.get (), INSERT);
2407 *slot = sig_type.get ();
2409 per_bfd->all_comp_units.emplace_back (sig_type.release ());
2412 per_bfd->signatured_types = std::move (sig_types_hash);
2415 /* Create the signatured type hash table from .debug_names. */
2418 create_signatured_type_table_from_debug_names
2419 (dwarf2_per_objfile *per_objfile,
2420 const mapped_debug_names &map,
2421 struct dwarf2_section_info *section,
2422 struct dwarf2_section_info *abbrev_section)
2424 struct objfile *objfile = per_objfile->objfile;
2426 section->read (objfile);
2427 abbrev_section->read (objfile);
2429 htab_up sig_types_hash = allocate_signatured_type_table ();
2431 for (uint32_t i = 0; i < map.tu_count; ++i)
2433 signatured_type_up sig_type;
2436 sect_offset sect_off
2437 = (sect_offset) (extract_unsigned_integer
2438 (map.tu_table_reordered + i * map.offset_size,
2440 map.dwarf5_byte_order));
2442 comp_unit_head cu_header;
2443 read_and_check_comp_unit_head (per_objfile, &cu_header, section,
2445 section->buffer + to_underlying (sect_off),
2448 sig_type = per_objfile->per_bfd->allocate_signatured_type
2449 (cu_header.signature);
2450 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
2451 sig_type->section = section;
2452 sig_type->sect_off = sect_off;
2454 = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack,
2455 struct dwarf2_per_cu_quick_data);
2457 slot = htab_find_slot (sig_types_hash.get (), sig_type.get (), INSERT);
2458 *slot = sig_type.get ();
2460 per_objfile->per_bfd->all_comp_units.emplace_back (sig_type.release ());
2463 per_objfile->per_bfd->signatured_types = std::move (sig_types_hash);
2466 /* Read the address map data from the mapped index, and use it to
2467 populate the psymtabs_addrmap. */
2470 create_addrmap_from_index (dwarf2_per_objfile *per_objfile,
2471 struct mapped_index *index)
2473 struct objfile *objfile = per_objfile->objfile;
2474 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
2475 struct gdbarch *gdbarch = objfile->arch ();
2476 const gdb_byte *iter, *end;
2477 struct addrmap *mutable_map;
2480 auto_obstack temp_obstack;
2482 mutable_map = addrmap_create_mutable (&temp_obstack);
2484 iter = index->address_table.data ();
2485 end = iter + index->address_table.size ();
2487 baseaddr = objfile->text_section_offset ();
2491 ULONGEST hi, lo, cu_index;
2492 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2494 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2496 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2501 complaint (_(".gdb_index address table has invalid range (%s - %s)"),
2502 hex_string (lo), hex_string (hi));
2506 if (cu_index >= per_bfd->all_comp_units.size ())
2508 complaint (_(".gdb_index address table has invalid CU number %u"),
2509 (unsigned) cu_index);
2513 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
2514 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
2515 addrmap_set_empty (mutable_map, lo, hi - 1,
2516 per_bfd->get_cu (cu_index));
2519 per_bfd->index_addrmap = addrmap_create_fixed (mutable_map,
2523 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
2524 populate the psymtabs_addrmap. */
2527 create_addrmap_from_aranges (dwarf2_per_objfile *per_objfile,
2528 struct dwarf2_section_info *section)
2530 struct objfile *objfile = per_objfile->objfile;
2531 bfd *abfd = objfile->obfd;
2532 struct gdbarch *gdbarch = objfile->arch ();
2533 const CORE_ADDR baseaddr = objfile->text_section_offset ();
2534 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
2536 auto_obstack temp_obstack;
2537 addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
2539 std::unordered_map<sect_offset,
2540 dwarf2_per_cu_data *,
2541 gdb::hash_enum<sect_offset>>
2542 debug_info_offset_to_per_cu;
2543 for (const auto &per_cu : per_bfd->all_comp_units)
2545 const auto insertpair
2546 = debug_info_offset_to_per_cu.emplace (per_cu->sect_off,
2548 if (!insertpair.second)
2550 warning (_("Section .debug_aranges in %s has duplicate "
2551 "debug_info_offset %s, ignoring .debug_aranges."),
2552 objfile_name (objfile), sect_offset_str (per_cu->sect_off));
2557 section->read (objfile);
2559 const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
2561 const gdb_byte *addr = section->buffer;
2563 while (addr < section->buffer + section->size)
2565 const gdb_byte *const entry_addr = addr;
2566 unsigned int bytes_read;
2568 const LONGEST entry_length = read_initial_length (abfd, addr,
2572 const gdb_byte *const entry_end = addr + entry_length;
2573 const bool dwarf5_is_dwarf64 = bytes_read != 4;
2574 const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
2575 if (addr + entry_length > section->buffer + section->size)
2577 warning (_("Section .debug_aranges in %s entry at offset %s "
2578 "length %s exceeds section length %s, "
2579 "ignoring .debug_aranges."),
2580 objfile_name (objfile),
2581 plongest (entry_addr - section->buffer),
2582 plongest (bytes_read + entry_length),
2583 pulongest (section->size));
2587 /* The version number. */
2588 const uint16_t version = read_2_bytes (abfd, addr);
2592 warning (_("Section .debug_aranges in %s entry at offset %s "
2593 "has unsupported version %d, ignoring .debug_aranges."),
2594 objfile_name (objfile),
2595 plongest (entry_addr - section->buffer), version);
2599 const uint64_t debug_info_offset
2600 = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
2601 addr += offset_size;
2602 const auto per_cu_it
2603 = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
2604 if (per_cu_it == debug_info_offset_to_per_cu.cend ())
2606 warning (_("Section .debug_aranges in %s entry at offset %s "
2607 "debug_info_offset %s does not exists, "
2608 "ignoring .debug_aranges."),
2609 objfile_name (objfile),
2610 plongest (entry_addr - section->buffer),
2611 pulongest (debug_info_offset));
2614 dwarf2_per_cu_data *const per_cu = per_cu_it->second;
2616 const uint8_t address_size = *addr++;
2617 if (address_size < 1 || address_size > 8)
2619 warning (_("Section .debug_aranges in %s entry at offset %s "
2620 "address_size %u is invalid, ignoring .debug_aranges."),
2621 objfile_name (objfile),
2622 plongest (entry_addr - section->buffer), address_size);
2626 const uint8_t segment_selector_size = *addr++;
2627 if (segment_selector_size != 0)
2629 warning (_("Section .debug_aranges in %s entry at offset %s "
2630 "segment_selector_size %u is not supported, "
2631 "ignoring .debug_aranges."),
2632 objfile_name (objfile),
2633 plongest (entry_addr - section->buffer),
2634 segment_selector_size);
2638 /* Must pad to an alignment boundary that is twice the address
2639 size. It is undocumented by the DWARF standard but GCC does
2640 use it. However, not every compiler does this. We can see
2641 whether it has happened by looking at the total length of the
2642 contents of the aranges for this CU -- it if isn't a multiple
2643 of twice the address size, then we skip any leftover
2645 addr += (entry_end - addr) % (2 * address_size);
2649 if (addr + 2 * address_size > entry_end)
2651 warning (_("Section .debug_aranges in %s entry at offset %s "
2652 "address list is not properly terminated, "
2653 "ignoring .debug_aranges."),
2654 objfile_name (objfile),
2655 plongest (entry_addr - section->buffer));
2658 ULONGEST start = extract_unsigned_integer (addr, address_size,
2660 addr += address_size;
2661 ULONGEST length = extract_unsigned_integer (addr, address_size,
2663 addr += address_size;
2664 if (start == 0 && length == 0)
2666 if (start == 0 && !per_bfd->has_section_at_zero)
2668 /* Symbol was eliminated due to a COMDAT group. */
2671 ULONGEST end = start + length;
2672 start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
2674 end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
2676 addrmap_set_empty (mutable_map, start, end - 1, per_cu);
2680 per_bfd->index_addrmap = addrmap_create_fixed (mutable_map,
2684 /* A helper function that reads the .gdb_index from BUFFER and fills
2685 in MAP. FILENAME is the name of the file containing the data;
2686 it is used for error reporting. DEPRECATED_OK is true if it is
2687 ok to use deprecated sections.
2689 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
2690 out parameters that are filled in with information about the CU and
2691 TU lists in the section.
2693 Returns true if all went well, false otherwise. */
2696 read_gdb_index_from_buffer (const char *filename,
2698 gdb::array_view<const gdb_byte> buffer,
2699 struct mapped_index *map,
2700 const gdb_byte **cu_list,
2701 offset_type *cu_list_elements,
2702 const gdb_byte **types_list,
2703 offset_type *types_list_elements)
2705 const gdb_byte *addr = &buffer[0];
2706 offset_view metadata (buffer);
2708 /* Version check. */
2709 offset_type version = metadata[0];
2710 /* Versions earlier than 3 emitted every copy of a psymbol. This
2711 causes the index to behave very poorly for certain requests. Version 3
2712 contained incomplete addrmap. So, it seems better to just ignore such
2716 static int warning_printed = 0;
2717 if (!warning_printed)
2719 warning (_("Skipping obsolete .gdb_index section in %s."),
2721 warning_printed = 1;
2725 /* Index version 4 uses a different hash function than index version
2728 Versions earlier than 6 did not emit psymbols for inlined
2729 functions. Using these files will cause GDB not to be able to
2730 set breakpoints on inlined functions by name, so we ignore these
2731 indices unless the user has done
2732 "set use-deprecated-index-sections on". */
2733 if (version < 6 && !deprecated_ok)
2735 static int warning_printed = 0;
2736 if (!warning_printed)
2739 Skipping deprecated .gdb_index section in %s.\n\
2740 Do \"set use-deprecated-index-sections on\" before the file is read\n\
2741 to use the section anyway."),
2743 warning_printed = 1;
2747 /* Version 7 indices generated by gold refer to the CU for a symbol instead
2748 of the TU (for symbols coming from TUs),
2749 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
2750 Plus gold-generated indices can have duplicate entries for global symbols,
2751 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
2752 These are just performance bugs, and we can't distinguish gdb-generated
2753 indices from gold-generated ones, so issue no warning here. */
2755 /* Indexes with higher version than the one supported by GDB may be no
2756 longer backward compatible. */
2760 map->version = version;
2763 *cu_list = addr + metadata[i];
2764 *cu_list_elements = (metadata[i + 1] - metadata[i]) / 8;
2767 *types_list = addr + metadata[i];
2768 *types_list_elements = (metadata[i + 1] - metadata[i]) / 8;
2771 const gdb_byte *address_table = addr + metadata[i];
2772 const gdb_byte *address_table_end = addr + metadata[i + 1];
2774 = gdb::array_view<const gdb_byte> (address_table, address_table_end);
2777 const gdb_byte *symbol_table = addr + metadata[i];
2778 const gdb_byte *symbol_table_end = addr + metadata[i + 1];
2780 = offset_view (gdb::array_view<const gdb_byte> (symbol_table,
2784 map->constant_pool = buffer.slice (metadata[i]);
2789 /* Callback types for dwarf2_read_gdb_index. */
2791 typedef gdb::function_view
2792 <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_bfd *)>
2793 get_gdb_index_contents_ftype;
2794 typedef gdb::function_view
2795 <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
2796 get_gdb_index_contents_dwz_ftype;
2798 /* Read .gdb_index. If everything went ok, initialize the "quick"
2799 elements of all the CUs and return 1. Otherwise, return 0. */
2802 dwarf2_read_gdb_index
2803 (dwarf2_per_objfile *per_objfile,
2804 get_gdb_index_contents_ftype get_gdb_index_contents,
2805 get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
2807 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
2808 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
2809 struct dwz_file *dwz;
2810 struct objfile *objfile = per_objfile->objfile;
2811 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
2813 gdb::array_view<const gdb_byte> main_index_contents
2814 = get_gdb_index_contents (objfile, per_bfd);
2816 if (main_index_contents.empty ())
2819 std::unique_ptr<struct mapped_index> map (new struct mapped_index);
2820 if (!read_gdb_index_from_buffer (objfile_name (objfile),
2821 use_deprecated_index_sections,
2822 main_index_contents, map.get (), &cu_list,
2823 &cu_list_elements, &types_list,
2824 &types_list_elements))
2827 /* Don't use the index if it's empty. */
2828 if (map->symbol_table.empty ())
2831 /* If there is a .dwz file, read it so we can get its CU list as
2833 dwz = dwarf2_get_dwz_file (per_bfd);
2836 struct mapped_index dwz_map;
2837 const gdb_byte *dwz_types_ignore;
2838 offset_type dwz_types_elements_ignore;
2840 gdb::array_view<const gdb_byte> dwz_index_content
2841 = get_gdb_index_contents_dwz (objfile, dwz);
2843 if (dwz_index_content.empty ())
2846 if (!read_gdb_index_from_buffer (bfd_get_filename (dwz->dwz_bfd.get ()),
2847 1, dwz_index_content, &dwz_map,
2848 &dwz_list, &dwz_list_elements,
2850 &dwz_types_elements_ignore))
2852 warning (_("could not read '.gdb_index' section from %s; skipping"),
2853 bfd_get_filename (dwz->dwz_bfd.get ()));
2858 create_cus_from_index (per_bfd, cu_list, cu_list_elements, dwz_list,
2861 if (types_list_elements)
2863 /* We can only handle a single .debug_types when we have an
2865 if (per_bfd->types.size () != 1)
2868 dwarf2_section_info *section = &per_bfd->types[0];
2870 create_signatured_type_table_from_index (per_bfd, section, types_list,
2871 types_list_elements);
2874 create_addrmap_from_index (per_objfile, map.get ());
2876 per_bfd->index_table = std::move (map);
2877 per_bfd->using_index = 1;
2878 per_bfd->quick_file_names_table =
2879 create_quick_file_names_table (per_bfd->all_comp_units.size ());
2884 /* die_reader_func for dw2_get_file_names. */
2887 dw2_get_file_names_reader (const struct die_reader_specs *reader,
2888 struct die_info *comp_unit_die)
2890 struct dwarf2_cu *cu = reader->cu;
2891 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
2892 dwarf2_per_objfile *per_objfile = cu->per_objfile;
2893 struct dwarf2_per_cu_data *lh_cu;
2894 struct attribute *attr;
2896 struct quick_file_names *qfn;
2898 gdb_assert (! this_cu->is_debug_types);
2900 /* Our callers never want to match partial units -- instead they
2901 will match the enclosing full CU. */
2902 if (comp_unit_die->tag == DW_TAG_partial_unit)
2904 this_cu->v.quick->no_file_data = 1;
2912 sect_offset line_offset {};
2914 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
2915 if (attr != nullptr && attr->form_is_unsigned ())
2917 struct quick_file_names find_entry;
2919 line_offset = (sect_offset) attr->as_unsigned ();
2921 /* We may have already read in this line header (TU line header sharing).
2922 If we have we're done. */
2923 find_entry.hash.dwo_unit = cu->dwo_unit;
2924 find_entry.hash.line_sect_off = line_offset;
2925 slot = htab_find_slot (per_objfile->per_bfd->quick_file_names_table.get (),
2926 &find_entry, INSERT);
2929 lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
2933 lh = dwarf_decode_line_header (line_offset, cu);
2937 lh_cu->v.quick->no_file_data = 1;
2941 qfn = XOBNEW (&per_objfile->per_bfd->obstack, struct quick_file_names);
2942 qfn->hash.dwo_unit = cu->dwo_unit;
2943 qfn->hash.line_sect_off = line_offset;
2944 gdb_assert (slot != NULL);
2947 file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
2950 if (strcmp (fnd.name, "<unknown>") != 0)
2953 qfn->num_file_names = offset + lh->file_names_size ();
2955 XOBNEWVEC (&per_objfile->per_bfd->obstack, const char *,
2956 qfn->num_file_names);
2958 qfn->file_names[0] = xstrdup (fnd.name);
2959 for (int i = 0; i < lh->file_names_size (); ++i)
2960 qfn->file_names[i + offset] = lh->file_full_name (i + 1,
2961 fnd.comp_dir).release ();
2962 qfn->real_names = NULL;
2964 lh_cu->v.quick->file_names = qfn;
2967 /* A helper for the "quick" functions which attempts to read the line
2968 table for THIS_CU. */
2970 static struct quick_file_names *
2971 dw2_get_file_names (dwarf2_per_cu_data *this_cu,
2972 dwarf2_per_objfile *per_objfile)
2974 /* This should never be called for TUs. */
2975 gdb_assert (! this_cu->is_debug_types);
2976 /* Nor type unit groups. */
2977 gdb_assert (! this_cu->type_unit_group_p ());
2979 if (this_cu->v.quick->file_names != NULL)
2980 return this_cu->v.quick->file_names;
2981 /* If we know there is no line data, no point in looking again. */
2982 if (this_cu->v.quick->no_file_data)
2985 cutu_reader reader (this_cu, per_objfile);
2986 if (!reader.dummy_p)
2987 dw2_get_file_names_reader (&reader, reader.comp_unit_die);
2989 if (this_cu->v.quick->no_file_data)
2991 return this_cu->v.quick->file_names;
2994 /* A helper for the "quick" functions which computes and caches the
2995 real path for a given file name from the line table. */
2998 dw2_get_real_path (dwarf2_per_objfile *per_objfile,
2999 struct quick_file_names *qfn, int index)
3001 if (qfn->real_names == NULL)
3002 qfn->real_names = OBSTACK_CALLOC (&per_objfile->per_bfd->obstack,
3003 qfn->num_file_names, const char *);
3005 if (qfn->real_names[index] == NULL)
3006 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3008 return qfn->real_names[index];
3012 dwarf2_base_index_functions::find_last_source_symtab (struct objfile *objfile)
3014 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3015 dwarf2_per_cu_data *dwarf_cu
3016 = per_objfile->per_bfd->all_comp_units.back ().get ();
3017 compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, per_objfile, false);
3022 return compunit_primary_filetab (cust);
3025 /* Traversal function for dw2_forget_cached_source_info. */
3028 dw2_free_cached_file_names (void **slot, void *info)
3030 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3032 if (file_data->real_names)
3036 for (i = 0; i < file_data->num_file_names; ++i)
3038 xfree ((void*) file_data->real_names[i]);
3039 file_data->real_names[i] = NULL;
3047 dwarf2_base_index_functions::forget_cached_source_info
3048 (struct objfile *objfile)
3050 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3052 htab_traverse_noresize (per_objfile->per_bfd->quick_file_names_table.get (),
3053 dw2_free_cached_file_names, NULL);
3056 /* Struct used to manage iterating over all CUs looking for a symbol. */
3058 struct dw2_symtab_iterator
3060 /* The dwarf2_per_objfile owning the CUs we are iterating on. */
3061 dwarf2_per_objfile *per_objfile;
3062 /* If set, only look for symbols that match that block. Valid values are
3063 GLOBAL_BLOCK and STATIC_BLOCK. */
3064 gdb::optional<block_enum> block_index;
3065 /* The kind of symbol we're looking for. */
3067 /* The list of CUs from the index entry of the symbol,
3068 or NULL if not found. */
3070 /* The next element in VEC to look at. */
3072 /* The number of elements in VEC, or zero if there is no match. */
3074 /* Have we seen a global version of the symbol?
3075 If so we can ignore all further global instances.
3076 This is to work around gold/15646, inefficient gold-generated
3081 /* Initialize the index symtab iterator ITER, offset_type NAMEI variant. */
3084 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3085 dwarf2_per_objfile *per_objfile,
3086 gdb::optional<block_enum> block_index,
3087 domain_enum domain, offset_type namei)
3089 iter->per_objfile = per_objfile;
3090 iter->block_index = block_index;
3091 iter->domain = domain;
3093 iter->global_seen = 0;
3097 mapped_index *index = per_objfile->per_bfd->index_table.get ();
3098 /* index is NULL if OBJF_READNOW. */
3102 gdb_assert (!index->symbol_name_slot_invalid (namei));
3103 offset_type vec_idx = index->symbol_vec_index (namei);
3105 iter->vec = offset_view (index->constant_pool.slice (vec_idx));
3106 iter->length = iter->vec[0];
3109 /* Return the next matching CU or NULL if there are no more. */
3111 static struct dwarf2_per_cu_data *
3112 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3114 dwarf2_per_objfile *per_objfile = iter->per_objfile;
3116 for ( ; iter->next < iter->length; ++iter->next)
3118 offset_type cu_index_and_attrs = iter->vec[iter->next + 1];
3119 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3120 gdb_index_symbol_kind symbol_kind =
3121 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3122 /* Only check the symbol attributes if they're present.
3123 Indices prior to version 7 don't record them,
3124 and indices >= 7 may elide them for certain symbols
3125 (gold does this). */
3127 (per_objfile->per_bfd->index_table->version >= 7
3128 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3130 /* Don't crash on bad data. */
3131 if (cu_index >= per_objfile->per_bfd->all_comp_units.size ())
3133 complaint (_(".gdb_index entry has bad CU index"
3134 " [in module %s]"), objfile_name (per_objfile->objfile));
3138 dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cu (cu_index);
3140 /* Skip if already read in. */
3141 if (per_objfile->symtab_set_p (per_cu))
3144 /* Check static vs global. */
3147 bool is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3149 if (iter->block_index.has_value ())
3151 bool want_static = *iter->block_index == STATIC_BLOCK;
3153 if (is_static != want_static)
3157 /* Work around gold/15646. */
3159 && symbol_kind == GDB_INDEX_SYMBOL_KIND_TYPE)
3161 if (iter->global_seen)
3164 iter->global_seen = 1;
3168 /* Only check the symbol's kind if it has one. */
3171 switch (iter->domain)
3174 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3175 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3176 /* Some types are also in VAR_DOMAIN. */
3177 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3181 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3185 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3189 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3205 dwarf2_base_index_functions::print_stats (struct objfile *objfile,
3211 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3212 int total = per_objfile->per_bfd->all_comp_units.size ();
3215 for (int i = 0; i < total; ++i)
3217 dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cu (i);
3219 if (!per_objfile->symtab_set_p (per_cu))
3222 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
3223 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3226 /* This dumps minimal information about the index.
3227 It is called via "mt print objfiles".
3228 One use is to verify .gdb_index has been loaded by the
3229 gdb.dwarf2/gdb-index.exp testcase. */
3232 dwarf2_gdb_index::dump (struct objfile *objfile)
3234 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3236 gdb_assert (per_objfile->per_bfd->using_index);
3237 printf_filtered (".gdb_index:");
3238 if (per_objfile->per_bfd->index_table != NULL)
3240 printf_filtered (" version %d\n",
3241 per_objfile->per_bfd->index_table->version);
3244 printf_filtered (" faked for \"readnow\"\n");
3245 printf_filtered ("\n");
3249 dwarf2_base_index_functions::expand_all_symtabs (struct objfile *objfile)
3251 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3252 int total_units = per_objfile->per_bfd->all_comp_units.size ();
3254 for (int i = 0; i < total_units; ++i)
3256 dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cu (i);
3258 /* We don't want to directly expand a partial CU, because if we
3259 read it with the wrong language, then assertion failures can
3260 be triggered later on. See PR symtab/23010. So, tell
3261 dw2_instantiate_symtab to skip partial CUs -- any important
3262 partial CU will be read via DW_TAG_imported_unit anyway. */
3263 dw2_instantiate_symtab (per_cu, per_objfile, true);
3268 dw2_expand_symtabs_matching_symbol
3269 (mapped_index_base &index,
3270 const lookup_name_info &lookup_name_in,
3271 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
3272 gdb::function_view<bool (offset_type)> match_callback,
3273 dwarf2_per_objfile *per_objfile);
3276 dw2_expand_symtabs_matching_one
3277 (dwarf2_per_cu_data *per_cu,
3278 dwarf2_per_objfile *per_objfile,
3279 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
3280 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify);
3283 dwarf2_gdb_index::expand_matching_symbols
3284 (struct objfile *objfile,
3285 const lookup_name_info &name, domain_enum domain,
3287 symbol_compare_ftype *ordered_compare)
3290 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
3292 const block_enum block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
3294 if (per_objfile->per_bfd->index_table != nullptr)
3296 mapped_index &index = *per_objfile->per_bfd->index_table;
3298 const char *match_name = name.ada ().lookup_name ().c_str ();
3299 auto matcher = [&] (const char *symname)
3301 if (ordered_compare == nullptr)
3303 return ordered_compare (symname, match_name) == 0;
3306 dw2_expand_symtabs_matching_symbol (index, name, matcher,
3307 [&] (offset_type namei)
3309 struct dw2_symtab_iterator iter;
3310 struct dwarf2_per_cu_data *per_cu;
3312 dw2_symtab_iter_init (&iter, per_objfile, block_kind, domain,
3314 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3315 dw2_expand_symtabs_matching_one (per_cu, per_objfile, nullptr,
3322 /* We have -readnow: no .gdb_index, but no partial symtabs either. So,
3323 proceed assuming all symtabs have been read in. */
3327 /* Starting from a search name, return the string that finds the upper
3328 bound of all strings that start with SEARCH_NAME in a sorted name
3329 list. Returns the empty string to indicate that the upper bound is
3330 the end of the list. */
3333 make_sort_after_prefix_name (const char *search_name)
3335 /* When looking to complete "func", we find the upper bound of all
3336 symbols that start with "func" by looking for where we'd insert
3337 the closest string that would follow "func" in lexicographical
3338 order. Usually, that's "func"-with-last-character-incremented,
3339 i.e. "fund". Mind non-ASCII characters, though. Usually those
3340 will be UTF-8 multi-byte sequences, but we can't be certain.
3341 Especially mind the 0xff character, which is a valid character in
3342 non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
3343 rule out compilers allowing it in identifiers. Note that
3344 conveniently, strcmp/strcasecmp are specified to compare
3345 characters interpreted as unsigned char. So what we do is treat
3346 the whole string as a base 256 number composed of a sequence of
3347 base 256 "digits" and add 1 to it. I.e., adding 1 to 0xff wraps
3348 to 0, and carries 1 to the following more-significant position.
3349 If the very first character in SEARCH_NAME ends up incremented
3350 and carries/overflows, then the upper bound is the end of the
3351 list. The string after the empty string is also the empty
3354 Some examples of this operation:
3356 SEARCH_NAME => "+1" RESULT
3360 "\xff" "a" "\xff" => "\xff" "b"
3365 Then, with these symbols for example:
3371 completing "func" looks for symbols between "func" and
3372 "func"-with-last-character-incremented, i.e. "fund" (exclusive),
3373 which finds "func" and "func1", but not "fund".
3377 funcÿ (Latin1 'ÿ' [0xff])
3381 completing "funcÿ" looks for symbols between "funcÿ" and "fund"
3382 (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
3386 ÿÿ (Latin1 'ÿ' [0xff])
3389 completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
3390 the end of the list.
3392 std::string after = search_name;
3393 while (!after.empty () && (unsigned char) after.back () == 0xff)
3395 if (!after.empty ())
3396 after.back () = (unsigned char) after.back () + 1;
3400 /* See declaration. */
3402 std::pair<std::vector<name_component>::const_iterator,
3403 std::vector<name_component>::const_iterator>
3404 mapped_index_base::find_name_components_bounds
3405 (const lookup_name_info &lookup_name_without_params, language lang,
3406 dwarf2_per_objfile *per_objfile) const
3409 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
3411 const char *lang_name
3412 = lookup_name_without_params.language_lookup_name (lang);
3414 /* Comparison function object for lower_bound that matches against a
3415 given symbol name. */
3416 auto lookup_compare_lower = [&] (const name_component &elem,
3419 const char *elem_qualified = this->symbol_name_at (elem.idx, per_objfile);
3420 const char *elem_name = elem_qualified + elem.name_offset;
3421 return name_cmp (elem_name, name) < 0;
3424 /* Comparison function object for upper_bound that matches against a
3425 given symbol name. */
3426 auto lookup_compare_upper = [&] (const char *name,
3427 const name_component &elem)
3429 const char *elem_qualified = this->symbol_name_at (elem.idx, per_objfile);
3430 const char *elem_name = elem_qualified + elem.name_offset;
3431 return name_cmp (name, elem_name) < 0;
3434 auto begin = this->name_components.begin ();
3435 auto end = this->name_components.end ();
3437 /* Find the lower bound. */
3440 if (lookup_name_without_params.completion_mode () && lang_name[0] == '\0')
3443 return std::lower_bound (begin, end, lang_name, lookup_compare_lower);
3446 /* Find the upper bound. */
3449 if (lookup_name_without_params.completion_mode ())
3451 /* In completion mode, we want UPPER to point past all
3452 symbols names that have the same prefix. I.e., with
3453 these symbols, and completing "func":
3455 function << lower bound
3457 other_function << upper bound
3459 We find the upper bound by looking for the insertion
3460 point of "func"-with-last-character-incremented,
3462 std::string after = make_sort_after_prefix_name (lang_name);
3465 return std::lower_bound (lower, end, after.c_str (),
3466 lookup_compare_lower);
3469 return std::upper_bound (lower, end, lang_name, lookup_compare_upper);
3472 return {lower, upper};
3475 /* See declaration. */
3478 mapped_index_base::build_name_components (dwarf2_per_objfile *per_objfile)
3480 if (!this->name_components.empty ())
3483 this->name_components_casing = case_sensitivity;
3485 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
3487 /* The code below only knows how to break apart components of C++
3488 symbol names (and other languages that use '::' as
3489 namespace/module separator) and Ada symbol names. */
3490 auto count = this->symbol_name_count ();
3491 for (offset_type idx = 0; idx < count; idx++)
3493 if (this->symbol_name_slot_invalid (idx))
3496 const char *name = this->symbol_name_at (idx, per_objfile);
3498 /* Add each name component to the name component table. */
3499 unsigned int previous_len = 0;
3501 if (strstr (name, "::") != nullptr)
3503 for (unsigned int current_len = cp_find_first_component (name);
3504 name[current_len] != '\0';
3505 current_len += cp_find_first_component (name + current_len))
3507 gdb_assert (name[current_len] == ':');
3508 this->name_components.push_back ({previous_len, idx});
3509 /* Skip the '::'. */
3511 previous_len = current_len;
3516 /* Handle the Ada encoded (aka mangled) form here. */
3517 for (const char *iter = strstr (name, "__");
3519 iter = strstr (iter, "__"))
3521 this->name_components.push_back ({previous_len, idx});
3523 previous_len = iter - name;
3527 this->name_components.push_back ({previous_len, idx});
3530 /* Sort name_components elements by name. */
3531 auto name_comp_compare = [&] (const name_component &left,
3532 const name_component &right)
3534 const char *left_qualified
3535 = this->symbol_name_at (left.idx, per_objfile);
3536 const char *right_qualified
3537 = this->symbol_name_at (right.idx, per_objfile);
3539 const char *left_name = left_qualified + left.name_offset;
3540 const char *right_name = right_qualified + right.name_offset;
3542 return name_cmp (left_name, right_name) < 0;
3545 std::sort (this->name_components.begin (),
3546 this->name_components.end (),
3550 /* Helper for dw2_expand_symtabs_matching that works with a
3551 mapped_index_base instead of the containing objfile. This is split
3552 to a separate function in order to be able to unit test the
3553 name_components matching using a mock mapped_index_base. For each
3554 symbol name that matches, calls MATCH_CALLBACK, passing it the
3555 symbol's index in the mapped_index_base symbol table. */
3558 dw2_expand_symtabs_matching_symbol
3559 (mapped_index_base &index,
3560 const lookup_name_info &lookup_name_in,
3561 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
3562 gdb::function_view<bool (offset_type)> match_callback,
3563 dwarf2_per_objfile *per_objfile)
3565 lookup_name_info lookup_name_without_params
3566 = lookup_name_in.make_ignore_params ();
3568 /* Build the symbol name component sorted vector, if we haven't
3570 index.build_name_components (per_objfile);
3572 /* The same symbol may appear more than once in the range though.
3573 E.g., if we're looking for symbols that complete "w", and we have
3574 a symbol named "w1::w2", we'll find the two name components for
3575 that same symbol in the range. To be sure we only call the
3576 callback once per symbol, we first collect the symbol name
3577 indexes that matched in a temporary vector and ignore
3579 std::vector<offset_type> matches;
3581 struct name_and_matcher
3583 symbol_name_matcher_ftype *matcher;
3586 bool operator== (const name_and_matcher &other) const
3588 return matcher == other.matcher && strcmp (name, other.name) == 0;
3592 /* A vector holding all the different symbol name matchers, for all
3594 std::vector<name_and_matcher> matchers;
3596 for (int i = 0; i < nr_languages; i++)
3598 enum language lang_e = (enum language) i;
3600 const language_defn *lang = language_def (lang_e);
3601 symbol_name_matcher_ftype *name_matcher
3602 = lang->get_symbol_name_matcher (lookup_name_without_params);
3604 name_and_matcher key {
3606 lookup_name_without_params.language_lookup_name (lang_e)
3609 /* Don't insert the same comparison routine more than once.
3610 Note that we do this linear walk. This is not a problem in
3611 practice because the number of supported languages is
3613 if (std::find (matchers.begin (), matchers.end (), key)
3616 matchers.push_back (std::move (key));
3619 = index.find_name_components_bounds (lookup_name_without_params,
3620 lang_e, per_objfile);
3622 /* Now for each symbol name in range, check to see if we have a name
3623 match, and if so, call the MATCH_CALLBACK callback. */
3625 for (; bounds.first != bounds.second; ++bounds.first)
3627 const char *qualified
3628 = index.symbol_name_at (bounds.first->idx, per_objfile);
3630 if (!name_matcher (qualified, lookup_name_without_params, NULL)
3631 || (symbol_matcher != NULL && !symbol_matcher (qualified)))
3634 matches.push_back (bounds.first->idx);
3638 std::sort (matches.begin (), matches.end ());
3640 /* Finally call the callback, once per match. */
3643 for (offset_type idx : matches)
3647 if (!match_callback (idx))
3656 /* Above we use a type wider than idx's for 'prev', since 0 and
3657 (offset_type)-1 are both possible values. */
3658 static_assert (sizeof (prev) > sizeof (offset_type), "");
3665 namespace selftests { namespace dw2_expand_symtabs_matching {
3667 /* A mock .gdb_index/.debug_names-like name index table, enough to
3668 exercise dw2_expand_symtabs_matching_symbol, which works with the
3669 mapped_index_base interface. Builds an index from the symbol list
3670 passed as parameter to the constructor. */
3671 class mock_mapped_index : public mapped_index_base
3674 mock_mapped_index (gdb::array_view<const char *> symbols)
3675 : m_symbol_table (symbols)
3678 DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
3680 /* Return the number of names in the symbol table. */
3681 size_t symbol_name_count () const override
3683 return m_symbol_table.size ();
3686 /* Get the name of the symbol at IDX in the symbol table. */
3687 const char *symbol_name_at
3688 (offset_type idx, dwarf2_per_objfile *per_objfile) const override
3690 return m_symbol_table[idx];
3694 gdb::array_view<const char *> m_symbol_table;
3697 /* Convenience function that converts a NULL pointer to a "<null>"
3698 string, to pass to print routines. */
3701 string_or_null (const char *str)
3703 return str != NULL ? str : "<null>";
3706 /* Check if a lookup_name_info built from
3707 NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
3708 index. EXPECTED_LIST is the list of expected matches, in expected
3709 matching order. If no match expected, then an empty list is
3710 specified. Returns true on success. On failure prints a warning
3711 indicating the file:line that failed, and returns false. */
3714 check_match (const char *file, int line,
3715 mock_mapped_index &mock_index,
3716 const char *name, symbol_name_match_type match_type,
3717 bool completion_mode,
3718 std::initializer_list<const char *> expected_list,
3719 dwarf2_per_objfile *per_objfile)
3721 lookup_name_info lookup_name (name, match_type, completion_mode);
3723 bool matched = true;
3725 auto mismatch = [&] (const char *expected_str,
3728 warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
3729 "expected=\"%s\", got=\"%s\"\n"),
3731 (match_type == symbol_name_match_type::FULL
3733 name, string_or_null (expected_str), string_or_null (got));
3737 auto expected_it = expected_list.begin ();
3738 auto expected_end = expected_list.end ();
3740 dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
3742 [&] (offset_type idx)
3744 const char *matched_name = mock_index.symbol_name_at (idx, per_objfile);
3745 const char *expected_str
3746 = expected_it == expected_end ? NULL : *expected_it++;
3748 if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
3749 mismatch (expected_str, matched_name);
3753 const char *expected_str
3754 = expected_it == expected_end ? NULL : *expected_it++;
3755 if (expected_str != NULL)
3756 mismatch (expected_str, NULL);
3761 /* The symbols added to the mock mapped_index for testing (in
3763 static const char *test_symbols[] = {
3772 "ns2::tmpl<int>::foo2",
3773 "(anonymous namespace)::A::B::C",
3775 /* These are used to check that the increment-last-char in the
3776 matching algorithm for completion doesn't match "t1_fund" when
3777 completing "t1_func". */
3783 /* A UTF-8 name with multi-byte sequences to make sure that
3784 cp-name-parser understands this as a single identifier ("função"
3785 is "function" in PT). */
3788 /* \377 (0xff) is Latin1 'ÿ'. */
3791 /* \377 (0xff) is Latin1 'ÿ'. */
3795 /* A name with all sorts of complications. Starts with "z" to make
3796 it easier for the completion tests below. */
3797 #define Z_SYM_NAME \
3798 "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
3799 "::tuple<(anonymous namespace)::ui*, " \
3800 "std::default_delete<(anonymous namespace)::ui>, void>"
3805 /* Returns true if the mapped_index_base::find_name_component_bounds
3806 method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
3807 in completion mode. */
3810 check_find_bounds_finds (mapped_index_base &index,
3811 const char *search_name,
3812 gdb::array_view<const char *> expected_syms,
3813 dwarf2_per_objfile *per_objfile)
3815 lookup_name_info lookup_name (search_name,
3816 symbol_name_match_type::FULL, true);
3818 auto bounds = index.find_name_components_bounds (lookup_name,
3822 size_t distance = std::distance (bounds.first, bounds.second);
3823 if (distance != expected_syms.size ())
3826 for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
3828 auto nc_elem = bounds.first + exp_elem;
3829 const char *qualified = index.symbol_name_at (nc_elem->idx, per_objfile);
3830 if (strcmp (qualified, expected_syms[exp_elem]) != 0)
3837 /* Test the lower-level mapped_index::find_name_component_bounds
3841 test_mapped_index_find_name_component_bounds ()
3843 mock_mapped_index mock_index (test_symbols);
3845 mock_index.build_name_components (NULL /* per_objfile */);
3847 /* Test the lower-level mapped_index::find_name_component_bounds
3848 method in completion mode. */
3850 static const char *expected_syms[] = {
3855 SELF_CHECK (check_find_bounds_finds
3856 (mock_index, "t1_func", expected_syms,
3857 NULL /* per_objfile */));
3860 /* Check that the increment-last-char in the name matching algorithm
3861 for completion doesn't get confused with Ansi1 'ÿ' / 0xff. */
3863 static const char *expected_syms1[] = {
3867 SELF_CHECK (check_find_bounds_finds
3868 (mock_index, "\377", expected_syms1, NULL /* per_objfile */));
3870 static const char *expected_syms2[] = {
3873 SELF_CHECK (check_find_bounds_finds
3874 (mock_index, "\377\377", expected_syms2,
3875 NULL /* per_objfile */));
3879 /* Test dw2_expand_symtabs_matching_symbol. */
3882 test_dw2_expand_symtabs_matching_symbol ()
3884 mock_mapped_index mock_index (test_symbols);
3886 /* We let all tests run until the end even if some fails, for debug
3888 bool any_mismatch = false;
3890 /* Create the expected symbols list (an initializer_list). Needed
3891 because lists have commas, and we need to pass them to CHECK,
3892 which is a macro. */
3893 #define EXPECT(...) { __VA_ARGS__ }
3895 /* Wrapper for check_match that passes down the current
3896 __FILE__/__LINE__. */
3897 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST) \
3898 any_mismatch |= !check_match (__FILE__, __LINE__, \
3900 NAME, MATCH_TYPE, COMPLETION_MODE, \
3901 EXPECTED_LIST, NULL)
3903 /* Identity checks. */
3904 for (const char *sym : test_symbols)
3906 /* Should be able to match all existing symbols. */
3907 CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
3910 /* Should be able to match all existing symbols with
3912 std::string with_params = std::string (sym) + "(int)";
3913 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
3916 /* Should be able to match all existing symbols with
3917 parameters and qualifiers. */
3918 with_params = std::string (sym) + " ( int ) const";
3919 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
3922 /* This should really find sym, but cp-name-parser.y doesn't
3923 know about lvalue/rvalue qualifiers yet. */
3924 with_params = std::string (sym) + " ( int ) &&";
3925 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
3929 /* Check that the name matching algorithm for completion doesn't get
3930 confused with Latin1 'ÿ' / 0xff. */
3932 static const char str[] = "\377";
3933 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
3934 EXPECT ("\377", "\377\377123"));
3937 /* Check that the increment-last-char in the matching algorithm for
3938 completion doesn't match "t1_fund" when completing "t1_func". */
3940 static const char str[] = "t1_func";
3941 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
3942 EXPECT ("t1_func", "t1_func1"));
3945 /* Check that completion mode works at each prefix of the expected
3948 static const char str[] = "function(int)";
3949 size_t len = strlen (str);
3952 for (size_t i = 1; i < len; i++)
3954 lookup.assign (str, i);
3955 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
3956 EXPECT ("function"));
3960 /* While "w" is a prefix of both components, the match function
3961 should still only be called once. */
3963 CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
3965 CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
3969 /* Same, with a "complicated" symbol. */
3971 static const char str[] = Z_SYM_NAME;
3972 size_t len = strlen (str);
3975 for (size_t i = 1; i < len; i++)
3977 lookup.assign (str, i);
3978 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
3979 EXPECT (Z_SYM_NAME));
3983 /* In FULL mode, an incomplete symbol doesn't match. */
3985 CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
3989 /* A complete symbol with parameters matches any overload, since the
3990 index has no overload info. */
3992 CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
3993 EXPECT ("std::zfunction", "std::zfunction2"));
3994 CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
3995 EXPECT ("std::zfunction", "std::zfunction2"));
3996 CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
3997 EXPECT ("std::zfunction", "std::zfunction2"));
4000 /* Check that whitespace is ignored appropriately. A symbol with a
4001 template argument list. */
4003 static const char expected[] = "ns::foo<int>";
4004 CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4006 CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4010 /* Check that whitespace is ignored appropriately. A symbol with a
4011 template argument list that includes a pointer. */
4013 static const char expected[] = "ns::foo<char*>";
4014 /* Try both completion and non-completion modes. */
4015 static const bool completion_mode[2] = {false, true};
4016 for (size_t i = 0; i < 2; i++)
4018 CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4019 completion_mode[i], EXPECT (expected));
4020 CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4021 completion_mode[i], EXPECT (expected));
4023 CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4024 completion_mode[i], EXPECT (expected));
4025 CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4026 completion_mode[i], EXPECT (expected));
4031 /* Check method qualifiers are ignored. */
4032 static const char expected[] = "ns::foo<char*>";
4033 CHECK_MATCH ("ns :: foo < char * > ( int ) const",
4034 symbol_name_match_type::FULL, true, EXPECT (expected));
4035 CHECK_MATCH ("ns :: foo < char * > ( int ) &&",
4036 symbol_name_match_type::FULL, true, EXPECT (expected));
4037 CHECK_MATCH ("foo < char * > ( int ) const",
4038 symbol_name_match_type::WILD, true, EXPECT (expected));
4039 CHECK_MATCH ("foo < char * > ( int ) &&",
4040 symbol_name_match_type::WILD, true, EXPECT (expected));
4043 /* Test lookup names that don't match anything. */
4045 CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4048 CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4052 /* Some wild matching tests, exercising "(anonymous namespace)",
4053 which should not be confused with a parameter list. */
4055 static const char *syms[] = {
4059 "A :: B :: C ( int )",
4064 for (const char *s : syms)
4066 CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4067 EXPECT ("(anonymous namespace)::A::B::C"));
4072 static const char expected[] = "ns2::tmpl<int>::foo2";
4073 CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4075 CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4079 SELF_CHECK (!any_mismatch);
4088 test_mapped_index_find_name_component_bounds ();
4089 test_dw2_expand_symtabs_matching_symbol ();
4092 }} // namespace selftests::dw2_expand_symtabs_matching
4094 #endif /* GDB_SELF_TEST */
4096 /* If FILE_MATCHER is NULL or if PER_CU has
4097 dwarf2_per_cu_quick_data::MARK set (see
4098 dw_expand_symtabs_matching_file_matcher), expand the CU and call
4099 EXPANSION_NOTIFY on it. */
4102 dw2_expand_symtabs_matching_one
4103 (dwarf2_per_cu_data *per_cu,
4104 dwarf2_per_objfile *per_objfile,
4105 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4106 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
4108 if (file_matcher == NULL || per_cu->v.quick->mark)
4110 bool symtab_was_null = !per_objfile->symtab_set_p (per_cu);
4112 compunit_symtab *symtab
4113 = dw2_instantiate_symtab (per_cu, per_objfile, false);
4114 gdb_assert (symtab != nullptr);
4116 if (expansion_notify != NULL && symtab_was_null)
4117 return expansion_notify (symtab);
4122 /* Helper for dw2_expand_matching symtabs. Called on each symbol
4123 matched, to expand corresponding CUs that were marked. IDX is the
4124 index of the symbol name that matched. */
4127 dw2_expand_marked_cus
4128 (dwarf2_per_objfile *per_objfile, offset_type idx,
4129 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4130 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
4131 block_search_flags search_flags,
4134 offset_type vec_len, vec_idx;
4135 bool global_seen = false;
4136 mapped_index &index = *per_objfile->per_bfd->index_table;
4138 offset_view vec (index.constant_pool.slice (index.symbol_vec_index (idx)));
4140 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
4142 offset_type cu_index_and_attrs = vec[vec_idx + 1];
4143 /* This value is only valid for index versions >= 7. */
4144 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
4145 gdb_index_symbol_kind symbol_kind =
4146 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
4147 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
4148 /* Only check the symbol attributes if they're present.
4149 Indices prior to version 7 don't record them,
4150 and indices >= 7 may elide them for certain symbols
4151 (gold does this). */
4154 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
4156 /* Work around gold/15646. */
4159 && symbol_kind == GDB_INDEX_SYMBOL_KIND_TYPE)
4167 /* Only check the symbol's kind if it has one. */
4172 if ((search_flags & SEARCH_STATIC_BLOCK) == 0)
4177 if ((search_flags & SEARCH_GLOBAL_BLOCK) == 0)
4183 case VARIABLES_DOMAIN:
4184 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
4187 case FUNCTIONS_DOMAIN:
4188 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
4192 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4195 case MODULES_DOMAIN:
4196 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4204 /* Don't crash on bad data. */
4205 if (cu_index >= per_objfile->per_bfd->all_comp_units.size ())
4207 complaint (_(".gdb_index entry has bad CU index"
4208 " [in module %s]"), objfile_name (per_objfile->objfile));
4212 dwarf2_per_cu_data *per_cu = per_objfile->per_bfd->get_cu (cu_index);
4213 if (!dw2_expand_symtabs_matching_one (per_cu, per_objfile, file_matcher,
4221 /* If FILE_MATCHER is non-NULL, set all the
4222 dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
4223 that match FILE_MATCHER. */
4226 dw_expand_symtabs_matching_file_matcher
4227 (dwarf2_per_objfile *per_objfile,
4228 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
4230 if (file_matcher == NULL)
4233 htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
4235 NULL, xcalloc, xfree));
4236 htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
4238 NULL, xcalloc, xfree));
4240 /* The rule is CUs specify all the files, including those used by
4241 any TU, so there's no need to scan TUs here. */
4243 for (const auto &per_cu : per_objfile->per_bfd->all_comp_units)
4247 if (per_cu->is_debug_types)
4249 per_cu->v.quick->mark = 0;
4251 /* We only need to look at symtabs not already expanded. */
4252 if (per_objfile->symtab_set_p (per_cu.get ()))
4255 quick_file_names *file_data = dw2_get_file_names (per_cu.get (),
4257 if (file_data == NULL)
4260 if (htab_find (visited_not_found.get (), file_data) != NULL)
4262 else if (htab_find (visited_found.get (), file_data) != NULL)
4264 per_cu->v.quick->mark = 1;
4268 for (int j = 0; j < file_data->num_file_names; ++j)
4270 const char *this_real_name;
4272 if (file_matcher (file_data->file_names[j], false))
4274 per_cu->v.quick->mark = 1;
4278 /* Before we invoke realpath, which can get expensive when many
4279 files are involved, do a quick comparison of the basenames. */
4280 if (!basenames_may_differ
4281 && !file_matcher (lbasename (file_data->file_names[j]),
4285 this_real_name = dw2_get_real_path (per_objfile, file_data, j);
4286 if (file_matcher (this_real_name, false))
4288 per_cu->v.quick->mark = 1;
4293 void **slot = htab_find_slot (per_cu->v.quick->mark
4294 ? visited_found.get ()
4295 : visited_not_found.get (),
4302 dwarf2_gdb_index::expand_symtabs_matching
4303 (struct objfile *objfile,
4304 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4305 const lookup_name_info *lookup_name,
4306 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4307 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
4308 block_search_flags search_flags,
4310 enum search_domain kind)
4312 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
4314 /* index_table is NULL if OBJF_READNOW. */
4315 if (!per_objfile->per_bfd->index_table)
4318 dw_expand_symtabs_matching_file_matcher (per_objfile, file_matcher);
4320 /* This invariant is documented in quick-functions.h. */
4321 gdb_assert (lookup_name != nullptr || symbol_matcher == nullptr);
4322 if (lookup_name == nullptr)
4324 for (const auto &per_cu : per_objfile->per_bfd->all_comp_units)
4328 if (!dw2_expand_symtabs_matching_one (per_cu.get (), per_objfile,
4336 mapped_index &index = *per_objfile->per_bfd->index_table;
4339 = dw2_expand_symtabs_matching_symbol (index, *lookup_name,
4341 [&] (offset_type idx)
4343 if (!dw2_expand_marked_cus (per_objfile, idx, file_matcher,
4344 expansion_notify, search_flags, kind))
4352 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
4355 static struct compunit_symtab *
4356 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4361 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4362 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4365 if (cust->includes == NULL)
4368 for (i = 0; cust->includes[i]; ++i)
4370 struct compunit_symtab *s = cust->includes[i];
4372 s = recursively_find_pc_sect_compunit_symtab (s, pc);
4380 struct compunit_symtab *
4381 dwarf2_base_index_functions::find_pc_sect_compunit_symtab
4382 (struct objfile *objfile,
4383 struct bound_minimal_symbol msymbol,
4385 struct obj_section *section,
4388 struct dwarf2_per_cu_data *data;
4389 struct compunit_symtab *result;
4391 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
4392 if (per_objfile->per_bfd->index_addrmap == nullptr)
4395 CORE_ADDR baseaddr = objfile->text_section_offset ();
4396 data = ((struct dwarf2_per_cu_data *)
4397 addrmap_find (per_objfile->per_bfd->index_addrmap,
4402 if (warn_if_readin && per_objfile->symtab_set_p (data))
4403 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
4404 paddress (objfile->arch (), pc));
4406 result = recursively_find_pc_sect_compunit_symtab
4407 (dw2_instantiate_symtab (data, per_objfile, false), pc);
4409 gdb_assert (result != NULL);
4414 dwarf2_base_index_functions::map_symbol_filenames
4415 (struct objfile *objfile,
4416 gdb::function_view<symbol_filename_ftype> fun,
4419 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
4421 /* Use caches to ensure we only call FUN once for each filename. */
4422 filename_seen_cache filenames_cache;
4423 std::unordered_set<quick_file_names *> qfn_cache;
4425 /* The rule is CUs specify all the files, including those used by any TU,
4426 so there's no need to scan TUs here. We can ignore file names coming
4427 from already-expanded CUs. It is possible that an expanded CU might
4428 reuse the file names data from a currently unexpanded CU, in this
4429 case we don't want to report the files from the unexpanded CU. */
4431 for (const auto &per_cu : per_objfile->per_bfd->all_comp_units)
4433 if (per_objfile->symtab_set_p (per_cu.get ()))
4435 if (per_cu->v.quick->file_names != nullptr)
4436 qfn_cache.insert (per_cu->v.quick->file_names);
4440 for (const auto &per_cu : per_objfile->per_bfd->all_comp_units)
4442 /* We only need to look at symtabs not already expanded. */
4443 if (per_objfile->symtab_set_p (per_cu.get ()))
4446 quick_file_names *file_data = dw2_get_file_names (per_cu.get (),
4448 if (file_data == nullptr
4449 || qfn_cache.find (file_data) != qfn_cache.end ())
4452 for (int j = 0; j < file_data->num_file_names; ++j)
4454 const char *filename = file_data->file_names[j];
4455 filenames_cache.seen (filename);
4459 filenames_cache.traverse ([&] (const char *filename)
4461 gdb::unique_xmalloc_ptr<char> this_real_name;
4464 this_real_name = gdb_realpath (filename);
4465 fun (filename, this_real_name.get ());
4470 dwarf2_base_index_functions::has_symbols (struct objfile *objfile)
4475 /* See quick_symbol_functions::has_unexpanded_symtabs in quick-symbol.h. */
4478 dwarf2_base_index_functions::has_unexpanded_symtabs (struct objfile *objfile)
4480 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
4482 for (const auto &per_cu : per_objfile->per_bfd->all_comp_units)
4484 /* Is this already expanded? */
4485 if (per_objfile->symtab_set_p (per_cu.get ()))
4488 /* It has not yet been expanded. */
4495 /* DWARF-5 debug_names reader. */
4497 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension. */
4498 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
4500 /* A helper function that reads the .debug_names section in SECTION
4501 and fills in MAP. FILENAME is the name of the file containing the
4502 section; it is used for error reporting.
4504 Returns true if all went well, false otherwise. */
4507 read_debug_names_from_section (struct objfile *objfile,
4508 const char *filename,
4509 struct dwarf2_section_info *section,
4510 mapped_debug_names &map)
4512 if (section->empty ())
4515 /* Older elfutils strip versions could keep the section in the main
4516 executable while splitting it for the separate debug info file. */
4517 if ((section->get_flags () & SEC_HAS_CONTENTS) == 0)
4520 section->read (objfile);
4522 map.dwarf5_byte_order = gdbarch_byte_order (objfile->arch ());
4524 const gdb_byte *addr = section->buffer;
4526 bfd *const abfd = section->get_bfd_owner ();
4528 unsigned int bytes_read;
4529 LONGEST length = read_initial_length (abfd, addr, &bytes_read);
4532 map.dwarf5_is_dwarf64 = bytes_read != 4;
4533 map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
4534 if (bytes_read + length != section->size)
4536 /* There may be multiple per-CU indices. */
4537 warning (_("Section .debug_names in %s length %s does not match "
4538 "section length %s, ignoring .debug_names."),
4539 filename, plongest (bytes_read + length),
4540 pulongest (section->size));
4544 /* The version number. */
4545 uint16_t version = read_2_bytes (abfd, addr);
4549 warning (_("Section .debug_names in %s has unsupported version %d, "
4550 "ignoring .debug_names."),
4556 uint16_t padding = read_2_bytes (abfd, addr);
4560 warning (_("Section .debug_names in %s has unsupported padding %d, "
4561 "ignoring .debug_names."),
4566 /* comp_unit_count - The number of CUs in the CU list. */
4567 map.cu_count = read_4_bytes (abfd, addr);
4570 /* local_type_unit_count - The number of TUs in the local TU
4572 map.tu_count = read_4_bytes (abfd, addr);
4575 /* foreign_type_unit_count - The number of TUs in the foreign TU
4577 uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
4579 if (foreign_tu_count != 0)
4581 warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
4582 "ignoring .debug_names."),
4583 filename, static_cast<unsigned long> (foreign_tu_count));
4587 /* bucket_count - The number of hash buckets in the hash lookup
4589 map.bucket_count = read_4_bytes (abfd, addr);
4592 /* name_count - The number of unique names in the index. */
4593 map.name_count = read_4_bytes (abfd, addr);
4596 /* abbrev_table_size - The size in bytes of the abbreviations
4598 uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
4601 /* augmentation_string_size - The size in bytes of the augmentation
4602 string. This value is rounded up to a multiple of 4. */
4603 uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
4605 map.augmentation_is_gdb = ((augmentation_string_size
4606 == sizeof (dwarf5_augmentation))
4607 && memcmp (addr, dwarf5_augmentation,
4608 sizeof (dwarf5_augmentation)) == 0);
4609 augmentation_string_size += (-augmentation_string_size) & 3;
4610 addr += augmentation_string_size;
4613 map.cu_table_reordered = addr;
4614 addr += map.cu_count * map.offset_size;
4616 /* List of Local TUs */
4617 map.tu_table_reordered = addr;
4618 addr += map.tu_count * map.offset_size;
4620 /* Hash Lookup Table */
4621 map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
4622 addr += map.bucket_count * 4;
4623 map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
4624 addr += map.name_count * 4;
4627 map.name_table_string_offs_reordered = addr;
4628 addr += map.name_count * map.offset_size;
4629 map.name_table_entry_offs_reordered = addr;
4630 addr += map.name_count * map.offset_size;
4632 const gdb_byte *abbrev_table_start = addr;
4635 const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
4640 const auto insertpair
4641 = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
4642 if (!insertpair.second)
4644 warning (_("Section .debug_names in %s has duplicate index %s, "
4645 "ignoring .debug_names."),
4646 filename, pulongest (index_num));
4649 mapped_debug_names::index_val &indexval = insertpair.first->second;
4650 indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
4655 mapped_debug_names::index_val::attr attr;
4656 attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
4658 attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
4660 if (attr.form == DW_FORM_implicit_const)
4662 attr.implicit_const = read_signed_leb128 (abfd, addr,
4666 if (attr.dw_idx == 0 && attr.form == 0)
4668 indexval.attr_vec.push_back (std::move (attr));
4671 if (addr != abbrev_table_start + abbrev_table_size)
4673 warning (_("Section .debug_names in %s has abbreviation_table "
4674 "of size %s vs. written as %u, ignoring .debug_names."),
4675 filename, plongest (addr - abbrev_table_start),
4679 map.entry_pool = addr;
4684 /* A helper for create_cus_from_debug_names that handles the MAP's CU
4688 create_cus_from_debug_names_list (dwarf2_per_bfd *per_bfd,
4689 const mapped_debug_names &map,
4690 dwarf2_section_info §ion,
4693 if (!map.augmentation_is_gdb)
4695 for (uint32_t i = 0; i < map.cu_count; ++i)
4697 sect_offset sect_off
4698 = (sect_offset) (extract_unsigned_integer
4699 (map.cu_table_reordered + i * map.offset_size,
4701 map.dwarf5_byte_order));
4702 /* We don't know the length of the CU, because the CU list in a
4703 .debug_names index can be incomplete, so we can't use the start
4704 of the next CU as end of this CU. We create the CUs here with
4705 length 0, and in cutu_reader::cutu_reader we'll fill in the
4707 dwarf2_per_cu_data_up per_cu
4708 = create_cu_from_index_list (per_bfd, §ion, is_dwz,
4710 per_bfd->all_comp_units.push_back (std::move (per_cu));
4715 sect_offset sect_off_prev;
4716 for (uint32_t i = 0; i <= map.cu_count; ++i)
4718 sect_offset sect_off_next;
4719 if (i < map.cu_count)
4722 = (sect_offset) (extract_unsigned_integer
4723 (map.cu_table_reordered + i * map.offset_size,
4725 map.dwarf5_byte_order));
4728 sect_off_next = (sect_offset) section.size;
4731 const ULONGEST length = sect_off_next - sect_off_prev;
4732 dwarf2_per_cu_data_up per_cu
4733 = create_cu_from_index_list (per_bfd, §ion, is_dwz,
4734 sect_off_prev, length);
4735 per_bfd->all_comp_units.push_back (std::move (per_cu));
4737 sect_off_prev = sect_off_next;
4741 /* Read the CU list from the mapped index, and use it to create all
4742 the CU objects for this dwarf2_per_objfile. */
4745 create_cus_from_debug_names (dwarf2_per_bfd *per_bfd,
4746 const mapped_debug_names &map,
4747 const mapped_debug_names &dwz_map)
4749 gdb_assert (per_bfd->all_comp_units.empty ());
4750 per_bfd->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
4752 create_cus_from_debug_names_list (per_bfd, map, per_bfd->info,
4753 false /* is_dwz */);
4755 if (dwz_map.cu_count == 0)
4758 dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
4759 create_cus_from_debug_names_list (per_bfd, dwz_map, dwz->info,
4763 /* Read .debug_names. If everything went ok, initialize the "quick"
4764 elements of all the CUs and return true. Otherwise, return false. */
4767 dwarf2_read_debug_names (dwarf2_per_objfile *per_objfile)
4769 std::unique_ptr<mapped_debug_names> map (new mapped_debug_names);
4770 mapped_debug_names dwz_map;
4771 struct objfile *objfile = per_objfile->objfile;
4772 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
4774 if (!read_debug_names_from_section (objfile, objfile_name (objfile),
4775 &per_bfd->debug_names, *map))
4778 /* Don't use the index if it's empty. */
4779 if (map->name_count == 0)
4782 /* If there is a .dwz file, read it so we can get its CU list as
4784 dwz_file *dwz = dwarf2_get_dwz_file (per_bfd);
4787 if (!read_debug_names_from_section (objfile,
4788 bfd_get_filename (dwz->dwz_bfd.get ()),
4789 &dwz->debug_names, dwz_map))
4791 warning (_("could not read '.debug_names' section from %s; skipping"),
4792 bfd_get_filename (dwz->dwz_bfd.get ()));
4797 create_cus_from_debug_names (per_bfd, *map, dwz_map);
4799 if (map->tu_count != 0)
4801 /* We can only handle a single .debug_types when we have an
4803 if (per_bfd->types.size () != 1)
4806 dwarf2_section_info *section = &per_bfd->types[0];
4808 create_signatured_type_table_from_debug_names
4809 (per_objfile, *map, section, &per_bfd->abbrev);
4812 create_addrmap_from_aranges (per_objfile, &per_bfd->debug_aranges);
4814 per_bfd->debug_names_table = std::move (map);
4815 per_bfd->using_index = 1;
4816 per_bfd->quick_file_names_table =
4817 create_quick_file_names_table (per_bfd->all_comp_units.size ());
4822 /* Type used to manage iterating over all CUs looking for a symbol for
4825 class dw2_debug_names_iterator
4828 dw2_debug_names_iterator (const mapped_debug_names &map,
4829 block_search_flags block_index,
4831 const char *name, dwarf2_per_objfile *per_objfile)
4832 : m_map (map), m_block_index (block_index), m_domain (domain),
4833 m_addr (find_vec_in_debug_names (map, name, per_objfile)),
4834 m_per_objfile (per_objfile)
4837 dw2_debug_names_iterator (const mapped_debug_names &map,
4838 search_domain search, uint32_t namei,
4839 dwarf2_per_objfile *per_objfile,
4840 domain_enum domain = UNDEF_DOMAIN)
4844 m_addr (find_vec_in_debug_names (map, namei, per_objfile)),
4845 m_per_objfile (per_objfile)
4848 dw2_debug_names_iterator (const mapped_debug_names &map,
4849 block_search_flags block_index, domain_enum domain,
4850 uint32_t namei, dwarf2_per_objfile *per_objfile)
4851 : m_map (map), m_block_index (block_index), m_domain (domain),
4852 m_addr (find_vec_in_debug_names (map, namei, per_objfile)),
4853 m_per_objfile (per_objfile)
4856 /* Return the next matching CU or NULL if there are no more. */
4857 dwarf2_per_cu_data *next ();
4860 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
4862 dwarf2_per_objfile *per_objfile);
4863 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
4865 dwarf2_per_objfile *per_objfile);
4867 /* The internalized form of .debug_names. */
4868 const mapped_debug_names &m_map;
4870 /* Restrict the search to these blocks. */
4871 block_search_flags m_block_index = (SEARCH_GLOBAL_BLOCK
4872 | SEARCH_STATIC_BLOCK);
4874 /* The kind of symbol we're looking for. */
4875 const domain_enum m_domain = UNDEF_DOMAIN;
4876 const search_domain m_search = ALL_DOMAIN;
4878 /* The list of CUs from the index entry of the symbol, or NULL if
4880 const gdb_byte *m_addr;
4882 dwarf2_per_objfile *m_per_objfile;
4886 mapped_debug_names::namei_to_name
4887 (uint32_t namei, dwarf2_per_objfile *per_objfile) const
4889 const ULONGEST namei_string_offs
4890 = extract_unsigned_integer ((name_table_string_offs_reordered
4891 + namei * offset_size),
4894 return read_indirect_string_at_offset (per_objfile, namei_string_offs);
4897 /* Find a slot in .debug_names for the object named NAME. If NAME is
4898 found, return pointer to its pool data. If NAME cannot be found,
4902 dw2_debug_names_iterator::find_vec_in_debug_names
4903 (const mapped_debug_names &map, const char *name,
4904 dwarf2_per_objfile *per_objfile)
4906 int (*cmp) (const char *, const char *);
4908 gdb::unique_xmalloc_ptr<char> without_params;
4909 if (current_language->la_language == language_cplus
4910 || current_language->la_language == language_fortran
4911 || current_language->la_language == language_d)
4913 /* NAME is already canonical. Drop any qualifiers as
4914 .debug_names does not contain any. */
4916 if (strchr (name, '(') != NULL)
4918 without_params = cp_remove_params (name);
4919 if (without_params != NULL)
4920 name = without_params.get ();
4924 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
4926 const uint32_t full_hash = dwarf5_djb_hash (name);
4928 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
4929 (map.bucket_table_reordered
4930 + (full_hash % map.bucket_count)), 4,
4931 map.dwarf5_byte_order);
4935 if (namei >= map.name_count)
4937 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
4939 namei, map.name_count,
4940 objfile_name (per_objfile->objfile));
4946 const uint32_t namei_full_hash
4947 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
4948 (map.hash_table_reordered + namei), 4,
4949 map.dwarf5_byte_order);
4950 if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
4953 if (full_hash == namei_full_hash)
4955 const char *const namei_string = map.namei_to_name (namei, per_objfile);
4957 #if 0 /* An expensive sanity check. */
4958 if (namei_full_hash != dwarf5_djb_hash (namei_string))
4960 complaint (_("Wrong .debug_names hash for string at index %u "
4962 namei, objfile_name (dwarf2_per_objfile->objfile));
4967 if (cmp (namei_string, name) == 0)
4969 const ULONGEST namei_entry_offs
4970 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
4971 + namei * map.offset_size),
4972 map.offset_size, map.dwarf5_byte_order);
4973 return map.entry_pool + namei_entry_offs;
4978 if (namei >= map.name_count)
4984 dw2_debug_names_iterator::find_vec_in_debug_names
4985 (const mapped_debug_names &map, uint32_t namei, dwarf2_per_objfile *per_objfile)
4987 if (namei >= map.name_count)
4989 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
4991 namei, map.name_count,
4992 objfile_name (per_objfile->objfile));
4996 const ULONGEST namei_entry_offs
4997 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
4998 + namei * map.offset_size),
4999 map.offset_size, map.dwarf5_byte_order);
5000 return map.entry_pool + namei_entry_offs;
5003 /* See dw2_debug_names_iterator. */
5005 dwarf2_per_cu_data *
5006 dw2_debug_names_iterator::next ()
5011 dwarf2_per_bfd *per_bfd = m_per_objfile->per_bfd;
5012 struct objfile *objfile = m_per_objfile->objfile;
5013 bfd *const abfd = objfile->obfd;
5017 unsigned int bytes_read;
5018 const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5019 m_addr += bytes_read;
5023 const auto indexval_it = m_map.abbrev_map.find (abbrev);
5024 if (indexval_it == m_map.abbrev_map.cend ())
5026 complaint (_("Wrong .debug_names undefined abbrev code %s "
5028 pulongest (abbrev), objfile_name (objfile));
5031 const mapped_debug_names::index_val &indexval = indexval_it->second;
5032 enum class symbol_linkage {
5036 } symbol_linkage_ = symbol_linkage::unknown;
5037 dwarf2_per_cu_data *per_cu = NULL;
5038 for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5043 case DW_FORM_implicit_const:
5044 ull = attr.implicit_const;
5046 case DW_FORM_flag_present:
5050 ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5051 m_addr += bytes_read;
5054 ull = read_4_bytes (abfd, m_addr);
5058 ull = read_8_bytes (abfd, m_addr);
5061 case DW_FORM_ref_sig8:
5062 ull = read_8_bytes (abfd, m_addr);
5066 complaint (_("Unsupported .debug_names form %s [in module %s]"),
5067 dwarf_form_name (attr.form),
5068 objfile_name (objfile));
5071 switch (attr.dw_idx)
5073 case DW_IDX_compile_unit:
5074 /* Don't crash on bad data. */
5075 if (ull >= per_bfd->all_comp_units.size ())
5077 complaint (_(".debug_names entry has bad CU index %s"
5080 objfile_name (objfile));
5083 per_cu = per_bfd->get_cu (ull);
5085 case DW_IDX_type_unit:
5086 /* Don't crash on bad data. */
5087 if (ull >= per_bfd->tu_stats.nr_tus)
5089 complaint (_(".debug_names entry has bad TU index %s"
5092 objfile_name (objfile));
5095 per_cu = per_bfd->get_cu (ull + per_bfd->tu_stats.nr_tus);
5097 case DW_IDX_die_offset:
5098 /* In a per-CU index (as opposed to a per-module index), index
5099 entries without CU attribute implicitly refer to the single CU. */
5101 per_cu = per_bfd->get_cu (0);
5103 case DW_IDX_GNU_internal:
5104 if (!m_map.augmentation_is_gdb)
5106 symbol_linkage_ = symbol_linkage::static_;
5108 case DW_IDX_GNU_external:
5109 if (!m_map.augmentation_is_gdb)
5111 symbol_linkage_ = symbol_linkage::extern_;
5116 /* Skip if already read in. */
5117 if (m_per_objfile->symtab_set_p (per_cu))
5120 /* Check static vs global. */
5121 if (symbol_linkage_ != symbol_linkage::unknown)
5123 if (symbol_linkage_ == symbol_linkage::static_)
5125 if ((m_block_index & SEARCH_STATIC_BLOCK) == 0)
5130 if ((m_block_index & SEARCH_GLOBAL_BLOCK) == 0)
5135 /* Match dw2_symtab_iter_next, symbol_kind
5136 and debug_names::psymbol_tag. */
5140 switch (indexval.dwarf_tag)
5142 case DW_TAG_variable:
5143 case DW_TAG_subprogram:
5144 /* Some types are also in VAR_DOMAIN. */
5145 case DW_TAG_typedef:
5146 case DW_TAG_structure_type:
5153 switch (indexval.dwarf_tag)
5155 case DW_TAG_typedef:
5156 case DW_TAG_structure_type:
5163 switch (indexval.dwarf_tag)
5166 case DW_TAG_variable:
5173 switch (indexval.dwarf_tag)
5185 /* Match dw2_expand_symtabs_matching, symbol_kind and
5186 debug_names::psymbol_tag. */
5189 case VARIABLES_DOMAIN:
5190 switch (indexval.dwarf_tag)
5192 case DW_TAG_variable:
5198 case FUNCTIONS_DOMAIN:
5199 switch (indexval.dwarf_tag)
5201 case DW_TAG_subprogram:
5208 switch (indexval.dwarf_tag)
5210 case DW_TAG_typedef:
5211 case DW_TAG_structure_type:
5217 case MODULES_DOMAIN:
5218 switch (indexval.dwarf_tag)
5232 /* This dumps minimal information about .debug_names. It is called
5233 via "mt print objfiles". The gdb.dwarf2/gdb-index.exp testcase
5234 uses this to verify that .debug_names has been loaded. */
5237 dwarf2_debug_names_index::dump (struct objfile *objfile)
5239 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5241 gdb_assert (per_objfile->per_bfd->using_index);
5242 printf_filtered (".debug_names:");
5243 if (per_objfile->per_bfd->debug_names_table)
5244 printf_filtered (" exists\n");
5246 printf_filtered (" faked for \"readnow\"\n");
5247 printf_filtered ("\n");
5251 dwarf2_debug_names_index::expand_matching_symbols
5252 (struct objfile *objfile,
5253 const lookup_name_info &name, domain_enum domain,
5255 symbol_compare_ftype *ordered_compare)
5257 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5259 /* debug_names_table is NULL if OBJF_READNOW. */
5260 if (!per_objfile->per_bfd->debug_names_table)
5263 mapped_debug_names &map = *per_objfile->per_bfd->debug_names_table;
5264 const block_search_flags block_flags
5265 = global ? SEARCH_GLOBAL_BLOCK : SEARCH_STATIC_BLOCK;
5267 const char *match_name = name.ada ().lookup_name ().c_str ();
5268 auto matcher = [&] (const char *symname)
5270 if (ordered_compare == nullptr)
5272 return ordered_compare (symname, match_name) == 0;
5275 dw2_expand_symtabs_matching_symbol (map, name, matcher,
5276 [&] (offset_type namei)
5278 /* The name was matched, now expand corresponding CUs that were
5280 dw2_debug_names_iterator iter (map, block_flags, domain, namei,
5283 struct dwarf2_per_cu_data *per_cu;
5284 while ((per_cu = iter.next ()) != NULL)
5285 dw2_expand_symtabs_matching_one (per_cu, per_objfile, nullptr,
5292 dwarf2_debug_names_index::expand_symtabs_matching
5293 (struct objfile *objfile,
5294 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5295 const lookup_name_info *lookup_name,
5296 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5297 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5298 block_search_flags search_flags,
5300 enum search_domain kind)
5302 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5304 /* debug_names_table is NULL if OBJF_READNOW. */
5305 if (!per_objfile->per_bfd->debug_names_table)
5308 dw_expand_symtabs_matching_file_matcher (per_objfile, file_matcher);
5310 /* This invariant is documented in quick-functions.h. */
5311 gdb_assert (lookup_name != nullptr || symbol_matcher == nullptr);
5312 if (lookup_name == nullptr)
5314 for (const auto &per_cu : per_objfile->per_bfd->all_comp_units)
5318 if (!dw2_expand_symtabs_matching_one (per_cu.get (), per_objfile,
5326 mapped_debug_names &map = *per_objfile->per_bfd->debug_names_table;
5329 = dw2_expand_symtabs_matching_symbol (map, *lookup_name,
5331 [&] (offset_type namei)
5333 /* The name was matched, now expand corresponding CUs that were
5335 dw2_debug_names_iterator iter (map, kind, namei, per_objfile, domain);
5337 struct dwarf2_per_cu_data *per_cu;
5338 while ((per_cu = iter.next ()) != NULL)
5339 if (!dw2_expand_symtabs_matching_one (per_cu, per_objfile,
5349 /* Get the content of the .gdb_index section of OBJ. SECTION_OWNER should point
5350 to either a dwarf2_per_bfd or dwz_file object. */
5352 template <typename T>
5353 static gdb::array_view<const gdb_byte>
5354 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
5356 dwarf2_section_info *section = §ion_owner->gdb_index;
5358 if (section->empty ())
5361 /* Older elfutils strip versions could keep the section in the main
5362 executable while splitting it for the separate debug info file. */
5363 if ((section->get_flags () & SEC_HAS_CONTENTS) == 0)
5366 section->read (obj);
5368 /* dwarf2_section_info::size is a bfd_size_type, while
5369 gdb::array_view works with size_t. On 32-bit hosts, with
5370 --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
5371 is 32-bit. So we need an explicit narrowing conversion here.
5372 This is fine, because it's impossible to allocate or mmap an
5373 array/buffer larger than what size_t can represent. */
5374 return gdb::make_array_view (section->buffer, section->size);
5377 /* Lookup the index cache for the contents of the index associated to
5380 static gdb::array_view<const gdb_byte>
5381 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_bfd *dwarf2_per_bfd)
5383 const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
5384 if (build_id == nullptr)
5387 return global_index_cache.lookup_gdb_index (build_id,
5388 &dwarf2_per_bfd->index_cache_res);
5391 /* Same as the above, but for DWZ. */
5393 static gdb::array_view<const gdb_byte>
5394 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
5396 const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
5397 if (build_id == nullptr)
5400 return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
5403 /* See dwarf2/public.h. */
5406 dwarf2_initialize_objfile (struct objfile *objfile)
5408 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5409 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
5411 dwarf_read_debug_printf ("called");
5413 /* If we're about to read full symbols, don't bother with the
5414 indices. In this case we also don't care if some other debug
5415 format is making psymtabs, because they are all about to be
5417 if ((objfile->flags & OBJF_READNOW))
5419 dwarf_read_debug_printf ("readnow requested");
5421 /* When using READNOW, the using_index flag (set below) indicates that
5422 PER_BFD was already initialized, when we loaded some other objfile. */
5423 if (per_bfd->using_index)
5425 dwarf_read_debug_printf ("using_index already set");
5426 per_objfile->resize_symtabs ();
5427 objfile->qf.push_front (make_dwarf_gdb_index ());
5431 per_bfd->using_index = 1;
5432 create_all_comp_units (per_objfile);
5433 per_bfd->quick_file_names_table
5434 = create_quick_file_names_table (per_bfd->all_comp_units.size ());
5435 per_objfile->resize_symtabs ();
5437 for (int i = 0; i < per_bfd->all_comp_units.size (); ++i)
5439 dwarf2_per_cu_data *per_cu = per_bfd->get_cu (i);
5441 per_cu->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
5442 struct dwarf2_per_cu_quick_data);
5445 /* Arrange for gdb to see the "quick" functions. However, these
5446 functions will be no-ops because we will have expanded all
5448 objfile->qf.push_front (make_dwarf_gdb_index ());
5452 /* Was a debug names index already read when we processed an objfile sharing
5454 if (per_bfd->debug_names_table != nullptr)
5456 dwarf_read_debug_printf ("re-using shared debug names table");
5457 per_objfile->resize_symtabs ();
5458 objfile->qf.push_front (make_dwarf_debug_names ());
5462 /* Was a GDB index already read when we processed an objfile sharing
5464 if (per_bfd->index_table != nullptr)
5466 dwarf_read_debug_printf ("re-using shared index table");
5467 per_objfile->resize_symtabs ();
5468 objfile->qf.push_front (make_dwarf_gdb_index ());
5472 /* There might already be partial symtabs built for this BFD. This happens
5473 when loading the same binary twice with the index-cache enabled. If so,
5474 don't try to read an index. The objfile / per_objfile initialization will
5475 be completed in dwarf2_build_psymtabs, in the standard partial symtabs
5477 if (per_bfd->partial_symtabs != nullptr)
5479 dwarf_read_debug_printf ("re-using shared partial symtabs");
5480 objfile->qf.push_front (make_lazy_dwarf_reader ());
5484 if (dwarf2_read_debug_names (per_objfile))
5486 dwarf_read_debug_printf ("found debug names");
5487 per_objfile->resize_symtabs ();
5488 objfile->qf.push_front (make_dwarf_debug_names ());
5492 if (dwarf2_read_gdb_index (per_objfile,
5493 get_gdb_index_contents_from_section<struct dwarf2_per_bfd>,
5494 get_gdb_index_contents_from_section<dwz_file>))
5496 dwarf_read_debug_printf ("found gdb index from file");
5497 per_objfile->resize_symtabs ();
5498 objfile->qf.push_front (make_dwarf_gdb_index ());
5502 /* ... otherwise, try to find the index in the index cache. */
5503 if (dwarf2_read_gdb_index (per_objfile,
5504 get_gdb_index_contents_from_cache,
5505 get_gdb_index_contents_from_cache_dwz))
5507 dwarf_read_debug_printf ("found gdb index from cache");
5508 global_index_cache.hit ();
5509 per_objfile->resize_symtabs ();
5510 objfile->qf.push_front (make_dwarf_gdb_index ());
5514 global_index_cache.miss ();
5515 objfile->qf.push_front (make_lazy_dwarf_reader ());
5520 /* Build a partial symbol table. */
5523 dwarf2_build_psymtabs (struct objfile *objfile, psymbol_functions *psf)
5525 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
5526 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
5528 if (per_bfd->partial_symtabs != nullptr)
5530 /* Partial symbols were already read, so now we can simply
5534 psf = new psymbol_functions (per_bfd->partial_symtabs);
5535 objfile->qf.emplace_front (psf);
5538 psf->set_partial_symtabs (per_bfd->partial_symtabs);
5539 per_objfile->resize_symtabs ();
5545 psf = new psymbol_functions;
5546 objfile->qf.emplace_front (psf);
5548 const std::shared_ptr<psymtab_storage> &partial_symtabs
5549 = psf->get_partial_symtabs ();
5551 /* Set the local reference to partial symtabs, so that we don't try
5552 to read them again if reading another objfile with the same BFD.
5553 If we can't in fact share, this won't make a difference anyway as
5554 the dwarf2_per_bfd object won't be shared. */
5555 per_bfd->partial_symtabs = partial_symtabs;
5559 /* This isn't really ideal: all the data we allocate on the
5560 objfile's obstack is still uselessly kept around. However,
5561 freeing it seems unsafe. */
5562 psymtab_discarder psymtabs (partial_symtabs.get ());
5563 dwarf2_build_psymtabs_hard (per_objfile);
5566 per_objfile->resize_symtabs ();
5568 /* (maybe) store an index in the cache. */
5569 global_index_cache.store (per_objfile);
5571 catch (const gdb_exception_error &except)
5573 exception_print (gdb_stderr, except);
5577 /* Find the base address of the compilation unit for range lists and
5578 location lists. It will normally be specified by DW_AT_low_pc.
5579 In DWARF-3 draft 4, the base address could be overridden by
5580 DW_AT_entry_pc. It's been removed, but GCC still uses this for
5581 compilation units with discontinuous ranges. */
5584 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
5586 struct attribute *attr;
5588 cu->base_address.reset ();
5590 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
5591 if (attr != nullptr)
5592 cu->base_address = attr->as_address ();
5595 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
5596 if (attr != nullptr)
5597 cu->base_address = attr->as_address ();
5601 /* Helper function that returns the proper abbrev section for
5604 static struct dwarf2_section_info *
5605 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
5607 struct dwarf2_section_info *abbrev;
5608 dwarf2_per_bfd *per_bfd = this_cu->per_bfd;
5610 if (this_cu->is_dwz)
5611 abbrev = &dwarf2_get_dwz_file (per_bfd, true)->abbrev;
5613 abbrev = &per_bfd->abbrev;
5618 /* Fetch the abbreviation table offset from a comp or type unit header. */
5621 read_abbrev_offset (dwarf2_per_objfile *per_objfile,
5622 struct dwarf2_section_info *section,
5623 sect_offset sect_off)
5625 bfd *abfd = section->get_bfd_owner ();
5626 const gdb_byte *info_ptr;
5627 unsigned int initial_length_size, offset_size;
5630 section->read (per_objfile->objfile);
5631 info_ptr = section->buffer + to_underlying (sect_off);
5632 read_initial_length (abfd, info_ptr, &initial_length_size);
5633 offset_size = initial_length_size == 4 ? 4 : 8;
5634 info_ptr += initial_length_size;
5636 version = read_2_bytes (abfd, info_ptr);
5640 /* Skip unit type and address size. */
5644 return (sect_offset) read_offset (abfd, info_ptr, offset_size);
5647 /* A partial symtab that is used only for include files. */
5648 struct dwarf2_include_psymtab : public partial_symtab
5650 dwarf2_include_psymtab (const char *filename,
5651 psymtab_storage *partial_symtabs,
5652 objfile_per_bfd_storage *objfile_per_bfd)
5653 : partial_symtab (filename, partial_symtabs, objfile_per_bfd)
5657 void read_symtab (struct objfile *objfile) override
5659 /* It's an include file, no symbols to read for it.
5660 Everything is in the includer symtab. */
5662 /* The expansion of a dwarf2_include_psymtab is just a trigger for
5663 expansion of the includer psymtab. We use the dependencies[0] field to
5664 model the includer. But if we go the regular route of calling
5665 expand_psymtab here, and having expand_psymtab call expand_dependencies
5666 to expand the includer, we'll only use expand_psymtab on the includer
5667 (making it a non-toplevel psymtab), while if we expand the includer via
5668 another path, we'll use read_symtab (making it a toplevel psymtab).
5669 So, don't pretend a dwarf2_include_psymtab is an actual toplevel
5670 psymtab, and trigger read_symtab on the includer here directly. */
5671 includer ()->read_symtab (objfile);
5674 void expand_psymtab (struct objfile *objfile) override
5676 /* This is not called by read_symtab, and should not be called by any
5677 expand_dependencies. */
5681 bool readin_p (struct objfile *objfile) const override
5683 return includer ()->readin_p (objfile);
5686 compunit_symtab *get_compunit_symtab (struct objfile *objfile) const override
5692 partial_symtab *includer () const
5694 /* An include psymtab has exactly one dependency: the psymtab that
5696 gdb_assert (this->number_of_dependencies == 1);
5697 return this->dependencies[0];
5701 /* Allocate a new partial symtab for file named NAME and mark this new
5702 partial symtab as being an include of PST. */
5705 dwarf2_create_include_psymtab (dwarf2_per_bfd *per_bfd,
5707 dwarf2_psymtab *pst,
5708 psymtab_storage *partial_symtabs,
5709 objfile_per_bfd_storage *objfile_per_bfd)
5711 dwarf2_include_psymtab *subpst
5712 = new dwarf2_include_psymtab (name, partial_symtabs, objfile_per_bfd);
5714 if (!IS_ABSOLUTE_PATH (subpst->filename))
5715 subpst->dirname = pst->dirname;
5717 subpst->dependencies = per_bfd->partial_symtabs->allocate_dependencies (1);
5718 subpst->dependencies[0] = pst;
5719 subpst->number_of_dependencies = 1;
5722 /* Read the Line Number Program data and extract the list of files
5723 included by the source file represented by PST. Build an include
5724 partial symtab for each of these included files. */
5727 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
5728 struct die_info *die,
5729 const file_and_directory &fnd,
5730 dwarf2_psymtab *pst)
5733 struct attribute *attr;
5735 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
5736 if (attr != nullptr && attr->form_is_unsigned ())
5737 lh = dwarf_decode_line_header ((sect_offset) attr->as_unsigned (), cu);
5739 return; /* No linetable, so no includes. */
5741 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). Also note
5742 that we pass in the raw text_low here; that is ok because we're
5743 only decoding the line table to make include partial symtabs, and
5744 so the addresses aren't really used. */
5745 dwarf_decode_lines (lh.get (), fnd, cu, pst,
5746 pst->raw_text_low (), 1);
5750 hash_signatured_type (const void *item)
5752 const struct signatured_type *sig_type
5753 = (const struct signatured_type *) item;
5755 /* This drops the top 32 bits of the signature, but is ok for a hash. */
5756 return sig_type->signature;
5760 eq_signatured_type (const void *item_lhs, const void *item_rhs)
5762 const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
5763 const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
5765 return lhs->signature == rhs->signature;
5768 /* Allocate a hash table for signatured types. */
5771 allocate_signatured_type_table ()
5773 return htab_up (htab_create_alloc (41,
5774 hash_signatured_type,
5776 NULL, xcalloc, xfree));
5779 /* A helper for create_debug_types_hash_table. Read types from SECTION
5780 and fill them into TYPES_HTAB. It will process only type units,
5781 therefore DW_UT_type. */
5784 create_debug_type_hash_table (dwarf2_per_objfile *per_objfile,
5785 struct dwo_file *dwo_file,
5786 dwarf2_section_info *section, htab_up &types_htab,
5787 rcuh_kind section_kind)
5789 struct objfile *objfile = per_objfile->objfile;
5790 struct dwarf2_section_info *abbrev_section;
5792 const gdb_byte *info_ptr, *end_ptr;
5794 abbrev_section = &dwo_file->sections.abbrev;
5796 dwarf_read_debug_printf ("Reading %s for %s",
5797 section->get_name (),
5798 abbrev_section->get_file_name ());
5800 section->read (objfile);
5801 info_ptr = section->buffer;
5803 if (info_ptr == NULL)
5806 /* We can't set abfd until now because the section may be empty or
5807 not present, in which case the bfd is unknown. */
5808 abfd = section->get_bfd_owner ();
5810 /* We don't use cutu_reader here because we don't need to read
5811 any dies: the signature is in the header. */
5813 end_ptr = info_ptr + section->size;
5814 while (info_ptr < end_ptr)
5816 signatured_type_up sig_type;
5817 struct dwo_unit *dwo_tu;
5819 const gdb_byte *ptr = info_ptr;
5820 struct comp_unit_head header;
5821 unsigned int length;
5823 sect_offset sect_off = (sect_offset) (ptr - section->buffer);
5825 /* Initialize it due to a false compiler warning. */
5826 header.signature = -1;
5827 header.type_cu_offset_in_tu = (cu_offset) -1;
5829 /* We need to read the type's signature in order to build the hash
5830 table, but we don't need anything else just yet. */
5832 ptr = read_and_check_comp_unit_head (per_objfile, &header, section,
5833 abbrev_section, ptr, section_kind);
5835 length = header.get_length ();
5837 /* Skip dummy type units. */
5838 if (ptr >= info_ptr + length
5839 || peek_abbrev_code (abfd, ptr) == 0
5840 || (header.unit_type != DW_UT_type
5841 && header.unit_type != DW_UT_split_type))
5847 if (types_htab == NULL)
5848 types_htab = allocate_dwo_unit_table ();
5850 dwo_tu = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, dwo_unit);
5851 dwo_tu->dwo_file = dwo_file;
5852 dwo_tu->signature = header.signature;
5853 dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
5854 dwo_tu->section = section;
5855 dwo_tu->sect_off = sect_off;
5856 dwo_tu->length = length;
5858 slot = htab_find_slot (types_htab.get (), dwo_tu, INSERT);
5859 gdb_assert (slot != NULL);
5861 complaint (_("debug type entry at offset %s is duplicate to"
5862 " the entry at offset %s, signature %s"),
5863 sect_offset_str (sect_off),
5864 sect_offset_str (dwo_tu->sect_off),
5865 hex_string (header.signature));
5868 dwarf_read_debug_printf_v (" offset %s, signature %s",
5869 sect_offset_str (sect_off),
5870 hex_string (header.signature));
5876 /* Create the hash table of all entries in the .debug_types
5877 (or .debug_types.dwo) section(s).
5878 DWO_FILE is a pointer to the DWO file object.
5880 The result is a pointer to the hash table or NULL if there are no types.
5882 Note: This function processes DWO files only, not DWP files. */
5885 create_debug_types_hash_table (dwarf2_per_objfile *per_objfile,
5886 struct dwo_file *dwo_file,
5887 gdb::array_view<dwarf2_section_info> type_sections,
5888 htab_up &types_htab)
5890 for (dwarf2_section_info §ion : type_sections)
5891 create_debug_type_hash_table (per_objfile, dwo_file, §ion, types_htab,
5895 /* Add an entry for signature SIG to dwarf2_per_objfile->per_bfd->signatured_types.
5896 If SLOT is non-NULL, it is the entry to use in the hash table.
5897 Otherwise we find one. */
5899 static struct signatured_type *
5900 add_type_unit (dwarf2_per_objfile *per_objfile, ULONGEST sig, void **slot)
5902 if (per_objfile->per_bfd->all_comp_units.size ()
5903 == per_objfile->per_bfd->all_comp_units.capacity ())
5904 ++per_objfile->per_bfd->tu_stats.nr_all_type_units_reallocs;
5906 signatured_type_up sig_type_holder
5907 = per_objfile->per_bfd->allocate_signatured_type (sig);
5908 signatured_type *sig_type = sig_type_holder.get ();
5910 per_objfile->resize_symtabs ();
5912 per_objfile->per_bfd->all_comp_units.emplace_back
5913 (sig_type_holder.release ());
5914 if (per_objfile->per_bfd->using_index)
5917 OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack,
5918 struct dwarf2_per_cu_quick_data);
5923 slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
5926 gdb_assert (*slot == NULL);
5928 /* The rest of sig_type must be filled in by the caller. */
5932 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
5933 Fill in SIG_ENTRY with DWO_ENTRY. */
5936 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile *per_objfile,
5937 struct signatured_type *sig_entry,
5938 struct dwo_unit *dwo_entry)
5940 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
5942 /* Make sure we're not clobbering something we don't expect to. */
5943 gdb_assert (! sig_entry->queued);
5944 gdb_assert (per_objfile->get_cu (sig_entry) == NULL);
5945 if (per_bfd->using_index)
5947 gdb_assert (sig_entry->v.quick != NULL);
5948 gdb_assert (!per_objfile->symtab_set_p (sig_entry));
5951 gdb_assert (sig_entry->v.psymtab == NULL);
5952 gdb_assert (sig_entry->signature == dwo_entry->signature);
5953 gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
5954 gdb_assert (sig_entry->type_unit_group == NULL);
5955 gdb_assert (sig_entry->dwo_unit == NULL);
5957 sig_entry->section = dwo_entry->section;
5958 sig_entry->sect_off = dwo_entry->sect_off;
5959 sig_entry->length = dwo_entry->length;
5960 sig_entry->reading_dwo_directly = 1;
5961 sig_entry->per_bfd = per_bfd;
5962 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
5963 sig_entry->dwo_unit = dwo_entry;
5966 /* Subroutine of lookup_signatured_type.
5967 If we haven't read the TU yet, create the signatured_type data structure
5968 for a TU to be read in directly from a DWO file, bypassing the stub.
5969 This is the "Stay in DWO Optimization": When there is no DWP file and we're
5970 using .gdb_index, then when reading a CU we want to stay in the DWO file
5971 containing that CU. Otherwise we could end up reading several other DWO
5972 files (due to comdat folding) to process the transitive closure of all the
5973 mentioned TUs, and that can be slow. The current DWO file will have every
5974 type signature that it needs.
5975 We only do this for .gdb_index because in the psymtab case we already have
5976 to read all the DWOs to build the type unit groups. */
5978 static struct signatured_type *
5979 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
5981 dwarf2_per_objfile *per_objfile = cu->per_objfile;
5982 struct dwo_file *dwo_file;
5983 struct dwo_unit find_dwo_entry, *dwo_entry;
5986 gdb_assert (cu->dwo_unit && per_objfile->per_bfd->using_index);
5988 /* If TU skeletons have been removed then we may not have read in any
5990 if (per_objfile->per_bfd->signatured_types == NULL)
5991 per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
5993 /* We only ever need to read in one copy of a signatured type.
5994 Use the global signatured_types array to do our own comdat-folding
5995 of types. If this is the first time we're reading this TU, and
5996 the TU has an entry in .gdb_index, replace the recorded data from
5997 .gdb_index with this TU. */
5999 signatured_type find_sig_entry (sig);
6000 slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
6001 &find_sig_entry, INSERT);
6002 signatured_type *sig_entry = (struct signatured_type *) *slot;
6004 /* We can get here with the TU already read, *or* in the process of being
6005 read. Don't reassign the global entry to point to this DWO if that's
6006 the case. Also note that if the TU is already being read, it may not
6007 have come from a DWO, the program may be a mix of Fission-compiled
6008 code and non-Fission-compiled code. */
6010 /* Have we already tried to read this TU?
6011 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6012 needn't exist in the global table yet). */
6013 if (sig_entry != NULL && sig_entry->tu_read)
6016 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
6017 dwo_unit of the TU itself. */
6018 dwo_file = cu->dwo_unit->dwo_file;
6020 /* Ok, this is the first time we're reading this TU. */
6021 if (dwo_file->tus == NULL)
6023 find_dwo_entry.signature = sig;
6024 dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus.get (),
6026 if (dwo_entry == NULL)
6029 /* If the global table doesn't have an entry for this TU, add one. */
6030 if (sig_entry == NULL)
6031 sig_entry = add_type_unit (per_objfile, sig, slot);
6033 fill_in_sig_entry_from_dwo_entry (per_objfile, sig_entry, dwo_entry);
6034 sig_entry->tu_read = 1;
6038 /* Subroutine of lookup_signatured_type.
6039 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6040 then try the DWP file. If the TU stub (skeleton) has been removed then
6041 it won't be in .gdb_index. */
6043 static struct signatured_type *
6044 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6046 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6047 struct dwp_file *dwp_file = get_dwp_file (per_objfile);
6048 struct dwo_unit *dwo_entry;
6051 gdb_assert (cu->dwo_unit && per_objfile->per_bfd->using_index);
6052 gdb_assert (dwp_file != NULL);
6054 /* If TU skeletons have been removed then we may not have read in any
6056 if (per_objfile->per_bfd->signatured_types == NULL)
6057 per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
6059 signatured_type find_sig_entry (sig);
6060 slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
6061 &find_sig_entry, INSERT);
6062 signatured_type *sig_entry = (struct signatured_type *) *slot;
6064 /* Have we already tried to read this TU?
6065 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6066 needn't exist in the global table yet). */
6067 if (sig_entry != NULL)
6070 if (dwp_file->tus == NULL)
6072 dwo_entry = lookup_dwo_unit_in_dwp (per_objfile, dwp_file, NULL, sig,
6073 1 /* is_debug_types */);
6074 if (dwo_entry == NULL)
6077 sig_entry = add_type_unit (per_objfile, sig, slot);
6078 fill_in_sig_entry_from_dwo_entry (per_objfile, sig_entry, dwo_entry);
6083 /* Lookup a signature based type for DW_FORM_ref_sig8.
6084 Returns NULL if signature SIG is not present in the table.
6085 It is up to the caller to complain about this. */
6087 static struct signatured_type *
6088 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6090 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6092 if (cu->dwo_unit && per_objfile->per_bfd->using_index)
6094 /* We're in a DWO/DWP file, and we're using .gdb_index.
6095 These cases require special processing. */
6096 if (get_dwp_file (per_objfile) == NULL)
6097 return lookup_dwo_signatured_type (cu, sig);
6099 return lookup_dwp_signatured_type (cu, sig);
6103 if (per_objfile->per_bfd->signatured_types == NULL)
6105 signatured_type find_entry (sig);
6106 return ((struct signatured_type *)
6107 htab_find (per_objfile->per_bfd->signatured_types.get (),
6112 /* Low level DIE reading support. */
6114 /* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
6117 init_cu_die_reader (struct die_reader_specs *reader,
6118 struct dwarf2_cu *cu,
6119 struct dwarf2_section_info *section,
6120 struct dwo_file *dwo_file,
6121 struct abbrev_table *abbrev_table)
6123 gdb_assert (section->readin && section->buffer != NULL);
6124 reader->abfd = section->get_bfd_owner ();
6126 reader->dwo_file = dwo_file;
6127 reader->die_section = section;
6128 reader->buffer = section->buffer;
6129 reader->buffer_end = section->buffer + section->size;
6130 reader->abbrev_table = abbrev_table;
6133 /* Subroutine of cutu_reader to simplify it.
6134 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
6135 There's just a lot of work to do, and cutu_reader is big enough
6138 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
6139 from it to the DIE in the DWO. If NULL we are skipping the stub.
6140 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
6141 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
6142 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
6143 STUB_COMP_DIR may be non-NULL.
6144 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE
6145 are filled in with the info of the DIE from the DWO file.
6146 *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
6147 from the dwo. Since *RESULT_READER references this abbrev table, it must be
6148 kept around for at least as long as *RESULT_READER.
6150 The result is non-zero if a valid (non-dummy) DIE was found. */
6153 read_cutu_die_from_dwo (dwarf2_cu *cu,
6154 struct dwo_unit *dwo_unit,
6155 struct die_info *stub_comp_unit_die,
6156 const char *stub_comp_dir,
6157 struct die_reader_specs *result_reader,
6158 const gdb_byte **result_info_ptr,
6159 struct die_info **result_comp_unit_die,
6160 abbrev_table_up *result_dwo_abbrev_table)
6162 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6163 dwarf2_per_cu_data *per_cu = cu->per_cu;
6164 struct objfile *objfile = per_objfile->objfile;
6166 const gdb_byte *begin_info_ptr, *info_ptr;
6167 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
6168 int i,num_extra_attrs;
6169 struct dwarf2_section_info *dwo_abbrev_section;
6170 struct die_info *comp_unit_die;
6172 /* At most one of these may be provided. */
6173 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
6175 /* These attributes aren't processed until later:
6176 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
6177 DW_AT_comp_dir is used now, to find the DWO file, but it is also
6178 referenced later. However, these attributes are found in the stub
6179 which we won't have later. In order to not impose this complication
6180 on the rest of the code, we read them here and copy them to the
6189 if (stub_comp_unit_die != NULL)
6191 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
6193 if (!per_cu->is_debug_types)
6194 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
6195 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
6196 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
6197 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
6198 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
6200 cu->addr_base = stub_comp_unit_die->addr_base ();
6202 /* There should be a DW_AT_GNU_ranges_base attribute here (if needed).
6203 We need the value before we can process DW_AT_ranges values from the
6205 cu->gnu_ranges_base = stub_comp_unit_die->gnu_ranges_base ();
6207 /* For DWARF5: record the DW_AT_rnglists_base value from the skeleton. If
6208 there are attributes of form DW_FORM_rnglistx in the skeleton, they'll
6209 need the rnglists base. Attributes of form DW_FORM_rnglistx in the
6210 split unit don't use it, as the DWO has its own .debug_rnglists.dwo
6212 cu->rnglists_base = stub_comp_unit_die->rnglists_base ();
6214 else if (stub_comp_dir != NULL)
6216 /* Reconstruct the comp_dir attribute to simplify the code below. */
6217 comp_dir = OBSTACK_ZALLOC (&cu->comp_unit_obstack, struct attribute);
6218 comp_dir->name = DW_AT_comp_dir;
6219 comp_dir->form = DW_FORM_string;
6220 comp_dir->set_string_noncanonical (stub_comp_dir);
6223 /* Set up for reading the DWO CU/TU. */
6224 cu->dwo_unit = dwo_unit;
6225 dwarf2_section_info *section = dwo_unit->section;
6226 section->read (objfile);
6227 abfd = section->get_bfd_owner ();
6228 begin_info_ptr = info_ptr = (section->buffer
6229 + to_underlying (dwo_unit->sect_off));
6230 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
6232 if (per_cu->is_debug_types)
6234 signatured_type *sig_type = (struct signatured_type *) per_cu;
6236 info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
6237 section, dwo_abbrev_section,
6238 info_ptr, rcuh_kind::TYPE);
6239 /* This is not an assert because it can be caused by bad debug info. */
6240 if (sig_type->signature != cu->header.signature)
6242 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
6243 " TU at offset %s [in module %s]"),
6244 hex_string (sig_type->signature),
6245 hex_string (cu->header.signature),
6246 sect_offset_str (dwo_unit->sect_off),
6247 bfd_get_filename (abfd));
6249 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
6250 /* For DWOs coming from DWP files, we don't know the CU length
6251 nor the type's offset in the TU until now. */
6252 dwo_unit->length = cu->header.get_length ();
6253 dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
6255 /* Establish the type offset that can be used to lookup the type.
6256 For DWO files, we don't know it until now. */
6257 sig_type->type_offset_in_section
6258 = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
6262 info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
6263 section, dwo_abbrev_section,
6264 info_ptr, rcuh_kind::COMPILE);
6265 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
6266 /* For DWOs coming from DWP files, we don't know the CU length
6268 dwo_unit->length = cu->header.get_length ();
6271 dwo_abbrev_section->read (objfile);
6272 *result_dwo_abbrev_table
6273 = abbrev_table::read (dwo_abbrev_section, cu->header.abbrev_sect_off);
6274 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
6275 result_dwo_abbrev_table->get ());
6277 /* Read in the die, but leave space to copy over the attributes
6278 from the stub. This has the benefit of simplifying the rest of
6279 the code - all the work to maintain the illusion of a single
6280 DW_TAG_{compile,type}_unit DIE is done here. */
6281 num_extra_attrs = ((stmt_list != NULL)
6285 + (comp_dir != NULL));
6286 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
6289 /* Copy over the attributes from the stub to the DIE we just read in. */
6290 comp_unit_die = *result_comp_unit_die;
6291 i = comp_unit_die->num_attrs;
6292 if (stmt_list != NULL)
6293 comp_unit_die->attrs[i++] = *stmt_list;
6295 comp_unit_die->attrs[i++] = *low_pc;
6296 if (high_pc != NULL)
6297 comp_unit_die->attrs[i++] = *high_pc;
6299 comp_unit_die->attrs[i++] = *ranges;
6300 if (comp_dir != NULL)
6301 comp_unit_die->attrs[i++] = *comp_dir;
6302 comp_unit_die->num_attrs += num_extra_attrs;
6304 if (dwarf_die_debug)
6306 fprintf_unfiltered (gdb_stdlog,
6307 "Read die from %s@0x%x of %s:\n",
6308 section->get_name (),
6309 (unsigned) (begin_info_ptr - section->buffer),
6310 bfd_get_filename (abfd));
6311 dump_die (comp_unit_die, dwarf_die_debug);
6314 /* Skip dummy compilation units. */
6315 if (info_ptr >= begin_info_ptr + dwo_unit->length
6316 || peek_abbrev_code (abfd, info_ptr) == 0)
6319 *result_info_ptr = info_ptr;
6323 /* Return the signature of the compile unit, if found. In DWARF 4 and before,
6324 the signature is in the DW_AT_GNU_dwo_id attribute. In DWARF 5 and later, the
6325 signature is part of the header. */
6326 static gdb::optional<ULONGEST>
6327 lookup_dwo_id (struct dwarf2_cu *cu, struct die_info* comp_unit_die)
6329 if (cu->header.version >= 5)
6330 return cu->header.signature;
6331 struct attribute *attr;
6332 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
6333 if (attr == nullptr || !attr->form_is_unsigned ())
6334 return gdb::optional<ULONGEST> ();
6335 return attr->as_unsigned ();
6338 /* Subroutine of cutu_reader to simplify it.
6339 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6340 Returns NULL if the specified DWO unit cannot be found. */
6342 static struct dwo_unit *
6343 lookup_dwo_unit (dwarf2_cu *cu, die_info *comp_unit_die, const char *dwo_name)
6345 dwarf2_per_cu_data *per_cu = cu->per_cu;
6346 struct dwo_unit *dwo_unit;
6347 const char *comp_dir;
6349 gdb_assert (cu != NULL);
6351 /* Yeah, we look dwo_name up again, but it simplifies the code. */
6352 dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
6353 comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
6355 if (per_cu->is_debug_types)
6356 dwo_unit = lookup_dwo_type_unit (cu, dwo_name, comp_dir);
6359 gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
6361 if (!signature.has_value ())
6362 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
6364 dwo_name, bfd_get_filename (per_cu->per_bfd->obfd));
6366 dwo_unit = lookup_dwo_comp_unit (cu, dwo_name, comp_dir, *signature);
6372 /* Subroutine of cutu_reader to simplify it.
6373 See it for a description of the parameters.
6374 Read a TU directly from a DWO file, bypassing the stub. */
6377 cutu_reader::init_tu_and_read_dwo_dies (dwarf2_per_cu_data *this_cu,
6378 dwarf2_per_objfile *per_objfile,
6379 dwarf2_cu *existing_cu)
6381 struct signatured_type *sig_type;
6383 /* Verify we can do the following downcast, and that we have the
6385 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
6386 sig_type = (struct signatured_type *) this_cu;
6387 gdb_assert (sig_type->dwo_unit != NULL);
6391 if (existing_cu != nullptr)
6394 gdb_assert (cu->dwo_unit == sig_type->dwo_unit);
6395 /* There's no need to do the rereading_dwo_cu handling that
6396 cutu_reader does since we don't read the stub. */
6400 /* If an existing_cu is provided, a dwarf2_cu must not exist for this_cu
6401 in per_objfile yet. */
6402 gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
6403 m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
6404 cu = m_new_cu.get ();
6407 /* A future optimization, if needed, would be to use an existing
6408 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
6409 could share abbrev tables. */
6411 if (read_cutu_die_from_dwo (cu, sig_type->dwo_unit,
6412 NULL /* stub_comp_unit_die */,
6413 sig_type->dwo_unit->dwo_file->comp_dir,
6416 &m_dwo_abbrev_table) == 0)
6423 /* Initialize a CU (or TU) and read its DIEs.
6424 If the CU defers to a DWO file, read the DWO file as well.
6426 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
6427 Otherwise the table specified in the comp unit header is read in and used.
6428 This is an optimization for when we already have the abbrev table.
6430 If EXISTING_CU is non-NULL, then use it. Otherwise, a new CU is
6433 cutu_reader::cutu_reader (dwarf2_per_cu_data *this_cu,
6434 dwarf2_per_objfile *per_objfile,
6435 struct abbrev_table *abbrev_table,
6436 dwarf2_cu *existing_cu,
6438 : die_reader_specs {},
6441 struct objfile *objfile = per_objfile->objfile;
6442 struct dwarf2_section_info *section = this_cu->section;
6443 bfd *abfd = section->get_bfd_owner ();
6444 const gdb_byte *begin_info_ptr;
6445 struct signatured_type *sig_type = NULL;
6446 struct dwarf2_section_info *abbrev_section;
6447 /* Non-zero if CU currently points to a DWO file and we need to
6448 reread it. When this happens we need to reread the skeleton die
6449 before we can reread the DWO file (this only applies to CUs, not TUs). */
6450 int rereading_dwo_cu = 0;
6452 if (dwarf_die_debug)
6453 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
6454 this_cu->is_debug_types ? "type" : "comp",
6455 sect_offset_str (this_cu->sect_off));
6457 /* If we're reading a TU directly from a DWO file, including a virtual DWO
6458 file (instead of going through the stub), short-circuit all of this. */
6459 if (this_cu->reading_dwo_directly)
6461 /* Narrow down the scope of possibilities to have to understand. */
6462 gdb_assert (this_cu->is_debug_types);
6463 gdb_assert (abbrev_table == NULL);
6464 init_tu_and_read_dwo_dies (this_cu, per_objfile, existing_cu);
6468 /* This is cheap if the section is already read in. */
6469 section->read (objfile);
6471 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
6473 abbrev_section = get_abbrev_section_for_cu (this_cu);
6477 if (existing_cu != nullptr)
6480 /* If this CU is from a DWO file we need to start over, we need to
6481 refetch the attributes from the skeleton CU.
6482 This could be optimized by retrieving those attributes from when we
6483 were here the first time: the previous comp_unit_die was stored in
6484 comp_unit_obstack. But there's no data yet that we need this
6486 if (cu->dwo_unit != NULL)
6487 rereading_dwo_cu = 1;
6491 /* If an existing_cu is provided, a dwarf2_cu must not exist for this_cu
6492 in per_objfile yet. */
6493 gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
6494 m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
6495 cu = m_new_cu.get ();
6498 /* Get the header. */
6499 if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
6501 /* We already have the header, there's no need to read it in again. */
6502 info_ptr += to_underlying (cu->header.first_die_cu_offset);
6506 if (this_cu->is_debug_types)
6508 info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
6509 section, abbrev_section,
6510 info_ptr, rcuh_kind::TYPE);
6512 /* Since per_cu is the first member of struct signatured_type,
6513 we can go from a pointer to one to a pointer to the other. */
6514 sig_type = (struct signatured_type *) this_cu;
6515 gdb_assert (sig_type->signature == cu->header.signature);
6516 gdb_assert (sig_type->type_offset_in_tu
6517 == cu->header.type_cu_offset_in_tu);
6518 gdb_assert (this_cu->sect_off == cu->header.sect_off);
6520 /* LENGTH has not been set yet for type units if we're
6521 using .gdb_index. */
6522 this_cu->length = cu->header.get_length ();
6524 /* Establish the type offset that can be used to lookup the type. */
6525 sig_type->type_offset_in_section =
6526 this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
6528 this_cu->dwarf_version = cu->header.version;
6532 info_ptr = read_and_check_comp_unit_head (per_objfile, &cu->header,
6533 section, abbrev_section,
6535 rcuh_kind::COMPILE);
6537 gdb_assert (this_cu->sect_off == cu->header.sect_off);
6538 if (this_cu->length == 0)
6539 this_cu->length = cu->header.get_length ();
6541 gdb_assert (this_cu->length == cu->header.get_length ());
6542 this_cu->dwarf_version = cu->header.version;
6546 /* Skip dummy compilation units. */
6547 if (info_ptr >= begin_info_ptr + this_cu->length
6548 || peek_abbrev_code (abfd, info_ptr) == 0)
6554 /* If we don't have them yet, read the abbrevs for this compilation unit.
6555 And if we need to read them now, make sure they're freed when we're
6557 if (abbrev_table != NULL)
6558 gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
6561 abbrev_section->read (objfile);
6562 m_abbrev_table_holder
6563 = abbrev_table::read (abbrev_section, cu->header.abbrev_sect_off);
6564 abbrev_table = m_abbrev_table_holder.get ();
6567 /* Read the top level CU/TU die. */
6568 init_cu_die_reader (this, cu, section, NULL, abbrev_table);
6569 info_ptr = read_full_die (this, &comp_unit_die, info_ptr);
6571 if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
6577 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
6578 from the DWO file. read_cutu_die_from_dwo will allocate the abbreviation
6579 table from the DWO file and pass the ownership over to us. It will be
6580 referenced from READER, so we must make sure to free it after we're done
6583 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
6584 DWO CU, that this test will fail (the attribute will not be present). */
6585 const char *dwo_name = dwarf2_dwo_name (comp_unit_die, cu);
6586 if (dwo_name != nullptr)
6588 struct dwo_unit *dwo_unit;
6589 struct die_info *dwo_comp_unit_die;
6591 if (comp_unit_die->has_children)
6593 complaint (_("compilation unit with DW_AT_GNU_dwo_name"
6594 " has children (offset %s) [in module %s]"),
6595 sect_offset_str (this_cu->sect_off),
6596 bfd_get_filename (abfd));
6598 dwo_unit = lookup_dwo_unit (cu, comp_unit_die, dwo_name);
6599 if (dwo_unit != NULL)
6601 if (read_cutu_die_from_dwo (cu, dwo_unit,
6602 comp_unit_die, NULL,
6605 &m_dwo_abbrev_table) == 0)
6611 comp_unit_die = dwo_comp_unit_die;
6615 /* Yikes, we couldn't find the rest of the DIE, we only have
6616 the stub. A complaint has already been logged. There's
6617 not much more we can do except pass on the stub DIE to
6618 die_reader_func. We don't want to throw an error on bad
6625 cutu_reader::keep ()
6627 /* Done, clean up. */
6628 gdb_assert (!dummy_p);
6629 if (m_new_cu != NULL)
6631 /* Save this dwarf2_cu in the per_objfile. The per_objfile owns it
6633 dwarf2_per_objfile *per_objfile = m_new_cu->per_objfile;
6634 per_objfile->set_cu (m_this_cu, m_new_cu.release ());
6638 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name (DW_AT_dwo_name)
6639 if present. DWO_FILE, if non-NULL, is the DWO file to read (the caller is
6640 assumed to have already done the lookup to find the DWO file).
6642 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
6643 THIS_CU->is_debug_types, but nothing else.
6645 We fill in THIS_CU->length.
6647 THIS_CU->cu is always freed when done.
6648 This is done in order to not leave THIS_CU->cu in a state where we have
6649 to care whether it refers to the "main" CU or the DWO CU.
6651 When parent_cu is passed, it is used to provide a default value for
6652 str_offsets_base and addr_base from the parent. */
6654 cutu_reader::cutu_reader (dwarf2_per_cu_data *this_cu,
6655 dwarf2_per_objfile *per_objfile,
6656 struct dwarf2_cu *parent_cu,
6657 struct dwo_file *dwo_file)
6658 : die_reader_specs {},
6661 struct objfile *objfile = per_objfile->objfile;
6662 struct dwarf2_section_info *section = this_cu->section;
6663 bfd *abfd = section->get_bfd_owner ();
6664 struct dwarf2_section_info *abbrev_section;
6665 const gdb_byte *begin_info_ptr, *info_ptr;
6667 if (dwarf_die_debug)
6668 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
6669 this_cu->is_debug_types ? "type" : "comp",
6670 sect_offset_str (this_cu->sect_off));
6672 gdb_assert (per_objfile->get_cu (this_cu) == nullptr);
6674 abbrev_section = (dwo_file != NULL
6675 ? &dwo_file->sections.abbrev
6676 : get_abbrev_section_for_cu (this_cu));
6678 /* This is cheap if the section is already read in. */
6679 section->read (objfile);
6681 m_new_cu.reset (new dwarf2_cu (this_cu, per_objfile));
6683 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
6684 info_ptr = read_and_check_comp_unit_head (per_objfile, &m_new_cu->header,
6685 section, abbrev_section, info_ptr,
6686 (this_cu->is_debug_types
6688 : rcuh_kind::COMPILE));
6690 if (parent_cu != nullptr)
6692 m_new_cu->str_offsets_base = parent_cu->str_offsets_base;
6693 m_new_cu->addr_base = parent_cu->addr_base;
6695 this_cu->length = m_new_cu->header.get_length ();
6697 /* Skip dummy compilation units. */
6698 if (info_ptr >= begin_info_ptr + this_cu->length
6699 || peek_abbrev_code (abfd, info_ptr) == 0)
6705 abbrev_section->read (objfile);
6706 m_abbrev_table_holder
6707 = abbrev_table::read (abbrev_section, m_new_cu->header.abbrev_sect_off);
6709 init_cu_die_reader (this, m_new_cu.get (), section, dwo_file,
6710 m_abbrev_table_holder.get ());
6711 info_ptr = read_full_die (this, &comp_unit_die, info_ptr);
6715 /* Type Unit Groups.
6717 Type Unit Groups are a way to collapse the set of all TUs (type units) into
6718 a more manageable set. The grouping is done by DW_AT_stmt_list entry
6719 so that all types coming from the same compilation (.o file) are grouped
6720 together. A future step could be to put the types in the same symtab as
6721 the CU the types ultimately came from. */
6724 hash_type_unit_group (const void *item)
6726 const struct type_unit_group *tu_group
6727 = (const struct type_unit_group *) item;
6729 return hash_stmt_list_entry (&tu_group->hash);
6733 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
6735 const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
6736 const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
6738 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
6741 /* Allocate a hash table for type unit groups. */
6744 allocate_type_unit_groups_table ()
6746 return htab_up (htab_create_alloc (3,
6747 hash_type_unit_group,
6749 htab_delete_entry<type_unit_group>,
6753 /* Type units that don't have DW_AT_stmt_list are grouped into their own
6754 partial symtabs. We combine several TUs per psymtab to not let the size
6755 of any one psymtab grow too big. */
6756 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
6757 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
6759 /* Helper routine for get_type_unit_group.
6760 Create the type_unit_group object used to hold one or more TUs. */
6762 static std::unique_ptr<type_unit_group>
6763 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
6765 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6766 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
6768 std::unique_ptr<type_unit_group> tu_group (new type_unit_group);
6769 tu_group->per_bfd = per_bfd;
6771 if (per_bfd->using_index)
6773 tu_group->v.quick = OBSTACK_ZALLOC (&per_bfd->obstack,
6774 struct dwarf2_per_cu_quick_data);
6778 unsigned int line_offset = to_underlying (line_offset_struct);
6779 dwarf2_psymtab *pst;
6782 /* Give the symtab a useful name for debug purposes. */
6783 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
6784 name = string_printf ("<type_units_%d>",
6785 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
6787 name = string_printf ("<type_units_at_0x%x>", line_offset);
6789 pst = create_partial_symtab (tu_group.get (), per_objfile,
6791 pst->anonymous = true;
6794 tu_group->hash.dwo_unit = cu->dwo_unit;
6795 tu_group->hash.line_sect_off = line_offset_struct;
6800 /* Look up the type_unit_group for type unit CU, and create it if necessary.
6801 STMT_LIST is a DW_AT_stmt_list attribute. */
6803 static struct type_unit_group *
6804 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
6806 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6807 struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
6808 struct type_unit_group *tu_group;
6810 unsigned int line_offset;
6811 struct type_unit_group type_unit_group_for_lookup;
6813 if (per_objfile->per_bfd->type_unit_groups == NULL)
6814 per_objfile->per_bfd->type_unit_groups = allocate_type_unit_groups_table ();
6816 /* Do we need to create a new group, or can we use an existing one? */
6818 if (stmt_list != nullptr && stmt_list->form_is_unsigned ())
6820 line_offset = stmt_list->as_unsigned ();
6821 ++tu_stats->nr_symtab_sharers;
6825 /* Ugh, no stmt_list. Rare, but we have to handle it.
6826 We can do various things here like create one group per TU or
6827 spread them over multiple groups to split up the expansion work.
6828 To avoid worst case scenarios (too many groups or too large groups)
6829 we, umm, group them in bunches. */
6830 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
6831 | (tu_stats->nr_stmt_less_type_units
6832 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
6833 ++tu_stats->nr_stmt_less_type_units;
6836 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
6837 type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
6838 slot = htab_find_slot (per_objfile->per_bfd->type_unit_groups.get (),
6839 &type_unit_group_for_lookup, INSERT);
6840 if (*slot == nullptr)
6842 sect_offset line_offset_struct = (sect_offset) line_offset;
6843 std::unique_ptr<type_unit_group> grp
6844 = create_type_unit_group (cu, line_offset_struct);
6845 *slot = grp.release ();
6846 ++tu_stats->nr_symtabs;
6849 tu_group = (struct type_unit_group *) *slot;
6850 gdb_assert (tu_group != nullptr);
6854 /* Partial symbol tables. */
6856 /* Create a psymtab named NAME and assign it to PER_CU.
6858 The caller must fill in the following details:
6859 dirname, textlow, texthigh. */
6861 static dwarf2_psymtab *
6862 create_partial_symtab (dwarf2_per_cu_data *per_cu,
6863 dwarf2_per_objfile *per_objfile,
6867 = new dwarf2_psymtab (name, per_objfile->per_bfd->partial_symtabs.get (),
6868 per_objfile->objfile->per_bfd, per_cu);
6870 pst->psymtabs_addrmap_supported = true;
6872 /* This is the glue that links PST into GDB's symbol API. */
6873 per_cu->v.psymtab = pst;
6878 /* DIE reader function for process_psymtab_comp_unit. */
6881 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
6882 const gdb_byte *info_ptr,
6883 struct die_info *comp_unit_die,
6884 enum language pretend_language)
6886 struct dwarf2_cu *cu = reader->cu;
6887 dwarf2_per_objfile *per_objfile = cu->per_objfile;
6888 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
6889 struct objfile *objfile = per_objfile->objfile;
6890 struct gdbarch *gdbarch = objfile->arch ();
6891 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
6893 CORE_ADDR best_lowpc = 0, best_highpc = 0;
6894 dwarf2_psymtab *pst;
6895 enum pc_bounds_kind cu_bounds_kind;
6897 gdb_assert (! per_cu->is_debug_types);
6899 prepare_one_comp_unit (cu, comp_unit_die, pretend_language);
6901 /* Allocate a new partial symbol table structure. */
6902 gdb::unique_xmalloc_ptr<char> debug_filename;
6903 static const char artificial[] = "<artificial>";
6904 file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
6905 if (strcmp (fnd.name, artificial) == 0)
6907 debug_filename.reset (concat (artificial, "@",
6908 sect_offset_str (per_cu->sect_off),
6910 fnd.name = debug_filename.get ();
6913 pst = create_partial_symtab (per_cu, per_objfile, fnd.name);
6915 /* This must be done before calling dwarf2_build_include_psymtabs. */
6916 pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
6918 baseaddr = objfile->text_section_offset ();
6920 dwarf2_find_base_address (comp_unit_die, cu);
6922 /* Possibly set the default values of LOWPC and HIGHPC from
6924 cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
6925 &best_highpc, cu, pst);
6926 if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
6929 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
6932 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
6934 /* Store the contiguous range if it is not empty; it can be
6935 empty for CUs with no code. */
6936 addrmap_set_empty (per_bfd->partial_symtabs->psymtabs_addrmap,
6940 /* Check if comp unit has_children.
6941 If so, read the rest of the partial symbols from this comp unit.
6942 If not, there's no more debug_info for this comp unit. */
6943 if (comp_unit_die->has_children)
6945 struct partial_die_info *first_die;
6946 CORE_ADDR lowpc, highpc;
6948 lowpc = ((CORE_ADDR) -1);
6949 highpc = ((CORE_ADDR) 0);
6951 first_die = load_partial_dies (reader, info_ptr, 1);
6953 scan_partial_symbols (first_die, &lowpc, &highpc,
6954 cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
6956 /* If we didn't find a lowpc, set it to highpc to avoid
6957 complaints from `maint check'. */
6958 if (lowpc == ((CORE_ADDR) -1))
6961 /* If the compilation unit didn't have an explicit address range,
6962 then use the information extracted from its child dies. */
6963 if (cu_bounds_kind <= PC_BOUNDS_INVALID)
6966 best_highpc = highpc;
6969 pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
6970 best_lowpc + baseaddr)
6972 pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
6973 best_highpc + baseaddr)
6978 if (!cu->per_cu->imported_symtabs_empty ())
6981 int len = cu->per_cu->imported_symtabs_size ();
6983 /* Fill in 'dependencies' here; we fill in 'users' in a
6985 pst->number_of_dependencies = len;
6987 = per_bfd->partial_symtabs->allocate_dependencies (len);
6988 for (i = 0; i < len; ++i)
6990 pst->dependencies[i]
6991 = cu->per_cu->imported_symtabs->at (i)->v.psymtab;
6994 cu->per_cu->imported_symtabs_free ();
6997 /* Get the list of files included in the current compilation unit,
6998 and build a psymtab for each of them. */
6999 dwarf2_build_include_psymtabs (cu, comp_unit_die, fnd, pst);
7001 dwarf_read_debug_printf ("Psymtab for %s unit @%s: %s - %s"
7002 ", %d global, %d static syms",
7003 per_cu->is_debug_types ? "type" : "comp",
7004 sect_offset_str (per_cu->sect_off),
7005 paddress (gdbarch, pst->text_low (objfile)),
7006 paddress (gdbarch, pst->text_high (objfile)),
7007 (int) pst->global_psymbols.size (),
7008 (int) pst->static_psymbols.size ());
7011 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
7012 Process compilation unit THIS_CU for a psymtab. */
7015 process_psymtab_comp_unit (dwarf2_per_cu_data *this_cu,
7016 dwarf2_per_objfile *per_objfile,
7017 bool want_partial_unit,
7018 enum language pretend_language)
7020 /* If this compilation unit was already read in, free the
7021 cached copy in order to read it in again. This is
7022 necessary because we skipped some symbols when we first
7023 read in the compilation unit (see load_partial_dies).
7024 This problem could be avoided, but the benefit is unclear. */
7025 per_objfile->remove_cu (this_cu);
7027 cutu_reader reader (this_cu, per_objfile, nullptr, nullptr, false);
7029 if (reader.comp_unit_die == nullptr)
7032 switch (reader.comp_unit_die->tag)
7034 case DW_TAG_compile_unit:
7035 this_cu->unit_type = DW_UT_compile;
7037 case DW_TAG_partial_unit:
7038 this_cu->unit_type = DW_UT_partial;
7040 case DW_TAG_type_unit:
7041 this_cu->unit_type = DW_UT_type;
7044 error (_("Dwarf Error: unexpected tag '%s' at offset %s [in module %s]"),
7045 dwarf_tag_name (reader.comp_unit_die->tag),
7046 sect_offset_str (reader.cu->per_cu->sect_off),
7047 objfile_name (per_objfile->objfile));
7054 else if (this_cu->is_debug_types)
7055 build_type_psymtabs_reader (&reader, reader.info_ptr,
7056 reader.comp_unit_die);
7057 else if (want_partial_unit
7058 || reader.comp_unit_die->tag != DW_TAG_partial_unit)
7059 process_psymtab_comp_unit_reader (&reader, reader.info_ptr,
7060 reader.comp_unit_die,
7063 /* Age out any secondary CUs. */
7064 per_objfile->age_comp_units ();
7067 /* Reader function for build_type_psymtabs. */
7070 build_type_psymtabs_reader (const struct die_reader_specs *reader,
7071 const gdb_byte *info_ptr,
7072 struct die_info *type_unit_die)
7074 dwarf2_per_objfile *per_objfile = reader->cu->per_objfile;
7075 struct dwarf2_cu *cu = reader->cu;
7076 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7077 struct signatured_type *sig_type;
7078 struct type_unit_group *tu_group;
7079 struct attribute *attr;
7080 struct partial_die_info *first_die;
7081 CORE_ADDR lowpc, highpc;
7082 dwarf2_psymtab *pst;
7084 gdb_assert (per_cu->is_debug_types);
7085 sig_type = (struct signatured_type *) per_cu;
7087 if (! type_unit_die->has_children)
7090 attr = type_unit_die->attr (DW_AT_stmt_list);
7091 tu_group = get_type_unit_group (cu, attr);
7093 if (tu_group->tus == nullptr)
7094 tu_group->tus = new std::vector<signatured_type *>;
7095 tu_group->tus->push_back (sig_type);
7097 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
7098 pst = create_partial_symtab (per_cu, per_objfile, "");
7099 pst->anonymous = true;
7101 first_die = load_partial_dies (reader, info_ptr, 1);
7103 lowpc = (CORE_ADDR) -1;
7104 highpc = (CORE_ADDR) 0;
7105 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
7110 /* Struct used to sort TUs by their abbreviation table offset. */
7112 struct tu_abbrev_offset
7114 tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
7115 : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
7118 /* This is used when sorting. */
7119 bool operator< (const tu_abbrev_offset &other) const
7121 return abbrev_offset < other.abbrev_offset;
7124 signatured_type *sig_type;
7125 sect_offset abbrev_offset;
7128 /* Efficiently read all the type units.
7130 The efficiency is because we sort TUs by the abbrev table they use and
7131 only read each abbrev table once. In one program there are 200K TUs
7132 sharing 8K abbrev tables.
7134 The main purpose of this function is to support building the
7135 dwarf2_per_objfile->per_bfd->type_unit_groups table.
7136 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
7137 can collapse the search space by grouping them by stmt_list.
7138 The savings can be significant, in the same program from above the 200K TUs
7139 share 8K stmt_list tables.
7141 FUNC is expected to call get_type_unit_group, which will create the
7142 struct type_unit_group if necessary and add it to
7143 dwarf2_per_objfile->per_bfd->type_unit_groups. */
7146 build_type_psymtabs (dwarf2_per_objfile *per_objfile)
7148 struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
7149 abbrev_table_up abbrev_table;
7150 sect_offset abbrev_offset;
7152 /* It's up to the caller to not call us multiple times. */
7153 gdb_assert (per_objfile->per_bfd->type_unit_groups == NULL);
7155 if (per_objfile->per_bfd->tu_stats.nr_tus == 0)
7158 /* TUs typically share abbrev tables, and there can be way more TUs than
7159 abbrev tables. Sort by abbrev table to reduce the number of times we
7160 read each abbrev table in.
7161 Alternatives are to punt or to maintain a cache of abbrev tables.
7162 This is simpler and efficient enough for now.
7164 Later we group TUs by their DW_AT_stmt_list value (as this defines the
7165 symtab to use). Typically TUs with the same abbrev offset have the same
7166 stmt_list value too so in practice this should work well.
7168 The basic algorithm here is:
7170 sort TUs by abbrev table
7171 for each TU with same abbrev table:
7172 read abbrev table if first user
7173 read TU top level DIE
7174 [IWBN if DWO skeletons had DW_AT_stmt_list]
7177 dwarf_read_debug_printf ("Building type unit groups ...");
7179 /* Sort in a separate table to maintain the order of all_comp_units
7180 for .gdb_index: TU indices directly index all_type_units. */
7181 std::vector<tu_abbrev_offset> sorted_by_abbrev;
7182 sorted_by_abbrev.reserve (per_objfile->per_bfd->tu_stats.nr_tus);
7184 for (const auto &cu : per_objfile->per_bfd->all_comp_units)
7186 if (cu->is_debug_types)
7188 auto sig_type = static_cast<signatured_type *> (cu.get ());
7189 sorted_by_abbrev.emplace_back
7190 (sig_type, read_abbrev_offset (per_objfile, sig_type->section,
7191 sig_type->sect_off));
7195 std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end ());
7197 abbrev_offset = (sect_offset) ~(unsigned) 0;
7199 for (const tu_abbrev_offset &tu : sorted_by_abbrev)
7201 /* Switch to the next abbrev table if necessary. */
7202 if (abbrev_table == NULL
7203 || tu.abbrev_offset != abbrev_offset)
7205 abbrev_offset = tu.abbrev_offset;
7206 per_objfile->per_bfd->abbrev.read (per_objfile->objfile);
7208 abbrev_table::read (&per_objfile->per_bfd->abbrev, abbrev_offset);
7209 ++tu_stats->nr_uniq_abbrev_tables;
7212 cutu_reader reader (tu.sig_type, per_objfile,
7213 abbrev_table.get (), nullptr, false);
7214 if (!reader.dummy_p)
7215 build_type_psymtabs_reader (&reader, reader.info_ptr,
7216 reader.comp_unit_die);
7220 /* Print collected type unit statistics. */
7223 print_tu_stats (dwarf2_per_objfile *per_objfile)
7225 struct tu_stats *tu_stats = &per_objfile->per_bfd->tu_stats;
7227 dwarf_read_debug_printf ("Type unit statistics:");
7228 dwarf_read_debug_printf (" %d TUs", tu_stats->nr_tus);
7229 dwarf_read_debug_printf (" %d uniq abbrev tables",
7230 tu_stats->nr_uniq_abbrev_tables);
7231 dwarf_read_debug_printf (" %d symtabs from stmt_list entries",
7232 tu_stats->nr_symtabs);
7233 dwarf_read_debug_printf (" %d symtab sharers",
7234 tu_stats->nr_symtab_sharers);
7235 dwarf_read_debug_printf (" %d type units without a stmt_list",
7236 tu_stats->nr_stmt_less_type_units);
7237 dwarf_read_debug_printf (" %d all_type_units reallocs",
7238 tu_stats->nr_all_type_units_reallocs);
7241 /* Traversal function for build_type_psymtabs. */
7244 build_type_psymtab_dependencies (void **slot, void *info)
7246 dwarf2_per_objfile *per_objfile = (dwarf2_per_objfile *) info;
7247 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
7248 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
7249 dwarf2_psymtab *pst = tu_group->v.psymtab;
7250 int len = (tu_group->tus == nullptr) ? 0 : tu_group->tus->size ();
7253 gdb_assert (len > 0);
7254 gdb_assert (tu_group->type_unit_group_p ());
7256 pst->number_of_dependencies = len;
7257 pst->dependencies = per_bfd->partial_symtabs->allocate_dependencies (len);
7258 for (i = 0; i < len; ++i)
7260 struct signatured_type *iter = tu_group->tus->at (i);
7261 gdb_assert (iter->is_debug_types);
7262 pst->dependencies[i] = iter->v.psymtab;
7263 iter->type_unit_group = tu_group;
7266 delete tu_group->tus;
7267 tu_group->tus = nullptr;
7272 /* Traversal function for process_skeletonless_type_unit.
7273 Read a TU in a DWO file and build partial symbols for it. */
7276 process_skeletonless_type_unit (void **slot, void *info)
7278 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
7279 dwarf2_per_objfile *per_objfile = (dwarf2_per_objfile *) info;
7281 /* If this TU doesn't exist in the global table, add it and read it in. */
7283 if (per_objfile->per_bfd->signatured_types == NULL)
7284 per_objfile->per_bfd->signatured_types = allocate_signatured_type_table ();
7286 signatured_type find_entry (dwo_unit->signature);
7287 slot = htab_find_slot (per_objfile->per_bfd->signatured_types.get (),
7288 &find_entry, INSERT);
7289 /* If we've already seen this type there's nothing to do. What's happening
7290 is we're doing our own version of comdat-folding here. */
7294 /* This does the job that create_all_comp_units would have done for
7296 signatured_type *entry
7297 = add_type_unit (per_objfile, dwo_unit->signature, slot);
7298 fill_in_sig_entry_from_dwo_entry (per_objfile, entry, dwo_unit);
7301 /* This does the job that build_type_psymtabs would have done. */
7302 cutu_reader reader (entry, per_objfile, nullptr, nullptr, false);
7303 if (!reader.dummy_p)
7304 build_type_psymtabs_reader (&reader, reader.info_ptr,
7305 reader.comp_unit_die);
7310 /* Traversal function for process_skeletonless_type_units. */
7313 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
7315 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
7317 if (dwo_file->tus != NULL)
7318 htab_traverse_noresize (dwo_file->tus.get (),
7319 process_skeletonless_type_unit, info);
7324 /* Scan all TUs of DWO files, verifying we've processed them.
7325 This is needed in case a TU was emitted without its skeleton.
7326 Note: This can't be done until we know what all the DWO files are. */
7329 process_skeletonless_type_units (dwarf2_per_objfile *per_objfile)
7331 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
7332 if (get_dwp_file (per_objfile) == NULL
7333 && per_objfile->per_bfd->dwo_files != NULL)
7335 htab_traverse_noresize (per_objfile->per_bfd->dwo_files.get (),
7336 process_dwo_file_for_skeletonless_type_units,
7341 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE. */
7344 set_partial_user (dwarf2_per_objfile *per_objfile)
7346 for (const auto &per_cu : per_objfile->per_bfd->all_comp_units)
7348 dwarf2_psymtab *pst = per_cu->v.psymtab;
7353 for (int j = 0; j < pst->number_of_dependencies; ++j)
7355 /* Set the 'user' field only if it is not already set. */
7356 if (pst->dependencies[j]->user == NULL)
7357 pst->dependencies[j]->user = pst;
7362 /* Build the partial symbol table by doing a quick pass through the
7363 .debug_info and .debug_abbrev sections. */
7366 dwarf2_build_psymtabs_hard (dwarf2_per_objfile *per_objfile)
7368 struct objfile *objfile = per_objfile->objfile;
7369 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
7371 dwarf_read_debug_printf ("Building psymtabs of objfile %s ...",
7372 objfile_name (objfile));
7374 scoped_restore restore_reading_psyms
7375 = make_scoped_restore (&per_bfd->reading_partial_symbols, true);
7377 per_bfd->info.read (objfile);
7379 /* Any cached compilation units will be linked by the per-objfile
7380 read_in_chain. Make sure to free them when we're done. */
7381 free_cached_comp_units freer (per_objfile);
7383 create_all_comp_units (per_objfile);
7384 build_type_psymtabs (per_objfile);
7386 /* Create a temporary address map on a temporary obstack. We later
7387 copy this to the final obstack. */
7388 auto_obstack temp_obstack;
7390 scoped_restore save_psymtabs_addrmap
7391 = make_scoped_restore (&per_bfd->partial_symtabs->psymtabs_addrmap,
7392 addrmap_create_mutable (&temp_obstack));
7394 for (const auto &per_cu : per_bfd->all_comp_units)
7396 if (per_cu->v.psymtab != NULL)
7397 /* In case a forward DW_TAG_imported_unit has read the CU already. */
7399 process_psymtab_comp_unit (per_cu.get (), per_objfile, false,
7403 /* This has to wait until we read the CUs, we need the list of DWOs. */
7404 process_skeletonless_type_units (per_objfile);
7406 /* Now that all TUs have been processed we can fill in the dependencies. */
7407 if (per_bfd->type_unit_groups != NULL)
7409 htab_traverse_noresize (per_bfd->type_unit_groups.get (),
7410 build_type_psymtab_dependencies, per_objfile);
7413 if (dwarf_read_debug > 0)
7414 print_tu_stats (per_objfile);
7416 set_partial_user (per_objfile);
7418 per_bfd->partial_symtabs->psymtabs_addrmap
7419 = addrmap_create_fixed (per_bfd->partial_symtabs->psymtabs_addrmap,
7420 per_bfd->partial_symtabs->obstack ());
7421 /* At this point we want to keep the address map. */
7422 save_psymtabs_addrmap.release ();
7424 dwarf_read_debug_printf ("Done building psymtabs of %s",
7425 objfile_name (objfile));
7428 /* Load the partial DIEs for a secondary CU into memory.
7429 This is also used when rereading a primary CU with load_all_dies. */
7432 load_partial_comp_unit (dwarf2_per_cu_data *this_cu,
7433 dwarf2_per_objfile *per_objfile,
7434 dwarf2_cu *existing_cu)
7436 cutu_reader reader (this_cu, per_objfile, nullptr, existing_cu, false);
7438 if (!reader.dummy_p)
7440 prepare_one_comp_unit (reader.cu, reader.comp_unit_die,
7443 /* Check if comp unit has_children.
7444 If so, read the rest of the partial symbols from this comp unit.
7445 If not, there's no more debug_info for this comp unit. */
7446 if (reader.comp_unit_die->has_children)
7447 load_partial_dies (&reader, reader.info_ptr, 0);
7454 read_comp_units_from_section (dwarf2_per_objfile *per_objfile,
7455 struct dwarf2_section_info *section,
7456 struct dwarf2_section_info *abbrev_section,
7457 unsigned int is_dwz,
7458 htab_up &types_htab,
7459 rcuh_kind section_kind)
7461 const gdb_byte *info_ptr;
7462 struct objfile *objfile = per_objfile->objfile;
7464 dwarf_read_debug_printf ("Reading %s for %s",
7465 section->get_name (),
7466 section->get_file_name ());
7468 section->read (objfile);
7470 info_ptr = section->buffer;
7472 while (info_ptr < section->buffer + section->size)
7474 dwarf2_per_cu_data_up this_cu;
7476 sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
7478 comp_unit_head cu_header;
7479 read_and_check_comp_unit_head (per_objfile, &cu_header, section,
7480 abbrev_section, info_ptr,
7483 /* Save the compilation unit for later lookup. */
7484 if (cu_header.unit_type != DW_UT_type)
7485 this_cu = per_objfile->per_bfd->allocate_per_cu ();
7488 if (types_htab == nullptr)
7489 types_htab = allocate_signatured_type_table ();
7491 auto sig_type = per_objfile->per_bfd->allocate_signatured_type
7492 (cu_header.signature);
7493 signatured_type *sig_ptr = sig_type.get ();
7494 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
7495 this_cu.reset (sig_type.release ());
7497 void **slot = htab_find_slot (types_htab.get (), sig_ptr, INSERT);
7498 gdb_assert (slot != nullptr);
7499 if (*slot != nullptr)
7500 complaint (_("debug type entry at offset %s is duplicate to"
7501 " the entry at offset %s, signature %s"),
7502 sect_offset_str (sect_off),
7503 sect_offset_str (sig_ptr->sect_off),
7504 hex_string (sig_ptr->signature));
7507 this_cu->sect_off = sect_off;
7508 this_cu->length = cu_header.length + cu_header.initial_length_size;
7509 this_cu->is_dwz = is_dwz;
7510 this_cu->section = section;
7512 info_ptr = info_ptr + this_cu->length;
7513 per_objfile->per_bfd->all_comp_units.push_back (std::move (this_cu));
7517 /* Create a list of all compilation units in OBJFILE.
7518 This is only done for -readnow and building partial symtabs. */
7521 create_all_comp_units (dwarf2_per_objfile *per_objfile)
7525 read_comp_units_from_section (per_objfile, &per_objfile->per_bfd->info,
7526 &per_objfile->per_bfd->abbrev, 0,
7527 types_htab, rcuh_kind::COMPILE);
7528 for (dwarf2_section_info §ion : per_objfile->per_bfd->types)
7529 read_comp_units_from_section (per_objfile, §ion,
7530 &per_objfile->per_bfd->abbrev, 0,
7531 types_htab, rcuh_kind::TYPE);
7533 dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd);
7535 read_comp_units_from_section (per_objfile, &dwz->info, &dwz->abbrev, 1,
7536 types_htab, rcuh_kind::COMPILE);
7538 per_objfile->per_bfd->signatured_types = std::move (types_htab);
7541 /* Process all loaded DIEs for compilation unit CU, starting at
7542 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
7543 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
7544 DW_AT_ranges). See the comments of add_partial_subprogram on how
7545 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
7548 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
7549 CORE_ADDR *highpc, int set_addrmap,
7550 struct dwarf2_cu *cu)
7552 struct partial_die_info *pdi;
7554 /* Now, march along the PDI's, descending into ones which have
7555 interesting children but skipping the children of the other ones,
7556 until we reach the end of the compilation unit. */
7564 /* Anonymous namespaces or modules have no name but have interesting
7565 children, so we need to look at them. Ditto for anonymous
7568 if (pdi->raw_name != NULL || pdi->tag == DW_TAG_namespace
7569 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
7570 || pdi->tag == DW_TAG_imported_unit
7571 || pdi->tag == DW_TAG_inlined_subroutine)
7575 case DW_TAG_subprogram:
7576 case DW_TAG_inlined_subroutine:
7577 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
7578 if (cu->per_cu->lang == language_cplus)
7579 scan_partial_symbols (pdi->die_child, lowpc, highpc,
7582 case DW_TAG_constant:
7583 case DW_TAG_variable:
7584 case DW_TAG_typedef:
7585 case DW_TAG_union_type:
7586 if (!pdi->is_declaration
7587 || (pdi->tag == DW_TAG_variable && pdi->is_external))
7589 add_partial_symbol (pdi, cu);
7592 case DW_TAG_class_type:
7593 case DW_TAG_interface_type:
7594 case DW_TAG_structure_type:
7595 if (!pdi->is_declaration)
7597 add_partial_symbol (pdi, cu);
7599 if ((cu->per_cu->lang == language_rust
7600 || cu->per_cu->lang == language_cplus)
7601 && pdi->has_children)
7602 scan_partial_symbols (pdi->die_child, lowpc, highpc,
7605 case DW_TAG_enumeration_type:
7606 if (!pdi->is_declaration)
7607 add_partial_enumeration (pdi, cu);
7609 case DW_TAG_base_type:
7610 case DW_TAG_subrange_type:
7611 /* File scope base type definitions are added to the partial
7613 add_partial_symbol (pdi, cu);
7615 case DW_TAG_namespace:
7616 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
7619 if (!pdi->is_declaration)
7620 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
7622 case DW_TAG_imported_unit:
7624 struct dwarf2_per_cu_data *per_cu;
7626 /* For now we don't handle imported units in type units. */
7627 if (cu->per_cu->is_debug_types)
7629 error (_("Dwarf Error: DW_TAG_imported_unit is not"
7630 " supported in type units [in module %s]"),
7631 objfile_name (cu->per_objfile->objfile));
7634 per_cu = dwarf2_find_containing_comp_unit
7635 (pdi->d.sect_off, pdi->is_dwz, cu->per_objfile);
7637 /* Go read the partial unit, if needed. */
7638 if (per_cu->v.psymtab == NULL)
7639 process_psymtab_comp_unit (per_cu, cu->per_objfile, true,
7642 if (pdi->die_parent == nullptr
7643 && per_cu->unit_type == DW_UT_compile
7644 && per_cu->lang == language_cplus)
7645 /* Regard import as hint. See corresponding code in
7646 process_imported_unit_die. */
7649 cu->per_cu->imported_symtabs_push (per_cu);
7652 case DW_TAG_imported_declaration:
7653 add_partial_symbol (pdi, cu);
7660 /* If the die has a sibling, skip to the sibling. */
7662 pdi = pdi->die_sibling;
7666 /* Functions used to compute the fully scoped name of a partial DIE.
7668 Normally, this is simple. For C++, the parent DIE's fully scoped
7669 name is concatenated with "::" and the partial DIE's name.
7670 Enumerators are an exception; they use the scope of their parent
7671 enumeration type, i.e. the name of the enumeration type is not
7672 prepended to the enumerator.
7674 There are two complexities. One is DW_AT_specification; in this
7675 case "parent" means the parent of the target of the specification,
7676 instead of the direct parent of the DIE. The other is compilers
7677 which do not emit DW_TAG_namespace; in this case we try to guess
7678 the fully qualified name of structure types from their members'
7679 linkage names. This must be done using the DIE's children rather
7680 than the children of any DW_AT_specification target. We only need
7681 to do this for structures at the top level, i.e. if the target of
7682 any DW_AT_specification (if any; otherwise the DIE itself) does not
7685 /* Compute the scope prefix associated with PDI's parent, in
7686 compilation unit CU. The result will be allocated on CU's
7687 comp_unit_obstack, or a copy of the already allocated PDI->NAME
7688 field. NULL is returned if no prefix is necessary. */
7690 partial_die_parent_scope (struct partial_die_info *pdi,
7691 struct dwarf2_cu *cu)
7693 const char *grandparent_scope;
7694 struct partial_die_info *parent, *real_pdi;
7696 /* We need to look at our parent DIE; if we have a DW_AT_specification,
7697 then this means the parent of the specification DIE. */
7700 while (real_pdi->has_specification)
7702 auto res = find_partial_die (real_pdi->spec_offset,
7703 real_pdi->spec_is_dwz, cu);
7708 parent = real_pdi->die_parent;
7712 if (parent->scope_set)
7713 return parent->scope;
7717 grandparent_scope = partial_die_parent_scope (parent, cu);
7719 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
7720 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
7721 Work around this problem here. */
7722 if (cu->per_cu->lang == language_cplus
7723 && parent->tag == DW_TAG_namespace
7724 && strcmp (parent->name (cu), "::") == 0
7725 && grandparent_scope == NULL)
7727 parent->scope = NULL;
7728 parent->scope_set = 1;
7732 /* Nested subroutines in Fortran get a prefix. */
7733 if (pdi->tag == DW_TAG_enumerator)
7734 /* Enumerators should not get the name of the enumeration as a prefix. */
7735 parent->scope = grandparent_scope;
7736 else if (parent->tag == DW_TAG_namespace
7737 || parent->tag == DW_TAG_module
7738 || parent->tag == DW_TAG_structure_type
7739 || parent->tag == DW_TAG_class_type
7740 || parent->tag == DW_TAG_interface_type
7741 || parent->tag == DW_TAG_union_type
7742 || parent->tag == DW_TAG_enumeration_type
7743 || (cu->per_cu->lang == language_fortran
7744 && parent->tag == DW_TAG_subprogram
7745 && pdi->tag == DW_TAG_subprogram))
7747 if (grandparent_scope == NULL)
7748 parent->scope = parent->name (cu);
7750 parent->scope = typename_concat (&cu->comp_unit_obstack,
7752 parent->name (cu), 0, cu);
7756 /* FIXME drow/2004-04-01: What should we be doing with
7757 function-local names? For partial symbols, we should probably be
7759 complaint (_("unhandled containing DIE tag %s for DIE at %s"),
7760 dwarf_tag_name (parent->tag),
7761 sect_offset_str (pdi->sect_off));
7762 parent->scope = grandparent_scope;
7765 parent->scope_set = 1;
7766 return parent->scope;
7769 /* Return the fully scoped name associated with PDI, from compilation unit
7770 CU. The result will be allocated with malloc. */
7772 static gdb::unique_xmalloc_ptr<char>
7773 partial_die_full_name (struct partial_die_info *pdi,
7774 struct dwarf2_cu *cu)
7776 const char *parent_scope;
7778 /* If this is a template instantiation, we can not work out the
7779 template arguments from partial DIEs. So, unfortunately, we have
7780 to go through the full DIEs. At least any work we do building
7781 types here will be reused if full symbols are loaded later. */
7782 if (pdi->has_template_arguments)
7786 if (pdi->name (cu) != NULL && strchr (pdi->name (cu), '<') == NULL)
7788 struct die_info *die;
7789 struct attribute attr;
7790 struct dwarf2_cu *ref_cu = cu;
7792 /* DW_FORM_ref_addr is using section offset. */
7793 attr.name = (enum dwarf_attribute) 0;
7794 attr.form = DW_FORM_ref_addr;
7795 attr.u.unsnd = to_underlying (pdi->sect_off);
7796 die = follow_die_ref (NULL, &attr, &ref_cu);
7798 return make_unique_xstrdup (dwarf2_full_name (NULL, die, ref_cu));
7802 parent_scope = partial_die_parent_scope (pdi, cu);
7803 if (parent_scope == NULL)
7806 return gdb::unique_xmalloc_ptr<char> (typename_concat (NULL, parent_scope,
7812 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
7814 dwarf2_per_objfile *per_objfile = cu->per_objfile;
7815 struct objfile *objfile = per_objfile->objfile;
7816 struct gdbarch *gdbarch = objfile->arch ();
7818 const char *actual_name = NULL;
7821 baseaddr = objfile->text_section_offset ();
7823 gdb::unique_xmalloc_ptr<char> built_actual_name
7824 = partial_die_full_name (pdi, cu);
7825 if (built_actual_name != NULL)
7826 actual_name = built_actual_name.get ();
7828 if (actual_name == NULL)
7829 actual_name = pdi->name (cu);
7831 partial_symbol psymbol;
7832 memset (&psymbol, 0, sizeof (psymbol));
7833 psymbol.ginfo.set_language (cu->per_cu->lang,
7834 &objfile->objfile_obstack);
7835 psymbol.ginfo.set_section_index (-1);
7837 /* The code below indicates that the psymbol should be installed by
7839 gdb::optional<psymbol_placement> where;
7843 case DW_TAG_inlined_subroutine:
7844 case DW_TAG_subprogram:
7845 addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
7847 if (pdi->is_external
7848 || cu->per_cu->lang == language_ada
7849 || (cu->per_cu->lang == language_fortran
7850 && pdi->die_parent != NULL
7851 && pdi->die_parent->tag == DW_TAG_subprogram))
7853 /* Normally, only "external" DIEs are part of the global scope.
7854 But in Ada and Fortran, we want to be able to access nested
7855 procedures globally. So all Ada and Fortran subprograms are
7856 stored in the global scope. */
7857 where = psymbol_placement::GLOBAL;
7860 where = psymbol_placement::STATIC;
7862 psymbol.domain = VAR_DOMAIN;
7863 psymbol.aclass = LOC_BLOCK;
7864 psymbol.ginfo.set_section_index (SECT_OFF_TEXT (objfile));
7865 psymbol.ginfo.value.address = addr;
7867 if (pdi->main_subprogram && actual_name != NULL)
7868 set_objfile_main_name (objfile, actual_name, cu->per_cu->lang);
7870 case DW_TAG_constant:
7871 psymbol.domain = VAR_DOMAIN;
7872 psymbol.aclass = LOC_STATIC;
7873 where = (pdi->is_external
7874 ? psymbol_placement::GLOBAL
7875 : psymbol_placement::STATIC);
7877 case DW_TAG_variable:
7879 addr = decode_locdesc (pdi->d.locdesc, cu);
7883 && !per_objfile->per_bfd->has_section_at_zero)
7885 /* A global or static variable may also have been stripped
7886 out by the linker if unused, in which case its address
7887 will be nullified; do not add such variables into partial
7888 symbol table then. */
7890 else if (pdi->is_external)
7893 Don't enter into the minimal symbol tables as there is
7894 a minimal symbol table entry from the ELF symbols already.
7895 Enter into partial symbol table if it has a location
7896 descriptor or a type.
7897 If the location descriptor is missing, new_symbol will create
7898 a LOC_UNRESOLVED symbol, the address of the variable will then
7899 be determined from the minimal symbol table whenever the variable
7901 The address for the partial symbol table entry is not
7902 used by GDB, but it comes in handy for debugging partial symbol
7905 if (pdi->d.locdesc || pdi->has_type)
7907 psymbol.domain = VAR_DOMAIN;
7908 psymbol.aclass = LOC_STATIC;
7909 psymbol.ginfo.set_section_index (SECT_OFF_TEXT (objfile));
7910 psymbol.ginfo.value.address = addr;
7911 where = psymbol_placement::GLOBAL;
7916 int has_loc = pdi->d.locdesc != NULL;
7918 /* Static Variable. Skip symbols whose value we cannot know (those
7919 without location descriptors or constant values). */
7920 if (!has_loc && !pdi->has_const_value)
7923 psymbol.domain = VAR_DOMAIN;
7924 psymbol.aclass = LOC_STATIC;
7925 psymbol.ginfo.set_section_index (SECT_OFF_TEXT (objfile));
7927 psymbol.ginfo.value.address = addr;
7928 where = psymbol_placement::STATIC;
7931 case DW_TAG_array_type:
7932 case DW_TAG_typedef:
7933 case DW_TAG_base_type:
7934 case DW_TAG_subrange_type:
7935 psymbol.domain = VAR_DOMAIN;
7936 psymbol.aclass = LOC_TYPEDEF;
7937 where = psymbol_placement::STATIC;
7939 case DW_TAG_imported_declaration:
7940 case DW_TAG_namespace:
7941 psymbol.domain = VAR_DOMAIN;
7942 psymbol.aclass = LOC_TYPEDEF;
7943 where = psymbol_placement::GLOBAL;
7946 /* With Fortran 77 there might be a "BLOCK DATA" module
7947 available without any name. If so, we skip the module as it
7948 doesn't bring any value. */
7949 if (actual_name != nullptr)
7951 psymbol.domain = MODULE_DOMAIN;
7952 psymbol.aclass = LOC_TYPEDEF;
7953 where = psymbol_placement::GLOBAL;
7956 case DW_TAG_class_type:
7957 case DW_TAG_interface_type:
7958 case DW_TAG_structure_type:
7959 case DW_TAG_union_type:
7960 case DW_TAG_enumeration_type:
7961 /* Skip external references. The DWARF standard says in the section
7962 about "Structure, Union, and Class Type Entries": "An incomplete
7963 structure, union or class type is represented by a structure,
7964 union or class entry that does not have a byte size attribute
7965 and that has a DW_AT_declaration attribute." */
7966 if (!pdi->has_byte_size && pdi->is_declaration)
7969 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7970 static vs. global. */
7971 psymbol.domain = STRUCT_DOMAIN;
7972 psymbol.aclass = LOC_TYPEDEF;
7973 where = (cu->per_cu->lang == language_cplus
7974 ? psymbol_placement::GLOBAL
7975 : psymbol_placement::STATIC);
7977 case DW_TAG_enumerator:
7978 psymbol.domain = VAR_DOMAIN;
7979 psymbol.aclass = LOC_CONST;
7980 where = (cu->per_cu->lang == language_cplus
7981 ? psymbol_placement::GLOBAL
7982 : psymbol_placement::STATIC);
7988 if (where.has_value ())
7990 if (built_actual_name != nullptr)
7991 actual_name = objfile->intern (actual_name);
7992 if (pdi->linkage_name == nullptr
7993 || cu->per_cu->lang == language_ada)
7994 psymbol.ginfo.set_linkage_name (actual_name);
7997 psymbol.ginfo.set_demangled_name (actual_name,
7998 &objfile->objfile_obstack);
7999 psymbol.ginfo.set_linkage_name (pdi->linkage_name);
8001 cu->per_cu->v.psymtab->add_psymbol
8002 (psymbol, *where, per_objfile->per_bfd->partial_symtabs.get (),
8007 /* Read a partial die corresponding to a namespace; also, add a symbol
8008 corresponding to that namespace to the symbol table. NAMESPACE is
8009 the name of the enclosing namespace. */
8012 add_partial_namespace (struct partial_die_info *pdi,
8013 CORE_ADDR *lowpc, CORE_ADDR *highpc,
8014 int set_addrmap, struct dwarf2_cu *cu)
8016 /* Add a symbol for the namespace. */
8018 add_partial_symbol (pdi, cu);
8020 /* Now scan partial symbols in that namespace. */
8022 if (pdi->has_children)
8023 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
8026 /* Read a partial die corresponding to a Fortran module. */
8029 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
8030 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
8032 /* Add a symbol for the namespace. */
8034 add_partial_symbol (pdi, cu);
8036 /* Now scan partial symbols in that module. */
8038 if (pdi->has_children)
8039 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
8042 /* Read a partial die corresponding to a subprogram or an inlined
8043 subprogram and create a partial symbol for that subprogram.
8044 When the CU language allows it, this routine also defines a partial
8045 symbol for each nested subprogram that this subprogram contains.
8046 If SET_ADDRMAP is true, record the covered ranges in the addrmap.
8047 Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
8049 PDI may also be a lexical block, in which case we simply search
8050 recursively for subprograms defined inside that lexical block.
8051 Again, this is only performed when the CU language allows this
8052 type of definitions. */
8055 add_partial_subprogram (struct partial_die_info *pdi,
8056 CORE_ADDR *lowpc, CORE_ADDR *highpc,
8057 int set_addrmap, struct dwarf2_cu *cu)
8059 if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
8061 if (pdi->has_pc_info)
8063 if (pdi->lowpc < *lowpc)
8064 *lowpc = pdi->lowpc;
8065 if (pdi->highpc > *highpc)
8066 *highpc = pdi->highpc;
8069 struct objfile *objfile = cu->per_objfile->objfile;
8070 dwarf2_per_bfd *per_bfd = cu->per_objfile->per_bfd;
8071 struct gdbarch *gdbarch = objfile->arch ();
8073 CORE_ADDR this_highpc;
8074 CORE_ADDR this_lowpc;
8076 baseaddr = objfile->text_section_offset ();
8078 = (gdbarch_adjust_dwarf2_addr (gdbarch,
8079 pdi->lowpc + baseaddr)
8082 = (gdbarch_adjust_dwarf2_addr (gdbarch,
8083 pdi->highpc + baseaddr)
8085 addrmap_set_empty (per_bfd->partial_symtabs->psymtabs_addrmap,
8086 this_lowpc, this_highpc - 1,
8087 cu->per_cu->v.psymtab);
8091 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
8093 if (!pdi->is_declaration)
8094 /* Ignore subprogram DIEs that do not have a name, they are
8095 illegal. Do not emit a complaint at this point, we will
8096 do so when we convert this psymtab into a symtab. */
8098 add_partial_symbol (pdi, cu);
8102 if (! pdi->has_children)
8105 if (cu->per_cu->lang == language_ada
8106 || cu->per_cu->lang == language_fortran)
8108 pdi = pdi->die_child;
8112 if (pdi->tag == DW_TAG_subprogram
8113 || pdi->tag == DW_TAG_inlined_subroutine
8114 || pdi->tag == DW_TAG_lexical_block)
8115 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8116 pdi = pdi->die_sibling;
8121 /* Read a partial die corresponding to an enumeration type. */
8124 add_partial_enumeration (struct partial_die_info *enum_pdi,
8125 struct dwarf2_cu *cu)
8127 struct partial_die_info *pdi;
8129 if (enum_pdi->name (cu) != NULL)
8130 add_partial_symbol (enum_pdi, cu);
8132 pdi = enum_pdi->die_child;
8135 if (pdi->tag != DW_TAG_enumerator || pdi->raw_name == NULL)
8136 complaint (_("malformed enumerator DIE ignored"));
8138 add_partial_symbol (pdi, cu);
8139 pdi = pdi->die_sibling;
8143 /* Return the initial uleb128 in the die at INFO_PTR. */
8146 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
8148 unsigned int bytes_read;
8150 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
8153 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
8154 READER::CU. Use READER::ABBREV_TABLE to lookup any abbreviation.
8156 Return the corresponding abbrev, or NULL if the number is zero (indicating
8157 an empty DIE). In either case *BYTES_READ will be set to the length of
8158 the initial number. */
8160 static const struct abbrev_info *
8161 peek_die_abbrev (const die_reader_specs &reader,
8162 const gdb_byte *info_ptr, unsigned int *bytes_read)
8164 dwarf2_cu *cu = reader.cu;
8165 bfd *abfd = reader.abfd;
8166 unsigned int abbrev_number
8167 = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
8169 if (abbrev_number == 0)
8172 const abbrev_info *abbrev
8173 = reader.abbrev_table->lookup_abbrev (abbrev_number);
8176 error (_("Dwarf Error: Could not find abbrev number %d in %s"
8177 " at offset %s [in module %s]"),
8178 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
8179 sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
8185 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
8186 Returns a pointer to the end of a series of DIEs, terminated by an empty
8187 DIE. Any children of the skipped DIEs will also be skipped. */
8189 static const gdb_byte *
8190 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
8194 unsigned int bytes_read;
8195 const abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr,
8199 return info_ptr + bytes_read;
8201 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
8205 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
8206 INFO_PTR should point just after the initial uleb128 of a DIE, and the
8207 abbrev corresponding to that skipped uleb128 should be passed in
8208 ABBREV. Returns a pointer to this DIE's sibling, skipping any
8211 static const gdb_byte *
8212 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
8213 const struct abbrev_info *abbrev)
8215 unsigned int bytes_read;
8216 struct attribute attr;
8217 bfd *abfd = reader->abfd;
8218 struct dwarf2_cu *cu = reader->cu;
8219 const gdb_byte *buffer = reader->buffer;
8220 const gdb_byte *buffer_end = reader->buffer_end;
8221 unsigned int form, i;
8223 for (i = 0; i < abbrev->num_attrs; i++)
8225 /* The only abbrev we care about is DW_AT_sibling. */
8226 if (abbrev->attrs[i].name == DW_AT_sibling)
8228 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
8229 if (attr.form == DW_FORM_ref_addr)
8230 complaint (_("ignoring absolute DW_AT_sibling"));
8233 sect_offset off = attr.get_ref_die_offset ();
8234 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
8236 if (sibling_ptr < info_ptr)
8237 complaint (_("DW_AT_sibling points backwards"));
8238 else if (sibling_ptr > reader->buffer_end)
8239 reader->die_section->overflow_complaint ();
8245 /* If it isn't DW_AT_sibling, skip this attribute. */
8246 form = abbrev->attrs[i].form;
8250 case DW_FORM_ref_addr:
8251 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
8252 and later it is offset sized. */
8253 if (cu->header.version == 2)
8254 info_ptr += cu->header.addr_size;
8256 info_ptr += cu->header.offset_size;
8258 case DW_FORM_GNU_ref_alt:
8259 info_ptr += cu->header.offset_size;
8262 info_ptr += cu->header.addr_size;
8270 case DW_FORM_flag_present:
8271 case DW_FORM_implicit_const:
8288 case DW_FORM_ref_sig8:
8291 case DW_FORM_data16:
8294 case DW_FORM_string:
8295 read_direct_string (abfd, info_ptr, &bytes_read);
8296 info_ptr += bytes_read;
8298 case DW_FORM_sec_offset:
8300 case DW_FORM_GNU_strp_alt:
8301 info_ptr += cu->header.offset_size;
8303 case DW_FORM_exprloc:
8305 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
8306 info_ptr += bytes_read;
8308 case DW_FORM_block1:
8309 info_ptr += 1 + read_1_byte (abfd, info_ptr);
8311 case DW_FORM_block2:
8312 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
8314 case DW_FORM_block4:
8315 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
8321 case DW_FORM_ref_udata:
8322 case DW_FORM_GNU_addr_index:
8323 case DW_FORM_GNU_str_index:
8324 case DW_FORM_rnglistx:
8325 case DW_FORM_loclistx:
8326 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
8328 case DW_FORM_indirect:
8329 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
8330 info_ptr += bytes_read;
8331 /* We need to continue parsing from here, so just go back to
8333 goto skip_attribute;
8336 error (_("Dwarf Error: Cannot handle %s "
8337 "in DWARF reader [in module %s]"),
8338 dwarf_form_name (form),
8339 bfd_get_filename (abfd));
8343 if (abbrev->has_children)
8344 return skip_children (reader, info_ptr);
8349 /* Locate ORIG_PDI's sibling.
8350 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
8352 static const gdb_byte *
8353 locate_pdi_sibling (const struct die_reader_specs *reader,
8354 struct partial_die_info *orig_pdi,
8355 const gdb_byte *info_ptr)
8357 /* Do we know the sibling already? */
8359 if (orig_pdi->sibling)
8360 return orig_pdi->sibling;
8362 /* Are there any children to deal with? */
8364 if (!orig_pdi->has_children)
8367 /* Skip the children the long way. */
8369 return skip_children (reader, info_ptr);
8372 /* Expand this partial symbol table into a full symbol table. SELF is
8376 dwarf2_psymtab::read_symtab (struct objfile *objfile)
8378 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
8380 gdb_assert (!per_objfile->symtab_set_p (per_cu_data));
8382 /* If this psymtab is constructed from a debug-only objfile, the
8383 has_section_at_zero flag will not necessarily be correct. We
8384 can get the correct value for this flag by looking at the data
8385 associated with the (presumably stripped) associated objfile. */
8386 if (objfile->separate_debug_objfile_backlink)
8388 dwarf2_per_objfile *per_objfile_backlink
8389 = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
8391 per_objfile->per_bfd->has_section_at_zero
8392 = per_objfile_backlink->per_bfd->has_section_at_zero;
8395 expand_psymtab (objfile);
8397 process_cu_includes (per_objfile);
8400 /* Reading in full CUs. */
8402 /* Add PER_CU to the queue. */
8405 queue_comp_unit (dwarf2_per_cu_data *per_cu,
8406 dwarf2_per_objfile *per_objfile,
8407 enum language pretend_language)
8411 gdb_assert (per_objfile->per_bfd->queue.has_value ());
8412 per_cu->per_bfd->queue->emplace (per_cu, per_objfile, pretend_language);
8415 /* If PER_CU is not yet expanded of queued for expansion, add it to the queue.
8417 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
8420 Return true if maybe_queue_comp_unit requires the caller to load the CU's
8421 DIEs, false otherwise.
8423 Explanation: there is an invariant that if a CU is queued for expansion
8424 (present in `dwarf2_per_bfd::queue`), then its DIEs are loaded
8425 (a dwarf2_cu object exists for this CU, and `dwarf2_per_objfile::get_cu`
8426 returns non-nullptr). If the CU gets enqueued by this function but its DIEs
8427 are not yet loaded, the the caller must load the CU's DIEs to ensure the
8428 invariant is respected.
8430 The caller is therefore not required to load the CU's DIEs (we return false)
8433 - the CU is already expanded, and therefore does not get enqueued
8434 - the CU gets enqueued for expansion, but its DIEs are already loaded
8436 Note that the caller should not use this function's return value as an
8437 indicator of whether the CU's DIEs are loaded right now, it should check
8438 that by calling `dwarf2_per_objfile::get_cu` instead. */
8441 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
8442 dwarf2_per_cu_data *per_cu,
8443 dwarf2_per_objfile *per_objfile,
8444 enum language pretend_language)
8446 /* We may arrive here during partial symbol reading, if we need full
8447 DIEs to process an unusual case (e.g. template arguments). Do
8448 not queue PER_CU, just tell our caller to load its DIEs. */
8449 if (per_cu->per_bfd->reading_partial_symbols)
8451 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
8453 if (cu == NULL || cu->dies == NULL)
8458 /* Mark the dependence relation so that we don't flush PER_CU
8460 if (dependent_cu != NULL)
8461 dependent_cu->add_dependence (per_cu);
8463 /* If it's already on the queue, we have nothing to do. */
8466 /* Verify the invariant that if a CU is queued for expansion, its DIEs are
8468 gdb_assert (per_objfile->get_cu (per_cu) != nullptr);
8470 /* If the CU is queued for expansion, it should not already be
8472 gdb_assert (!per_objfile->symtab_set_p (per_cu));
8474 /* The DIEs are already loaded, the caller doesn't need to do it. */
8478 bool queued = false;
8479 if (!per_objfile->symtab_set_p (per_cu))
8481 /* Add it to the queue. */
8482 queue_comp_unit (per_cu, per_objfile, pretend_language);
8486 /* If the compilation unit is already loaded, just mark it as
8488 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
8492 /* Ask the caller to load the CU's DIEs if the CU got enqueued for expansion
8493 and the DIEs are not already loaded. */
8494 return queued && cu == nullptr;
8497 /* Process the queue. */
8500 process_queue (dwarf2_per_objfile *per_objfile)
8502 dwarf_read_debug_printf ("Expanding one or more symtabs of objfile %s ...",
8503 objfile_name (per_objfile->objfile));
8505 /* The queue starts out with one item, but following a DIE reference
8506 may load a new CU, adding it to the end of the queue. */
8507 while (!per_objfile->per_bfd->queue->empty ())
8509 dwarf2_queue_item &item = per_objfile->per_bfd->queue->front ();
8510 dwarf2_per_cu_data *per_cu = item.per_cu;
8512 if (!per_objfile->symtab_set_p (per_cu))
8514 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
8516 /* Skip dummy CUs. */
8519 unsigned int debug_print_threshold;
8522 if (per_cu->is_debug_types)
8524 struct signatured_type *sig_type =
8525 (struct signatured_type *) per_cu;
8527 sprintf (buf, "TU %s at offset %s",
8528 hex_string (sig_type->signature),
8529 sect_offset_str (per_cu->sect_off));
8530 /* There can be 100s of TUs.
8531 Only print them in verbose mode. */
8532 debug_print_threshold = 2;
8536 sprintf (buf, "CU at offset %s",
8537 sect_offset_str (per_cu->sect_off));
8538 debug_print_threshold = 1;
8541 if (dwarf_read_debug >= debug_print_threshold)
8542 dwarf_read_debug_printf ("Expanding symtab of %s", buf);
8544 if (per_cu->is_debug_types)
8545 process_full_type_unit (cu, item.pretend_language);
8547 process_full_comp_unit (cu, item.pretend_language);
8549 if (dwarf_read_debug >= debug_print_threshold)
8550 dwarf_read_debug_printf ("Done expanding %s", buf);
8555 per_objfile->per_bfd->queue->pop ();
8558 dwarf_read_debug_printf ("Done expanding symtabs of %s.",
8559 objfile_name (per_objfile->objfile));
8562 /* Read in full symbols for PST, and anything it depends on. */
8565 dwarf2_psymtab::expand_psymtab (struct objfile *objfile)
8567 gdb_assert (!readin_p (objfile));
8569 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
8570 free_cached_comp_units freer (per_objfile);
8571 expand_dependencies (objfile);
8573 dw2_do_instantiate_symtab (per_cu_data, per_objfile, false);
8574 gdb_assert (get_compunit_symtab (objfile) != nullptr);
8577 /* See psympriv.h. */
8580 dwarf2_psymtab::readin_p (struct objfile *objfile) const
8582 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
8583 return per_objfile->symtab_set_p (per_cu_data);
8586 /* See psympriv.h. */
8589 dwarf2_psymtab::get_compunit_symtab (struct objfile *objfile) const
8591 dwarf2_per_objfile *per_objfile = get_dwarf2_per_objfile (objfile);
8592 return per_objfile->get_symtab (per_cu_data);
8595 /* Trivial hash function for die_info: the hash value of a DIE
8596 is its offset in .debug_info for this objfile. */
8599 die_hash (const void *item)
8601 const struct die_info *die = (const struct die_info *) item;
8603 return to_underlying (die->sect_off);
8606 /* Trivial comparison function for die_info structures: two DIEs
8607 are equal if they have the same offset. */
8610 die_eq (const void *item_lhs, const void *item_rhs)
8612 const struct die_info *die_lhs = (const struct die_info *) item_lhs;
8613 const struct die_info *die_rhs = (const struct die_info *) item_rhs;
8615 return die_lhs->sect_off == die_rhs->sect_off;
8618 /* Load the DIEs associated with PER_CU into memory.
8620 In some cases, the caller, while reading partial symbols, will need to load
8621 the full symbols for the CU for some reason. It will already have a
8622 dwarf2_cu object for THIS_CU and pass it as EXISTING_CU, so it can be re-used
8623 rather than creating a new one. */
8626 load_full_comp_unit (dwarf2_per_cu_data *this_cu,
8627 dwarf2_per_objfile *per_objfile,
8628 dwarf2_cu *existing_cu,
8630 enum language pretend_language)
8632 gdb_assert (! this_cu->is_debug_types);
8634 cutu_reader reader (this_cu, per_objfile, NULL, existing_cu, skip_partial);
8638 struct dwarf2_cu *cu = reader.cu;
8639 const gdb_byte *info_ptr = reader.info_ptr;
8641 gdb_assert (cu->die_hash == NULL);
8643 htab_create_alloc_ex (cu->header.length / 12,
8647 &cu->comp_unit_obstack,
8648 hashtab_obstack_allocate,
8649 dummy_obstack_deallocate);
8651 if (reader.comp_unit_die->has_children)
8652 reader.comp_unit_die->child
8653 = read_die_and_siblings (&reader, reader.info_ptr,
8654 &info_ptr, reader.comp_unit_die);
8655 cu->dies = reader.comp_unit_die;
8656 /* comp_unit_die is not stored in die_hash, no need. */
8658 /* We try not to read any attributes in this function, because not
8659 all CUs needed for references have been loaded yet, and symbol
8660 table processing isn't initialized. But we have to set the CU language,
8661 or we won't be able to build types correctly.
8662 Similarly, if we do not read the producer, we can not apply
8663 producer-specific interpretation. */
8664 prepare_one_comp_unit (cu, cu->dies, pretend_language);
8669 /* Add a DIE to the delayed physname list. */
8672 add_to_method_list (struct type *type, int fnfield_index, int index,
8673 const char *name, struct die_info *die,
8674 struct dwarf2_cu *cu)
8676 struct delayed_method_info mi;
8678 mi.fnfield_index = fnfield_index;
8682 cu->method_list.push_back (mi);
8685 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
8686 "const" / "volatile". If so, decrements LEN by the length of the
8687 modifier and return true. Otherwise return false. */
8691 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
8693 size_t mod_len = sizeof (mod) - 1;
8694 if (len > mod_len && startswith (physname + (len - mod_len), mod))
8702 /* Compute the physnames of any methods on the CU's method list.
8704 The computation of method physnames is delayed in order to avoid the
8705 (bad) condition that one of the method's formal parameters is of an as yet
8709 compute_delayed_physnames (struct dwarf2_cu *cu)
8711 /* Only C++ delays computing physnames. */
8712 if (cu->method_list.empty ())
8714 gdb_assert (cu->per_cu->lang == language_cplus);
8716 for (const delayed_method_info &mi : cu->method_list)
8718 const char *physname;
8719 struct fn_fieldlist *fn_flp
8720 = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
8721 physname = dwarf2_physname (mi.name, mi.die, cu);
8722 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
8723 = physname ? physname : "";
8725 /* Since there's no tag to indicate whether a method is a
8726 const/volatile overload, extract that information out of the
8728 if (physname != NULL)
8730 size_t len = strlen (physname);
8734 if (physname[len] == ')') /* shortcut */
8736 else if (check_modifier (physname, len, " const"))
8737 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
8738 else if (check_modifier (physname, len, " volatile"))
8739 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
8746 /* The list is no longer needed. */
8747 cu->method_list.clear ();
8750 /* Go objects should be embedded in a DW_TAG_module DIE,
8751 and it's not clear if/how imported objects will appear.
8752 To keep Go support simple until that's worked out,
8753 go back through what we've read and create something usable.
8754 We could do this while processing each DIE, and feels kinda cleaner,
8755 but that way is more invasive.
8756 This is to, for example, allow the user to type "p var" or "b main"
8757 without having to specify the package name, and allow lookups
8758 of module.object to work in contexts that use the expression
8762 fixup_go_packaging (struct dwarf2_cu *cu)
8764 gdb::unique_xmalloc_ptr<char> package_name;
8765 struct pending *list;
8768 for (list = *cu->get_builder ()->get_global_symbols ();
8772 for (i = 0; i < list->nsyms; ++i)
8774 struct symbol *sym = list->symbol[i];
8776 if (sym->language () == language_go
8777 && SYMBOL_CLASS (sym) == LOC_BLOCK)
8779 gdb::unique_xmalloc_ptr<char> this_package_name
8780 (go_symbol_package_name (sym));
8782 if (this_package_name == NULL)
8784 if (package_name == NULL)
8785 package_name = std::move (this_package_name);
8788 struct objfile *objfile = cu->per_objfile->objfile;
8789 if (strcmp (package_name.get (), this_package_name.get ()) != 0)
8790 complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
8791 (symbol_symtab (sym) != NULL
8792 ? symtab_to_filename_for_display
8793 (symbol_symtab (sym))
8794 : objfile_name (objfile)),
8795 this_package_name.get (), package_name.get ());
8801 if (package_name != NULL)
8803 struct objfile *objfile = cu->per_objfile->objfile;
8804 const char *saved_package_name = objfile->intern (package_name.get ());
8805 struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
8806 saved_package_name);
8809 sym = new (&objfile->objfile_obstack) symbol;
8810 sym->set_language (language_go, &objfile->objfile_obstack);
8811 sym->compute_and_set_names (saved_package_name, false, objfile->per_bfd);
8812 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
8813 e.g., "main" finds the "main" module and not C's main(). */
8814 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
8815 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
8816 SYMBOL_TYPE (sym) = type;
8818 add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
8822 /* Allocate a fully-qualified name consisting of the two parts on the
8826 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
8828 return obconcat (obstack, p1, "::", p2, (char *) NULL);
8831 /* A helper that allocates a variant part to attach to a Rust enum
8832 type. OBSTACK is where the results should be allocated. TYPE is
8833 the type we're processing. DISCRIMINANT_INDEX is the index of the
8834 discriminant. It must be the index of one of the fields of TYPE,
8835 or -1 to mean there is no discriminant (univariant enum).
8836 DEFAULT_INDEX is the index of the default field; or -1 if there is
8837 no default. RANGES is indexed by "effective" field number (the
8838 field index, but omitting the discriminant and default fields) and
8839 must hold the discriminant values used by the variants. Note that
8840 RANGES must have a lifetime at least as long as OBSTACK -- either
8841 already allocated on it, or static. */
8844 alloc_rust_variant (struct obstack *obstack, struct type *type,
8845 int discriminant_index, int default_index,
8846 gdb::array_view<discriminant_range> ranges)
8848 /* When DISCRIMINANT_INDEX == -1, we have a univariant enum. */
8849 gdb_assert (discriminant_index == -1
8850 || (discriminant_index >= 0
8851 && discriminant_index < type->num_fields ()));
8852 gdb_assert (default_index == -1
8853 || (default_index >= 0 && default_index < type->num_fields ()));
8855 /* We have one variant for each non-discriminant field. */
8856 int n_variants = type->num_fields ();
8857 if (discriminant_index != -1)
8860 variant *variants = new (obstack) variant[n_variants];
8863 for (int i = 0; i < type->num_fields (); ++i)
8865 if (i == discriminant_index)
8868 variants[var_idx].first_field = i;
8869 variants[var_idx].last_field = i + 1;
8871 /* The default field does not need a range, but other fields do.
8872 We skipped the discriminant above. */
8873 if (i != default_index)
8875 variants[var_idx].discriminants = ranges.slice (range_idx, 1);
8882 gdb_assert (range_idx == ranges.size ());
8883 gdb_assert (var_idx == n_variants);
8885 variant_part *part = new (obstack) variant_part;
8886 part->discriminant_index = discriminant_index;
8887 /* If there is no discriminant, then whether it is signed is of no
8890 = (discriminant_index == -1
8892 : type->field (discriminant_index).type ()->is_unsigned ());
8893 part->variants = gdb::array_view<variant> (variants, n_variants);
8895 void *storage = obstack_alloc (obstack, sizeof (gdb::array_view<variant_part>));
8896 gdb::array_view<variant_part> *prop_value
8897 = new (storage) gdb::array_view<variant_part> (part, 1);
8899 struct dynamic_prop prop;
8900 prop.set_variant_parts (prop_value);
8902 type->add_dyn_prop (DYN_PROP_VARIANT_PARTS, prop);
8905 /* Some versions of rustc emitted enums in an unusual way.
8907 Ordinary enums were emitted as unions. The first element of each
8908 structure in the union was named "RUST$ENUM$DISR". This element
8909 held the discriminant.
8911 These versions of Rust also implemented the "non-zero"
8912 optimization. When the enum had two values, and one is empty and
8913 the other holds a pointer that cannot be zero, the pointer is used
8914 as the discriminant, with a zero value meaning the empty variant.
8915 Here, the union's first member is of the form
8916 RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
8917 where the fieldnos are the indices of the fields that should be
8918 traversed in order to find the field (which may be several fields deep)
8919 and the variantname is the name of the variant of the case when the
8922 This function recognizes whether TYPE is of one of these forms,
8923 and, if so, smashes it to be a variant type. */
8926 quirk_rust_enum (struct type *type, struct objfile *objfile)
8928 gdb_assert (type->code () == TYPE_CODE_UNION);
8930 /* We don't need to deal with empty enums. */
8931 if (type->num_fields () == 0)
8934 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
8935 if (type->num_fields () == 1
8936 && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
8938 const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
8940 /* Decode the field name to find the offset of the
8942 ULONGEST bit_offset = 0;
8943 struct type *field_type = type->field (0).type ();
8944 while (name[0] >= '0' && name[0] <= '9')
8947 unsigned long index = strtoul (name, &tail, 10);
8950 || index >= field_type->num_fields ()
8951 || (TYPE_FIELD_LOC_KIND (field_type, index)
8952 != FIELD_LOC_KIND_BITPOS))
8954 complaint (_("Could not parse Rust enum encoding string \"%s\""
8956 TYPE_FIELD_NAME (type, 0),
8957 objfile_name (objfile));
8962 bit_offset += TYPE_FIELD_BITPOS (field_type, index);
8963 field_type = field_type->field (index).type ();
8966 /* Smash this type to be a structure type. We have to do this
8967 because the type has already been recorded. */
8968 type->set_code (TYPE_CODE_STRUCT);
8969 type->set_num_fields (3);
8970 /* Save the field we care about. */
8971 struct field saved_field = type->field (0);
8973 ((struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field)));
8975 /* Put the discriminant at index 0. */
8976 type->field (0).set_type (field_type);
8977 TYPE_FIELD_ARTIFICIAL (type, 0) = 1;
8978 TYPE_FIELD_NAME (type, 0) = "<<discriminant>>";
8979 SET_FIELD_BITPOS (type->field (0), bit_offset);
8981 /* The order of fields doesn't really matter, so put the real
8982 field at index 1 and the data-less field at index 2. */
8983 type->field (1) = saved_field;
8984 TYPE_FIELD_NAME (type, 1)
8985 = rust_last_path_segment (type->field (1).type ()->name ());
8986 type->field (1).type ()->set_name
8987 (rust_fully_qualify (&objfile->objfile_obstack, type->name (),
8988 TYPE_FIELD_NAME (type, 1)));
8990 const char *dataless_name
8991 = rust_fully_qualify (&objfile->objfile_obstack, type->name (),
8993 struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
8995 type->field (2).set_type (dataless_type);
8996 /* NAME points into the original discriminant name, which
8997 already has the correct lifetime. */
8998 TYPE_FIELD_NAME (type, 2) = name;
8999 SET_FIELD_BITPOS (type->field (2), 0);
9001 /* Indicate that this is a variant type. */
9002 static discriminant_range ranges[1] = { { 0, 0 } };
9003 alloc_rust_variant (&objfile->objfile_obstack, type, 0, 1, ranges);
9005 /* A union with a single anonymous field is probably an old-style
9007 else if (type->num_fields () == 1 && streq (TYPE_FIELD_NAME (type, 0), ""))
9009 /* Smash this type to be a structure type. We have to do this
9010 because the type has already been recorded. */
9011 type->set_code (TYPE_CODE_STRUCT);
9013 struct type *field_type = type->field (0).type ();
9014 const char *variant_name
9015 = rust_last_path_segment (field_type->name ());
9016 TYPE_FIELD_NAME (type, 0) = variant_name;
9017 field_type->set_name
9018 (rust_fully_qualify (&objfile->objfile_obstack,
9019 type->name (), variant_name));
9021 alloc_rust_variant (&objfile->objfile_obstack, type, -1, 0, {});
9025 struct type *disr_type = nullptr;
9026 for (int i = 0; i < type->num_fields (); ++i)
9028 disr_type = type->field (i).type ();
9030 if (disr_type->code () != TYPE_CODE_STRUCT)
9032 /* All fields of a true enum will be structs. */
9035 else if (disr_type->num_fields () == 0)
9037 /* Could be data-less variant, so keep going. */
9038 disr_type = nullptr;
9040 else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
9041 "RUST$ENUM$DISR") != 0)
9043 /* Not a Rust enum. */
9053 /* If we got here without a discriminant, then it's probably
9055 if (disr_type == nullptr)
9058 /* Smash this type to be a structure type. We have to do this
9059 because the type has already been recorded. */
9060 type->set_code (TYPE_CODE_STRUCT);
9062 /* Make space for the discriminant field. */
9063 struct field *disr_field = &disr_type->field (0);
9065 = (struct field *) TYPE_ZALLOC (type, ((type->num_fields () + 1)
9066 * sizeof (struct field)));
9067 memcpy (new_fields + 1, type->fields (),
9068 type->num_fields () * sizeof (struct field));
9069 type->set_fields (new_fields);
9070 type->set_num_fields (type->num_fields () + 1);
9072 /* Install the discriminant at index 0 in the union. */
9073 type->field (0) = *disr_field;
9074 TYPE_FIELD_ARTIFICIAL (type, 0) = 1;
9075 TYPE_FIELD_NAME (type, 0) = "<<discriminant>>";
9077 /* We need a way to find the correct discriminant given a
9078 variant name. For convenience we build a map here. */
9079 struct type *enum_type = disr_field->type ();
9080 std::unordered_map<std::string, ULONGEST> discriminant_map;
9081 for (int i = 0; i < enum_type->num_fields (); ++i)
9083 if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
9086 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
9087 discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
9091 int n_fields = type->num_fields ();
9092 /* We don't need a range entry for the discriminant, but we do
9093 need one for every other field, as there is no default
9095 discriminant_range *ranges = XOBNEWVEC (&objfile->objfile_obstack,
9098 /* Skip the discriminant here. */
9099 for (int i = 1; i < n_fields; ++i)
9101 /* Find the final word in the name of this variant's type.
9102 That name can be used to look up the correct
9104 const char *variant_name
9105 = rust_last_path_segment (type->field (i).type ()->name ());
9107 auto iter = discriminant_map.find (variant_name);
9108 if (iter != discriminant_map.end ())
9110 ranges[i - 1].low = iter->second;
9111 ranges[i - 1].high = iter->second;
9114 /* In Rust, each element should have the size of the
9116 TYPE_LENGTH (type->field (i).type ()) = TYPE_LENGTH (type);
9118 /* Remove the discriminant field, if it exists. */
9119 struct type *sub_type = type->field (i).type ();
9120 if (sub_type->num_fields () > 0)
9122 sub_type->set_num_fields (sub_type->num_fields () - 1);
9123 sub_type->set_fields (sub_type->fields () + 1);
9125 TYPE_FIELD_NAME (type, i) = variant_name;
9127 (rust_fully_qualify (&objfile->objfile_obstack,
9128 type->name (), variant_name));
9131 /* Indicate that this is a variant type. */
9132 alloc_rust_variant (&objfile->objfile_obstack, type, 0, -1,
9133 gdb::array_view<discriminant_range> (ranges,
9138 /* Rewrite some Rust unions to be structures with variants parts. */
9141 rust_union_quirks (struct dwarf2_cu *cu)
9143 gdb_assert (cu->per_cu->lang == language_rust);
9144 for (type *type_ : cu->rust_unions)
9145 quirk_rust_enum (type_, cu->per_objfile->objfile);
9146 /* We don't need this any more. */
9147 cu->rust_unions.clear ();
9152 type_unit_group_unshareable *
9153 dwarf2_per_objfile::get_type_unit_group_unshareable (type_unit_group *tu_group)
9155 auto iter = this->m_type_units.find (tu_group);
9156 if (iter != this->m_type_units.end ())
9157 return iter->second.get ();
9159 type_unit_group_unshareable_up uniq (new type_unit_group_unshareable);
9160 type_unit_group_unshareable *result = uniq.get ();
9161 this->m_type_units[tu_group] = std::move (uniq);
9166 dwarf2_per_objfile::get_type_for_signatured_type
9167 (signatured_type *sig_type) const
9169 auto iter = this->m_type_map.find (sig_type);
9170 if (iter == this->m_type_map.end ())
9173 return iter->second;
9176 void dwarf2_per_objfile::set_type_for_signatured_type
9177 (signatured_type *sig_type, struct type *type)
9179 gdb_assert (this->m_type_map.find (sig_type) == this->m_type_map.end ());
9181 this->m_type_map[sig_type] = type;
9184 /* A helper function for computing the list of all symbol tables
9185 included by PER_CU. */
9188 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
9189 htab_t all_children, htab_t all_type_symtabs,
9190 dwarf2_per_cu_data *per_cu,
9191 dwarf2_per_objfile *per_objfile,
9192 struct compunit_symtab *immediate_parent)
9194 void **slot = htab_find_slot (all_children, per_cu, INSERT);
9197 /* This inclusion and its children have been processed. */
9203 /* Only add a CU if it has a symbol table. */
9204 compunit_symtab *cust = per_objfile->get_symtab (per_cu);
9207 /* If this is a type unit only add its symbol table if we haven't
9208 seen it yet (type unit per_cu's can share symtabs). */
9209 if (per_cu->is_debug_types)
9211 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
9215 result->push_back (cust);
9216 if (cust->user == NULL)
9217 cust->user = immediate_parent;
9222 result->push_back (cust);
9223 if (cust->user == NULL)
9224 cust->user = immediate_parent;
9228 if (!per_cu->imported_symtabs_empty ())
9229 for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
9231 recursively_compute_inclusions (result, all_children,
9232 all_type_symtabs, ptr, per_objfile,
9237 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
9241 compute_compunit_symtab_includes (dwarf2_per_cu_data *per_cu,
9242 dwarf2_per_objfile *per_objfile)
9244 gdb_assert (! per_cu->is_debug_types);
9246 if (!per_cu->imported_symtabs_empty ())
9249 std::vector<compunit_symtab *> result_symtabs;
9250 compunit_symtab *cust = per_objfile->get_symtab (per_cu);
9252 /* If we don't have a symtab, we can just skip this case. */
9256 htab_up all_children (htab_create_alloc (1, htab_hash_pointer,
9258 NULL, xcalloc, xfree));
9259 htab_up all_type_symtabs (htab_create_alloc (1, htab_hash_pointer,
9261 NULL, xcalloc, xfree));
9263 for (dwarf2_per_cu_data *ptr : *per_cu->imported_symtabs)
9265 recursively_compute_inclusions (&result_symtabs, all_children.get (),
9266 all_type_symtabs.get (), ptr,
9270 /* Now we have a transitive closure of all the included symtabs. */
9271 len = result_symtabs.size ();
9273 = XOBNEWVEC (&per_objfile->objfile->objfile_obstack,
9274 struct compunit_symtab *, len + 1);
9275 memcpy (cust->includes, result_symtabs.data (),
9276 len * sizeof (compunit_symtab *));
9277 cust->includes[len] = NULL;
9281 /* Compute the 'includes' field for the symtabs of all the CUs we just
9285 process_cu_includes (dwarf2_per_objfile *per_objfile)
9287 for (dwarf2_per_cu_data *iter : per_objfile->per_bfd->just_read_cus)
9289 if (! iter->is_debug_types)
9290 compute_compunit_symtab_includes (iter, per_objfile);
9293 per_objfile->per_bfd->just_read_cus.clear ();
9296 /* Generate full symbol information for CU, whose DIEs have
9297 already been loaded into memory. */
9300 process_full_comp_unit (dwarf2_cu *cu, enum language pretend_language)
9302 dwarf2_per_objfile *per_objfile = cu->per_objfile;
9303 struct objfile *objfile = per_objfile->objfile;
9304 struct gdbarch *gdbarch = objfile->arch ();
9305 CORE_ADDR lowpc, highpc;
9306 struct compunit_symtab *cust;
9308 struct block *static_block;
9311 baseaddr = objfile->text_section_offset ();
9313 /* Clear the list here in case something was left over. */
9314 cu->method_list.clear ();
9316 dwarf2_find_base_address (cu->dies, cu);
9318 /* Before we start reading the top-level DIE, ensure it has a valid tag
9320 switch (cu->dies->tag)
9322 case DW_TAG_compile_unit:
9323 case DW_TAG_partial_unit:
9324 case DW_TAG_type_unit:
9327 error (_("Dwarf Error: unexpected tag '%s' at offset %s [in module %s]"),
9328 dwarf_tag_name (cu->dies->tag),
9329 sect_offset_str (cu->per_cu->sect_off),
9330 objfile_name (per_objfile->objfile));
9333 /* Do line number decoding in read_file_scope () */
9334 process_die (cu->dies, cu);
9336 /* For now fudge the Go package. */
9337 if (cu->per_cu->lang == language_go)
9338 fixup_go_packaging (cu);
9340 /* Now that we have processed all the DIEs in the CU, all the types
9341 should be complete, and it should now be safe to compute all of the
9343 compute_delayed_physnames (cu);
9345 if (cu->per_cu->lang == language_rust)
9346 rust_union_quirks (cu);
9348 /* Some compilers don't define a DW_AT_high_pc attribute for the
9349 compilation unit. If the DW_AT_high_pc is missing, synthesize
9350 it, by scanning the DIE's below the compilation unit. */
9351 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
9353 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
9354 static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
9356 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
9357 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
9358 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
9359 addrmap to help ensure it has an accurate map of pc values belonging to
9361 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
9363 cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
9364 SECT_OFF_TEXT (objfile),
9369 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
9371 /* Set symtab language to language from DW_AT_language. If the
9372 compilation is from a C file generated by language preprocessors, do
9373 not set the language if it was already deduced by start_subfile. */
9374 if (!(cu->per_cu->lang == language_c
9375 && COMPUNIT_FILETABS (cust)->language != language_unknown))
9376 COMPUNIT_FILETABS (cust)->language = cu->per_cu->lang;
9378 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
9379 produce DW_AT_location with location lists but it can be possibly
9380 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
9381 there were bugs in prologue debug info, fixed later in GCC-4.5
9382 by "unwind info for epilogues" patch (which is not directly related).
9384 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
9385 needed, it would be wrong due to missing DW_AT_producer there.
9387 Still one can confuse GDB by using non-standard GCC compilation
9388 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
9390 if (cu->has_loclist && gcc_4_minor >= 5)
9391 cust->locations_valid = 1;
9393 if (gcc_4_minor >= 5)
9394 cust->epilogue_unwind_valid = 1;
9396 cust->call_site_htab = cu->call_site_htab;
9399 per_objfile->set_symtab (cu->per_cu, cust);
9401 /* Push it for inclusion processing later. */
9402 per_objfile->per_bfd->just_read_cus.push_back (cu->per_cu);
9404 /* Not needed any more. */
9405 cu->reset_builder ();
9408 /* Generate full symbol information for type unit CU, whose DIEs have
9409 already been loaded into memory. */
9412 process_full_type_unit (dwarf2_cu *cu,
9413 enum language pretend_language)
9415 dwarf2_per_objfile *per_objfile = cu->per_objfile;
9416 struct objfile *objfile = per_objfile->objfile;
9417 struct compunit_symtab *cust;
9418 struct signatured_type *sig_type;
9420 gdb_assert (cu->per_cu->is_debug_types);
9421 sig_type = (struct signatured_type *) cu->per_cu;
9423 /* Clear the list here in case something was left over. */
9424 cu->method_list.clear ();
9426 /* The symbol tables are set up in read_type_unit_scope. */
9427 process_die (cu->dies, cu);
9429 /* For now fudge the Go package. */
9430 if (cu->per_cu->lang == language_go)
9431 fixup_go_packaging (cu);
9433 /* Now that we have processed all the DIEs in the CU, all the types
9434 should be complete, and it should now be safe to compute all of the
9436 compute_delayed_physnames (cu);
9438 if (cu->per_cu->lang == language_rust)
9439 rust_union_quirks (cu);
9441 /* TUs share symbol tables.
9442 If this is the first TU to use this symtab, complete the construction
9443 of it with end_expandable_symtab. Otherwise, complete the addition of
9444 this TU's symbols to the existing symtab. */
9445 type_unit_group_unshareable *tug_unshare =
9446 per_objfile->get_type_unit_group_unshareable (sig_type->type_unit_group);
9447 if (tug_unshare->compunit_symtab == NULL)
9449 buildsym_compunit *builder = cu->get_builder ();
9450 cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
9451 tug_unshare->compunit_symtab = cust;
9455 /* Set symtab language to language from DW_AT_language. If the
9456 compilation is from a C file generated by language preprocessors,
9457 do not set the language if it was already deduced by
9459 if (!(cu->per_cu->lang == language_c
9460 && COMPUNIT_FILETABS (cust)->language != language_c))
9461 COMPUNIT_FILETABS (cust)->language = cu->per_cu->lang;
9466 cu->get_builder ()->augment_type_symtab ();
9467 cust = tug_unshare->compunit_symtab;
9470 per_objfile->set_symtab (cu->per_cu, cust);
9472 /* Not needed any more. */
9473 cu->reset_builder ();
9476 /* Process an imported unit DIE. */
9479 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
9481 struct attribute *attr;
9483 /* For now we don't handle imported units in type units. */
9484 if (cu->per_cu->is_debug_types)
9486 error (_("Dwarf Error: DW_TAG_imported_unit is not"
9487 " supported in type units [in module %s]"),
9488 objfile_name (cu->per_objfile->objfile));
9491 attr = dwarf2_attr (die, DW_AT_import, cu);
9494 sect_offset sect_off = attr->get_ref_die_offset ();
9495 bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
9496 dwarf2_per_objfile *per_objfile = cu->per_objfile;
9497 dwarf2_per_cu_data *per_cu
9498 = dwarf2_find_containing_comp_unit (sect_off, is_dwz, per_objfile);
9500 /* We're importing a C++ compilation unit with tag DW_TAG_compile_unit
9501 into another compilation unit, at root level. Regard this as a hint,
9503 if (die->parent && die->parent->parent == NULL
9504 && per_cu->unit_type == DW_UT_compile
9505 && per_cu->lang == language_cplus)
9508 /* If necessary, add it to the queue and load its DIEs. */
9509 if (maybe_queue_comp_unit (cu, per_cu, per_objfile,
9511 load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
9512 false, cu->per_cu->lang);
9514 cu->per_cu->imported_symtabs_push (per_cu);
9518 /* RAII object that represents a process_die scope: i.e.,
9519 starts/finishes processing a DIE. */
9520 class process_die_scope
9523 process_die_scope (die_info *die, dwarf2_cu *cu)
9524 : m_die (die), m_cu (cu)
9526 /* We should only be processing DIEs not already in process. */
9527 gdb_assert (!m_die->in_process);
9528 m_die->in_process = true;
9531 ~process_die_scope ()
9533 m_die->in_process = false;
9535 /* If we're done processing the DIE for the CU that owns the line
9536 header, we don't need the line header anymore. */
9537 if (m_cu->line_header_die_owner == m_die)
9539 delete m_cu->line_header;
9540 m_cu->line_header = NULL;
9541 m_cu->line_header_die_owner = NULL;
9550 /* Process a die and its children. */
9553 process_die (struct die_info *die, struct dwarf2_cu *cu)
9555 process_die_scope scope (die, cu);
9559 case DW_TAG_padding:
9561 case DW_TAG_compile_unit:
9562 case DW_TAG_partial_unit:
9563 read_file_scope (die, cu);
9565 case DW_TAG_type_unit:
9566 read_type_unit_scope (die, cu);
9568 case DW_TAG_subprogram:
9569 /* Nested subprograms in Fortran get a prefix. */
9570 if (cu->per_cu->lang == language_fortran
9571 && die->parent != NULL
9572 && die->parent->tag == DW_TAG_subprogram)
9573 cu->processing_has_namespace_info = true;
9575 case DW_TAG_inlined_subroutine:
9576 read_func_scope (die, cu);
9578 case DW_TAG_lexical_block:
9579 case DW_TAG_try_block:
9580 case DW_TAG_catch_block:
9581 read_lexical_block_scope (die, cu);
9583 case DW_TAG_call_site:
9584 case DW_TAG_GNU_call_site:
9585 read_call_site_scope (die, cu);
9587 case DW_TAG_class_type:
9588 case DW_TAG_interface_type:
9589 case DW_TAG_structure_type:
9590 case DW_TAG_union_type:
9591 process_structure_scope (die, cu);
9593 case DW_TAG_enumeration_type:
9594 process_enumeration_scope (die, cu);
9597 /* These dies have a type, but processing them does not create
9598 a symbol or recurse to process the children. Therefore we can
9599 read them on-demand through read_type_die. */
9600 case DW_TAG_subroutine_type:
9601 case DW_TAG_set_type:
9602 case DW_TAG_pointer_type:
9603 case DW_TAG_ptr_to_member_type:
9604 case DW_TAG_reference_type:
9605 case DW_TAG_rvalue_reference_type:
9606 case DW_TAG_string_type:
9609 case DW_TAG_array_type:
9610 /* We only need to handle this case for Ada -- in other
9611 languages, it's normal for the compiler to emit a typedef
9613 if (cu->per_cu->lang != language_ada)
9616 case DW_TAG_base_type:
9617 case DW_TAG_subrange_type:
9618 case DW_TAG_typedef:
9619 /* Add a typedef symbol for the type definition, if it has a
9621 new_symbol (die, read_type_die (die, cu), cu);
9623 case DW_TAG_common_block:
9624 read_common_block (die, cu);
9626 case DW_TAG_common_inclusion:
9628 case DW_TAG_namespace:
9629 cu->processing_has_namespace_info = true;
9630 read_namespace (die, cu);
9633 cu->processing_has_namespace_info = true;
9634 read_module (die, cu);
9636 case DW_TAG_imported_declaration:
9637 cu->processing_has_namespace_info = true;
9638 if (read_namespace_alias (die, cu))
9640 /* The declaration is not a global namespace alias. */
9642 case DW_TAG_imported_module:
9643 cu->processing_has_namespace_info = true;
9644 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
9645 || cu->per_cu->lang != language_fortran))
9646 complaint (_("Tag '%s' has unexpected children"),
9647 dwarf_tag_name (die->tag));
9648 read_import_statement (die, cu);
9651 case DW_TAG_imported_unit:
9652 process_imported_unit_die (die, cu);
9655 case DW_TAG_variable:
9656 read_variable (die, cu);
9660 new_symbol (die, NULL, cu);
9665 /* DWARF name computation. */
9667 /* A helper function for dwarf2_compute_name which determines whether DIE
9668 needs to have the name of the scope prepended to the name listed in the
9672 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
9674 struct attribute *attr;
9678 case DW_TAG_namespace:
9679 case DW_TAG_typedef:
9680 case DW_TAG_class_type:
9681 case DW_TAG_interface_type:
9682 case DW_TAG_structure_type:
9683 case DW_TAG_union_type:
9684 case DW_TAG_enumeration_type:
9685 case DW_TAG_enumerator:
9686 case DW_TAG_subprogram:
9687 case DW_TAG_inlined_subroutine:
9689 case DW_TAG_imported_declaration:
9692 case DW_TAG_variable:
9693 case DW_TAG_constant:
9694 /* We only need to prefix "globally" visible variables. These include
9695 any variable marked with DW_AT_external or any variable that
9696 lives in a namespace. [Variables in anonymous namespaces
9697 require prefixing, but they are not DW_AT_external.] */
9699 if (dwarf2_attr (die, DW_AT_specification, cu))
9701 struct dwarf2_cu *spec_cu = cu;
9703 return die_needs_namespace (die_specification (die, &spec_cu),
9707 attr = dwarf2_attr (die, DW_AT_external, cu);
9708 if (attr == NULL && die->parent->tag != DW_TAG_namespace
9709 && die->parent->tag != DW_TAG_module)
9711 /* A variable in a lexical block of some kind does not need a
9712 namespace, even though in C++ such variables may be external
9713 and have a mangled name. */
9714 if (die->parent->tag == DW_TAG_lexical_block
9715 || die->parent->tag == DW_TAG_try_block
9716 || die->parent->tag == DW_TAG_catch_block
9717 || die->parent->tag == DW_TAG_subprogram)
9726 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
9727 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
9728 defined for the given DIE. */
9730 static struct attribute *
9731 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
9733 struct attribute *attr;
9735 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
9737 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
9742 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
9743 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
9744 defined for the given DIE. */
9747 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
9749 const char *linkage_name;
9751 linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
9752 if (linkage_name == NULL)
9753 linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
9755 /* rustc emits invalid values for DW_AT_linkage_name. Ignore these.
9756 See https://github.com/rust-lang/rust/issues/32925. */
9757 if (cu->per_cu->lang == language_rust && linkage_name != NULL
9758 && strchr (linkage_name, '{') != NULL)
9759 linkage_name = NULL;
9761 return linkage_name;
9764 /* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
9765 compute the physname for the object, which include a method's:
9766 - formal parameters (C++),
9767 - receiver type (Go),
9769 The term "physname" is a bit confusing.
9770 For C++, for example, it is the demangled name.
9771 For Go, for example, it's the mangled name.
9773 For Ada, return the DIE's linkage name rather than the fully qualified
9774 name. PHYSNAME is ignored..
9776 The result is allocated on the objfile->per_bfd's obstack and
9780 dwarf2_compute_name (const char *name,
9781 struct die_info *die, struct dwarf2_cu *cu,
9784 struct objfile *objfile = cu->per_objfile->objfile;
9787 name = dwarf2_name (die, cu);
9789 enum language lang = cu->per_cu->lang;
9791 /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
9792 but otherwise compute it by typename_concat inside GDB.
9793 FIXME: Actually this is not really true, or at least not always true.
9794 It's all very confusing. compute_and_set_names doesn't try to demangle
9795 Fortran names because there is no mangling standard. So new_symbol
9796 will set the demangled name to the result of dwarf2_full_name, and it is
9797 the demangled name that GDB uses if it exists. */
9798 if (lang == language_ada
9799 || (lang == language_fortran && physname))
9801 /* For Ada unit, we prefer the linkage name over the name, as
9802 the former contains the exported name, which the user expects
9803 to be able to reference. Ideally, we want the user to be able
9804 to reference this entity using either natural or linkage name,
9805 but we haven't started looking at this enhancement yet. */
9806 const char *linkage_name = dw2_linkage_name (die, cu);
9808 if (linkage_name != NULL)
9809 return linkage_name;
9812 /* These are the only languages we know how to qualify names in. */
9814 && (lang == language_cplus
9815 || lang == language_fortran || lang == language_d
9816 || lang == language_rust))
9818 if (die_needs_namespace (die, cu))
9821 const char *canonical_name = NULL;
9825 prefix = determine_prefix (die, cu);
9826 if (*prefix != '\0')
9828 gdb::unique_xmalloc_ptr<char> prefixed_name
9829 (typename_concat (NULL, prefix, name, physname, cu));
9831 buf.puts (prefixed_name.get ());
9836 /* Template parameters may be specified in the DIE's DW_AT_name, or
9837 as children with DW_TAG_template_type_param or
9838 DW_TAG_value_type_param. If the latter, add them to the name
9839 here. If the name already has template parameters, then
9840 skip this step; some versions of GCC emit both, and
9841 it is more efficient to use the pre-computed name.
9843 Something to keep in mind about this process: it is very
9844 unlikely, or in some cases downright impossible, to produce
9845 something that will match the mangled name of a function.
9846 If the definition of the function has the same debug info,
9847 we should be able to match up with it anyway. But fallbacks
9848 using the minimal symbol, for instance to find a method
9849 implemented in a stripped copy of libstdc++, will not work.
9850 If we do not have debug info for the definition, we will have to
9851 match them up some other way.
9853 When we do name matching there is a related problem with function
9854 templates; two instantiated function templates are allowed to
9855 differ only by their return types, which we do not add here. */
9857 if (lang == language_cplus && strchr (name, '<') == NULL)
9859 struct attribute *attr;
9860 struct die_info *child;
9863 die->building_fullname = 1;
9865 for (child = die->child; child != NULL; child = child->sibling)
9869 const gdb_byte *bytes;
9870 struct dwarf2_locexpr_baton *baton;
9873 if (child->tag != DW_TAG_template_type_param
9874 && child->tag != DW_TAG_template_value_param)
9885 attr = dwarf2_attr (child, DW_AT_type, cu);
9888 complaint (_("template parameter missing DW_AT_type"));
9889 buf.puts ("UNKNOWN_TYPE");
9892 type = die_type (child, cu);
9894 if (child->tag == DW_TAG_template_type_param)
9896 cu->language_defn->print_type (type, "", &buf, -1, 0,
9897 &type_print_raw_options);
9901 attr = dwarf2_attr (child, DW_AT_const_value, cu);
9904 complaint (_("template parameter missing "
9905 "DW_AT_const_value"));
9906 buf.puts ("UNKNOWN_VALUE");
9910 dwarf2_const_value_attr (attr, type, name,
9911 &cu->comp_unit_obstack, cu,
9912 &value, &bytes, &baton);
9914 if (type->has_no_signedness ())
9915 /* GDB prints characters as NUMBER 'CHAR'. If that's
9916 changed, this can use value_print instead. */
9917 cu->language_defn->printchar (value, type, &buf);
9920 struct value_print_options opts;
9923 v = dwarf2_evaluate_loc_desc (type, NULL,
9927 baton->per_objfile);
9928 else if (bytes != NULL)
9930 v = allocate_value (type);
9931 memcpy (value_contents_writeable (v), bytes,
9932 TYPE_LENGTH (type));
9935 v = value_from_longest (type, value);
9937 /* Specify decimal so that we do not depend on
9939 get_formatted_print_options (&opts, 'd');
9941 value_print (v, &buf, &opts);
9946 die->building_fullname = 0;
9950 /* Close the argument list, with a space if necessary
9951 (nested templates). */
9952 if (!buf.empty () && buf.string ().back () == '>')
9959 /* For C++ methods, append formal parameter type
9960 information, if PHYSNAME. */
9962 if (physname && die->tag == DW_TAG_subprogram
9963 && lang == language_cplus)
9965 struct type *type = read_type_die (die, cu);
9967 c_type_print_args (type, &buf, 1, lang,
9968 &type_print_raw_options);
9970 if (lang == language_cplus)
9972 /* Assume that an artificial first parameter is
9973 "this", but do not crash if it is not. RealView
9974 marks unnamed (and thus unused) parameters as
9975 artificial; there is no way to differentiate
9977 if (type->num_fields () > 0
9978 && TYPE_FIELD_ARTIFICIAL (type, 0)
9979 && type->field (0).type ()->code () == TYPE_CODE_PTR
9980 && TYPE_CONST (TYPE_TARGET_TYPE (type->field (0).type ())))
9981 buf.puts (" const");
9985 const std::string &intermediate_name = buf.string ();
9987 if (lang == language_cplus)
9989 = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
9992 /* If we only computed INTERMEDIATE_NAME, or if
9993 INTERMEDIATE_NAME is already canonical, then we need to
9995 if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
9996 name = objfile->intern (intermediate_name);
9998 name = canonical_name;
10005 /* Return the fully qualified name of DIE, based on its DW_AT_name.
10006 If scope qualifiers are appropriate they will be added. The result
10007 will be allocated on the storage_obstack, or NULL if the DIE does
10008 not have a name. NAME may either be from a previous call to
10009 dwarf2_name or NULL.
10011 The output string will be canonicalized (if C++). */
10013 static const char *
10014 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
10016 return dwarf2_compute_name (name, die, cu, 0);
10019 /* Construct a physname for the given DIE in CU. NAME may either be
10020 from a previous call to dwarf2_name or NULL. The result will be
10021 allocated on the objfile_objstack or NULL if the DIE does not have a
10024 The output string will be canonicalized (if C++). */
10026 static const char *
10027 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
10029 struct objfile *objfile = cu->per_objfile->objfile;
10030 const char *retval, *mangled = NULL, *canon = NULL;
10033 /* In this case dwarf2_compute_name is just a shortcut not building anything
10035 if (!die_needs_namespace (die, cu))
10036 return dwarf2_compute_name (name, die, cu, 1);
10038 if (cu->per_cu->lang != language_rust)
10039 mangled = dw2_linkage_name (die, cu);
10041 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
10043 gdb::unique_xmalloc_ptr<char> demangled;
10044 if (mangled != NULL)
10046 if (cu->language_defn->store_sym_names_in_linkage_form_p ())
10048 /* Do nothing (do not demangle the symbol name). */
10052 /* Use DMGL_RET_DROP for C++ template functions to suppress
10053 their return type. It is easier for GDB users to search
10054 for such functions as `name(params)' than `long name(params)'.
10055 In such case the minimal symbol names do not match the full
10056 symbol names but for template functions there is never a need
10057 to look up their definition from their declaration so
10058 the only disadvantage remains the minimal symbol variant
10059 `long name(params)' does not have the proper inferior type. */
10060 demangled.reset (gdb_demangle (mangled,
10061 (DMGL_PARAMS | DMGL_ANSI
10062 | DMGL_RET_DROP)));
10065 canon = demangled.get ();
10073 if (canon == NULL || check_physname)
10075 const char *physname = dwarf2_compute_name (name, die, cu, 1);
10077 if (canon != NULL && strcmp (physname, canon) != 0)
10079 /* It may not mean a bug in GDB. The compiler could also
10080 compute DW_AT_linkage_name incorrectly. But in such case
10081 GDB would need to be bug-to-bug compatible. */
10083 complaint (_("Computed physname <%s> does not match demangled <%s> "
10084 "(from linkage <%s>) - DIE at %s [in module %s]"),
10085 physname, canon, mangled, sect_offset_str (die->sect_off),
10086 objfile_name (objfile));
10088 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
10089 is available here - over computed PHYSNAME. It is safer
10090 against both buggy GDB and buggy compilers. */
10104 retval = objfile->intern (retval);
10109 /* Inspect DIE in CU for a namespace alias. If one exists, record
10110 a new symbol for it.
10112 Returns 1 if a namespace alias was recorded, 0 otherwise. */
10115 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
10117 struct attribute *attr;
10119 /* If the die does not have a name, this is not a namespace
10121 attr = dwarf2_attr (die, DW_AT_name, cu);
10125 struct die_info *d = die;
10126 struct dwarf2_cu *imported_cu = cu;
10128 /* If the compiler has nested DW_AT_imported_declaration DIEs,
10129 keep inspecting DIEs until we hit the underlying import. */
10130 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
10131 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
10133 attr = dwarf2_attr (d, DW_AT_import, cu);
10137 d = follow_die_ref (d, attr, &imported_cu);
10138 if (d->tag != DW_TAG_imported_declaration)
10142 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
10144 complaint (_("DIE at %s has too many recursively imported "
10145 "declarations"), sect_offset_str (d->sect_off));
10152 sect_offset sect_off = attr->get_ref_die_offset ();
10154 type = get_die_type_at_offset (sect_off, cu->per_cu, cu->per_objfile);
10155 if (type != NULL && type->code () == TYPE_CODE_NAMESPACE)
10157 /* This declaration is a global namespace alias. Add
10158 a symbol for it whose type is the aliased namespace. */
10159 new_symbol (die, type, cu);
10168 /* Return the using directives repository (global or local?) to use in the
10169 current context for CU.
10171 For Ada, imported declarations can materialize renamings, which *may* be
10172 global. However it is impossible (for now?) in DWARF to distinguish
10173 "external" imported declarations and "static" ones. As all imported
10174 declarations seem to be static in all other languages, make them all CU-wide
10175 global only in Ada. */
10177 static struct using_direct **
10178 using_directives (struct dwarf2_cu *cu)
10180 if (cu->per_cu->lang == language_ada
10181 && cu->get_builder ()->outermost_context_p ())
10182 return cu->get_builder ()->get_global_using_directives ();
10184 return cu->get_builder ()->get_local_using_directives ();
10187 /* Read the import statement specified by the given die and record it. */
10190 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
10192 struct objfile *objfile = cu->per_objfile->objfile;
10193 struct attribute *import_attr;
10194 struct die_info *imported_die, *child_die;
10195 struct dwarf2_cu *imported_cu;
10196 const char *imported_name;
10197 const char *imported_name_prefix;
10198 const char *canonical_name;
10199 const char *import_alias;
10200 const char *imported_declaration = NULL;
10201 const char *import_prefix;
10202 std::vector<const char *> excludes;
10204 import_attr = dwarf2_attr (die, DW_AT_import, cu);
10205 if (import_attr == NULL)
10207 complaint (_("Tag '%s' has no DW_AT_import"),
10208 dwarf_tag_name (die->tag));
10213 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
10214 imported_name = dwarf2_name (imported_die, imported_cu);
10215 if (imported_name == NULL)
10217 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
10219 The import in the following code:
10233 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
10234 <52> DW_AT_decl_file : 1
10235 <53> DW_AT_decl_line : 6
10236 <54> DW_AT_import : <0x75>
10237 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
10238 <59> DW_AT_name : B
10239 <5b> DW_AT_decl_file : 1
10240 <5c> DW_AT_decl_line : 2
10241 <5d> DW_AT_type : <0x6e>
10243 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
10244 <76> DW_AT_byte_size : 4
10245 <77> DW_AT_encoding : 5 (signed)
10247 imports the wrong die ( 0x75 instead of 0x58 ).
10248 This case will be ignored until the gcc bug is fixed. */
10252 /* Figure out the local name after import. */
10253 import_alias = dwarf2_name (die, cu);
10255 /* Figure out where the statement is being imported to. */
10256 import_prefix = determine_prefix (die, cu);
10258 /* Figure out what the scope of the imported die is and prepend it
10259 to the name of the imported die. */
10260 imported_name_prefix = determine_prefix (imported_die, imported_cu);
10262 if (imported_die->tag != DW_TAG_namespace
10263 && imported_die->tag != DW_TAG_module)
10265 imported_declaration = imported_name;
10266 canonical_name = imported_name_prefix;
10268 else if (strlen (imported_name_prefix) > 0)
10269 canonical_name = obconcat (&objfile->objfile_obstack,
10270 imported_name_prefix,
10271 (cu->per_cu->lang == language_d
10274 imported_name, (char *) NULL);
10276 canonical_name = imported_name;
10278 if (die->tag == DW_TAG_imported_module
10279 && cu->per_cu->lang == language_fortran)
10280 for (child_die = die->child; child_die && child_die->tag;
10281 child_die = child_die->sibling)
10283 /* DWARF-4: A Fortran use statement with a “rename list” may be
10284 represented by an imported module entry with an import attribute
10285 referring to the module and owned entries corresponding to those
10286 entities that are renamed as part of being imported. */
10288 if (child_die->tag != DW_TAG_imported_declaration)
10290 complaint (_("child DW_TAG_imported_declaration expected "
10291 "- DIE at %s [in module %s]"),
10292 sect_offset_str (child_die->sect_off),
10293 objfile_name (objfile));
10297 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
10298 if (import_attr == NULL)
10300 complaint (_("Tag '%s' has no DW_AT_import"),
10301 dwarf_tag_name (child_die->tag));
10306 imported_die = follow_die_ref_or_sig (child_die, import_attr,
10308 imported_name = dwarf2_name (imported_die, imported_cu);
10309 if (imported_name == NULL)
10311 complaint (_("child DW_TAG_imported_declaration has unknown "
10312 "imported name - DIE at %s [in module %s]"),
10313 sect_offset_str (child_die->sect_off),
10314 objfile_name (objfile));
10318 excludes.push_back (imported_name);
10320 process_die (child_die, cu);
10323 add_using_directive (using_directives (cu),
10327 imported_declaration,
10330 &objfile->objfile_obstack);
10333 /* ICC<14 does not output the required DW_AT_declaration on incomplete
10334 types, but gives them a size of zero. Starting with version 14,
10335 ICC is compatible with GCC. */
10338 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
10340 if (!cu->checked_producer)
10341 check_producer (cu);
10343 return cu->producer_is_icc_lt_14;
10346 /* ICC generates a DW_AT_type for C void functions. This was observed on
10347 ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
10348 which says that void functions should not have a DW_AT_type. */
10351 producer_is_icc (struct dwarf2_cu *cu)
10353 if (!cu->checked_producer)
10354 check_producer (cu);
10356 return cu->producer_is_icc;
10359 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
10360 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
10361 this, it was first present in GCC release 4.3.0. */
10364 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
10366 if (!cu->checked_producer)
10367 check_producer (cu);
10369 return cu->producer_is_gcc_lt_4_3;
10372 static file_and_directory
10373 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
10375 file_and_directory res;
10377 /* Find the filename. Do not use dwarf2_name here, since the filename
10378 is not a source language identifier. */
10379 res.name = dwarf2_string_attr (die, DW_AT_name, cu);
10380 res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
10382 if (res.comp_dir == NULL
10383 && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
10384 && IS_ABSOLUTE_PATH (res.name))
10386 std::string comp_dir_storage = ldirname (res.name);
10387 if (!comp_dir_storage.empty ())
10389 = cu->per_objfile->objfile->intern (comp_dir_storage.c_str ());
10391 if (res.comp_dir != NULL)
10393 /* Irix 6.2 native cc prepends <machine>.: to the compilation
10394 directory, get rid of it. */
10395 const char *cp = strchr (res.comp_dir, ':');
10397 if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
10398 res.comp_dir = cp + 1;
10401 if (res.name == NULL)
10402 res.name = "<unknown>";
10407 /* Handle DW_AT_stmt_list for a compilation unit.
10408 DIE is the DW_TAG_compile_unit die for CU.
10409 COMP_DIR is the compilation directory. LOWPC is passed to
10410 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
10413 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
10414 const file_and_directory &fnd, CORE_ADDR lowpc) /* ARI: editCase function */
10416 dwarf2_per_objfile *per_objfile = cu->per_objfile;
10417 struct attribute *attr;
10418 struct line_header line_header_local;
10419 hashval_t line_header_local_hash;
10421 int decode_mapping;
10423 gdb_assert (! cu->per_cu->is_debug_types);
10425 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
10426 if (attr == NULL || !attr->form_is_unsigned ())
10429 sect_offset line_offset = (sect_offset) attr->as_unsigned ();
10431 /* The line header hash table is only created if needed (it exists to
10432 prevent redundant reading of the line table for partial_units).
10433 If we're given a partial_unit, we'll need it. If we're given a
10434 compile_unit, then use the line header hash table if it's already
10435 created, but don't create one just yet. */
10437 if (per_objfile->line_header_hash == NULL
10438 && die->tag == DW_TAG_partial_unit)
10440 per_objfile->line_header_hash
10441 .reset (htab_create_alloc (127, line_header_hash_voidp,
10442 line_header_eq_voidp,
10443 htab_delete_entry<line_header>,
10447 line_header_local.sect_off = line_offset;
10448 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
10449 line_header_local_hash = line_header_hash (&line_header_local);
10450 if (per_objfile->line_header_hash != NULL)
10452 slot = htab_find_slot_with_hash (per_objfile->line_header_hash.get (),
10453 &line_header_local,
10454 line_header_local_hash, NO_INSERT);
10456 /* For DW_TAG_compile_unit we need info like symtab::linetable which
10457 is not present in *SLOT (since if there is something in *SLOT then
10458 it will be for a partial_unit). */
10459 if (die->tag == DW_TAG_partial_unit && slot != NULL)
10461 gdb_assert (*slot != NULL);
10462 cu->line_header = (struct line_header *) *slot;
10467 /* dwarf_decode_line_header does not yet provide sufficient information.
10468 We always have to call also dwarf_decode_lines for it. */
10469 line_header_up lh = dwarf_decode_line_header (line_offset, cu);
10473 cu->line_header = lh.release ();
10474 cu->line_header_die_owner = die;
10476 if (per_objfile->line_header_hash == NULL)
10480 slot = htab_find_slot_with_hash (per_objfile->line_header_hash.get (),
10481 &line_header_local,
10482 line_header_local_hash, INSERT);
10483 gdb_assert (slot != NULL);
10485 if (slot != NULL && *slot == NULL)
10487 /* This newly decoded line number information unit will be owned
10488 by line_header_hash hash table. */
10489 *slot = cu->line_header;
10490 cu->line_header_die_owner = NULL;
10494 /* We cannot free any current entry in (*slot) as that struct line_header
10495 may be already used by multiple CUs. Create only temporary decoded
10496 line_header for this CU - it may happen at most once for each line
10497 number information unit. And if we're not using line_header_hash
10498 then this is what we want as well. */
10499 gdb_assert (die->tag != DW_TAG_partial_unit);
10501 decode_mapping = (die->tag != DW_TAG_partial_unit);
10502 dwarf_decode_lines (cu->line_header, fnd, cu, nullptr, lowpc,
10507 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
10510 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
10512 dwarf2_per_objfile *per_objfile = cu->per_objfile;
10513 struct objfile *objfile = per_objfile->objfile;
10514 struct gdbarch *gdbarch = objfile->arch ();
10515 CORE_ADDR lowpc = ((CORE_ADDR) -1);
10516 CORE_ADDR highpc = ((CORE_ADDR) 0);
10517 struct attribute *attr;
10518 struct die_info *child_die;
10519 CORE_ADDR baseaddr;
10521 prepare_one_comp_unit (cu, die, cu->per_cu->lang);
10522 baseaddr = objfile->text_section_offset ();
10524 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
10526 /* If we didn't find a lowpc, set it to highpc to avoid complaints
10527 from finish_block. */
10528 if (lowpc == ((CORE_ADDR) -1))
10530 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
10532 file_and_directory fnd = find_file_and_directory (die, cu);
10534 cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
10536 gdb_assert (per_objfile->sym_cu == nullptr);
10537 scoped_restore restore_sym_cu
10538 = make_scoped_restore (&per_objfile->sym_cu, cu);
10540 /* Decode line number information if present. We do this before
10541 processing child DIEs, so that the line header table is available
10542 for DW_AT_decl_file. */
10543 handle_DW_AT_stmt_list (die, cu, fnd, lowpc);
10545 /* Process all dies in compilation unit. */
10546 if (die->child != NULL)
10548 child_die = die->child;
10549 while (child_die && child_die->tag)
10551 process_die (child_die, cu);
10552 child_die = child_die->sibling;
10555 per_objfile->sym_cu = nullptr;
10557 /* Decode macro information, if present. Dwarf 2 macro information
10558 refers to information in the line number info statement program
10559 header, so we can only read it if we've read the header
10561 attr = dwarf2_attr (die, DW_AT_macros, cu);
10563 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
10564 if (attr != nullptr && attr->form_is_unsigned () && cu->line_header)
10566 if (dwarf2_attr (die, DW_AT_macro_info, cu))
10567 complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
10569 dwarf_decode_macros (cu, attr->as_unsigned (), 1);
10573 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
10574 if (attr != nullptr && attr->form_is_unsigned () && cu->line_header)
10576 unsigned int macro_offset = attr->as_unsigned ();
10578 dwarf_decode_macros (cu, macro_offset, 0);
10584 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
10586 struct type_unit_group *tu_group;
10588 struct attribute *attr;
10590 struct signatured_type *sig_type;
10592 gdb_assert (per_cu->is_debug_types);
10593 sig_type = (struct signatured_type *) per_cu;
10595 attr = dwarf2_attr (die, DW_AT_stmt_list, this);
10597 /* If we're using .gdb_index (includes -readnow) then
10598 per_cu->type_unit_group may not have been set up yet. */
10599 if (sig_type->type_unit_group == NULL)
10600 sig_type->type_unit_group = get_type_unit_group (this, attr);
10601 tu_group = sig_type->type_unit_group;
10603 /* If we've already processed this stmt_list there's no real need to
10604 do it again, we could fake it and just recreate the part we need
10605 (file name,index -> symtab mapping). If data shows this optimization
10606 is useful we can do it then. */
10607 type_unit_group_unshareable *tug_unshare
10608 = per_objfile->get_type_unit_group_unshareable (tu_group);
10609 first_time = tug_unshare->compunit_symtab == NULL;
10611 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
10614 if (attr != NULL && attr->form_is_unsigned ())
10616 sect_offset line_offset = (sect_offset) attr->as_unsigned ();
10617 lh = dwarf_decode_line_header (line_offset, this);
10622 start_symtab ("", NULL, 0);
10625 gdb_assert (tug_unshare->symtabs == NULL);
10626 gdb_assert (m_builder == nullptr);
10627 struct compunit_symtab *cust = tug_unshare->compunit_symtab;
10628 m_builder.reset (new struct buildsym_compunit
10629 (COMPUNIT_OBJFILE (cust), "",
10630 COMPUNIT_DIRNAME (cust),
10631 compunit_language (cust),
10633 list_in_scope = get_builder ()->get_file_symbols ();
10638 line_header = lh.release ();
10639 line_header_die_owner = die;
10643 struct compunit_symtab *cust = start_symtab ("", NULL, 0);
10645 /* Note: We don't assign tu_group->compunit_symtab yet because we're
10646 still initializing it, and our caller (a few levels up)
10647 process_full_type_unit still needs to know if this is the first
10650 tug_unshare->symtabs
10651 = XOBNEWVEC (&COMPUNIT_OBJFILE (cust)->objfile_obstack,
10652 struct symtab *, line_header->file_names_size ());
10654 auto &file_names = line_header->file_names ();
10655 for (i = 0; i < file_names.size (); ++i)
10657 file_entry &fe = file_names[i];
10658 dwarf2_start_subfile (this, fe.name,
10659 fe.include_dir (line_header));
10660 buildsym_compunit *b = get_builder ();
10661 if (b->get_current_subfile ()->symtab == NULL)
10663 /* NOTE: start_subfile will recognize when it's been
10664 passed a file it has already seen. So we can't
10665 assume there's a simple mapping from
10666 cu->line_header->file_names to subfiles, plus
10667 cu->line_header->file_names may contain dups. */
10668 b->get_current_subfile ()->symtab
10669 = allocate_symtab (cust, b->get_current_subfile ()->name);
10672 fe.symtab = b->get_current_subfile ()->symtab;
10673 tug_unshare->symtabs[i] = fe.symtab;
10678 gdb_assert (m_builder == nullptr);
10679 struct compunit_symtab *cust = tug_unshare->compunit_symtab;
10680 m_builder.reset (new struct buildsym_compunit
10681 (COMPUNIT_OBJFILE (cust), "",
10682 COMPUNIT_DIRNAME (cust),
10683 compunit_language (cust),
10685 list_in_scope = get_builder ()->get_file_symbols ();
10687 auto &file_names = line_header->file_names ();
10688 for (i = 0; i < file_names.size (); ++i)
10690 file_entry &fe = file_names[i];
10691 fe.symtab = tug_unshare->symtabs[i];
10695 /* The main symtab is allocated last. Type units don't have DW_AT_name
10696 so they don't have a "real" (so to speak) symtab anyway.
10697 There is later code that will assign the main symtab to all symbols
10698 that don't have one. We need to handle the case of a symbol with a
10699 missing symtab (DW_AT_decl_file) anyway. */
10702 /* Process DW_TAG_type_unit.
10703 For TUs we want to skip the first top level sibling if it's not the
10704 actual type being defined by this TU. In this case the first top
10705 level sibling is there to provide context only. */
10708 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
10710 struct die_info *child_die;
10712 prepare_one_comp_unit (cu, die, language_minimal);
10714 /* Initialize (or reinitialize) the machinery for building symtabs.
10715 We do this before processing child DIEs, so that the line header table
10716 is available for DW_AT_decl_file. */
10717 cu->setup_type_unit_groups (die);
10719 if (die->child != NULL)
10721 child_die = die->child;
10722 while (child_die && child_die->tag)
10724 process_die (child_die, cu);
10725 child_die = child_die->sibling;
10732 http://gcc.gnu.org/wiki/DebugFission
10733 http://gcc.gnu.org/wiki/DebugFissionDWP
10735 To simplify handling of both DWO files ("object" files with the DWARF info)
10736 and DWP files (a file with the DWOs packaged up into one file), we treat
10737 DWP files as having a collection of virtual DWO files. */
10740 hash_dwo_file (const void *item)
10742 const struct dwo_file *dwo_file = (const struct dwo_file *) item;
10745 hash = htab_hash_string (dwo_file->dwo_name);
10746 if (dwo_file->comp_dir != NULL)
10747 hash += htab_hash_string (dwo_file->comp_dir);
10752 eq_dwo_file (const void *item_lhs, const void *item_rhs)
10754 const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
10755 const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
10757 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
10759 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
10760 return lhs->comp_dir == rhs->comp_dir;
10761 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
10764 /* Allocate a hash table for DWO files. */
10767 allocate_dwo_file_hash_table ()
10769 return htab_up (htab_create_alloc (41,
10772 htab_delete_entry<dwo_file>,
10776 /* Lookup DWO file DWO_NAME. */
10779 lookup_dwo_file_slot (dwarf2_per_objfile *per_objfile,
10780 const char *dwo_name,
10781 const char *comp_dir)
10783 struct dwo_file find_entry;
10786 if (per_objfile->per_bfd->dwo_files == NULL)
10787 per_objfile->per_bfd->dwo_files = allocate_dwo_file_hash_table ();
10789 find_entry.dwo_name = dwo_name;
10790 find_entry.comp_dir = comp_dir;
10791 slot = htab_find_slot (per_objfile->per_bfd->dwo_files.get (), &find_entry,
10798 hash_dwo_unit (const void *item)
10800 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
10802 /* This drops the top 32 bits of the id, but is ok for a hash. */
10803 return dwo_unit->signature;
10807 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
10809 const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
10810 const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
10812 /* The signature is assumed to be unique within the DWO file.
10813 So while object file CU dwo_id's always have the value zero,
10814 that's OK, assuming each object file DWO file has only one CU,
10815 and that's the rule for now. */
10816 return lhs->signature == rhs->signature;
10819 /* Allocate a hash table for DWO CUs,TUs.
10820 There is one of these tables for each of CUs,TUs for each DWO file. */
10823 allocate_dwo_unit_table ()
10825 /* Start out with a pretty small number.
10826 Generally DWO files contain only one CU and maybe some TUs. */
10827 return htab_up (htab_create_alloc (3,
10830 NULL, xcalloc, xfree));
10833 /* die_reader_func for create_dwo_cu. */
10836 create_dwo_cu_reader (const struct die_reader_specs *reader,
10837 const gdb_byte *info_ptr,
10838 struct die_info *comp_unit_die,
10839 struct dwo_file *dwo_file,
10840 struct dwo_unit *dwo_unit)
10842 struct dwarf2_cu *cu = reader->cu;
10843 sect_offset sect_off = cu->per_cu->sect_off;
10844 struct dwarf2_section_info *section = cu->per_cu->section;
10846 gdb::optional<ULONGEST> signature = lookup_dwo_id (cu, comp_unit_die);
10847 if (!signature.has_value ())
10849 complaint (_("Dwarf Error: debug entry at offset %s is missing"
10850 " its dwo_id [in module %s]"),
10851 sect_offset_str (sect_off), dwo_file->dwo_name);
10855 dwo_unit->dwo_file = dwo_file;
10856 dwo_unit->signature = *signature;
10857 dwo_unit->section = section;
10858 dwo_unit->sect_off = sect_off;
10859 dwo_unit->length = cu->per_cu->length;
10861 dwarf_read_debug_printf (" offset %s, dwo_id %s",
10862 sect_offset_str (sect_off),
10863 hex_string (dwo_unit->signature));
10866 /* Create the dwo_units for the CUs in a DWO_FILE.
10867 Note: This function processes DWO files only, not DWP files. */
10870 create_cus_hash_table (dwarf2_per_objfile *per_objfile,
10871 dwarf2_cu *cu, struct dwo_file &dwo_file,
10872 dwarf2_section_info §ion, htab_up &cus_htab)
10874 struct objfile *objfile = per_objfile->objfile;
10875 dwarf2_per_bfd *per_bfd = per_objfile->per_bfd;
10876 const gdb_byte *info_ptr, *end_ptr;
10878 section.read (objfile);
10879 info_ptr = section.buffer;
10881 if (info_ptr == NULL)
10884 dwarf_read_debug_printf ("Reading %s for %s:",
10885 section.get_name (),
10886 section.get_file_name ());
10888 end_ptr = info_ptr + section.size;
10889 while (info_ptr < end_ptr)
10891 struct dwarf2_per_cu_data per_cu;
10892 struct dwo_unit read_unit {};
10893 struct dwo_unit *dwo_unit;
10895 sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
10897 per_cu.per_bfd = per_bfd;
10898 per_cu.is_debug_types = 0;
10899 per_cu.sect_off = sect_offset (info_ptr - section.buffer);
10900 per_cu.section = §ion;
10902 cutu_reader reader (&per_cu, per_objfile, cu, &dwo_file);
10903 if (!reader.dummy_p)
10904 create_dwo_cu_reader (&reader, reader.info_ptr, reader.comp_unit_die,
10905 &dwo_file, &read_unit);
10906 info_ptr += per_cu.length;
10908 // If the unit could not be parsed, skip it.
10909 if (read_unit.dwo_file == NULL)
10912 if (cus_htab == NULL)
10913 cus_htab = allocate_dwo_unit_table ();
10915 dwo_unit = OBSTACK_ZALLOC (&per_bfd->obstack,
10917 *dwo_unit = read_unit;
10918 slot = htab_find_slot (cus_htab.get (), dwo_unit, INSERT);
10919 gdb_assert (slot != NULL);
10922 const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
10923 sect_offset dup_sect_off = dup_cu->sect_off;
10925 complaint (_("debug cu entry at offset %s is duplicate to"
10926 " the entry at offset %s, signature %s"),
10927 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
10928 hex_string (dwo_unit->signature));
10930 *slot = (void *)dwo_unit;
10934 /* DWP file .debug_{cu,tu}_index section format:
10935 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
10936 [ref: http://dwarfstd.org/doc/DWARF5.pdf, sect 7.3.5 "DWARF Package Files"]
10938 DWP Versions 1 & 2 are older, pre-standard format versions. The first
10939 officially standard DWP format was published with DWARF v5 and is called
10940 Version 5. There are no versions 3 or 4.
10944 Both index sections have the same format, and serve to map a 64-bit
10945 signature to a set of section numbers. Each section begins with a header,
10946 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
10947 indexes, and a pool of 32-bit section numbers. The index sections will be
10948 aligned at 8-byte boundaries in the file.
10950 The index section header consists of:
10952 V, 32 bit version number
10954 N, 32 bit number of compilation units or type units in the index
10955 M, 32 bit number of slots in the hash table
10957 Numbers are recorded using the byte order of the application binary.
10959 The hash table begins at offset 16 in the section, and consists of an array
10960 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
10961 order of the application binary). Unused slots in the hash table are 0.
10962 (We rely on the extreme unlikeliness of a signature being exactly 0.)
10964 The parallel table begins immediately after the hash table
10965 (at offset 16 + 8 * M from the beginning of the section), and consists of an
10966 array of 32-bit indexes (using the byte order of the application binary),
10967 corresponding 1-1 with slots in the hash table. Each entry in the parallel
10968 table contains a 32-bit index into the pool of section numbers. For unused
10969 hash table slots, the corresponding entry in the parallel table will be 0.
10971 The pool of section numbers begins immediately following the hash table
10972 (at offset 16 + 12 * M from the beginning of the section). The pool of
10973 section numbers consists of an array of 32-bit words (using the byte order
10974 of the application binary). Each item in the array is indexed starting
10975 from 0. The hash table entry provides the index of the first section
10976 number in the set. Additional section numbers in the set follow, and the
10977 set is terminated by a 0 entry (section number 0 is not used in ELF).
10979 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
10980 section must be the first entry in the set, and the .debug_abbrev.dwo must
10981 be the second entry. Other members of the set may follow in any order.
10985 DWP Versions 2 and 5:
10987 DWP Versions 2 and 5 combine all the .debug_info, etc. sections into one,
10988 and the entries in the index tables are now offsets into these sections.
10989 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
10992 Index Section Contents:
10994 Hash Table of Signatures dwp_hash_table.hash_table
10995 Parallel Table of Indices dwp_hash_table.unit_table
10996 Table of Section Offsets dwp_hash_table.{v2|v5}.{section_ids,offsets}
10997 Table of Section Sizes dwp_hash_table.{v2|v5}.sizes
10999 The index section header consists of:
11001 V, 32 bit version number
11002 L, 32 bit number of columns in the table of section offsets
11003 N, 32 bit number of compilation units or type units in the index
11004 M, 32 bit number of slots in the hash table
11006 Numbers are recorded using the byte order of the application binary.
11008 The hash table has the same format as version 1.
11009 The parallel table of indices has the same format as version 1,
11010 except that the entries are origin-1 indices into the table of sections
11011 offsets and the table of section sizes.
11013 The table of offsets begins immediately following the parallel table
11014 (at offset 16 + 12 * M from the beginning of the section). The table is
11015 a two-dimensional array of 32-bit words (using the byte order of the
11016 application binary), with L columns and N+1 rows, in row-major order.
11017 Each row in the array is indexed starting from 0. The first row provides
11018 a key to the remaining rows: each column in this row provides an identifier
11019 for a debug section, and the offsets in the same column of subsequent rows
11020 refer to that section. The section identifiers for Version 2 are:
11022 DW_SECT_INFO 1 .debug_info.dwo
11023 DW_SECT_TYPES 2 .debug_types.dwo
11024 DW_SECT_ABBREV 3 .debug_abbrev.dwo
11025 DW_SECT_LINE 4 .debug_line.dwo
11026 DW_SECT_LOC 5 .debug_loc.dwo
11027 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
11028 DW_SECT_MACINFO 7 .debug_macinfo.dwo
11029 DW_SECT_MACRO 8 .debug_macro.dwo
11031 The section identifiers for Version 5 are:
11033 DW_SECT_INFO_V5 1 .debug_info.dwo
11034 DW_SECT_RESERVED_V5 2 --
11035 DW_SECT_ABBREV_V5 3 .debug_abbrev.dwo
11036 DW_SECT_LINE_V5 4 .debug_line.dwo
11037 DW_SECT_LOCLISTS_V5 5 .debug_loclists.dwo
11038 DW_SECT_STR_OFFSETS_V5 6 .debug_str_offsets.dwo
11039 DW_SECT_MACRO_V5 7 .debug_macro.dwo
11040 DW_SECT_RNGLISTS_V5 8 .debug_rnglists.dwo
11042 The offsets provided by the CU and TU index sections are the base offsets
11043 for the contributions made by each CU or TU to the corresponding section
11044 in the package file. Each CU and TU header contains an abbrev_offset
11045 field, used to find the abbreviations table for that CU or TU within the
11046 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
11047 be interpreted as relative to the base offset given in the index section.
11048 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
11049 should be interpreted as relative to the base offset for .debug_line.dwo,
11050 and offsets into other debug sections obtained from DWARF attributes should
11051 also be interpreted as relative to the corresponding base offset.
11053 The table of sizes begins immediately following the table of offsets.
11054 Like the table of offsets, it is a two-dimensional array of 32-bit words,
11055 with L columns and N rows, in row-major order. Each row in the array is
11056 indexed starting from 1 (row 0 is shared by the two tables).
11060 Hash table lookup is handled the same in version 1 and 2:
11062 We assume that N and M will not exceed 2^32 - 1.
11063 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
11065 Given a 64-bit compilation unit signature or a type signature S, an entry
11066 in the hash table is located as follows:
11068 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
11069 the low-order k bits all set to 1.
11071 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
11073 3) If the hash table entry at index H matches the signature, use that
11074 entry. If the hash table entry at index H is unused (all zeroes),
11075 terminate the search: the signature is not present in the table.
11077 4) Let H = (H + H') modulo M. Repeat at Step 3.
11079 Because M > N and H' and M are relatively prime, the search is guaranteed
11080 to stop at an unused slot or find the match. */
11082 /* Create a hash table to map DWO IDs to their CU/TU entry in
11083 .debug_{info,types}.dwo in DWP_FILE.
11084 Returns NULL if there isn't one.
11085 Note: This function processes DWP files only, not DWO files. */
11087 static struct dwp_hash_table *
11088 create_dwp_hash_table (dwarf2_per_objfile *per_objfile,
11089 struct dwp_file *dwp_file, int is_debug_types)
11091 struct objfile *objfile = per_objfile->objfile;
11092 bfd *dbfd = dwp_file->dbfd.get ();
11093 const gdb_byte *index_ptr, *index_end;
11094 struct dwarf2_section_info *index;
11095 uint32_t version, nr_columns, nr_units, nr_slots;
11096 struct dwp_hash_table *htab;
11098 if (is_debug_types)
11099 index = &dwp_file->sections.tu_index;
11101 index = &dwp_file->sections.cu_index;
11103 if (index->empty ())
11105 index->read (objfile);
11107 index_ptr = index->buffer;
11108 index_end = index_ptr + index->size;
11110 /* For Version 5, the version is really 2 bytes of data & 2 bytes of padding.
11111 For now it's safe to just read 4 bytes (particularly as it's difficult to
11112 tell if you're dealing with Version 5 before you've read the version). */
11113 version = read_4_bytes (dbfd, index_ptr);
11115 if (version == 2 || version == 5)
11116 nr_columns = read_4_bytes (dbfd, index_ptr);
11120 nr_units = read_4_bytes (dbfd, index_ptr);
11122 nr_slots = read_4_bytes (dbfd, index_ptr);
11125 if (version != 1 && version != 2 && version != 5)
11127 error (_("Dwarf Error: unsupported DWP file version (%s)"
11128 " [in module %s]"),
11129 pulongest (version), dwp_file->name);
11131 if (nr_slots != (nr_slots & -nr_slots))
11133 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
11134 " is not power of 2 [in module %s]"),
11135 pulongest (nr_slots), dwp_file->name);
11138 htab = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwp_hash_table);
11139 htab->version = version;
11140 htab->nr_columns = nr_columns;
11141 htab->nr_units = nr_units;
11142 htab->nr_slots = nr_slots;
11143 htab->hash_table = index_ptr;
11144 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
11146 /* Exit early if the table is empty. */
11147 if (nr_slots == 0 || nr_units == 0
11148 || (version == 2 && nr_columns == 0)
11149 || (version == 5 && nr_columns == 0))
11151 /* All must be zero. */
11152 if (nr_slots != 0 || nr_units != 0
11153 || (version == 2 && nr_columns != 0)
11154 || (version == 5 && nr_columns != 0))
11156 complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
11157 " all zero [in modules %s]"),
11165 htab->section_pool.v1.indices =
11166 htab->unit_table + sizeof (uint32_t) * nr_slots;
11167 /* It's harder to decide whether the section is too small in v1.
11168 V1 is deprecated anyway so we punt. */
11170 else if (version == 2)
11172 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
11173 int *ids = htab->section_pool.v2.section_ids;
11174 size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
11175 /* Reverse map for error checking. */
11176 int ids_seen[DW_SECT_MAX + 1];
11179 if (nr_columns < 2)
11181 error (_("Dwarf Error: bad DWP hash table, too few columns"
11182 " in section table [in module %s]"),
11185 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
11187 error (_("Dwarf Error: bad DWP hash table, too many columns"
11188 " in section table [in module %s]"),
11191 memset (ids, 255, sizeof_ids);
11192 memset (ids_seen, 255, sizeof (ids_seen));
11193 for (i = 0; i < nr_columns; ++i)
11195 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
11197 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
11199 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
11200 " in section table [in module %s]"),
11201 id, dwp_file->name);
11203 if (ids_seen[id] != -1)
11205 error (_("Dwarf Error: bad DWP hash table, duplicate section"
11206 " id %d in section table [in module %s]"),
11207 id, dwp_file->name);
11212 /* Must have exactly one info or types section. */
11213 if (((ids_seen[DW_SECT_INFO] != -1)
11214 + (ids_seen[DW_SECT_TYPES] != -1))
11217 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
11218 " DWO info/types section [in module %s]"),
11221 /* Must have an abbrev section. */
11222 if (ids_seen[DW_SECT_ABBREV] == -1)
11224 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
11225 " section [in module %s]"),
11228 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
11229 htab->section_pool.v2.sizes =
11230 htab->section_pool.v2.offsets + (sizeof (uint32_t)
11231 * nr_units * nr_columns);
11232 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
11233 * nr_units * nr_columns))
11236 error (_("Dwarf Error: DWP index section is corrupt (too small)"
11237 " [in module %s]"),
11241 else /* version == 5 */
11243 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
11244 int *ids = htab->section_pool.v5.section_ids;
11245 size_t sizeof_ids = sizeof (htab->section_pool.v5.section_ids);
11246 /* Reverse map for error checking. */
11247 int ids_seen[DW_SECT_MAX_V5 + 1];
11249 if (nr_columns < 2)
11251 error (_("Dwarf Error: bad DWP hash table, too few columns"
11252 " in section table [in module %s]"),
11255 if (nr_columns > MAX_NR_V5_DWO_SECTIONS)
11257 error (_("Dwarf Error: bad DWP hash table, too many columns"
11258 " in section table [in module %s]"),
11261 memset (ids, 255, sizeof_ids);
11262 memset (ids_seen, 255, sizeof (ids_seen));
11263 for (int i = 0; i < nr_columns; ++i)
11265 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
11267 if (id < DW_SECT_MIN || id > DW_SECT_MAX_V5)
11269 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
11270 " in section table [in module %s]"),
11271 id, dwp_file->name);
11273 if (ids_seen[id] != -1)
11275 error (_("Dwarf Error: bad DWP hash table, duplicate section"
11276 " id %d in section table [in module %s]"),
11277 id, dwp_file->name);
11282 /* Must have seen an info section. */
11283 if (ids_seen[DW_SECT_INFO_V5] == -1)
11285 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
11286 " DWO info/types section [in module %s]"),
11289 /* Must have an abbrev section. */
11290 if (ids_seen[DW_SECT_ABBREV_V5] == -1)
11292 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
11293 " section [in module %s]"),
11296 htab->section_pool.v5.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
11297 htab->section_pool.v5.sizes
11298 = htab->section_pool.v5.offsets + (sizeof (uint32_t)
11299 * nr_units * nr_columns);
11300 if ((htab->section_pool.v5.sizes + (sizeof (uint32_t)
11301 * nr_units * nr_columns))
11304 error (_("Dwarf Error: DWP index section is corrupt (too small)"
11305 " [in module %s]"),
11313 /* Update SECTIONS with the data from SECTP.
11315 This function is like the other "locate" section routines, but in
11316 this context the sections to read comes from the DWP V1 hash table,
11317 not the full ELF section table.
11319 The result is non-zero for success, or zero if an error was found. */
11322 locate_v1_virtual_dwo_sections (asection *sectp,
11323 struct virtual_v1_dwo_sections *sections)
11325 const struct dwop_section_names *names = &dwop_section_names;
11327 if (names->abbrev_dwo.matches (sectp->name))
11329 /* There can be only one. */
11330 if (sections->abbrev.s.section != NULL)
11332 sections->abbrev.s.section = sectp;
11333 sections->abbrev.size = bfd_section_size (sectp);
11335 else if (names->info_dwo.matches (sectp->name)
11336 || names->types_dwo.matches (sectp->name))
11338 /* There can be only one. */
11339 if (sections->info_or_types.s.section != NULL)
11341 sections->info_or_types.s.section = sectp;
11342 sections->info_or_types.size = bfd_section_size (sectp);
11344 else if (names->line_dwo.matches (sectp->name))
11346 /* There can be only one. */
11347 if (sections->line.s.section != NULL)
11349 sections->line.s.section = sectp;
11350 sections->line.size = bfd_section_size (sectp);
11352 else if (names->loc_dwo.matches (sectp->name))
11354 /* There can be only one. */
11355 if (sections->loc.s.section != NULL)
11357 sections->loc.s.section = sectp;
11358 sections->loc.size = bfd_section_size (sectp);
11360 else if (names->macinfo_dwo.matches (sectp->name))
11362 /* There can be only one. */
11363 if (sections->macinfo.s.section != NULL)
11365 sections->macinfo.s.section = sectp;
11366 sections->macinfo.size = bfd_section_size (sectp);
11368 else if (names->macro_dwo.matches (sectp->name))
11370 /* There can be only one. */
11371 if (sections->macro.s.section != NULL)
11373 sections->macro.s.section = sectp;
11374 sections->macro.size = bfd_section_size (sectp);
11376 else if (names->str_offsets_dwo.matches (sectp->name))
11378 /* There can be only one. */
11379 if (sections->str_offsets.s.section != NULL)
11381 sections->str_offsets.s.section = sectp;
11382 sections->str_offsets.size = bfd_section_size (sectp);
11386 /* No other kind of section is valid. */
11393 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
11394 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
11395 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
11396 This is for DWP version 1 files. */
11398 static struct dwo_unit *
11399 create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile *per_objfile,
11400 struct dwp_file *dwp_file,
11401 uint32_t unit_index,
11402 const char *comp_dir,
11403 ULONGEST signature, int is_debug_types)
11405 const struct dwp_hash_table *dwp_htab =
11406 is_debug_types ? dwp_file->tus : dwp_file->cus;
11407 bfd *dbfd = dwp_file->dbfd.get ();
11408 const char *kind = is_debug_types ? "TU" : "CU";
11409 struct dwo_file *dwo_file;
11410 struct dwo_unit *dwo_unit;
11411 struct virtual_v1_dwo_sections sections;
11412 void **dwo_file_slot;
11415 gdb_assert (dwp_file->version == 1);
11417 dwarf_read_debug_printf ("Reading %s %s/%s in DWP V1 file: %s",
11418 kind, pulongest (unit_index), hex_string (signature),
11421 /* Fetch the sections of this DWO unit.
11422 Put a limit on the number of sections we look for so that bad data
11423 doesn't cause us to loop forever. */
11425 #define MAX_NR_V1_DWO_SECTIONS \
11426 (1 /* .debug_info or .debug_types */ \
11427 + 1 /* .debug_abbrev */ \
11428 + 1 /* .debug_line */ \
11429 + 1 /* .debug_loc */ \
11430 + 1 /* .debug_str_offsets */ \
11431 + 1 /* .debug_macro or .debug_macinfo */ \
11432 + 1 /* trailing zero */)
11434 memset (§ions, 0, sizeof (sections));
11436 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
11439 uint32_t section_nr =
11440 read_4_bytes (dbfd,
11441 dwp_htab->section_pool.v1.indices
11442 + (unit_index + i) * sizeof (uint32_t));
11444 if (section_nr == 0)
11446 if (section_nr >= dwp_file->num_sections)
11448 error (_("Dwarf Error: bad DWP hash table, section number too large"
11449 " [in module %s]"),
11453 sectp = dwp_file->elf_sections[section_nr];
11454 if (! locate_v1_virtual_dwo_sections (sectp, §ions))
11456 error (_("Dwarf Error: bad DWP hash table, invalid section found"
11457 " [in module %s]"),
11463 || sections.info_or_types.empty ()
11464 || sections.abbrev.empty ())
11466 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
11467 " [in module %s]"),
11470 if (i == MAX_NR_V1_DWO_SECTIONS)
11472 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
11473 " [in module %s]"),
11477 /* It's easier for the rest of the code if we fake a struct dwo_file and
11478 have dwo_unit "live" in that. At least for now.
11480 The DWP file can be made up of a random collection of CUs and TUs.
11481 However, for each CU + set of TUs that came from the same original DWO
11482 file, we can combine them back into a virtual DWO file to save space
11483 (fewer struct dwo_file objects to allocate). Remember that for really
11484 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
11486 std::string virtual_dwo_name =
11487 string_printf ("virtual-dwo/%d-%d-%d-%d",
11488 sections.abbrev.get_id (),
11489 sections.line.get_id (),
11490 sections.loc.get_id (),
11491 sections.str_offsets.get_id ());
11492 /* Can we use an existing virtual DWO file? */
11493 dwo_file_slot = lookup_dwo_file_slot (per_objfile, virtual_dwo_name.c_str (),
11495 /* Create one if necessary. */
11496 if (*dwo_file_slot == NULL)
11498 dwarf_read_debug_printf ("Creating virtual DWO: %s",
11499 virtual_dwo_name.c_str ());
11501 dwo_file = new struct dwo_file;
11502 dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
11503 dwo_file->comp_dir = comp_dir;
11504 dwo_file->sections.abbrev = sections.abbrev;
11505 dwo_file->sections.line = sections.line;
11506 dwo_file->sections.loc = sections.loc;
11507 dwo_file->sections.macinfo = sections.macinfo;
11508 dwo_file->sections.macro = sections.macro;
11509 dwo_file->sections.str_offsets = sections.str_offsets;
11510 /* The "str" section is global to the entire DWP file. */
11511 dwo_file->sections.str = dwp_file->sections.str;
11512 /* The info or types section is assigned below to dwo_unit,
11513 there's no need to record it in dwo_file.
11514 Also, we can't simply record type sections in dwo_file because
11515 we record a pointer into the vector in dwo_unit. As we collect more
11516 types we'll grow the vector and eventually have to reallocate space
11517 for it, invalidating all copies of pointers into the previous
11519 *dwo_file_slot = dwo_file;
11523 dwarf_read_debug_printf ("Using existing virtual DWO: %s",
11524 virtual_dwo_name.c_str ());
11526 dwo_file = (struct dwo_file *) *dwo_file_slot;
11529 dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
11530 dwo_unit->dwo_file = dwo_file;
11531 dwo_unit->signature = signature;
11532 dwo_unit->section =
11533 XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
11534 *dwo_unit->section = sections.info_or_types;
11535 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
11540 /* Subroutine of create_dwo_unit_in_dwp_v2 and create_dwo_unit_in_dwp_v5 to
11541 simplify them. Given a pointer to the containing section SECTION, and
11542 OFFSET,SIZE of the piece within that section used by a TU/CU, return a
11543 virtual section of just that piece. */
11545 static struct dwarf2_section_info
11546 create_dwp_v2_or_v5_section (dwarf2_per_objfile *per_objfile,
11547 struct dwarf2_section_info *section,
11548 bfd_size_type offset, bfd_size_type size)
11550 struct dwarf2_section_info result;
11553 gdb_assert (section != NULL);
11554 gdb_assert (!section->is_virtual);
11556 memset (&result, 0, sizeof (result));
11557 result.s.containing_section = section;
11558 result.is_virtual = true;
11563 sectp = section->get_bfd_section ();
11565 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
11566 bounds of the real section. This is a pretty-rare event, so just
11567 flag an error (easier) instead of a warning and trying to cope. */
11569 || offset + size > bfd_section_size (sectp))
11571 error (_("Dwarf Error: Bad DWP V2 or V5 section info, doesn't fit"
11572 " in section %s [in module %s]"),
11573 sectp ? bfd_section_name (sectp) : "<unknown>",
11574 objfile_name (per_objfile->objfile));
11577 result.virtual_offset = offset;
11578 result.size = size;
11582 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
11583 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
11584 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
11585 This is for DWP version 2 files. */
11587 static struct dwo_unit *
11588 create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile *per_objfile,
11589 struct dwp_file *dwp_file,
11590 uint32_t unit_index,
11591 const char *comp_dir,
11592 ULONGEST signature, int is_debug_types)
11594 const struct dwp_hash_table *dwp_htab =
11595 is_debug_types ? dwp_file->tus : dwp_file->cus;
11596 bfd *dbfd = dwp_file->dbfd.get ();
11597 const char *kind = is_debug_types ? "TU" : "CU";
11598 struct dwo_file *dwo_file;
11599 struct dwo_unit *dwo_unit;
11600 struct virtual_v2_or_v5_dwo_sections sections;
11601 void **dwo_file_slot;
11604 gdb_assert (dwp_file->version == 2);
11606 dwarf_read_debug_printf ("Reading %s %s/%s in DWP V2 file: %s",
11607 kind, pulongest (unit_index), hex_string (signature),
11610 /* Fetch the section offsets of this DWO unit. */
11612 memset (§ions, 0, sizeof (sections));
11614 for (i = 0; i < dwp_htab->nr_columns; ++i)
11616 uint32_t offset = read_4_bytes (dbfd,
11617 dwp_htab->section_pool.v2.offsets
11618 + (((unit_index - 1) * dwp_htab->nr_columns
11620 * sizeof (uint32_t)));
11621 uint32_t size = read_4_bytes (dbfd,
11622 dwp_htab->section_pool.v2.sizes
11623 + (((unit_index - 1) * dwp_htab->nr_columns
11625 * sizeof (uint32_t)));
11627 switch (dwp_htab->section_pool.v2.section_ids[i])
11630 case DW_SECT_TYPES:
11631 sections.info_or_types_offset = offset;
11632 sections.info_or_types_size = size;
11634 case DW_SECT_ABBREV:
11635 sections.abbrev_offset = offset;
11636 sections.abbrev_size = size;
11639 sections.line_offset = offset;
11640 sections.line_size = size;
11643 sections.loc_offset = offset;
11644 sections.loc_size = size;
11646 case DW_SECT_STR_OFFSETS:
11647 sections.str_offsets_offset = offset;
11648 sections.str_offsets_size = size;
11650 case DW_SECT_MACINFO:
11651 sections.macinfo_offset = offset;
11652 sections.macinfo_size = size;
11654 case DW_SECT_MACRO:
11655 sections.macro_offset = offset;
11656 sections.macro_size = size;
11661 /* It's easier for the rest of the code if we fake a struct dwo_file and
11662 have dwo_unit "live" in that. At least for now.
11664 The DWP file can be made up of a random collection of CUs and TUs.
11665 However, for each CU + set of TUs that came from the same original DWO
11666 file, we can combine them back into a virtual DWO file to save space
11667 (fewer struct dwo_file objects to allocate). Remember that for really
11668 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
11670 std::string virtual_dwo_name =
11671 string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
11672 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
11673 (long) (sections.line_size ? sections.line_offset : 0),
11674 (long) (sections.loc_size ? sections.loc_offset : 0),
11675 (long) (sections.str_offsets_size
11676 ? sections.str_offsets_offset : 0));
11677 /* Can we use an existing virtual DWO file? */
11678 dwo_file_slot = lookup_dwo_file_slot (per_objfile, virtual_dwo_name.c_str (),
11680 /* Create one if necessary. */
11681 if (*dwo_file_slot == NULL)
11683 dwarf_read_debug_printf ("Creating virtual DWO: %s",
11684 virtual_dwo_name.c_str ());
11686 dwo_file = new struct dwo_file;
11687 dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
11688 dwo_file->comp_dir = comp_dir;
11689 dwo_file->sections.abbrev =
11690 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.abbrev,
11691 sections.abbrev_offset,
11692 sections.abbrev_size);
11693 dwo_file->sections.line =
11694 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.line,
11695 sections.line_offset,
11696 sections.line_size);
11697 dwo_file->sections.loc =
11698 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.loc,
11699 sections.loc_offset, sections.loc_size);
11700 dwo_file->sections.macinfo =
11701 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.macinfo,
11702 sections.macinfo_offset,
11703 sections.macinfo_size);
11704 dwo_file->sections.macro =
11705 create_dwp_v2_or_v5_section (per_objfile, &dwp_file->sections.macro,
11706 sections.macro_offset,
11707 sections.macro_size);
11708 dwo_file->sections.str_offsets =
11709 create_dwp_v2_or_v5_section (per_objfile,
11710 &dwp_file->sections.str_offsets,
11711 sections.str_offsets_offset,
11712 sections.str_offsets_size);
11713 /* The "str" section is global to the entire DWP file. */
11714 dwo_file->sections.str = dwp_file->sections.str;
11715 /* The info or types section is assigned below to dwo_unit,
11716 there's no need to record it in dwo_file.
11717 Also, we can't simply record type sections in dwo_file because
11718 we record a pointer into the vector in dwo_unit. As we collect more
11719 types we'll grow the vector and eventually have to reallocate space
11720 for it, invalidating all copies of pointers into the previous
11722 *dwo_file_slot = dwo_file;
11726 dwarf_read_debug_printf ("Using existing virtual DWO: %s",
11727 virtual_dwo_name.c_str ());
11729 dwo_file = (struct dwo_file *) *dwo_file_slot;
11732 dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
11733 dwo_unit->dwo_file = dwo_file;
11734 dwo_unit->signature = signature;
11735 dwo_unit->section =
11736 XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
11737 *dwo_unit->section = create_dwp_v2_or_v5_section
11740 ? &dwp_file->sections.types
11741 : &dwp_file->sections.info,
11742 sections.info_or_types_offset,
11743 sections.info_or_types_size);
11744 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
11749 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
11750 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
11751 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
11752 This is for DWP version 5 files. */
11754 static struct dwo_unit *
11755 create_dwo_unit_in_dwp_v5 (dwarf2_per_objfile *per_objfile,
11756 struct dwp_file *dwp_file,
11757 uint32_t unit_index,
11758 const char *comp_dir,
11759 ULONGEST signature, int is_debug_types)
11761 const struct dwp_hash_table *dwp_htab
11762 = is_debug_types ? dwp_file->tus : dwp_file->cus;
11763 bfd *dbfd = dwp_file->dbfd.get ();
11764 const char *kind = is_debug_types ? "TU" : "CU";
11765 struct dwo_file *dwo_file;
11766 struct dwo_unit *dwo_unit;
11767 struct virtual_v2_or_v5_dwo_sections sections {};
11768 void **dwo_file_slot;
11770 gdb_assert (dwp_file->version == 5);
11772 dwarf_read_debug_printf ("Reading %s %s/%s in DWP V5 file: %s",
11773 kind, pulongest (unit_index), hex_string (signature),
11776 /* Fetch the section offsets of this DWO unit. */
11778 /* memset (§ions, 0, sizeof (sections)); */
11780 for (int i = 0; i < dwp_htab->nr_columns; ++i)
11782 uint32_t offset = read_4_bytes (dbfd,
11783 dwp_htab->section_pool.v5.offsets
11784 + (((unit_index - 1)
11785 * dwp_htab->nr_columns
11787 * sizeof (uint32_t)));
11788 uint32_t size = read_4_bytes (dbfd,
11789 dwp_htab->section_pool.v5.sizes
11790 + (((unit_index - 1) * dwp_htab->nr_columns
11792 * sizeof (uint32_t)));
11794 switch (dwp_htab->section_pool.v5.section_ids[i])
11796 case DW_SECT_ABBREV_V5:
11797 sections.abbrev_offset = offset;
11798 sections.abbrev_size = size;
11800 case DW_SECT_INFO_V5:
11801 sections.info_or_types_offset = offset;
11802 sections.info_or_types_size = size;
11804 case DW_SECT_LINE_V5:
11805 sections.line_offset = offset;
11806 sections.line_size = size;
11808 case DW_SECT_LOCLISTS_V5:
11809 sections.loclists_offset = offset;
11810 sections.loclists_size = size;
11812 case DW_SECT_MACRO_V5:
11813 sections.macro_offset = offset;
11814 sections.macro_size = size;
11816 case DW_SECT_RNGLISTS_V5:
11817 sections.rnglists_offset = offset;
11818 sections.rnglists_size = size;
11820 case DW_SECT_STR_OFFSETS_V5:
11821 sections.str_offsets_offset = offset;
11822 sections.str_offsets_size = size;
11824 case DW_SECT_RESERVED_V5:
11830 /* It's easier for the rest of the code if we fake a struct dwo_file and
11831 have dwo_unit "live" in that. At least for now.
11833 The DWP file can be made up of a random collection of CUs and TUs.
11834 However, for each CU + set of TUs that came from the same original DWO
11835 file, we can combine them back into a virtual DWO file to save space
11836 (fewer struct dwo_file objects to allocate). Remember that for really
11837 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
11839 std::string virtual_dwo_name =
11840 string_printf ("virtual-dwo/%ld-%ld-%ld-%ld-%ld-%ld",
11841 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
11842 (long) (sections.line_size ? sections.line_offset : 0),
11843 (long) (sections.loclists_size ? sections.loclists_offset : 0),
11844 (long) (sections.str_offsets_size
11845 ? sections.str_offsets_offset : 0),
11846 (long) (sections.macro_size ? sections.macro_offset : 0),
11847 (long) (sections.rnglists_size ? sections.rnglists_offset: 0));
11848 /* Can we use an existing virtual DWO file? */
11849 dwo_file_slot = lookup_dwo_file_slot (per_objfile,
11850 virtual_dwo_name.c_str (),
11852 /* Create one if necessary. */
11853 if (*dwo_file_slot == NULL)
11855 dwarf_read_debug_printf ("Creating virtual DWO: %s",
11856 virtual_dwo_name.c_str ());
11858 dwo_file = new struct dwo_file;
11859 dwo_file->dwo_name = per_objfile->objfile->intern (virtual_dwo_name);
11860 dwo_file->comp_dir = comp_dir;
11861 dwo_file->sections.abbrev =
11862 create_dwp_v2_or_v5_section (per_objfile,
11863 &dwp_file->sections.abbrev,
11864 sections.abbrev_offset,
11865 sections.abbrev_size);
11866 dwo_file->sections.line =
11867 create_dwp_v2_or_v5_section (per_objfile,
11868 &dwp_file->sections.line,
11869 sections.line_offset, sections.line_size);
11870 dwo_file->sections.macro =
11871 create_dwp_v2_or_v5_section (per_objfile,
11872 &dwp_file->sections.macro,
11873 sections.macro_offset,
11874 sections.macro_size);
11875 dwo_file->sections.loclists =
11876 create_dwp_v2_or_v5_section (per_objfile,
11877 &dwp_file->sections.loclists,
11878 sections.loclists_offset,
11879 sections.loclists_size);
11880 dwo_file->sections.rnglists =
11881 create_dwp_v2_or_v5_section (per_objfile,
11882 &dwp_file->sections.rnglists,
11883 sections.rnglists_offset,
11884 sections.rnglists_size);
11885 dwo_file->sections.str_offsets =
11886 create_dwp_v2_or_v5_section (per_objfile,
11887 &dwp_file->sections.str_offsets,
11888 sections.str_offsets_offset,
11889 sections.str_offsets_size);
11890 /* The "str" section is global to the entire DWP file. */
11891 dwo_file->sections.str = dwp_file->sections.str;
11892 /* The info or types section is assigned below to dwo_unit,
11893 there's no need to record it in dwo_file.
11894 Also, we can't simply record type sections in dwo_file because
11895 we record a pointer into the vector in dwo_unit. As we collect more
11896 types we'll grow the vector and eventually have to reallocate space
11897 for it, invalidating all copies of pointers into the previous
11899 *dwo_file_slot = dwo_file;
11903 dwarf_read_debug_printf ("Using existing virtual DWO: %s",
11904 virtual_dwo_name.c_str ());
11906 dwo_file = (struct dwo_file *) *dwo_file_slot;
11909 dwo_unit = OBSTACK_ZALLOC (&per_objfile->per_bfd->obstack, struct dwo_unit);
11910 dwo_unit->dwo_file = dwo_file;
11911 dwo_unit->signature = signature;
11913 = XOBNEW (&per_objfile->per_bfd->obstack, struct dwarf2_section_info);
11914 *dwo_unit->section = create_dwp_v2_or_v5_section (per_objfile,
11915 &dwp_file->sections.info,
11916 sections.info_or_types_offset,
11917 sections.info_or_types_size);
11918 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
11923 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
11924 Returns NULL if the signature isn't found. */
11926 static struct dwo_unit *
11927 lookup_dwo_unit_in_dwp (dwarf2_per_objfile *per_objfile,
11928 struct dwp_file *dwp_file, const char *comp_dir,
11929 ULONGEST signature, int is_debug_types)
11931 const struct dwp_hash_table *dwp_htab =
11932 is_debug_types ? dwp_file->tus : dwp_file->cus;
11933 bfd *dbfd = dwp_file->dbfd.get ();
11934 uint32_t mask = dwp_htab->nr_slots - 1;
11935 uint32_t hash = signature & mask;
11936 uint32_t hash2 = ((signature >> 32) & mask) | 1;
11939 struct dwo_unit find_dwo_cu;
11941 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
11942 find_dwo_cu.signature = signature;
11943 slot = htab_find_slot (is_debug_types
11944 ? dwp_file->loaded_tus.get ()
11945 : dwp_file->loaded_cus.get (),
11946 &find_dwo_cu, INSERT);
11949 return (struct dwo_unit *) *slot;
11951 /* Use a for loop so that we don't loop forever on bad debug info. */
11952 for (i = 0; i < dwp_htab->nr_slots; ++i)
11954 ULONGEST signature_in_table;
11956 signature_in_table =
11957 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
11958 if (signature_in_table == signature)
11960 uint32_t unit_index =
11961 read_4_bytes (dbfd,
11962 dwp_htab->unit_table + hash * sizeof (uint32_t));
11964 if (dwp_file->version == 1)
11966 *slot = create_dwo_unit_in_dwp_v1 (per_objfile, dwp_file,
11967 unit_index, comp_dir,
11968 signature, is_debug_types);
11970 else if (dwp_file->version == 2)
11972 *slot = create_dwo_unit_in_dwp_v2 (per_objfile, dwp_file,
11973 unit_index, comp_dir,
11974 signature, is_debug_types);
11976 else /* version == 5 */
11978 *slot = create_dwo_unit_in_dwp_v5 (per_objfile, dwp_file,
11979 unit_index, comp_dir,
11980 signature, is_debug_types);
11982 return (struct dwo_unit *) *slot;
11984 if (signature_in_table == 0)
11986 hash = (hash + hash2) & mask;
11989 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
11990 " [in module %s]"),
11994 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
11995 Open the file specified by FILE_NAME and hand it off to BFD for
11996 preliminary analysis. Return a newly initialized bfd *, which
11997 includes a canonicalized copy of FILE_NAME.
11998 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
11999 SEARCH_CWD is true if the current directory is to be searched.
12000 It will be searched before debug-file-directory.
12001 If successful, the file is added to the bfd include table of the
12002 objfile's bfd (see gdb_bfd_record_inclusion).
12003 If unable to find/open the file, return NULL.
12004 NOTE: This function is derived from symfile_bfd_open. */
12006 static gdb_bfd_ref_ptr
12007 try_open_dwop_file (dwarf2_per_objfile *per_objfile,
12008 const char *file_name, int is_dwp, int search_cwd)
12011 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
12012 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
12013 to debug_file_directory. */
12014 const char *search_path;
12015 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12017 gdb::unique_xmalloc_ptr<char> search_path_holder;
12020 if (*debug_file_directory != '\0')
12022 search_path_holder.reset (concat (".", dirname_separator_string,
12023 debug_file_directory,
12025 search_path = search_path_holder.get ();
12031 search_path = debug_file_directory;
12033 /* Add the path for the executable binary to the list of search paths. */
12034 std::string objfile_dir = ldirname (objfile_name (per_objfile->objfile));
12035 search_path_holder.reset (concat (objfile_dir.c_str (),
12036 dirname_separator_string,
12037 search_path, nullptr));
12038 search_path = search_path_holder.get ();
12040 openp_flags flags = OPF_RETURN_REALPATH;
12042 flags |= OPF_SEARCH_IN_PATH;
12044 gdb::unique_xmalloc_ptr<char> absolute_name;
12045 desc = openp (search_path, flags, file_name,
12046 O_RDONLY | O_BINARY, &absolute_name);
12050 gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12052 if (sym_bfd == NULL)
12054 bfd_set_cacheable (sym_bfd.get (), 1);
12056 if (!bfd_check_format (sym_bfd.get (), bfd_object))
12059 /* Success. Record the bfd as having been included by the objfile's bfd.
12060 This is important because things like demangled_names_hash lives in the
12061 objfile's per_bfd space and may have references to things like symbol
12062 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
12063 gdb_bfd_record_inclusion (per_objfile->objfile->obfd, sym_bfd.get ());
12068 /* Try to open DWO file FILE_NAME.
12069 COMP_DIR is the DW_AT_comp_dir attribute.
12070 The result is the bfd handle of the file.
12071 If there is a problem finding or opening the file, return NULL.
12072 Upon success, the canonicalized path of the file is stored in the bfd,
12073 same as symfile_bfd_open. */
12075 static gdb_bfd_ref_ptr
12076 open_dwo_file (dwarf2_per_objfile *per_objfile,
12077 const char *file_name, const char *comp_dir)
12079 if (IS_ABSOLUTE_PATH (file_name))
12080 return try_open_dwop_file (per_objfile, file_name,
12081 0 /*is_dwp*/, 0 /*search_cwd*/);
12083 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
12085 if (comp_dir != NULL)
12087 gdb::unique_xmalloc_ptr<char> path_to_try
12088 (concat (comp_dir, SLASH_STRING, file_name, (char *) NULL));
12090 /* NOTE: If comp_dir is a relative path, this will also try the
12091 search path, which seems useful. */
12092 gdb_bfd_ref_ptr abfd (try_open_dwop_file (per_objfile, path_to_try.get (),
12094 1 /*search_cwd*/));
12099 /* That didn't work, try debug-file-directory, which, despite its name,
12100 is a list of paths. */
12102 if (*debug_file_directory == '\0')
12105 return try_open_dwop_file (per_objfile, file_name,
12106 0 /*is_dwp*/, 1 /*search_cwd*/);
12109 /* This function is mapped across the sections and remembers the offset and
12110 size of each of the DWO debugging sections we are interested in. */
12113 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp,
12114 dwo_sections *dwo_sections)
12116 const struct dwop_section_names *names = &dwop_section_names;
12118 if (names->abbrev_dwo.matches (sectp->name))
12120 dwo_sections->abbrev.s.section = sectp;
12121 dwo_sections->abbrev.size = bfd_section_size (sectp);
12123 else if (names->info_dwo.matches (sectp->name))
12125 dwo_sections->info.s.section = sectp;
12126 dwo_sections->info.size = bfd_section_size (sectp);
12128 else if (names->line_dwo.matches (sectp->name))
12130 dwo_sections->line.s.section = sectp;
12131 dwo_sections->line.size = bfd_section_size (sectp);
12133 else if (names->loc_dwo.matches (sectp->name))
12135 dwo_sections->loc.s.section = sectp;
12136 dwo_sections->loc.size = bfd_section_size (sectp);
12138 else if (names->loclists_dwo.matches (sectp->name))
12140 dwo_sections->loclists.s.section = sectp;
12141 dwo_sections->loclists.size = bfd_section_size (sectp);
12143 else if (names->macinfo_dwo.matches (sectp->name))
12145 dwo_sections->macinfo.s.section = sectp;
12146 dwo_sections->macinfo.size = bfd_section_size (sectp);
12148 else if (names->macro_dwo.matches (sectp->name))
12150 dwo_sections->macro.s.section = sectp;
12151 dwo_sections->macro.size = bfd_section_size (sectp);
12153 else if (names->rnglists_dwo.matches (sectp->name))
12155 dwo_sections->rnglists.s.section = sectp;
12156 dwo_sections->rnglists.size = bfd_section_size (sectp);
12158 else if (names->str_dwo.matches (sectp->name))
12160 dwo_sections->str.s.section = sectp;
12161 dwo_sections->str.size = bfd_section_size (sectp);
12163 else if (names->str_offsets_dwo.matches (sectp->name))
12165 dwo_sections->str_offsets.s.section = sectp;
12166 dwo_sections->str_offsets.size = bfd_section_size (sectp);
12168 else if (names->types_dwo.matches (sectp->name))
12170 struct dwarf2_section_info type_section;
12172 memset (&type_section, 0, sizeof (type_section));
12173 type_section.s.section = sectp;
12174 type_section.size = bfd_section_size (sectp);
12175 dwo_sections->types.push_back (type_section);
12179 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12180 by PER_CU. This is for the non-DWP case.
12181 The result is NULL if DWO_NAME can't be found. */
12183 static struct dwo_file *
12184 open_and_init_dwo_file (dwarf2_cu *cu, const char *dwo_name,
12185 const char *comp_dir)
12187 dwarf2_per_objfile *per_objfile = cu->per_objfile;
12189 gdb_bfd_ref_ptr dbfd = open_dwo_file (per_objfile, dwo_name, comp_dir);
12192 dwarf_read_debug_printf ("DWO file not found: %s", dwo_name);
12197 dwo_file_up dwo_file (new struct dwo_file);
12198 dwo_file->dwo_name = dwo_name;
12199 dwo_file->comp_dir = comp_dir;
12200 dwo_file->dbfd = std::move (dbfd);
12202 for (asection *sec : gdb_bfd_sections (dwo_file->dbfd))
12203 dwarf2_locate_dwo_sections (dwo_file->dbfd.get (), sec,
12204 &dwo_file->sections);
12206 create_cus_hash_table (per_objfile, cu, *dwo_file, dwo_file->sections.info,
12209 if (cu->per_cu->dwarf_version < 5)
12211 create_debug_types_hash_table (per_objfile, dwo_file.get (),
12212 dwo_file->sections.types, dwo_file->tus);
12216 create_debug_type_hash_table (per_objfile, dwo_file.get (),
12217 &dwo_file->sections.info, dwo_file->tus,
12218 rcuh_kind::COMPILE);
12221 dwarf_read_debug_printf ("DWO file found: %s", dwo_name);
12223 return dwo_file.release ();
12226 /* This function is mapped across the sections and remembers the offset and
12227 size of each of the DWP debugging sections common to version 1 and 2 that
12228 we are interested in. */
12231 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
12232 dwp_file *dwp_file)
12234 const struct dwop_section_names *names = &dwop_section_names;
12235 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12237 /* Record the ELF section number for later lookup: this is what the
12238 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
12239 gdb_assert (elf_section_nr < dwp_file->num_sections);
12240 dwp_file->elf_sections[elf_section_nr] = sectp;
12242 /* Look for specific sections that we need. */
12243 if (names->str_dwo.matches (sectp->name))
12245 dwp_file->sections.str.s.section = sectp;
12246 dwp_file->sections.str.size = bfd_section_size (sectp);
12248 else if (names->cu_index.matches (sectp->name))
12250 dwp_file->sections.cu_index.s.section = sectp;
12251 dwp_file->sections.cu_index.size = bfd_section_size (sectp);
12253 else if (names->tu_index.matches (sectp->name))
12255 dwp_file->sections.tu_index.s.section = sectp;
12256 dwp_file->sections.tu_index.size = bfd_section_size (sectp);
12260 /* This function is mapped across the sections and remembers the offset and
12261 size of each of the DWP version 2 debugging sections that we are interested
12262 in. This is split into a separate function because we don't know if we
12263 have version 1 or 2 or 5 until we parse the cu_index/tu_index sections. */
12266 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
12268 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
12269 const struct dwop_section_names *names = &dwop_section_names;
12270 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12272 /* Record the ELF section number for later lookup: this is what the
12273 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
12274 gdb_assert (elf_section_nr < dwp_file->num_sections);
12275 dwp_file->elf_sections[elf_section_nr] = sectp;
12277 /* Look for specific sections that we need. */
12278 if (names->abbrev_dwo.matches (sectp->name))
12280 dwp_file->sections.abbrev.s.section = sectp;
12281 dwp_file->sections.abbrev.size = bfd_section_size (sectp);
12283 else if (names->info_dwo.matches (sectp->name))
12285 dwp_file->sections.info.s.section = sectp;
12286 dwp_file->sections.info.size = bfd_section_size (sectp);
12288 else if (names->line_dwo.matches (sectp->name))
12290 dwp_file->sections.line.s.section = sectp;
12291 dwp_file->sections.line.size = bfd_section_size (sectp);
12293 else if (names->loc_dwo.matches (sectp->name))
12295 dwp_file->sections.loc.s.section = sectp;
12296 dwp_file->sections.loc.size = bfd_section_size (sectp);
12298 else if (names->macinfo_dwo.matches (sectp->name))
12300 dwp_file->sections.macinfo.s.section = sectp;
12301 dwp_file->sections.macinfo.size = bfd_section_size (sectp);
12303 else if (names->macro_dwo.matches (sectp->name))
12305 dwp_file->sections.macro.s.section = sectp;
12306 dwp_file->sections.macro.size = bfd_section_size (sectp);
12308 else if (names->str_offsets_dwo.matches (sectp->name))
12310 dwp_file->sections.str_offsets.s.section = sectp;
12311 dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
12313 else if (names->types_dwo.matches (sectp->name))
12315 dwp_file->sections.types.s.section = sectp;
12316 dwp_file->sections.types.size = bfd_section_size (sectp);
12320 /* This function is mapped across the sections and remembers the offset and
12321 size of each of the DWP version 5 debugging sections that we are interested
12322 in. This is split into a separate function because we don't know if we
12323 have version 1 or 2 or 5 until we parse the cu_index/tu_index sections. */
12326 dwarf2_locate_v5_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
12328 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
12329 const struct dwop_section_names *names = &dwop_section_names;
12330 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
12332 /* Record the ELF section number for later lookup: this is what the
12333 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
12334 gdb_assert (elf_section_nr < dwp_file->num_sections);
12335 dwp_file->elf_sections[elf_section_nr] = sectp;
12337 /* Look for specific sections that we need. */
12338 if (names->abbrev_dwo.matches (sectp->name))
12340 dwp_file->sections.abbrev.s.section = sectp;
12341 dwp_file->sections.abbrev.size = bfd_section_size (sectp);
12343 else if (names->info_dwo.matches (sectp->name))
12345 dwp_file->sections.info.s.section = sectp;
12346 dwp_file->sections.info.size = bfd_section_size (sectp);
12348 else if (names->line_dwo.matches (sectp->name))
12350 dwp_file->sections.line.s.section = sectp;
12351 dwp_file->sections.line.size = bfd_section_size (sectp);
12353 else if (names->loclists_dwo.matches (sectp->name))
12355 dwp_file->sections.loclists.s.section = sectp;
12356 dwp_file->sections.loclists.size = bfd_section_size (sectp);
12358 else if (names->macro_dwo.matches (sectp->name))
12360 dwp_file->sections.macro.s.section = sectp;
12361 dwp_file->sections.macro.size = bfd_section_size (sectp);
12363 else if (names->rnglists_dwo.matches (sectp->name))
12365 dwp_file->sections.rnglists.s.section = sectp;
12366 dwp_file->sections.rnglists.size = bfd_section_size (sectp);
12368 else if (names->str_offsets_dwo.matches (sectp->name))
12370 dwp_file->sections.str_offsets.s.section = sectp;
12371 dwp_file->sections.str_offsets.size = bfd_section_size (sectp);
12375 /* Hash function for dwp_file loaded CUs/TUs. */
12378 hash_dwp_loaded_cutus (const void *item)
12380 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
12382 /* This drops the top 32 bits of the signature, but is ok for a hash. */
12383 return dwo_unit->signature;
12386 /* Equality function for dwp_file loaded CUs/TUs. */
12389 eq_dwp_loaded_cutus (const void *a, const void *b)
12391 const struct dwo_unit *dua = (const struct dwo_unit *) a;
12392 const struct dwo_unit *dub = (const struct dwo_unit *) b;
12394 return dua->signature == dub->signature;
12397 /* Allocate a hash table for dwp_file loaded CUs/TUs. */
12400 allocate_dwp_loaded_cutus_table ()
12402 return htab_up (htab_create_alloc (3,
12403 hash_dwp_loaded_cutus,
12404 eq_dwp_loaded_cutus,
12405 NULL, xcalloc, xfree));
12408 /* Try to open DWP file FILE_NAME.
12409 The result is the bfd handle of the file.
12410 If there is a problem finding or opening the file, return NULL.
12411 Upon success, the canonicalized path of the file is stored in the bfd,
12412 same as symfile_bfd_open. */
12414 static gdb_bfd_ref_ptr
12415 open_dwp_file (dwarf2_per_objfile *per_objfile, const char *file_name)
12417 gdb_bfd_ref_ptr abfd (try_open_dwop_file (per_objfile, file_name,
12419 1 /*search_cwd*/));
12423 /* Work around upstream bug 15652.
12424 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
12425 [Whether that's a "bug" is debatable, but it is getting in our way.]
12426 We have no real idea where the dwp file is, because gdb's realpath-ing
12427 of the executable's path may have discarded the needed info.
12428 [IWBN if the dwp file name was recorded in the executable, akin to
12429 .gnu_debuglink, but that doesn't exist yet.]
12430 Strip the directory from FILE_NAME and search again. */
12431 if (*debug_file_directory != '\0')
12433 /* Don't implicitly search the current directory here.
12434 If the user wants to search "." to handle this case,
12435 it must be added to debug-file-directory. */
12436 return try_open_dwop_file (per_objfile, lbasename (file_name),
12444 /* Initialize the use of the DWP file for the current objfile.
12445 By convention the name of the DWP file is ${objfile}.dwp.
12446 The result is NULL if it can't be found. */
12448 static std::unique_ptr<struct dwp_file>
12449 open_and_init_dwp_file (dwarf2_per_objfile *per_objfile)
12451 struct objfile *objfile = per_objfile->objfile;
12453 /* Try to find first .dwp for the binary file before any symbolic links
12456 /* If the objfile is a debug file, find the name of the real binary
12457 file and get the name of dwp file from there. */
12458 std::string dwp_name;
12459 if (objfile->separate_debug_objfile_backlink != NULL)
12461 struct objfile *backlink = objfile->separate_debug_objfile_backlink;
12462 const char *backlink_basename = lbasename (backlink->original_name);
12464 dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
12467 dwp_name = objfile->original_name;
12469 dwp_name += ".dwp";
12471 gdb_bfd_ref_ptr dbfd (open_dwp_file (per_objfile, dwp_name.c_str ()));
12473 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
12475 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
12476 dwp_name = objfile_name (objfile);
12477 dwp_name += ".dwp";
12478 dbfd = open_dwp_file (per_objfile, dwp_name.c_str ());
12483 dwarf_read_debug_printf ("DWP file not found: %s", dwp_name.c_str ());
12485 return std::unique_ptr<dwp_file> ();
12488 const char *name = bfd_get_filename (dbfd.get ());
12489 std::unique_ptr<struct dwp_file> dwp_file
12490 (new struct dwp_file (name, std::move (dbfd)));
12492 dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
12493 dwp_file->elf_sections =
12494 OBSTACK_CALLOC (&per_objfile->per_bfd->obstack,
12495 dwp_file->num_sections, asection *);
12497 for (asection *sec : gdb_bfd_sections (dwp_file->dbfd))
12498 dwarf2_locate_common_dwp_sections (dwp_file->dbfd.get (), sec,
12501 dwp_file->cus = create_dwp_hash_table (per_objfile, dwp_file.get (), 0);
12503 dwp_file->tus = create_dwp_hash_table (per_objfile, dwp_file.get (), 1);
12505 /* The DWP file version is stored in the hash table. Oh well. */
12506 if (dwp_file->cus && dwp_file->tus
12507 && dwp_file->cus->version != dwp_file->tus->version)
12509 /* Technically speaking, we should try to limp along, but this is
12510 pretty bizarre. We use pulongest here because that's the established
12511 portability solution (e.g, we cannot use %u for uint32_t). */
12512 error (_("Dwarf Error: DWP file CU version %s doesn't match"
12513 " TU version %s [in DWP file %s]"),
12514 pulongest (dwp_file->cus->version),
12515 pulongest (dwp_file->tus->version), dwp_name.c_str ());
12519 dwp_file->version = dwp_file->cus->version;
12520 else if (dwp_file->tus)
12521 dwp_file->version = dwp_file->tus->version;
12523 dwp_file->version = 2;
12525 for (asection *sec : gdb_bfd_sections (dwp_file->dbfd))
12527 if (dwp_file->version == 2)
12528 dwarf2_locate_v2_dwp_sections (dwp_file->dbfd.get (), sec,
12531 dwarf2_locate_v5_dwp_sections (dwp_file->dbfd.get (), sec,
12535 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table ();
12536 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table ();
12538 dwarf_read_debug_printf ("DWP file found: %s", dwp_file->name);
12539 dwarf_read_debug_printf (" %s CUs, %s TUs",
12540 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
12541 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
12546 /* Wrapper around open_and_init_dwp_file, only open it once. */
12548 static struct dwp_file *
12549 get_dwp_file (dwarf2_per_objfile *per_objfile)
12551 if (!per_objfile->per_bfd->dwp_checked)
12553 per_objfile->per_bfd->dwp_file = open_and_init_dwp_file (per_objfile);
12554 per_objfile->per_bfd->dwp_checked = 1;
12556 return per_objfile->per_bfd->dwp_file.get ();
12559 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
12560 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
12561 or in the DWP file for the objfile, referenced by THIS_UNIT.
12562 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
12563 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
12565 This is called, for example, when wanting to read a variable with a
12566 complex location. Therefore we don't want to do file i/o for every call.
12567 Therefore we don't want to look for a DWO file on every call.
12568 Therefore we first see if we've already seen SIGNATURE in a DWP file,
12569 then we check if we've already seen DWO_NAME, and only THEN do we check
12572 The result is a pointer to the dwo_unit object or NULL if we didn't find it
12573 (dwo_id mismatch or couldn't find the DWO/DWP file). */
12575 static struct dwo_unit *
12576 lookup_dwo_cutu (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
12577 ULONGEST signature, int is_debug_types)
12579 dwarf2_per_objfile *per_objfile = cu->per_objfile;
12580 struct objfile *objfile = per_objfile->objfile;
12581 const char *kind = is_debug_types ? "TU" : "CU";
12582 void **dwo_file_slot;
12583 struct dwo_file *dwo_file;
12584 struct dwp_file *dwp_file;
12586 /* First see if there's a DWP file.
12587 If we have a DWP file but didn't find the DWO inside it, don't
12588 look for the original DWO file. It makes gdb behave differently
12589 depending on whether one is debugging in the build tree. */
12591 dwp_file = get_dwp_file (per_objfile);
12592 if (dwp_file != NULL)
12594 const struct dwp_hash_table *dwp_htab =
12595 is_debug_types ? dwp_file->tus : dwp_file->cus;
12597 if (dwp_htab != NULL)
12599 struct dwo_unit *dwo_cutu =
12600 lookup_dwo_unit_in_dwp (per_objfile, dwp_file, comp_dir, signature,
12603 if (dwo_cutu != NULL)
12605 dwarf_read_debug_printf ("Virtual DWO %s %s found: @%s",
12606 kind, hex_string (signature),
12607 host_address_to_string (dwo_cutu));
12615 /* No DWP file, look for the DWO file. */
12617 dwo_file_slot = lookup_dwo_file_slot (per_objfile, dwo_name, comp_dir);
12618 if (*dwo_file_slot == NULL)
12620 /* Read in the file and build a table of the CUs/TUs it contains. */
12621 *dwo_file_slot = open_and_init_dwo_file (cu, dwo_name, comp_dir);
12623 /* NOTE: This will be NULL if unable to open the file. */
12624 dwo_file = (struct dwo_file *) *dwo_file_slot;
12626 if (dwo_file != NULL)
12628 struct dwo_unit *dwo_cutu = NULL;
12630 if (is_debug_types && dwo_file->tus)
12632 struct dwo_unit find_dwo_cutu;
12634 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
12635 find_dwo_cutu.signature = signature;
12637 = (struct dwo_unit *) htab_find (dwo_file->tus.get (),
12640 else if (!is_debug_types && dwo_file->cus)
12642 struct dwo_unit find_dwo_cutu;
12644 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
12645 find_dwo_cutu.signature = signature;
12646 dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus.get (),
12650 if (dwo_cutu != NULL)
12652 dwarf_read_debug_printf ("DWO %s %s(%s) found: @%s",
12653 kind, dwo_name, hex_string (signature),
12654 host_address_to_string (dwo_cutu));
12661 /* We didn't find it. This could mean a dwo_id mismatch, or
12662 someone deleted the DWO/DWP file, or the search path isn't set up
12663 correctly to find the file. */
12665 dwarf_read_debug_printf ("DWO %s %s(%s) not found",
12666 kind, dwo_name, hex_string (signature));
12668 /* This is a warning and not a complaint because it can be caused by
12669 pilot error (e.g., user accidentally deleting the DWO). */
12671 /* Print the name of the DWP file if we looked there, helps the user
12672 better diagnose the problem. */
12673 std::string dwp_text;
12675 if (dwp_file != NULL)
12676 dwp_text = string_printf (" [in DWP file %s]",
12677 lbasename (dwp_file->name));
12679 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
12680 " [in module %s]"),
12681 kind, dwo_name, hex_string (signature), dwp_text.c_str (), kind,
12682 sect_offset_str (cu->per_cu->sect_off), objfile_name (objfile));
12687 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
12688 See lookup_dwo_cutu_unit for details. */
12690 static struct dwo_unit *
12691 lookup_dwo_comp_unit (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir,
12692 ULONGEST signature)
12694 gdb_assert (!cu->per_cu->is_debug_types);
12696 return lookup_dwo_cutu (cu, dwo_name, comp_dir, signature, 0);
12699 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
12700 See lookup_dwo_cutu_unit for details. */
12702 static struct dwo_unit *
12703 lookup_dwo_type_unit (dwarf2_cu *cu, const char *dwo_name, const char *comp_dir)
12705 gdb_assert (cu->per_cu->is_debug_types);
12707 signatured_type *sig_type = (signatured_type *) cu->per_cu;
12709 return lookup_dwo_cutu (cu, dwo_name, comp_dir, sig_type->signature, 1);
12712 /* Traversal function for queue_and_load_all_dwo_tus. */
12715 queue_and_load_dwo_tu (void **slot, void *info)
12717 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
12718 dwarf2_cu *cu = (dwarf2_cu *) info;
12719 ULONGEST signature = dwo_unit->signature;
12720 signatured_type *sig_type = lookup_dwo_signatured_type (cu, signature);
12722 if (sig_type != NULL)
12724 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
12725 a real dependency of PER_CU on SIG_TYPE. That is detected later
12726 while processing PER_CU. */
12727 if (maybe_queue_comp_unit (NULL, sig_type, cu->per_objfile,
12729 load_full_type_unit (sig_type, cu->per_objfile);
12730 cu->per_cu->imported_symtabs_push (sig_type);
12736 /* Queue all TUs contained in the DWO of CU to be read in.
12737 The DWO may have the only definition of the type, though it may not be
12738 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
12739 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
12742 queue_and_load_all_dwo_tus (dwarf2_cu *cu)
12744 struct dwo_unit *dwo_unit;
12745 struct dwo_file *dwo_file;
12747 gdb_assert (cu != nullptr);
12748 gdb_assert (!cu->per_cu->is_debug_types);
12749 gdb_assert (get_dwp_file (cu->per_objfile) == nullptr);
12751 dwo_unit = cu->dwo_unit;
12752 gdb_assert (dwo_unit != NULL);
12754 dwo_file = dwo_unit->dwo_file;
12755 if (dwo_file->tus != NULL)
12756 htab_traverse_noresize (dwo_file->tus.get (), queue_and_load_dwo_tu, cu);
12759 /* Read in various DIEs. */
12761 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
12762 Inherit only the children of the DW_AT_abstract_origin DIE not being
12763 already referenced by DW_AT_abstract_origin from the children of the
12767 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
12769 struct die_info *child_die;
12770 sect_offset *offsetp;
12771 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
12772 struct die_info *origin_die;
12773 /* Iterator of the ORIGIN_DIE children. */
12774 struct die_info *origin_child_die;
12775 struct attribute *attr;
12776 struct dwarf2_cu *origin_cu;
12777 struct pending **origin_previous_list_in_scope;
12779 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
12783 /* Note that following die references may follow to a die in a
12787 origin_die = follow_die_ref (die, attr, &origin_cu);
12789 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
12791 origin_previous_list_in_scope = origin_cu->list_in_scope;
12792 origin_cu->list_in_scope = cu->list_in_scope;
12794 if (die->tag != origin_die->tag
12795 && !(die->tag == DW_TAG_inlined_subroutine
12796 && origin_die->tag == DW_TAG_subprogram))
12797 complaint (_("DIE %s and its abstract origin %s have different tags"),
12798 sect_offset_str (die->sect_off),
12799 sect_offset_str (origin_die->sect_off));
12801 /* Find if the concrete and abstract trees are structurally the
12802 same. This is a shallow traversal and it is not bullet-proof;
12803 the compiler can trick the debugger into believing that the trees
12804 are isomorphic, whereas they actually are not. However, the
12805 likelyhood of this happening is pretty low, and a full-fledged
12806 check would be an overkill. */
12807 bool are_isomorphic = true;
12808 die_info *concrete_child = die->child;
12809 die_info *abstract_child = origin_die->child;
12810 while (concrete_child != nullptr || abstract_child != nullptr)
12812 if (concrete_child == nullptr
12813 || abstract_child == nullptr
12814 || concrete_child->tag != abstract_child->tag)
12816 are_isomorphic = false;
12820 concrete_child = concrete_child->sibling;
12821 abstract_child = abstract_child->sibling;
12824 /* Walk the origin's children in parallel to the concrete children.
12825 This helps match an origin child in case the debug info misses
12826 DW_AT_abstract_origin attributes. Keep in mind that the abstract
12827 origin tree may not have the same tree structure as the concrete
12829 die_info *corresponding_abstract_child
12830 = are_isomorphic ? origin_die->child : nullptr;
12832 std::vector<sect_offset> offsets;
12834 for (child_die = die->child;
12835 child_die && child_die->tag;
12836 child_die = child_die->sibling)
12838 struct die_info *child_origin_die;
12839 struct dwarf2_cu *child_origin_cu;
12841 /* We are trying to process concrete instance entries:
12842 DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
12843 it's not relevant to our analysis here. i.e. detecting DIEs that are
12844 present in the abstract instance but not referenced in the concrete
12846 if (child_die->tag == DW_TAG_call_site
12847 || child_die->tag == DW_TAG_GNU_call_site)
12849 if (are_isomorphic)
12850 corresponding_abstract_child
12851 = corresponding_abstract_child->sibling;
12855 /* For each CHILD_DIE, find the corresponding child of
12856 ORIGIN_DIE. If there is more than one layer of
12857 DW_AT_abstract_origin, follow them all; there shouldn't be,
12858 but GCC versions at least through 4.4 generate this (GCC PR
12860 child_origin_die = child_die;
12861 child_origin_cu = cu;
12864 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
12868 child_origin_die = follow_die_ref (child_origin_die, attr,
12872 /* If missing DW_AT_abstract_origin, try the corresponding child
12873 of the origin. Clang emits such lexical scopes. */
12874 if (child_origin_die == child_die
12875 && dwarf2_attr (child_die, DW_AT_abstract_origin, cu) == nullptr
12877 && child_die->tag == DW_TAG_lexical_block)
12878 child_origin_die = corresponding_abstract_child;
12880 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
12881 counterpart may exist. */
12882 if (child_origin_die != child_die)
12884 if (child_die->tag != child_origin_die->tag
12885 && !(child_die->tag == DW_TAG_inlined_subroutine
12886 && child_origin_die->tag == DW_TAG_subprogram))
12887 complaint (_("Child DIE %s and its abstract origin %s have "
12889 sect_offset_str (child_die->sect_off),
12890 sect_offset_str (child_origin_die->sect_off));
12891 if (child_origin_die->parent != origin_die)
12892 complaint (_("Child DIE %s and its abstract origin %s have "
12893 "different parents"),
12894 sect_offset_str (child_die->sect_off),
12895 sect_offset_str (child_origin_die->sect_off));
12897 offsets.push_back (child_origin_die->sect_off);
12900 if (are_isomorphic)
12901 corresponding_abstract_child = corresponding_abstract_child->sibling;
12903 std::sort (offsets.begin (), offsets.end ());
12904 sect_offset *offsets_end = offsets.data () + offsets.size ();
12905 for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
12906 if (offsetp[-1] == *offsetp)
12907 complaint (_("Multiple children of DIE %s refer "
12908 "to DIE %s as their abstract origin"),
12909 sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
12911 offsetp = offsets.data ();
12912 origin_child_die = origin_die->child;
12913 while (origin_child_die && origin_child_die->tag)
12915 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
12916 while (offsetp < offsets_end
12917 && *offsetp < origin_child_die->sect_off)
12919 if (offsetp >= offsets_end
12920 || *offsetp > origin_child_die->sect_off)
12922 /* Found that ORIGIN_CHILD_DIE is really not referenced.
12923 Check whether we're already processing ORIGIN_CHILD_DIE.
12924 This can happen with mutually referenced abstract_origins.
12926 if (!origin_child_die->in_process)
12927 process_die (origin_child_die, origin_cu);
12929 origin_child_die = origin_child_die->sibling;
12931 origin_cu->list_in_scope = origin_previous_list_in_scope;
12933 if (cu != origin_cu)
12934 compute_delayed_physnames (origin_cu);
12938 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
12940 struct objfile *objfile = cu->per_objfile->objfile;
12941 struct gdbarch *gdbarch = objfile->arch ();
12942 struct context_stack *newobj;
12945 struct die_info *child_die;
12946 struct attribute *attr, *call_line, *call_file;
12948 CORE_ADDR baseaddr;
12949 struct block *block;
12950 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
12951 std::vector<struct symbol *> template_args;
12952 struct template_symbol *templ_func = NULL;
12956 /* If we do not have call site information, we can't show the
12957 caller of this inlined function. That's too confusing, so
12958 only use the scope for local variables. */
12959 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
12960 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
12961 if (call_line == NULL || call_file == NULL)
12963 read_lexical_block_scope (die, cu);
12968 baseaddr = objfile->text_section_offset ();
12970 name = dwarf2_name (die, cu);
12972 /* Ignore functions with missing or empty names. These are actually
12973 illegal according to the DWARF standard. */
12976 complaint (_("missing name for subprogram DIE at %s"),
12977 sect_offset_str (die->sect_off));
12981 /* Ignore functions with missing or invalid low and high pc attributes. */
12982 if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
12983 <= PC_BOUNDS_INVALID)
12985 attr = dwarf2_attr (die, DW_AT_external, cu);
12986 if (attr == nullptr || !attr->as_boolean ())
12987 complaint (_("cannot get low and high bounds "
12988 "for subprogram DIE at %s"),
12989 sect_offset_str (die->sect_off));
12993 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
12994 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
12996 /* If we have any template arguments, then we must allocate a
12997 different sort of symbol. */
12998 for (child_die = die->child; child_die; child_die = child_die->sibling)
13000 if (child_die->tag == DW_TAG_template_type_param
13001 || child_die->tag == DW_TAG_template_value_param)
13003 templ_func = new (&objfile->objfile_obstack) template_symbol;
13004 templ_func->subclass = SYMBOL_TEMPLATE;
13009 gdb_assert (cu->get_builder () != nullptr);
13010 newobj = cu->get_builder ()->push_context (0, lowpc);
13011 newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13012 (struct symbol *) templ_func);
13014 if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
13015 set_objfile_main_name (objfile, newobj->name->linkage_name (),
13018 /* If there is a location expression for DW_AT_frame_base, record
13020 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13021 if (attr != nullptr)
13022 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13024 /* If there is a location for the static link, record it. */
13025 newobj->static_link = NULL;
13026 attr = dwarf2_attr (die, DW_AT_static_link, cu);
13027 if (attr != nullptr)
13029 newobj->static_link
13030 = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13031 attr_to_dynamic_prop (attr, die, cu, newobj->static_link,
13035 cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13037 if (die->child != NULL)
13039 child_die = die->child;
13040 while (child_die && child_die->tag)
13042 if (child_die->tag == DW_TAG_template_type_param
13043 || child_die->tag == DW_TAG_template_value_param)
13045 struct symbol *arg = new_symbol (child_die, NULL, cu);
13048 template_args.push_back (arg);
13051 process_die (child_die, cu);
13052 child_die = child_die->sibling;
13056 inherit_abstract_dies (die, cu);
13058 /* If we have a DW_AT_specification, we might need to import using
13059 directives from the context of the specification DIE. See the
13060 comment in determine_prefix. */
13061 if (cu->per_cu->lang == language_cplus
13062 && dwarf2_attr (die, DW_AT_specification, cu))
13064 struct dwarf2_cu *spec_cu = cu;
13065 struct die_info *spec_die = die_specification (die, &spec_cu);
13069 child_die = spec_die->child;
13070 while (child_die && child_die->tag)
13072 if (child_die->tag == DW_TAG_imported_module)
13073 process_die (child_die, spec_cu);
13074 child_die = child_die->sibling;
13077 /* In some cases, GCC generates specification DIEs that
13078 themselves contain DW_AT_specification attributes. */
13079 spec_die = die_specification (spec_die, &spec_cu);
13083 struct context_stack cstk = cu->get_builder ()->pop_context ();
13084 /* Make a block for the local symbols within. */
13085 block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13086 cstk.static_link, lowpc, highpc);
13088 /* For C++, set the block's scope. */
13089 if ((cu->per_cu->lang == language_cplus
13090 || cu->per_cu->lang == language_fortran
13091 || cu->per_cu->lang == language_d
13092 || cu->per_cu->lang == language_rust)
13093 && cu->processing_has_namespace_info)
13094 block_set_scope (block, determine_prefix (die, cu),
13095 &objfile->objfile_obstack);
13097 /* If we have address ranges, record them. */
13098 dwarf2_record_block_ranges (die, block, baseaddr, cu);
13100 gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13102 /* Attach template arguments to function. */
13103 if (!template_args.empty ())
13105 gdb_assert (templ_func != NULL);
13107 templ_func->n_template_arguments = template_args.size ();
13108 templ_func->template_arguments
13109 = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13110 templ_func->n_template_arguments);
13111 memcpy (templ_func->template_arguments,
13112 template_args.data (),
13113 (templ_func->n_template_arguments * sizeof (struct symbol *)));
13115 /* Make sure that the symtab is set on the new symbols. Even
13116 though they don't appear in this symtab directly, other parts
13117 of gdb assume that symbols do, and this is reasonably
13119 for (symbol *sym : template_args)
13120 symbol_set_symtab (sym, symbol_symtab (templ_func));
13123 /* In C++, we can have functions nested inside functions (e.g., when
13124 a function declares a class that has methods). This means that
13125 when we finish processing a function scope, we may need to go
13126 back to building a containing block's symbol lists. */
13127 *cu->get_builder ()->get_local_symbols () = cstk.locals;
13128 cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13130 /* If we've finished processing a top-level function, subsequent
13131 symbols go in the file symbol list. */
13132 if (cu->get_builder ()->outermost_context_p ())
13133 cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13136 /* Process all the DIES contained within a lexical block scope. Start
13137 a new scope, process the dies, and then close the scope. */
13140 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13142 struct objfile *objfile = cu->per_objfile->objfile;
13143 struct gdbarch *gdbarch = objfile->arch ();
13144 CORE_ADDR lowpc, highpc;
13145 struct die_info *child_die;
13146 CORE_ADDR baseaddr;
13148 baseaddr = objfile->text_section_offset ();
13150 /* Ignore blocks with missing or invalid low and high pc attributes. */
13151 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13152 as multiple lexical blocks? Handling children in a sane way would
13153 be nasty. Might be easier to properly extend generic blocks to
13154 describe ranges. */
13155 switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13157 case PC_BOUNDS_NOT_PRESENT:
13158 /* DW_TAG_lexical_block has no attributes, process its children as if
13159 there was no wrapping by that DW_TAG_lexical_block.
13160 GCC does no longer produces such DWARF since GCC r224161. */
13161 for (child_die = die->child;
13162 child_die != NULL && child_die->tag;
13163 child_die = child_die->sibling)
13165 /* We might already be processing this DIE. This can happen
13166 in an unusual circumstance -- where a subroutine A
13167 appears lexically in another subroutine B, but A actually
13168 inlines B. The recursion is broken here, rather than in
13169 inherit_abstract_dies, because it seems better to simply
13170 drop concrete children here. */
13171 if (!child_die->in_process)
13172 process_die (child_die, cu);
13175 case PC_BOUNDS_INVALID:
13178 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13179 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13181 cu->get_builder ()->push_context (0, lowpc);
13182 if (die->child != NULL)
13184 child_die = die->child;
13185 while (child_die && child_die->tag)
13187 process_die (child_die, cu);
13188 child_die = child_die->sibling;
13191 inherit_abstract_dies (die, cu);
13192 struct context_stack cstk = cu->get_builder ()->pop_context ();
13194 if (*cu->get_builder ()->get_local_symbols () != NULL
13195 || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13197 struct block *block
13198 = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13199 cstk.start_addr, highpc);
13201 /* Note that recording ranges after traversing children, as we
13202 do here, means that recording a parent's ranges entails
13203 walking across all its children's ranges as they appear in
13204 the address map, which is quadratic behavior.
13206 It would be nicer to record the parent's ranges before
13207 traversing its children, simply overriding whatever you find
13208 there. But since we don't even decide whether to create a
13209 block until after we've traversed its children, that's hard
13211 dwarf2_record_block_ranges (die, block, baseaddr, cu);
13213 *cu->get_builder ()->get_local_symbols () = cstk.locals;
13214 cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13217 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab. */
13220 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13222 dwarf2_per_objfile *per_objfile = cu->per_objfile;
13223 struct objfile *objfile = per_objfile->objfile;
13224 struct gdbarch *gdbarch = objfile->arch ();
13225 CORE_ADDR pc, baseaddr;
13226 struct attribute *attr;
13227 struct call_site *call_site, call_site_local;
13230 struct die_info *child_die;
13232 baseaddr = objfile->text_section_offset ();
13234 attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13237 /* This was a pre-DWARF-5 GNU extension alias
13238 for DW_AT_call_return_pc. */
13239 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13243 complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13244 "DIE %s [in module %s]"),
13245 sect_offset_str (die->sect_off), objfile_name (objfile));
13248 pc = attr->as_address () + baseaddr;
13249 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13251 if (cu->call_site_htab == NULL)
13252 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13253 NULL, &objfile->objfile_obstack,
13254 hashtab_obstack_allocate, NULL);
13255 call_site_local.pc = pc;
13256 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13259 complaint (_("Duplicate PC %s for DW_TAG_call_site "
13260 "DIE %s [in module %s]"),
13261 paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13262 objfile_name (objfile));
13266 /* Count parameters at the caller. */
13269 for (child_die = die->child; child_die && child_die->tag;
13270 child_die = child_die->sibling)
13272 if (child_die->tag != DW_TAG_call_site_parameter
13273 && child_die->tag != DW_TAG_GNU_call_site_parameter)
13275 complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13276 "DW_TAG_call_site child DIE %s [in module %s]"),
13277 child_die->tag, sect_offset_str (child_die->sect_off),
13278 objfile_name (objfile));
13286 = ((struct call_site *)
13287 obstack_alloc (&objfile->objfile_obstack,
13288 sizeof (*call_site)
13289 + (sizeof (*call_site->parameter) * (nparams - 1))));
13291 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13292 call_site->pc = pc;
13294 if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13295 || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
13297 struct die_info *func_die;
13299 /* Skip also over DW_TAG_inlined_subroutine. */
13300 for (func_die = die->parent;
13301 func_die && func_die->tag != DW_TAG_subprogram
13302 && func_die->tag != DW_TAG_subroutine_type;
13303 func_die = func_die->parent);
13305 /* DW_AT_call_all_calls is a superset
13306 of DW_AT_call_all_tail_calls. */
13308 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
13309 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
13310 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
13311 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
13313 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
13314 not complete. But keep CALL_SITE for look ups via call_site_htab,
13315 both the initial caller containing the real return address PC and
13316 the final callee containing the current PC of a chain of tail
13317 calls do not need to have the tail call list complete. But any
13318 function candidate for a virtual tail call frame searched via
13319 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
13320 determined unambiguously. */
13324 struct type *func_type = NULL;
13327 func_type = get_die_type (func_die, cu);
13328 if (func_type != NULL)
13330 gdb_assert (func_type->code () == TYPE_CODE_FUNC);
13332 /* Enlist this call site to the function. */
13333 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
13334 TYPE_TAIL_CALL_LIST (func_type) = call_site;
13337 complaint (_("Cannot find function owning DW_TAG_call_site "
13338 "DIE %s [in module %s]"),
13339 sect_offset_str (die->sect_off), objfile_name (objfile));
13343 attr = dwarf2_attr (die, DW_AT_call_target, cu);
13345 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
13347 attr = dwarf2_attr (die, DW_AT_call_origin, cu);
13350 /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin. */
13351 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13353 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
13354 if (!attr || (attr->form_is_block () && attr->as_block ()->size == 0))
13355 /* Keep NULL DWARF_BLOCK. */;
13356 else if (attr->form_is_block ())
13358 struct dwarf2_locexpr_baton *dlbaton;
13359 struct dwarf_block *block = attr->as_block ();
13361 dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
13362 dlbaton->data = block->data;
13363 dlbaton->size = block->size;
13364 dlbaton->per_objfile = per_objfile;
13365 dlbaton->per_cu = cu->per_cu;
13367 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
13369 else if (attr->form_is_ref ())
13371 struct dwarf2_cu *target_cu = cu;
13372 struct die_info *target_die;
13374 target_die = follow_die_ref (die, attr, &target_cu);
13375 gdb_assert (target_cu->per_objfile->objfile == objfile);
13376 if (die_is_declaration (target_die, target_cu))
13378 const char *target_physname;
13380 /* Prefer the mangled name; otherwise compute the demangled one. */
13381 target_physname = dw2_linkage_name (target_die, target_cu);
13382 if (target_physname == NULL)
13383 target_physname = dwarf2_physname (NULL, target_die, target_cu);
13384 if (target_physname == NULL)
13385 complaint (_("DW_AT_call_target target DIE has invalid "
13386 "physname, for referencing DIE %s [in module %s]"),
13387 sect_offset_str (die->sect_off), objfile_name (objfile));
13389 SET_FIELD_PHYSNAME (call_site->target, target_physname);
13395 /* DW_AT_entry_pc should be preferred. */
13396 if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
13397 <= PC_BOUNDS_INVALID)
13398 complaint (_("DW_AT_call_target target DIE has invalid "
13399 "low pc, for referencing DIE %s [in module %s]"),
13400 sect_offset_str (die->sect_off), objfile_name (objfile));
13403 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13404 SET_FIELD_PHYSADDR (call_site->target, lowpc);
13409 complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
13410 "block nor reference, for DIE %s [in module %s]"),
13411 sect_offset_str (die->sect_off), objfile_name (objfile));
13413 call_site->per_cu = cu->per_cu;
13414 call_site->per_objfile = per_objfile;
13416 for (child_die = die->child;
13417 child_die && child_die->tag;
13418 child_die = child_die->sibling)
13420 struct call_site_parameter *parameter;
13421 struct attribute *loc, *origin;
13423 if (child_die->tag != DW_TAG_call_site_parameter
13424 && child_die->tag != DW_TAG_GNU_call_site_parameter)
13426 /* Already printed the complaint above. */
13430 gdb_assert (call_site->parameter_count < nparams);
13431 parameter = &call_site->parameter[call_site->parameter_count];
13433 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
13434 specifies DW_TAG_formal_parameter. Value of the data assumed for the
13435 register is contained in DW_AT_call_value. */
13437 loc = dwarf2_attr (child_die, DW_AT_location, cu);
13438 origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
13439 if (origin == NULL)
13441 /* This was a pre-DWARF-5 GNU extension alias
13442 for DW_AT_call_parameter. */
13443 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
13445 if (loc == NULL && origin != NULL && origin->form_is_ref ())
13447 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
13449 sect_offset sect_off = origin->get_ref_die_offset ();
13450 if (!cu->header.offset_in_cu_p (sect_off))
13452 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
13453 binding can be done only inside one CU. Such referenced DIE
13454 therefore cannot be even moved to DW_TAG_partial_unit. */
13455 complaint (_("DW_AT_call_parameter offset is not in CU for "
13456 "DW_TAG_call_site child DIE %s [in module %s]"),
13457 sect_offset_str (child_die->sect_off),
13458 objfile_name (objfile));
13461 parameter->u.param_cu_off
13462 = (cu_offset) (sect_off - cu->header.sect_off);
13464 else if (loc == NULL || origin != NULL || !loc->form_is_block ())
13466 complaint (_("No DW_FORM_block* DW_AT_location for "
13467 "DW_TAG_call_site child DIE %s [in module %s]"),
13468 sect_offset_str (child_die->sect_off), objfile_name (objfile));
13473 struct dwarf_block *block = loc->as_block ();
13475 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
13476 (block->data, &block->data[block->size]);
13477 if (parameter->u.dwarf_reg != -1)
13478 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
13479 else if (dwarf_block_to_sp_offset (gdbarch, block->data,
13480 &block->data[block->size],
13481 ¶meter->u.fb_offset))
13482 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
13485 complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
13486 "for DW_FORM_block* DW_AT_location is supported for "
13487 "DW_TAG_call_site child DIE %s "
13489 sect_offset_str (child_die->sect_off),
13490 objfile_name (objfile));
13495 attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
13497 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
13498 if (attr == NULL || !attr->form_is_block ())
13500 complaint (_("No DW_FORM_block* DW_AT_call_value for "
13501 "DW_TAG_call_site child DIE %s [in module %s]"),
13502 sect_offset_str (child_die->sect_off),
13503 objfile_name (objfile));
13507 struct dwarf_block *block = attr->as_block ();
13508 parameter->value = block->data;
13509 parameter->value_size = block->size;
13511 /* Parameters are not pre-cleared by memset above. */
13512 parameter->data_value = NULL;
13513 parameter->data_value_size = 0;
13514 call_site->parameter_count++;
13516 attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
13518 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
13519 if (attr != nullptr)
13521 if (!attr->form_is_block ())
13522 complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
13523 "DW_TAG_call_site child DIE %s [in module %s]"),
13524 sect_offset_str (child_die->sect_off),
13525 objfile_name (objfile));
13528 block = attr->as_block ();
13529 parameter->data_value = block->data;
13530 parameter->data_value_size = block->size;
13536 /* Helper function for read_variable. If DIE represents a virtual
13537 table, then return the type of the concrete object that is
13538 associated with the virtual table. Otherwise, return NULL. */
13540 static struct type *
13541 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
13543 struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
13547 /* Find the type DIE. */
13548 struct die_info *type_die = NULL;
13549 struct dwarf2_cu *type_cu = cu;
13551 if (attr->form_is_ref ())
13552 type_die = follow_die_ref (die, attr, &type_cu);
13553 if (type_die == NULL)
13556 if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
13558 return die_containing_type (type_die, type_cu);
13561 /* Read a variable (DW_TAG_variable) DIE and create a new symbol. */
13564 read_variable (struct die_info *die, struct dwarf2_cu *cu)
13566 struct rust_vtable_symbol *storage = NULL;
13568 if (cu->per_cu->lang == language_rust)
13570 struct type *containing_type = rust_containing_type (die, cu);
13572 if (containing_type != NULL)
13574 struct objfile *objfile = cu->per_objfile->objfile;
13576 storage = new (&objfile->objfile_obstack) rust_vtable_symbol;
13577 storage->concrete_type = containing_type;
13578 storage->subclass = SYMBOL_RUST_VTABLE;
13582 struct symbol *res = new_symbol (die, NULL, cu, storage);
13583 struct attribute *abstract_origin
13584 = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13585 struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
13586 if (res == NULL && loc && abstract_origin)
13588 /* We have a variable without a name, but with a location and an abstract
13589 origin. This may be a concrete instance of an abstract variable
13590 referenced from an DW_OP_GNU_variable_value, so save it to find it back
13592 struct dwarf2_cu *origin_cu = cu;
13593 struct die_info *origin_die
13594 = follow_die_ref (die, abstract_origin, &origin_cu);
13595 dwarf2_per_objfile *per_objfile = cu->per_objfile;
13596 per_objfile->per_bfd->abstract_to_concrete
13597 [origin_die->sect_off].push_back (die->sect_off);
13601 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
13602 reading .debug_rnglists.
13603 Callback's type should be:
13604 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
13605 Return true if the attributes are present and valid, otherwise,
13608 template <typename Callback>
13610 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
13611 dwarf_tag tag, Callback &&callback)
13613 dwarf2_per_objfile *per_objfile = cu->per_objfile;
13614 struct objfile *objfile = per_objfile->objfile;
13615 bfd *obfd = objfile->obfd;
13616 /* Base address selection entry. */
13617 gdb::optional<CORE_ADDR> base;
13618 const gdb_byte *buffer;
13619 CORE_ADDR baseaddr;
13620 bool overflow = false;
13621 ULONGEST addr_index;
13622 struct dwarf2_section_info *rnglists_section;
13624 base = cu->base_address;
13625 rnglists_section = cu_debug_rnglists_section (cu, tag);
13626 rnglists_section->read (objfile);
13628 if (offset >= rnglists_section->size)
13630 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
13634 buffer = rnglists_section->buffer + offset;
13636 baseaddr = objfile->text_section_offset ();
13640 /* Initialize it due to a false compiler warning. */
13641 CORE_ADDR range_beginning = 0, range_end = 0;
13642 const gdb_byte *buf_end = (rnglists_section->buffer
13643 + rnglists_section->size);
13644 unsigned int bytes_read;
13646 if (buffer == buf_end)
13651 const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
13654 case DW_RLE_end_of_list:
13656 case DW_RLE_base_address:
13657 if (buffer + cu->header.addr_size > buf_end)
13662 base = cu->header.read_address (obfd, buffer, &bytes_read);
13663 buffer += bytes_read;
13665 case DW_RLE_base_addressx:
13666 addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
13667 buffer += bytes_read;
13668 base = read_addr_index (cu, addr_index);
13670 case DW_RLE_start_length:
13671 if (buffer + cu->header.addr_size > buf_end)
13676 range_beginning = cu->header.read_address (obfd, buffer,
13678 buffer += bytes_read;
13679 range_end = (range_beginning
13680 + read_unsigned_leb128 (obfd, buffer, &bytes_read));
13681 buffer += bytes_read;
13682 if (buffer > buf_end)
13688 case DW_RLE_startx_length:
13689 addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
13690 buffer += bytes_read;
13691 range_beginning = read_addr_index (cu, addr_index);
13692 if (buffer > buf_end)
13697 range_end = (range_beginning
13698 + read_unsigned_leb128 (obfd, buffer, &bytes_read));
13699 buffer += bytes_read;
13701 case DW_RLE_offset_pair:
13702 range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
13703 buffer += bytes_read;
13704 if (buffer > buf_end)
13709 range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
13710 buffer += bytes_read;
13711 if (buffer > buf_end)
13717 case DW_RLE_start_end:
13718 if (buffer + 2 * cu->header.addr_size > buf_end)
13723 range_beginning = cu->header.read_address (obfd, buffer,
13725 buffer += bytes_read;
13726 range_end = cu->header.read_address (obfd, buffer, &bytes_read);
13727 buffer += bytes_read;
13729 case DW_RLE_startx_endx:
13730 addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
13731 buffer += bytes_read;
13732 range_beginning = read_addr_index (cu, addr_index);
13733 if (buffer > buf_end)
13738 addr_index = read_unsigned_leb128 (obfd, buffer, &bytes_read);
13739 buffer += bytes_read;
13740 range_end = read_addr_index (cu, addr_index);
13743 complaint (_("Invalid .debug_rnglists data (no base address)"));
13746 if (rlet == DW_RLE_end_of_list || overflow)
13748 if (rlet == DW_RLE_base_address)
13751 if (range_beginning > range_end)
13753 /* Inverted range entries are invalid. */
13754 complaint (_("Invalid .debug_rnglists data (inverted range)"));
13758 /* Empty range entries have no effect. */
13759 if (range_beginning == range_end)
13762 /* Only DW_RLE_offset_pair needs the base address added. */
13763 if (rlet == DW_RLE_offset_pair)
13765 if (!base.has_value ())
13767 /* We have no valid base address for the DW_RLE_offset_pair. */
13768 complaint (_("Invalid .debug_rnglists data (no base address for "
13769 "DW_RLE_offset_pair)"));
13773 range_beginning += *base;
13774 range_end += *base;
13777 /* A not-uncommon case of bad debug info.
13778 Don't pollute the addrmap with bad data. */
13779 if (range_beginning + baseaddr == 0
13780 && !per_objfile->per_bfd->has_section_at_zero)
13782 complaint (_(".debug_rnglists entry has start address of zero"
13783 " [in module %s]"), objfile_name (objfile));
13787 callback (range_beginning, range_end);
13792 complaint (_("Offset %d is not terminated "
13793 "for DW_AT_ranges attribute"),
13801 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
13802 Callback's type should be:
13803 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
13804 Return 1 if the attributes are present and valid, otherwise, return 0. */
13806 template <typename Callback>
13808 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu, dwarf_tag tag,
13809 Callback &&callback)
13811 dwarf2_per_objfile *per_objfile = cu->per_objfile;
13812 struct objfile *objfile = per_objfile->objfile;
13813 struct comp_unit_head *cu_header = &cu->header;
13814 bfd *obfd = objfile->obfd;
13815 unsigned int addr_size = cu_header->addr_size;
13816 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
13817 /* Base address selection entry. */
13818 gdb::optional<CORE_ADDR> base;
13819 unsigned int dummy;
13820 const gdb_byte *buffer;
13821 CORE_ADDR baseaddr;
13823 if (cu_header->version >= 5)
13824 return dwarf2_rnglists_process (offset, cu, tag, callback);
13826 base = cu->base_address;
13828 per_objfile->per_bfd->ranges.read (objfile);
13829 if (offset >= per_objfile->per_bfd->ranges.size)
13831 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
13835 buffer = per_objfile->per_bfd->ranges.buffer + offset;
13837 baseaddr = objfile->text_section_offset ();
13841 CORE_ADDR range_beginning, range_end;
13843 range_beginning = cu->header.read_address (obfd, buffer, &dummy);
13844 buffer += addr_size;
13845 range_end = cu->header.read_address (obfd, buffer, &dummy);
13846 buffer += addr_size;
13847 offset += 2 * addr_size;
13849 /* An end of list marker is a pair of zero addresses. */
13850 if (range_beginning == 0 && range_end == 0)
13851 /* Found the end of list entry. */
13854 /* Each base address selection entry is a pair of 2 values.
13855 The first is the largest possible address, the second is
13856 the base address. Check for a base address here. */
13857 if ((range_beginning & mask) == mask)
13859 /* If we found the largest possible address, then we already
13860 have the base address in range_end. */
13865 if (!base.has_value ())
13867 /* We have no valid base address for the ranges
13869 complaint (_("Invalid .debug_ranges data (no base address)"));
13873 if (range_beginning > range_end)
13875 /* Inverted range entries are invalid. */
13876 complaint (_("Invalid .debug_ranges data (inverted range)"));
13880 /* Empty range entries have no effect. */
13881 if (range_beginning == range_end)
13884 range_beginning += *base;
13885 range_end += *base;
13887 /* A not-uncommon case of bad debug info.
13888 Don't pollute the addrmap with bad data. */
13889 if (range_beginning + baseaddr == 0
13890 && !per_objfile->per_bfd->has_section_at_zero)
13892 complaint (_(".debug_ranges entry has start address of zero"
13893 " [in module %s]"), objfile_name (objfile));
13897 callback (range_beginning, range_end);
13903 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
13904 Return 1 if the attributes are present and valid, otherwise, return 0.
13905 If RANGES_PST is not NULL we should set up the `psymtabs_addrmap'. */
13908 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
13909 CORE_ADDR *high_return, struct dwarf2_cu *cu,
13910 dwarf2_psymtab *ranges_pst, dwarf_tag tag)
13912 struct objfile *objfile = cu->per_objfile->objfile;
13913 dwarf2_per_bfd *per_bfd = cu->per_objfile->per_bfd;
13914 struct gdbarch *gdbarch = objfile->arch ();
13915 const CORE_ADDR baseaddr = objfile->text_section_offset ();
13918 CORE_ADDR high = 0;
13921 retval = dwarf2_ranges_process (offset, cu, tag,
13922 [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
13924 if (ranges_pst != NULL)
13929 lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
13930 range_beginning + baseaddr)
13932 highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
13933 range_end + baseaddr)
13935 addrmap_set_empty (per_bfd->partial_symtabs->psymtabs_addrmap,
13936 lowpc, highpc - 1, ranges_pst);
13939 /* FIXME: This is recording everything as a low-high
13940 segment of consecutive addresses. We should have a
13941 data structure for discontiguous block ranges
13945 low = range_beginning;
13951 if (range_beginning < low)
13952 low = range_beginning;
13953 if (range_end > high)
13961 /* If the first entry is an end-of-list marker, the range
13962 describes an empty scope, i.e. no instructions. */
13968 *high_return = high;
13972 /* Get low and high pc attributes from a die. See enum pc_bounds_kind
13973 definition for the return value. *LOWPC and *HIGHPC are set iff
13974 neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned. */
13976 static enum pc_bounds_kind
13977 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
13978 CORE_ADDR *highpc, struct dwarf2_cu *cu,
13979 dwarf2_psymtab *pst)
13981 dwarf2_per_objfile *per_objfile = cu->per_objfile;
13982 struct attribute *attr;
13983 struct attribute *attr_high;
13985 CORE_ADDR high = 0;
13986 enum pc_bounds_kind ret;
13988 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
13991 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13992 if (attr != nullptr)
13994 low = attr->as_address ();
13995 high = attr_high->as_address ();
13996 if (cu->header.version >= 4 && attr_high->form_is_constant ())
14000 /* Found high w/o low attribute. */
14001 return PC_BOUNDS_INVALID;
14003 /* Found consecutive range of addresses. */
14004 ret = PC_BOUNDS_HIGH_LOW;
14008 attr = dwarf2_attr (die, DW_AT_ranges, cu);
14009 if (attr != nullptr && attr->form_is_unsigned ())
14011 /* Offset in the .debug_ranges or .debug_rnglist section (depending
14012 on DWARF version). */
14013 ULONGEST ranges_offset = attr->as_unsigned ();
14015 /* See dwarf2_cu::gnu_ranges_base's doc for why we might want to add
14017 if (die->tag != DW_TAG_compile_unit)
14018 ranges_offset += cu->gnu_ranges_base;
14020 /* Value of the DW_AT_ranges attribute is the offset in the
14021 .debug_ranges section. */
14022 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst,
14024 return PC_BOUNDS_INVALID;
14025 /* Found discontinuous range of addresses. */
14026 ret = PC_BOUNDS_RANGES;
14029 return PC_BOUNDS_NOT_PRESENT;
14032 /* partial_die_info::read has also the strict LOW < HIGH requirement. */
14034 return PC_BOUNDS_INVALID;
14036 /* When using the GNU linker, .gnu.linkonce. sections are used to
14037 eliminate duplicate copies of functions and vtables and such.
14038 The linker will arbitrarily choose one and discard the others.
14039 The AT_*_pc values for such functions refer to local labels in
14040 these sections. If the section from that file was discarded, the
14041 labels are not in the output, so the relocs get a value of 0.
14042 If this is a discarded function, mark the pc bounds as invalid,
14043 so that GDB will ignore it. */
14044 if (low == 0 && !per_objfile->per_bfd->has_section_at_zero)
14045 return PC_BOUNDS_INVALID;
14053 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14054 its low and high PC addresses. Do nothing if these addresses could not
14055 be determined. Otherwise, set LOWPC to the low address if it is smaller,
14056 and HIGHPC to the high address if greater than HIGHPC. */
14059 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14060 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14061 struct dwarf2_cu *cu)
14063 CORE_ADDR low, high;
14064 struct die_info *child = die->child;
14066 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14068 *lowpc = std::min (*lowpc, low);
14069 *highpc = std::max (*highpc, high);
14072 /* If the language does not allow nested subprograms (either inside
14073 subprograms or lexical blocks), we're done. */
14074 if (cu->per_cu->lang != language_ada)
14077 /* Check all the children of the given DIE. If it contains nested
14078 subprograms, then check their pc bounds. Likewise, we need to
14079 check lexical blocks as well, as they may also contain subprogram
14081 while (child && child->tag)
14083 if (child->tag == DW_TAG_subprogram
14084 || child->tag == DW_TAG_lexical_block)
14085 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14086 child = child->sibling;
14090 /* Get the low and high pc's represented by the scope DIE, and store
14091 them in *LOWPC and *HIGHPC. If the correct values can't be
14092 determined, set *LOWPC to -1 and *HIGHPC to 0. */
14095 get_scope_pc_bounds (struct die_info *die,
14096 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14097 struct dwarf2_cu *cu)
14099 CORE_ADDR best_low = (CORE_ADDR) -1;
14100 CORE_ADDR best_high = (CORE_ADDR) 0;
14101 CORE_ADDR current_low, current_high;
14103 if (dwarf2_get_pc_bounds (die, ¤t_low, ¤t_high, cu, NULL)
14104 >= PC_BOUNDS_RANGES)
14106 best_low = current_low;
14107 best_high = current_high;
14111 struct die_info *child = die->child;
14113 while (child && child->tag)
14115 switch (child->tag) {
14116 case DW_TAG_subprogram:
14117 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14119 case DW_TAG_namespace:
14120 case DW_TAG_module:
14121 /* FIXME: carlton/2004-01-16: Should we do this for
14122 DW_TAG_class_type/DW_TAG_structure_type, too? I think
14123 that current GCC's always emit the DIEs corresponding
14124 to definitions of methods of classes as children of a
14125 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14126 the DIEs giving the declarations, which could be
14127 anywhere). But I don't see any reason why the
14128 standards says that they have to be there. */
14129 get_scope_pc_bounds (child, ¤t_low, ¤t_high, cu);
14131 if (current_low != ((CORE_ADDR) -1))
14133 best_low = std::min (best_low, current_low);
14134 best_high = std::max (best_high, current_high);
14142 child = child->sibling;
14147 *highpc = best_high;
14150 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14154 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14155 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14157 struct objfile *objfile = cu->per_objfile->objfile;
14158 struct gdbarch *gdbarch = objfile->arch ();
14159 struct attribute *attr;
14160 struct attribute *attr_high;
14162 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14165 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14166 if (attr != nullptr)
14168 CORE_ADDR low = attr->as_address ();
14169 CORE_ADDR high = attr_high->as_address ();
14171 if (cu->header.version >= 4 && attr_high->form_is_constant ())
14174 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14175 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14176 cu->get_builder ()->record_block_range (block, low, high - 1);
14180 attr = dwarf2_attr (die, DW_AT_ranges, cu);
14181 if (attr != nullptr && attr->form_is_unsigned ())
14183 /* Offset in the .debug_ranges or .debug_rnglist section (depending
14184 on DWARF version). */
14185 ULONGEST ranges_offset = attr->as_unsigned ();
14187 /* See dwarf2_cu::gnu_ranges_base's doc for why we might want to add
14189 if (die->tag != DW_TAG_compile_unit)
14190 ranges_offset += cu->gnu_ranges_base;
14192 std::vector<blockrange> blockvec;
14193 dwarf2_ranges_process (ranges_offset, cu, die->tag,
14194 [&] (CORE_ADDR start, CORE_ADDR end)
14198 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14199 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14200 cu->get_builder ()->record_block_range (block, start, end - 1);
14201 blockvec.emplace_back (start, end);
14204 BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14208 /* Check whether the producer field indicates either of GCC < 4.6, or the
14209 Intel C/C++ compiler, and cache the result in CU. */
14212 check_producer (struct dwarf2_cu *cu)
14216 if (cu->producer == NULL)
14218 /* For unknown compilers expect their behavior is DWARF version
14221 GCC started to support .debug_types sections by -gdwarf-4 since
14222 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
14223 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14224 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14225 interpreted incorrectly by GDB now - GCC PR debug/48229. */
14227 else if (producer_is_gcc (cu->producer, &major, &minor))
14229 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14230 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14232 else if (producer_is_icc (cu->producer, &major, &minor))
14234 cu->producer_is_icc = true;
14235 cu->producer_is_icc_lt_14 = major < 14;
14237 else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14238 cu->producer_is_codewarrior = true;
14241 /* For other non-GCC compilers, expect their behavior is DWARF version
14245 cu->checked_producer = true;
14248 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14249 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14250 during 4.6.0 experimental. */
14253 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14255 if (!cu->checked_producer)
14256 check_producer (cu);
14258 return cu->producer_is_gxx_lt_4_6;
14262 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14263 with incorrect is_stmt attributes. */
14266 producer_is_codewarrior (struct dwarf2_cu *cu)
14268 if (!cu->checked_producer)
14269 check_producer (cu);
14271 return cu->producer_is_codewarrior;
14274 /* Return the accessibility of DIE, as given by DW_AT_accessibility.
14275 If that attribute is not available, return the appropriate
14278 static enum dwarf_access_attribute
14279 dwarf2_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14281 attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
14282 if (attr != nullptr)
14284 LONGEST value = attr->constant_value (-1);
14285 if (value == DW_ACCESS_public
14286 || value == DW_ACCESS_protected
14287 || value == DW_ACCESS_private)
14288 return (dwarf_access_attribute) value;
14289 complaint (_("Unhandled DW_AT_accessibility value (%s)"),
14293 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14295 /* The default DWARF 2 accessibility for members is public, the default
14296 accessibility for inheritance is private. */
14298 if (die->tag != DW_TAG_inheritance)
14299 return DW_ACCESS_public;
14301 return DW_ACCESS_private;
14305 /* DWARF 3+ defines the default accessibility a different way. The same
14306 rules apply now for DW_TAG_inheritance as for the members and it only
14307 depends on the container kind. */
14309 if (die->parent->tag == DW_TAG_class_type)
14310 return DW_ACCESS_private;
14312 return DW_ACCESS_public;
14316 /* Look for DW_AT_data_member_location. Set *OFFSET to the byte
14317 offset. If the attribute was not found return 0, otherwise return
14318 1. If it was found but could not properly be handled, set *OFFSET
14322 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14325 struct attribute *attr;
14327 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14332 /* Note that we do not check for a section offset first here.
14333 This is because DW_AT_data_member_location is new in DWARF 4,
14334 so if we see it, we can assume that a constant form is really
14335 a constant and not a section offset. */
14336 if (attr->form_is_constant ())
14337 *offset = attr->constant_value (0);
14338 else if (attr->form_is_section_offset ())
14339 dwarf2_complex_location_expr_complaint ();
14340 else if (attr->form_is_block ())
14341 *offset = decode_locdesc (attr->as_block (), cu);
14343 dwarf2_complex_location_expr_complaint ();
14351 /* Look for DW_AT_data_member_location and store the results in FIELD. */
14354 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14355 struct field *field)
14357 struct attribute *attr;
14359 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14362 if (attr->form_is_constant ())
14364 LONGEST offset = attr->constant_value (0);
14365 SET_FIELD_BITPOS (*field, offset * bits_per_byte);
14367 else if (attr->form_is_section_offset ())
14368 dwarf2_complex_location_expr_complaint ();
14369 else if (attr->form_is_block ())
14372 CORE_ADDR offset = decode_locdesc (attr->as_block (), cu, &handled);
14374 SET_FIELD_BITPOS (*field, offset * bits_per_byte);
14377 dwarf2_per_objfile *per_objfile = cu->per_objfile;
14378 struct objfile *objfile = per_objfile->objfile;
14379 struct dwarf2_locexpr_baton *dlbaton
14380 = XOBNEW (&objfile->objfile_obstack,
14381 struct dwarf2_locexpr_baton);
14382 dlbaton->data = attr->as_block ()->data;
14383 dlbaton->size = attr->as_block ()->size;
14384 /* When using this baton, we want to compute the address
14385 of the field, not the value. This is why
14386 is_reference is set to false here. */
14387 dlbaton->is_reference = false;
14388 dlbaton->per_objfile = per_objfile;
14389 dlbaton->per_cu = cu->per_cu;
14391 SET_FIELD_DWARF_BLOCK (*field, dlbaton);
14395 dwarf2_complex_location_expr_complaint ();
14399 /* Add an aggregate field to the field list. */
14402 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14403 struct dwarf2_cu *cu)
14405 struct objfile *objfile = cu->per_objfile->objfile;
14406 struct gdbarch *gdbarch = objfile->arch ();
14407 struct nextfield *new_field;
14408 struct attribute *attr;
14410 const char *fieldname = "";
14412 if (die->tag == DW_TAG_inheritance)
14414 fip->baseclasses.emplace_back ();
14415 new_field = &fip->baseclasses.back ();
14419 fip->fields.emplace_back ();
14420 new_field = &fip->fields.back ();
14423 new_field->offset = die->sect_off;
14425 new_field->accessibility = dwarf2_access_attribute (die, cu);
14426 if (new_field->accessibility != DW_ACCESS_public)
14427 fip->non_public_fields = true;
14429 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
14430 if (attr != nullptr)
14431 new_field->virtuality = attr->as_virtuality ();
14433 new_field->virtuality = DW_VIRTUALITY_none;
14435 fp = &new_field->field;
14437 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
14439 /* Data member other than a C++ static data member. */
14441 /* Get type of field. */
14442 fp->set_type (die_type (die, cu));
14444 SET_FIELD_BITPOS (*fp, 0);
14446 /* Get bit size of field (zero if none). */
14447 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
14448 if (attr != nullptr)
14450 FIELD_BITSIZE (*fp) = attr->constant_value (0);
14454 FIELD_BITSIZE (*fp) = 0;
14457 /* Get bit offset of field. */
14458 handle_data_member_location (die, cu, fp);
14459 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
14460 if (attr != nullptr && attr->form_is_constant ())
14462 if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
14464 /* For big endian bits, the DW_AT_bit_offset gives the
14465 additional bit offset from the MSB of the containing
14466 anonymous object to the MSB of the field. We don't
14467 have to do anything special since we don't need to
14468 know the size of the anonymous object. */
14469 SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
14470 + attr->constant_value (0)));
14474 /* For little endian bits, compute the bit offset to the
14475 MSB of the anonymous object, subtract off the number of
14476 bits from the MSB of the field to the MSB of the
14477 object, and then subtract off the number of bits of
14478 the field itself. The result is the bit offset of
14479 the LSB of the field. */
14480 int anonymous_size;
14481 int bit_offset = attr->constant_value (0);
14483 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
14484 if (attr != nullptr && attr->form_is_constant ())
14486 /* The size of the anonymous object containing
14487 the bit field is explicit, so use the
14488 indicated size (in bytes). */
14489 anonymous_size = attr->constant_value (0);
14493 /* The size of the anonymous object containing
14494 the bit field must be inferred from the type
14495 attribute of the data member containing the
14497 anonymous_size = TYPE_LENGTH (fp->type ());
14499 SET_FIELD_BITPOS (*fp,
14500 (FIELD_BITPOS (*fp)
14501 + anonymous_size * bits_per_byte
14502 - bit_offset - FIELD_BITSIZE (*fp)));
14505 attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
14507 SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
14508 + attr->constant_value (0)));
14510 /* Get name of field. */
14511 fieldname = dwarf2_name (die, cu);
14512 if (fieldname == NULL)
14515 /* The name is already allocated along with this objfile, so we don't
14516 need to duplicate it for the type. */
14517 fp->name = fieldname;
14519 /* Change accessibility for artificial fields (e.g. virtual table
14520 pointer or virtual base class pointer) to private. */
14521 if (dwarf2_attr (die, DW_AT_artificial, cu))
14523 FIELD_ARTIFICIAL (*fp) = 1;
14524 new_field->accessibility = DW_ACCESS_private;
14525 fip->non_public_fields = true;
14528 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
14530 /* C++ static member. */
14532 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
14533 is a declaration, but all versions of G++ as of this writing
14534 (so through at least 3.2.1) incorrectly generate
14535 DW_TAG_variable tags. */
14537 const char *physname;
14539 /* Get name of field. */
14540 fieldname = dwarf2_name (die, cu);
14541 if (fieldname == NULL)
14544 attr = dwarf2_attr (die, DW_AT_const_value, cu);
14546 /* Only create a symbol if this is an external value.
14547 new_symbol checks this and puts the value in the global symbol
14548 table, which we want. If it is not external, new_symbol
14549 will try to put the value in cu->list_in_scope which is wrong. */
14550 && dwarf2_flag_true_p (die, DW_AT_external, cu))
14552 /* A static const member, not much different than an enum as far as
14553 we're concerned, except that we can support more types. */
14554 new_symbol (die, NULL, cu);
14557 /* Get physical name. */
14558 physname = dwarf2_physname (fieldname, die, cu);
14560 /* The name is already allocated along with this objfile, so we don't
14561 need to duplicate it for the type. */
14562 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
14563 fp->set_type (die_type (die, cu));
14564 FIELD_NAME (*fp) = fieldname;
14566 else if (die->tag == DW_TAG_inheritance)
14568 /* C++ base class field. */
14569 handle_data_member_location (die, cu, fp);
14570 FIELD_BITSIZE (*fp) = 0;
14571 fp->set_type (die_type (die, cu));
14572 FIELD_NAME (*fp) = fp->type ()->name ();
14575 gdb_assert_not_reached ("missing case in dwarf2_add_field");
14578 /* Can the type given by DIE define another type? */
14581 type_can_define_types (const struct die_info *die)
14585 case DW_TAG_typedef:
14586 case DW_TAG_class_type:
14587 case DW_TAG_structure_type:
14588 case DW_TAG_union_type:
14589 case DW_TAG_enumeration_type:
14597 /* Add a type definition defined in the scope of the FIP's class. */
14600 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
14601 struct dwarf2_cu *cu)
14603 struct decl_field fp;
14604 memset (&fp, 0, sizeof (fp));
14606 gdb_assert (type_can_define_types (die));
14608 /* Get name of field. NULL is okay here, meaning an anonymous type. */
14609 fp.name = dwarf2_name (die, cu);
14610 fp.type = read_type_die (die, cu);
14612 /* Save accessibility. */
14613 dwarf_access_attribute accessibility = dwarf2_access_attribute (die, cu);
14614 switch (accessibility)
14616 case DW_ACCESS_public:
14617 /* The assumed value if neither private nor protected. */
14619 case DW_ACCESS_private:
14622 case DW_ACCESS_protected:
14623 fp.is_protected = 1;
14627 if (die->tag == DW_TAG_typedef)
14628 fip->typedef_field_list.push_back (fp);
14630 fip->nested_types_list.push_back (fp);
14633 /* A convenience typedef that's used when finding the discriminant
14634 field for a variant part. */
14635 typedef std::unordered_map<sect_offset, int, gdb::hash_enum<sect_offset>>
14638 /* Compute the discriminant range for a given variant. OBSTACK is
14639 where the results will be stored. VARIANT is the variant to
14640 process. IS_UNSIGNED indicates whether the discriminant is signed
14643 static const gdb::array_view<discriminant_range>
14644 convert_variant_range (struct obstack *obstack, const variant_field &variant,
14647 std::vector<discriminant_range> ranges;
14649 if (variant.default_branch)
14652 if (variant.discr_list_data == nullptr)
14654 discriminant_range r
14655 = {variant.discriminant_value, variant.discriminant_value};
14656 ranges.push_back (r);
14660 gdb::array_view<const gdb_byte> data (variant.discr_list_data->data,
14661 variant.discr_list_data->size);
14662 while (!data.empty ())
14664 if (data[0] != DW_DSC_range && data[0] != DW_DSC_label)
14666 complaint (_("invalid discriminant marker: %d"), data[0]);
14669 bool is_range = data[0] == DW_DSC_range;
14670 data = data.slice (1);
14672 ULONGEST low, high;
14673 unsigned int bytes_read;
14677 complaint (_("DW_AT_discr_list missing low value"));
14681 low = read_unsigned_leb128 (nullptr, data.data (), &bytes_read);
14683 low = (ULONGEST) read_signed_leb128 (nullptr, data.data (),
14685 data = data.slice (bytes_read);
14691 complaint (_("DW_AT_discr_list missing high value"));
14695 high = read_unsigned_leb128 (nullptr, data.data (),
14698 high = (LONGEST) read_signed_leb128 (nullptr, data.data (),
14700 data = data.slice (bytes_read);
14705 ranges.push_back ({ low, high });
14709 discriminant_range *result = XOBNEWVEC (obstack, discriminant_range,
14711 std::copy (ranges.begin (), ranges.end (), result);
14712 return gdb::array_view<discriminant_range> (result, ranges.size ());
14715 static const gdb::array_view<variant_part> create_variant_parts
14716 (struct obstack *obstack,
14717 const offset_map_type &offset_map,
14718 struct field_info *fi,
14719 const std::vector<variant_part_builder> &variant_parts);
14721 /* Fill in a "struct variant" for a given variant field. RESULT is
14722 the variant to fill in. OBSTACK is where any needed allocations
14723 will be done. OFFSET_MAP holds the mapping from section offsets to
14724 fields for the type. FI describes the fields of the type we're
14725 processing. FIELD is the variant field we're converting. */
14728 create_one_variant (variant &result, struct obstack *obstack,
14729 const offset_map_type &offset_map,
14730 struct field_info *fi, const variant_field &field)
14732 result.discriminants = convert_variant_range (obstack, field, false);
14733 result.first_field = field.first_field + fi->baseclasses.size ();
14734 result.last_field = field.last_field + fi->baseclasses.size ();
14735 result.parts = create_variant_parts (obstack, offset_map, fi,
14736 field.variant_parts);
14739 /* Fill in a "struct variant_part" for a given variant part. RESULT
14740 is the variant part to fill in. OBSTACK is where any needed
14741 allocations will be done. OFFSET_MAP holds the mapping from
14742 section offsets to fields for the type. FI describes the fields of
14743 the type we're processing. BUILDER is the variant part to be
14747 create_one_variant_part (variant_part &result,
14748 struct obstack *obstack,
14749 const offset_map_type &offset_map,
14750 struct field_info *fi,
14751 const variant_part_builder &builder)
14753 auto iter = offset_map.find (builder.discriminant_offset);
14754 if (iter == offset_map.end ())
14756 result.discriminant_index = -1;
14757 /* Doesn't matter. */
14758 result.is_unsigned = false;
14762 result.discriminant_index = iter->second;
14764 = fi->fields[result.discriminant_index].field.type ()->is_unsigned ();
14767 size_t n = builder.variants.size ();
14768 variant *output = new (obstack) variant[n];
14769 for (size_t i = 0; i < n; ++i)
14770 create_one_variant (output[i], obstack, offset_map, fi,
14771 builder.variants[i]);
14773 result.variants = gdb::array_view<variant> (output, n);
14776 /* Create a vector of variant parts that can be attached to a type.
14777 OBSTACK is where any needed allocations will be done. OFFSET_MAP
14778 holds the mapping from section offsets to fields for the type. FI
14779 describes the fields of the type we're processing. VARIANT_PARTS
14780 is the vector to convert. */
14782 static const gdb::array_view<variant_part>
14783 create_variant_parts (struct obstack *obstack,
14784 const offset_map_type &offset_map,
14785 struct field_info *fi,
14786 const std::vector<variant_part_builder> &variant_parts)
14788 if (variant_parts.empty ())
14791 size_t n = variant_parts.size ();
14792 variant_part *result = new (obstack) variant_part[n];
14793 for (size_t i = 0; i < n; ++i)
14794 create_one_variant_part (result[i], obstack, offset_map, fi,
14797 return gdb::array_view<variant_part> (result, n);
14800 /* Compute the variant part vector for FIP, attaching it to TYPE when
14804 add_variant_property (struct field_info *fip, struct type *type,
14805 struct dwarf2_cu *cu)
14807 /* Map section offsets of fields to their field index. Note the
14808 field index here does not take the number of baseclasses into
14810 offset_map_type offset_map;
14811 for (int i = 0; i < fip->fields.size (); ++i)
14812 offset_map[fip->fields[i].offset] = i;
14814 struct objfile *objfile = cu->per_objfile->objfile;
14815 gdb::array_view<variant_part> parts
14816 = create_variant_parts (&objfile->objfile_obstack, offset_map, fip,
14817 fip->variant_parts);
14819 struct dynamic_prop prop;
14820 prop.set_variant_parts ((gdb::array_view<variant_part> *)
14821 obstack_copy (&objfile->objfile_obstack, &parts,
14824 type->add_dyn_prop (DYN_PROP_VARIANT_PARTS, prop);
14827 /* Create the vector of fields, and attach it to the type. */
14830 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
14831 struct dwarf2_cu *cu)
14833 int nfields = fip->nfields ();
14835 /* Record the field count, allocate space for the array of fields,
14836 and create blank accessibility bitfields if necessary. */
14837 type->set_num_fields (nfields);
14839 ((struct field *) TYPE_ZALLOC (type, sizeof (struct field) * nfields));
14841 if (fip->non_public_fields && cu->per_cu->lang != language_ada)
14843 ALLOCATE_CPLUS_STRUCT_TYPE (type);
14845 TYPE_FIELD_PRIVATE_BITS (type) =
14846 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
14847 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
14849 TYPE_FIELD_PROTECTED_BITS (type) =
14850 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
14851 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
14853 TYPE_FIELD_IGNORE_BITS (type) =
14854 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
14855 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
14858 /* If the type has baseclasses, allocate and clear a bit vector for
14859 TYPE_FIELD_VIRTUAL_BITS. */
14860 if (!fip->baseclasses.empty () && cu->per_cu->lang != language_ada)
14862 int num_bytes = B_BYTES (fip->baseclasses.size ());
14863 unsigned char *pointer;
14865 ALLOCATE_CPLUS_STRUCT_TYPE (type);
14866 pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
14867 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
14868 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
14869 TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
14872 if (!fip->variant_parts.empty ())
14873 add_variant_property (fip, type, cu);
14875 /* Copy the saved-up fields into the field vector. */
14876 for (int i = 0; i < nfields; ++i)
14878 struct nextfield &field
14879 = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
14880 : fip->fields[i - fip->baseclasses.size ()]);
14882 type->field (i) = field.field;
14883 switch (field.accessibility)
14885 case DW_ACCESS_private:
14886 if (cu->per_cu->lang != language_ada)
14887 SET_TYPE_FIELD_PRIVATE (type, i);
14890 case DW_ACCESS_protected:
14891 if (cu->per_cu->lang != language_ada)
14892 SET_TYPE_FIELD_PROTECTED (type, i);
14895 case DW_ACCESS_public:
14899 /* Unknown accessibility. Complain and treat it as public. */
14901 complaint (_("unsupported accessibility %d"),
14902 field.accessibility);
14906 if (i < fip->baseclasses.size ())
14908 switch (field.virtuality)
14910 case DW_VIRTUALITY_virtual:
14911 case DW_VIRTUALITY_pure_virtual:
14912 if (cu->per_cu->lang == language_ada)
14913 error (_("unexpected virtuality in component of Ada type"));
14914 SET_TYPE_FIELD_VIRTUAL (type, i);
14921 /* Return true if this member function is a constructor, false
14925 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
14927 const char *fieldname;
14928 const char *type_name;
14931 if (die->parent == NULL)
14934 if (die->parent->tag != DW_TAG_structure_type
14935 && die->parent->tag != DW_TAG_union_type
14936 && die->parent->tag != DW_TAG_class_type)
14939 fieldname = dwarf2_name (die, cu);
14940 type_name = dwarf2_name (die->parent, cu);
14941 if (fieldname == NULL || type_name == NULL)
14944 len = strlen (fieldname);
14945 return (strncmp (fieldname, type_name, len) == 0
14946 && (type_name[len] == '\0' || type_name[len] == '<'));
14949 /* Add a member function to the proper fieldlist. */
14952 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
14953 struct type *type, struct dwarf2_cu *cu)
14955 struct objfile *objfile = cu->per_objfile->objfile;
14956 struct attribute *attr;
14958 struct fnfieldlist *flp = nullptr;
14959 struct fn_field *fnp;
14960 const char *fieldname;
14961 struct type *this_type;
14963 if (cu->per_cu->lang == language_ada)
14964 error (_("unexpected member function in Ada type"));
14966 /* Get name of member function. */
14967 fieldname = dwarf2_name (die, cu);
14968 if (fieldname == NULL)
14971 /* Look up member function name in fieldlist. */
14972 for (i = 0; i < fip->fnfieldlists.size (); i++)
14974 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
14976 flp = &fip->fnfieldlists[i];
14981 /* Create a new fnfieldlist if necessary. */
14982 if (flp == nullptr)
14984 fip->fnfieldlists.emplace_back ();
14985 flp = &fip->fnfieldlists.back ();
14986 flp->name = fieldname;
14987 i = fip->fnfieldlists.size () - 1;
14990 /* Create a new member function field and add it to the vector of
14992 flp->fnfields.emplace_back ();
14993 fnp = &flp->fnfields.back ();
14995 /* Delay processing of the physname until later. */
14996 if (cu->per_cu->lang == language_cplus)
14997 add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15001 const char *physname = dwarf2_physname (fieldname, die, cu);
15002 fnp->physname = physname ? physname : "";
15005 fnp->type = alloc_type (objfile);
15006 this_type = read_type_die (die, cu);
15007 if (this_type && this_type->code () == TYPE_CODE_FUNC)
15009 int nparams = this_type->num_fields ();
15011 /* TYPE is the domain of this method, and THIS_TYPE is the type
15012 of the method itself (TYPE_CODE_METHOD). */
15013 smash_to_method_type (fnp->type, type,
15014 TYPE_TARGET_TYPE (this_type),
15015 this_type->fields (),
15016 this_type->num_fields (),
15017 this_type->has_varargs ());
15019 /* Handle static member functions.
15020 Dwarf2 has no clean way to discern C++ static and non-static
15021 member functions. G++ helps GDB by marking the first
15022 parameter for non-static member functions (which is the this
15023 pointer) as artificial. We obtain this information from
15024 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
15025 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15026 fnp->voffset = VOFFSET_STATIC;
15029 complaint (_("member function type missing for '%s'"),
15030 dwarf2_full_name (fieldname, die, cu));
15032 /* Get fcontext from DW_AT_containing_type if present. */
15033 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15034 fnp->fcontext = die_containing_type (die, cu);
15036 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15037 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
15039 /* Get accessibility. */
15040 dwarf_access_attribute accessibility = dwarf2_access_attribute (die, cu);
15041 switch (accessibility)
15043 case DW_ACCESS_private:
15044 fnp->is_private = 1;
15046 case DW_ACCESS_protected:
15047 fnp->is_protected = 1;
15051 /* Check for artificial methods. */
15052 attr = dwarf2_attr (die, DW_AT_artificial, cu);
15053 if (attr && attr->as_boolean ())
15054 fnp->is_artificial = 1;
15056 /* Check for defaulted methods. */
15057 attr = dwarf2_attr (die, DW_AT_defaulted, cu);
15058 if (attr != nullptr)
15059 fnp->defaulted = attr->defaulted ();
15061 /* Check for deleted methods. */
15062 attr = dwarf2_attr (die, DW_AT_deleted, cu);
15063 if (attr != nullptr && attr->as_boolean ())
15064 fnp->is_deleted = 1;
15066 fnp->is_constructor = dwarf2_is_constructor (die, cu);
15068 /* Get index in virtual function table if it is a virtual member
15069 function. For older versions of GCC, this is an offset in the
15070 appropriate virtual table, as specified by DW_AT_containing_type.
15071 For everyone else, it is an expression to be evaluated relative
15072 to the object address. */
15074 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15075 if (attr != nullptr)
15077 if (attr->form_is_block () && attr->as_block ()->size > 0)
15079 struct dwarf_block *block = attr->as_block ();
15081 if (block->data[0] == DW_OP_constu)
15083 /* Old-style GCC. */
15084 fnp->voffset = decode_locdesc (block, cu) + 2;
15086 else if (block->data[0] == DW_OP_deref
15087 || (block->size > 1
15088 && block->data[0] == DW_OP_deref_size
15089 && block->data[1] == cu->header.addr_size))
15091 fnp->voffset = decode_locdesc (block, cu);
15092 if ((fnp->voffset % cu->header.addr_size) != 0)
15093 dwarf2_complex_location_expr_complaint ();
15095 fnp->voffset /= cu->header.addr_size;
15099 dwarf2_complex_location_expr_complaint ();
15101 if (!fnp->fcontext)
15103 /* If there is no `this' field and no DW_AT_containing_type,
15104 we cannot actually find a base class context for the
15106 if (this_type->num_fields () == 0
15107 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15109 complaint (_("cannot determine context for virtual member "
15110 "function \"%s\" (offset %s)"),
15111 fieldname, sect_offset_str (die->sect_off));
15116 = TYPE_TARGET_TYPE (this_type->field (0).type ());
15120 else if (attr->form_is_section_offset ())
15122 dwarf2_complex_location_expr_complaint ();
15126 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15132 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15133 if (attr != nullptr && attr->as_virtuality () != DW_VIRTUALITY_none)
15135 /* GCC does this, as of 2008-08-25; PR debug/37237. */
15136 complaint (_("Member function \"%s\" (offset %s) is virtual "
15137 "but the vtable offset is not specified"),
15138 fieldname, sect_offset_str (die->sect_off));
15139 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15140 TYPE_CPLUS_DYNAMIC (type) = 1;
15145 /* Create the vector of member function fields, and attach it to the type. */
15148 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15149 struct dwarf2_cu *cu)
15151 if (cu->per_cu->lang == language_ada)
15152 error (_("unexpected member functions in Ada type"));
15154 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15155 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15157 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15159 for (int i = 0; i < fip->fnfieldlists.size (); i++)
15161 struct fnfieldlist &nf = fip->fnfieldlists[i];
15162 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15164 TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15165 TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15166 fn_flp->fn_fields = (struct fn_field *)
15167 TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15169 for (int k = 0; k < nf.fnfields.size (); ++k)
15170 fn_flp->fn_fields[k] = nf.fnfields[k];
15173 TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15176 /* Returns non-zero if NAME is the name of a vtable member in CU's
15177 language, zero otherwise. */
15179 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15181 static const char vptr[] = "_vptr";
15183 /* Look for the C++ form of the vtable. */
15184 if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15190 /* GCC outputs unnamed structures that are really pointers to member
15191 functions, with the ABI-specified layout. If TYPE describes
15192 such a structure, smash it into a member function type.
15194 GCC shouldn't do this; it should just output pointer to member DIEs.
15195 This is GCC PR debug/28767. */
15198 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15200 struct type *pfn_type, *self_type, *new_type;
15202 /* Check for a structure with no name and two children. */
15203 if (type->code () != TYPE_CODE_STRUCT || type->num_fields () != 2)
15206 /* Check for __pfn and __delta members. */
15207 if (TYPE_FIELD_NAME (type, 0) == NULL
15208 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15209 || TYPE_FIELD_NAME (type, 1) == NULL
15210 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15213 /* Find the type of the method. */
15214 pfn_type = type->field (0).type ();
15215 if (pfn_type == NULL
15216 || pfn_type->code () != TYPE_CODE_PTR
15217 || TYPE_TARGET_TYPE (pfn_type)->code () != TYPE_CODE_FUNC)
15220 /* Look for the "this" argument. */
15221 pfn_type = TYPE_TARGET_TYPE (pfn_type);
15222 if (pfn_type->num_fields () == 0
15223 /* || pfn_type->field (0).type () == NULL */
15224 || pfn_type->field (0).type ()->code () != TYPE_CODE_PTR)
15227 self_type = TYPE_TARGET_TYPE (pfn_type->field (0).type ());
15228 new_type = alloc_type (objfile);
15229 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15230 pfn_type->fields (), pfn_type->num_fields (),
15231 pfn_type->has_varargs ());
15232 smash_to_methodptr_type (type, new_type);
15235 /* Helper for quirk_ada_thick_pointer. If TYPE is an array type that
15236 requires rewriting, then copy it and return the updated copy.
15237 Otherwise return nullptr. */
15239 static struct type *
15240 rewrite_array_type (struct type *type)
15242 if (type->code () != TYPE_CODE_ARRAY)
15245 struct type *index_type = type->index_type ();
15246 range_bounds *current_bounds = index_type->bounds ();
15248 /* Handle multi-dimensional arrays. */
15249 struct type *new_target = rewrite_array_type (TYPE_TARGET_TYPE (type));
15250 if (new_target == nullptr)
15252 /* Maybe we don't need to rewrite this array. */
15253 if (current_bounds->low.kind () == PROP_CONST
15254 && current_bounds->high.kind () == PROP_CONST)
15258 /* Either the target type was rewritten, or the bounds have to be
15259 updated. Either way we want to copy the type and update
15261 struct type *copy = copy_type (type);
15262 int nfields = copy->num_fields ();
15264 = ((struct field *) TYPE_ZALLOC (copy,
15265 nfields * sizeof (struct field)));
15266 memcpy (new_fields, copy->fields (), nfields * sizeof (struct field));
15267 copy->set_fields (new_fields);
15268 if (new_target != nullptr)
15269 TYPE_TARGET_TYPE (copy) = new_target;
15271 struct type *index_copy = copy_type (index_type);
15272 range_bounds *bounds
15273 = (struct range_bounds *) TYPE_ZALLOC (index_copy,
15274 sizeof (range_bounds));
15275 *bounds = *current_bounds;
15276 bounds->low.set_const_val (1);
15277 bounds->high.set_const_val (0);
15278 index_copy->set_bounds (bounds);
15279 copy->set_index_type (index_copy);
15284 /* While some versions of GCC will generate complicated DWARF for an
15285 array (see quirk_ada_thick_pointer), more recent versions were
15286 modified to emit an explicit thick pointer structure. However, in
15287 this case, the array still has DWARF expressions for its ranges,
15288 and these must be ignored. */
15291 quirk_ada_thick_pointer_struct (struct die_info *die, struct dwarf2_cu *cu,
15294 gdb_assert (cu->per_cu->lang == language_ada);
15296 /* Check for a structure with two children. */
15297 if (type->code () != TYPE_CODE_STRUCT || type->num_fields () != 2)
15300 /* Check for P_ARRAY and P_BOUNDS members. */
15301 if (TYPE_FIELD_NAME (type, 0) == NULL
15302 || strcmp (TYPE_FIELD_NAME (type, 0), "P_ARRAY") != 0
15303 || TYPE_FIELD_NAME (type, 1) == NULL
15304 || strcmp (TYPE_FIELD_NAME (type, 1), "P_BOUNDS") != 0)
15307 /* Make sure we're looking at a pointer to an array. */
15308 if (type->field (0).type ()->code () != TYPE_CODE_PTR)
15311 /* The Ada code already knows how to handle these types, so all that
15312 we need to do is turn the bounds into static bounds. However, we
15313 don't want to rewrite existing array or index types in-place,
15314 because those may be referenced in other contexts where this
15315 rewriting is undesirable. */
15316 struct type *new_ary_type
15317 = rewrite_array_type (TYPE_TARGET_TYPE (type->field (0).type ()));
15318 if (new_ary_type != nullptr)
15319 type->field (0).set_type (lookup_pointer_type (new_ary_type));
15322 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15323 appropriate error checking and issuing complaints if there is a
15327 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15329 struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15331 if (attr == nullptr)
15334 if (!attr->form_is_constant ())
15336 complaint (_("DW_AT_alignment must have constant form"
15337 " - DIE at %s [in module %s]"),
15338 sect_offset_str (die->sect_off),
15339 objfile_name (cu->per_objfile->objfile));
15343 LONGEST val = attr->constant_value (0);
15346 complaint (_("DW_AT_alignment value must not be negative"
15347 " - DIE at %s [in module %s]"),
15348 sect_offset_str (die->sect_off),
15349 objfile_name (cu->per_objfile->objfile));
15352 ULONGEST align = val;
15356 complaint (_("DW_AT_alignment value must not be zero"
15357 " - DIE at %s [in module %s]"),
15358 sect_offset_str (die->sect_off),
15359 objfile_name (cu->per_objfile->objfile));
15362 if ((align & (align - 1)) != 0)
15364 complaint (_("DW_AT_alignment value must be a power of 2"
15365 " - DIE at %s [in module %s]"),
15366 sect_offset_str (die->sect_off),
15367 objfile_name (cu->per_objfile->objfile));
15374 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15375 the alignment for TYPE. */
15378 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15381 if (!set_type_align (type, get_alignment (cu, die)))
15382 complaint (_("DW_AT_alignment value too large"
15383 " - DIE at %s [in module %s]"),
15384 sect_offset_str (die->sect_off),
15385 objfile_name (cu->per_objfile->objfile));
15388 /* Check if the given VALUE is a valid enum dwarf_calling_convention
15389 constant for a type, according to DWARF5 spec, Table 5.5. */
15392 is_valid_DW_AT_calling_convention_for_type (ULONGEST value)
15397 case DW_CC_pass_by_reference:
15398 case DW_CC_pass_by_value:
15402 complaint (_("unrecognized DW_AT_calling_convention value "
15403 "(%s) for a type"), pulongest (value));
15408 /* Check if the given VALUE is a valid enum dwarf_calling_convention
15409 constant for a subroutine, according to DWARF5 spec, Table 3.3, and
15410 also according to GNU-specific values (see include/dwarf2.h). */
15413 is_valid_DW_AT_calling_convention_for_subroutine (ULONGEST value)
15418 case DW_CC_program:
15422 case DW_CC_GNU_renesas_sh:
15423 case DW_CC_GNU_borland_fastcall_i386:
15424 case DW_CC_GDB_IBM_OpenCL:
15428 complaint (_("unrecognized DW_AT_calling_convention value "
15429 "(%s) for a subroutine"), pulongest (value));
15434 /* Called when we find the DIE that starts a structure or union scope
15435 (definition) to create a type for the structure or union. Fill in
15436 the type's name and general properties; the members will not be
15437 processed until process_structure_scope. A symbol table entry for
15438 the type will also not be done until process_structure_scope (assuming
15439 the type has a name).
15441 NOTE: we need to call these functions regardless of whether or not the
15442 DIE has a DW_AT_name attribute, since it might be an anonymous
15443 structure or union. This gets the type entered into our set of
15444 user defined types. */
15446 static struct type *
15447 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15449 struct objfile *objfile = cu->per_objfile->objfile;
15451 struct attribute *attr;
15454 /* If the definition of this type lives in .debug_types, read that type.
15455 Don't follow DW_AT_specification though, that will take us back up
15456 the chain and we want to go down. */
15457 attr = die->attr (DW_AT_signature);
15458 if (attr != nullptr)
15460 type = get_DW_AT_signature_type (die, attr, cu);
15462 /* The type's CU may not be the same as CU.
15463 Ensure TYPE is recorded with CU in die_type_hash. */
15464 return set_die_type (die, type, cu);
15467 type = alloc_type (objfile);
15468 INIT_CPLUS_SPECIFIC (type);
15470 name = dwarf2_name (die, cu);
15473 if (cu->per_cu->lang == language_cplus
15474 || cu->per_cu->lang == language_d
15475 || cu->per_cu->lang == language_rust)
15477 const char *full_name = dwarf2_full_name (name, die, cu);
15479 /* dwarf2_full_name might have already finished building the DIE's
15480 type. If so, there is no need to continue. */
15481 if (get_die_type (die, cu) != NULL)
15482 return get_die_type (die, cu);
15484 type->set_name (full_name);
15488 /* The name is already allocated along with this objfile, so
15489 we don't need to duplicate it for the type. */
15490 type->set_name (name);
15494 if (die->tag == DW_TAG_structure_type)
15496 type->set_code (TYPE_CODE_STRUCT);
15498 else if (die->tag == DW_TAG_union_type)
15500 type->set_code (TYPE_CODE_UNION);
15504 type->set_code (TYPE_CODE_STRUCT);
15507 if (cu->per_cu->lang == language_cplus && die->tag == DW_TAG_class_type)
15508 type->set_is_declared_class (true);
15510 /* Store the calling convention in the type if it's available in
15511 the die. Otherwise the calling convention remains set to
15512 the default value DW_CC_normal. */
15513 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
15514 if (attr != nullptr
15515 && is_valid_DW_AT_calling_convention_for_type (attr->constant_value (0)))
15517 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15518 TYPE_CPLUS_CALLING_CONVENTION (type)
15519 = (enum dwarf_calling_convention) (attr->constant_value (0));
15522 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15523 if (attr != nullptr)
15525 if (attr->form_is_constant ())
15526 TYPE_LENGTH (type) = attr->constant_value (0);
15529 struct dynamic_prop prop;
15530 if (attr_to_dynamic_prop (attr, die, cu, &prop, cu->addr_type ()))
15531 type->add_dyn_prop (DYN_PROP_BYTE_SIZE, prop);
15532 TYPE_LENGTH (type) = 0;
15537 TYPE_LENGTH (type) = 0;
15540 maybe_set_alignment (cu, die, type);
15542 if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15544 /* ICC<14 does not output the required DW_AT_declaration on
15545 incomplete types, but gives them a size of zero. */
15546 type->set_is_stub (true);
15549 type->set_stub_is_supported (true);
15551 if (die_is_declaration (die, cu))
15552 type->set_is_stub (true);
15553 else if (attr == NULL && die->child == NULL
15554 && producer_is_realview (cu->producer))
15555 /* RealView does not output the required DW_AT_declaration
15556 on incomplete types. */
15557 type->set_is_stub (true);
15559 /* We need to add the type field to the die immediately so we don't
15560 infinitely recurse when dealing with pointers to the structure
15561 type within the structure itself. */
15562 set_die_type (die, type, cu);
15564 /* set_die_type should be already done. */
15565 set_descriptive_type (type, die, cu);
15570 static void handle_struct_member_die
15571 (struct die_info *child_die,
15573 struct field_info *fi,
15574 std::vector<struct symbol *> *template_args,
15575 struct dwarf2_cu *cu);
15577 /* A helper for handle_struct_member_die that handles
15578 DW_TAG_variant_part. */
15581 handle_variant_part (struct die_info *die, struct type *type,
15582 struct field_info *fi,
15583 std::vector<struct symbol *> *template_args,
15584 struct dwarf2_cu *cu)
15586 variant_part_builder *new_part;
15587 if (fi->current_variant_part == nullptr)
15589 fi->variant_parts.emplace_back ();
15590 new_part = &fi->variant_parts.back ();
15592 else if (!fi->current_variant_part->processing_variant)
15594 complaint (_("nested DW_TAG_variant_part seen "
15595 "- DIE at %s [in module %s]"),
15596 sect_offset_str (die->sect_off),
15597 objfile_name (cu->per_objfile->objfile));
15602 variant_field ¤t = fi->current_variant_part->variants.back ();
15603 current.variant_parts.emplace_back ();
15604 new_part = ¤t.variant_parts.back ();
15607 /* When we recurse, we want callees to add to this new variant
15609 scoped_restore save_current_variant_part
15610 = make_scoped_restore (&fi->current_variant_part, new_part);
15612 struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15615 /* It's a univariant form, an extension we support. */
15617 else if (discr->form_is_ref ())
15619 struct dwarf2_cu *target_cu = cu;
15620 struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
15622 new_part->discriminant_offset = target_die->sect_off;
15626 complaint (_("DW_AT_discr does not have DIE reference form"
15627 " - DIE at %s [in module %s]"),
15628 sect_offset_str (die->sect_off),
15629 objfile_name (cu->per_objfile->objfile));
15632 for (die_info *child_die = die->child;
15634 child_die = child_die->sibling)
15635 handle_struct_member_die (child_die, type, fi, template_args, cu);
15638 /* A helper for handle_struct_member_die that handles
15642 handle_variant (struct die_info *die, struct type *type,
15643 struct field_info *fi,
15644 std::vector<struct symbol *> *template_args,
15645 struct dwarf2_cu *cu)
15647 if (fi->current_variant_part == nullptr)
15649 complaint (_("saw DW_TAG_variant outside DW_TAG_variant_part "
15650 "- DIE at %s [in module %s]"),
15651 sect_offset_str (die->sect_off),
15652 objfile_name (cu->per_objfile->objfile));
15655 if (fi->current_variant_part->processing_variant)
15657 complaint (_("nested DW_TAG_variant seen "
15658 "- DIE at %s [in module %s]"),
15659 sect_offset_str (die->sect_off),
15660 objfile_name (cu->per_objfile->objfile));
15664 scoped_restore save_processing_variant
15665 = make_scoped_restore (&fi->current_variant_part->processing_variant,
15668 fi->current_variant_part->variants.emplace_back ();
15669 variant_field &variant = fi->current_variant_part->variants.back ();
15670 variant.first_field = fi->fields.size ();
15672 /* In a variant we want to get the discriminant and also add a
15673 field for our sole member child. */
15674 struct attribute *discr = dwarf2_attr (die, DW_AT_discr_value, cu);
15675 if (discr == nullptr || !discr->form_is_constant ())
15677 discr = dwarf2_attr (die, DW_AT_discr_list, cu);
15678 if (discr == nullptr || discr->as_block ()->size == 0)
15679 variant.default_branch = true;
15681 variant.discr_list_data = discr->as_block ();
15684 variant.discriminant_value = discr->constant_value (0);
15686 for (die_info *variant_child = die->child;
15687 variant_child != NULL;
15688 variant_child = variant_child->sibling)
15689 handle_struct_member_die (variant_child, type, fi, template_args, cu);
15691 variant.last_field = fi->fields.size ();
15694 /* A helper for process_structure_scope that handles a single member
15698 handle_struct_member_die (struct die_info *child_die, struct type *type,
15699 struct field_info *fi,
15700 std::vector<struct symbol *> *template_args,
15701 struct dwarf2_cu *cu)
15703 if (child_die->tag == DW_TAG_member
15704 || child_die->tag == DW_TAG_variable)
15706 /* NOTE: carlton/2002-11-05: A C++ static data member
15707 should be a DW_TAG_member that is a declaration, but
15708 all versions of G++ as of this writing (so through at
15709 least 3.2.1) incorrectly generate DW_TAG_variable
15710 tags for them instead. */
15711 dwarf2_add_field (fi, child_die, cu);
15713 else if (child_die->tag == DW_TAG_subprogram)
15715 /* Rust doesn't have member functions in the C++ sense.
15716 However, it does emit ordinary functions as children
15717 of a struct DIE. */
15718 if (cu->per_cu->lang == language_rust)
15719 read_func_scope (child_die, cu);
15722 /* C++ member function. */
15723 dwarf2_add_member_fn (fi, child_die, type, cu);
15726 else if (child_die->tag == DW_TAG_inheritance)
15728 /* C++ base class field. */
15729 dwarf2_add_field (fi, child_die, cu);
15731 else if (type_can_define_types (child_die))
15732 dwarf2_add_type_defn (fi, child_die, cu);
15733 else if (child_die->tag == DW_TAG_template_type_param
15734 || child_die->tag == DW_TAG_template_value_param)
15736 struct symbol *arg = new_symbol (child_die, NULL, cu);
15739 template_args->push_back (arg);
15741 else if (child_die->tag == DW_TAG_variant_part)
15742 handle_variant_part (child_die, type, fi, template_args, cu);
15743 else if (child_die->tag == DW_TAG_variant)
15744 handle_variant (child_die, type, fi, template_args, cu);
15747 /* Finish creating a structure or union type, including filling in
15748 its members and creating a symbol for it. */
15751 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15753 struct objfile *objfile = cu->per_objfile->objfile;
15754 struct die_info *child_die;
15757 type = get_die_type (die, cu);
15759 type = read_structure_type (die, cu);
15761 bool has_template_parameters = false;
15762 if (die->child != NULL && ! die_is_declaration (die, cu))
15764 struct field_info fi;
15765 std::vector<struct symbol *> template_args;
15767 child_die = die->child;
15769 while (child_die && child_die->tag)
15771 handle_struct_member_die (child_die, type, &fi, &template_args, cu);
15772 child_die = child_die->sibling;
15775 /* Attach template arguments to type. */
15776 if (!template_args.empty ())
15778 has_template_parameters = true;
15779 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15780 TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
15781 TYPE_TEMPLATE_ARGUMENTS (type)
15782 = XOBNEWVEC (&objfile->objfile_obstack,
15784 TYPE_N_TEMPLATE_ARGUMENTS (type));
15785 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
15786 template_args.data (),
15787 (TYPE_N_TEMPLATE_ARGUMENTS (type)
15788 * sizeof (struct symbol *)));
15791 /* Attach fields and member functions to the type. */
15792 if (fi.nfields () > 0)
15793 dwarf2_attach_fields_to_type (&fi, type, cu);
15794 if (!fi.fnfieldlists.empty ())
15796 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
15798 /* Get the type which refers to the base class (possibly this
15799 class itself) which contains the vtable pointer for the current
15800 class from the DW_AT_containing_type attribute. This use of
15801 DW_AT_containing_type is a GNU extension. */
15803 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15805 struct type *t = die_containing_type (die, cu);
15807 set_type_vptr_basetype (type, t);
15812 /* Our own class provides vtbl ptr. */
15813 for (i = t->num_fields () - 1;
15814 i >= TYPE_N_BASECLASSES (t);
15817 const char *fieldname = TYPE_FIELD_NAME (t, i);
15819 if (is_vtable_name (fieldname, cu))
15821 set_type_vptr_fieldno (type, i);
15826 /* Complain if virtual function table field not found. */
15827 if (i < TYPE_N_BASECLASSES (t))
15828 complaint (_("virtual function table pointer "
15829 "not found when defining class '%s'"),
15830 type->name () ? type->name () : "");
15834 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
15837 else if (cu->producer
15838 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
15840 /* The IBM XLC compiler does not provide direct indication
15841 of the containing type, but the vtable pointer is
15842 always named __vfp. */
15846 for (i = type->num_fields () - 1;
15847 i >= TYPE_N_BASECLASSES (type);
15850 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
15852 set_type_vptr_fieldno (type, i);
15853 set_type_vptr_basetype (type, type);
15860 /* Copy fi.typedef_field_list linked list elements content into the
15861 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
15862 if (!fi.typedef_field_list.empty ())
15864 int count = fi.typedef_field_list.size ();
15866 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15867 TYPE_TYPEDEF_FIELD_ARRAY (type)
15868 = ((struct decl_field *)
15870 sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
15871 TYPE_TYPEDEF_FIELD_COUNT (type) = count;
15873 for (int i = 0; i < fi.typedef_field_list.size (); ++i)
15874 TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
15877 /* Copy fi.nested_types_list linked list elements content into the
15878 allocated array TYPE_NESTED_TYPES_ARRAY (type). */
15879 if (!fi.nested_types_list.empty ()
15880 && cu->per_cu->lang != language_ada)
15882 int count = fi.nested_types_list.size ();
15884 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15885 TYPE_NESTED_TYPES_ARRAY (type)
15886 = ((struct decl_field *)
15887 TYPE_ALLOC (type, sizeof (struct decl_field) * count));
15888 TYPE_NESTED_TYPES_COUNT (type) = count;
15890 for (int i = 0; i < fi.nested_types_list.size (); ++i)
15891 TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
15895 quirk_gcc_member_function_pointer (type, objfile);
15896 if (cu->per_cu->lang == language_rust && die->tag == DW_TAG_union_type)
15897 cu->rust_unions.push_back (type);
15898 else if (cu->per_cu->lang == language_ada)
15899 quirk_ada_thick_pointer_struct (die, cu, type);
15901 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
15902 snapshots) has been known to create a die giving a declaration
15903 for a class that has, as a child, a die giving a definition for a
15904 nested class. So we have to process our children even if the
15905 current die is a declaration. Normally, of course, a declaration
15906 won't have any children at all. */
15908 child_die = die->child;
15910 while (child_die != NULL && child_die->tag)
15912 if (child_die->tag == DW_TAG_member
15913 || child_die->tag == DW_TAG_variable
15914 || child_die->tag == DW_TAG_inheritance
15915 || child_die->tag == DW_TAG_template_value_param
15916 || child_die->tag == DW_TAG_template_type_param)
15921 process_die (child_die, cu);
15923 child_die = child_die->sibling;
15926 /* Do not consider external references. According to the DWARF standard,
15927 these DIEs are identified by the fact that they have no byte_size
15928 attribute, and a declaration attribute. */
15929 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
15930 || !die_is_declaration (die, cu)
15931 || dwarf2_attr (die, DW_AT_signature, cu) != NULL)
15933 struct symbol *sym = new_symbol (die, type, cu);
15935 if (has_template_parameters)
15937 struct symtab *symtab;
15938 if (sym != nullptr)
15939 symtab = symbol_symtab (sym);
15940 else if (cu->line_header != nullptr)
15942 /* Any related symtab will do. */
15944 = cu->line_header->file_names ()[0].symtab;
15949 complaint (_("could not find suitable "
15950 "symtab for template parameter"
15951 " - DIE at %s [in module %s]"),
15952 sect_offset_str (die->sect_off),
15953 objfile_name (objfile));
15956 if (symtab != nullptr)
15958 /* Make sure that the symtab is set on the new symbols.
15959 Even though they don't appear in this symtab directly,
15960 other parts of gdb assume that symbols do, and this is
15961 reasonably true. */
15962 for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
15963 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
15969 /* Assuming DIE is an enumeration type, and TYPE is its associated
15970 type, update TYPE using some information only available in DIE's
15971 children. In particular, the fields are computed. */
15974 update_enumeration_type_from_children (struct die_info *die,
15976 struct dwarf2_cu *cu)
15978 struct die_info *child_die;
15979 int unsigned_enum = 1;
15982 auto_obstack obstack;
15983 std::vector<struct field> fields;
15985 for (child_die = die->child;
15986 child_die != NULL && child_die->tag;
15987 child_die = child_die->sibling)
15989 struct attribute *attr;
15991 const gdb_byte *bytes;
15992 struct dwarf2_locexpr_baton *baton;
15995 if (child_die->tag != DW_TAG_enumerator)
15998 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16002 name = dwarf2_name (child_die, cu);
16004 name = "<anonymous enumerator>";
16006 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16007 &value, &bytes, &baton);
16015 if (count_one_bits_ll (value) >= 2)
16019 fields.emplace_back ();
16020 struct field &field = fields.back ();
16021 FIELD_NAME (field) = dwarf2_physname (name, child_die, cu);
16022 SET_FIELD_ENUMVAL (field, value);
16025 if (!fields.empty ())
16027 type->set_num_fields (fields.size ());
16030 TYPE_ALLOC (type, sizeof (struct field) * fields.size ()));
16031 memcpy (type->fields (), fields.data (),
16032 sizeof (struct field) * fields.size ());
16036 type->set_is_unsigned (true);
16039 type->set_is_flag_enum (true);
16042 /* Given a DW_AT_enumeration_type die, set its type. We do not
16043 complete the type's fields yet, or create any symbols. */
16045 static struct type *
16046 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16048 struct objfile *objfile = cu->per_objfile->objfile;
16050 struct attribute *attr;
16053 /* If the definition of this type lives in .debug_types, read that type.
16054 Don't follow DW_AT_specification though, that will take us back up
16055 the chain and we want to go down. */
16056 attr = die->attr (DW_AT_signature);
16057 if (attr != nullptr)
16059 type = get_DW_AT_signature_type (die, attr, cu);
16061 /* The type's CU may not be the same as CU.
16062 Ensure TYPE is recorded with CU in die_type_hash. */
16063 return set_die_type (die, type, cu);
16066 type = alloc_type (objfile);
16068 type->set_code (TYPE_CODE_ENUM);
16069 name = dwarf2_full_name (NULL, die, cu);
16071 type->set_name (name);
16073 attr = dwarf2_attr (die, DW_AT_type, cu);
16076 struct type *underlying_type = die_type (die, cu);
16078 TYPE_TARGET_TYPE (type) = underlying_type;
16081 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16082 if (attr != nullptr)
16084 TYPE_LENGTH (type) = attr->constant_value (0);
16088 TYPE_LENGTH (type) = 0;
16091 maybe_set_alignment (cu, die, type);
16093 /* The enumeration DIE can be incomplete. In Ada, any type can be
16094 declared as private in the package spec, and then defined only
16095 inside the package body. Such types are known as Taft Amendment
16096 Types. When another package uses such a type, an incomplete DIE
16097 may be generated by the compiler. */
16098 if (die_is_declaration (die, cu))
16099 type->set_is_stub (true);
16101 /* If this type has an underlying type that is not a stub, then we
16102 may use its attributes. We always use the "unsigned" attribute
16103 in this situation, because ordinarily we guess whether the type
16104 is unsigned -- but the guess can be wrong and the underlying type
16105 can tell us the reality. However, we defer to a local size
16106 attribute if one exists, because this lets the compiler override
16107 the underlying type if needed. */
16108 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_TARGET_TYPE (type)->is_stub ())
16110 struct type *underlying_type = TYPE_TARGET_TYPE (type);
16111 underlying_type = check_typedef (underlying_type);
16113 type->set_is_unsigned (underlying_type->is_unsigned ());
16115 if (TYPE_LENGTH (type) == 0)
16116 TYPE_LENGTH (type) = TYPE_LENGTH (underlying_type);
16118 if (TYPE_RAW_ALIGN (type) == 0
16119 && TYPE_RAW_ALIGN (underlying_type) != 0)
16120 set_type_align (type, TYPE_RAW_ALIGN (underlying_type));
16123 type->set_is_declared_class (dwarf2_flag_true_p (die, DW_AT_enum_class, cu));
16125 set_die_type (die, type, cu);
16127 /* Finish the creation of this type by using the enum's children.
16128 Note that, as usual, this must come after set_die_type to avoid
16129 infinite recursion when trying to compute the names of the
16131 update_enumeration_type_from_children (die, type, cu);
16136 /* Given a pointer to a die which begins an enumeration, process all
16137 the dies that define the members of the enumeration, and create the
16138 symbol for the enumeration type.
16140 NOTE: We reverse the order of the element list. */
16143 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16145 struct type *this_type;
16147 this_type = get_die_type (die, cu);
16148 if (this_type == NULL)
16149 this_type = read_enumeration_type (die, cu);
16151 if (die->child != NULL)
16153 struct die_info *child_die;
16156 child_die = die->child;
16157 while (child_die && child_die->tag)
16159 if (child_die->tag != DW_TAG_enumerator)
16161 process_die (child_die, cu);
16165 name = dwarf2_name (child_die, cu);
16167 new_symbol (child_die, this_type, cu);
16170 child_die = child_die->sibling;
16174 /* If we are reading an enum from a .debug_types unit, and the enum
16175 is a declaration, and the enum is not the signatured type in the
16176 unit, then we do not want to add a symbol for it. Adding a
16177 symbol would in some cases obscure the true definition of the
16178 enum, giving users an incomplete type when the definition is
16179 actually available. Note that we do not want to do this for all
16180 enums which are just declarations, because C++0x allows forward
16181 enum declarations. */
16182 if (cu->per_cu->is_debug_types
16183 && die_is_declaration (die, cu))
16185 struct signatured_type *sig_type;
16187 sig_type = (struct signatured_type *) cu->per_cu;
16188 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16189 if (sig_type->type_offset_in_section != die->sect_off)
16193 new_symbol (die, this_type, cu);
16196 /* Helper function for quirk_ada_thick_pointer that examines a bounds
16197 expression for an index type and finds the corresponding field
16198 offset in the hidden "P_BOUNDS" structure. Returns true on success
16199 and updates *FIELD, false if it fails to recognize an
16203 recognize_bound_expression (struct die_info *die, enum dwarf_attribute name,
16204 int *bounds_offset, struct field *field,
16205 struct dwarf2_cu *cu)
16207 struct attribute *attr = dwarf2_attr (die, name, cu);
16208 if (attr == nullptr || !attr->form_is_block ())
16211 const struct dwarf_block *block = attr->as_block ();
16212 const gdb_byte *start = block->data;
16213 const gdb_byte *end = block->data + block->size;
16215 /* The expression to recognize generally looks like:
16217 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
16218 DW_OP_plus_uconst: 4; DW_OP_deref_size: 4)
16220 However, the second "plus_uconst" may be missing:
16222 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
16223 DW_OP_deref_size: 4)
16225 This happens when the field is at the start of the structure.
16227 Also, the final deref may not be sized:
16229 (DW_OP_push_object_address; DW_OP_plus_uconst: 4; DW_OP_deref;
16232 This happens when the size of the index type happens to be the
16233 same as the architecture's word size. This can occur with or
16234 without the second plus_uconst. */
16236 if (end - start < 2)
16238 if (*start++ != DW_OP_push_object_address)
16240 if (*start++ != DW_OP_plus_uconst)
16243 uint64_t this_bound_off;
16244 start = gdb_read_uleb128 (start, end, &this_bound_off);
16245 if (start == nullptr || (int) this_bound_off != this_bound_off)
16247 /* Update *BOUNDS_OFFSET if needed, or alternatively verify that it
16248 is consistent among all bounds. */
16249 if (*bounds_offset == -1)
16250 *bounds_offset = this_bound_off;
16251 else if (*bounds_offset != this_bound_off)
16254 if (start == end || *start++ != DW_OP_deref)
16260 else if (*start == DW_OP_deref_size || *start == DW_OP_deref)
16262 /* This means an offset of 0. */
16264 else if (*start++ != DW_OP_plus_uconst)
16268 /* The size is the parameter to DW_OP_plus_uconst. */
16270 start = gdb_read_uleb128 (start, end, &val);
16271 if (start == nullptr)
16273 if ((int) val != val)
16282 if (*start == DW_OP_deref_size)
16284 start = gdb_read_uleb128 (start + 1, end, &size);
16285 if (start == nullptr)
16288 else if (*start == DW_OP_deref)
16290 size = cu->header.addr_size;
16296 SET_FIELD_BITPOS (*field, 8 * offset);
16297 if (size != TYPE_LENGTH (field->type ()))
16298 FIELD_BITSIZE (*field) = 8 * size;
16303 /* With -fgnat-encodings=minimal, gcc will emit some unusual DWARF for
16304 some kinds of Ada arrays:
16306 <1><11db>: Abbrev Number: 7 (DW_TAG_array_type)
16307 <11dc> DW_AT_name : (indirect string, offset: 0x1bb8): string
16308 <11e0> DW_AT_data_location: 2 byte block: 97 6
16309 (DW_OP_push_object_address; DW_OP_deref)
16310 <11e3> DW_AT_type : <0x1173>
16311 <11e7> DW_AT_sibling : <0x1201>
16312 <2><11eb>: Abbrev Number: 8 (DW_TAG_subrange_type)
16313 <11ec> DW_AT_type : <0x1206>
16314 <11f0> DW_AT_lower_bound : 6 byte block: 97 23 8 6 94 4
16315 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
16316 DW_OP_deref_size: 4)
16317 <11f7> DW_AT_upper_bound : 8 byte block: 97 23 8 6 23 4 94 4
16318 (DW_OP_push_object_address; DW_OP_plus_uconst: 8; DW_OP_deref;
16319 DW_OP_plus_uconst: 4; DW_OP_deref_size: 4)
16321 This actually represents a "thick pointer", which is a structure
16322 with two elements: one that is a pointer to the array data, and one
16323 that is a pointer to another structure; this second structure holds
16326 This returns a new type on success, or nullptr if this didn't
16327 recognize the type. */
16329 static struct type *
16330 quirk_ada_thick_pointer (struct die_info *die, struct dwarf2_cu *cu,
16333 struct attribute *attr = dwarf2_attr (die, DW_AT_data_location, cu);
16334 /* So far we've only seen this with block form. */
16335 if (attr == nullptr || !attr->form_is_block ())
16338 /* Note that this will fail if the structure layout is changed by
16339 the compiler. However, we have no good way to recognize some
16340 other layout, because we don't know what expression the compiler
16341 might choose to emit should this happen. */
16342 struct dwarf_block *blk = attr->as_block ();
16344 || blk->data[0] != DW_OP_push_object_address
16345 || blk->data[1] != DW_OP_deref)
16348 int bounds_offset = -1;
16349 int max_align = -1;
16350 std::vector<struct field> range_fields;
16351 for (struct die_info *child_die = die->child;
16353 child_die = child_die->sibling)
16355 if (child_die->tag == DW_TAG_subrange_type)
16357 struct type *underlying = read_subrange_index_type (child_die, cu);
16359 int this_align = type_align (underlying);
16360 if (this_align > max_align)
16361 max_align = this_align;
16363 range_fields.emplace_back ();
16364 range_fields.emplace_back ();
16366 struct field &lower = range_fields[range_fields.size () - 2];
16367 struct field &upper = range_fields[range_fields.size () - 1];
16369 lower.set_type (underlying);
16370 FIELD_ARTIFICIAL (lower) = 1;
16372 upper.set_type (underlying);
16373 FIELD_ARTIFICIAL (upper) = 1;
16375 if (!recognize_bound_expression (child_die, DW_AT_lower_bound,
16376 &bounds_offset, &lower, cu)
16377 || !recognize_bound_expression (child_die, DW_AT_upper_bound,
16378 &bounds_offset, &upper, cu))
16383 /* This shouldn't really happen, but double-check that we found
16384 where the bounds are stored. */
16385 if (bounds_offset == -1)
16388 struct objfile *objfile = cu->per_objfile->objfile;
16389 for (int i = 0; i < range_fields.size (); i += 2)
16393 /* Set the name of each field in the bounds. */
16394 xsnprintf (name, sizeof (name), "LB%d", i / 2);
16395 FIELD_NAME (range_fields[i]) = objfile->intern (name);
16396 xsnprintf (name, sizeof (name), "UB%d", i / 2);
16397 FIELD_NAME (range_fields[i + 1]) = objfile->intern (name);
16400 struct type *bounds = alloc_type (objfile);
16401 bounds->set_code (TYPE_CODE_STRUCT);
16403 bounds->set_num_fields (range_fields.size ());
16405 ((struct field *) TYPE_ALLOC (bounds, (bounds->num_fields ()
16406 * sizeof (struct field))));
16407 memcpy (bounds->fields (), range_fields.data (),
16408 bounds->num_fields () * sizeof (struct field));
16410 int last_fieldno = range_fields.size () - 1;
16411 int bounds_size = (TYPE_FIELD_BITPOS (bounds, last_fieldno) / 8
16412 + TYPE_LENGTH (bounds->field (last_fieldno).type ()));
16413 TYPE_LENGTH (bounds) = align_up (bounds_size, max_align);
16415 /* Rewrite the existing array type in place. Specifically, we
16416 remove any dynamic properties we might have read, and we replace
16417 the index types. */
16418 struct type *iter = type;
16419 for (int i = 0; i < range_fields.size (); i += 2)
16421 gdb_assert (iter->code () == TYPE_CODE_ARRAY);
16422 iter->main_type->dyn_prop_list = nullptr;
16423 iter->set_index_type
16424 (create_static_range_type (NULL, bounds->field (i).type (), 1, 0));
16425 iter = TYPE_TARGET_TYPE (iter);
16428 struct type *result = alloc_type (objfile);
16429 result->set_code (TYPE_CODE_STRUCT);
16431 result->set_num_fields (2);
16433 ((struct field *) TYPE_ZALLOC (result, (result->num_fields ()
16434 * sizeof (struct field))));
16436 /* The names are chosen to coincide with what the compiler does with
16437 -fgnat-encodings=all, which the Ada code in gdb already
16439 TYPE_FIELD_NAME (result, 0) = "P_ARRAY";
16440 result->field (0).set_type (lookup_pointer_type (type));
16442 TYPE_FIELD_NAME (result, 1) = "P_BOUNDS";
16443 result->field (1).set_type (lookup_pointer_type (bounds));
16444 SET_FIELD_BITPOS (result->field (1), 8 * bounds_offset);
16446 result->set_name (type->name ());
16447 TYPE_LENGTH (result) = (TYPE_LENGTH (result->field (0).type ())
16448 + TYPE_LENGTH (result->field (1).type ()));
16453 /* Extract all information from a DW_TAG_array_type DIE and put it in
16454 the DIE's type field. For now, this only handles one dimensional
16457 static struct type *
16458 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16460 struct objfile *objfile = cu->per_objfile->objfile;
16461 struct die_info *child_die;
16463 struct type *element_type, *range_type, *index_type;
16464 struct attribute *attr;
16466 struct dynamic_prop *byte_stride_prop = NULL;
16467 unsigned int bit_stride = 0;
16469 element_type = die_type (die, cu);
16471 /* The die_type call above may have already set the type for this DIE. */
16472 type = get_die_type (die, cu);
16476 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16480 struct type *prop_type = cu->addr_sized_int_type (false);
16483 = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16484 stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
16488 complaint (_("unable to read array DW_AT_byte_stride "
16489 " - DIE at %s [in module %s]"),
16490 sect_offset_str (die->sect_off),
16491 objfile_name (cu->per_objfile->objfile));
16492 /* Ignore this attribute. We will likely not be able to print
16493 arrays of this type correctly, but there is little we can do
16494 to help if we cannot read the attribute's value. */
16495 byte_stride_prop = NULL;
16499 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16501 bit_stride = attr->constant_value (0);
16503 /* Irix 6.2 native cc creates array types without children for
16504 arrays with unspecified length. */
16505 if (die->child == NULL)
16507 index_type = objfile_type (objfile)->builtin_int;
16508 range_type = create_static_range_type (NULL, index_type, 0, -1);
16509 type = create_array_type_with_stride (NULL, element_type, range_type,
16510 byte_stride_prop, bit_stride);
16511 return set_die_type (die, type, cu);
16514 std::vector<struct type *> range_types;
16515 child_die = die->child;
16516 while (child_die && child_die->tag)
16518 if (child_die->tag == DW_TAG_subrange_type)
16520 struct type *child_type = read_type_die (child_die, cu);
16522 if (child_type != NULL)
16524 /* The range type was succesfully read. Save it for the
16525 array type creation. */
16526 range_types.push_back (child_type);
16529 child_die = child_die->sibling;
16532 if (range_types.empty ())
16534 complaint (_("unable to find array range - DIE at %s [in module %s]"),
16535 sect_offset_str (die->sect_off),
16536 objfile_name (cu->per_objfile->objfile));
16540 /* Dwarf2 dimensions are output from left to right, create the
16541 necessary array types in backwards order. */
16543 type = element_type;
16545 if (read_array_order (die, cu) == DW_ORD_col_major)
16549 while (i < range_types.size ())
16551 type = create_array_type_with_stride (NULL, type, range_types[i++],
16552 byte_stride_prop, bit_stride);
16554 byte_stride_prop = nullptr;
16559 size_t ndim = range_types.size ();
16562 type = create_array_type_with_stride (NULL, type, range_types[ndim],
16563 byte_stride_prop, bit_stride);
16565 byte_stride_prop = nullptr;
16569 gdb_assert (type != element_type);
16571 /* Understand Dwarf2 support for vector types (like they occur on
16572 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
16573 array type. This is not part of the Dwarf2/3 standard yet, but a
16574 custom vendor extension. The main difference between a regular
16575 array and the vector variant is that vectors are passed by value
16577 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16578 if (attr != nullptr)
16579 make_vector_type (type);
16581 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
16582 implementation may choose to implement triple vectors using this
16584 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16585 if (attr != nullptr && attr->form_is_unsigned ())
16587 if (attr->as_unsigned () >= TYPE_LENGTH (type))
16588 TYPE_LENGTH (type) = attr->as_unsigned ();
16590 complaint (_("DW_AT_byte_size for array type smaller "
16591 "than the total size of elements"));
16594 name = dwarf2_name (die, cu);
16596 type->set_name (name);
16598 maybe_set_alignment (cu, die, type);
16600 struct type *replacement_type = nullptr;
16601 if (cu->per_cu->lang == language_ada)
16603 replacement_type = quirk_ada_thick_pointer (die, cu, type);
16604 if (replacement_type != nullptr)
16605 type = replacement_type;
16608 /* Install the type in the die. */
16609 set_die_type (die, type, cu, replacement_type != nullptr);
16611 /* set_die_type should be already done. */
16612 set_descriptive_type (type, die, cu);
16617 static enum dwarf_array_dim_ordering
16618 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16620 struct attribute *attr;
16622 attr = dwarf2_attr (die, DW_AT_ordering, cu);
16624 if (attr != nullptr)
16626 LONGEST val = attr->constant_value (-1);
16627 if (val == DW_ORD_row_major || val == DW_ORD_col_major)
16628 return (enum dwarf_array_dim_ordering) val;
16631 /* GNU F77 is a special case, as at 08/2004 array type info is the
16632 opposite order to the dwarf2 specification, but data is still
16633 laid out as per normal fortran.
16635 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16636 version checking. */
16638 if (cu->per_cu->lang == language_fortran
16639 && cu->producer && strstr (cu->producer, "GNU F77"))
16641 return DW_ORD_row_major;
16644 switch (cu->language_defn->array_ordering ())
16646 case array_column_major:
16647 return DW_ORD_col_major;
16648 case array_row_major:
16650 return DW_ORD_row_major;
16654 /* Extract all information from a DW_TAG_set_type DIE and put it in
16655 the DIE's type field. */
16657 static struct type *
16658 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16660 struct type *domain_type, *set_type;
16661 struct attribute *attr;
16663 domain_type = die_type (die, cu);
16665 /* The die_type call above may have already set the type for this DIE. */
16666 set_type = get_die_type (die, cu);
16670 set_type = create_set_type (NULL, domain_type);
16672 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16673 if (attr != nullptr && attr->form_is_unsigned ())
16674 TYPE_LENGTH (set_type) = attr->as_unsigned ();
16676 maybe_set_alignment (cu, die, set_type);
16678 return set_die_type (die, set_type, cu);
16681 /* A helper for read_common_block that creates a locexpr baton.
16682 SYM is the symbol which we are marking as computed.
16683 COMMON_DIE is the DIE for the common block.
16684 COMMON_LOC is the location expression attribute for the common
16686 MEMBER_LOC is the location expression attribute for the particular
16687 member of the common block that we are processing.
16688 CU is the CU from which the above come. */
16691 mark_common_block_symbol_computed (struct symbol *sym,
16692 struct die_info *common_die,
16693 struct attribute *common_loc,
16694 struct attribute *member_loc,
16695 struct dwarf2_cu *cu)
16697 dwarf2_per_objfile *per_objfile = cu->per_objfile;
16698 struct objfile *objfile = per_objfile->objfile;
16699 struct dwarf2_locexpr_baton *baton;
16701 unsigned int cu_off;
16702 enum bfd_endian byte_order = gdbarch_byte_order (objfile->arch ());
16703 LONGEST offset = 0;
16705 gdb_assert (common_loc && member_loc);
16706 gdb_assert (common_loc->form_is_block ());
16707 gdb_assert (member_loc->form_is_block ()
16708 || member_loc->form_is_constant ());
16710 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16711 baton->per_objfile = per_objfile;
16712 baton->per_cu = cu->per_cu;
16713 gdb_assert (baton->per_cu);
16715 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16717 if (member_loc->form_is_constant ())
16719 offset = member_loc->constant_value (0);
16720 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16723 baton->size += member_loc->as_block ()->size;
16725 ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16728 *ptr++ = DW_OP_call4;
16729 cu_off = common_die->sect_off - cu->per_cu->sect_off;
16730 store_unsigned_integer (ptr, 4, byte_order, cu_off);
16733 if (member_loc->form_is_constant ())
16735 *ptr++ = DW_OP_addr;
16736 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16737 ptr += cu->header.addr_size;
16741 /* We have to copy the data here, because DW_OP_call4 will only
16742 use a DW_AT_location attribute. */
16743 struct dwarf_block *block = member_loc->as_block ();
16744 memcpy (ptr, block->data, block->size);
16745 ptr += block->size;
16748 *ptr++ = DW_OP_plus;
16749 gdb_assert (ptr - baton->data == baton->size);
16751 SYMBOL_LOCATION_BATON (sym) = baton;
16752 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16755 /* Create appropriate locally-scoped variables for all the
16756 DW_TAG_common_block entries. Also create a struct common_block
16757 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
16758 is used to separate the common blocks name namespace from regular
16762 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16764 struct attribute *attr;
16766 attr = dwarf2_attr (die, DW_AT_location, cu);
16767 if (attr != nullptr)
16769 /* Support the .debug_loc offsets. */
16770 if (attr->form_is_block ())
16774 else if (attr->form_is_section_offset ())
16776 dwarf2_complex_location_expr_complaint ();
16781 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16782 "common block member");
16787 if (die->child != NULL)
16789 struct objfile *objfile = cu->per_objfile->objfile;
16790 struct die_info *child_die;
16791 size_t n_entries = 0, size;
16792 struct common_block *common_block;
16793 struct symbol *sym;
16795 for (child_die = die->child;
16796 child_die && child_die->tag;
16797 child_die = child_die->sibling)
16800 size = (sizeof (struct common_block)
16801 + (n_entries - 1) * sizeof (struct symbol *));
16803 = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16805 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16806 common_block->n_entries = 0;
16808 for (child_die = die->child;
16809 child_die && child_die->tag;
16810 child_die = child_die->sibling)
16812 /* Create the symbol in the DW_TAG_common_block block in the current
16814 sym = new_symbol (child_die, NULL, cu);
16817 struct attribute *member_loc;
16819 common_block->contents[common_block->n_entries++] = sym;
16821 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16825 /* GDB has handled this for a long time, but it is
16826 not specified by DWARF. It seems to have been
16827 emitted by gfortran at least as recently as:
16828 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
16829 complaint (_("Variable in common block has "
16830 "DW_AT_data_member_location "
16831 "- DIE at %s [in module %s]"),
16832 sect_offset_str (child_die->sect_off),
16833 objfile_name (objfile));
16835 if (member_loc->form_is_section_offset ())
16836 dwarf2_complex_location_expr_complaint ();
16837 else if (member_loc->form_is_constant ()
16838 || member_loc->form_is_block ())
16840 if (attr != nullptr)
16841 mark_common_block_symbol_computed (sym, die, attr,
16845 dwarf2_complex_location_expr_complaint ();
16850 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16851 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16855 /* Create a type for a C++ namespace. */
16857 static struct type *
16858 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16860 struct objfile *objfile = cu->per_objfile->objfile;
16861 const char *previous_prefix, *name;
16865 /* For extensions, reuse the type of the original namespace. */
16866 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16868 struct die_info *ext_die;
16869 struct dwarf2_cu *ext_cu = cu;
16871 ext_die = dwarf2_extension (die, &ext_cu);
16872 type = read_type_die (ext_die, ext_cu);
16874 /* EXT_CU may not be the same as CU.
16875 Ensure TYPE is recorded with CU in die_type_hash. */
16876 return set_die_type (die, type, cu);
16879 name = namespace_name (die, &is_anonymous, cu);
16881 /* Now build the name of the current namespace. */
16883 previous_prefix = determine_prefix (die, cu);
16884 if (previous_prefix[0] != '\0')
16885 name = typename_concat (&objfile->objfile_obstack,
16886 previous_prefix, name, 0, cu);
16888 /* Create the type. */
16889 type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16891 return set_die_type (die, type, cu);
16894 /* Read a namespace scope. */
16897 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16899 struct objfile *objfile = cu->per_objfile->objfile;
16902 /* Add a symbol associated to this if we haven't seen the namespace
16903 before. Also, add a using directive if it's an anonymous
16906 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16910 type = read_type_die (die, cu);
16911 new_symbol (die, type, cu);
16913 namespace_name (die, &is_anonymous, cu);
16916 const char *previous_prefix = determine_prefix (die, cu);
16918 std::vector<const char *> excludes;
16919 add_using_directive (using_directives (cu),
16920 previous_prefix, type->name (), NULL,
16921 NULL, excludes, 0, &objfile->objfile_obstack);
16925 if (die->child != NULL)
16927 struct die_info *child_die = die->child;
16929 while (child_die && child_die->tag)
16931 process_die (child_die, cu);
16932 child_die = child_die->sibling;
16937 /* Read a Fortran module as type. This DIE can be only a declaration used for
16938 imported module. Still we need that type as local Fortran "use ... only"
16939 declaration imports depend on the created type in determine_prefix. */
16941 static struct type *
16942 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16944 struct objfile *objfile = cu->per_objfile->objfile;
16945 const char *module_name;
16948 module_name = dwarf2_name (die, cu);
16949 type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16951 return set_die_type (die, type, cu);
16954 /* Read a Fortran module. */
16957 read_module (struct die_info *die, struct dwarf2_cu *cu)
16959 struct die_info *child_die = die->child;
16962 type = read_type_die (die, cu);
16963 new_symbol (die, type, cu);
16965 while (child_die && child_die->tag)
16967 process_die (child_die, cu);
16968 child_die = child_die->sibling;
16972 /* Return the name of the namespace represented by DIE. Set
16973 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16976 static const char *
16977 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16979 struct die_info *current_die;
16980 const char *name = NULL;
16982 /* Loop through the extensions until we find a name. */
16984 for (current_die = die;
16985 current_die != NULL;
16986 current_die = dwarf2_extension (die, &cu))
16988 /* We don't use dwarf2_name here so that we can detect the absence
16989 of a name -> anonymous namespace. */
16990 name = dwarf2_string_attr (die, DW_AT_name, cu);
16996 /* Is it an anonymous namespace? */
16998 *is_anonymous = (name == NULL);
17000 name = CP_ANONYMOUS_NAMESPACE_STR;
17005 /* Extract all information from a DW_TAG_pointer_type DIE and add to
17006 the user defined type vector. */
17008 static struct type *
17009 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
17011 struct gdbarch *gdbarch = cu->per_objfile->objfile->arch ();
17012 struct comp_unit_head *cu_header = &cu->header;
17014 struct attribute *attr_byte_size;
17015 struct attribute *attr_address_class;
17016 int byte_size, addr_class;
17017 struct type *target_type;
17019 target_type = die_type (die, cu);
17021 /* The die_type call above may have already set the type for this DIE. */
17022 type = get_die_type (die, cu);
17026 type = lookup_pointer_type (target_type);
17028 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17029 if (attr_byte_size)
17030 byte_size = attr_byte_size->constant_value (cu_header->addr_size);
17032 byte_size = cu_header->addr_size;
17034 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17035 if (attr_address_class)
17036 addr_class = attr_address_class->constant_value (DW_ADDR_none);
17038 addr_class = DW_ADDR_none;
17040 ULONGEST alignment = get_alignment (cu, die);
17042 /* If the pointer size, alignment, or address class is different
17043 than the default, create a type variant marked as such and set
17044 the length accordingly. */
17045 if (TYPE_LENGTH (type) != byte_size
17046 || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17047 && alignment != TYPE_RAW_ALIGN (type))
17048 || addr_class != DW_ADDR_none)
17050 if (gdbarch_address_class_type_flags_p (gdbarch))
17052 type_instance_flags type_flags
17053 = gdbarch_address_class_type_flags (gdbarch, byte_size,
17055 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17057 type = make_type_with_address_space (type, type_flags);
17059 else if (TYPE_LENGTH (type) != byte_size)
17061 complaint (_("invalid pointer size %d"), byte_size);
17063 else if (TYPE_RAW_ALIGN (type) != alignment)
17065 complaint (_("Invalid DW_AT_alignment"
17066 " - DIE at %s [in module %s]"),
17067 sect_offset_str (die->sect_off),
17068 objfile_name (cu->per_objfile->objfile));
17072 /* Should we also complain about unhandled address classes? */
17076 TYPE_LENGTH (type) = byte_size;
17077 set_type_align (type, alignment);
17078 return set_die_type (die, type, cu);
17081 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17082 the user defined type vector. */
17084 static struct type *
17085 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17088 struct type *to_type;
17089 struct type *domain;
17091 to_type = die_type (die, cu);
17092 domain = die_containing_type (die, cu);
17094 /* The calls above may have already set the type for this DIE. */
17095 type = get_die_type (die, cu);
17099 if (check_typedef (to_type)->code () == TYPE_CODE_METHOD)
17100 type = lookup_methodptr_type (to_type);
17101 else if (check_typedef (to_type)->code () == TYPE_CODE_FUNC)
17103 struct type *new_type = alloc_type (cu->per_objfile->objfile);
17105 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17106 to_type->fields (), to_type->num_fields (),
17107 to_type->has_varargs ());
17108 type = lookup_methodptr_type (new_type);
17111 type = lookup_memberptr_type (to_type, domain);
17113 return set_die_type (die, type, cu);
17116 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17117 the user defined type vector. */
17119 static struct type *
17120 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17121 enum type_code refcode)
17123 struct comp_unit_head *cu_header = &cu->header;
17124 struct type *type, *target_type;
17125 struct attribute *attr;
17127 gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17129 target_type = die_type (die, cu);
17131 /* The die_type call above may have already set the type for this DIE. */
17132 type = get_die_type (die, cu);
17136 type = lookup_reference_type (target_type, refcode);
17137 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17138 if (attr != nullptr)
17140 TYPE_LENGTH (type) = attr->constant_value (cu_header->addr_size);
17144 TYPE_LENGTH (type) = cu_header->addr_size;
17146 maybe_set_alignment (cu, die, type);
17147 return set_die_type (die, type, cu);
17150 /* Add the given cv-qualifiers to the element type of the array. GCC
17151 outputs DWARF type qualifiers that apply to an array, not the
17152 element type. But GDB relies on the array element type to carry
17153 the cv-qualifiers. This mimics section 6.7.3 of the C99
17156 static struct type *
17157 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17158 struct type *base_type, int cnst, int voltl)
17160 struct type *el_type, *inner_array;
17162 base_type = copy_type (base_type);
17163 inner_array = base_type;
17165 while (TYPE_TARGET_TYPE (inner_array)->code () == TYPE_CODE_ARRAY)
17167 TYPE_TARGET_TYPE (inner_array) =
17168 copy_type (TYPE_TARGET_TYPE (inner_array));
17169 inner_array = TYPE_TARGET_TYPE (inner_array);
17172 el_type = TYPE_TARGET_TYPE (inner_array);
17173 cnst |= TYPE_CONST (el_type);
17174 voltl |= TYPE_VOLATILE (el_type);
17175 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17177 return set_die_type (die, base_type, cu);
17180 static struct type *
17181 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17183 struct type *base_type, *cv_type;
17185 base_type = die_type (die, cu);
17187 /* The die_type call above may have already set the type for this DIE. */
17188 cv_type = get_die_type (die, cu);
17192 /* In case the const qualifier is applied to an array type, the element type
17193 is so qualified, not the array type (section 6.7.3 of C99). */
17194 if (base_type->code () == TYPE_CODE_ARRAY)
17195 return add_array_cv_type (die, cu, base_type, 1, 0);
17197 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17198 return set_die_type (die, cv_type, cu);
17201 static struct type *
17202 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17204 struct type *base_type, *cv_type;
17206 base_type = die_type (die, cu);
17208 /* The die_type call above may have already set the type for this DIE. */
17209 cv_type = get_die_type (die, cu);
17213 /* In case the volatile qualifier is applied to an array type, the
17214 element type is so qualified, not the array type (section 6.7.3
17216 if (base_type->code () == TYPE_CODE_ARRAY)
17217 return add_array_cv_type (die, cu, base_type, 0, 1);
17219 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17220 return set_die_type (die, cv_type, cu);
17223 /* Handle DW_TAG_restrict_type. */
17225 static struct type *
17226 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17228 struct type *base_type, *cv_type;
17230 base_type = die_type (die, cu);
17232 /* The die_type call above may have already set the type for this DIE. */
17233 cv_type = get_die_type (die, cu);
17237 cv_type = make_restrict_type (base_type);
17238 return set_die_type (die, cv_type, cu);
17241 /* Handle DW_TAG_atomic_type. */
17243 static struct type *
17244 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17246 struct type *base_type, *cv_type;
17248 base_type = die_type (die, cu);
17250 /* The die_type call above may have already set the type for this DIE. */
17251 cv_type = get_die_type (die, cu);
17255 cv_type = make_atomic_type (base_type);
17256 return set_die_type (die, cv_type, cu);
17259 /* Extract all information from a DW_TAG_string_type DIE and add to
17260 the user defined type vector. It isn't really a user defined type,
17261 but it behaves like one, with other DIE's using an AT_user_def_type
17262 attribute to reference it. */
17264 static struct type *
17265 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17267 struct objfile *objfile = cu->per_objfile->objfile;
17268 struct gdbarch *gdbarch = objfile->arch ();
17269 struct type *type, *range_type, *index_type, *char_type;
17270 struct attribute *attr;
17271 struct dynamic_prop prop;
17272 bool length_is_constant = true;
17275 /* There are a couple of places where bit sizes might be made use of
17276 when parsing a DW_TAG_string_type, however, no producer that we know
17277 of make use of these. Handling bit sizes that are a multiple of the
17278 byte size is easy enough, but what about other bit sizes? Lets deal
17279 with that problem when we have to. Warn about these attributes being
17280 unsupported, then parse the type and ignore them like we always
17282 if (dwarf2_attr (die, DW_AT_bit_size, cu) != nullptr
17283 || dwarf2_attr (die, DW_AT_string_length_bit_size, cu) != nullptr)
17285 static bool warning_printed = false;
17286 if (!warning_printed)
17288 warning (_("DW_AT_bit_size and DW_AT_string_length_bit_size not "
17289 "currently supported on DW_TAG_string_type."));
17290 warning_printed = true;
17294 attr = dwarf2_attr (die, DW_AT_string_length, cu);
17295 if (attr != nullptr && !attr->form_is_constant ())
17297 /* The string length describes the location at which the length of
17298 the string can be found. The size of the length field can be
17299 specified with one of the attributes below. */
17300 struct type *prop_type;
17301 struct attribute *len
17302 = dwarf2_attr (die, DW_AT_string_length_byte_size, cu);
17303 if (len == nullptr)
17304 len = dwarf2_attr (die, DW_AT_byte_size, cu);
17305 if (len != nullptr && len->form_is_constant ())
17307 /* Pass 0 as the default as we know this attribute is constant
17308 and the default value will not be returned. */
17309 LONGEST sz = len->constant_value (0);
17310 prop_type = cu->per_objfile->int_type (sz, true);
17314 /* If the size is not specified then we assume it is the size of
17315 an address on this target. */
17316 prop_type = cu->addr_sized_int_type (true);
17319 /* Convert the attribute into a dynamic property. */
17320 if (!attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
17323 length_is_constant = false;
17325 else if (attr != nullptr)
17327 /* This DW_AT_string_length just contains the length with no
17328 indirection. There's no need to create a dynamic property in this
17329 case. Pass 0 for the default value as we know it will not be
17330 returned in this case. */
17331 length = attr->constant_value (0);
17333 else if ((attr = dwarf2_attr (die, DW_AT_byte_size, cu)) != nullptr)
17335 /* We don't currently support non-constant byte sizes for strings. */
17336 length = attr->constant_value (1);
17340 /* Use 1 as a fallback length if we have nothing else. */
17344 index_type = objfile_type (objfile)->builtin_int;
17345 if (length_is_constant)
17346 range_type = create_static_range_type (NULL, index_type, 1, length);
17349 struct dynamic_prop low_bound;
17351 low_bound.set_const_val (1);
17352 range_type = create_range_type (NULL, index_type, &low_bound, &prop, 0);
17354 char_type = language_string_char_type (cu->language_defn, gdbarch);
17355 type = create_string_type (NULL, char_type, range_type);
17357 return set_die_type (die, type, cu);
17360 /* Assuming that DIE corresponds to a function, returns nonzero
17361 if the function is prototyped. */
17364 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17366 struct attribute *attr;
17368 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17369 if (attr && attr->as_boolean ())
17372 /* The DWARF standard implies that the DW_AT_prototyped attribute
17373 is only meaningful for C, but the concept also extends to other
17374 languages that allow unprototyped functions (Eg: Objective C).
17375 For all other languages, assume that functions are always
17377 if (cu->per_cu->lang != language_c
17378 && cu->per_cu->lang != language_objc
17379 && cu->per_cu->lang != language_opencl)
17382 /* RealView does not emit DW_AT_prototyped. We can not distinguish
17383 prototyped and unprototyped functions; default to prototyped,
17384 since that is more common in modern code (and RealView warns
17385 about unprototyped functions). */
17386 if (producer_is_realview (cu->producer))
17392 /* Handle DIES due to C code like:
17396 int (*funcp)(int a, long l);
17400 ('funcp' generates a DW_TAG_subroutine_type DIE). */
17402 static struct type *
17403 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17405 struct objfile *objfile = cu->per_objfile->objfile;
17406 struct type *type; /* Type that this function returns. */
17407 struct type *ftype; /* Function that returns above type. */
17408 struct attribute *attr;
17410 type = die_type (die, cu);
17412 /* The die_type call above may have already set the type for this DIE. */
17413 ftype = get_die_type (die, cu);
17417 ftype = lookup_function_type (type);
17419 if (prototyped_function_p (die, cu))
17420 ftype->set_is_prototyped (true);
17422 /* Store the calling convention in the type if it's available in
17423 the subroutine die. Otherwise set the calling convention to
17424 the default value DW_CC_normal. */
17425 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17426 if (attr != nullptr
17427 && is_valid_DW_AT_calling_convention_for_subroutine (attr->constant_value (0)))
17428 TYPE_CALLING_CONVENTION (ftype)
17429 = (enum dwarf_calling_convention) attr->constant_value (0);
17430 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17431 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17433 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17435 /* Record whether the function returns normally to its caller or not
17436 if the DWARF producer set that information. */
17437 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17438 if (attr && attr->as_boolean ())
17439 TYPE_NO_RETURN (ftype) = 1;
17441 /* We need to add the subroutine type to the die immediately so
17442 we don't infinitely recurse when dealing with parameters
17443 declared as the same subroutine type. */
17444 set_die_type (die, ftype, cu);
17446 if (die->child != NULL)
17448 struct type *void_type = objfile_type (objfile)->builtin_void;
17449 struct die_info *child_die;
17450 int nparams, iparams;
17452 /* Count the number of parameters.
17453 FIXME: GDB currently ignores vararg functions, but knows about
17454 vararg member functions. */
17456 child_die = die->child;
17457 while (child_die && child_die->tag)
17459 if (child_die->tag == DW_TAG_formal_parameter)
17461 else if (child_die->tag == DW_TAG_unspecified_parameters)
17462 ftype->set_has_varargs (true);
17464 child_die = child_die->sibling;
17467 /* Allocate storage for parameters and fill them in. */
17468 ftype->set_num_fields (nparams);
17470 ((struct field *) TYPE_ZALLOC (ftype, nparams * sizeof (struct field)));
17472 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
17473 even if we error out during the parameters reading below. */
17474 for (iparams = 0; iparams < nparams; iparams++)
17475 ftype->field (iparams).set_type (void_type);
17478 child_die = die->child;
17479 while (child_die && child_die->tag)
17481 if (child_die->tag == DW_TAG_formal_parameter)
17483 struct type *arg_type;
17485 /* DWARF version 2 has no clean way to discern C++
17486 static and non-static member functions. G++ helps
17487 GDB by marking the first parameter for non-static
17488 member functions (which is the this pointer) as
17489 artificial. We pass this information to
17490 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17492 DWARF version 3 added DW_AT_object_pointer, which GCC
17493 4.5 does not yet generate. */
17494 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17495 if (attr != nullptr)
17496 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = attr->as_boolean ();
17498 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17499 arg_type = die_type (child_die, cu);
17501 /* RealView does not mark THIS as const, which the testsuite
17502 expects. GCC marks THIS as const in method definitions,
17503 but not in the class specifications (GCC PR 43053). */
17504 if (cu->per_cu->lang == language_cplus
17505 && !TYPE_CONST (arg_type)
17506 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17509 struct dwarf2_cu *arg_cu = cu;
17510 const char *name = dwarf2_name (child_die, cu);
17512 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17513 if (attr != nullptr)
17515 /* If the compiler emits this, use it. */
17516 if (follow_die_ref (die, attr, &arg_cu) == child_die)
17519 else if (name && strcmp (name, "this") == 0)
17520 /* Function definitions will have the argument names. */
17522 else if (name == NULL && iparams == 0)
17523 /* Declarations may not have the names, so like
17524 elsewhere in GDB, assume an artificial first
17525 argument is "this". */
17529 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17533 ftype->field (iparams).set_type (arg_type);
17536 child_die = child_die->sibling;
17543 static struct type *
17544 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17546 struct objfile *objfile = cu->per_objfile->objfile;
17547 const char *name = NULL;
17548 struct type *this_type, *target_type;
17550 name = dwarf2_full_name (NULL, die, cu);
17551 this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17552 this_type->set_target_is_stub (true);
17553 set_die_type (die, this_type, cu);
17554 target_type = die_type (die, cu);
17555 if (target_type != this_type)
17556 TYPE_TARGET_TYPE (this_type) = target_type;
17559 /* Self-referential typedefs are, it seems, not allowed by the DWARF
17560 spec and cause infinite loops in GDB. */
17561 complaint (_("Self-referential DW_TAG_typedef "
17562 "- DIE at %s [in module %s]"),
17563 sect_offset_str (die->sect_off), objfile_name (objfile));
17564 TYPE_TARGET_TYPE (this_type) = NULL;
17568 /* Gcc-7 and before supports -feliminate-dwarf2-dups, which generates
17569 anonymous typedefs, which is, strictly speaking, invalid DWARF.
17570 Handle these by just returning the target type, rather than
17571 constructing an anonymous typedef type and trying to handle this
17573 set_die_type (die, target_type, cu);
17574 return target_type;
17579 /* Helper for get_dwarf2_rational_constant that computes the value of
17580 a given gmp_mpz given an attribute. */
17583 get_mpz (struct dwarf2_cu *cu, gdb_mpz *value, struct attribute *attr)
17585 /* GCC will sometimes emit a 16-byte constant value as a DWARF
17586 location expression that pushes an implicit value. */
17587 if (attr->form == DW_FORM_exprloc)
17589 dwarf_block *blk = attr->as_block ();
17590 if (blk->size > 0 && blk->data[0] == DW_OP_implicit_value)
17593 const gdb_byte *ptr = safe_read_uleb128 (blk->data + 1,
17594 blk->data + blk->size,
17596 if (ptr - blk->data + len <= blk->size)
17598 mpz_import (value->val, len,
17599 bfd_big_endian (cu->per_objfile->objfile->obfd) ? 1 : -1,
17605 /* On failure set it to 1. */
17606 *value = gdb_mpz (1);
17608 else if (attr->form_is_block ())
17610 dwarf_block *blk = attr->as_block ();
17611 mpz_import (value->val, blk->size,
17612 bfd_big_endian (cu->per_objfile->objfile->obfd) ? 1 : -1,
17613 1, 0, 0, blk->data);
17616 *value = gdb_mpz (attr->constant_value (1));
17619 /* Assuming DIE is a rational DW_TAG_constant, read the DIE's
17620 numerator and denominator into NUMERATOR and DENOMINATOR (resp).
17622 If the numerator and/or numerator attribute is missing,
17623 a complaint is filed, and NUMERATOR and DENOMINATOR are left
17627 get_dwarf2_rational_constant (struct die_info *die, struct dwarf2_cu *cu,
17628 gdb_mpz *numerator, gdb_mpz *denominator)
17630 struct attribute *num_attr, *denom_attr;
17632 num_attr = dwarf2_attr (die, DW_AT_GNU_numerator, cu);
17633 if (num_attr == nullptr)
17634 complaint (_("DW_AT_GNU_numerator missing in %s DIE at %s"),
17635 dwarf_tag_name (die->tag), sect_offset_str (die->sect_off));
17637 denom_attr = dwarf2_attr (die, DW_AT_GNU_denominator, cu);
17638 if (denom_attr == nullptr)
17639 complaint (_("DW_AT_GNU_denominator missing in %s DIE at %s"),
17640 dwarf_tag_name (die->tag), sect_offset_str (die->sect_off));
17642 if (num_attr == nullptr || denom_attr == nullptr)
17645 get_mpz (cu, numerator, num_attr);
17646 get_mpz (cu, denominator, denom_attr);
17649 /* Same as get_dwarf2_rational_constant, but extracting an unsigned
17650 rational constant, rather than a signed one.
17652 If the rational constant has a negative value, a complaint
17653 is filed, and NUMERATOR and DENOMINATOR are left untouched. */
17656 get_dwarf2_unsigned_rational_constant (struct die_info *die,
17657 struct dwarf2_cu *cu,
17658 gdb_mpz *numerator,
17659 gdb_mpz *denominator)
17664 get_dwarf2_rational_constant (die, cu, &num, &denom);
17665 if (mpz_sgn (num.val) == -1 && mpz_sgn (denom.val) == -1)
17667 mpz_neg (num.val, num.val);
17668 mpz_neg (denom.val, denom.val);
17670 else if (mpz_sgn (num.val) == -1)
17672 complaint (_("unexpected negative value for DW_AT_GNU_numerator"
17674 sect_offset_str (die->sect_off));
17677 else if (mpz_sgn (denom.val) == -1)
17679 complaint (_("unexpected negative value for DW_AT_GNU_denominator"
17681 sect_offset_str (die->sect_off));
17685 *numerator = std::move (num);
17686 *denominator = std::move (denom);
17689 /* Assuming that ENCODING is a string whose contents starting at the
17690 K'th character is "_nn" where "nn" is a decimal number, scan that
17691 number and set RESULT to the value. K is updated to point to the
17692 character immediately following the number.
17694 If the string does not conform to the format described above, false
17695 is returned, and K may or may not be changed. */
17698 ada_get_gnat_encoded_number (const char *encoding, int &k, gdb_mpz *result)
17700 /* The next character should be an underscore ('_') followed
17702 if (encoding[k] != '_' || !isdigit (encoding[k + 1]))
17705 /* Skip the underscore. */
17709 /* Determine the number of digits for our number. */
17710 while (isdigit (encoding[k]))
17715 std::string copy (&encoding[start], k - start);
17716 if (mpz_set_str (result->val, copy.c_str (), 10) == -1)
17722 /* Scan two numbers from ENCODING at OFFSET, assuming the string is of
17723 the form _NN_DD, where NN and DD are decimal numbers. Set NUM and
17724 DENOM, update OFFSET, and return true on success. Return false on
17728 ada_get_gnat_encoded_ratio (const char *encoding, int &offset,
17729 gdb_mpz *num, gdb_mpz *denom)
17731 if (!ada_get_gnat_encoded_number (encoding, offset, num))
17733 return ada_get_gnat_encoded_number (encoding, offset, denom);
17736 /* Assuming DIE corresponds to a fixed point type, finish the creation
17737 of the corresponding TYPE by setting its type-specific data. CU is
17738 the DIE's CU. SUFFIX is the "XF" type name suffix coming from GNAT
17739 encodings. It is nullptr if the GNAT encoding should be
17743 finish_fixed_point_type (struct type *type, const char *suffix,
17744 struct die_info *die, struct dwarf2_cu *cu)
17746 gdb_assert (type->code () == TYPE_CODE_FIXED_POINT
17747 && TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_FIXED_POINT);
17749 /* If GNAT encodings are preferred, don't examine the
17751 struct attribute *attr = nullptr;
17752 if (suffix == nullptr)
17754 attr = dwarf2_attr (die, DW_AT_binary_scale, cu);
17755 if (attr == nullptr)
17756 attr = dwarf2_attr (die, DW_AT_decimal_scale, cu);
17757 if (attr == nullptr)
17758 attr = dwarf2_attr (die, DW_AT_small, cu);
17761 /* Numerator and denominator of our fixed-point type's scaling factor.
17762 The default is a scaling factor of 1, which we use as a fallback
17763 when we are not able to decode it (problem with the debugging info,
17764 unsupported forms, bug in GDB, etc...). Using that as the default
17765 allows us to at least print the unscaled value, which might still
17766 be useful to a user. */
17767 gdb_mpz scale_num (1);
17768 gdb_mpz scale_denom (1);
17770 if (attr == nullptr)
17773 if (suffix != nullptr
17774 && ada_get_gnat_encoded_ratio (suffix, offset, &scale_num,
17776 /* The number might be encoded as _nn_dd_nn_dd, where the
17777 second ratio is the 'small value. In this situation, we
17778 want the second value. */
17779 && (suffix[offset] != '_'
17780 || ada_get_gnat_encoded_ratio (suffix, offset, &scale_num,
17787 /* Scaling factor not found. Assume a scaling factor of 1,
17788 and hope for the best. At least the user will be able to
17789 see the encoded value. */
17792 complaint (_("no scale found for fixed-point type (DIE at %s)"),
17793 sect_offset_str (die->sect_off));
17796 else if (attr->name == DW_AT_binary_scale)
17798 LONGEST scale_exp = attr->constant_value (0);
17799 gdb_mpz *num_or_denom = scale_exp > 0 ? &scale_num : &scale_denom;
17801 mpz_mul_2exp (num_or_denom->val, num_or_denom->val, std::abs (scale_exp));
17803 else if (attr->name == DW_AT_decimal_scale)
17805 LONGEST scale_exp = attr->constant_value (0);
17806 gdb_mpz *num_or_denom = scale_exp > 0 ? &scale_num : &scale_denom;
17808 mpz_ui_pow_ui (num_or_denom->val, 10, std::abs (scale_exp));
17810 else if (attr->name == DW_AT_small)
17812 struct die_info *scale_die;
17813 struct dwarf2_cu *scale_cu = cu;
17815 scale_die = follow_die_ref (die, attr, &scale_cu);
17816 if (scale_die->tag == DW_TAG_constant)
17817 get_dwarf2_unsigned_rational_constant (scale_die, scale_cu,
17818 &scale_num, &scale_denom);
17820 complaint (_("%s DIE not supported as target of DW_AT_small attribute"
17822 dwarf_tag_name (die->tag), sect_offset_str (die->sect_off));
17826 complaint (_("unsupported scale attribute %s for fixed-point type"
17828 dwarf_attr_name (attr->name),
17829 sect_offset_str (die->sect_off));
17832 gdb_mpq &scaling_factor = type->fixed_point_info ().scaling_factor;
17833 mpz_set (mpq_numref (scaling_factor.val), scale_num.val);
17834 mpz_set (mpq_denref (scaling_factor.val), scale_denom.val);
17835 mpq_canonicalize (scaling_factor.val);
17838 /* The gnat-encoding suffix for fixed point. */
17840 #define GNAT_FIXED_POINT_SUFFIX "___XF_"
17842 /* If NAME encodes an Ada fixed-point type, return a pointer to the
17843 "XF" suffix of the name. The text after this is what encodes the
17844 'small and 'delta information. Otherwise, return nullptr. */
17846 static const char *
17847 gnat_encoded_fixed_point_type_info (const char *name)
17849 return strstr (name, GNAT_FIXED_POINT_SUFFIX);
17852 /* Allocate a floating-point type of size BITS and name NAME. Pass NAME_HINT
17853 (which may be different from NAME) to the architecture back-end to allow
17854 it to guess the correct format if necessary. */
17856 static struct type *
17857 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17858 const char *name_hint, enum bfd_endian byte_order)
17860 struct gdbarch *gdbarch = objfile->arch ();
17861 const struct floatformat **format;
17864 format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17866 type = init_float_type (objfile, bits, name, format, byte_order);
17868 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17873 /* Allocate an integer type of size BITS and name NAME. */
17875 static struct type *
17876 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17877 int bits, int unsigned_p, const char *name)
17881 /* Versions of Intel's C Compiler generate an integer type called "void"
17882 instead of using DW_TAG_unspecified_type. This has been seen on
17883 at least versions 14, 17, and 18. */
17884 if (bits == 0 && producer_is_icc (cu) && name != nullptr
17885 && strcmp (name, "void") == 0)
17886 type = objfile_type (objfile)->builtin_void;
17888 type = init_integer_type (objfile, bits, unsigned_p, name);
17893 /* Return true if DIE has a DW_AT_small attribute whose value is
17894 a constant rational, where both the numerator and denominator
17897 CU is the DIE's Compilation Unit. */
17900 has_zero_over_zero_small_attribute (struct die_info *die,
17901 struct dwarf2_cu *cu)
17903 struct attribute *attr = dwarf2_attr (die, DW_AT_small, cu);
17904 if (attr == nullptr)
17907 struct dwarf2_cu *scale_cu = cu;
17908 struct die_info *scale_die
17909 = follow_die_ref (die, attr, &scale_cu);
17911 if (scale_die->tag != DW_TAG_constant)
17914 gdb_mpz num (1), denom (1);
17915 get_dwarf2_rational_constant (scale_die, cu, &num, &denom);
17916 return mpz_sgn (num.val) == 0 && mpz_sgn (denom.val) == 0;
17919 /* Initialise and return a floating point type of size BITS suitable for
17920 use as a component of a complex number. The NAME_HINT is passed through
17921 when initialising the floating point type and is the name of the complex
17924 As DWARF doesn't currently provide an explicit name for the components
17925 of a complex number, but it can be helpful to have these components
17926 named, we try to select a suitable name based on the size of the
17928 static struct type *
17929 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17930 struct objfile *objfile,
17931 int bits, const char *name_hint,
17932 enum bfd_endian byte_order)
17934 gdbarch *gdbarch = objfile->arch ();
17935 struct type *tt = nullptr;
17937 /* Try to find a suitable floating point builtin type of size BITS.
17938 We're going to use the name of this type as the name for the complex
17939 target type that we are about to create. */
17940 switch (cu->per_cu->lang)
17942 case language_fortran:
17946 tt = builtin_f_type (gdbarch)->builtin_real;
17949 tt = builtin_f_type (gdbarch)->builtin_real_s8;
17951 case 96: /* The x86-32 ABI specifies 96-bit long double. */
17953 tt = builtin_f_type (gdbarch)->builtin_real_s16;
17961 tt = builtin_type (gdbarch)->builtin_float;
17964 tt = builtin_type (gdbarch)->builtin_double;
17966 case 96: /* The x86-32 ABI specifies 96-bit long double. */
17968 tt = builtin_type (gdbarch)->builtin_long_double;
17974 /* If the type we found doesn't match the size we were looking for, then
17975 pretend we didn't find a type at all, the complex target type we
17976 create will then be nameless. */
17977 if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
17980 const char *name = (tt == nullptr) ? nullptr : tt->name ();
17981 return dwarf2_init_float_type (objfile, bits, name, name_hint, byte_order);
17984 /* Find a representation of a given base type and install
17985 it in the TYPE field of the die. */
17987 static struct type *
17988 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17990 struct objfile *objfile = cu->per_objfile->objfile;
17992 struct attribute *attr;
17993 int encoding = 0, bits = 0;
17997 attr = dwarf2_attr (die, DW_AT_encoding, cu);
17998 if (attr != nullptr && attr->form_is_constant ())
17999 encoding = attr->constant_value (0);
18000 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
18001 if (attr != nullptr)
18002 bits = attr->constant_value (0) * TARGET_CHAR_BIT;
18003 name = dwarf2_name (die, cu);
18005 complaint (_("DW_AT_name missing from DW_TAG_base_type"));
18007 arch = objfile->arch ();
18008 enum bfd_endian byte_order = gdbarch_byte_order (arch);
18010 attr = dwarf2_attr (die, DW_AT_endianity, cu);
18011 if (attr != nullptr && attr->form_is_constant ())
18013 int endianity = attr->constant_value (0);
18018 byte_order = BFD_ENDIAN_BIG;
18020 case DW_END_little:
18021 byte_order = BFD_ENDIAN_LITTLE;
18024 complaint (_("DW_AT_endianity has unrecognized value %d"), endianity);
18029 if ((encoding == DW_ATE_signed_fixed || encoding == DW_ATE_unsigned_fixed)
18030 && cu->per_cu->lang == language_ada
18031 && has_zero_over_zero_small_attribute (die, cu))
18033 /* brobecker/2018-02-24: This is a fixed point type for which
18034 the scaling factor is represented as fraction whose value
18035 does not make sense (zero divided by zero), so we should
18036 normally never see these. However, there is a small category
18037 of fixed point types for which GNAT is unable to provide
18038 the scaling factor via the standard DWARF mechanisms, and
18039 for which the info is provided via the GNAT encodings instead.
18040 This is likely what this DIE is about. */
18041 encoding = (encoding == DW_ATE_signed_fixed
18043 : DW_ATE_unsigned);
18046 /* With GNAT encodings, fixed-point information will be encoded in
18047 the type name. Note that this can also occur with the above
18048 zero-over-zero case, which is why this is a separate "if" rather
18049 than an "else if". */
18050 const char *gnat_encoding_suffix = nullptr;
18051 if ((encoding == DW_ATE_signed || encoding == DW_ATE_unsigned)
18052 && cu->per_cu->lang == language_ada
18053 && name != nullptr)
18055 gnat_encoding_suffix = gnat_encoded_fixed_point_type_info (name);
18056 if (gnat_encoding_suffix != nullptr)
18058 gdb_assert (startswith (gnat_encoding_suffix,
18059 GNAT_FIXED_POINT_SUFFIX));
18060 name = obstack_strndup (&cu->per_objfile->objfile->objfile_obstack,
18061 name, gnat_encoding_suffix - name);
18062 /* Use -1 here so that SUFFIX points at the "_" after the
18064 gnat_encoding_suffix += strlen (GNAT_FIXED_POINT_SUFFIX) - 1;
18066 encoding = (encoding == DW_ATE_signed
18067 ? DW_ATE_signed_fixed
18068 : DW_ATE_unsigned_fixed);
18074 case DW_ATE_address:
18075 /* Turn DW_ATE_address into a void * pointer. */
18076 type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
18077 type = init_pointer_type (objfile, bits, name, type);
18079 case DW_ATE_boolean:
18080 type = init_boolean_type (objfile, bits, 1, name);
18082 case DW_ATE_complex_float:
18083 type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name,
18085 if (type->code () == TYPE_CODE_ERROR)
18087 if (name == nullptr)
18089 struct obstack *obstack
18090 = &cu->per_objfile->objfile->objfile_obstack;
18091 name = obconcat (obstack, "_Complex ", type->name (),
18094 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
18097 type = init_complex_type (name, type);
18099 case DW_ATE_decimal_float:
18100 type = init_decfloat_type (objfile, bits, name);
18103 type = dwarf2_init_float_type (objfile, bits, name, name, byte_order);
18105 case DW_ATE_signed:
18106 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
18108 case DW_ATE_unsigned:
18109 if (cu->per_cu->lang == language_fortran
18111 && startswith (name, "character("))
18112 type = init_character_type (objfile, bits, 1, name);
18114 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
18116 case DW_ATE_signed_char:
18117 if (cu->per_cu->lang == language_ada
18118 || cu->per_cu->lang == language_m2
18119 || cu->per_cu->lang == language_pascal
18120 || cu->per_cu->lang == language_fortran)
18121 type = init_character_type (objfile, bits, 0, name);
18123 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
18125 case DW_ATE_unsigned_char:
18126 if (cu->per_cu->lang == language_ada
18127 || cu->per_cu->lang == language_m2
18128 || cu->per_cu->lang == language_pascal
18129 || cu->per_cu->lang == language_fortran
18130 || cu->per_cu->lang == language_rust)
18131 type = init_character_type (objfile, bits, 1, name);
18133 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
18138 type = builtin_type (arch)->builtin_char16;
18139 else if (bits == 32)
18140 type = builtin_type (arch)->builtin_char32;
18143 complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
18145 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
18147 return set_die_type (die, type, cu);
18150 case DW_ATE_signed_fixed:
18151 type = init_fixed_point_type (objfile, bits, 0, name);
18152 finish_fixed_point_type (type, gnat_encoding_suffix, die, cu);
18154 case DW_ATE_unsigned_fixed:
18155 type = init_fixed_point_type (objfile, bits, 1, name);
18156 finish_fixed_point_type (type, gnat_encoding_suffix, die, cu);
18160 complaint (_("unsupported DW_AT_encoding: '%s'"),
18161 dwarf_type_encoding_name (encoding));
18162 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
18166 if (name && strcmp (name, "char") == 0)
18167 type->set_has_no_signedness (true);
18169 maybe_set_alignment (cu, die, type);
18171 type->set_endianity_is_not_default (gdbarch_byte_order (arch) != byte_order);
18173 if (TYPE_SPECIFIC_FIELD (type) == TYPE_SPECIFIC_INT)
18175 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
18176 if (attr != nullptr && attr->as_unsigned () <= 8 * TYPE_LENGTH (type))
18178 unsigned real_bit_size = attr->as_unsigned ();
18179 attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
18180 /* Only use the attributes if they make sense together. */
18181 if (attr == nullptr
18182 || (attr->as_unsigned () + real_bit_size
18183 <= 8 * TYPE_LENGTH (type)))
18185 TYPE_MAIN_TYPE (type)->type_specific.int_stuff.bit_size
18187 if (attr != nullptr)
18188 TYPE_MAIN_TYPE (type)->type_specific.int_stuff.bit_offset
18189 = attr->as_unsigned ();
18194 return set_die_type (die, type, cu);
18197 /* A helper function that returns the name of DIE, if it refers to a
18198 variable declaration. */
18200 static const char *
18201 var_decl_name (struct die_info *die, struct dwarf2_cu *cu)
18203 if (die->tag != DW_TAG_variable)
18206 attribute *attr = dwarf2_attr (die, DW_AT_declaration, cu);
18207 if (attr == nullptr || !attr->as_boolean ())
18210 attr = dwarf2_attr (die, DW_AT_name, cu);
18211 if (attr == nullptr)
18213 return attr->as_string ();
18216 /* Parse dwarf attribute if it's a block, reference or constant and put the
18217 resulting value of the attribute into struct bound_prop.
18218 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
18221 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
18222 struct dwarf2_cu *cu, struct dynamic_prop *prop,
18223 struct type *default_type)
18225 struct dwarf2_property_baton *baton;
18226 dwarf2_per_objfile *per_objfile = cu->per_objfile;
18227 struct objfile *objfile = per_objfile->objfile;
18228 struct obstack *obstack = &objfile->objfile_obstack;
18230 gdb_assert (default_type != NULL);
18232 if (attr == NULL || prop == NULL)
18235 if (attr->form_is_block ())
18237 baton = XOBNEW (obstack, struct dwarf2_property_baton);
18238 baton->property_type = default_type;
18239 baton->locexpr.per_cu = cu->per_cu;
18240 baton->locexpr.per_objfile = per_objfile;
18242 struct dwarf_block *block = attr->as_block ();
18243 baton->locexpr.size = block->size;
18244 baton->locexpr.data = block->data;
18245 switch (attr->name)
18247 case DW_AT_string_length:
18248 baton->locexpr.is_reference = true;
18251 baton->locexpr.is_reference = false;
18255 prop->set_locexpr (baton);
18256 gdb_assert (prop->baton () != NULL);
18258 else if (attr->form_is_ref ())
18260 struct dwarf2_cu *target_cu = cu;
18261 struct die_info *target_die;
18262 struct attribute *target_attr;
18264 target_die = follow_die_ref (die, attr, &target_cu);
18265 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
18266 if (target_attr == NULL)
18267 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
18269 if (target_attr == NULL)
18271 const char *name = var_decl_name (target_die, target_cu);
18272 if (name != nullptr)
18274 prop->set_variable_name (name);
18280 switch (target_attr->name)
18282 case DW_AT_location:
18283 if (target_attr->form_is_section_offset ())
18285 baton = XOBNEW (obstack, struct dwarf2_property_baton);
18286 baton->property_type = die_type (target_die, target_cu);
18287 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
18288 prop->set_loclist (baton);
18289 gdb_assert (prop->baton () != NULL);
18291 else if (target_attr->form_is_block ())
18293 baton = XOBNEW (obstack, struct dwarf2_property_baton);
18294 baton->property_type = die_type (target_die, target_cu);
18295 baton->locexpr.per_cu = cu->per_cu;
18296 baton->locexpr.per_objfile = per_objfile;
18297 struct dwarf_block *block = target_attr->as_block ();
18298 baton->locexpr.size = block->size;
18299 baton->locexpr.data = block->data;
18300 baton->locexpr.is_reference = true;
18301 prop->set_locexpr (baton);
18302 gdb_assert (prop->baton () != NULL);
18306 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18307 "dynamic property");
18311 case DW_AT_data_member_location:
18315 if (!handle_data_member_location (target_die, target_cu,
18319 baton = XOBNEW (obstack, struct dwarf2_property_baton);
18320 baton->property_type = read_type_die (target_die->parent,
18322 baton->offset_info.offset = offset;
18323 baton->offset_info.type = die_type (target_die, target_cu);
18324 prop->set_addr_offset (baton);
18329 else if (attr->form_is_constant ())
18330 prop->set_const_val (attr->constant_value (0));
18333 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
18334 dwarf2_name (die, cu));
18344 dwarf2_per_objfile::int_type (int size_in_bytes, bool unsigned_p) const
18346 struct type *int_type;
18348 /* Helper macro to examine the various builtin types. */
18349 #define TRY_TYPE(F) \
18350 int_type = (unsigned_p \
18351 ? objfile_type (objfile)->builtin_unsigned_ ## F \
18352 : objfile_type (objfile)->builtin_ ## F); \
18353 if (int_type != NULL && TYPE_LENGTH (int_type) == size_in_bytes) \
18360 TRY_TYPE (long_long);
18364 gdb_assert_not_reached ("unable to find suitable integer type");
18367 /* Read the DW_AT_type attribute for a sub-range. If this attribute is not
18368 present (which is valid) then compute the default type based on the
18369 compilation units address size. */
18371 static struct type *
18372 read_subrange_index_type (struct die_info *die, struct dwarf2_cu *cu)
18374 struct type *index_type = die_type (die, cu);
18376 /* Dwarf-2 specifications explicitly allows to create subrange types
18377 without specifying a base type.
18378 In that case, the base type must be set to the type of
18379 the lower bound, upper bound or count, in that order, if any of these
18380 three attributes references an object that has a type.
18381 If no base type is found, the Dwarf-2 specifications say that
18382 a signed integer type of size equal to the size of an address should
18384 For the following C code: `extern char gdb_int [];'
18385 GCC produces an empty range DIE.
18386 FIXME: muller/2010-05-28: Possible references to object for low bound,
18387 high bound or count are not yet handled by this code. */
18388 if (index_type->code () == TYPE_CODE_VOID)
18389 index_type = cu->addr_sized_int_type (false);
18394 /* Read the given DW_AT_subrange DIE. */
18396 static struct type *
18397 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
18399 struct type *base_type, *orig_base_type;
18400 struct type *range_type;
18401 struct attribute *attr;
18402 struct dynamic_prop low, high;
18403 int low_default_is_valid;
18404 int high_bound_is_count = 0;
18406 ULONGEST negative_mask;
18408 orig_base_type = read_subrange_index_type (die, cu);
18410 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
18411 whereas the real type might be. So, we use ORIG_BASE_TYPE when
18412 creating the range type, but we use the result of check_typedef
18413 when examining properties of the type. */
18414 base_type = check_typedef (orig_base_type);
18416 /* The die_type call above may have already set the type for this DIE. */
18417 range_type = get_die_type (die, cu);
18421 high.set_const_val (0);
18423 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
18424 omitting DW_AT_lower_bound. */
18425 switch (cu->per_cu->lang)
18428 case language_cplus:
18429 low.set_const_val (0);
18430 low_default_is_valid = 1;
18432 case language_fortran:
18433 low.set_const_val (1);
18434 low_default_is_valid = 1;
18437 case language_objc:
18438 case language_rust:
18439 low.set_const_val (0);
18440 low_default_is_valid = (cu->header.version >= 4);
18444 case language_pascal:
18445 low.set_const_val (1);
18446 low_default_is_valid = (cu->header.version >= 4);
18449 low.set_const_val (0);
18450 low_default_is_valid = 0;
18454 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
18455 if (attr != nullptr)
18456 attr_to_dynamic_prop (attr, die, cu, &low, base_type);
18457 else if (!low_default_is_valid)
18458 complaint (_("Missing DW_AT_lower_bound "
18459 "- DIE at %s [in module %s]"),
18460 sect_offset_str (die->sect_off),
18461 objfile_name (cu->per_objfile->objfile));
18463 struct attribute *attr_ub, *attr_count;
18464 attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
18465 if (!attr_to_dynamic_prop (attr, die, cu, &high, base_type))
18467 attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
18468 if (attr_to_dynamic_prop (attr, die, cu, &high, base_type))
18470 /* If bounds are constant do the final calculation here. */
18471 if (low.kind () == PROP_CONST && high.kind () == PROP_CONST)
18472 high.set_const_val (low.const_val () + high.const_val () - 1);
18474 high_bound_is_count = 1;
18478 if (attr_ub != NULL)
18479 complaint (_("Unresolved DW_AT_upper_bound "
18480 "- DIE at %s [in module %s]"),
18481 sect_offset_str (die->sect_off),
18482 objfile_name (cu->per_objfile->objfile));
18483 if (attr_count != NULL)
18484 complaint (_("Unresolved DW_AT_count "
18485 "- DIE at %s [in module %s]"),
18486 sect_offset_str (die->sect_off),
18487 objfile_name (cu->per_objfile->objfile));
18492 struct attribute *bias_attr = dwarf2_attr (die, DW_AT_GNU_bias, cu);
18493 if (bias_attr != nullptr && bias_attr->form_is_constant ())
18494 bias = bias_attr->constant_value (0);
18496 /* Normally, the DWARF producers are expected to use a signed
18497 constant form (Eg. DW_FORM_sdata) to express negative bounds.
18498 But this is unfortunately not always the case, as witnessed
18499 with GCC, for instance, where the ambiguous DW_FORM_dataN form
18500 is used instead. To work around that ambiguity, we treat
18501 the bounds as signed, and thus sign-extend their values, when
18502 the base type is signed. */
18504 -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
18505 if (low.kind () == PROP_CONST
18506 && !base_type->is_unsigned () && (low.const_val () & negative_mask))
18507 low.set_const_val (low.const_val () | negative_mask);
18508 if (high.kind () == PROP_CONST
18509 && !base_type->is_unsigned () && (high.const_val () & negative_mask))
18510 high.set_const_val (high.const_val () | negative_mask);
18512 /* Check for bit and byte strides. */
18513 struct dynamic_prop byte_stride_prop;
18514 attribute *attr_byte_stride = dwarf2_attr (die, DW_AT_byte_stride, cu);
18515 if (attr_byte_stride != nullptr)
18517 struct type *prop_type = cu->addr_sized_int_type (false);
18518 attr_to_dynamic_prop (attr_byte_stride, die, cu, &byte_stride_prop,
18522 struct dynamic_prop bit_stride_prop;
18523 attribute *attr_bit_stride = dwarf2_attr (die, DW_AT_bit_stride, cu);
18524 if (attr_bit_stride != nullptr)
18526 /* It only makes sense to have either a bit or byte stride. */
18527 if (attr_byte_stride != nullptr)
18529 complaint (_("Found DW_AT_bit_stride and DW_AT_byte_stride "
18530 "- DIE at %s [in module %s]"),
18531 sect_offset_str (die->sect_off),
18532 objfile_name (cu->per_objfile->objfile));
18533 attr_bit_stride = nullptr;
18537 struct type *prop_type = cu->addr_sized_int_type (false);
18538 attr_to_dynamic_prop (attr_bit_stride, die, cu, &bit_stride_prop,
18543 if (attr_byte_stride != nullptr
18544 || attr_bit_stride != nullptr)
18546 bool byte_stride_p = (attr_byte_stride != nullptr);
18547 struct dynamic_prop *stride
18548 = byte_stride_p ? &byte_stride_prop : &bit_stride_prop;
18551 = create_range_type_with_stride (NULL, orig_base_type, &low,
18552 &high, bias, stride, byte_stride_p);
18555 range_type = create_range_type (NULL, orig_base_type, &low, &high, bias);
18557 if (high_bound_is_count)
18558 range_type->bounds ()->flag_upper_bound_is_count = 1;
18560 /* Ada expects an empty array on no boundary attributes. */
18561 if (attr == NULL && cu->per_cu->lang != language_ada)
18562 range_type->bounds ()->high.set_undefined ();
18564 name = dwarf2_name (die, cu);
18566 range_type->set_name (name);
18568 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
18569 if (attr != nullptr)
18570 TYPE_LENGTH (range_type) = attr->constant_value (0);
18572 maybe_set_alignment (cu, die, range_type);
18574 set_die_type (die, range_type, cu);
18576 /* set_die_type should be already done. */
18577 set_descriptive_type (range_type, die, cu);
18582 static struct type *
18583 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
18587 type = init_type (cu->per_objfile->objfile, TYPE_CODE_VOID, 0, NULL);
18588 type->set_name (dwarf2_name (die, cu));
18590 /* In Ada, an unspecified type is typically used when the description
18591 of the type is deferred to a different unit. When encountering
18592 such a type, we treat it as a stub, and try to resolve it later on,
18594 if (cu->per_cu->lang == language_ada)
18595 type->set_is_stub (true);
18597 return set_die_type (die, type, cu);
18600 /* Read a single die and all its descendents. Set the die's sibling
18601 field to NULL; set other fields in the die correctly, and set all
18602 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
18603 location of the info_ptr after reading all of those dies. PARENT
18604 is the parent of the die in question. */
18606 static struct die_info *
18607 read_die_and_children (const struct die_reader_specs *reader,
18608 const gdb_byte *info_ptr,
18609 const gdb_byte **new_info_ptr,
18610 struct die_info *parent)
18612 struct die_info *die;
18613 const gdb_byte *cur_ptr;
18615 cur_ptr = read_full_die_1 (reader, &die, info_ptr, 0);
18618 *new_info_ptr = cur_ptr;
18621 store_in_ref_table (die, reader->cu);
18623 if (die->has_children)
18624 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
18628 *new_info_ptr = cur_ptr;
18631 die->sibling = NULL;
18632 die->parent = parent;
18636 /* Read a die, all of its descendents, and all of its siblings; set
18637 all of the fields of all of the dies correctly. Arguments are as
18638 in read_die_and_children. */
18640 static struct die_info *
18641 read_die_and_siblings_1 (const struct die_reader_specs *reader,
18642 const gdb_byte *info_ptr,
18643 const gdb_byte **new_info_ptr,
18644 struct die_info *parent)
18646 struct die_info *first_die, *last_sibling;
18647 const gdb_byte *cur_ptr;
18649 cur_ptr = info_ptr;
18650 first_die = last_sibling = NULL;
18654 struct die_info *die
18655 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
18659 *new_info_ptr = cur_ptr;
18666 last_sibling->sibling = die;
18668 last_sibling = die;
18672 /* Read a die, all of its descendents, and all of its siblings; set
18673 all of the fields of all of the dies correctly. Arguments are as
18674 in read_die_and_children.
18675 This the main entry point for reading a DIE and all its children. */
18677 static struct die_info *
18678 read_die_and_siblings (const struct die_reader_specs *reader,
18679 const gdb_byte *info_ptr,
18680 const gdb_byte **new_info_ptr,
18681 struct die_info *parent)
18683 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18684 new_info_ptr, parent);
18686 if (dwarf_die_debug)
18688 fprintf_unfiltered (gdb_stdlog,
18689 "Read die from %s@0x%x of %s:\n",
18690 reader->die_section->get_name (),
18691 (unsigned) (info_ptr - reader->die_section->buffer),
18692 bfd_get_filename (reader->abfd));
18693 dump_die (die, dwarf_die_debug);
18699 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18701 The caller is responsible for filling in the extra attributes
18702 and updating (*DIEP)->num_attrs.
18703 Set DIEP to point to a newly allocated die with its information,
18704 except for its child, sibling, and parent fields. */
18706 static const gdb_byte *
18707 read_full_die_1 (const struct die_reader_specs *reader,
18708 struct die_info **diep, const gdb_byte *info_ptr,
18709 int num_extra_attrs)
18711 unsigned int abbrev_number, bytes_read, i;
18712 const struct abbrev_info *abbrev;
18713 struct die_info *die;
18714 struct dwarf2_cu *cu = reader->cu;
18715 bfd *abfd = reader->abfd;
18717 sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18718 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18719 info_ptr += bytes_read;
18720 if (!abbrev_number)
18726 abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18728 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18730 bfd_get_filename (abfd));
18732 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18733 die->sect_off = sect_off;
18734 die->tag = abbrev->tag;
18735 die->abbrev = abbrev_number;
18736 die->has_children = abbrev->has_children;
18738 /* Make the result usable.
18739 The caller needs to update num_attrs after adding the extra
18741 die->num_attrs = abbrev->num_attrs;
18743 bool any_need_reprocess = false;
18744 for (i = 0; i < abbrev->num_attrs; ++i)
18746 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18748 if (die->attrs[i].requires_reprocessing_p ())
18749 any_need_reprocess = true;
18752 struct attribute *attr = die->attr (DW_AT_str_offsets_base);
18753 if (attr != nullptr && attr->form_is_unsigned ())
18754 cu->str_offsets_base = attr->as_unsigned ();
18756 attr = die->attr (DW_AT_loclists_base);
18757 if (attr != nullptr)
18758 cu->loclist_base = attr->as_unsigned ();
18760 auto maybe_addr_base = die->addr_base ();
18761 if (maybe_addr_base.has_value ())
18762 cu->addr_base = *maybe_addr_base;
18764 attr = die->attr (DW_AT_rnglists_base);
18765 if (attr != nullptr)
18766 cu->rnglists_base = attr->as_unsigned ();
18768 if (any_need_reprocess)
18770 for (i = 0; i < abbrev->num_attrs; ++i)
18772 if (die->attrs[i].requires_reprocessing_p ())
18773 read_attribute_reprocess (reader, &die->attrs[i], die->tag);
18780 /* Read a die and all its attributes.
18781 Set DIEP to point to a newly allocated die with its information,
18782 except for its child, sibling, and parent fields. */
18784 static const gdb_byte *
18785 read_full_die (const struct die_reader_specs *reader,
18786 struct die_info **diep, const gdb_byte *info_ptr)
18788 const gdb_byte *result;
18790 result = read_full_die_1 (reader, diep, info_ptr, 0);
18792 if (dwarf_die_debug)
18794 fprintf_unfiltered (gdb_stdlog,
18795 "Read die from %s@0x%x of %s:\n",
18796 reader->die_section->get_name (),
18797 (unsigned) (info_ptr - reader->die_section->buffer),
18798 bfd_get_filename (reader->abfd));
18799 dump_die (*diep, dwarf_die_debug);
18806 /* Returns nonzero if TAG represents a type that we might generate a partial
18810 is_type_tag_for_partial (int tag, enum language lang)
18815 /* Some types that would be reasonable to generate partial symbols for,
18816 that we don't at present. Note that normally this does not
18817 matter, mainly because C compilers don't give names to these
18818 types, but instead emit DW_TAG_typedef. */
18819 case DW_TAG_file_type:
18820 case DW_TAG_ptr_to_member_type:
18821 case DW_TAG_set_type:
18822 case DW_TAG_string_type:
18823 case DW_TAG_subroutine_type:
18826 /* GNAT may emit an array with a name, but no typedef, so we
18827 need to make a symbol in this case. */
18828 case DW_TAG_array_type:
18829 return lang == language_ada;
18831 case DW_TAG_base_type:
18832 case DW_TAG_class_type:
18833 case DW_TAG_interface_type:
18834 case DW_TAG_enumeration_type:
18835 case DW_TAG_structure_type:
18836 case DW_TAG_subrange_type:
18837 case DW_TAG_typedef:
18838 case DW_TAG_union_type:
18845 /* Load all DIEs that are interesting for partial symbols into memory. */
18847 static struct partial_die_info *
18848 load_partial_dies (const struct die_reader_specs *reader,
18849 const gdb_byte *info_ptr, int building_psymtab)
18851 struct dwarf2_cu *cu = reader->cu;
18852 struct objfile *objfile = cu->per_objfile->objfile;
18853 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18854 unsigned int bytes_read;
18855 unsigned int load_all = 0;
18856 int nesting_level = 1;
18861 gdb_assert (cu->per_cu != NULL);
18862 if (cu->load_all_dies)
18866 = htab_create_alloc_ex (cu->header.length / 12,
18870 &cu->comp_unit_obstack,
18871 hashtab_obstack_allocate,
18872 dummy_obstack_deallocate);
18876 const abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr,
18879 /* A NULL abbrev means the end of a series of children. */
18880 if (abbrev == NULL)
18882 if (--nesting_level == 0)
18885 info_ptr += bytes_read;
18886 last_die = parent_die;
18887 parent_die = parent_die->die_parent;
18891 /* Check for template arguments. We never save these; if
18892 they're seen, we just mark the parent, and go on our way. */
18893 if (parent_die != NULL
18894 && cu->per_cu->lang == language_cplus
18895 && (abbrev->tag == DW_TAG_template_type_param
18896 || abbrev->tag == DW_TAG_template_value_param))
18898 parent_die->has_template_arguments = 1;
18902 /* We don't need a partial DIE for the template argument. */
18903 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18908 /* We only recurse into c++ subprograms looking for template arguments.
18909 Skip their other children. */
18911 && cu->per_cu->lang == language_cplus
18912 && parent_die != NULL
18913 && parent_die->tag == DW_TAG_subprogram
18914 && abbrev->tag != DW_TAG_inlined_subroutine)
18916 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18920 /* Check whether this DIE is interesting enough to save. Normally
18921 we would not be interested in members here, but there may be
18922 later variables referencing them via DW_AT_specification (for
18923 static members). */
18925 && !is_type_tag_for_partial (abbrev->tag, cu->per_cu->lang)
18926 && abbrev->tag != DW_TAG_constant
18927 && abbrev->tag != DW_TAG_enumerator
18928 && abbrev->tag != DW_TAG_subprogram
18929 && abbrev->tag != DW_TAG_inlined_subroutine
18930 && abbrev->tag != DW_TAG_lexical_block
18931 && abbrev->tag != DW_TAG_variable
18932 && abbrev->tag != DW_TAG_namespace
18933 && abbrev->tag != DW_TAG_module
18934 && abbrev->tag != DW_TAG_member
18935 && abbrev->tag != DW_TAG_imported_unit
18936 && abbrev->tag != DW_TAG_imported_declaration)
18938 /* Otherwise we skip to the next sibling, if any. */
18939 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18943 struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18946 info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18948 /* This two-pass algorithm for processing partial symbols has a
18949 high cost in cache pressure. Thus, handle some simple cases
18950 here which cover the majority of C partial symbols. DIEs
18951 which neither have specification tags in them, nor could have
18952 specification tags elsewhere pointing at them, can simply be
18953 processed and discarded.
18955 This segment is also optional; scan_partial_symbols and
18956 add_partial_symbol will handle these DIEs if we chain
18957 them in normally. When compilers which do not emit large
18958 quantities of duplicate debug information are more common,
18959 this code can probably be removed. */
18961 /* Any complete simple types at the top level (pretty much all
18962 of them, for a language without namespaces), can be processed
18964 if (parent_die == NULL
18965 && pdi.has_specification == 0
18966 && pdi.is_declaration == 0
18967 && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18968 || pdi.tag == DW_TAG_base_type
18969 || pdi.tag == DW_TAG_array_type
18970 || pdi.tag == DW_TAG_subrange_type))
18972 if (building_psymtab && pdi.raw_name != NULL)
18973 add_partial_symbol (&pdi, cu);
18975 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18979 /* The exception for DW_TAG_typedef with has_children above is
18980 a workaround of GCC PR debug/47510. In the case of this complaint
18981 type_name_or_error will error on such types later.
18983 GDB skipped children of DW_TAG_typedef by the shortcut above and then
18984 it could not find the child DIEs referenced later, this is checked
18985 above. In correct DWARF DW_TAG_typedef should have no children. */
18987 if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18988 complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18989 "- DIE at %s [in module %s]"),
18990 sect_offset_str (pdi.sect_off), objfile_name (objfile));
18992 /* If we're at the second level, and we're an enumerator, and
18993 our parent has no specification (meaning possibly lives in a
18994 namespace elsewhere), then we can add the partial symbol now
18995 instead of queueing it. */
18996 if (pdi.tag == DW_TAG_enumerator
18997 && parent_die != NULL
18998 && parent_die->die_parent == NULL
18999 && parent_die->tag == DW_TAG_enumeration_type
19000 && parent_die->has_specification == 0)
19002 if (pdi.raw_name == NULL)
19003 complaint (_("malformed enumerator DIE ignored"));
19004 else if (building_psymtab)
19005 add_partial_symbol (&pdi, cu);
19007 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
19011 struct partial_die_info *part_die
19012 = new (&cu->comp_unit_obstack) partial_die_info (pdi);
19014 /* We'll save this DIE so link it in. */
19015 part_die->die_parent = parent_die;
19016 part_die->die_sibling = NULL;
19017 part_die->die_child = NULL;
19019 if (last_die && last_die == parent_die)
19020 last_die->die_child = part_die;
19022 last_die->die_sibling = part_die;
19024 last_die = part_die;
19026 if (first_die == NULL)
19027 first_die = part_die;
19029 /* Maybe add the DIE to the hash table. Not all DIEs that we
19030 find interesting need to be in the hash table, because we
19031 also have the parent/sibling/child chains; only those that we
19032 might refer to by offset later during partial symbol reading.
19034 For now this means things that might have be the target of a
19035 DW_AT_specification, DW_AT_abstract_origin, or
19036 DW_AT_extension. DW_AT_extension will refer only to
19037 namespaces; DW_AT_abstract_origin refers to functions (and
19038 many things under the function DIE, but we do not recurse
19039 into function DIEs during partial symbol reading) and
19040 possibly variables as well; DW_AT_specification refers to
19041 declarations. Declarations ought to have the DW_AT_declaration
19042 flag. It happens that GCC forgets to put it in sometimes, but
19043 only for functions, not for types.
19045 Adding more things than necessary to the hash table is harmless
19046 except for the performance cost. Adding too few will result in
19047 wasted time in find_partial_die, when we reread the compilation
19048 unit with load_all_dies set. */
19051 || abbrev->tag == DW_TAG_constant
19052 || abbrev->tag == DW_TAG_subprogram
19053 || abbrev->tag == DW_TAG_variable
19054 || abbrev->tag == DW_TAG_namespace
19055 || part_die->is_declaration)
19059 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
19060 to_underlying (part_die->sect_off),
19065 /* For some DIEs we want to follow their children (if any). For C
19066 we have no reason to follow the children of structures; for other
19067 languages we have to, so that we can get at method physnames
19068 to infer fully qualified class names, for DW_AT_specification,
19069 and for C++ template arguments. For C++, we also look one level
19070 inside functions to find template arguments (if the name of the
19071 function does not already contain the template arguments).
19073 For Ada and Fortran, we need to scan the children of subprograms
19074 and lexical blocks as well because these languages allow the
19075 definition of nested entities that could be interesting for the
19076 debugger, such as nested subprograms for instance. */
19077 if (last_die->has_children
19079 || last_die->tag == DW_TAG_namespace
19080 || last_die->tag == DW_TAG_module
19081 || last_die->tag == DW_TAG_enumeration_type
19082 || (cu->per_cu->lang == language_cplus
19083 && last_die->tag == DW_TAG_subprogram
19084 && (last_die->raw_name == NULL
19085 || strchr (last_die->raw_name, '<') == NULL))
19086 || (cu->per_cu->lang != language_c
19087 && (last_die->tag == DW_TAG_class_type
19088 || last_die->tag == DW_TAG_interface_type
19089 || last_die->tag == DW_TAG_structure_type
19090 || last_die->tag == DW_TAG_union_type))
19091 || ((cu->per_cu->lang == language_ada
19092 || cu->per_cu->lang == language_fortran)
19093 && (last_die->tag == DW_TAG_subprogram
19094 || last_die->tag == DW_TAG_lexical_block))))
19097 parent_die = last_die;
19101 /* Otherwise we skip to the next sibling, if any. */
19102 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
19104 /* Back to the top, do it again. */
19108 partial_die_info::partial_die_info (sect_offset sect_off_,
19109 const struct abbrev_info *abbrev)
19110 : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
19114 /* See class definition. */
19117 partial_die_info::name (dwarf2_cu *cu)
19119 if (!canonical_name && raw_name != nullptr)
19121 struct objfile *objfile = cu->per_objfile->objfile;
19122 raw_name = dwarf2_canonicalize_name (raw_name, cu, objfile);
19123 canonical_name = 1;
19129 /* Read a minimal amount of information into the minimal die structure.
19130 INFO_PTR should point just after the initial uleb128 of a DIE. */
19133 partial_die_info::read (const struct die_reader_specs *reader,
19134 const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
19136 struct dwarf2_cu *cu = reader->cu;
19137 dwarf2_per_objfile *per_objfile = cu->per_objfile;
19139 int has_low_pc_attr = 0;
19140 int has_high_pc_attr = 0;
19141 int high_pc_relative = 0;
19143 for (i = 0; i < abbrev.num_attrs; ++i)
19146 info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
19147 /* String and address offsets that need to do the reprocessing have
19148 already been read at this point, so there is no need to wait until
19149 the loop terminates to do the reprocessing. */
19150 if (attr.requires_reprocessing_p ())
19151 read_attribute_reprocess (reader, &attr, tag);
19152 /* Store the data if it is of an attribute we want to keep in a
19153 partial symbol table. */
19159 case DW_TAG_compile_unit:
19160 case DW_TAG_partial_unit:
19161 case DW_TAG_type_unit:
19162 /* Compilation units have a DW_AT_name that is a filename, not
19163 a source language identifier. */
19164 case DW_TAG_enumeration_type:
19165 case DW_TAG_enumerator:
19166 /* These tags always have simple identifiers already; no need
19167 to canonicalize them. */
19168 canonical_name = 1;
19169 raw_name = attr.as_string ();
19172 canonical_name = 0;
19173 raw_name = attr.as_string ();
19177 case DW_AT_linkage_name:
19178 case DW_AT_MIPS_linkage_name:
19179 /* Note that both forms of linkage name might appear. We
19180 assume they will be the same, and we only store the last
19182 linkage_name = attr.as_string ();
19185 has_low_pc_attr = 1;
19186 lowpc = attr.as_address ();
19188 case DW_AT_high_pc:
19189 has_high_pc_attr = 1;
19190 highpc = attr.as_address ();
19191 if (cu->header.version >= 4 && attr.form_is_constant ())
19192 high_pc_relative = 1;
19194 case DW_AT_location:
19195 /* Support the .debug_loc offsets. */
19196 if (attr.form_is_block ())
19198 d.locdesc = attr.as_block ();
19200 else if (attr.form_is_section_offset ())
19202 dwarf2_complex_location_expr_complaint ();
19206 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
19207 "partial symbol information");
19210 case DW_AT_external:
19211 is_external = attr.as_boolean ();
19213 case DW_AT_declaration:
19214 is_declaration = attr.as_boolean ();
19219 case DW_AT_abstract_origin:
19220 case DW_AT_specification:
19221 case DW_AT_extension:
19222 has_specification = 1;
19223 spec_offset = attr.get_ref_die_offset ();
19224 spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
19225 || cu->per_cu->is_dwz);
19227 case DW_AT_sibling:
19228 /* Ignore absolute siblings, they might point outside of
19229 the current compile unit. */
19230 if (attr.form == DW_FORM_ref_addr)
19231 complaint (_("ignoring absolute DW_AT_sibling"));
19234 const gdb_byte *buffer = reader->buffer;
19235 sect_offset off = attr.get_ref_die_offset ();
19236 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
19238 if (sibling_ptr < info_ptr)
19239 complaint (_("DW_AT_sibling points backwards"));
19240 else if (sibling_ptr > reader->buffer_end)
19241 reader->die_section->overflow_complaint ();
19243 sibling = sibling_ptr;
19246 case DW_AT_byte_size:
19249 case DW_AT_const_value:
19250 has_const_value = 1;
19252 case DW_AT_calling_convention:
19253 /* DWARF doesn't provide a way to identify a program's source-level
19254 entry point. DW_AT_calling_convention attributes are only meant
19255 to describe functions' calling conventions.
19257 However, because it's a necessary piece of information in
19258 Fortran, and before DWARF 4 DW_CC_program was the only
19259 piece of debugging information whose definition refers to
19260 a 'main program' at all, several compilers marked Fortran
19261 main programs with DW_CC_program --- even when those
19262 functions use the standard calling conventions.
19264 Although DWARF now specifies a way to provide this
19265 information, we support this practice for backward
19267 if (attr.constant_value (0) == DW_CC_program
19268 && cu->per_cu->lang == language_fortran)
19269 main_subprogram = 1;
19273 LONGEST value = attr.constant_value (-1);
19274 if (value == DW_INL_inlined
19275 || value == DW_INL_declared_inlined)
19276 may_be_inlined = 1;
19281 if (tag == DW_TAG_imported_unit)
19283 d.sect_off = attr.get_ref_die_offset ();
19284 is_dwz = (attr.form == DW_FORM_GNU_ref_alt
19285 || cu->per_cu->is_dwz);
19289 case DW_AT_main_subprogram:
19290 main_subprogram = attr.as_boolean ();
19295 /* Offset in the .debug_ranges or .debug_rnglist section (depending
19296 on DWARF version). */
19297 ULONGEST ranges_offset = attr.as_unsigned ();
19299 /* See dwarf2_cu::gnu_ranges_base's doc for why we might want to add
19301 if (tag != DW_TAG_compile_unit)
19302 ranges_offset += cu->gnu_ranges_base;
19304 if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
19315 /* For Ada, if both the name and the linkage name appear, we prefer
19316 the latter. This lets "catch exception" work better, regardless
19317 of the order in which the name and linkage name were emitted.
19318 Really, though, this is just a workaround for the fact that gdb
19319 doesn't store both the name and the linkage name. */
19320 if (cu->per_cu->lang == language_ada && linkage_name != nullptr)
19321 raw_name = linkage_name;
19323 if (high_pc_relative)
19326 if (has_low_pc_attr && has_high_pc_attr)
19328 /* When using the GNU linker, .gnu.linkonce. sections are used to
19329 eliminate duplicate copies of functions and vtables and such.
19330 The linker will arbitrarily choose one and discard the others.
19331 The AT_*_pc values for such functions refer to local labels in
19332 these sections. If the section from that file was discarded, the
19333 labels are not in the output, so the relocs get a value of 0.
19334 If this is a discarded function, mark the pc bounds as invalid,
19335 so that GDB will ignore it. */
19336 if (lowpc == 0 && !per_objfile->per_bfd->has_section_at_zero)
19338 struct objfile *objfile = per_objfile->objfile;
19339 struct gdbarch *gdbarch = objfile->arch ();
19341 complaint (_("DW_AT_low_pc %s is zero "
19342 "for DIE at %s [in module %s]"),
19343 paddress (gdbarch, lowpc),
19344 sect_offset_str (sect_off),
19345 objfile_name (objfile));
19347 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
19348 else if (lowpc >= highpc)
19350 struct objfile *objfile = per_objfile->objfile;
19351 struct gdbarch *gdbarch = objfile->arch ();
19353 complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
19354 "for DIE at %s [in module %s]"),
19355 paddress (gdbarch, lowpc),
19356 paddress (gdbarch, highpc),
19357 sect_offset_str (sect_off),
19358 objfile_name (objfile));
19367 /* Find a cached partial DIE at OFFSET in CU. */
19369 struct partial_die_info *
19370 dwarf2_cu::find_partial_die (sect_offset sect_off)
19372 struct partial_die_info *lookup_die = NULL;
19373 struct partial_die_info part_die (sect_off);
19375 lookup_die = ((struct partial_die_info *)
19376 htab_find_with_hash (partial_dies, &part_die,
19377 to_underlying (sect_off)));
19382 /* Find a partial DIE at OFFSET, which may or may not be in CU,
19383 except in the case of .debug_types DIEs which do not reference
19384 outside their CU (they do however referencing other types via
19385 DW_FORM_ref_sig8). */
19387 static const struct cu_partial_die_info
19388 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
19390 dwarf2_per_objfile *per_objfile = cu->per_objfile;
19391 struct objfile *objfile = per_objfile->objfile;
19392 struct partial_die_info *pd = NULL;
19394 if (offset_in_dwz == cu->per_cu->is_dwz
19395 && cu->header.offset_in_cu_p (sect_off))
19397 pd = cu->find_partial_die (sect_off);
19400 /* We missed recording what we needed.
19401 Load all dies and try again. */
19405 /* TUs don't reference other CUs/TUs (except via type signatures). */
19406 if (cu->per_cu->is_debug_types)
19408 error (_("Dwarf Error: Type Unit at offset %s contains"
19409 " external reference to offset %s [in module %s].\n"),
19410 sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
19411 bfd_get_filename (objfile->obfd));
19413 dwarf2_per_cu_data *per_cu
19414 = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
19417 cu = per_objfile->get_cu (per_cu);
19418 if (cu == NULL || cu->partial_dies == NULL)
19419 load_partial_comp_unit (per_cu, per_objfile, nullptr);
19421 cu = per_objfile->get_cu (per_cu);
19424 pd = cu->find_partial_die (sect_off);
19427 /* If we didn't find it, and not all dies have been loaded,
19428 load them all and try again. */
19430 if (pd == NULL && cu->load_all_dies == 0)
19432 cu->load_all_dies = 1;
19434 /* This is nasty. When we reread the DIEs, somewhere up the call chain
19435 THIS_CU->cu may already be in use. So we can't just free it and
19436 replace its DIEs with the ones we read in. Instead, we leave those
19437 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
19438 and clobber THIS_CU->cu->partial_dies with the hash table for the new
19440 load_partial_comp_unit (cu->per_cu, per_objfile, cu);
19442 pd = cu->find_partial_die (sect_off);
19446 error (_("Dwarf Error: Cannot find DIE at %s [from module %s]\n"),
19447 sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
19451 /* See if we can figure out if the class lives in a namespace. We do
19452 this by looking for a member function; its demangled name will
19453 contain namespace info, if there is any. */
19456 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
19457 struct dwarf2_cu *cu)
19459 /* NOTE: carlton/2003-10-07: Getting the info this way changes
19460 what template types look like, because the demangler
19461 frequently doesn't give the same name as the debug info. We
19462 could fix this by only using the demangled name to get the
19463 prefix (but see comment in read_structure_type). */
19465 struct partial_die_info *real_pdi;
19466 struct partial_die_info *child_pdi;
19468 /* If this DIE (this DIE's specification, if any) has a parent, then
19469 we should not do this. We'll prepend the parent's fully qualified
19470 name when we create the partial symbol. */
19472 real_pdi = struct_pdi;
19473 while (real_pdi->has_specification)
19475 auto res = find_partial_die (real_pdi->spec_offset,
19476 real_pdi->spec_is_dwz, cu);
19477 real_pdi = res.pdi;
19481 if (real_pdi->die_parent != NULL)
19484 for (child_pdi = struct_pdi->die_child;
19486 child_pdi = child_pdi->die_sibling)
19488 if (child_pdi->tag == DW_TAG_subprogram
19489 && child_pdi->linkage_name != NULL)
19491 gdb::unique_xmalloc_ptr<char> actual_class_name
19492 (cu->language_defn->class_name_from_physname
19493 (child_pdi->linkage_name));
19494 if (actual_class_name != NULL)
19496 struct objfile *objfile = cu->per_objfile->objfile;
19497 struct_pdi->raw_name = objfile->intern (actual_class_name.get ());
19498 struct_pdi->canonical_name = 1;
19505 /* Return true if a DIE with TAG may have the DW_AT_const_value
19509 can_have_DW_AT_const_value_p (enum dwarf_tag tag)
19513 case DW_TAG_constant:
19514 case DW_TAG_enumerator:
19515 case DW_TAG_formal_parameter:
19516 case DW_TAG_template_value_param:
19517 case DW_TAG_variable:
19525 partial_die_info::fixup (struct dwarf2_cu *cu)
19527 /* Once we've fixed up a die, there's no point in doing so again.
19528 This also avoids a memory leak if we were to call
19529 guess_partial_die_structure_name multiple times. */
19533 /* If we found a reference attribute and the DIE has no name, try
19534 to find a name in the referred to DIE. */
19536 if (raw_name == NULL && has_specification)
19538 struct partial_die_info *spec_die;
19540 auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
19541 spec_die = res.pdi;
19544 spec_die->fixup (cu);
19546 if (spec_die->raw_name)
19548 raw_name = spec_die->raw_name;
19549 canonical_name = spec_die->canonical_name;
19551 /* Copy DW_AT_external attribute if it is set. */
19552 if (spec_die->is_external)
19553 is_external = spec_die->is_external;
19557 if (!has_const_value && has_specification
19558 && can_have_DW_AT_const_value_p (tag))
19560 struct partial_die_info *spec_die;
19562 auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
19563 spec_die = res.pdi;
19566 spec_die->fixup (cu);
19568 if (spec_die->has_const_value)
19570 /* Copy DW_AT_const_value attribute if it is set. */
19571 has_const_value = spec_die->has_const_value;
19575 /* Set default names for some unnamed DIEs. */
19577 if (raw_name == NULL && tag == DW_TAG_namespace)
19579 raw_name = CP_ANONYMOUS_NAMESPACE_STR;
19580 canonical_name = 1;
19583 /* If there is no parent die to provide a namespace, and there are
19584 children, see if we can determine the namespace from their linkage
19586 if (cu->per_cu->lang == language_cplus
19587 && !cu->per_objfile->per_bfd->types.empty ()
19588 && die_parent == NULL
19590 && (tag == DW_TAG_class_type
19591 || tag == DW_TAG_structure_type
19592 || tag == DW_TAG_union_type))
19593 guess_partial_die_structure_name (this, cu);
19595 /* GCC might emit a nameless struct or union that has a linkage
19596 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19597 if (raw_name == NULL
19598 && (tag == DW_TAG_class_type
19599 || tag == DW_TAG_interface_type
19600 || tag == DW_TAG_structure_type
19601 || tag == DW_TAG_union_type)
19602 && linkage_name != NULL)
19604 gdb::unique_xmalloc_ptr<char> demangled
19605 (gdb_demangle (linkage_name, DMGL_TYPES));
19606 if (demangled != nullptr)
19610 /* Strip any leading namespaces/classes, keep only the base name.
19611 DW_AT_name for named DIEs does not contain the prefixes. */
19612 base = strrchr (demangled.get (), ':');
19613 if (base && base > demangled.get () && base[-1] == ':')
19616 base = demangled.get ();
19618 struct objfile *objfile = cu->per_objfile->objfile;
19619 raw_name = objfile->intern (base);
19620 canonical_name = 1;
19627 /* Read the .debug_loclists or .debug_rnglists header (they are the same format)
19628 contents from the given SECTION in the HEADER.
19630 HEADER_OFFSET is the offset of the header in the section. */
19632 read_loclists_rnglists_header (struct loclists_rnglists_header *header,
19633 struct dwarf2_section_info *section,
19634 sect_offset header_offset)
19636 unsigned int bytes_read;
19637 bfd *abfd = section->get_bfd_owner ();
19638 const gdb_byte *info_ptr = section->buffer + to_underlying (header_offset);
19640 header->length = read_initial_length (abfd, info_ptr, &bytes_read);
19641 info_ptr += bytes_read;
19643 header->version = read_2_bytes (abfd, info_ptr);
19646 header->addr_size = read_1_byte (abfd, info_ptr);
19649 header->segment_collector_size = read_1_byte (abfd, info_ptr);
19652 header->offset_entry_count = read_4_bytes (abfd, info_ptr);
19655 /* Return the DW_AT_loclists_base value for the CU. */
19657 lookup_loclist_base (struct dwarf2_cu *cu)
19659 /* For the .dwo unit, the loclist_base points to the first offset following
19660 the header. The header consists of the following entities-
19661 1. Unit Length (4 bytes for 32 bit DWARF format, and 12 bytes for the 64
19663 2. version (2 bytes)
19664 3. address size (1 byte)
19665 4. segment selector size (1 byte)
19666 5. offset entry count (4 bytes)
19667 These sizes are derived as per the DWARFv5 standard. */
19668 if (cu->dwo_unit != nullptr)
19670 if (cu->header.initial_length_size == 4)
19671 return LOCLIST_HEADER_SIZE32;
19672 return LOCLIST_HEADER_SIZE64;
19674 return cu->loclist_base;
19677 /* Given a DW_FORM_loclistx value LOCLIST_INDEX, fetch the offset from the
19678 array of offsets in the .debug_loclists section. */
19681 read_loclist_index (struct dwarf2_cu *cu, ULONGEST loclist_index)
19683 dwarf2_per_objfile *per_objfile = cu->per_objfile;
19684 struct objfile *objfile = per_objfile->objfile;
19685 bfd *abfd = objfile->obfd;
19686 ULONGEST loclist_header_size =
19687 (cu->header.initial_length_size == 4 ? LOCLIST_HEADER_SIZE32
19688 : LOCLIST_HEADER_SIZE64);
19689 ULONGEST loclist_base = lookup_loclist_base (cu);
19691 /* Offset in .debug_loclists of the offset for LOCLIST_INDEX. */
19692 ULONGEST start_offset =
19693 loclist_base + loclist_index * cu->header.offset_size;
19695 /* Get loclists section. */
19696 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
19698 /* Read the loclists section content. */
19699 section->read (objfile);
19700 if (section->buffer == NULL)
19701 error (_("DW_FORM_loclistx used without .debug_loclists "
19702 "section [in module %s]"), objfile_name (objfile));
19704 /* DW_AT_loclists_base points after the .debug_loclists contribution header,
19705 so if loclist_base is smaller than the header size, we have a problem. */
19706 if (loclist_base < loclist_header_size)
19707 error (_("DW_AT_loclists_base is smaller than header size [in module %s]"),
19708 objfile_name (objfile));
19710 /* Read the header of the loclists contribution. */
19711 struct loclists_rnglists_header header;
19712 read_loclists_rnglists_header (&header, section,
19713 (sect_offset) (loclist_base - loclist_header_size));
19715 /* Verify the loclist index is valid. */
19716 if (loclist_index >= header.offset_entry_count)
19717 error (_("DW_FORM_loclistx pointing outside of "
19718 ".debug_loclists offset array [in module %s]"),
19719 objfile_name (objfile));
19721 /* Validate that reading won't go beyond the end of the section. */
19722 if (start_offset + cu->header.offset_size > section->size)
19723 error (_("Reading DW_FORM_loclistx index beyond end of"
19724 ".debug_loclists section [in module %s]"),
19725 objfile_name (objfile));
19727 const gdb_byte *info_ptr = section->buffer + start_offset;
19729 if (cu->header.offset_size == 4)
19730 return (sect_offset) (bfd_get_32 (abfd, info_ptr) + loclist_base);
19732 return (sect_offset) (bfd_get_64 (abfd, info_ptr) + loclist_base);
19735 /* Given a DW_FORM_rnglistx value RNGLIST_INDEX, fetch the offset from the
19736 array of offsets in the .debug_rnglists section. */
19739 read_rnglist_index (struct dwarf2_cu *cu, ULONGEST rnglist_index,
19742 struct dwarf2_per_objfile *dwarf2_per_objfile = cu->per_objfile;
19743 struct objfile *objfile = dwarf2_per_objfile->objfile;
19744 bfd *abfd = objfile->obfd;
19745 ULONGEST rnglist_header_size =
19746 (cu->header.initial_length_size == 4 ? RNGLIST_HEADER_SIZE32
19747 : RNGLIST_HEADER_SIZE64);
19749 /* When reading a DW_FORM_rnglistx from a DWO, we read from the DWO's
19750 .debug_rnglists.dwo section. The rnglists base given in the skeleton
19752 ULONGEST rnglist_base =
19753 (cu->dwo_unit != nullptr) ? rnglist_header_size : cu->rnglists_base;
19755 /* Offset in .debug_rnglists of the offset for RNGLIST_INDEX. */
19756 ULONGEST start_offset =
19757 rnglist_base + rnglist_index * cu->header.offset_size;
19759 /* Get rnglists section. */
19760 struct dwarf2_section_info *section = cu_debug_rnglists_section (cu, tag);
19762 /* Read the rnglists section content. */
19763 section->read (objfile);
19764 if (section->buffer == nullptr)
19765 error (_("DW_FORM_rnglistx used without .debug_rnglists section "
19767 objfile_name (objfile));
19769 /* DW_AT_rnglists_base points after the .debug_rnglists contribution header,
19770 so if rnglist_base is smaller than the header size, we have a problem. */
19771 if (rnglist_base < rnglist_header_size)
19772 error (_("DW_AT_rnglists_base is smaller than header size [in module %s]"),
19773 objfile_name (objfile));
19775 /* Read the header of the rnglists contribution. */
19776 struct loclists_rnglists_header header;
19777 read_loclists_rnglists_header (&header, section,
19778 (sect_offset) (rnglist_base - rnglist_header_size));
19780 /* Verify the rnglist index is valid. */
19781 if (rnglist_index >= header.offset_entry_count)
19782 error (_("DW_FORM_rnglistx index pointing outside of "
19783 ".debug_rnglists offset array [in module %s]"),
19784 objfile_name (objfile));
19786 /* Validate that reading won't go beyond the end of the section. */
19787 if (start_offset + cu->header.offset_size > section->size)
19788 error (_("Reading DW_FORM_rnglistx index beyond end of"
19789 ".debug_rnglists section [in module %s]"),
19790 objfile_name (objfile));
19792 const gdb_byte *info_ptr = section->buffer + start_offset;
19794 if (cu->header.offset_size == 4)
19795 return (sect_offset) (read_4_bytes (abfd, info_ptr) + rnglist_base);
19797 return (sect_offset) (read_8_bytes (abfd, info_ptr) + rnglist_base);
19800 /* Process the attributes that had to be skipped in the first round. These
19801 attributes are the ones that need str_offsets_base or addr_base attributes.
19802 They could not have been processed in the first round, because at the time
19803 the values of str_offsets_base or addr_base may not have been known. */
19805 read_attribute_reprocess (const struct die_reader_specs *reader,
19806 struct attribute *attr, dwarf_tag tag)
19808 struct dwarf2_cu *cu = reader->cu;
19809 switch (attr->form)
19811 case DW_FORM_addrx:
19812 case DW_FORM_GNU_addr_index:
19813 attr->set_address (read_addr_index (cu,
19814 attr->as_unsigned_reprocess ()));
19816 case DW_FORM_loclistx:
19818 sect_offset loclists_sect_off
19819 = read_loclist_index (cu, attr->as_unsigned_reprocess ());
19821 attr->set_unsigned (to_underlying (loclists_sect_off));
19824 case DW_FORM_rnglistx:
19826 sect_offset rnglists_sect_off
19827 = read_rnglist_index (cu, attr->as_unsigned_reprocess (), tag);
19829 attr->set_unsigned (to_underlying (rnglists_sect_off));
19833 case DW_FORM_strx1:
19834 case DW_FORM_strx2:
19835 case DW_FORM_strx3:
19836 case DW_FORM_strx4:
19837 case DW_FORM_GNU_str_index:
19839 unsigned int str_index = attr->as_unsigned_reprocess ();
19840 gdb_assert (!attr->canonical_string_p ());
19841 if (reader->dwo_file != NULL)
19842 attr->set_string_noncanonical (read_dwo_str_index (reader,
19845 attr->set_string_noncanonical (read_stub_str_index (cu,
19850 gdb_assert_not_reached (_("Unexpected DWARF form."));
19854 /* Read an attribute value described by an attribute form. */
19856 static const gdb_byte *
19857 read_attribute_value (const struct die_reader_specs *reader,
19858 struct attribute *attr, unsigned form,
19859 LONGEST implicit_const, const gdb_byte *info_ptr)
19861 struct dwarf2_cu *cu = reader->cu;
19862 dwarf2_per_objfile *per_objfile = cu->per_objfile;
19863 struct objfile *objfile = per_objfile->objfile;
19864 bfd *abfd = reader->abfd;
19865 struct comp_unit_head *cu_header = &cu->header;
19866 unsigned int bytes_read;
19867 struct dwarf_block *blk;
19869 attr->form = (enum dwarf_form) form;
19872 case DW_FORM_ref_addr:
19873 if (cu_header->version == 2)
19874 attr->set_unsigned (cu_header->read_address (abfd, info_ptr,
19877 attr->set_unsigned (cu_header->read_offset (abfd, info_ptr,
19879 info_ptr += bytes_read;
19881 case DW_FORM_GNU_ref_alt:
19882 attr->set_unsigned (cu_header->read_offset (abfd, info_ptr,
19884 info_ptr += bytes_read;
19888 struct gdbarch *gdbarch = objfile->arch ();
19889 CORE_ADDR addr = cu_header->read_address (abfd, info_ptr, &bytes_read);
19890 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr);
19891 attr->set_address (addr);
19892 info_ptr += bytes_read;
19895 case DW_FORM_block2:
19896 blk = dwarf_alloc_block (cu);
19897 blk->size = read_2_bytes (abfd, info_ptr);
19899 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19900 info_ptr += blk->size;
19901 attr->set_block (blk);
19903 case DW_FORM_block4:
19904 blk = dwarf_alloc_block (cu);
19905 blk->size = read_4_bytes (abfd, info_ptr);
19907 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19908 info_ptr += blk->size;
19909 attr->set_block (blk);
19911 case DW_FORM_data2:
19912 attr->set_unsigned (read_2_bytes (abfd, info_ptr));
19915 case DW_FORM_data4:
19916 attr->set_unsigned (read_4_bytes (abfd, info_ptr));
19919 case DW_FORM_data8:
19920 attr->set_unsigned (read_8_bytes (abfd, info_ptr));
19923 case DW_FORM_data16:
19924 blk = dwarf_alloc_block (cu);
19926 blk->data = read_n_bytes (abfd, info_ptr, 16);
19928 attr->set_block (blk);
19930 case DW_FORM_sec_offset:
19931 attr->set_unsigned (cu_header->read_offset (abfd, info_ptr,
19933 info_ptr += bytes_read;
19935 case DW_FORM_loclistx:
19937 attr->set_unsigned_reprocess (read_unsigned_leb128 (abfd, info_ptr,
19939 info_ptr += bytes_read;
19942 case DW_FORM_string:
19943 attr->set_string_noncanonical (read_direct_string (abfd, info_ptr,
19945 info_ptr += bytes_read;
19948 if (!cu->per_cu->is_dwz)
19950 attr->set_string_noncanonical
19951 (read_indirect_string (per_objfile,
19952 abfd, info_ptr, cu_header,
19954 info_ptr += bytes_read;
19958 case DW_FORM_line_strp:
19959 if (!cu->per_cu->is_dwz)
19961 attr->set_string_noncanonical
19962 (per_objfile->read_line_string (info_ptr, cu_header,
19964 info_ptr += bytes_read;
19968 case DW_FORM_GNU_strp_alt:
19970 dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd, true);
19971 LONGEST str_offset = cu_header->read_offset (abfd, info_ptr,
19974 attr->set_string_noncanonical
19975 (dwz->read_string (objfile, str_offset));
19976 info_ptr += bytes_read;
19979 case DW_FORM_exprloc:
19980 case DW_FORM_block:
19981 blk = dwarf_alloc_block (cu);
19982 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19983 info_ptr += bytes_read;
19984 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19985 info_ptr += blk->size;
19986 attr->set_block (blk);
19988 case DW_FORM_block1:
19989 blk = dwarf_alloc_block (cu);
19990 blk->size = read_1_byte (abfd, info_ptr);
19992 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19993 info_ptr += blk->size;
19994 attr->set_block (blk);
19996 case DW_FORM_data1:
19998 attr->set_unsigned (read_1_byte (abfd, info_ptr));
20001 case DW_FORM_flag_present:
20002 attr->set_unsigned (1);
20004 case DW_FORM_sdata:
20005 attr->set_signed (read_signed_leb128 (abfd, info_ptr, &bytes_read));
20006 info_ptr += bytes_read;
20008 case DW_FORM_rnglistx:
20010 attr->set_unsigned_reprocess (read_unsigned_leb128 (abfd, info_ptr,
20012 info_ptr += bytes_read;
20015 case DW_FORM_udata:
20016 attr->set_unsigned (read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
20017 info_ptr += bytes_read;
20020 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20021 + read_1_byte (abfd, info_ptr)));
20025 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20026 + read_2_bytes (abfd, info_ptr)));
20030 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20031 + read_4_bytes (abfd, info_ptr)));
20035 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20036 + read_8_bytes (abfd, info_ptr)));
20039 case DW_FORM_ref_sig8:
20040 attr->set_signature (read_8_bytes (abfd, info_ptr));
20043 case DW_FORM_ref_udata:
20044 attr->set_unsigned ((to_underlying (cu_header->sect_off)
20045 + read_unsigned_leb128 (abfd, info_ptr,
20047 info_ptr += bytes_read;
20049 case DW_FORM_indirect:
20050 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
20051 info_ptr += bytes_read;
20052 if (form == DW_FORM_implicit_const)
20054 implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
20055 info_ptr += bytes_read;
20057 info_ptr = read_attribute_value (reader, attr, form, implicit_const,
20060 case DW_FORM_implicit_const:
20061 attr->set_signed (implicit_const);
20063 case DW_FORM_addrx:
20064 case DW_FORM_GNU_addr_index:
20065 attr->set_unsigned_reprocess (read_unsigned_leb128 (abfd, info_ptr,
20067 info_ptr += bytes_read;
20070 case DW_FORM_strx1:
20071 case DW_FORM_strx2:
20072 case DW_FORM_strx3:
20073 case DW_FORM_strx4:
20074 case DW_FORM_GNU_str_index:
20076 ULONGEST str_index;
20077 if (form == DW_FORM_strx1)
20079 str_index = read_1_byte (abfd, info_ptr);
20082 else if (form == DW_FORM_strx2)
20084 str_index = read_2_bytes (abfd, info_ptr);
20087 else if (form == DW_FORM_strx3)
20089 str_index = read_3_bytes (abfd, info_ptr);
20092 else if (form == DW_FORM_strx4)
20094 str_index = read_4_bytes (abfd, info_ptr);
20099 str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
20100 info_ptr += bytes_read;
20102 attr->set_unsigned_reprocess (str_index);
20106 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
20107 dwarf_form_name (form),
20108 bfd_get_filename (abfd));
20112 if (cu->per_cu->is_dwz && attr->form_is_ref ())
20113 attr->form = DW_FORM_GNU_ref_alt;
20115 /* We have seen instances where the compiler tried to emit a byte
20116 size attribute of -1 which ended up being encoded as an unsigned
20117 0xffffffff. Although 0xffffffff is technically a valid size value,
20118 an object of this size seems pretty unlikely so we can relatively
20119 safely treat these cases as if the size attribute was invalid and
20120 treat them as zero by default. */
20121 if (attr->name == DW_AT_byte_size
20122 && form == DW_FORM_data4
20123 && attr->as_unsigned () >= 0xffffffff)
20126 (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
20127 hex_string (attr->as_unsigned ()));
20128 attr->set_unsigned (0);
20134 /* Read an attribute described by an abbreviated attribute. */
20136 static const gdb_byte *
20137 read_attribute (const struct die_reader_specs *reader,
20138 struct attribute *attr, const struct attr_abbrev *abbrev,
20139 const gdb_byte *info_ptr)
20141 attr->name = abbrev->name;
20142 attr->string_is_canonical = 0;
20143 attr->requires_reprocessing = 0;
20144 return read_attribute_value (reader, attr, abbrev->form,
20145 abbrev->implicit_const, info_ptr);
20148 /* Return pointer to string at .debug_str offset STR_OFFSET. */
20150 static const char *
20151 read_indirect_string_at_offset (dwarf2_per_objfile *per_objfile,
20152 LONGEST str_offset)
20154 return per_objfile->per_bfd->str.read_string (per_objfile->objfile,
20155 str_offset, "DW_FORM_strp");
20158 /* Return pointer to string at .debug_str offset as read from BUF.
20159 BUF is assumed to be in a compilation unit described by CU_HEADER.
20160 Return *BYTES_READ_PTR count of bytes read from BUF. */
20162 static const char *
20163 read_indirect_string (dwarf2_per_objfile *per_objfile, bfd *abfd,
20164 const gdb_byte *buf,
20165 const struct comp_unit_head *cu_header,
20166 unsigned int *bytes_read_ptr)
20168 LONGEST str_offset = cu_header->read_offset (abfd, buf, bytes_read_ptr);
20170 return read_indirect_string_at_offset (per_objfile, str_offset);
20176 dwarf2_per_objfile::read_line_string (const gdb_byte *buf,
20177 const struct comp_unit_head *cu_header,
20178 unsigned int *bytes_read_ptr)
20180 bfd *abfd = objfile->obfd;
20181 LONGEST str_offset = cu_header->read_offset (abfd, buf, bytes_read_ptr);
20183 return per_bfd->line_str.read_string (objfile, str_offset, "DW_FORM_line_strp");
20186 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
20187 ADDR_BASE is the DW_AT_addr_base (DW_AT_GNU_addr_base) attribute or zero.
20188 ADDR_SIZE is the size of addresses from the CU header. */
20191 read_addr_index_1 (dwarf2_per_objfile *per_objfile, unsigned int addr_index,
20192 gdb::optional<ULONGEST> addr_base, int addr_size)
20194 struct objfile *objfile = per_objfile->objfile;
20195 bfd *abfd = objfile->obfd;
20196 const gdb_byte *info_ptr;
20197 ULONGEST addr_base_or_zero = addr_base.has_value () ? *addr_base : 0;
20199 per_objfile->per_bfd->addr.read (objfile);
20200 if (per_objfile->per_bfd->addr.buffer == NULL)
20201 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
20202 objfile_name (objfile));
20203 if (addr_base_or_zero + addr_index * addr_size
20204 >= per_objfile->per_bfd->addr.size)
20205 error (_("DW_FORM_addr_index pointing outside of "
20206 ".debug_addr section [in module %s]"),
20207 objfile_name (objfile));
20208 info_ptr = (per_objfile->per_bfd->addr.buffer + addr_base_or_zero
20209 + addr_index * addr_size);
20210 if (addr_size == 4)
20211 return bfd_get_32 (abfd, info_ptr);
20213 return bfd_get_64 (abfd, info_ptr);
20216 /* Given index ADDR_INDEX in .debug_addr, fetch the value. */
20219 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
20221 return read_addr_index_1 (cu->per_objfile, addr_index,
20222 cu->addr_base, cu->header.addr_size);
20225 /* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
20228 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
20229 unsigned int *bytes_read)
20231 bfd *abfd = cu->per_objfile->objfile->obfd;
20232 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
20234 return read_addr_index (cu, addr_index);
20240 dwarf2_read_addr_index (dwarf2_per_cu_data *per_cu,
20241 dwarf2_per_objfile *per_objfile,
20242 unsigned int addr_index)
20244 struct dwarf2_cu *cu = per_objfile->get_cu (per_cu);
20245 gdb::optional<ULONGEST> addr_base;
20248 /* We need addr_base and addr_size.
20249 If we don't have PER_CU->cu, we have to get it.
20250 Nasty, but the alternative is storing the needed info in PER_CU,
20251 which at this point doesn't seem justified: it's not clear how frequently
20252 it would get used and it would increase the size of every PER_CU.
20253 Entry points like dwarf2_per_cu_addr_size do a similar thing
20254 so we're not in uncharted territory here.
20255 Alas we need to be a bit more complicated as addr_base is contained
20258 We don't need to read the entire CU(/TU).
20259 We just need the header and top level die.
20261 IWBN to use the aging mechanism to let us lazily later discard the CU.
20262 For now we skip this optimization. */
20266 addr_base = cu->addr_base;
20267 addr_size = cu->header.addr_size;
20271 cutu_reader reader (per_cu, per_objfile, nullptr, nullptr, false);
20272 addr_base = reader.cu->addr_base;
20273 addr_size = reader.cu->header.addr_size;
20276 return read_addr_index_1 (per_objfile, addr_index, addr_base, addr_size);
20279 /* Given a DW_FORM_GNU_str_index value STR_INDEX, fetch the string.
20280 STR_SECTION, STR_OFFSETS_SECTION can be from a Fission stub or a
20283 static const char *
20284 read_str_index (struct dwarf2_cu *cu,
20285 struct dwarf2_section_info *str_section,
20286 struct dwarf2_section_info *str_offsets_section,
20287 ULONGEST str_offsets_base, ULONGEST str_index)
20289 dwarf2_per_objfile *per_objfile = cu->per_objfile;
20290 struct objfile *objfile = per_objfile->objfile;
20291 const char *objf_name = objfile_name (objfile);
20292 bfd *abfd = objfile->obfd;
20293 const gdb_byte *info_ptr;
20294 ULONGEST str_offset;
20295 static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
20297 str_section->read (objfile);
20298 str_offsets_section->read (objfile);
20299 if (str_section->buffer == NULL)
20300 error (_("%s used without %s section"
20301 " in CU at offset %s [in module %s]"),
20302 form_name, str_section->get_name (),
20303 sect_offset_str (cu->header.sect_off), objf_name);
20304 if (str_offsets_section->buffer == NULL)
20305 error (_("%s used without %s section"
20306 " in CU at offset %s [in module %s]"),
20307 form_name, str_section->get_name (),
20308 sect_offset_str (cu->header.sect_off), objf_name);
20309 info_ptr = (str_offsets_section->buffer
20311 + str_index * cu->header.offset_size);
20312 if (cu->header.offset_size == 4)
20313 str_offset = bfd_get_32 (abfd, info_ptr);
20315 str_offset = bfd_get_64 (abfd, info_ptr);
20316 if (str_offset >= str_section->size)
20317 error (_("Offset from %s pointing outside of"
20318 " .debug_str.dwo section in CU at offset %s [in module %s]"),
20319 form_name, sect_offset_str (cu->header.sect_off), objf_name);
20320 return (const char *) (str_section->buffer + str_offset);
20323 /* Given a DW_FORM_GNU_str_index from a DWO file, fetch the string. */
20325 static const char *
20326 read_dwo_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
20328 ULONGEST str_offsets_base = reader->cu->header.version >= 5
20329 ? reader->cu->header.addr_size : 0;
20330 return read_str_index (reader->cu,
20331 &reader->dwo_file->sections.str,
20332 &reader->dwo_file->sections.str_offsets,
20333 str_offsets_base, str_index);
20336 /* Given a DW_FORM_GNU_str_index from a Fission stub, fetch the string. */
20338 static const char *
20339 read_stub_str_index (struct dwarf2_cu *cu, ULONGEST str_index)
20341 struct objfile *objfile = cu->per_objfile->objfile;
20342 const char *objf_name = objfile_name (objfile);
20343 static const char form_name[] = "DW_FORM_GNU_str_index";
20344 static const char str_offsets_attr_name[] = "DW_AT_str_offsets";
20346 if (!cu->str_offsets_base.has_value ())
20347 error (_("%s used in Fission stub without %s"
20348 " in CU at offset 0x%lx [in module %s]"),
20349 form_name, str_offsets_attr_name,
20350 (long) cu->header.offset_size, objf_name);
20352 return read_str_index (cu,
20353 &cu->per_objfile->per_bfd->str,
20354 &cu->per_objfile->per_bfd->str_offsets,
20355 *cu->str_offsets_base, str_index);
20358 /* Return the length of an LEB128 number in BUF. */
20361 leb128_size (const gdb_byte *buf)
20363 const gdb_byte *begin = buf;
20369 if ((byte & 128) == 0)
20370 return buf - begin;
20374 static enum language
20375 dwarf_lang_to_enum_language (unsigned int lang)
20377 enum language language;
20386 language = language_c;
20389 case DW_LANG_C_plus_plus:
20390 case DW_LANG_C_plus_plus_11:
20391 case DW_LANG_C_plus_plus_14:
20392 language = language_cplus;
20395 language = language_d;
20397 case DW_LANG_Fortran77:
20398 case DW_LANG_Fortran90:
20399 case DW_LANG_Fortran95:
20400 case DW_LANG_Fortran03:
20401 case DW_LANG_Fortran08:
20402 language = language_fortran;
20405 language = language_go;
20407 case DW_LANG_Mips_Assembler:
20408 language = language_asm;
20410 case DW_LANG_Ada83:
20411 case DW_LANG_Ada95:
20412 language = language_ada;
20414 case DW_LANG_Modula2:
20415 language = language_m2;
20417 case DW_LANG_Pascal83:
20418 language = language_pascal;
20421 language = language_objc;
20424 case DW_LANG_Rust_old:
20425 language = language_rust;
20427 case DW_LANG_OpenCL:
20428 language = language_opencl;
20430 case DW_LANG_Cobol74:
20431 case DW_LANG_Cobol85:
20433 language = language_minimal;
20440 /* Return the named attribute or NULL if not there. */
20442 static struct attribute *
20443 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20448 struct attribute *spec = NULL;
20450 for (i = 0; i < die->num_attrs; ++i)
20452 if (die->attrs[i].name == name)
20453 return &die->attrs[i];
20454 if (die->attrs[i].name == DW_AT_specification
20455 || die->attrs[i].name == DW_AT_abstract_origin)
20456 spec = &die->attrs[i];
20462 die = follow_die_ref (die, spec, &cu);
20468 /* Return the string associated with a string-typed attribute, or NULL if it
20469 is either not found or is of an incorrect type. */
20471 static const char *
20472 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20474 struct attribute *attr;
20475 const char *str = NULL;
20477 attr = dwarf2_attr (die, name, cu);
20481 str = attr->as_string ();
20482 if (str == nullptr)
20483 complaint (_("string type expected for attribute %s for "
20484 "DIE at %s in module %s"),
20485 dwarf_attr_name (name), sect_offset_str (die->sect_off),
20486 objfile_name (cu->per_objfile->objfile));
20492 /* Return the dwo name or NULL if not present. If present, it is in either
20493 DW_AT_GNU_dwo_name or DW_AT_dwo_name attribute. */
20494 static const char *
20495 dwarf2_dwo_name (struct die_info *die, struct dwarf2_cu *cu)
20497 const char *dwo_name = dwarf2_string_attr (die, DW_AT_GNU_dwo_name, cu);
20498 if (dwo_name == nullptr)
20499 dwo_name = dwarf2_string_attr (die, DW_AT_dwo_name, cu);
20503 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20504 and holds a non-zero value. This function should only be used for
20505 DW_FORM_flag or DW_FORM_flag_present attributes. */
20508 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20510 struct attribute *attr = dwarf2_attr (die, name, cu);
20512 return attr != nullptr && attr->as_boolean ();
20516 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20518 /* A DIE is a declaration if it has a DW_AT_declaration attribute
20519 which value is non-zero. However, we have to be careful with
20520 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20521 (via dwarf2_flag_true_p) follows this attribute. So we may
20522 end up accidently finding a declaration attribute that belongs
20523 to a different DIE referenced by the specification attribute,
20524 even though the given DIE does not have a declaration attribute. */
20525 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20526 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20529 /* Return the die giving the specification for DIE, if there is
20530 one. *SPEC_CU is the CU containing DIE on input, and the CU
20531 containing the return value on output. If there is no
20532 specification, but there is an abstract origin, that is
20535 static struct die_info *
20536 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20538 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20541 if (spec_attr == NULL)
20542 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20544 if (spec_attr == NULL)
20547 return follow_die_ref (die, spec_attr, spec_cu);
20550 /* A convenience function to find the proper .debug_line section for a CU. */
20552 static struct dwarf2_section_info *
20553 get_debug_line_section (struct dwarf2_cu *cu)
20555 struct dwarf2_section_info *section;
20556 dwarf2_per_objfile *per_objfile = cu->per_objfile;
20558 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20560 if (cu->dwo_unit && cu->per_cu->is_debug_types)
20561 section = &cu->dwo_unit->dwo_file->sections.line;
20562 else if (cu->per_cu->is_dwz)
20564 dwz_file *dwz = dwarf2_get_dwz_file (per_objfile->per_bfd, true);
20566 section = &dwz->line;
20569 section = &per_objfile->per_bfd->line;
20574 /* Read the statement program header starting at OFFSET in
20575 .debug_line, or .debug_line.dwo. Return a pointer
20576 to a struct line_header, allocated using xmalloc.
20577 Returns NULL if there is a problem reading the header, e.g., if it
20578 has a version we don't understand.
20580 NOTE: the strings in the include directory and file name tables of
20581 the returned object point into the dwarf line section buffer,
20582 and must not be freed. */
20584 static line_header_up
20585 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20587 struct dwarf2_section_info *section;
20588 dwarf2_per_objfile *per_objfile = cu->per_objfile;
20590 section = get_debug_line_section (cu);
20591 section->read (per_objfile->objfile);
20592 if (section->buffer == NULL)
20594 if (cu->dwo_unit && cu->per_cu->is_debug_types)
20595 complaint (_("missing .debug_line.dwo section"));
20597 complaint (_("missing .debug_line section"));
20601 return dwarf_decode_line_header (sect_off, cu->per_cu->is_dwz,
20602 per_objfile, section, &cu->header);
20605 /* Subroutine of dwarf_decode_lines to simplify it.
20606 Return the file name for the given file_entry.
20607 CU_INFO describes the CU's DW_AT_name and DW_AT_comp_dir.
20608 If space for the result is malloc'd, *NAME_HOLDER will be set.
20609 Returns NULL if FILE_INDEX should be ignored, i.e., it is
20610 equivalent to CU_INFO. */
20612 static const char *
20613 compute_include_file_name (const struct line_header *lh, const file_entry &fe,
20614 const file_and_directory &cu_info,
20615 gdb::unique_xmalloc_ptr<char> *name_holder)
20617 const char *include_name = fe.name;
20618 const char *include_name_to_compare = include_name;
20620 const char *dir_name = fe.include_dir (lh);
20622 gdb::unique_xmalloc_ptr<char> hold_compare;
20623 if (!IS_ABSOLUTE_PATH (include_name)
20624 && (dir_name != NULL || cu_info.comp_dir != NULL))
20626 /* Avoid creating a duplicate name for CU_INFO.
20627 We do this by comparing INCLUDE_NAME and CU_INFO.
20628 Before we do the comparison, however, we need to account
20629 for DIR_NAME and COMP_DIR.
20630 First prepend dir_name (if non-NULL). If we still don't
20631 have an absolute path prepend comp_dir (if non-NULL).
20632 However, the directory we record in the include-file's
20633 psymtab does not contain COMP_DIR (to match the
20634 corresponding symtab(s)).
20639 bash$ gcc -g ./hello.c
20640 include_name = "hello.c"
20642 DW_AT_comp_dir = comp_dir = "/tmp"
20643 DW_AT_name = "./hello.c"
20647 if (dir_name != NULL)
20649 name_holder->reset (concat (dir_name, SLASH_STRING,
20650 include_name, (char *) NULL));
20651 include_name = name_holder->get ();
20652 include_name_to_compare = include_name;
20654 if (!IS_ABSOLUTE_PATH (include_name) && cu_info.comp_dir != nullptr)
20656 hold_compare.reset (concat (cu_info.comp_dir, SLASH_STRING,
20657 include_name, (char *) NULL));
20658 include_name_to_compare = hold_compare.get ();
20662 gdb::unique_xmalloc_ptr<char> copied_name;
20663 const char *cu_filename = cu_info.name;
20664 if (!IS_ABSOLUTE_PATH (cu_filename) && cu_info.comp_dir != nullptr)
20666 copied_name.reset (concat (cu_info.comp_dir, SLASH_STRING,
20667 cu_filename, (char *) NULL));
20668 cu_filename = copied_name.get ();
20671 if (FILENAME_CMP (include_name_to_compare, cu_filename) == 0)
20673 return include_name;
20676 /* State machine to track the state of the line number program. */
20678 class lnp_state_machine
20681 /* Initialize a machine state for the start of a line number
20683 lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20684 bool record_lines_p);
20686 file_entry *current_file ()
20688 /* lh->file_names is 0-based, but the file name numbers in the
20689 statement program are 1-based. */
20690 return m_line_header->file_name_at (m_file);
20693 /* Record the line in the state machine. END_SEQUENCE is true if
20694 we're processing the end of a sequence. */
20695 void record_line (bool end_sequence);
20697 /* Check ADDRESS is -1, or zero and less than UNRELOCATED_LOWPC, and if true
20698 nop-out rest of the lines in this sequence. */
20699 void check_line_address (struct dwarf2_cu *cu,
20700 const gdb_byte *line_ptr,
20701 CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20703 void handle_set_discriminator (unsigned int discriminator)
20705 m_discriminator = discriminator;
20706 m_line_has_non_zero_discriminator |= discriminator != 0;
20709 /* Handle DW_LNE_set_address. */
20710 void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20713 address += baseaddr;
20714 m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20717 /* Handle DW_LNS_advance_pc. */
20718 void handle_advance_pc (CORE_ADDR adjust);
20720 /* Handle a special opcode. */
20721 void handle_special_opcode (unsigned char op_code);
20723 /* Handle DW_LNS_advance_line. */
20724 void handle_advance_line (int line_delta)
20726 advance_line (line_delta);
20729 /* Handle DW_LNS_set_file. */
20730 void handle_set_file (file_name_index file);
20732 /* Handle DW_LNS_negate_stmt. */
20733 void handle_negate_stmt ()
20735 m_is_stmt = !m_is_stmt;
20738 /* Handle DW_LNS_const_add_pc. */
20739 void handle_const_add_pc ();
20741 /* Handle DW_LNS_fixed_advance_pc. */
20742 void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20744 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20748 /* Handle DW_LNS_copy. */
20749 void handle_copy ()
20751 record_line (false);
20752 m_discriminator = 0;
20755 /* Handle DW_LNE_end_sequence. */
20756 void handle_end_sequence ()
20758 m_currently_recording_lines = true;
20762 /* Advance the line by LINE_DELTA. */
20763 void advance_line (int line_delta)
20765 m_line += line_delta;
20767 if (line_delta != 0)
20768 m_line_has_non_zero_discriminator = m_discriminator != 0;
20771 struct dwarf2_cu *m_cu;
20773 gdbarch *m_gdbarch;
20775 /* True if we're recording lines.
20776 Otherwise we're building partial symtabs and are just interested in
20777 finding include files mentioned by the line number program. */
20778 bool m_record_lines_p;
20780 /* The line number header. */
20781 line_header *m_line_header;
20783 /* These are part of the standard DWARF line number state machine,
20784 and initialized according to the DWARF spec. */
20786 unsigned char m_op_index = 0;
20787 /* The line table index of the current file. */
20788 file_name_index m_file = 1;
20789 unsigned int m_line = 1;
20791 /* These are initialized in the constructor. */
20793 CORE_ADDR m_address;
20795 unsigned int m_discriminator;
20797 /* Additional bits of state we need to track. */
20799 /* The last file that we called dwarf2_start_subfile for.
20800 This is only used for TLLs. */
20801 unsigned int m_last_file = 0;
20802 /* The last file a line number was recorded for. */
20803 struct subfile *m_last_subfile = NULL;
20805 /* The address of the last line entry. */
20806 CORE_ADDR m_last_address;
20808 /* Set to true when a previous line at the same address (using
20809 m_last_address) had m_is_stmt true. This is reset to false when a
20810 line entry at a new address (m_address different to m_last_address) is
20812 bool m_stmt_at_address = false;
20814 /* When true, record the lines we decode. */
20815 bool m_currently_recording_lines = false;
20817 /* The last line number that was recorded, used to coalesce
20818 consecutive entries for the same line. This can happen, for
20819 example, when discriminators are present. PR 17276. */
20820 unsigned int m_last_line = 0;
20821 bool m_line_has_non_zero_discriminator = false;
20825 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20827 CORE_ADDR addr_adj = (((m_op_index + adjust)
20828 / m_line_header->maximum_ops_per_instruction)
20829 * m_line_header->minimum_instruction_length);
20830 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20831 m_op_index = ((m_op_index + adjust)
20832 % m_line_header->maximum_ops_per_instruction);
20836 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20838 unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20839 unsigned char adj_opcode_d = adj_opcode / m_line_header->line_range;
20840 unsigned char adj_opcode_r = adj_opcode % m_line_header->line_range;
20841 CORE_ADDR addr_adj = (((m_op_index + adj_opcode_d)
20842 / m_line_header->maximum_ops_per_instruction)
20843 * m_line_header->minimum_instruction_length);
20844 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20845 m_op_index = ((m_op_index + adj_opcode_d)
20846 % m_line_header->maximum_ops_per_instruction);
20848 int line_delta = m_line_header->line_base + adj_opcode_r;
20849 advance_line (line_delta);
20850 record_line (false);
20851 m_discriminator = 0;
20855 lnp_state_machine::handle_set_file (file_name_index file)
20859 const file_entry *fe = current_file ();
20861 dwarf2_debug_line_missing_file_complaint ();
20862 else if (m_record_lines_p)
20864 const char *dir = fe->include_dir (m_line_header);
20866 m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20867 m_line_has_non_zero_discriminator = m_discriminator != 0;
20868 dwarf2_start_subfile (m_cu, fe->name, dir);
20873 lnp_state_machine::handle_const_add_pc ()
20876 = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20879 = (((m_op_index + adjust)
20880 / m_line_header->maximum_ops_per_instruction)
20881 * m_line_header->minimum_instruction_length);
20883 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20884 m_op_index = ((m_op_index + adjust)
20885 % m_line_header->maximum_ops_per_instruction);
20888 /* Return non-zero if we should add LINE to the line number table.
20889 LINE is the line to add, LAST_LINE is the last line that was added,
20890 LAST_SUBFILE is the subfile for LAST_LINE.
20891 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20892 had a non-zero discriminator.
20894 We have to be careful in the presence of discriminators.
20895 E.g., for this line:
20897 for (i = 0; i < 100000; i++);
20899 clang can emit four line number entries for that one line,
20900 each with a different discriminator.
20901 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20903 However, we want gdb to coalesce all four entries into one.
20904 Otherwise the user could stepi into the middle of the line and
20905 gdb would get confused about whether the pc really was in the
20906 middle of the line.
20908 Things are further complicated by the fact that two consecutive
20909 line number entries for the same line is a heuristic used by gcc
20910 to denote the end of the prologue. So we can't just discard duplicate
20911 entries, we have to be selective about it. The heuristic we use is
20912 that we only collapse consecutive entries for the same line if at least
20913 one of those entries has a non-zero discriminator. PR 17276.
20915 Note: Addresses in the line number state machine can never go backwards
20916 within one sequence, thus this coalescing is ok. */
20919 dwarf_record_line_p (struct dwarf2_cu *cu,
20920 unsigned int line, unsigned int last_line,
20921 int line_has_non_zero_discriminator,
20922 struct subfile *last_subfile)
20924 if (cu->get_builder ()->get_current_subfile () != last_subfile)
20926 if (line != last_line)
20928 /* Same line for the same file that we've seen already.
20929 As a last check, for pr 17276, only record the line if the line
20930 has never had a non-zero discriminator. */
20931 if (!line_has_non_zero_discriminator)
20936 /* Use the CU's builder to record line number LINE beginning at
20937 address ADDRESS in the line table of subfile SUBFILE. */
20940 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20941 unsigned int line, CORE_ADDR address, bool is_stmt,
20942 struct dwarf2_cu *cu)
20944 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20946 if (dwarf_line_debug)
20948 fprintf_unfiltered (gdb_stdlog,
20949 "Recording line %u, file %s, address %s\n",
20950 line, lbasename (subfile->name),
20951 paddress (gdbarch, address));
20955 cu->get_builder ()->record_line (subfile, line, addr, is_stmt);
20958 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20959 Mark the end of a set of line number records.
20960 The arguments are the same as for dwarf_record_line_1.
20961 If SUBFILE is NULL the request is ignored. */
20964 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20965 CORE_ADDR address, struct dwarf2_cu *cu)
20967 if (subfile == NULL)
20970 if (dwarf_line_debug)
20972 fprintf_unfiltered (gdb_stdlog,
20973 "Finishing current line, file %s, address %s\n",
20974 lbasename (subfile->name),
20975 paddress (gdbarch, address));
20978 dwarf_record_line_1 (gdbarch, subfile, 0, address, true, cu);
20982 lnp_state_machine::record_line (bool end_sequence)
20984 if (dwarf_line_debug)
20986 fprintf_unfiltered (gdb_stdlog,
20987 "Processing actual line %u: file %u,"
20988 " address %s, is_stmt %u, discrim %u%s\n",
20990 paddress (m_gdbarch, m_address),
20991 m_is_stmt, m_discriminator,
20992 (end_sequence ? "\t(end sequence)" : ""));
20995 file_entry *fe = current_file ();
20998 dwarf2_debug_line_missing_file_complaint ();
20999 /* For now we ignore lines not starting on an instruction boundary.
21000 But not when processing end_sequence for compatibility with the
21001 previous version of the code. */
21002 else if (m_op_index == 0 || end_sequence)
21004 fe->included_p = true;
21005 if (m_record_lines_p)
21007 /* When we switch files we insert an end maker in the first file,
21008 switch to the second file and add a new line entry. The
21009 problem is that the end marker inserted in the first file will
21010 discard any previous line entries at the same address. If the
21011 line entries in the first file are marked as is-stmt, while
21012 the new line in the second file is non-stmt, then this means
21013 the end marker will discard is-stmt lines so we can have a
21014 non-stmt line. This means that there are less addresses at
21015 which the user can insert a breakpoint.
21017 To improve this we track the last address in m_last_address,
21018 and whether we have seen an is-stmt at this address. Then
21019 when switching files, if we have seen a stmt at the current
21020 address, and we are switching to create a non-stmt line, then
21021 discard the new line. */
21023 = m_last_subfile != m_cu->get_builder ()->get_current_subfile ();
21024 bool ignore_this_line
21025 = ((file_changed && !end_sequence && m_last_address == m_address
21026 && !m_is_stmt && m_stmt_at_address)
21027 || (!end_sequence && m_line == 0));
21029 if ((file_changed && !ignore_this_line) || end_sequence)
21031 dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
21032 m_currently_recording_lines ? m_cu : nullptr);
21035 if (!end_sequence && !ignore_this_line)
21037 bool is_stmt = producer_is_codewarrior (m_cu) || m_is_stmt;
21039 if (dwarf_record_line_p (m_cu, m_line, m_last_line,
21040 m_line_has_non_zero_discriminator,
21043 buildsym_compunit *builder = m_cu->get_builder ();
21044 dwarf_record_line_1 (m_gdbarch,
21045 builder->get_current_subfile (),
21046 m_line, m_address, is_stmt,
21047 m_currently_recording_lines ? m_cu : nullptr);
21049 m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
21050 m_last_line = m_line;
21055 /* Track whether we have seen any m_is_stmt true at m_address in case we
21056 have multiple line table entries all at m_address. */
21057 if (m_last_address != m_address)
21059 m_stmt_at_address = false;
21060 m_last_address = m_address;
21062 m_stmt_at_address |= m_is_stmt;
21065 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
21066 line_header *lh, bool record_lines_p)
21070 m_record_lines_p = record_lines_p;
21071 m_line_header = lh;
21073 m_currently_recording_lines = true;
21075 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
21076 was a line entry for it so that the backend has a chance to adjust it
21077 and also record it in case it needs it. This is currently used by MIPS
21078 code, cf. `mips_adjust_dwarf2_line'. */
21079 m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
21080 m_is_stmt = lh->default_is_stmt;
21081 m_discriminator = 0;
21083 m_last_address = m_address;
21084 m_stmt_at_address = false;
21088 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
21089 const gdb_byte *line_ptr,
21090 CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
21092 /* Linkers resolve a symbolic relocation referencing a GC'd function to 0 or
21093 -1. If ADDRESS is 0, ignoring the opcode will err if the text section is
21094 located at 0x0. In this case, additionally check that if
21095 ADDRESS < UNRELOCATED_LOWPC. */
21097 if ((address == 0 && address < unrelocated_lowpc)
21098 || address == (CORE_ADDR) -1)
21100 /* This line table is for a function which has been
21101 GCd by the linker. Ignore it. PR gdb/12528 */
21103 struct objfile *objfile = cu->per_objfile->objfile;
21104 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
21106 complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
21107 line_offset, objfile_name (objfile));
21108 m_currently_recording_lines = false;
21109 /* Note: m_currently_recording_lines is left as false until we see
21110 DW_LNE_end_sequence. */
21114 /* Subroutine of dwarf_decode_lines to simplify it.
21115 Process the line number information in LH.
21116 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
21117 program in order to set included_p for every referenced header. */
21120 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
21121 const int decode_for_pst_p, CORE_ADDR lowpc)
21123 const gdb_byte *line_ptr, *extended_end;
21124 const gdb_byte *line_end;
21125 unsigned int bytes_read, extended_len;
21126 unsigned char op_code, extended_op;
21127 CORE_ADDR baseaddr;
21128 struct objfile *objfile = cu->per_objfile->objfile;
21129 bfd *abfd = objfile->obfd;
21130 struct gdbarch *gdbarch = objfile->arch ();
21131 /* True if we're recording line info (as opposed to building partial
21132 symtabs and just interested in finding include files mentioned by
21133 the line number program). */
21134 bool record_lines_p = !decode_for_pst_p;
21136 baseaddr = objfile->text_section_offset ();
21138 line_ptr = lh->statement_program_start;
21139 line_end = lh->statement_program_end;
21141 /* Read the statement sequences until there's nothing left. */
21142 while (line_ptr < line_end)
21144 /* The DWARF line number program state machine. Reset the state
21145 machine at the start of each sequence. */
21146 lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
21147 bool end_sequence = false;
21149 if (record_lines_p)
21151 /* Start a subfile for the current file of the state
21153 const file_entry *fe = state_machine.current_file ();
21156 dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
21159 /* Decode the table. */
21160 while (line_ptr < line_end && !end_sequence)
21162 op_code = read_1_byte (abfd, line_ptr);
21165 if (op_code >= lh->opcode_base)
21167 /* Special opcode. */
21168 state_machine.handle_special_opcode (op_code);
21170 else switch (op_code)
21172 case DW_LNS_extended_op:
21173 extended_len = read_unsigned_leb128 (abfd, line_ptr,
21175 line_ptr += bytes_read;
21176 extended_end = line_ptr + extended_len;
21177 extended_op = read_1_byte (abfd, line_ptr);
21179 if (DW_LNE_lo_user <= extended_op
21180 && extended_op <= DW_LNE_hi_user)
21182 /* Vendor extension, ignore. */
21183 line_ptr = extended_end;
21186 switch (extended_op)
21188 case DW_LNE_end_sequence:
21189 state_machine.handle_end_sequence ();
21190 end_sequence = true;
21192 case DW_LNE_set_address:
21195 = cu->header.read_address (abfd, line_ptr, &bytes_read);
21196 line_ptr += bytes_read;
21198 state_machine.check_line_address (cu, line_ptr,
21199 lowpc - baseaddr, address);
21200 state_machine.handle_set_address (baseaddr, address);
21203 case DW_LNE_define_file:
21205 const char *cur_file;
21206 unsigned int mod_time, length;
21209 cur_file = read_direct_string (abfd, line_ptr,
21211 line_ptr += bytes_read;
21212 dindex = (dir_index)
21213 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21214 line_ptr += bytes_read;
21216 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21217 line_ptr += bytes_read;
21219 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21220 line_ptr += bytes_read;
21221 lh->add_file_name (cur_file, dindex, mod_time, length);
21224 case DW_LNE_set_discriminator:
21226 /* The discriminator is not interesting to the
21227 debugger; just ignore it. We still need to
21228 check its value though:
21229 if there are consecutive entries for the same
21230 (non-prologue) line we want to coalesce them.
21233 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21234 line_ptr += bytes_read;
21236 state_machine.handle_set_discriminator (discr);
21240 complaint (_("mangled .debug_line section"));
21243 /* Make sure that we parsed the extended op correctly. If e.g.
21244 we expected a different address size than the producer used,
21245 we may have read the wrong number of bytes. */
21246 if (line_ptr != extended_end)
21248 complaint (_("mangled .debug_line section"));
21253 state_machine.handle_copy ();
21255 case DW_LNS_advance_pc:
21258 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21259 line_ptr += bytes_read;
21261 state_machine.handle_advance_pc (adjust);
21264 case DW_LNS_advance_line:
21267 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21268 line_ptr += bytes_read;
21270 state_machine.handle_advance_line (line_delta);
21273 case DW_LNS_set_file:
21275 file_name_index file
21276 = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21278 line_ptr += bytes_read;
21280 state_machine.handle_set_file (file);
21283 case DW_LNS_set_column:
21284 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21285 line_ptr += bytes_read;
21287 case DW_LNS_negate_stmt:
21288 state_machine.handle_negate_stmt ();
21290 case DW_LNS_set_basic_block:
21292 /* Add to the address register of the state machine the
21293 address increment value corresponding to special opcode
21294 255. I.e., this value is scaled by the minimum
21295 instruction length since special opcode 255 would have
21296 scaled the increment. */
21297 case DW_LNS_const_add_pc:
21298 state_machine.handle_const_add_pc ();
21300 case DW_LNS_fixed_advance_pc:
21302 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21305 state_machine.handle_fixed_advance_pc (addr_adj);
21310 /* Unknown standard opcode, ignore it. */
21313 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21315 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21316 line_ptr += bytes_read;
21323 dwarf2_debug_line_missing_end_sequence_complaint ();
21325 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21326 in which case we still finish recording the last line). */
21327 state_machine.record_line (true);
21331 /* Decode the Line Number Program (LNP) for the given line_header
21332 structure and CU. The actual information extracted and the type
21333 of structures created from the LNP depends on the value of PST.
21335 1. If PST is NULL, then this procedure uses the data from the program
21336 to create all necessary symbol tables, and their linetables.
21338 2. If PST is not NULL, this procedure reads the program to determine
21339 the list of files included by the unit represented by PST, and
21340 builds all the associated partial symbol tables.
21342 FND holds the CU file name and directory, if known.
21343 It is used for relative paths in the line table.
21345 NOTE: It is important that psymtabs have the same file name (via
21346 strcmp) as the corresponding symtab. Since the directory is not
21347 used in the name of the symtab we don't use it in the name of the
21348 psymtabs we create. E.g. expand_line_sal requires this when
21349 finding psymtabs to expand. A good testcase for this is
21352 LOWPC is the lowest address in CU (or 0 if not known).
21354 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21355 for its PC<->lines mapping information. Otherwise only the filename
21356 table is read in. */
21359 dwarf_decode_lines (struct line_header *lh, const file_and_directory &fnd,
21360 struct dwarf2_cu *cu, dwarf2_psymtab *pst,
21361 CORE_ADDR lowpc, int decode_mapping)
21363 struct objfile *objfile = cu->per_objfile->objfile;
21364 const int decode_for_pst_p = (pst != NULL);
21366 if (decode_mapping)
21367 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21369 if (decode_for_pst_p)
21371 /* Now that we're done scanning the Line Header Program, we can
21372 create the psymtab of each included file. */
21373 for (auto &file_entry : lh->file_names ())
21374 if (file_entry.included_p)
21376 gdb::unique_xmalloc_ptr<char> name_holder;
21377 const char *include_name =
21378 compute_include_file_name (lh, file_entry, fnd, &name_holder);
21379 if (include_name != NULL)
21380 dwarf2_create_include_psymtab
21381 (cu->per_objfile->per_bfd, include_name, pst,
21382 cu->per_objfile->per_bfd->partial_symtabs.get (),
21388 /* Make sure a symtab is created for every file, even files
21389 which contain only variables (i.e. no code with associated
21391 buildsym_compunit *builder = cu->get_builder ();
21392 struct compunit_symtab *cust = builder->get_compunit_symtab ();
21394 for (auto &fe : lh->file_names ())
21396 dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21397 if (builder->get_current_subfile ()->symtab == NULL)
21399 builder->get_current_subfile ()->symtab
21400 = allocate_symtab (cust,
21401 builder->get_current_subfile ()->name);
21403 fe.symtab = builder->get_current_subfile ()->symtab;
21408 /* Start a subfile for DWARF. FILENAME is the name of the file and
21409 DIRNAME the name of the source directory which contains FILENAME
21410 or NULL if not known.
21411 This routine tries to keep line numbers from identical absolute and
21412 relative file names in a common subfile.
21414 Using the `list' example from the GDB testsuite, which resides in
21415 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21416 of /srcdir/list0.c yields the following debugging information for list0.c:
21418 DW_AT_name: /srcdir/list0.c
21419 DW_AT_comp_dir: /compdir
21420 files.files[0].name: list0.h
21421 files.files[0].dir: /srcdir
21422 files.files[1].name: list0.c
21423 files.files[1].dir: /srcdir
21425 The line number information for list0.c has to end up in a single
21426 subfile, so that `break /srcdir/list0.c:1' works as expected.
21427 start_subfile will ensure that this happens provided that we pass the
21428 concatenation of files.files[1].dir and files.files[1].name as the
21432 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21433 const char *dirname)
21435 gdb::unique_xmalloc_ptr<char> copy;
21437 /* In order not to lose the line information directory,
21438 we concatenate it to the filename when it makes sense.
21439 Note that the Dwarf3 standard says (speaking of filenames in line
21440 information): ``The directory index is ignored for file names
21441 that represent full path names''. Thus ignoring dirname in the
21442 `else' branch below isn't an issue. */
21444 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21446 copy.reset (concat (dirname, SLASH_STRING, filename, (char *) NULL));
21447 filename = copy.get ();
21450 cu->get_builder ()->start_subfile (filename);
21454 var_decode_location (struct attribute *attr, struct symbol *sym,
21455 struct dwarf2_cu *cu)
21457 struct objfile *objfile = cu->per_objfile->objfile;
21458 struct comp_unit_head *cu_header = &cu->header;
21460 /* NOTE drow/2003-01-30: There used to be a comment and some special
21461 code here to turn a symbol with DW_AT_external and a
21462 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
21463 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21464 with some versions of binutils) where shared libraries could have
21465 relocations against symbols in their debug information - the
21466 minimal symbol would have the right address, but the debug info
21467 would not. It's no longer necessary, because we will explicitly
21468 apply relocations when we read in the debug information now. */
21470 /* A DW_AT_location attribute with no contents indicates that a
21471 variable has been optimized away. */
21472 if (attr->form_is_block () && attr->as_block ()->size == 0)
21474 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21478 /* Handle one degenerate form of location expression specially, to
21479 preserve GDB's previous behavior when section offsets are
21480 specified. If this is just a DW_OP_addr, DW_OP_addrx, or
21481 DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC. */
21483 if (attr->form_is_block ())
21485 struct dwarf_block *block = attr->as_block ();
21487 if ((block->data[0] == DW_OP_addr
21488 && block->size == 1 + cu_header->addr_size)
21489 || ((block->data[0] == DW_OP_GNU_addr_index
21490 || block->data[0] == DW_OP_addrx)
21492 == 1 + leb128_size (&block->data[1]))))
21494 unsigned int dummy;
21496 if (block->data[0] == DW_OP_addr)
21497 SET_SYMBOL_VALUE_ADDRESS
21498 (sym, cu->header.read_address (objfile->obfd,
21502 SET_SYMBOL_VALUE_ADDRESS
21503 (sym, read_addr_index_from_leb128 (cu, block->data + 1,
21505 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21506 fixup_symbol_section (sym, objfile);
21507 SET_SYMBOL_VALUE_ADDRESS
21509 SYMBOL_VALUE_ADDRESS (sym)
21510 + objfile->section_offsets[sym->section_index ()]);
21515 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21516 expression evaluator, and use LOC_COMPUTED only when necessary
21517 (i.e. when the value of a register or memory location is
21518 referenced, or a thread-local block, etc.). Then again, it might
21519 not be worthwhile. I'm assuming that it isn't unless performance
21520 or memory numbers show me otherwise. */
21522 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21524 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21525 cu->has_loclist = true;
21528 /* Given a pointer to a DWARF information entry, figure out if we need
21529 to make a symbol table entry for it, and if so, create a new entry
21530 and return a pointer to it.
21531 If TYPE is NULL, determine symbol type from the die, otherwise
21532 used the passed type.
21533 If SPACE is not NULL, use it to hold the new symbol. If it is
21534 NULL, allocate a new symbol on the objfile's obstack. */
21536 static struct symbol *
21537 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21538 struct symbol *space)
21540 dwarf2_per_objfile *per_objfile = cu->per_objfile;
21541 struct objfile *objfile = per_objfile->objfile;
21542 struct gdbarch *gdbarch = objfile->arch ();
21543 struct symbol *sym = NULL;
21545 struct attribute *attr = NULL;
21546 struct attribute *attr2 = NULL;
21547 CORE_ADDR baseaddr;
21548 struct pending **list_to_add = NULL;
21550 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21552 baseaddr = objfile->text_section_offset ();
21554 name = dwarf2_name (die, cu);
21557 int suppress_add = 0;
21562 sym = new (&objfile->objfile_obstack) symbol;
21563 OBJSTAT (objfile, n_syms++);
21565 /* Cache this symbol's name and the name's demangled form (if any). */
21566 sym->set_language (cu->per_cu->lang, &objfile->objfile_obstack);
21567 /* Fortran does not have mangling standard and the mangling does differ
21568 between gfortran, iFort etc. */
21569 const char *physname
21570 = (cu->per_cu->lang == language_fortran
21571 ? dwarf2_full_name (name, die, cu)
21572 : dwarf2_physname (name, die, cu));
21573 const char *linkagename = dw2_linkage_name (die, cu);
21575 if (linkagename == nullptr || cu->per_cu->lang == language_ada)
21576 sym->set_linkage_name (physname);
21579 sym->set_demangled_name (physname, &objfile->objfile_obstack);
21580 sym->set_linkage_name (linkagename);
21583 /* Default assumptions.
21584 Use the passed type or decode it from the die. */
21585 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21586 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21588 SYMBOL_TYPE (sym) = type;
21590 SYMBOL_TYPE (sym) = die_type (die, cu);
21591 attr = dwarf2_attr (die,
21592 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21594 if (attr != nullptr)
21595 SYMBOL_LINE (sym) = attr->constant_value (0);
21597 attr = dwarf2_attr (die,
21598 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21600 if (attr != nullptr && attr->is_nonnegative ())
21602 file_name_index file_index
21603 = (file_name_index) attr->as_nonnegative ();
21604 struct file_entry *fe;
21606 if (cu->line_header != NULL)
21607 fe = cu->line_header->file_name_at (file_index);
21612 complaint (_("file index out of range"));
21614 symbol_set_symtab (sym, fe->symtab);
21620 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21621 if (attr != nullptr)
21625 addr = attr->as_address ();
21626 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21627 SET_SYMBOL_VALUE_ADDRESS (sym, addr);
21628 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21631 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21632 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21633 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21634 add_symbol_to_list (sym, cu->list_in_scope);
21636 case DW_TAG_subprogram:
21637 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21639 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21640 attr2 = dwarf2_attr (die, DW_AT_external, cu);
21641 if ((attr2 != nullptr && attr2->as_boolean ())
21642 || cu->per_cu->lang == language_ada
21643 || cu->per_cu->lang == language_fortran)
21645 /* Subprograms marked external are stored as a global symbol.
21646 Ada and Fortran subprograms, whether marked external or
21647 not, are always stored as a global symbol, because we want
21648 to be able to access them globally. For instance, we want
21649 to be able to break on a nested subprogram without having
21650 to specify the context. */
21651 list_to_add = cu->get_builder ()->get_global_symbols ();
21655 list_to_add = cu->list_in_scope;
21658 case DW_TAG_inlined_subroutine:
21659 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21661 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21662 SYMBOL_INLINED (sym) = 1;
21663 list_to_add = cu->list_in_scope;
21665 case DW_TAG_template_value_param:
21667 /* Fall through. */
21668 case DW_TAG_constant:
21669 case DW_TAG_variable:
21670 case DW_TAG_member:
21671 /* Compilation with minimal debug info may result in
21672 variables with missing type entries. Change the
21673 misleading `void' type to something sensible. */
21674 if (SYMBOL_TYPE (sym)->code () == TYPE_CODE_VOID)
21675 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21677 attr = dwarf2_attr (die, DW_AT_const_value, cu);
21678 /* In the case of DW_TAG_member, we should only be called for
21679 static const members. */
21680 if (die->tag == DW_TAG_member)
21682 /* dwarf2_add_field uses die_is_declaration,
21683 so we do the same. */
21684 gdb_assert (die_is_declaration (die, cu));
21687 if (attr != nullptr)
21689 dwarf2_const_value (attr, sym, cu);
21690 attr2 = dwarf2_attr (die, DW_AT_external, cu);
21693 if (attr2 != nullptr && attr2->as_boolean ())
21694 list_to_add = cu->get_builder ()->get_global_symbols ();
21696 list_to_add = cu->list_in_scope;
21700 attr = dwarf2_attr (die, DW_AT_location, cu);
21701 if (attr != nullptr)
21703 var_decode_location (attr, sym, cu);
21704 attr2 = dwarf2_attr (die, DW_AT_external, cu);
21706 /* Fortran explicitly imports any global symbols to the local
21707 scope by DW_TAG_common_block. */
21708 if (cu->per_cu->lang == language_fortran && die->parent
21709 && die->parent->tag == DW_TAG_common_block)
21712 if (SYMBOL_CLASS (sym) == LOC_STATIC
21713 && SYMBOL_VALUE_ADDRESS (sym) == 0
21714 && !per_objfile->per_bfd->has_section_at_zero)
21716 /* When a static variable is eliminated by the linker,
21717 the corresponding debug information is not stripped
21718 out, but the variable address is set to null;
21719 do not add such variables into symbol table. */
21721 else if (attr2 != nullptr && attr2->as_boolean ())
21723 if (SYMBOL_CLASS (sym) == LOC_STATIC
21724 && (objfile->flags & OBJF_MAINLINE) == 0
21725 && per_objfile->per_bfd->can_copy)
21727 /* A global static variable might be subject to
21728 copy relocation. We first check for a local
21729 minsym, though, because maybe the symbol was
21730 marked hidden, in which case this would not
21732 bound_minimal_symbol found
21733 = (lookup_minimal_symbol_linkage
21734 (sym->linkage_name (), objfile));
21735 if (found.minsym != nullptr)
21736 sym->maybe_copied = 1;
21739 /* A variable with DW_AT_external is never static,
21740 but it may be block-scoped. */
21742 = ((cu->list_in_scope
21743 == cu->get_builder ()->get_file_symbols ())
21744 ? cu->get_builder ()->get_global_symbols ()
21745 : cu->list_in_scope);
21748 list_to_add = cu->list_in_scope;
21752 /* We do not know the address of this symbol.
21753 If it is an external symbol and we have type information
21754 for it, enter the symbol as a LOC_UNRESOLVED symbol.
21755 The address of the variable will then be determined from
21756 the minimal symbol table whenever the variable is
21758 attr2 = dwarf2_attr (die, DW_AT_external, cu);
21760 /* Fortran explicitly imports any global symbols to the local
21761 scope by DW_TAG_common_block. */
21762 if (cu->per_cu->lang == language_fortran && die->parent
21763 && die->parent->tag == DW_TAG_common_block)
21765 /* SYMBOL_CLASS doesn't matter here because
21766 read_common_block is going to reset it. */
21768 list_to_add = cu->list_in_scope;
21770 else if (attr2 != nullptr && attr2->as_boolean ()
21771 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21773 /* A variable with DW_AT_external is never static, but it
21774 may be block-scoped. */
21776 = ((cu->list_in_scope
21777 == cu->get_builder ()->get_file_symbols ())
21778 ? cu->get_builder ()->get_global_symbols ()
21779 : cu->list_in_scope);
21781 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21783 else if (!die_is_declaration (die, cu))
21785 /* Use the default LOC_OPTIMIZED_OUT class. */
21786 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21788 list_to_add = cu->list_in_scope;
21792 case DW_TAG_formal_parameter:
21794 /* If we are inside a function, mark this as an argument. If
21795 not, we might be looking at an argument to an inlined function
21796 when we do not have enough information to show inlined frames;
21797 pretend it's a local variable in that case so that the user can
21799 struct context_stack *curr
21800 = cu->get_builder ()->get_current_context_stack ();
21801 if (curr != nullptr && curr->name != nullptr)
21802 SYMBOL_IS_ARGUMENT (sym) = 1;
21803 attr = dwarf2_attr (die, DW_AT_location, cu);
21804 if (attr != nullptr)
21806 var_decode_location (attr, sym, cu);
21808 attr = dwarf2_attr (die, DW_AT_const_value, cu);
21809 if (attr != nullptr)
21811 dwarf2_const_value (attr, sym, cu);
21814 list_to_add = cu->list_in_scope;
21817 case DW_TAG_unspecified_parameters:
21818 /* From varargs functions; gdb doesn't seem to have any
21819 interest in this information, so just ignore it for now.
21822 case DW_TAG_template_type_param:
21824 /* Fall through. */
21825 case DW_TAG_class_type:
21826 case DW_TAG_interface_type:
21827 case DW_TAG_structure_type:
21828 case DW_TAG_union_type:
21829 case DW_TAG_set_type:
21830 case DW_TAG_enumeration_type:
21831 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21832 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21835 /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21836 really ever be static objects: otherwise, if you try
21837 to, say, break of a class's method and you're in a file
21838 which doesn't mention that class, it won't work unless
21839 the check for all static symbols in lookup_symbol_aux
21840 saves you. See the OtherFileClass tests in
21841 gdb.c++/namespace.exp. */
21845 buildsym_compunit *builder = cu->get_builder ();
21847 = (cu->list_in_scope == builder->get_file_symbols ()
21848 && cu->per_cu->lang == language_cplus
21849 ? builder->get_global_symbols ()
21850 : cu->list_in_scope);
21852 /* The semantics of C++ state that "struct foo {
21853 ... }" also defines a typedef for "foo". */
21854 if (cu->per_cu->lang == language_cplus
21855 || cu->per_cu->lang == language_ada
21856 || cu->per_cu->lang == language_d
21857 || cu->per_cu->lang == language_rust)
21859 /* The symbol's name is already allocated along
21860 with this objfile, so we don't need to
21861 duplicate it for the type. */
21862 if (SYMBOL_TYPE (sym)->name () == 0)
21863 SYMBOL_TYPE (sym)->set_name (sym->search_name ());
21868 case DW_TAG_typedef:
21869 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21870 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21871 list_to_add = cu->list_in_scope;
21873 case DW_TAG_array_type:
21874 case DW_TAG_base_type:
21875 case DW_TAG_subrange_type:
21876 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21877 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21878 list_to_add = cu->list_in_scope;
21880 case DW_TAG_enumerator:
21881 attr = dwarf2_attr (die, DW_AT_const_value, cu);
21882 if (attr != nullptr)
21884 dwarf2_const_value (attr, sym, cu);
21887 /* NOTE: carlton/2003-11-10: See comment above in the
21888 DW_TAG_class_type, etc. block. */
21891 = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
21892 && cu->per_cu->lang == language_cplus
21893 ? cu->get_builder ()->get_global_symbols ()
21894 : cu->list_in_scope);
21897 case DW_TAG_imported_declaration:
21898 case DW_TAG_namespace:
21899 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21900 list_to_add = cu->get_builder ()->get_global_symbols ();
21902 case DW_TAG_module:
21903 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21904 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21905 list_to_add = cu->get_builder ()->get_global_symbols ();
21907 case DW_TAG_common_block:
21908 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21909 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21910 add_symbol_to_list (sym, cu->list_in_scope);
21913 /* Not a tag we recognize. Hopefully we aren't processing
21914 trash data, but since we must specifically ignore things
21915 we don't recognize, there is nothing else we should do at
21917 complaint (_("unsupported tag: '%s'"),
21918 dwarf_tag_name (die->tag));
21924 sym->hash_next = objfile->template_symbols;
21925 objfile->template_symbols = sym;
21926 list_to_add = NULL;
21929 if (list_to_add != NULL)
21930 add_symbol_to_list (sym, list_to_add);
21932 /* For the benefit of old versions of GCC, check for anonymous
21933 namespaces based on the demangled name. */
21934 if (!cu->processing_has_namespace_info
21935 && cu->per_cu->lang == language_cplus)
21936 cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
21941 /* Given an attr with a DW_FORM_dataN value in host byte order,
21942 zero-extend it as appropriate for the symbol's type. The DWARF
21943 standard (v4) is not entirely clear about the meaning of using
21944 DW_FORM_dataN for a constant with a signed type, where the type is
21945 wider than the data. The conclusion of a discussion on the DWARF
21946 list was that this is unspecified. We choose to always zero-extend
21947 because that is the interpretation long in use by GCC. */
21950 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21951 struct dwarf2_cu *cu, LONGEST *value, int bits)
21953 struct objfile *objfile = cu->per_objfile->objfile;
21954 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21955 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21956 LONGEST l = attr->constant_value (0);
21958 if (bits < sizeof (*value) * 8)
21960 l &= ((LONGEST) 1 << bits) - 1;
21963 else if (bits == sizeof (*value) * 8)
21967 gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21968 store_unsigned_integer (bytes, bits / 8, byte_order, l);
21975 /* Read a constant value from an attribute. Either set *VALUE, or if
21976 the value does not fit in *VALUE, set *BYTES - either already
21977 allocated on the objfile obstack, or newly allocated on OBSTACK,
21978 or, set *BATON, if we translated the constant to a location
21982 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21983 const char *name, struct obstack *obstack,
21984 struct dwarf2_cu *cu,
21985 LONGEST *value, const gdb_byte **bytes,
21986 struct dwarf2_locexpr_baton **baton)
21988 dwarf2_per_objfile *per_objfile = cu->per_objfile;
21989 struct objfile *objfile = per_objfile->objfile;
21990 struct comp_unit_head *cu_header = &cu->header;
21991 struct dwarf_block *blk;
21992 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21993 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21999 switch (attr->form)
22002 case DW_FORM_addrx:
22003 case DW_FORM_GNU_addr_index:
22007 if (TYPE_LENGTH (type) != cu_header->addr_size)
22008 dwarf2_const_value_length_mismatch_complaint (name,
22009 cu_header->addr_size,
22010 TYPE_LENGTH (type));
22011 /* Symbols of this form are reasonably rare, so we just
22012 piggyback on the existing location code rather than writing
22013 a new implementation of symbol_computed_ops. */
22014 *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
22015 (*baton)->per_objfile = per_objfile;
22016 (*baton)->per_cu = cu->per_cu;
22017 gdb_assert ((*baton)->per_cu);
22019 (*baton)->size = 2 + cu_header->addr_size;
22020 data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
22021 (*baton)->data = data;
22023 data[0] = DW_OP_addr;
22024 store_unsigned_integer (&data[1], cu_header->addr_size,
22025 byte_order, attr->as_address ());
22026 data[cu_header->addr_size + 1] = DW_OP_stack_value;
22029 case DW_FORM_string:
22032 case DW_FORM_GNU_str_index:
22033 case DW_FORM_GNU_strp_alt:
22034 /* The string is already allocated on the objfile obstack, point
22036 *bytes = (const gdb_byte *) attr->as_string ();
22038 case DW_FORM_block1:
22039 case DW_FORM_block2:
22040 case DW_FORM_block4:
22041 case DW_FORM_block:
22042 case DW_FORM_exprloc:
22043 case DW_FORM_data16:
22044 blk = attr->as_block ();
22045 if (TYPE_LENGTH (type) != blk->size)
22046 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
22047 TYPE_LENGTH (type));
22048 *bytes = blk->data;
22051 /* The DW_AT_const_value attributes are supposed to carry the
22052 symbol's value "represented as it would be on the target
22053 architecture." By the time we get here, it's already been
22054 converted to host endianness, so we just need to sign- or
22055 zero-extend it as appropriate. */
22056 case DW_FORM_data1:
22057 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
22059 case DW_FORM_data2:
22060 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
22062 case DW_FORM_data4:
22063 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
22065 case DW_FORM_data8:
22066 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
22069 case DW_FORM_sdata:
22070 case DW_FORM_implicit_const:
22071 *value = attr->as_signed ();
22074 case DW_FORM_udata:
22075 *value = attr->as_unsigned ();
22079 complaint (_("unsupported const value attribute form: '%s'"),
22080 dwarf_form_name (attr->form));
22087 /* Copy constant value from an attribute to a symbol. */
22090 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
22091 struct dwarf2_cu *cu)
22093 struct objfile *objfile = cu->per_objfile->objfile;
22095 const gdb_byte *bytes;
22096 struct dwarf2_locexpr_baton *baton;
22098 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
22099 sym->print_name (),
22100 &objfile->objfile_obstack, cu,
22101 &value, &bytes, &baton);
22105 SYMBOL_LOCATION_BATON (sym) = baton;
22106 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
22108 else if (bytes != NULL)
22110 SYMBOL_VALUE_BYTES (sym) = bytes;
22111 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
22115 SYMBOL_VALUE (sym) = value;
22116 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
22120 /* Return the type of the die in question using its DW_AT_type attribute. */
22122 static struct type *
22123 die_type (struct die_info *die, struct dwarf2_cu *cu)
22125 struct attribute *type_attr;
22127 type_attr = dwarf2_attr (die, DW_AT_type, cu);
22130 struct objfile *objfile = cu->per_objfile->objfile;
22131 /* A missing DW_AT_type represents a void type. */
22132 return objfile_type (objfile)->builtin_void;
22135 return lookup_die_type (die, type_attr, cu);
22138 /* True iff CU's producer generates GNAT Ada auxiliary information
22139 that allows to find parallel types through that information instead
22140 of having to do expensive parallel lookups by type name. */
22143 need_gnat_info (struct dwarf2_cu *cu)
22145 /* Assume that the Ada compiler was GNAT, which always produces
22146 the auxiliary information. */
22147 return (cu->per_cu->lang == language_ada);
22150 /* Return the auxiliary type of the die in question using its
22151 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
22152 attribute is not present. */
22154 static struct type *
22155 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22157 struct attribute *type_attr;
22159 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22163 return lookup_die_type (die, type_attr, cu);
22166 /* If DIE has a descriptive_type attribute, then set the TYPE's
22167 descriptive type accordingly. */
22170 set_descriptive_type (struct type *type, struct die_info *die,
22171 struct dwarf2_cu *cu)
22173 struct type *descriptive_type = die_descriptive_type (die, cu);
22175 if (descriptive_type)
22177 ALLOCATE_GNAT_AUX_TYPE (type);
22178 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22182 /* Return the containing type of the die in question using its
22183 DW_AT_containing_type attribute. */
22185 static struct type *
22186 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22188 struct attribute *type_attr;
22189 struct objfile *objfile = cu->per_objfile->objfile;
22191 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22193 error (_("Dwarf Error: Problem turning containing type into gdb type "
22194 "[in module %s]"), objfile_name (objfile));
22196 return lookup_die_type (die, type_attr, cu);
22199 /* Return an error marker type to use for the ill formed type in DIE/CU. */
22201 static struct type *
22202 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22204 dwarf2_per_objfile *per_objfile = cu->per_objfile;
22205 struct objfile *objfile = per_objfile->objfile;
22208 std::string message
22209 = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22210 objfile_name (objfile),
22211 sect_offset_str (cu->header.sect_off),
22212 sect_offset_str (die->sect_off));
22213 saved = obstack_strdup (&objfile->objfile_obstack, message);
22215 return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22218 /* Look up the type of DIE in CU using its type attribute ATTR.
22219 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22220 DW_AT_containing_type.
22221 If there is no type substitute an error marker. */
22223 static struct type *
22224 lookup_die_type (struct die_info *die, const struct attribute *attr,
22225 struct dwarf2_cu *cu)
22227 dwarf2_per_objfile *per_objfile = cu->per_objfile;
22228 struct objfile *objfile = per_objfile->objfile;
22229 struct type *this_type;
22231 gdb_assert (attr->name == DW_AT_type
22232 || attr->name == DW_AT_GNAT_descriptive_type
22233 || attr->name == DW_AT_containing_type);
22235 /* First see if we have it cached. */
22237 if (attr->form == DW_FORM_GNU_ref_alt)
22239 struct dwarf2_per_cu_data *per_cu;
22240 sect_offset sect_off = attr->get_ref_die_offset ();
22242 per_cu = dwarf2_find_containing_comp_unit (sect_off, 1, per_objfile);
22243 this_type = get_die_type_at_offset (sect_off, per_cu, per_objfile);
22245 else if (attr->form_is_ref ())
22247 sect_offset sect_off = attr->get_ref_die_offset ();
22249 this_type = get_die_type_at_offset (sect_off, cu->per_cu, per_objfile);
22251 else if (attr->form == DW_FORM_ref_sig8)
22253 ULONGEST signature = attr->as_signature ();
22255 return get_signatured_type (die, signature, cu);
22259 complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22260 " at %s [in module %s]"),
22261 dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22262 objfile_name (objfile));
22263 return build_error_marker_type (cu, die);
22266 /* If not cached we need to read it in. */
22268 if (this_type == NULL)
22270 struct die_info *type_die = NULL;
22271 struct dwarf2_cu *type_cu = cu;
22273 if (attr->form_is_ref ())
22274 type_die = follow_die_ref (die, attr, &type_cu);
22275 if (type_die == NULL)
22276 return build_error_marker_type (cu, die);
22277 /* If we find the type now, it's probably because the type came
22278 from an inter-CU reference and the type's CU got expanded before
22280 this_type = read_type_die (type_die, type_cu);
22283 /* If we still don't have a type use an error marker. */
22285 if (this_type == NULL)
22286 return build_error_marker_type (cu, die);
22291 /* Return the type in DIE, CU.
22292 Returns NULL for invalid types.
22294 This first does a lookup in die_type_hash,
22295 and only reads the die in if necessary.
22297 NOTE: This can be called when reading in partial or full symbols. */
22299 static struct type *
22300 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22302 struct type *this_type;
22304 this_type = get_die_type (die, cu);
22308 return read_type_die_1 (die, cu);
22311 /* Read the type in DIE, CU.
22312 Returns NULL for invalid types. */
22314 static struct type *
22315 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22317 struct type *this_type = NULL;
22321 case DW_TAG_class_type:
22322 case DW_TAG_interface_type:
22323 case DW_TAG_structure_type:
22324 case DW_TAG_union_type:
22325 this_type = read_structure_type (die, cu);
22327 case DW_TAG_enumeration_type:
22328 this_type = read_enumeration_type (die, cu);
22330 case DW_TAG_subprogram:
22331 case DW_TAG_subroutine_type:
22332 case DW_TAG_inlined_subroutine:
22333 this_type = read_subroutine_type (die, cu);
22335 case DW_TAG_array_type:
22336 this_type = read_array_type (die, cu);
22338 case DW_TAG_set_type:
22339 this_type = read_set_type (die, cu);
22341 case DW_TAG_pointer_type:
22342 this_type = read_tag_pointer_type (die, cu);
22344 case DW_TAG_ptr_to_member_type:
22345 this_type = read_tag_ptr_to_member_type (die, cu);
22347 case DW_TAG_reference_type:
22348 this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22350 case DW_TAG_rvalue_reference_type:
22351 this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22353 case DW_TAG_const_type:
22354 this_type = read_tag_const_type (die, cu);
22356 case DW_TAG_volatile_type:
22357 this_type = read_tag_volatile_type (die, cu);
22359 case DW_TAG_restrict_type:
22360 this_type = read_tag_restrict_type (die, cu);
22362 case DW_TAG_string_type:
22363 this_type = read_tag_string_type (die, cu);
22365 case DW_TAG_typedef:
22366 this_type = read_typedef (die, cu);
22368 case DW_TAG_subrange_type:
22369 this_type = read_subrange_type (die, cu);
22371 case DW_TAG_base_type:
22372 this_type = read_base_type (die, cu);
22374 case DW_TAG_unspecified_type:
22375 this_type = read_unspecified_type (die, cu);
22377 case DW_TAG_namespace:
22378 this_type = read_namespace_type (die, cu);
22380 case DW_TAG_module:
22381 this_type = read_module_type (die, cu);
22383 case DW_TAG_atomic_type:
22384 this_type = read_tag_atomic_type (die, cu);
22387 complaint (_("unexpected tag in read_type_die: '%s'"),
22388 dwarf_tag_name (die->tag));
22395 /* See if we can figure out if the class lives in a namespace. We do
22396 this by looking for a member function; its demangled name will
22397 contain namespace info, if there is any.
22398 Return the computed name or NULL.
22399 Space for the result is allocated on the objfile's obstack.
22400 This is the full-die version of guess_partial_die_structure_name.
22401 In this case we know DIE has no useful parent. */
22403 static const char *
22404 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22406 struct die_info *spec_die;
22407 struct dwarf2_cu *spec_cu;
22408 struct die_info *child;
22409 struct objfile *objfile = cu->per_objfile->objfile;
22412 spec_die = die_specification (die, &spec_cu);
22413 if (spec_die != NULL)
22419 for (child = die->child;
22421 child = child->sibling)
22423 if (child->tag == DW_TAG_subprogram)
22425 const char *linkage_name = dw2_linkage_name (child, cu);
22427 if (linkage_name != NULL)
22429 gdb::unique_xmalloc_ptr<char> actual_name
22430 (cu->language_defn->class_name_from_physname (linkage_name));
22431 const char *name = NULL;
22433 if (actual_name != NULL)
22435 const char *die_name = dwarf2_name (die, cu);
22437 if (die_name != NULL
22438 && strcmp (die_name, actual_name.get ()) != 0)
22440 /* Strip off the class name from the full name.
22441 We want the prefix. */
22442 int die_name_len = strlen (die_name);
22443 int actual_name_len = strlen (actual_name.get ());
22444 const char *ptr = actual_name.get ();
22446 /* Test for '::' as a sanity check. */
22447 if (actual_name_len > die_name_len + 2
22448 && ptr[actual_name_len - die_name_len - 1] == ':')
22449 name = obstack_strndup (
22450 &objfile->per_bfd->storage_obstack,
22451 ptr, actual_name_len - die_name_len - 2);
22462 /* GCC might emit a nameless typedef that has a linkage name. Determine the
22463 prefix part in such case. See
22464 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
22466 static const char *
22467 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22469 struct attribute *attr;
22472 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22473 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22476 if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22479 attr = dw2_linkage_name_attr (die, cu);
22480 const char *attr_name = attr->as_string ();
22481 if (attr == NULL || attr_name == NULL)
22484 /* dwarf2_name had to be already called. */
22485 gdb_assert (attr->canonical_string_p ());
22487 /* Strip the base name, keep any leading namespaces/classes. */
22488 base = strrchr (attr_name, ':');
22489 if (base == NULL || base == attr_name || base[-1] != ':')
22492 struct objfile *objfile = cu->per_objfile->objfile;
22493 return obstack_strndup (&objfile->per_bfd->storage_obstack,
22495 &base[-1] - attr_name);
22498 /* Return the name of the namespace/class that DIE is defined within,
22499 or "" if we can't tell. The caller should not xfree the result.
22501 For example, if we're within the method foo() in the following
22511 then determine_prefix on foo's die will return "N::C". */
22513 static const char *
22514 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22516 dwarf2_per_objfile *per_objfile = cu->per_objfile;
22517 struct die_info *parent, *spec_die;
22518 struct dwarf2_cu *spec_cu;
22519 struct type *parent_type;
22520 const char *retval;
22522 if (cu->per_cu->lang != language_cplus
22523 && cu->per_cu->lang != language_fortran
22524 && cu->per_cu->lang != language_d
22525 && cu->per_cu->lang != language_rust)
22528 retval = anonymous_struct_prefix (die, cu);
22532 /* We have to be careful in the presence of DW_AT_specification.
22533 For example, with GCC 3.4, given the code
22537 // Definition of N::foo.
22541 then we'll have a tree of DIEs like this:
22543 1: DW_TAG_compile_unit
22544 2: DW_TAG_namespace // N
22545 3: DW_TAG_subprogram // declaration of N::foo
22546 4: DW_TAG_subprogram // definition of N::foo
22547 DW_AT_specification // refers to die #3
22549 Thus, when processing die #4, we have to pretend that we're in
22550 the context of its DW_AT_specification, namely the contex of die
22553 spec_die = die_specification (die, &spec_cu);
22554 if (spec_die == NULL)
22555 parent = die->parent;
22558 parent = spec_die->parent;
22562 if (parent == NULL)
22564 else if (parent->building_fullname)
22567 const char *parent_name;
22569 /* It has been seen on RealView 2.2 built binaries,
22570 DW_TAG_template_type_param types actually _defined_ as
22571 children of the parent class:
22574 template class <class Enum> Class{};
22575 Class<enum E> class_e;
22577 1: DW_TAG_class_type (Class)
22578 2: DW_TAG_enumeration_type (E)
22579 3: DW_TAG_enumerator (enum1:0)
22580 3: DW_TAG_enumerator (enum2:1)
22582 2: DW_TAG_template_type_param
22583 DW_AT_type DW_FORM_ref_udata (E)
22585 Besides being broken debug info, it can put GDB into an
22586 infinite loop. Consider:
22588 When we're building the full name for Class<E>, we'll start
22589 at Class, and go look over its template type parameters,
22590 finding E. We'll then try to build the full name of E, and
22591 reach here. We're now trying to build the full name of E,
22592 and look over the parent DIE for containing scope. In the
22593 broken case, if we followed the parent DIE of E, we'd again
22594 find Class, and once again go look at its template type
22595 arguments, etc., etc. Simply don't consider such parent die
22596 as source-level parent of this die (it can't be, the language
22597 doesn't allow it), and break the loop here. */
22598 name = dwarf2_name (die, cu);
22599 parent_name = dwarf2_name (parent, cu);
22600 complaint (_("template param type '%s' defined within parent '%s'"),
22601 name ? name : "<unknown>",
22602 parent_name ? parent_name : "<unknown>");
22606 switch (parent->tag)
22608 case DW_TAG_namespace:
22609 parent_type = read_type_die (parent, cu);
22610 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22611 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22612 Work around this problem here. */
22613 if (cu->per_cu->lang == language_cplus
22614 && strcmp (parent_type->name (), "::") == 0)
22616 /* We give a name to even anonymous namespaces. */
22617 return parent_type->name ();
22618 case DW_TAG_class_type:
22619 case DW_TAG_interface_type:
22620 case DW_TAG_structure_type:
22621 case DW_TAG_union_type:
22622 case DW_TAG_module:
22623 parent_type = read_type_die (parent, cu);
22624 if (parent_type->name () != NULL)
22625 return parent_type->name ();
22627 /* An anonymous structure is only allowed non-static data
22628 members; no typedefs, no member functions, et cetera.
22629 So it does not need a prefix. */
22631 case DW_TAG_compile_unit:
22632 case DW_TAG_partial_unit:
22633 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
22634 if (cu->per_cu->lang == language_cplus
22635 && !per_objfile->per_bfd->types.empty ()
22636 && die->child != NULL
22637 && (die->tag == DW_TAG_class_type
22638 || die->tag == DW_TAG_structure_type
22639 || die->tag == DW_TAG_union_type))
22641 const char *name = guess_full_die_structure_name (die, cu);
22646 case DW_TAG_subprogram:
22647 /* Nested subroutines in Fortran get a prefix with the name
22648 of the parent's subroutine. */
22649 if (cu->per_cu->lang == language_fortran)
22651 if ((die->tag == DW_TAG_subprogram)
22652 && (dwarf2_name (parent, cu) != NULL))
22653 return dwarf2_name (parent, cu);
22656 case DW_TAG_enumeration_type:
22657 parent_type = read_type_die (parent, cu);
22658 if (parent_type->is_declared_class ())
22660 if (parent_type->name () != NULL)
22661 return parent_type->name ();
22664 /* Fall through. */
22666 return determine_prefix (parent, cu);
22670 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22671 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
22672 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
22673 an obconcat, otherwise allocate storage for the result. The CU argument is
22674 used to determine the language and hence, the appropriate separator. */
22676 #define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
22679 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22680 int physname, struct dwarf2_cu *cu)
22682 const char *lead = "";
22685 if (suffix == NULL || suffix[0] == '\0'
22686 || prefix == NULL || prefix[0] == '\0')
22688 else if (cu->per_cu->lang == language_d)
22690 /* For D, the 'main' function could be defined in any module, but it
22691 should never be prefixed. */
22692 if (strcmp (suffix, "D main") == 0)
22700 else if (cu->per_cu->lang == language_fortran && physname)
22702 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
22703 DW_AT_MIPS_linkage_name is preferred and used instead. */
22711 if (prefix == NULL)
22713 if (suffix == NULL)
22720 xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22722 strcpy (retval, lead);
22723 strcat (retval, prefix);
22724 strcat (retval, sep);
22725 strcat (retval, suffix);
22730 /* We have an obstack. */
22731 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22735 /* Get name of a die, return NULL if not found. */
22737 static const char *
22738 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22739 struct objfile *objfile)
22741 if (name && cu->per_cu->lang == language_cplus)
22743 gdb::unique_xmalloc_ptr<char> canon_name
22744 = cp_canonicalize_string (name);
22746 if (canon_name != nullptr)
22747 name = objfile->intern (canon_name.get ());
22753 /* Get name of a die, return NULL if not found.
22754 Anonymous namespaces are converted to their magic string. */
22756 static const char *
22757 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22759 struct attribute *attr;
22760 struct objfile *objfile = cu->per_objfile->objfile;
22762 attr = dwarf2_attr (die, DW_AT_name, cu);
22763 const char *attr_name = attr == nullptr ? nullptr : attr->as_string ();
22764 if (attr_name == nullptr
22765 && die->tag != DW_TAG_namespace
22766 && die->tag != DW_TAG_class_type
22767 && die->tag != DW_TAG_interface_type
22768 && die->tag != DW_TAG_structure_type
22769 && die->tag != DW_TAG_union_type)
22774 case DW_TAG_compile_unit:
22775 case DW_TAG_partial_unit:
22776 /* Compilation units have a DW_AT_name that is a filename, not
22777 a source language identifier. */
22778 case DW_TAG_enumeration_type:
22779 case DW_TAG_enumerator:
22780 /* These tags always have simple identifiers already; no need
22781 to canonicalize them. */
22784 case DW_TAG_namespace:
22785 if (attr_name != nullptr)
22787 return CP_ANONYMOUS_NAMESPACE_STR;
22789 case DW_TAG_class_type:
22790 case DW_TAG_interface_type:
22791 case DW_TAG_structure_type:
22792 case DW_TAG_union_type:
22793 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22794 structures or unions. These were of the form "._%d" in GCC 4.1,
22795 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22796 and GCC 4.4. We work around this problem by ignoring these. */
22797 if (attr_name != nullptr
22798 && (startswith (attr_name, "._")
22799 || startswith (attr_name, "<anonymous")))
22802 /* GCC might emit a nameless typedef that has a linkage name. See
22803 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
22804 if (!attr || attr_name == NULL)
22806 attr = dw2_linkage_name_attr (die, cu);
22807 attr_name = attr == nullptr ? nullptr : attr->as_string ();
22808 if (attr == NULL || attr_name == NULL)
22811 /* Avoid demangling attr_name the second time on a second
22812 call for the same DIE. */
22813 if (!attr->canonical_string_p ())
22815 gdb::unique_xmalloc_ptr<char> demangled
22816 (gdb_demangle (attr_name, DMGL_TYPES));
22817 if (demangled == nullptr)
22820 attr->set_string_canonical (objfile->intern (demangled.get ()));
22821 attr_name = attr->as_string ();
22824 /* Strip any leading namespaces/classes, keep only the
22825 base name. DW_AT_name for named DIEs does not
22826 contain the prefixes. */
22827 const char *base = strrchr (attr_name, ':');
22828 if (base && base > attr_name && base[-1] == ':')
22839 if (!attr->canonical_string_p ())
22840 attr->set_string_canonical (dwarf2_canonicalize_name (attr_name, cu,
22842 return attr->as_string ();
22845 /* Return the die that this die in an extension of, or NULL if there
22846 is none. *EXT_CU is the CU containing DIE on input, and the CU
22847 containing the return value on output. */
22849 static struct die_info *
22850 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22852 struct attribute *attr;
22854 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22858 return follow_die_ref (die, attr, ext_cu);
22862 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22866 print_spaces (indent, f);
22867 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22868 dwarf_tag_name (die->tag), die->abbrev,
22869 sect_offset_str (die->sect_off));
22871 if (die->parent != NULL)
22873 print_spaces (indent, f);
22874 fprintf_unfiltered (f, " parent at offset: %s\n",
22875 sect_offset_str (die->parent->sect_off));
22878 print_spaces (indent, f);
22879 fprintf_unfiltered (f, " has children: %s\n",
22880 dwarf_bool_name (die->child != NULL));
22882 print_spaces (indent, f);
22883 fprintf_unfiltered (f, " attributes:\n");
22885 for (i = 0; i < die->num_attrs; ++i)
22887 print_spaces (indent, f);
22888 fprintf_unfiltered (f, " %s (%s) ",
22889 dwarf_attr_name (die->attrs[i].name),
22890 dwarf_form_name (die->attrs[i].form));
22892 switch (die->attrs[i].form)
22895 case DW_FORM_addrx:
22896 case DW_FORM_GNU_addr_index:
22897 fprintf_unfiltered (f, "address: ");
22898 fputs_filtered (hex_string (die->attrs[i].as_address ()), f);
22900 case DW_FORM_block2:
22901 case DW_FORM_block4:
22902 case DW_FORM_block:
22903 case DW_FORM_block1:
22904 fprintf_unfiltered (f, "block: size %s",
22905 pulongest (die->attrs[i].as_block ()->size));
22907 case DW_FORM_exprloc:
22908 fprintf_unfiltered (f, "expression: size %s",
22909 pulongest (die->attrs[i].as_block ()->size));
22911 case DW_FORM_data16:
22912 fprintf_unfiltered (f, "constant of 16 bytes");
22914 case DW_FORM_ref_addr:
22915 fprintf_unfiltered (f, "ref address: ");
22916 fputs_filtered (hex_string (die->attrs[i].as_unsigned ()), f);
22918 case DW_FORM_GNU_ref_alt:
22919 fprintf_unfiltered (f, "alt ref address: ");
22920 fputs_filtered (hex_string (die->attrs[i].as_unsigned ()), f);
22926 case DW_FORM_ref_udata:
22927 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22928 (long) (die->attrs[i].as_unsigned ()));
22930 case DW_FORM_data1:
22931 case DW_FORM_data2:
22932 case DW_FORM_data4:
22933 case DW_FORM_data8:
22934 case DW_FORM_udata:
22935 fprintf_unfiltered (f, "constant: %s",
22936 pulongest (die->attrs[i].as_unsigned ()));
22938 case DW_FORM_sec_offset:
22939 fprintf_unfiltered (f, "section offset: %s",
22940 pulongest (die->attrs[i].as_unsigned ()));
22942 case DW_FORM_ref_sig8:
22943 fprintf_unfiltered (f, "signature: %s",
22944 hex_string (die->attrs[i].as_signature ()));
22946 case DW_FORM_string:
22948 case DW_FORM_line_strp:
22950 case DW_FORM_GNU_str_index:
22951 case DW_FORM_GNU_strp_alt:
22952 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22953 die->attrs[i].as_string ()
22954 ? die->attrs[i].as_string () : "",
22955 die->attrs[i].canonical_string_p () ? "is" : "not");
22958 if (die->attrs[i].as_boolean ())
22959 fprintf_unfiltered (f, "flag: TRUE");
22961 fprintf_unfiltered (f, "flag: FALSE");
22963 case DW_FORM_flag_present:
22964 fprintf_unfiltered (f, "flag: TRUE");
22966 case DW_FORM_indirect:
22967 /* The reader will have reduced the indirect form to
22968 the "base form" so this form should not occur. */
22969 fprintf_unfiltered (f,
22970 "unexpected attribute form: DW_FORM_indirect");
22972 case DW_FORM_sdata:
22973 case DW_FORM_implicit_const:
22974 fprintf_unfiltered (f, "constant: %s",
22975 plongest (die->attrs[i].as_signed ()));
22978 fprintf_unfiltered (f, "unsupported attribute form: %d.",
22979 die->attrs[i].form);
22982 fprintf_unfiltered (f, "\n");
22987 dump_die_for_error (struct die_info *die)
22989 dump_die_shallow (gdb_stderr, 0, die);
22993 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22995 int indent = level * 4;
22997 gdb_assert (die != NULL);
22999 if (level >= max_level)
23002 dump_die_shallow (f, indent, die);
23004 if (die->child != NULL)
23006 print_spaces (indent, f);
23007 fprintf_unfiltered (f, " Children:");
23008 if (level + 1 < max_level)
23010 fprintf_unfiltered (f, "\n");
23011 dump_die_1 (f, level + 1, max_level, die->child);
23015 fprintf_unfiltered (f,
23016 " [not printed, max nesting level reached]\n");
23020 if (die->sibling != NULL && level > 0)
23022 dump_die_1 (f, level, max_level, die->sibling);
23026 /* This is called from the pdie macro in gdbinit.in.
23027 It's not static so gcc will keep a copy callable from gdb. */
23030 dump_die (struct die_info *die, int max_level)
23032 dump_die_1 (gdb_stdlog, 0, max_level, die);
23036 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
23040 slot = htab_find_slot_with_hash (cu->die_hash, die,
23041 to_underlying (die->sect_off),
23047 /* Follow reference or signature attribute ATTR of SRC_DIE.
23048 On entry *REF_CU is the CU of SRC_DIE.
23049 On exit *REF_CU is the CU of the result. */
23051 static struct die_info *
23052 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23053 struct dwarf2_cu **ref_cu)
23055 struct die_info *die;
23057 if (attr->form_is_ref ())
23058 die = follow_die_ref (src_die, attr, ref_cu);
23059 else if (attr->form == DW_FORM_ref_sig8)
23060 die = follow_die_sig (src_die, attr, ref_cu);
23063 dump_die_for_error (src_die);
23064 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23065 objfile_name ((*ref_cu)->per_objfile->objfile));
23071 /* Follow reference OFFSET.
23072 On entry *REF_CU is the CU of the source die referencing OFFSET.
23073 On exit *REF_CU is the CU of the result.
23074 Returns NULL if OFFSET is invalid. */
23076 static struct die_info *
23077 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23078 struct dwarf2_cu **ref_cu)
23080 struct die_info temp_die;
23081 struct dwarf2_cu *target_cu, *cu = *ref_cu;
23082 dwarf2_per_objfile *per_objfile = cu->per_objfile;
23084 gdb_assert (cu->per_cu != NULL);
23088 dwarf_read_debug_printf_v ("source CU offset: %s, target offset: %s, "
23089 "source CU contains target offset: %d",
23090 sect_offset_str (cu->per_cu->sect_off),
23091 sect_offset_str (sect_off),
23092 cu->header.offset_in_cu_p (sect_off));
23094 if (cu->per_cu->is_debug_types)
23096 /* .debug_types CUs cannot reference anything outside their CU.
23097 If they need to, they have to reference a signatured type via
23098 DW_FORM_ref_sig8. */
23099 if (!cu->header.offset_in_cu_p (sect_off))
23102 else if (offset_in_dwz != cu->per_cu->is_dwz
23103 || !cu->header.offset_in_cu_p (sect_off))
23105 struct dwarf2_per_cu_data *per_cu;
23107 per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23110 dwarf_read_debug_printf_v ("target CU offset: %s, "
23111 "target CU DIEs loaded: %d",
23112 sect_offset_str (per_cu->sect_off),
23113 per_objfile->get_cu (per_cu) != nullptr);
23115 /* If necessary, add it to the queue and load its DIEs.
23117 Even if maybe_queue_comp_unit doesn't require us to load the CU's DIEs,
23118 it doesn't mean they are currently loaded. Since we require them
23119 to be loaded, we must check for ourselves. */
23120 if (maybe_queue_comp_unit (cu, per_cu, per_objfile, cu->per_cu->lang)
23121 || per_objfile->get_cu (per_cu) == nullptr)
23122 load_full_comp_unit (per_cu, per_objfile, per_objfile->get_cu (per_cu),
23123 false, cu->per_cu->lang);
23125 target_cu = per_objfile->get_cu (per_cu);
23126 gdb_assert (target_cu != nullptr);
23128 else if (cu->dies == NULL)
23130 /* We're loading full DIEs during partial symbol reading. */
23131 gdb_assert (per_objfile->per_bfd->reading_partial_symbols);
23132 load_full_comp_unit (cu->per_cu, per_objfile, cu, false,
23136 *ref_cu = target_cu;
23137 temp_die.sect_off = sect_off;
23139 return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23141 to_underlying (sect_off));
23144 /* Follow reference attribute ATTR of SRC_DIE.
23145 On entry *REF_CU is the CU of SRC_DIE.
23146 On exit *REF_CU is the CU of the result. */
23148 static struct die_info *
23149 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23150 struct dwarf2_cu **ref_cu)
23152 sect_offset sect_off = attr->get_ref_die_offset ();
23153 struct dwarf2_cu *cu = *ref_cu;
23154 struct die_info *die;
23156 die = follow_die_offset (sect_off,
23157 (attr->form == DW_FORM_GNU_ref_alt
23158 || cu->per_cu->is_dwz),
23161 error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23162 "at %s [in module %s]"),
23163 sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23164 objfile_name (cu->per_objfile->objfile));
23171 struct dwarf2_locexpr_baton
23172 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23173 dwarf2_per_cu_data *per_cu,
23174 dwarf2_per_objfile *per_objfile,
23175 gdb::function_view<CORE_ADDR ()> get_frame_pc,
23176 bool resolve_abstract_p)
23178 struct die_info *die;
23179 struct attribute *attr;
23180 struct dwarf2_locexpr_baton retval;
23181 struct objfile *objfile = per_objfile->objfile;
23183 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
23185 cu = load_cu (per_cu, per_objfile, false);
23189 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23190 Instead just throw an error, not much else we can do. */
23191 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23192 sect_offset_str (sect_off), objfile_name (objfile));
23195 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23197 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23198 sect_offset_str (sect_off), objfile_name (objfile));
23200 attr = dwarf2_attr (die, DW_AT_location, cu);
23201 if (!attr && resolve_abstract_p
23202 && (per_objfile->per_bfd->abstract_to_concrete.find (die->sect_off)
23203 != per_objfile->per_bfd->abstract_to_concrete.end ()))
23205 CORE_ADDR pc = get_frame_pc ();
23206 CORE_ADDR baseaddr = objfile->text_section_offset ();
23207 struct gdbarch *gdbarch = objfile->arch ();
23209 for (const auto &cand_off
23210 : per_objfile->per_bfd->abstract_to_concrete[die->sect_off])
23212 struct dwarf2_cu *cand_cu = cu;
23213 struct die_info *cand
23214 = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu);
23217 || cand->parent->tag != DW_TAG_subprogram)
23220 CORE_ADDR pc_low, pc_high;
23221 get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23222 if (pc_low == ((CORE_ADDR) -1))
23224 pc_low = gdbarch_adjust_dwarf2_addr (gdbarch, pc_low + baseaddr);
23225 pc_high = gdbarch_adjust_dwarf2_addr (gdbarch, pc_high + baseaddr);
23226 if (!(pc_low <= pc && pc < pc_high))
23230 attr = dwarf2_attr (die, DW_AT_location, cu);
23237 /* DWARF: "If there is no such attribute, then there is no effect.".
23238 DATA is ignored if SIZE is 0. */
23240 retval.data = NULL;
23243 else if (attr->form_is_section_offset ())
23245 struct dwarf2_loclist_baton loclist_baton;
23246 CORE_ADDR pc = get_frame_pc ();
23249 fill_in_loclist_baton (cu, &loclist_baton, attr);
23251 retval.data = dwarf2_find_location_expression (&loclist_baton,
23253 retval.size = size;
23257 if (!attr->form_is_block ())
23258 error (_("Dwarf Error: DIE at %s referenced in module %s "
23259 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23260 sect_offset_str (sect_off), objfile_name (objfile));
23262 struct dwarf_block *block = attr->as_block ();
23263 retval.data = block->data;
23264 retval.size = block->size;
23266 retval.per_objfile = per_objfile;
23267 retval.per_cu = cu->per_cu;
23269 per_objfile->age_comp_units ();
23276 struct dwarf2_locexpr_baton
23277 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23278 dwarf2_per_cu_data *per_cu,
23279 dwarf2_per_objfile *per_objfile,
23280 gdb::function_view<CORE_ADDR ()> get_frame_pc)
23282 sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23284 return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, per_objfile,
23288 /* Write a constant of a given type as target-ordered bytes into
23291 static const gdb_byte *
23292 write_constant_as_bytes (struct obstack *obstack,
23293 enum bfd_endian byte_order,
23300 *len = TYPE_LENGTH (type);
23301 result = (gdb_byte *) obstack_alloc (obstack, *len);
23302 store_unsigned_integer (result, *len, byte_order, value);
23310 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23311 dwarf2_per_cu_data *per_cu,
23312 dwarf2_per_objfile *per_objfile,
23316 struct die_info *die;
23317 struct attribute *attr;
23318 const gdb_byte *result = NULL;
23321 enum bfd_endian byte_order;
23322 struct objfile *objfile = per_objfile->objfile;
23324 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
23326 cu = load_cu (per_cu, per_objfile, false);
23330 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23331 Instead just throw an error, not much else we can do. */
23332 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23333 sect_offset_str (sect_off), objfile_name (objfile));
23336 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23338 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23339 sect_offset_str (sect_off), objfile_name (objfile));
23341 attr = dwarf2_attr (die, DW_AT_const_value, cu);
23345 byte_order = (bfd_big_endian (objfile->obfd)
23346 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23348 switch (attr->form)
23351 case DW_FORM_addrx:
23352 case DW_FORM_GNU_addr_index:
23356 *len = cu->header.addr_size;
23357 tem = (gdb_byte *) obstack_alloc (obstack, *len);
23358 store_unsigned_integer (tem, *len, byte_order, attr->as_address ());
23362 case DW_FORM_string:
23365 case DW_FORM_GNU_str_index:
23366 case DW_FORM_GNU_strp_alt:
23367 /* The string is already allocated on the objfile obstack, point
23370 const char *attr_name = attr->as_string ();
23371 result = (const gdb_byte *) attr_name;
23372 *len = strlen (attr_name);
23375 case DW_FORM_block1:
23376 case DW_FORM_block2:
23377 case DW_FORM_block4:
23378 case DW_FORM_block:
23379 case DW_FORM_exprloc:
23380 case DW_FORM_data16:
23382 struct dwarf_block *block = attr->as_block ();
23383 result = block->data;
23384 *len = block->size;
23388 /* The DW_AT_const_value attributes are supposed to carry the
23389 symbol's value "represented as it would be on the target
23390 architecture." By the time we get here, it's already been
23391 converted to host endianness, so we just need to sign- or
23392 zero-extend it as appropriate. */
23393 case DW_FORM_data1:
23394 type = die_type (die, cu);
23395 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23396 if (result == NULL)
23397 result = write_constant_as_bytes (obstack, byte_order,
23400 case DW_FORM_data2:
23401 type = die_type (die, cu);
23402 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23403 if (result == NULL)
23404 result = write_constant_as_bytes (obstack, byte_order,
23407 case DW_FORM_data4:
23408 type = die_type (die, cu);
23409 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23410 if (result == NULL)
23411 result = write_constant_as_bytes (obstack, byte_order,
23414 case DW_FORM_data8:
23415 type = die_type (die, cu);
23416 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23417 if (result == NULL)
23418 result = write_constant_as_bytes (obstack, byte_order,
23422 case DW_FORM_sdata:
23423 case DW_FORM_implicit_const:
23424 type = die_type (die, cu);
23425 result = write_constant_as_bytes (obstack, byte_order,
23426 type, attr->as_signed (), len);
23429 case DW_FORM_udata:
23430 type = die_type (die, cu);
23431 result = write_constant_as_bytes (obstack, byte_order,
23432 type, attr->as_unsigned (), len);
23436 complaint (_("unsupported const value attribute form: '%s'"),
23437 dwarf_form_name (attr->form));
23447 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23448 dwarf2_per_cu_data *per_cu,
23449 dwarf2_per_objfile *per_objfile,
23450 const char **var_name)
23452 struct die_info *die;
23454 dwarf2_cu *cu = per_objfile->get_cu (per_cu);
23456 cu = load_cu (per_cu, per_objfile, false);
23461 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23465 if (var_name != nullptr)
23466 *var_name = var_decl_name (die, cu);
23467 return die_type (die, cu);
23473 dwarf2_get_die_type (cu_offset die_offset,
23474 dwarf2_per_cu_data *per_cu,
23475 dwarf2_per_objfile *per_objfile)
23477 sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23478 return get_die_type_at_offset (die_offset_sect, per_cu, per_objfile);
23481 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23482 On entry *REF_CU is the CU of SRC_DIE.
23483 On exit *REF_CU is the CU of the result.
23484 Returns NULL if the referenced DIE isn't found. */
23486 static struct die_info *
23487 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23488 struct dwarf2_cu **ref_cu)
23490 struct die_info temp_die;
23491 struct dwarf2_cu *sig_cu;
23492 struct die_info *die;
23493 dwarf2_per_objfile *per_objfile = (*ref_cu)->per_objfile;
23496 /* While it might be nice to assert sig_type->type == NULL here,
23497 we can get here for DW_AT_imported_declaration where we need
23498 the DIE not the type. */
23500 /* If necessary, add it to the queue and load its DIEs.
23502 Even if maybe_queue_comp_unit doesn't require us to load the CU's DIEs,
23503 it doesn't mean they are currently loaded. Since we require them
23504 to be loaded, we must check for ourselves. */
23505 if (maybe_queue_comp_unit (*ref_cu, sig_type, per_objfile,
23507 || per_objfile->get_cu (sig_type) == nullptr)
23508 read_signatured_type (sig_type, per_objfile);
23510 sig_cu = per_objfile->get_cu (sig_type);
23511 gdb_assert (sig_cu != NULL);
23512 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23513 temp_die.sect_off = sig_type->type_offset_in_section;
23514 die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23515 to_underlying (temp_die.sect_off));
23518 /* For .gdb_index version 7 keep track of included TUs.
23519 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
23520 if (per_objfile->per_bfd->index_table != NULL
23521 && per_objfile->per_bfd->index_table->version <= 7)
23523 (*ref_cu)->per_cu->imported_symtabs_push (sig_cu->per_cu);
23533 /* Follow signatured type referenced by ATTR in SRC_DIE.
23534 On entry *REF_CU is the CU of SRC_DIE.
23535 On exit *REF_CU is the CU of the result.
23536 The result is the DIE of the type.
23537 If the referenced type cannot be found an error is thrown. */
23539 static struct die_info *
23540 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23541 struct dwarf2_cu **ref_cu)
23543 ULONGEST signature = attr->as_signature ();
23544 struct signatured_type *sig_type;
23545 struct die_info *die;
23547 gdb_assert (attr->form == DW_FORM_ref_sig8);
23549 sig_type = lookup_signatured_type (*ref_cu, signature);
23550 /* sig_type will be NULL if the signatured type is missing from
23552 if (sig_type == NULL)
23554 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23555 " from DIE at %s [in module %s]"),
23556 hex_string (signature), sect_offset_str (src_die->sect_off),
23557 objfile_name ((*ref_cu)->per_objfile->objfile));
23560 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23563 dump_die_for_error (src_die);
23564 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23565 " from DIE at %s [in module %s]"),
23566 hex_string (signature), sect_offset_str (src_die->sect_off),
23567 objfile_name ((*ref_cu)->per_objfile->objfile));
23573 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23574 reading in and processing the type unit if necessary. */
23576 static struct type *
23577 get_signatured_type (struct die_info *die, ULONGEST signature,
23578 struct dwarf2_cu *cu)
23580 dwarf2_per_objfile *per_objfile = cu->per_objfile;
23581 struct signatured_type *sig_type;
23582 struct dwarf2_cu *type_cu;
23583 struct die_info *type_die;
23586 sig_type = lookup_signatured_type (cu, signature);
23587 /* sig_type will be NULL if the signatured type is missing from
23589 if (sig_type == NULL)
23591 complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23592 " from DIE at %s [in module %s]"),
23593 hex_string (signature), sect_offset_str (die->sect_off),
23594 objfile_name (per_objfile->objfile));
23595 return build_error_marker_type (cu, die);
23598 /* If we already know the type we're done. */
23599 type = per_objfile->get_type_for_signatured_type (sig_type);
23600 if (type != nullptr)
23604 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23605 if (type_die != NULL)
23607 /* N.B. We need to call get_die_type to ensure only one type for this DIE
23608 is created. This is important, for example, because for c++ classes
23609 we need TYPE_NAME set which is only done by new_symbol. Blech. */
23610 type = read_type_die (type_die, type_cu);
23613 complaint (_("Dwarf Error: Cannot build signatured type %s"
23614 " referenced from DIE at %s [in module %s]"),
23615 hex_string (signature), sect_offset_str (die->sect_off),
23616 objfile_name (per_objfile->objfile));
23617 type = build_error_marker_type (cu, die);
23622 complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23623 " from DIE at %s [in module %s]"),
23624 hex_string (signature), sect_offset_str (die->sect_off),
23625 objfile_name (per_objfile->objfile));
23626 type = build_error_marker_type (cu, die);
23629 per_objfile->set_type_for_signatured_type (sig_type, type);
23634 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23635 reading in and processing the type unit if necessary. */
23637 static struct type *
23638 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23639 struct dwarf2_cu *cu) /* ARI: editCase function */
23641 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
23642 if (attr->form_is_ref ())
23644 struct dwarf2_cu *type_cu = cu;
23645 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23647 return read_type_die (type_die, type_cu);
23649 else if (attr->form == DW_FORM_ref_sig8)
23651 return get_signatured_type (die, attr->as_signature (), cu);
23655 dwarf2_per_objfile *per_objfile = cu->per_objfile;
23657 complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23658 " at %s [in module %s]"),
23659 dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23660 objfile_name (per_objfile->objfile));
23661 return build_error_marker_type (cu, die);
23665 /* Load the DIEs associated with type unit PER_CU into memory. */
23668 load_full_type_unit (dwarf2_per_cu_data *per_cu,
23669 dwarf2_per_objfile *per_objfile)
23671 struct signatured_type *sig_type;
23673 /* Caller is responsible for ensuring type_unit_groups don't get here. */
23674 gdb_assert (! per_cu->type_unit_group_p ());
23676 /* We have the per_cu, but we need the signatured_type.
23677 Fortunately this is an easy translation. */
23678 gdb_assert (per_cu->is_debug_types);
23679 sig_type = (struct signatured_type *) per_cu;
23681 gdb_assert (per_objfile->get_cu (per_cu) == nullptr);
23683 read_signatured_type (sig_type, per_objfile);
23685 gdb_assert (per_objfile->get_cu (per_cu) != nullptr);
23688 /* Read in a signatured type and build its CU and DIEs.
23689 If the type is a stub for the real type in a DWO file,
23690 read in the real type from the DWO file as well. */
23693 read_signatured_type (signatured_type *sig_type,
23694 dwarf2_per_objfile *per_objfile)
23696 gdb_assert (sig_type->is_debug_types);
23697 gdb_assert (per_objfile->get_cu (sig_type) == nullptr);
23699 cutu_reader reader (sig_type, per_objfile, nullptr, nullptr, false);
23701 if (!reader.dummy_p)
23703 struct dwarf2_cu *cu = reader.cu;
23704 const gdb_byte *info_ptr = reader.info_ptr;
23706 gdb_assert (cu->die_hash == NULL);
23708 htab_create_alloc_ex (cu->header.length / 12,
23712 &cu->comp_unit_obstack,
23713 hashtab_obstack_allocate,
23714 dummy_obstack_deallocate);
23716 if (reader.comp_unit_die->has_children)
23717 reader.comp_unit_die->child
23718 = read_die_and_siblings (&reader, info_ptr, &info_ptr,
23719 reader.comp_unit_die);
23720 cu->dies = reader.comp_unit_die;
23721 /* comp_unit_die is not stored in die_hash, no need. */
23723 /* We try not to read any attributes in this function, because
23724 not all CUs needed for references have been loaded yet, and
23725 symbol table processing isn't initialized. But we have to
23726 set the CU language, or we won't be able to build types
23727 correctly. Similarly, if we do not read the producer, we can
23728 not apply producer-specific interpretation. */
23729 prepare_one_comp_unit (cu, cu->dies, language_minimal);
23734 sig_type->tu_read = 1;
23737 /* Decode simple location descriptions.
23738 Given a pointer to a dwarf block that defines a location, compute
23739 the location and return the value. If COMPUTED is non-null, it is
23740 set to true to indicate that decoding was successful, and false
23741 otherwise. If COMPUTED is null, then this function may emit a
23745 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu, bool *computed)
23747 struct objfile *objfile = cu->per_objfile->objfile;
23749 size_t size = blk->size;
23750 const gdb_byte *data = blk->data;
23751 CORE_ADDR stack[64];
23753 unsigned int bytes_read, unsnd;
23756 if (computed != nullptr)
23762 stack[++stacki] = 0;
23801 stack[++stacki] = op - DW_OP_lit0;
23836 stack[++stacki] = op - DW_OP_reg0;
23839 if (computed == nullptr)
23840 dwarf2_complex_location_expr_complaint ();
23847 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23849 stack[++stacki] = unsnd;
23852 if (computed == nullptr)
23853 dwarf2_complex_location_expr_complaint ();
23860 stack[++stacki] = cu->header.read_address (objfile->obfd, &data[i],
23865 case DW_OP_const1u:
23866 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23870 case DW_OP_const1s:
23871 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23875 case DW_OP_const2u:
23876 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23880 case DW_OP_const2s:
23881 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23885 case DW_OP_const4u:
23886 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23890 case DW_OP_const4s:
23891 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23895 case DW_OP_const8u:
23896 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23901 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23907 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23912 stack[stacki + 1] = stack[stacki];
23917 stack[stacki - 1] += stack[stacki];
23921 case DW_OP_plus_uconst:
23922 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23928 stack[stacki - 1] -= stack[stacki];
23933 /* If we're not the last op, then we definitely can't encode
23934 this using GDB's address_class enum. This is valid for partial
23935 global symbols, although the variable's address will be bogus
23939 if (computed == nullptr)
23940 dwarf2_complex_location_expr_complaint ();
23946 case DW_OP_GNU_push_tls_address:
23947 case DW_OP_form_tls_address:
23948 /* The top of the stack has the offset from the beginning
23949 of the thread control block at which the variable is located. */
23950 /* Nothing should follow this operator, so the top of stack would
23952 /* This is valid for partial global symbols, but the variable's
23953 address will be bogus in the psymtab. Make it always at least
23954 non-zero to not look as a variable garbage collected by linker
23955 which have DW_OP_addr 0. */
23958 if (computed == nullptr)
23959 dwarf2_complex_location_expr_complaint ();
23966 case DW_OP_GNU_uninit:
23967 if (computed != nullptr)
23972 case DW_OP_GNU_addr_index:
23973 case DW_OP_GNU_const_index:
23974 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23980 if (computed == nullptr)
23982 const char *name = get_DW_OP_name (op);
23985 complaint (_("unsupported stack op: '%s'"),
23988 complaint (_("unsupported stack op: '%02x'"),
23992 return (stack[stacki]);
23995 /* Enforce maximum stack depth of SIZE-1 to avoid writing
23996 outside of the allocated space. Also enforce minimum>0. */
23997 if (stacki >= ARRAY_SIZE (stack) - 1)
23999 if (computed == nullptr)
24000 complaint (_("location description stack overflow"));
24006 if (computed == nullptr)
24007 complaint (_("location description stack underflow"));
24012 if (computed != nullptr)
24014 return (stack[stacki]);
24017 /* memory allocation interface */
24019 static struct dwarf_block *
24020 dwarf_alloc_block (struct dwarf2_cu *cu)
24022 return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
24025 static struct die_info *
24026 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
24028 struct die_info *die;
24029 size_t size = sizeof (struct die_info);
24032 size += (num_attrs - 1) * sizeof (struct attribute);
24034 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
24035 memset (die, 0, sizeof (struct die_info));
24041 /* Macro support. */
24043 /* An overload of dwarf_decode_macros that finds the correct section
24044 and ensures it is read in before calling the other overload. */
24047 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24048 int section_is_gnu)
24050 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24051 struct objfile *objfile = per_objfile->objfile;
24052 const struct line_header *lh = cu->line_header;
24053 unsigned int offset_size = cu->header.offset_size;
24054 struct dwarf2_section_info *section;
24055 const char *section_name;
24057 if (cu->dwo_unit != nullptr)
24059 if (section_is_gnu)
24061 section = &cu->dwo_unit->dwo_file->sections.macro;
24062 section_name = ".debug_macro.dwo";
24066 section = &cu->dwo_unit->dwo_file->sections.macinfo;
24067 section_name = ".debug_macinfo.dwo";
24072 if (section_is_gnu)
24074 section = &per_objfile->per_bfd->macro;
24075 section_name = ".debug_macro";
24079 section = &per_objfile->per_bfd->macinfo;
24080 section_name = ".debug_macinfo";
24084 section->read (objfile);
24085 if (section->buffer == nullptr)
24087 complaint (_("missing %s section"), section_name);
24091 buildsym_compunit *builder = cu->get_builder ();
24093 struct dwarf2_section_info *str_offsets_section;
24094 struct dwarf2_section_info *str_section;
24095 ULONGEST str_offsets_base;
24097 if (cu->dwo_unit != nullptr)
24099 str_offsets_section = &cu->dwo_unit->dwo_file
24100 ->sections.str_offsets;
24101 str_section = &cu->dwo_unit->dwo_file->sections.str;
24102 str_offsets_base = cu->header.addr_size;
24106 str_offsets_section = &per_objfile->per_bfd->str_offsets;
24107 str_section = &per_objfile->per_bfd->str;
24108 str_offsets_base = *cu->str_offsets_base;
24111 dwarf_decode_macros (per_objfile, builder, section, lh,
24112 offset_size, offset, str_section, str_offsets_section,
24113 str_offsets_base, section_is_gnu);
24116 /* Return the .debug_loc section to use for CU.
24117 For DWO files use .debug_loc.dwo. */
24119 static struct dwarf2_section_info *
24120 cu_debug_loc_section (struct dwarf2_cu *cu)
24122 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24126 struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24128 return cu->header.version >= 5 ? §ions->loclists : §ions->loc;
24130 return (cu->header.version >= 5 ? &per_objfile->per_bfd->loclists
24131 : &per_objfile->per_bfd->loc);
24134 /* Return the .debug_rnglists section to use for CU. */
24135 static struct dwarf2_section_info *
24136 cu_debug_rnglists_section (struct dwarf2_cu *cu, dwarf_tag tag)
24138 if (cu->header.version < 5)
24139 error (_(".debug_rnglists section cannot be used in DWARF %d"),
24140 cu->header.version);
24141 struct dwarf2_per_objfile *dwarf2_per_objfile = cu->per_objfile;
24143 /* Make sure we read the .debug_rnglists section from the file that
24144 contains the DW_AT_ranges attribute we are reading. Normally that
24145 would be the .dwo file, if there is one. However for DW_TAG_compile_unit
24146 or DW_TAG_skeleton unit, we always want to read from objfile/linked
24148 if (cu->dwo_unit != nullptr
24149 && tag != DW_TAG_compile_unit
24150 && tag != DW_TAG_skeleton_unit)
24152 struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24154 if (sections->rnglists.size > 0)
24155 return §ions->rnglists;
24157 error (_(".debug_rnglists section is missing from .dwo file."));
24159 return &dwarf2_per_objfile->per_bfd->rnglists;
24162 /* A helper function that fills in a dwarf2_loclist_baton. */
24165 fill_in_loclist_baton (struct dwarf2_cu *cu,
24166 struct dwarf2_loclist_baton *baton,
24167 const struct attribute *attr)
24169 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24170 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24172 section->read (per_objfile->objfile);
24174 baton->per_objfile = per_objfile;
24175 baton->per_cu = cu->per_cu;
24176 gdb_assert (baton->per_cu);
24177 /* We don't know how long the location list is, but make sure we
24178 don't run off the edge of the section. */
24179 baton->size = section->size - attr->as_unsigned ();
24180 baton->data = section->buffer + attr->as_unsigned ();
24181 if (cu->base_address.has_value ())
24182 baton->base_address = *cu->base_address;
24184 baton->base_address = 0;
24185 baton->from_dwo = cu->dwo_unit != NULL;
24189 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24190 struct dwarf2_cu *cu, int is_block)
24192 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24193 struct objfile *objfile = per_objfile->objfile;
24194 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24196 if (attr->form_is_section_offset ()
24197 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24198 the section. If so, fall through to the complaint in the
24200 && attr->as_unsigned () < section->get_size (objfile))
24202 struct dwarf2_loclist_baton *baton;
24204 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24206 fill_in_loclist_baton (cu, baton, attr);
24208 if (!cu->base_address.has_value ())
24209 complaint (_("Location list used without "
24210 "specifying the CU base address."));
24212 SYMBOL_ACLASS_INDEX (sym) = (is_block
24213 ? dwarf2_loclist_block_index
24214 : dwarf2_loclist_index);
24215 SYMBOL_LOCATION_BATON (sym) = baton;
24219 struct dwarf2_locexpr_baton *baton;
24221 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24222 baton->per_objfile = per_objfile;
24223 baton->per_cu = cu->per_cu;
24224 gdb_assert (baton->per_cu);
24226 if (attr->form_is_block ())
24228 /* Note that we're just copying the block's data pointer
24229 here, not the actual data. We're still pointing into the
24230 info_buffer for SYM's objfile; right now we never release
24231 that buffer, but when we do clean up properly this may
24233 struct dwarf_block *block = attr->as_block ();
24234 baton->size = block->size;
24235 baton->data = block->data;
24239 dwarf2_invalid_attrib_class_complaint ("location description",
24240 sym->natural_name ());
24244 SYMBOL_ACLASS_INDEX (sym) = (is_block
24245 ? dwarf2_locexpr_block_index
24246 : dwarf2_locexpr_index);
24247 SYMBOL_LOCATION_BATON (sym) = baton;
24253 const comp_unit_head *
24254 dwarf2_per_cu_data::get_header () const
24256 if (!m_header_read_in)
24258 const gdb_byte *info_ptr
24259 = this->section->buffer + to_underlying (this->sect_off);
24261 memset (&m_header, 0, sizeof (m_header));
24263 read_comp_unit_head (&m_header, info_ptr, this->section,
24264 rcuh_kind::COMPILE);
24266 m_header_read_in = true;
24275 dwarf2_per_cu_data::addr_size () const
24277 return this->get_header ()->addr_size;
24283 dwarf2_per_cu_data::offset_size () const
24285 return this->get_header ()->offset_size;
24291 dwarf2_per_cu_data::ref_addr_size () const
24293 const comp_unit_head *header = this->get_header ();
24295 if (header->version == 2)
24296 return header->addr_size;
24298 return header->offset_size;
24301 /* A helper function for dwarf2_find_containing_comp_unit that returns
24302 the index of the result, and that searches a vector. It will
24303 return a result even if the offset in question does not actually
24304 occur in any CU. This is separate so that it can be unit
24308 dwarf2_find_containing_comp_unit
24309 (sect_offset sect_off,
24310 unsigned int offset_in_dwz,
24311 const std::vector<dwarf2_per_cu_data_up> &all_comp_units)
24316 high = all_comp_units.size () - 1;
24319 struct dwarf2_per_cu_data *mid_cu;
24320 int mid = low + (high - low) / 2;
24322 mid_cu = all_comp_units[mid].get ();
24323 if (mid_cu->is_dwz > offset_in_dwz
24324 || (mid_cu->is_dwz == offset_in_dwz
24325 && mid_cu->sect_off + mid_cu->length > sect_off))
24330 gdb_assert (low == high);
24334 /* Locate the .debug_info compilation unit from CU's objfile which contains
24335 the DIE at OFFSET. Raises an error on failure. */
24337 static struct dwarf2_per_cu_data *
24338 dwarf2_find_containing_comp_unit (sect_offset sect_off,
24339 unsigned int offset_in_dwz,
24340 dwarf2_per_objfile *per_objfile)
24342 int low = dwarf2_find_containing_comp_unit
24343 (sect_off, offset_in_dwz, per_objfile->per_bfd->all_comp_units);
24344 dwarf2_per_cu_data *this_cu
24345 = per_objfile->per_bfd->all_comp_units[low].get ();
24347 if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
24349 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
24350 error (_("Dwarf Error: could not find partial DIE containing "
24351 "offset %s [in module %s]"),
24352 sect_offset_str (sect_off),
24353 bfd_get_filename (per_objfile->objfile->obfd));
24355 gdb_assert (per_objfile->per_bfd->all_comp_units[low-1]->sect_off
24357 return per_objfile->per_bfd->all_comp_units[low - 1].get ();
24361 if (low == per_objfile->per_bfd->all_comp_units.size () - 1
24362 && sect_off >= this_cu->sect_off + this_cu->length)
24363 error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
24364 gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
24371 namespace selftests {
24372 namespace find_containing_comp_unit {
24377 dwarf2_per_cu_data_up one (new dwarf2_per_cu_data);
24378 dwarf2_per_cu_data *one_ptr = one.get ();
24379 dwarf2_per_cu_data_up two (new dwarf2_per_cu_data);
24380 dwarf2_per_cu_data *two_ptr = two.get ();
24381 dwarf2_per_cu_data_up three (new dwarf2_per_cu_data);
24382 dwarf2_per_cu_data *three_ptr = three.get ();
24383 dwarf2_per_cu_data_up four (new dwarf2_per_cu_data);
24384 dwarf2_per_cu_data *four_ptr = four.get ();
24387 two->sect_off = sect_offset (one->length);
24392 four->sect_off = sect_offset (three->length);
24396 std::vector<dwarf2_per_cu_data_up> units;
24397 units.push_back (std::move (one));
24398 units.push_back (std::move (two));
24399 units.push_back (std::move (three));
24400 units.push_back (std::move (four));
24404 result = dwarf2_find_containing_comp_unit (sect_offset (0), 0, units);
24405 SELF_CHECK (units[result].get () == one_ptr);
24406 result = dwarf2_find_containing_comp_unit (sect_offset (3), 0, units);
24407 SELF_CHECK (units[result].get () == one_ptr);
24408 result = dwarf2_find_containing_comp_unit (sect_offset (5), 0, units);
24409 SELF_CHECK (units[result].get () == two_ptr);
24411 result = dwarf2_find_containing_comp_unit (sect_offset (0), 1, units);
24412 SELF_CHECK (units[result].get () == three_ptr);
24413 result = dwarf2_find_containing_comp_unit (sect_offset (3), 1, units);
24414 SELF_CHECK (units[result].get () == three_ptr);
24415 result = dwarf2_find_containing_comp_unit (sect_offset (5), 1, units);
24416 SELF_CHECK (units[result].get () == four_ptr);
24422 #endif /* GDB_SELF_TEST */
24424 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
24427 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
24428 enum language pretend_language)
24430 struct attribute *attr;
24432 cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
24434 /* Set the language we're debugging. */
24435 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
24436 if (cu->producer != nullptr
24437 && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
24439 /* The XLCL doesn't generate DW_LANG_OpenCL because this
24440 attribute is not standardised yet. As a workaround for the
24441 language detection we fall back to the DW_AT_producer
24443 cu->per_cu->lang = language_opencl;
24445 else if (cu->producer != nullptr
24446 && strstr (cu->producer, "GNU Go ") != NULL)
24448 /* Similar hack for Go. */
24449 cu->per_cu->lang = language_go;
24451 else if (attr != nullptr)
24452 cu->per_cu->lang = dwarf_lang_to_enum_language (attr->constant_value (0));
24454 cu->per_cu->lang = pretend_language;
24455 cu->language_defn = language_def (cu->per_cu->lang);
24461 dwarf2_per_objfile::get_cu (dwarf2_per_cu_data *per_cu)
24463 auto it = m_dwarf2_cus.find (per_cu);
24464 if (it == m_dwarf2_cus.end ())
24473 dwarf2_per_objfile::set_cu (dwarf2_per_cu_data *per_cu, dwarf2_cu *cu)
24475 gdb_assert (this->get_cu (per_cu) == nullptr);
24477 m_dwarf2_cus[per_cu] = cu;
24483 dwarf2_per_objfile::age_comp_units ()
24485 dwarf_read_debug_printf_v ("running");
24487 /* This is not expected to be called in the middle of CU expansion. There is
24488 an invariant that if a CU is in the CUs-to-expand queue, its DIEs are
24489 loaded in memory. Calling age_comp_units while the queue is in use could
24490 make us free the DIEs for a CU that is in the queue and therefore break
24492 gdb_assert (!this->per_bfd->queue.has_value ());
24494 /* Start by clearing all marks. */
24495 for (auto pair : m_dwarf2_cus)
24496 pair.second->clear_mark ();
24498 /* Traverse all CUs, mark them and their dependencies if used recently
24500 for (auto pair : m_dwarf2_cus)
24502 dwarf2_cu *cu = pair.second;
24505 if (cu->last_used <= dwarf_max_cache_age)
24509 /* Delete all CUs still not marked. */
24510 for (auto it = m_dwarf2_cus.begin (); it != m_dwarf2_cus.end ();)
24512 dwarf2_cu *cu = it->second;
24514 if (!cu->is_marked ())
24516 dwarf_read_debug_printf_v ("deleting old CU %s",
24517 sect_offset_str (cu->per_cu->sect_off));
24519 it = m_dwarf2_cus.erase (it);
24529 dwarf2_per_objfile::remove_cu (dwarf2_per_cu_data *per_cu)
24531 auto it = m_dwarf2_cus.find (per_cu);
24532 if (it == m_dwarf2_cus.end ())
24537 m_dwarf2_cus.erase (it);
24540 dwarf2_per_objfile::~dwarf2_per_objfile ()
24545 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
24546 We store these in a hash table separate from the DIEs, and preserve them
24547 when the DIEs are flushed out of cache.
24549 The CU "per_cu" pointer is needed because offset alone is not enough to
24550 uniquely identify the type. A file may have multiple .debug_types sections,
24551 or the type may come from a DWO file. Furthermore, while it's more logical
24552 to use per_cu->section+offset, with Fission the section with the data is in
24553 the DWO file but we don't know that section at the point we need it.
24554 We have to use something in dwarf2_per_cu_data (or the pointer to it)
24555 because we can enter the lookup routine, get_die_type_at_offset, from
24556 outside this file, and thus won't necessarily have PER_CU->cu.
24557 Fortunately, PER_CU is stable for the life of the objfile. */
24559 struct dwarf2_per_cu_offset_and_type
24561 const struct dwarf2_per_cu_data *per_cu;
24562 sect_offset sect_off;
24566 /* Hash function for a dwarf2_per_cu_offset_and_type. */
24569 per_cu_offset_and_type_hash (const void *item)
24571 const struct dwarf2_per_cu_offset_and_type *ofs
24572 = (const struct dwarf2_per_cu_offset_and_type *) item;
24574 return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
24577 /* Equality function for a dwarf2_per_cu_offset_and_type. */
24580 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
24582 const struct dwarf2_per_cu_offset_and_type *ofs_lhs
24583 = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
24584 const struct dwarf2_per_cu_offset_and_type *ofs_rhs
24585 = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
24587 return (ofs_lhs->per_cu == ofs_rhs->per_cu
24588 && ofs_lhs->sect_off == ofs_rhs->sect_off);
24591 /* Set the type associated with DIE to TYPE. Save it in CU's hash
24592 table if necessary. For convenience, return TYPE.
24594 The DIEs reading must have careful ordering to:
24595 * Not cause infinite loops trying to read in DIEs as a prerequisite for
24596 reading current DIE.
24597 * Not trying to dereference contents of still incompletely read in types
24598 while reading in other DIEs.
24599 * Enable referencing still incompletely read in types just by a pointer to
24600 the type without accessing its fields.
24602 Therefore caller should follow these rules:
24603 * Try to fetch any prerequisite types we may need to build this DIE type
24604 before building the type and calling set_die_type.
24605 * After building type call set_die_type for current DIE as soon as
24606 possible before fetching more types to complete the current type.
24607 * Make the type as complete as possible before fetching more types. */
24609 static struct type *
24610 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
24611 bool skip_data_location)
24613 dwarf2_per_objfile *per_objfile = cu->per_objfile;
24614 struct dwarf2_per_cu_offset_and_type **slot, ofs;
24615 struct objfile *objfile = per_objfile->objfile;
24616 struct attribute *attr;
24617 struct dynamic_prop prop;
24619 /* For Ada types, make sure that the gnat-specific data is always
24620 initialized (if not already set). There are a few types where
24621 we should not be doing so, because the type-specific area is
24622 already used to hold some other piece of info (eg: TYPE_CODE_FLT
24623 where the type-specific area is used to store the floatformat).
24624 But this is not a problem, because the gnat-specific information
24625 is actually not needed for these types. */
24626 if (need_gnat_info (cu)
24627 && type->code () != TYPE_CODE_FUNC
24628 && type->code () != TYPE_CODE_FLT
24629 && type->code () != TYPE_CODE_METHODPTR
24630 && type->code () != TYPE_CODE_MEMBERPTR
24631 && type->code () != TYPE_CODE_METHOD
24632 && type->code () != TYPE_CODE_FIXED_POINT
24633 && !HAVE_GNAT_AUX_INFO (type))
24634 INIT_GNAT_SPECIFIC (type);
24636 /* Read DW_AT_allocated and set in type. */
24637 attr = dwarf2_attr (die, DW_AT_allocated, cu);
24640 struct type *prop_type = cu->addr_sized_int_type (false);
24641 if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
24642 type->add_dyn_prop (DYN_PROP_ALLOCATED, prop);
24645 /* Read DW_AT_associated and set in type. */
24646 attr = dwarf2_attr (die, DW_AT_associated, cu);
24649 struct type *prop_type = cu->addr_sized_int_type (false);
24650 if (attr_to_dynamic_prop (attr, die, cu, &prop, prop_type))
24651 type->add_dyn_prop (DYN_PROP_ASSOCIATED, prop);
24654 /* Read DW_AT_data_location and set in type. */
24655 if (!skip_data_location)
24657 attr = dwarf2_attr (die, DW_AT_data_location, cu);
24658 if (attr_to_dynamic_prop (attr, die, cu, &prop, cu->addr_type ()))
24659 type->add_dyn_prop (DYN_PROP_DATA_LOCATION, prop);
24662 if (per_objfile->die_type_hash == NULL)
24663 per_objfile->die_type_hash
24664 = htab_up (htab_create_alloc (127,
24665 per_cu_offset_and_type_hash,
24666 per_cu_offset_and_type_eq,
24667 NULL, xcalloc, xfree));
24669 ofs.per_cu = cu->per_cu;
24670 ofs.sect_off = die->sect_off;
24672 slot = (struct dwarf2_per_cu_offset_and_type **)
24673 htab_find_slot (per_objfile->die_type_hash.get (), &ofs, INSERT);
24675 complaint (_("A problem internal to GDB: DIE %s has type already set"),
24676 sect_offset_str (die->sect_off));
24677 *slot = XOBNEW (&objfile->objfile_obstack,
24678 struct dwarf2_per_cu_offset_and_type);
24683 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
24684 or return NULL if the die does not have a saved type. */
24686 static struct type *
24687 get_die_type_at_offset (sect_offset sect_off,
24688 dwarf2_per_cu_data *per_cu,
24689 dwarf2_per_objfile *per_objfile)
24691 struct dwarf2_per_cu_offset_and_type *slot, ofs;
24693 if (per_objfile->die_type_hash == NULL)
24696 ofs.per_cu = per_cu;
24697 ofs.sect_off = sect_off;
24698 slot = ((struct dwarf2_per_cu_offset_and_type *)
24699 htab_find (per_objfile->die_type_hash.get (), &ofs));
24706 /* Look up the type for DIE in CU in die_type_hash,
24707 or return NULL if DIE does not have a saved type. */
24709 static struct type *
24710 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
24712 return get_die_type_at_offset (die->sect_off, cu->per_cu, cu->per_objfile);
24715 /* Trivial hash function for partial_die_info: the hash value of a DIE
24716 is its offset in .debug_info for this objfile. */
24719 partial_die_hash (const void *item)
24721 const struct partial_die_info *part_die
24722 = (const struct partial_die_info *) item;
24724 return to_underlying (part_die->sect_off);
24727 /* Trivial comparison function for partial_die_info structures: two DIEs
24728 are equal if they have the same offset. */
24731 partial_die_eq (const void *item_lhs, const void *item_rhs)
24733 const struct partial_die_info *part_die_lhs
24734 = (const struct partial_die_info *) item_lhs;
24735 const struct partial_die_info *part_die_rhs
24736 = (const struct partial_die_info *) item_rhs;
24738 return part_die_lhs->sect_off == part_die_rhs->sect_off;
24741 struct cmd_list_element *set_dwarf_cmdlist;
24742 struct cmd_list_element *show_dwarf_cmdlist;
24745 show_check_physname (struct ui_file *file, int from_tty,
24746 struct cmd_list_element *c, const char *value)
24748 fprintf_filtered (file,
24749 _("Whether to check \"physname\" is %s.\n"),
24753 void _initialize_dwarf2_read ();
24755 _initialize_dwarf2_read ()
24757 add_basic_prefix_cmd ("dwarf", class_maintenance, _("\
24758 Set DWARF specific variables.\n\
24759 Configure DWARF variables such as the cache size."),
24760 &set_dwarf_cmdlist,
24761 0/*allow-unknown*/, &maintenance_set_cmdlist);
24763 add_show_prefix_cmd ("dwarf", class_maintenance, _("\
24764 Show DWARF specific variables.\n\
24765 Show DWARF variables such as the cache size."),
24766 &show_dwarf_cmdlist,
24767 0/*allow-unknown*/, &maintenance_show_cmdlist);
24769 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
24770 &dwarf_max_cache_age, _("\
24771 Set the upper bound on the age of cached DWARF compilation units."), _("\
24772 Show the upper bound on the age of cached DWARF compilation units."), _("\
24773 A higher limit means that cached compilation units will be stored\n\
24774 in memory longer, and more total memory will be used. Zero disables\n\
24775 caching, which can slow down startup."),
24777 show_dwarf_max_cache_age,
24778 &set_dwarf_cmdlist,
24779 &show_dwarf_cmdlist);
24781 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
24782 Set debugging of the DWARF reader."), _("\
24783 Show debugging of the DWARF reader."), _("\
24784 When enabled (non-zero), debugging messages are printed during DWARF\n\
24785 reading and symtab expansion. A value of 1 (one) provides basic\n\
24786 information. A value greater than 1 provides more verbose information."),
24789 &setdebuglist, &showdebuglist);
24791 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
24792 Set debugging of the DWARF DIE reader."), _("\
24793 Show debugging of the DWARF DIE reader."), _("\
24794 When enabled (non-zero), DIEs are dumped after they are read in.\n\
24795 The value is the maximum depth to print."),
24798 &setdebuglist, &showdebuglist);
24800 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
24801 Set debugging of the dwarf line reader."), _("\
24802 Show debugging of the dwarf line reader."), _("\
24803 When enabled (non-zero), line number entries are dumped as they are read in.\n\
24804 A value of 1 (one) provides basic information.\n\
24805 A value greater than 1 provides more verbose information."),
24808 &setdebuglist, &showdebuglist);
24810 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
24811 Set cross-checking of \"physname\" code against demangler."), _("\
24812 Show cross-checking of \"physname\" code against demangler."), _("\
24813 When enabled, GDB's internal \"physname\" code is checked against\n\
24815 NULL, show_check_physname,
24816 &setdebuglist, &showdebuglist);
24818 add_setshow_boolean_cmd ("use-deprecated-index-sections",
24819 no_class, &use_deprecated_index_sections, _("\
24820 Set whether to use deprecated gdb_index sections."), _("\
24821 Show whether to use deprecated gdb_index sections."), _("\
24822 When enabled, deprecated .gdb_index sections are used anyway.\n\
24823 Normally they are ignored either because of a missing feature or\n\
24824 performance issue.\n\
24825 Warning: This option must be enabled before gdb reads the file."),
24828 &setlist, &showlist);
24830 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
24831 &dwarf2_locexpr_funcs);
24832 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
24833 &dwarf2_loclist_funcs);
24835 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
24836 &dwarf2_block_frame_base_locexpr_funcs);
24837 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
24838 &dwarf2_block_frame_base_loclist_funcs);
24841 selftests::register_test ("dw2_expand_symtabs_matching",
24842 selftests::dw2_expand_symtabs_matching::run_test);
24843 selftests::register_test ("dwarf2_find_containing_comp_unit",
24844 selftests::find_containing_comp_unit::run_test);