dwarf2read: C++ify dwo_file
[deliverable/binutils-gdb.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3 Copyright (C) 1994-2019 Free Software Foundation, Inc.
4
5 Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6 Inc. with support from Florida State University (under contract
7 with the Ada Joint Program Office), and Silicon Graphics, Inc.
8 Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9 based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10 support.
11
12 This file is part of GDB.
13
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.
18
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.
23
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/>. */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28 reading off the end of the section.
29 E.g., load_partial_dies, read_partial_die. */
30
31 #include "defs.h"
32 #include "dwarf2read.h"
33 #include "dwarf-index-cache.h"
34 #include "dwarf-index-common.h"
35 #include "bfd.h"
36 #include "elf-bfd.h"
37 #include "symtab.h"
38 #include "gdbtypes.h"
39 #include "objfiles.h"
40 #include "dwarf2.h"
41 #include "buildsym.h"
42 #include "demangle.h"
43 #include "gdb-demangle.h"
44 #include "expression.h"
45 #include "filenames.h" /* for DOSish file names */
46 #include "macrotab.h"
47 #include "language.h"
48 #include "complaints.h"
49 #include "dwarf2expr.h"
50 #include "dwarf2loc.h"
51 #include "cp-support.h"
52 #include "hashtab.h"
53 #include "command.h"
54 #include "gdbcmd.h"
55 #include "block.h"
56 #include "addrmap.h"
57 #include "typeprint.h"
58 #include "psympriv.h"
59 #include <sys/stat.h>
60 #include "completer.h"
61 #include "common/vec.h"
62 #include "c-lang.h"
63 #include "go-lang.h"
64 #include "valprint.h"
65 #include "gdbcore.h" /* for gnutarget */
66 #include "gdb/gdb-index.h"
67 #include <ctype.h>
68 #include "gdb_bfd.h"
69 #include "f-lang.h"
70 #include "source.h"
71 #include "common/filestuff.h"
72 #include "build-id.h"
73 #include "namespace.h"
74 #include "common/gdb_unlinker.h"
75 #include "common/function-view.h"
76 #include "common/gdb_optional.h"
77 #include "common/underlying.h"
78 #include "common/byte-vector.h"
79 #include "common/hash_enum.h"
80 #include "filename-seen-cache.h"
81 #include "producer.h"
82 #include <fcntl.h>
83 #include <sys/types.h>
84 #include <algorithm>
85 #include <unordered_set>
86 #include <unordered_map>
87 #include "common/selftest.h"
88 #include <cmath>
89 #include <set>
90 #include <forward_list>
91 #include "rust-lang.h"
92 #include "common/pathstuff.h"
93
94 /* When == 1, print basic high level tracing messages.
95 When > 1, be more verbose.
96 This is in contrast to the low level DIE reading of dwarf_die_debug. */
97 static unsigned int dwarf_read_debug = 0;
98
99 /* When non-zero, dump DIEs after they are read in. */
100 static unsigned int dwarf_die_debug = 0;
101
102 /* When non-zero, dump line number entries as they are read in. */
103 static unsigned int dwarf_line_debug = 0;
104
105 /* When non-zero, cross-check physname against demangler. */
106 static int check_physname = 0;
107
108 /* When non-zero, do not reject deprecated .gdb_index sections. */
109 static int use_deprecated_index_sections = 0;
110
111 static const struct objfile_key<dwarf2_per_objfile> dwarf2_objfile_data_key;
112
113 /* The "aclass" indices for various kinds of computed DWARF symbols. */
114
115 static int dwarf2_locexpr_index;
116 static int dwarf2_loclist_index;
117 static int dwarf2_locexpr_block_index;
118 static int dwarf2_loclist_block_index;
119
120 /* An index into a (C++) symbol name component in a symbol name as
121 recorded in the mapped_index's symbol table. For each C++ symbol
122 in the symbol table, we record one entry for the start of each
123 component in the symbol in a table of name components, and then
124 sort the table, in order to be able to binary search symbol names,
125 ignoring leading namespaces, both completion and regular look up.
126 For example, for symbol "A::B::C", we'll have an entry that points
127 to "A::B::C", another that points to "B::C", and another for "C".
128 Note that function symbols in GDB index have no parameter
129 information, just the function/method names. You can convert a
130 name_component to a "const char *" using the
131 'mapped_index::symbol_name_at(offset_type)' method. */
132
133 struct name_component
134 {
135 /* Offset in the symbol name where the component starts. Stored as
136 a (32-bit) offset instead of a pointer to save memory and improve
137 locality on 64-bit architectures. */
138 offset_type name_offset;
139
140 /* The symbol's index in the symbol and constant pool tables of a
141 mapped_index. */
142 offset_type idx;
143 };
144
145 /* Base class containing bits shared by both .gdb_index and
146 .debug_name indexes. */
147
148 struct mapped_index_base
149 {
150 mapped_index_base () = default;
151 DISABLE_COPY_AND_ASSIGN (mapped_index_base);
152
153 /* The name_component table (a sorted vector). See name_component's
154 description above. */
155 std::vector<name_component> name_components;
156
157 /* How NAME_COMPONENTS is sorted. */
158 enum case_sensitivity name_components_casing;
159
160 /* Return the number of names in the symbol table. */
161 virtual size_t symbol_name_count () const = 0;
162
163 /* Get the name of the symbol at IDX in the symbol table. */
164 virtual const char *symbol_name_at (offset_type idx) const = 0;
165
166 /* Return whether the name at IDX in the symbol table should be
167 ignored. */
168 virtual bool symbol_name_slot_invalid (offset_type idx) const
169 {
170 return false;
171 }
172
173 /* Build the symbol name component sorted vector, if we haven't
174 yet. */
175 void build_name_components ();
176
177 /* Returns the lower (inclusive) and upper (exclusive) bounds of the
178 possible matches for LN_NO_PARAMS in the name component
179 vector. */
180 std::pair<std::vector<name_component>::const_iterator,
181 std::vector<name_component>::const_iterator>
182 find_name_components_bounds (const lookup_name_info &ln_no_params) const;
183
184 /* Prevent deleting/destroying via a base class pointer. */
185 protected:
186 ~mapped_index_base() = default;
187 };
188
189 /* A description of the mapped index. The file format is described in
190 a comment by the code that writes the index. */
191 struct mapped_index final : public mapped_index_base
192 {
193 /* A slot/bucket in the symbol table hash. */
194 struct symbol_table_slot
195 {
196 const offset_type name;
197 const offset_type vec;
198 };
199
200 /* Index data format version. */
201 int version = 0;
202
203 /* The address table data. */
204 gdb::array_view<const gdb_byte> address_table;
205
206 /* The symbol table, implemented as a hash table. */
207 gdb::array_view<symbol_table_slot> symbol_table;
208
209 /* A pointer to the constant pool. */
210 const char *constant_pool = nullptr;
211
212 bool symbol_name_slot_invalid (offset_type idx) const override
213 {
214 const auto &bucket = this->symbol_table[idx];
215 return bucket.name == 0 && bucket.vec == 0;
216 }
217
218 /* Convenience method to get at the name of the symbol at IDX in the
219 symbol table. */
220 const char *symbol_name_at (offset_type idx) const override
221 { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
222
223 size_t symbol_name_count () const override
224 { return this->symbol_table.size (); }
225 };
226
227 /* A description of the mapped .debug_names.
228 Uninitialized map has CU_COUNT 0. */
229 struct mapped_debug_names final : public mapped_index_base
230 {
231 mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
232 : dwarf2_per_objfile (dwarf2_per_objfile_)
233 {}
234
235 struct dwarf2_per_objfile *dwarf2_per_objfile;
236 bfd_endian dwarf5_byte_order;
237 bool dwarf5_is_dwarf64;
238 bool augmentation_is_gdb;
239 uint8_t offset_size;
240 uint32_t cu_count = 0;
241 uint32_t tu_count, bucket_count, name_count;
242 const gdb_byte *cu_table_reordered, *tu_table_reordered;
243 const uint32_t *bucket_table_reordered, *hash_table_reordered;
244 const gdb_byte *name_table_string_offs_reordered;
245 const gdb_byte *name_table_entry_offs_reordered;
246 const gdb_byte *entry_pool;
247
248 struct index_val
249 {
250 ULONGEST dwarf_tag;
251 struct attr
252 {
253 /* Attribute name DW_IDX_*. */
254 ULONGEST dw_idx;
255
256 /* Attribute form DW_FORM_*. */
257 ULONGEST form;
258
259 /* Value if FORM is DW_FORM_implicit_const. */
260 LONGEST implicit_const;
261 };
262 std::vector<attr> attr_vec;
263 };
264
265 std::unordered_map<ULONGEST, index_val> abbrev_map;
266
267 const char *namei_to_name (uint32_t namei) const;
268
269 /* Implementation of the mapped_index_base virtual interface, for
270 the name_components cache. */
271
272 const char *symbol_name_at (offset_type idx) const override
273 { return namei_to_name (idx); }
274
275 size_t symbol_name_count () const override
276 { return this->name_count; }
277 };
278
279 /* See dwarf2read.h. */
280
281 dwarf2_per_objfile *
282 get_dwarf2_per_objfile (struct objfile *objfile)
283 {
284 return dwarf2_objfile_data_key.get (objfile);
285 }
286
287 /* Default names of the debugging sections. */
288
289 /* Note that if the debugging section has been compressed, it might
290 have a name like .zdebug_info. */
291
292 static const struct dwarf2_debug_sections dwarf2_elf_names =
293 {
294 { ".debug_info", ".zdebug_info" },
295 { ".debug_abbrev", ".zdebug_abbrev" },
296 { ".debug_line", ".zdebug_line" },
297 { ".debug_loc", ".zdebug_loc" },
298 { ".debug_loclists", ".zdebug_loclists" },
299 { ".debug_macinfo", ".zdebug_macinfo" },
300 { ".debug_macro", ".zdebug_macro" },
301 { ".debug_str", ".zdebug_str" },
302 { ".debug_line_str", ".zdebug_line_str" },
303 { ".debug_ranges", ".zdebug_ranges" },
304 { ".debug_rnglists", ".zdebug_rnglists" },
305 { ".debug_types", ".zdebug_types" },
306 { ".debug_addr", ".zdebug_addr" },
307 { ".debug_frame", ".zdebug_frame" },
308 { ".eh_frame", NULL },
309 { ".gdb_index", ".zgdb_index" },
310 { ".debug_names", ".zdebug_names" },
311 { ".debug_aranges", ".zdebug_aranges" },
312 23
313 };
314
315 /* List of DWO/DWP sections. */
316
317 static const struct dwop_section_names
318 {
319 struct dwarf2_section_names abbrev_dwo;
320 struct dwarf2_section_names info_dwo;
321 struct dwarf2_section_names line_dwo;
322 struct dwarf2_section_names loc_dwo;
323 struct dwarf2_section_names loclists_dwo;
324 struct dwarf2_section_names macinfo_dwo;
325 struct dwarf2_section_names macro_dwo;
326 struct dwarf2_section_names str_dwo;
327 struct dwarf2_section_names str_offsets_dwo;
328 struct dwarf2_section_names types_dwo;
329 struct dwarf2_section_names cu_index;
330 struct dwarf2_section_names tu_index;
331 }
332 dwop_section_names =
333 {
334 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
335 { ".debug_info.dwo", ".zdebug_info.dwo" },
336 { ".debug_line.dwo", ".zdebug_line.dwo" },
337 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
338 { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
339 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
340 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
341 { ".debug_str.dwo", ".zdebug_str.dwo" },
342 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
343 { ".debug_types.dwo", ".zdebug_types.dwo" },
344 { ".debug_cu_index", ".zdebug_cu_index" },
345 { ".debug_tu_index", ".zdebug_tu_index" },
346 };
347
348 /* local data types */
349
350 /* The data in a compilation unit header, after target2host
351 translation, looks like this. */
352 struct comp_unit_head
353 {
354 unsigned int length;
355 short version;
356 unsigned char addr_size;
357 unsigned char signed_addr_p;
358 sect_offset abbrev_sect_off;
359
360 /* Size of file offsets; either 4 or 8. */
361 unsigned int offset_size;
362
363 /* Size of the length field; either 4 or 12. */
364 unsigned int initial_length_size;
365
366 enum dwarf_unit_type unit_type;
367
368 /* Offset to the first byte of this compilation unit header in the
369 .debug_info section, for resolving relative reference dies. */
370 sect_offset sect_off;
371
372 /* Offset to first die in this cu from the start of the cu.
373 This will be the first byte following the compilation unit header. */
374 cu_offset first_die_cu_offset;
375
376 /* 64-bit signature of this type unit - it is valid only for
377 UNIT_TYPE DW_UT_type. */
378 ULONGEST signature;
379
380 /* For types, offset in the type's DIE of the type defined by this TU. */
381 cu_offset type_cu_offset_in_tu;
382 };
383
384 /* Type used for delaying computation of method physnames.
385 See comments for compute_delayed_physnames. */
386 struct delayed_method_info
387 {
388 /* The type to which the method is attached, i.e., its parent class. */
389 struct type *type;
390
391 /* The index of the method in the type's function fieldlists. */
392 int fnfield_index;
393
394 /* The index of the method in the fieldlist. */
395 int index;
396
397 /* The name of the DIE. */
398 const char *name;
399
400 /* The DIE associated with this method. */
401 struct die_info *die;
402 };
403
404 /* Internal state when decoding a particular compilation unit. */
405 struct dwarf2_cu
406 {
407 explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
408 ~dwarf2_cu ();
409
410 DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
411
412 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
413 Create the set of symtabs used by this TU, or if this TU is sharing
414 symtabs with another TU and the symtabs have already been created
415 then restore those symtabs in the line header.
416 We don't need the pc/line-number mapping for type units. */
417 void setup_type_unit_groups (struct die_info *die);
418
419 /* Start a symtab for DWARF. NAME, COMP_DIR, LOW_PC are passed to the
420 buildsym_compunit constructor. */
421 struct compunit_symtab *start_symtab (const char *name,
422 const char *comp_dir,
423 CORE_ADDR low_pc);
424
425 /* Reset the builder. */
426 void reset_builder () { m_builder.reset (); }
427
428 /* The header of the compilation unit. */
429 struct comp_unit_head header {};
430
431 /* Base address of this compilation unit. */
432 CORE_ADDR base_address = 0;
433
434 /* Non-zero if base_address has been set. */
435 int base_known = 0;
436
437 /* The language we are debugging. */
438 enum language language = language_unknown;
439 const struct language_defn *language_defn = nullptr;
440
441 const char *producer = nullptr;
442
443 private:
444 /* The symtab builder for this CU. This is only non-NULL when full
445 symbols are being read. */
446 std::unique_ptr<buildsym_compunit> m_builder;
447
448 public:
449 /* The generic symbol table building routines have separate lists for
450 file scope symbols and all all other scopes (local scopes). So
451 we need to select the right one to pass to add_symbol_to_list().
452 We do it by keeping a pointer to the correct list in list_in_scope.
453
454 FIXME: The original dwarf code just treated the file scope as the
455 first local scope, and all other local scopes as nested local
456 scopes, and worked fine. Check to see if we really need to
457 distinguish these in buildsym.c. */
458 struct pending **list_in_scope = nullptr;
459
460 /* Hash table holding all the loaded partial DIEs
461 with partial_die->offset.SECT_OFF as hash. */
462 htab_t partial_dies = nullptr;
463
464 /* Storage for things with the same lifetime as this read-in compilation
465 unit, including partial DIEs. */
466 auto_obstack comp_unit_obstack;
467
468 /* When multiple dwarf2_cu structures are living in memory, this field
469 chains them all together, so that they can be released efficiently.
470 We will probably also want a generation counter so that most-recently-used
471 compilation units are cached... */
472 struct dwarf2_per_cu_data *read_in_chain = nullptr;
473
474 /* Backlink to our per_cu entry. */
475 struct dwarf2_per_cu_data *per_cu;
476
477 /* How many compilation units ago was this CU last referenced? */
478 int last_used = 0;
479
480 /* A hash table of DIE cu_offset for following references with
481 die_info->offset.sect_off as hash. */
482 htab_t die_hash = nullptr;
483
484 /* Full DIEs if read in. */
485 struct die_info *dies = nullptr;
486
487 /* A set of pointers to dwarf2_per_cu_data objects for compilation
488 units referenced by this one. Only set during full symbol processing;
489 partial symbol tables do not have dependencies. */
490 htab_t dependencies = nullptr;
491
492 /* Header data from the line table, during full symbol processing. */
493 struct line_header *line_header = nullptr;
494 /* Non-NULL if LINE_HEADER is owned by this DWARF_CU. Otherwise,
495 it's owned by dwarf2_per_objfile::line_header_hash. If non-NULL,
496 this is the DW_TAG_compile_unit die for this CU. We'll hold on
497 to the line header as long as this DIE is being processed. See
498 process_die_scope. */
499 die_info *line_header_die_owner = nullptr;
500
501 /* A list of methods which need to have physnames computed
502 after all type information has been read. */
503 std::vector<delayed_method_info> method_list;
504
505 /* To be copied to symtab->call_site_htab. */
506 htab_t call_site_htab = nullptr;
507
508 /* Non-NULL if this CU came from a DWO file.
509 There is an invariant here that is important to remember:
510 Except for attributes copied from the top level DIE in the "main"
511 (or "stub") file in preparation for reading the DWO file
512 (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
513 Either there isn't a DWO file (in which case this is NULL and the point
514 is moot), or there is and either we're not going to read it (in which
515 case this is NULL) or there is and we are reading it (in which case this
516 is non-NULL). */
517 struct dwo_unit *dwo_unit = nullptr;
518
519 /* The DW_AT_addr_base attribute if present, zero otherwise
520 (zero is a valid value though).
521 Note this value comes from the Fission stub CU/TU's DIE. */
522 ULONGEST addr_base = 0;
523
524 /* The DW_AT_ranges_base attribute if present, zero otherwise
525 (zero is a valid value though).
526 Note this value comes from the Fission stub CU/TU's DIE.
527 Also note that the value is zero in the non-DWO case so this value can
528 be used without needing to know whether DWO files are in use or not.
529 N.B. This does not apply to DW_AT_ranges appearing in
530 DW_TAG_compile_unit dies. This is a bit of a wart, consider if ever
531 DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
532 DW_AT_ranges_base *would* have to be applied, and we'd have to care
533 whether the DW_AT_ranges attribute came from the skeleton or DWO. */
534 ULONGEST ranges_base = 0;
535
536 /* When reading debug info generated by older versions of rustc, we
537 have to rewrite some union types to be struct types with a
538 variant part. This rewriting must be done after the CU is fully
539 read in, because otherwise at the point of rewriting some struct
540 type might not have been fully processed. So, we keep a list of
541 all such types here and process them after expansion. */
542 std::vector<struct type *> rust_unions;
543
544 /* Mark used when releasing cached dies. */
545 bool mark : 1;
546
547 /* This CU references .debug_loc. See the symtab->locations_valid field.
548 This test is imperfect as there may exist optimized debug code not using
549 any location list and still facing inlining issues if handled as
550 unoptimized code. For a future better test see GCC PR other/32998. */
551 bool has_loclist : 1;
552
553 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is true
554 if all the producer_is_* fields are valid. This information is cached
555 because profiling CU expansion showed excessive time spent in
556 producer_is_gxx_lt_4_6. */
557 bool checked_producer : 1;
558 bool producer_is_gxx_lt_4_6 : 1;
559 bool producer_is_gcc_lt_4_3 : 1;
560 bool producer_is_icc : 1;
561 bool producer_is_icc_lt_14 : 1;
562 bool producer_is_codewarrior : 1;
563
564 /* When true, the file that we're processing is known to have
565 debugging info for C++ namespaces. GCC 3.3.x did not produce
566 this information, but later versions do. */
567
568 bool processing_has_namespace_info : 1;
569
570 struct partial_die_info *find_partial_die (sect_offset sect_off);
571
572 /* If this CU was inherited by another CU (via specification,
573 abstract_origin, etc), this is the ancestor CU. */
574 dwarf2_cu *ancestor;
575
576 /* Get the buildsym_compunit for this CU. */
577 buildsym_compunit *get_builder ()
578 {
579 /* If this CU has a builder associated with it, use that. */
580 if (m_builder != nullptr)
581 return m_builder.get ();
582
583 /* Otherwise, search ancestors for a valid builder. */
584 if (ancestor != nullptr)
585 return ancestor->get_builder ();
586
587 return nullptr;
588 }
589 };
590
591 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
592 This includes type_unit_group and quick_file_names. */
593
594 struct stmt_list_hash
595 {
596 /* The DWO unit this table is from or NULL if there is none. */
597 struct dwo_unit *dwo_unit;
598
599 /* Offset in .debug_line or .debug_line.dwo. */
600 sect_offset line_sect_off;
601 };
602
603 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
604 an object of this type. */
605
606 struct type_unit_group
607 {
608 /* dwarf2read.c's main "handle" on a TU symtab.
609 To simplify things we create an artificial CU that "includes" all the
610 type units using this stmt_list so that the rest of the code still has
611 a "per_cu" handle on the symtab.
612 This PER_CU is recognized by having no section. */
613 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
614 struct dwarf2_per_cu_data per_cu;
615
616 /* The TUs that share this DW_AT_stmt_list entry.
617 This is added to while parsing type units to build partial symtabs,
618 and is deleted afterwards and not used again. */
619 VEC (sig_type_ptr) *tus;
620
621 /* The compunit symtab.
622 Type units in a group needn't all be defined in the same source file,
623 so we create an essentially anonymous symtab as the compunit symtab. */
624 struct compunit_symtab *compunit_symtab;
625
626 /* The data used to construct the hash key. */
627 struct stmt_list_hash hash;
628
629 /* The number of symtabs from the line header.
630 The value here must match line_header.num_file_names. */
631 unsigned int num_symtabs;
632
633 /* The symbol tables for this TU (obtained from the files listed in
634 DW_AT_stmt_list).
635 WARNING: The order of entries here must match the order of entries
636 in the line header. After the first TU using this type_unit_group, the
637 line header for the subsequent TUs is recreated from this. This is done
638 because we need to use the same symtabs for each TU using the same
639 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
640 there's no guarantee the line header doesn't have duplicate entries. */
641 struct symtab **symtabs;
642 };
643
644 /* These sections are what may appear in a (real or virtual) DWO file. */
645
646 struct dwo_sections
647 {
648 struct dwarf2_section_info abbrev;
649 struct dwarf2_section_info line;
650 struct dwarf2_section_info loc;
651 struct dwarf2_section_info loclists;
652 struct dwarf2_section_info macinfo;
653 struct dwarf2_section_info macro;
654 struct dwarf2_section_info str;
655 struct dwarf2_section_info str_offsets;
656 /* In the case of a virtual DWO file, these two are unused. */
657 struct dwarf2_section_info info;
658 VEC (dwarf2_section_info_def) *types;
659 };
660
661 /* CUs/TUs in DWP/DWO files. */
662
663 struct dwo_unit
664 {
665 /* Backlink to the containing struct dwo_file. */
666 struct dwo_file *dwo_file;
667
668 /* The "id" that distinguishes this CU/TU.
669 .debug_info calls this "dwo_id", .debug_types calls this "signature".
670 Since signatures came first, we stick with it for consistency. */
671 ULONGEST signature;
672
673 /* The section this CU/TU lives in, in the DWO file. */
674 struct dwarf2_section_info *section;
675
676 /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section. */
677 sect_offset sect_off;
678 unsigned int length;
679
680 /* For types, offset in the type's DIE of the type defined by this TU. */
681 cu_offset type_offset_in_tu;
682 };
683
684 /* include/dwarf2.h defines the DWP section codes.
685 It defines a max value but it doesn't define a min value, which we
686 use for error checking, so provide one. */
687
688 enum dwp_v2_section_ids
689 {
690 DW_SECT_MIN = 1
691 };
692
693 /* Data for one DWO file.
694
695 This includes virtual DWO files (a virtual DWO file is a DWO file as it
696 appears in a DWP file). DWP files don't really have DWO files per se -
697 comdat folding of types "loses" the DWO file they came from, and from
698 a high level view DWP files appear to contain a mass of random types.
699 However, to maintain consistency with the non-DWP case we pretend DWP
700 files contain virtual DWO files, and we assign each TU with one virtual
701 DWO file (generally based on the line and abbrev section offsets -
702 a heuristic that seems to work in practice). */
703
704 struct dwo_file
705 {
706 dwo_file () = default;
707 DISABLE_COPY_AND_ASSIGN (dwo_file);
708
709 ~dwo_file ()
710 {
711 gdb_bfd_unref (dbfd);
712
713 VEC_free (dwarf2_section_info_def, sections.types);
714 }
715
716 /* The DW_AT_GNU_dwo_name attribute.
717 For virtual DWO files the name is constructed from the section offsets
718 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
719 from related CU+TUs. */
720 const char *dwo_name = nullptr;
721
722 /* The DW_AT_comp_dir attribute. */
723 const char *comp_dir = nullptr;
724
725 /* The bfd, when the file is open. Otherwise this is NULL.
726 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
727 bfd *dbfd = nullptr;
728
729 /* The sections that make up this DWO file.
730 Remember that for virtual DWO files in DWP V2, these are virtual
731 sections (for lack of a better name). */
732 struct dwo_sections sections {};
733
734 /* The CUs in the file.
735 Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
736 an extension to handle LLVM's Link Time Optimization output (where
737 multiple source files may be compiled into a single object/dwo pair). */
738 htab_t cus {};
739
740 /* Table of TUs in the file.
741 Each element is a struct dwo_unit. */
742 htab_t tus {};
743 };
744
745 /* These sections are what may appear in a DWP file. */
746
747 struct dwp_sections
748 {
749 /* These are used by both DWP version 1 and 2. */
750 struct dwarf2_section_info str;
751 struct dwarf2_section_info cu_index;
752 struct dwarf2_section_info tu_index;
753
754 /* These are only used by DWP version 2 files.
755 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
756 sections are referenced by section number, and are not recorded here.
757 In DWP version 2 there is at most one copy of all these sections, each
758 section being (effectively) comprised of the concatenation of all of the
759 individual sections that exist in the version 1 format.
760 To keep the code simple we treat each of these concatenated pieces as a
761 section itself (a virtual section?). */
762 struct dwarf2_section_info abbrev;
763 struct dwarf2_section_info info;
764 struct dwarf2_section_info line;
765 struct dwarf2_section_info loc;
766 struct dwarf2_section_info macinfo;
767 struct dwarf2_section_info macro;
768 struct dwarf2_section_info str_offsets;
769 struct dwarf2_section_info types;
770 };
771
772 /* These sections are what may appear in a virtual DWO file in DWP version 1.
773 A virtual DWO file is a DWO file as it appears in a DWP file. */
774
775 struct virtual_v1_dwo_sections
776 {
777 struct dwarf2_section_info abbrev;
778 struct dwarf2_section_info line;
779 struct dwarf2_section_info loc;
780 struct dwarf2_section_info macinfo;
781 struct dwarf2_section_info macro;
782 struct dwarf2_section_info str_offsets;
783 /* Each DWP hash table entry records one CU or one TU.
784 That is recorded here, and copied to dwo_unit.section. */
785 struct dwarf2_section_info info_or_types;
786 };
787
788 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
789 In version 2, the sections of the DWO files are concatenated together
790 and stored in one section of that name. Thus each ELF section contains
791 several "virtual" sections. */
792
793 struct virtual_v2_dwo_sections
794 {
795 bfd_size_type abbrev_offset;
796 bfd_size_type abbrev_size;
797
798 bfd_size_type line_offset;
799 bfd_size_type line_size;
800
801 bfd_size_type loc_offset;
802 bfd_size_type loc_size;
803
804 bfd_size_type macinfo_offset;
805 bfd_size_type macinfo_size;
806
807 bfd_size_type macro_offset;
808 bfd_size_type macro_size;
809
810 bfd_size_type str_offsets_offset;
811 bfd_size_type str_offsets_size;
812
813 /* Each DWP hash table entry records one CU or one TU.
814 That is recorded here, and copied to dwo_unit.section. */
815 bfd_size_type info_or_types_offset;
816 bfd_size_type info_or_types_size;
817 };
818
819 /* Contents of DWP hash tables. */
820
821 struct dwp_hash_table
822 {
823 uint32_t version, nr_columns;
824 uint32_t nr_units, nr_slots;
825 const gdb_byte *hash_table, *unit_table;
826 union
827 {
828 struct
829 {
830 const gdb_byte *indices;
831 } v1;
832 struct
833 {
834 /* This is indexed by column number and gives the id of the section
835 in that column. */
836 #define MAX_NR_V2_DWO_SECTIONS \
837 (1 /* .debug_info or .debug_types */ \
838 + 1 /* .debug_abbrev */ \
839 + 1 /* .debug_line */ \
840 + 1 /* .debug_loc */ \
841 + 1 /* .debug_str_offsets */ \
842 + 1 /* .debug_macro or .debug_macinfo */)
843 int section_ids[MAX_NR_V2_DWO_SECTIONS];
844 const gdb_byte *offsets;
845 const gdb_byte *sizes;
846 } v2;
847 } section_pool;
848 };
849
850 /* Data for one DWP file. */
851
852 struct dwp_file
853 {
854 dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
855 : name (name_),
856 dbfd (std::move (abfd))
857 {
858 }
859
860 /* Name of the file. */
861 const char *name;
862
863 /* File format version. */
864 int version = 0;
865
866 /* The bfd. */
867 gdb_bfd_ref_ptr dbfd;
868
869 /* Section info for this file. */
870 struct dwp_sections sections {};
871
872 /* Table of CUs in the file. */
873 const struct dwp_hash_table *cus = nullptr;
874
875 /* Table of TUs in the file. */
876 const struct dwp_hash_table *tus = nullptr;
877
878 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
879 htab_t loaded_cus {};
880 htab_t loaded_tus {};
881
882 /* Table to map ELF section numbers to their sections.
883 This is only needed for the DWP V1 file format. */
884 unsigned int num_sections = 0;
885 asection **elf_sections = nullptr;
886 };
887
888 /* Struct used to pass misc. parameters to read_die_and_children, et
889 al. which are used for both .debug_info and .debug_types dies.
890 All parameters here are unchanging for the life of the call. This
891 struct exists to abstract away the constant parameters of die reading. */
892
893 struct die_reader_specs
894 {
895 /* The bfd of die_section. */
896 bfd* abfd;
897
898 /* The CU of the DIE we are parsing. */
899 struct dwarf2_cu *cu;
900
901 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
902 struct dwo_file *dwo_file;
903
904 /* The section the die comes from.
905 This is either .debug_info or .debug_types, or the .dwo variants. */
906 struct dwarf2_section_info *die_section;
907
908 /* die_section->buffer. */
909 const gdb_byte *buffer;
910
911 /* The end of the buffer. */
912 const gdb_byte *buffer_end;
913
914 /* The value of the DW_AT_comp_dir attribute. */
915 const char *comp_dir;
916
917 /* The abbreviation table to use when reading the DIEs. */
918 struct abbrev_table *abbrev_table;
919 };
920
921 /* Type of function passed to init_cutu_and_read_dies, et.al. */
922 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
923 const gdb_byte *info_ptr,
924 struct die_info *comp_unit_die,
925 int has_children,
926 void *data);
927
928 /* A 1-based directory index. This is a strong typedef to prevent
929 accidentally using a directory index as a 0-based index into an
930 array/vector. */
931 enum class dir_index : unsigned int {};
932
933 /* Likewise, a 1-based file name index. */
934 enum class file_name_index : unsigned int {};
935
936 struct file_entry
937 {
938 file_entry () = default;
939
940 file_entry (const char *name_, dir_index d_index_,
941 unsigned int mod_time_, unsigned int length_)
942 : name (name_),
943 d_index (d_index_),
944 mod_time (mod_time_),
945 length (length_)
946 {}
947
948 /* Return the include directory at D_INDEX stored in LH. Returns
949 NULL if D_INDEX is out of bounds. */
950 const char *include_dir (const line_header *lh) const;
951
952 /* The file name. Note this is an observing pointer. The memory is
953 owned by debug_line_buffer. */
954 const char *name {};
955
956 /* The directory index (1-based). */
957 dir_index d_index {};
958
959 unsigned int mod_time {};
960
961 unsigned int length {};
962
963 /* True if referenced by the Line Number Program. */
964 bool included_p {};
965
966 /* The associated symbol table, if any. */
967 struct symtab *symtab {};
968 };
969
970 /* The line number information for a compilation unit (found in the
971 .debug_line section) begins with a "statement program header",
972 which contains the following information. */
973 struct line_header
974 {
975 line_header ()
976 : offset_in_dwz {}
977 {}
978
979 /* Add an entry to the include directory table. */
980 void add_include_dir (const char *include_dir);
981
982 /* Add an entry to the file name table. */
983 void add_file_name (const char *name, dir_index d_index,
984 unsigned int mod_time, unsigned int length);
985
986 /* Return the include dir at INDEX (1-based). Returns NULL if INDEX
987 is out of bounds. */
988 const char *include_dir_at (dir_index index) const
989 {
990 /* Convert directory index number (1-based) to vector index
991 (0-based). */
992 size_t vec_index = to_underlying (index) - 1;
993
994 if (vec_index >= include_dirs.size ())
995 return NULL;
996 return include_dirs[vec_index];
997 }
998
999 /* Return the file name at INDEX (1-based). Returns NULL if INDEX
1000 is out of bounds. */
1001 file_entry *file_name_at (file_name_index index)
1002 {
1003 /* Convert file name index number (1-based) to vector index
1004 (0-based). */
1005 size_t vec_index = to_underlying (index) - 1;
1006
1007 if (vec_index >= file_names.size ())
1008 return NULL;
1009 return &file_names[vec_index];
1010 }
1011
1012 /* Offset of line number information in .debug_line section. */
1013 sect_offset sect_off {};
1014
1015 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
1016 unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class. */
1017
1018 unsigned int total_length {};
1019 unsigned short version {};
1020 unsigned int header_length {};
1021 unsigned char minimum_instruction_length {};
1022 unsigned char maximum_ops_per_instruction {};
1023 unsigned char default_is_stmt {};
1024 int line_base {};
1025 unsigned char line_range {};
1026 unsigned char opcode_base {};
1027
1028 /* standard_opcode_lengths[i] is the number of operands for the
1029 standard opcode whose value is i. This means that
1030 standard_opcode_lengths[0] is unused, and the last meaningful
1031 element is standard_opcode_lengths[opcode_base - 1]. */
1032 std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1033
1034 /* The include_directories table. Note these are observing
1035 pointers. The memory is owned by debug_line_buffer. */
1036 std::vector<const char *> include_dirs;
1037
1038 /* The file_names table. */
1039 std::vector<file_entry> file_names;
1040
1041 /* The start and end of the statement program following this
1042 header. These point into dwarf2_per_objfile->line_buffer. */
1043 const gdb_byte *statement_program_start {}, *statement_program_end {};
1044 };
1045
1046 typedef std::unique_ptr<line_header> line_header_up;
1047
1048 const char *
1049 file_entry::include_dir (const line_header *lh) const
1050 {
1051 return lh->include_dir_at (d_index);
1052 }
1053
1054 /* When we construct a partial symbol table entry we only
1055 need this much information. */
1056 struct partial_die_info : public allocate_on_obstack
1057 {
1058 partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1059
1060 /* Disable assign but still keep copy ctor, which is needed
1061 load_partial_dies. */
1062 partial_die_info& operator=(const partial_die_info& rhs) = delete;
1063
1064 /* Adjust the partial die before generating a symbol for it. This
1065 function may set the is_external flag or change the DIE's
1066 name. */
1067 void fixup (struct dwarf2_cu *cu);
1068
1069 /* Read a minimal amount of information into the minimal die
1070 structure. */
1071 const gdb_byte *read (const struct die_reader_specs *reader,
1072 const struct abbrev_info &abbrev,
1073 const gdb_byte *info_ptr);
1074
1075 /* Offset of this DIE. */
1076 const sect_offset sect_off;
1077
1078 /* DWARF-2 tag for this DIE. */
1079 const ENUM_BITFIELD(dwarf_tag) tag : 16;
1080
1081 /* Assorted flags describing the data found in this DIE. */
1082 const unsigned int has_children : 1;
1083
1084 unsigned int is_external : 1;
1085 unsigned int is_declaration : 1;
1086 unsigned int has_type : 1;
1087 unsigned int has_specification : 1;
1088 unsigned int has_pc_info : 1;
1089 unsigned int may_be_inlined : 1;
1090
1091 /* This DIE has been marked DW_AT_main_subprogram. */
1092 unsigned int main_subprogram : 1;
1093
1094 /* Flag set if the SCOPE field of this structure has been
1095 computed. */
1096 unsigned int scope_set : 1;
1097
1098 /* Flag set if the DIE has a byte_size attribute. */
1099 unsigned int has_byte_size : 1;
1100
1101 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1102 unsigned int has_const_value : 1;
1103
1104 /* Flag set if any of the DIE's children are template arguments. */
1105 unsigned int has_template_arguments : 1;
1106
1107 /* Flag set if fixup has been called on this die. */
1108 unsigned int fixup_called : 1;
1109
1110 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1111 unsigned int is_dwz : 1;
1112
1113 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1114 unsigned int spec_is_dwz : 1;
1115
1116 /* The name of this DIE. Normally the value of DW_AT_name, but
1117 sometimes a default name for unnamed DIEs. */
1118 const char *name = nullptr;
1119
1120 /* The linkage name, if present. */
1121 const char *linkage_name = nullptr;
1122
1123 /* The scope to prepend to our children. This is generally
1124 allocated on the comp_unit_obstack, so will disappear
1125 when this compilation unit leaves the cache. */
1126 const char *scope = nullptr;
1127
1128 /* Some data associated with the partial DIE. The tag determines
1129 which field is live. */
1130 union
1131 {
1132 /* The location description associated with this DIE, if any. */
1133 struct dwarf_block *locdesc;
1134 /* The offset of an import, for DW_TAG_imported_unit. */
1135 sect_offset sect_off;
1136 } d {};
1137
1138 /* If HAS_PC_INFO, the PC range associated with this DIE. */
1139 CORE_ADDR lowpc = 0;
1140 CORE_ADDR highpc = 0;
1141
1142 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1143 DW_AT_sibling, if any. */
1144 /* NOTE: This member isn't strictly necessary, partial_die_info::read
1145 could return DW_AT_sibling values to its caller load_partial_dies. */
1146 const gdb_byte *sibling = nullptr;
1147
1148 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1149 DW_AT_specification (or DW_AT_abstract_origin or
1150 DW_AT_extension). */
1151 sect_offset spec_offset {};
1152
1153 /* Pointers to this DIE's parent, first child, and next sibling,
1154 if any. */
1155 struct partial_die_info *die_parent = nullptr;
1156 struct partial_die_info *die_child = nullptr;
1157 struct partial_die_info *die_sibling = nullptr;
1158
1159 friend struct partial_die_info *
1160 dwarf2_cu::find_partial_die (sect_offset sect_off);
1161
1162 private:
1163 /* Only need to do look up in dwarf2_cu::find_partial_die. */
1164 partial_die_info (sect_offset sect_off)
1165 : partial_die_info (sect_off, DW_TAG_padding, 0)
1166 {
1167 }
1168
1169 partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1170 int has_children_)
1171 : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1172 {
1173 is_external = 0;
1174 is_declaration = 0;
1175 has_type = 0;
1176 has_specification = 0;
1177 has_pc_info = 0;
1178 may_be_inlined = 0;
1179 main_subprogram = 0;
1180 scope_set = 0;
1181 has_byte_size = 0;
1182 has_const_value = 0;
1183 has_template_arguments = 0;
1184 fixup_called = 0;
1185 is_dwz = 0;
1186 spec_is_dwz = 0;
1187 }
1188 };
1189
1190 /* This data structure holds the information of an abbrev. */
1191 struct abbrev_info
1192 {
1193 unsigned int number; /* number identifying abbrev */
1194 enum dwarf_tag tag; /* dwarf tag */
1195 unsigned short has_children; /* boolean */
1196 unsigned short num_attrs; /* number of attributes */
1197 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1198 struct abbrev_info *next; /* next in chain */
1199 };
1200
1201 struct attr_abbrev
1202 {
1203 ENUM_BITFIELD(dwarf_attribute) name : 16;
1204 ENUM_BITFIELD(dwarf_form) form : 16;
1205
1206 /* It is valid only if FORM is DW_FORM_implicit_const. */
1207 LONGEST implicit_const;
1208 };
1209
1210 /* Size of abbrev_table.abbrev_hash_table. */
1211 #define ABBREV_HASH_SIZE 121
1212
1213 /* Top level data structure to contain an abbreviation table. */
1214
1215 struct abbrev_table
1216 {
1217 explicit abbrev_table (sect_offset off)
1218 : sect_off (off)
1219 {
1220 m_abbrevs =
1221 XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1222 memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1223 }
1224
1225 DISABLE_COPY_AND_ASSIGN (abbrev_table);
1226
1227 /* Allocate space for a struct abbrev_info object in
1228 ABBREV_TABLE. */
1229 struct abbrev_info *alloc_abbrev ();
1230
1231 /* Add an abbreviation to the table. */
1232 void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1233
1234 /* Look up an abbrev in the table.
1235 Returns NULL if the abbrev is not found. */
1236
1237 struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1238
1239
1240 /* Where the abbrev table came from.
1241 This is used as a sanity check when the table is used. */
1242 const sect_offset sect_off;
1243
1244 /* Storage for the abbrev table. */
1245 auto_obstack abbrev_obstack;
1246
1247 private:
1248
1249 /* Hash table of abbrevs.
1250 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1251 It could be statically allocated, but the previous code didn't so we
1252 don't either. */
1253 struct abbrev_info **m_abbrevs;
1254 };
1255
1256 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1257
1258 /* Attributes have a name and a value. */
1259 struct attribute
1260 {
1261 ENUM_BITFIELD(dwarf_attribute) name : 16;
1262 ENUM_BITFIELD(dwarf_form) form : 15;
1263
1264 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1265 field should be in u.str (existing only for DW_STRING) but it is kept
1266 here for better struct attribute alignment. */
1267 unsigned int string_is_canonical : 1;
1268
1269 union
1270 {
1271 const char *str;
1272 struct dwarf_block *blk;
1273 ULONGEST unsnd;
1274 LONGEST snd;
1275 CORE_ADDR addr;
1276 ULONGEST signature;
1277 }
1278 u;
1279 };
1280
1281 /* This data structure holds a complete die structure. */
1282 struct die_info
1283 {
1284 /* DWARF-2 tag for this DIE. */
1285 ENUM_BITFIELD(dwarf_tag) tag : 16;
1286
1287 /* Number of attributes */
1288 unsigned char num_attrs;
1289
1290 /* True if we're presently building the full type name for the
1291 type derived from this DIE. */
1292 unsigned char building_fullname : 1;
1293
1294 /* True if this die is in process. PR 16581. */
1295 unsigned char in_process : 1;
1296
1297 /* Abbrev number */
1298 unsigned int abbrev;
1299
1300 /* Offset in .debug_info or .debug_types section. */
1301 sect_offset sect_off;
1302
1303 /* The dies in a compilation unit form an n-ary tree. PARENT
1304 points to this die's parent; CHILD points to the first child of
1305 this node; and all the children of a given node are chained
1306 together via their SIBLING fields. */
1307 struct die_info *child; /* Its first child, if any. */
1308 struct die_info *sibling; /* Its next sibling, if any. */
1309 struct die_info *parent; /* Its parent, if any. */
1310
1311 /* An array of attributes, with NUM_ATTRS elements. There may be
1312 zero, but it's not common and zero-sized arrays are not
1313 sufficiently portable C. */
1314 struct attribute attrs[1];
1315 };
1316
1317 /* Get at parts of an attribute structure. */
1318
1319 #define DW_STRING(attr) ((attr)->u.str)
1320 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1321 #define DW_UNSND(attr) ((attr)->u.unsnd)
1322 #define DW_BLOCK(attr) ((attr)->u.blk)
1323 #define DW_SND(attr) ((attr)->u.snd)
1324 #define DW_ADDR(attr) ((attr)->u.addr)
1325 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1326
1327 /* Blocks are a bunch of untyped bytes. */
1328 struct dwarf_block
1329 {
1330 size_t size;
1331
1332 /* Valid only if SIZE is not zero. */
1333 const gdb_byte *data;
1334 };
1335
1336 #ifndef ATTR_ALLOC_CHUNK
1337 #define ATTR_ALLOC_CHUNK 4
1338 #endif
1339
1340 /* Allocate fields for structs, unions and enums in this size. */
1341 #ifndef DW_FIELD_ALLOC_CHUNK
1342 #define DW_FIELD_ALLOC_CHUNK 4
1343 #endif
1344
1345 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1346 but this would require a corresponding change in unpack_field_as_long
1347 and friends. */
1348 static int bits_per_byte = 8;
1349
1350 /* When reading a variant or variant part, we track a bit more
1351 information about the field, and store it in an object of this
1352 type. */
1353
1354 struct variant_field
1355 {
1356 /* If we see a DW_TAG_variant, then this will be the discriminant
1357 value. */
1358 ULONGEST discriminant_value;
1359 /* If we see a DW_TAG_variant, then this will be set if this is the
1360 default branch. */
1361 bool default_branch;
1362 /* While reading a DW_TAG_variant_part, this will be set if this
1363 field is the discriminant. */
1364 bool is_discriminant;
1365 };
1366
1367 struct nextfield
1368 {
1369 int accessibility = 0;
1370 int virtuality = 0;
1371 /* Extra information to describe a variant or variant part. */
1372 struct variant_field variant {};
1373 struct field field {};
1374 };
1375
1376 struct fnfieldlist
1377 {
1378 const char *name = nullptr;
1379 std::vector<struct fn_field> fnfields;
1380 };
1381
1382 /* The routines that read and process dies for a C struct or C++ class
1383 pass lists of data member fields and lists of member function fields
1384 in an instance of a field_info structure, as defined below. */
1385 struct field_info
1386 {
1387 /* List of data member and baseclasses fields. */
1388 std::vector<struct nextfield> fields;
1389 std::vector<struct nextfield> baseclasses;
1390
1391 /* Number of fields (including baseclasses). */
1392 int nfields = 0;
1393
1394 /* Set if the accesibility of one of the fields is not public. */
1395 int non_public_fields = 0;
1396
1397 /* Member function fieldlist array, contains name of possibly overloaded
1398 member function, number of overloaded member functions and a pointer
1399 to the head of the member function field chain. */
1400 std::vector<struct fnfieldlist> fnfieldlists;
1401
1402 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1403 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
1404 std::vector<struct decl_field> typedef_field_list;
1405
1406 /* Nested types defined by this class and the number of elements in this
1407 list. */
1408 std::vector<struct decl_field> nested_types_list;
1409 };
1410
1411 /* One item on the queue of compilation units to read in full symbols
1412 for. */
1413 struct dwarf2_queue_item
1414 {
1415 struct dwarf2_per_cu_data *per_cu;
1416 enum language pretend_language;
1417 struct dwarf2_queue_item *next;
1418 };
1419
1420 /* The current queue. */
1421 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1422
1423 /* Loaded secondary compilation units are kept in memory until they
1424 have not been referenced for the processing of this many
1425 compilation units. Set this to zero to disable caching. Cache
1426 sizes of up to at least twenty will improve startup time for
1427 typical inter-CU-reference binaries, at an obvious memory cost. */
1428 static int dwarf_max_cache_age = 5;
1429 static void
1430 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1431 struct cmd_list_element *c, const char *value)
1432 {
1433 fprintf_filtered (file, _("The upper bound on the age of cached "
1434 "DWARF compilation units is %s.\n"),
1435 value);
1436 }
1437 \f
1438 /* local function prototypes */
1439
1440 static const char *get_section_name (const struct dwarf2_section_info *);
1441
1442 static const char *get_section_file_name (const struct dwarf2_section_info *);
1443
1444 static void dwarf2_find_base_address (struct die_info *die,
1445 struct dwarf2_cu *cu);
1446
1447 static struct partial_symtab *create_partial_symtab
1448 (struct dwarf2_per_cu_data *per_cu, const char *name);
1449
1450 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1451 const gdb_byte *info_ptr,
1452 struct die_info *type_unit_die,
1453 int has_children, void *data);
1454
1455 static void dwarf2_build_psymtabs_hard
1456 (struct dwarf2_per_objfile *dwarf2_per_objfile);
1457
1458 static void scan_partial_symbols (struct partial_die_info *,
1459 CORE_ADDR *, CORE_ADDR *,
1460 int, struct dwarf2_cu *);
1461
1462 static void add_partial_symbol (struct partial_die_info *,
1463 struct dwarf2_cu *);
1464
1465 static void add_partial_namespace (struct partial_die_info *pdi,
1466 CORE_ADDR *lowpc, CORE_ADDR *highpc,
1467 int set_addrmap, struct dwarf2_cu *cu);
1468
1469 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1470 CORE_ADDR *highpc, int set_addrmap,
1471 struct dwarf2_cu *cu);
1472
1473 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1474 struct dwarf2_cu *cu);
1475
1476 static void add_partial_subprogram (struct partial_die_info *pdi,
1477 CORE_ADDR *lowpc, CORE_ADDR *highpc,
1478 int need_pc, struct dwarf2_cu *cu);
1479
1480 static void dwarf2_read_symtab (struct partial_symtab *,
1481 struct objfile *);
1482
1483 static void psymtab_to_symtab_1 (struct partial_symtab *);
1484
1485 static abbrev_table_up abbrev_table_read_table
1486 (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1487 sect_offset);
1488
1489 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1490
1491 static struct partial_die_info *load_partial_dies
1492 (const struct die_reader_specs *, const gdb_byte *, int);
1493
1494 /* A pair of partial_die_info and compilation unit. */
1495 struct cu_partial_die_info
1496 {
1497 /* The compilation unit of the partial_die_info. */
1498 struct dwarf2_cu *cu;
1499 /* A partial_die_info. */
1500 struct partial_die_info *pdi;
1501
1502 cu_partial_die_info (struct dwarf2_cu *cu, struct partial_die_info *pdi)
1503 : cu (cu),
1504 pdi (pdi)
1505 { /* Nothhing. */ }
1506
1507 private:
1508 cu_partial_die_info () = delete;
1509 };
1510
1511 static const struct cu_partial_die_info find_partial_die (sect_offset, int,
1512 struct dwarf2_cu *);
1513
1514 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1515 struct attribute *, struct attr_abbrev *,
1516 const gdb_byte *);
1517
1518 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1519
1520 static int read_1_signed_byte (bfd *, const gdb_byte *);
1521
1522 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1523
1524 /* Read the next three bytes (little-endian order) as an unsigned integer. */
1525 static unsigned int read_3_bytes (bfd *, const gdb_byte *);
1526
1527 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1528
1529 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1530
1531 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1532 unsigned int *);
1533
1534 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1535
1536 static LONGEST read_checked_initial_length_and_offset
1537 (bfd *, const gdb_byte *, const struct comp_unit_head *,
1538 unsigned int *, unsigned int *);
1539
1540 static LONGEST read_offset (bfd *, const gdb_byte *,
1541 const struct comp_unit_head *,
1542 unsigned int *);
1543
1544 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1545
1546 static sect_offset read_abbrev_offset
1547 (struct dwarf2_per_objfile *dwarf2_per_objfile,
1548 struct dwarf2_section_info *, sect_offset);
1549
1550 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1551
1552 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1553
1554 static const char *read_indirect_string
1555 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1556 const struct comp_unit_head *, unsigned int *);
1557
1558 static const char *read_indirect_line_string
1559 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1560 const struct comp_unit_head *, unsigned int *);
1561
1562 static const char *read_indirect_string_at_offset
1563 (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1564 LONGEST str_offset);
1565
1566 static const char *read_indirect_string_from_dwz
1567 (struct objfile *objfile, struct dwz_file *, LONGEST);
1568
1569 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1570
1571 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1572 const gdb_byte *,
1573 unsigned int *);
1574
1575 static const char *read_str_index (const struct die_reader_specs *reader,
1576 ULONGEST str_index);
1577
1578 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1579
1580 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1581 struct dwarf2_cu *);
1582
1583 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1584 unsigned int);
1585
1586 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1587 struct dwarf2_cu *cu);
1588
1589 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1590 struct dwarf2_cu *cu);
1591
1592 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1593
1594 static struct die_info *die_specification (struct die_info *die,
1595 struct dwarf2_cu **);
1596
1597 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1598 struct dwarf2_cu *cu);
1599
1600 static void dwarf_decode_lines (struct line_header *, const char *,
1601 struct dwarf2_cu *, struct partial_symtab *,
1602 CORE_ADDR, int decode_mapping);
1603
1604 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1605 const char *);
1606
1607 static struct symbol *new_symbol (struct die_info *, struct type *,
1608 struct dwarf2_cu *, struct symbol * = NULL);
1609
1610 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1611 struct dwarf2_cu *);
1612
1613 static void dwarf2_const_value_attr (const struct attribute *attr,
1614 struct type *type,
1615 const char *name,
1616 struct obstack *obstack,
1617 struct dwarf2_cu *cu, LONGEST *value,
1618 const gdb_byte **bytes,
1619 struct dwarf2_locexpr_baton **baton);
1620
1621 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1622
1623 static int need_gnat_info (struct dwarf2_cu *);
1624
1625 static struct type *die_descriptive_type (struct die_info *,
1626 struct dwarf2_cu *);
1627
1628 static void set_descriptive_type (struct type *, struct die_info *,
1629 struct dwarf2_cu *);
1630
1631 static struct type *die_containing_type (struct die_info *,
1632 struct dwarf2_cu *);
1633
1634 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1635 struct dwarf2_cu *);
1636
1637 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1638
1639 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1640
1641 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1642
1643 static char *typename_concat (struct obstack *obs, const char *prefix,
1644 const char *suffix, int physname,
1645 struct dwarf2_cu *cu);
1646
1647 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1648
1649 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1650
1651 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1652
1653 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1654
1655 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1656
1657 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1658
1659 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1660 struct dwarf2_cu *, struct partial_symtab *);
1661
1662 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1663 values. Keep the items ordered with increasing constraints compliance. */
1664 enum pc_bounds_kind
1665 {
1666 /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found. */
1667 PC_BOUNDS_NOT_PRESENT,
1668
1669 /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1670 were present but they do not form a valid range of PC addresses. */
1671 PC_BOUNDS_INVALID,
1672
1673 /* Discontiguous range was found - that is DW_AT_ranges was found. */
1674 PC_BOUNDS_RANGES,
1675
1676 /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found. */
1677 PC_BOUNDS_HIGH_LOW,
1678 };
1679
1680 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1681 CORE_ADDR *, CORE_ADDR *,
1682 struct dwarf2_cu *,
1683 struct partial_symtab *);
1684
1685 static void get_scope_pc_bounds (struct die_info *,
1686 CORE_ADDR *, CORE_ADDR *,
1687 struct dwarf2_cu *);
1688
1689 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1690 CORE_ADDR, struct dwarf2_cu *);
1691
1692 static void dwarf2_add_field (struct field_info *, struct die_info *,
1693 struct dwarf2_cu *);
1694
1695 static void dwarf2_attach_fields_to_type (struct field_info *,
1696 struct type *, struct dwarf2_cu *);
1697
1698 static void dwarf2_add_member_fn (struct field_info *,
1699 struct die_info *, struct type *,
1700 struct dwarf2_cu *);
1701
1702 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1703 struct type *,
1704 struct dwarf2_cu *);
1705
1706 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1707
1708 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1709
1710 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1711
1712 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1713
1714 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1715
1716 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1717
1718 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1719
1720 static struct type *read_module_type (struct die_info *die,
1721 struct dwarf2_cu *cu);
1722
1723 static const char *namespace_name (struct die_info *die,
1724 int *is_anonymous, struct dwarf2_cu *);
1725
1726 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1727
1728 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1729
1730 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1731 struct dwarf2_cu *);
1732
1733 static struct die_info *read_die_and_siblings_1
1734 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1735 struct die_info *);
1736
1737 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1738 const gdb_byte *info_ptr,
1739 const gdb_byte **new_info_ptr,
1740 struct die_info *parent);
1741
1742 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1743 struct die_info **, const gdb_byte *,
1744 int *, int);
1745
1746 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1747 struct die_info **, const gdb_byte *,
1748 int *);
1749
1750 static void process_die (struct die_info *, struct dwarf2_cu *);
1751
1752 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1753 struct obstack *);
1754
1755 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1756
1757 static const char *dwarf2_full_name (const char *name,
1758 struct die_info *die,
1759 struct dwarf2_cu *cu);
1760
1761 static const char *dwarf2_physname (const char *name, struct die_info *die,
1762 struct dwarf2_cu *cu);
1763
1764 static struct die_info *dwarf2_extension (struct die_info *die,
1765 struct dwarf2_cu **);
1766
1767 static const char *dwarf_tag_name (unsigned int);
1768
1769 static const char *dwarf_attr_name (unsigned int);
1770
1771 static const char *dwarf_form_name (unsigned int);
1772
1773 static const char *dwarf_bool_name (unsigned int);
1774
1775 static const char *dwarf_type_encoding_name (unsigned int);
1776
1777 static struct die_info *sibling_die (struct die_info *);
1778
1779 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1780
1781 static void dump_die_for_error (struct die_info *);
1782
1783 static void dump_die_1 (struct ui_file *, int level, int max_level,
1784 struct die_info *);
1785
1786 /*static*/ void dump_die (struct die_info *, int max_level);
1787
1788 static void store_in_ref_table (struct die_info *,
1789 struct dwarf2_cu *);
1790
1791 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1792
1793 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1794
1795 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1796 const struct attribute *,
1797 struct dwarf2_cu **);
1798
1799 static struct die_info *follow_die_ref (struct die_info *,
1800 const struct attribute *,
1801 struct dwarf2_cu **);
1802
1803 static struct die_info *follow_die_sig (struct die_info *,
1804 const struct attribute *,
1805 struct dwarf2_cu **);
1806
1807 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1808 struct dwarf2_cu *);
1809
1810 static struct type *get_DW_AT_signature_type (struct die_info *,
1811 const struct attribute *,
1812 struct dwarf2_cu *);
1813
1814 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1815
1816 static void read_signatured_type (struct signatured_type *);
1817
1818 static int attr_to_dynamic_prop (const struct attribute *attr,
1819 struct die_info *die, struct dwarf2_cu *cu,
1820 struct dynamic_prop *prop);
1821
1822 /* memory allocation interface */
1823
1824 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1825
1826 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1827
1828 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1829
1830 static int attr_form_is_block (const struct attribute *);
1831
1832 static int attr_form_is_section_offset (const struct attribute *);
1833
1834 static int attr_form_is_constant (const struct attribute *);
1835
1836 static int attr_form_is_ref (const struct attribute *);
1837
1838 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1839 struct dwarf2_loclist_baton *baton,
1840 const struct attribute *attr);
1841
1842 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1843 struct symbol *sym,
1844 struct dwarf2_cu *cu,
1845 int is_block);
1846
1847 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1848 const gdb_byte *info_ptr,
1849 struct abbrev_info *abbrev);
1850
1851 static hashval_t partial_die_hash (const void *item);
1852
1853 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1854
1855 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1856 (sect_offset sect_off, unsigned int offset_in_dwz,
1857 struct dwarf2_per_objfile *dwarf2_per_objfile);
1858
1859 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1860 struct die_info *comp_unit_die,
1861 enum language pretend_language);
1862
1863 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1864
1865 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1866
1867 static struct type *set_die_type (struct die_info *, struct type *,
1868 struct dwarf2_cu *);
1869
1870 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1871
1872 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1873
1874 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1875 enum language);
1876
1877 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1878 enum language);
1879
1880 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1881 enum language);
1882
1883 static void dwarf2_add_dependence (struct dwarf2_cu *,
1884 struct dwarf2_per_cu_data *);
1885
1886 static void dwarf2_mark (struct dwarf2_cu *);
1887
1888 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1889
1890 static struct type *get_die_type_at_offset (sect_offset,
1891 struct dwarf2_per_cu_data *);
1892
1893 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1894
1895 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1896 enum language pretend_language);
1897
1898 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1899
1900 /* Class, the destructor of which frees all allocated queue entries. This
1901 will only have work to do if an error was thrown while processing the
1902 dwarf. If no error was thrown then the queue entries should have all
1903 been processed, and freed, as we went along. */
1904
1905 class dwarf2_queue_guard
1906 {
1907 public:
1908 dwarf2_queue_guard () = default;
1909
1910 /* Free any entries remaining on the queue. There should only be
1911 entries left if we hit an error while processing the dwarf. */
1912 ~dwarf2_queue_guard ()
1913 {
1914 struct dwarf2_queue_item *item, *last;
1915
1916 item = dwarf2_queue;
1917 while (item)
1918 {
1919 /* Anything still marked queued is likely to be in an
1920 inconsistent state, so discard it. */
1921 if (item->per_cu->queued)
1922 {
1923 if (item->per_cu->cu != NULL)
1924 free_one_cached_comp_unit (item->per_cu);
1925 item->per_cu->queued = 0;
1926 }
1927
1928 last = item;
1929 item = item->next;
1930 xfree (last);
1931 }
1932
1933 dwarf2_queue = dwarf2_queue_tail = NULL;
1934 }
1935 };
1936
1937 /* The return type of find_file_and_directory. Note, the enclosed
1938 string pointers are only valid while this object is valid. */
1939
1940 struct file_and_directory
1941 {
1942 /* The filename. This is never NULL. */
1943 const char *name;
1944
1945 /* The compilation directory. NULL if not known. If we needed to
1946 compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1947 points directly to the DW_AT_comp_dir string attribute owned by
1948 the obstack that owns the DIE. */
1949 const char *comp_dir;
1950
1951 /* If we needed to build a new string for comp_dir, this is what
1952 owns the storage. */
1953 std::string comp_dir_storage;
1954 };
1955
1956 static file_and_directory find_file_and_directory (struct die_info *die,
1957 struct dwarf2_cu *cu);
1958
1959 static char *file_full_name (int file, struct line_header *lh,
1960 const char *comp_dir);
1961
1962 /* Expected enum dwarf_unit_type for read_comp_unit_head. */
1963 enum class rcuh_kind { COMPILE, TYPE };
1964
1965 static const gdb_byte *read_and_check_comp_unit_head
1966 (struct dwarf2_per_objfile* dwarf2_per_objfile,
1967 struct comp_unit_head *header,
1968 struct dwarf2_section_info *section,
1969 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1970 rcuh_kind section_kind);
1971
1972 static void init_cutu_and_read_dies
1973 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1974 int use_existing_cu, int keep, bool skip_partial,
1975 die_reader_func_ftype *die_reader_func, void *data);
1976
1977 static void init_cutu_and_read_dies_simple
1978 (struct dwarf2_per_cu_data *this_cu,
1979 die_reader_func_ftype *die_reader_func, void *data);
1980
1981 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1982
1983 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1984
1985 static struct dwo_unit *lookup_dwo_unit_in_dwp
1986 (struct dwarf2_per_objfile *dwarf2_per_objfile,
1987 struct dwp_file *dwp_file, const char *comp_dir,
1988 ULONGEST signature, int is_debug_types);
1989
1990 static struct dwp_file *get_dwp_file
1991 (struct dwarf2_per_objfile *dwarf2_per_objfile);
1992
1993 static struct dwo_unit *lookup_dwo_comp_unit
1994 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1995
1996 static struct dwo_unit *lookup_dwo_type_unit
1997 (struct signatured_type *, const char *, const char *);
1998
1999 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
2000
2001 /* A unique pointer to a dwo_file. */
2002
2003 typedef std::unique_ptr<struct dwo_file> dwo_file_up;
2004
2005 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2006
2007 static void check_producer (struct dwarf2_cu *cu);
2008
2009 static void free_line_header_voidp (void *arg);
2010 \f
2011 /* Various complaints about symbol reading that don't abort the process. */
2012
2013 static void
2014 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2015 {
2016 complaint (_("statement list doesn't fit in .debug_line section"));
2017 }
2018
2019 static void
2020 dwarf2_debug_line_missing_file_complaint (void)
2021 {
2022 complaint (_(".debug_line section has line data without a file"));
2023 }
2024
2025 static void
2026 dwarf2_debug_line_missing_end_sequence_complaint (void)
2027 {
2028 complaint (_(".debug_line section has line "
2029 "program sequence without an end"));
2030 }
2031
2032 static void
2033 dwarf2_complex_location_expr_complaint (void)
2034 {
2035 complaint (_("location expression too complex"));
2036 }
2037
2038 static void
2039 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2040 int arg3)
2041 {
2042 complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2043 arg1, arg2, arg3);
2044 }
2045
2046 static void
2047 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2048 {
2049 complaint (_("debug info runs off end of %s section"
2050 " [in module %s]"),
2051 get_section_name (section),
2052 get_section_file_name (section));
2053 }
2054
2055 static void
2056 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2057 {
2058 complaint (_("macro debug info contains a "
2059 "malformed macro definition:\n`%s'"),
2060 arg1);
2061 }
2062
2063 static void
2064 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2065 {
2066 complaint (_("invalid attribute class or form for '%s' in '%s'"),
2067 arg1, arg2);
2068 }
2069
2070 /* Hash function for line_header_hash. */
2071
2072 static hashval_t
2073 line_header_hash (const struct line_header *ofs)
2074 {
2075 return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2076 }
2077
2078 /* Hash function for htab_create_alloc_ex for line_header_hash. */
2079
2080 static hashval_t
2081 line_header_hash_voidp (const void *item)
2082 {
2083 const struct line_header *ofs = (const struct line_header *) item;
2084
2085 return line_header_hash (ofs);
2086 }
2087
2088 /* Equality function for line_header_hash. */
2089
2090 static int
2091 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2092 {
2093 const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2094 const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2095
2096 return (ofs_lhs->sect_off == ofs_rhs->sect_off
2097 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2098 }
2099
2100 \f
2101
2102 /* Read the given attribute value as an address, taking the attribute's
2103 form into account. */
2104
2105 static CORE_ADDR
2106 attr_value_as_address (struct attribute *attr)
2107 {
2108 CORE_ADDR addr;
2109
2110 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_addrx
2111 && attr->form != DW_FORM_GNU_addr_index)
2112 {
2113 /* Aside from a few clearly defined exceptions, attributes that
2114 contain an address must always be in DW_FORM_addr form.
2115 Unfortunately, some compilers happen to be violating this
2116 requirement by encoding addresses using other forms, such
2117 as DW_FORM_data4 for example. For those broken compilers,
2118 we try to do our best, without any guarantee of success,
2119 to interpret the address correctly. It would also be nice
2120 to generate a complaint, but that would require us to maintain
2121 a list of legitimate cases where a non-address form is allowed,
2122 as well as update callers to pass in at least the CU's DWARF
2123 version. This is more overhead than what we're willing to
2124 expand for a pretty rare case. */
2125 addr = DW_UNSND (attr);
2126 }
2127 else
2128 addr = DW_ADDR (attr);
2129
2130 return addr;
2131 }
2132
2133 /* See declaration. */
2134
2135 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2136 const dwarf2_debug_sections *names)
2137 : objfile (objfile_)
2138 {
2139 if (names == NULL)
2140 names = &dwarf2_elf_names;
2141
2142 bfd *obfd = objfile->obfd;
2143
2144 for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2145 locate_sections (obfd, sec, *names);
2146 }
2147
2148 dwarf2_per_objfile::~dwarf2_per_objfile ()
2149 {
2150 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
2151 free_cached_comp_units ();
2152
2153 if (quick_file_names_table)
2154 htab_delete (quick_file_names_table);
2155
2156 if (line_header_hash)
2157 htab_delete (line_header_hash);
2158
2159 for (dwarf2_per_cu_data *per_cu : all_comp_units)
2160 VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2161
2162 for (signatured_type *sig_type : all_type_units)
2163 VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2164
2165 VEC_free (dwarf2_section_info_def, types);
2166
2167 /* Everything else should be on the objfile obstack. */
2168 }
2169
2170 /* See declaration. */
2171
2172 void
2173 dwarf2_per_objfile::free_cached_comp_units ()
2174 {
2175 dwarf2_per_cu_data *per_cu = read_in_chain;
2176 dwarf2_per_cu_data **last_chain = &read_in_chain;
2177 while (per_cu != NULL)
2178 {
2179 dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2180
2181 delete per_cu->cu;
2182 *last_chain = next_cu;
2183 per_cu = next_cu;
2184 }
2185 }
2186
2187 /* A helper class that calls free_cached_comp_units on
2188 destruction. */
2189
2190 class free_cached_comp_units
2191 {
2192 public:
2193
2194 explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2195 : m_per_objfile (per_objfile)
2196 {
2197 }
2198
2199 ~free_cached_comp_units ()
2200 {
2201 m_per_objfile->free_cached_comp_units ();
2202 }
2203
2204 DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2205
2206 private:
2207
2208 dwarf2_per_objfile *m_per_objfile;
2209 };
2210
2211 /* Try to locate the sections we need for DWARF 2 debugging
2212 information and return true if we have enough to do something.
2213 NAMES points to the dwarf2 section names, or is NULL if the standard
2214 ELF names are used. */
2215
2216 int
2217 dwarf2_has_info (struct objfile *objfile,
2218 const struct dwarf2_debug_sections *names)
2219 {
2220 if (objfile->flags & OBJF_READNEVER)
2221 return 0;
2222
2223 struct dwarf2_per_objfile *dwarf2_per_objfile
2224 = get_dwarf2_per_objfile (objfile);
2225
2226 if (dwarf2_per_objfile == NULL)
2227 dwarf2_per_objfile = dwarf2_objfile_data_key.emplace (objfile, objfile,
2228 names);
2229
2230 return (!dwarf2_per_objfile->info.is_virtual
2231 && dwarf2_per_objfile->info.s.section != NULL
2232 && !dwarf2_per_objfile->abbrev.is_virtual
2233 && dwarf2_per_objfile->abbrev.s.section != NULL);
2234 }
2235
2236 /* Return the containing section of virtual section SECTION. */
2237
2238 static struct dwarf2_section_info *
2239 get_containing_section (const struct dwarf2_section_info *section)
2240 {
2241 gdb_assert (section->is_virtual);
2242 return section->s.containing_section;
2243 }
2244
2245 /* Return the bfd owner of SECTION. */
2246
2247 static struct bfd *
2248 get_section_bfd_owner (const struct dwarf2_section_info *section)
2249 {
2250 if (section->is_virtual)
2251 {
2252 section = get_containing_section (section);
2253 gdb_assert (!section->is_virtual);
2254 }
2255 return section->s.section->owner;
2256 }
2257
2258 /* Return the bfd section of SECTION.
2259 Returns NULL if the section is not present. */
2260
2261 static asection *
2262 get_section_bfd_section (const struct dwarf2_section_info *section)
2263 {
2264 if (section->is_virtual)
2265 {
2266 section = get_containing_section (section);
2267 gdb_assert (!section->is_virtual);
2268 }
2269 return section->s.section;
2270 }
2271
2272 /* Return the name of SECTION. */
2273
2274 static const char *
2275 get_section_name (const struct dwarf2_section_info *section)
2276 {
2277 asection *sectp = get_section_bfd_section (section);
2278
2279 gdb_assert (sectp != NULL);
2280 return bfd_section_name (get_section_bfd_owner (section), sectp);
2281 }
2282
2283 /* Return the name of the file SECTION is in. */
2284
2285 static const char *
2286 get_section_file_name (const struct dwarf2_section_info *section)
2287 {
2288 bfd *abfd = get_section_bfd_owner (section);
2289
2290 return bfd_get_filename (abfd);
2291 }
2292
2293 /* Return the id of SECTION.
2294 Returns 0 if SECTION doesn't exist. */
2295
2296 static int
2297 get_section_id (const struct dwarf2_section_info *section)
2298 {
2299 asection *sectp = get_section_bfd_section (section);
2300
2301 if (sectp == NULL)
2302 return 0;
2303 return sectp->id;
2304 }
2305
2306 /* Return the flags of SECTION.
2307 SECTION (or containing section if this is a virtual section) must exist. */
2308
2309 static int
2310 get_section_flags (const struct dwarf2_section_info *section)
2311 {
2312 asection *sectp = get_section_bfd_section (section);
2313
2314 gdb_assert (sectp != NULL);
2315 return bfd_get_section_flags (sectp->owner, sectp);
2316 }
2317
2318 /* When loading sections, we look either for uncompressed section or for
2319 compressed section names. */
2320
2321 static int
2322 section_is_p (const char *section_name,
2323 const struct dwarf2_section_names *names)
2324 {
2325 if (names->normal != NULL
2326 && strcmp (section_name, names->normal) == 0)
2327 return 1;
2328 if (names->compressed != NULL
2329 && strcmp (section_name, names->compressed) == 0)
2330 return 1;
2331 return 0;
2332 }
2333
2334 /* See declaration. */
2335
2336 void
2337 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2338 const dwarf2_debug_sections &names)
2339 {
2340 flagword aflag = bfd_get_section_flags (abfd, sectp);
2341
2342 if ((aflag & SEC_HAS_CONTENTS) == 0)
2343 {
2344 }
2345 else if (section_is_p (sectp->name, &names.info))
2346 {
2347 this->info.s.section = sectp;
2348 this->info.size = bfd_get_section_size (sectp);
2349 }
2350 else if (section_is_p (sectp->name, &names.abbrev))
2351 {
2352 this->abbrev.s.section = sectp;
2353 this->abbrev.size = bfd_get_section_size (sectp);
2354 }
2355 else if (section_is_p (sectp->name, &names.line))
2356 {
2357 this->line.s.section = sectp;
2358 this->line.size = bfd_get_section_size (sectp);
2359 }
2360 else if (section_is_p (sectp->name, &names.loc))
2361 {
2362 this->loc.s.section = sectp;
2363 this->loc.size = bfd_get_section_size (sectp);
2364 }
2365 else if (section_is_p (sectp->name, &names.loclists))
2366 {
2367 this->loclists.s.section = sectp;
2368 this->loclists.size = bfd_get_section_size (sectp);
2369 }
2370 else if (section_is_p (sectp->name, &names.macinfo))
2371 {
2372 this->macinfo.s.section = sectp;
2373 this->macinfo.size = bfd_get_section_size (sectp);
2374 }
2375 else if (section_is_p (sectp->name, &names.macro))
2376 {
2377 this->macro.s.section = sectp;
2378 this->macro.size = bfd_get_section_size (sectp);
2379 }
2380 else if (section_is_p (sectp->name, &names.str))
2381 {
2382 this->str.s.section = sectp;
2383 this->str.size = bfd_get_section_size (sectp);
2384 }
2385 else if (section_is_p (sectp->name, &names.line_str))
2386 {
2387 this->line_str.s.section = sectp;
2388 this->line_str.size = bfd_get_section_size (sectp);
2389 }
2390 else if (section_is_p (sectp->name, &names.addr))
2391 {
2392 this->addr.s.section = sectp;
2393 this->addr.size = bfd_get_section_size (sectp);
2394 }
2395 else if (section_is_p (sectp->name, &names.frame))
2396 {
2397 this->frame.s.section = sectp;
2398 this->frame.size = bfd_get_section_size (sectp);
2399 }
2400 else if (section_is_p (sectp->name, &names.eh_frame))
2401 {
2402 this->eh_frame.s.section = sectp;
2403 this->eh_frame.size = bfd_get_section_size (sectp);
2404 }
2405 else if (section_is_p (sectp->name, &names.ranges))
2406 {
2407 this->ranges.s.section = sectp;
2408 this->ranges.size = bfd_get_section_size (sectp);
2409 }
2410 else if (section_is_p (sectp->name, &names.rnglists))
2411 {
2412 this->rnglists.s.section = sectp;
2413 this->rnglists.size = bfd_get_section_size (sectp);
2414 }
2415 else if (section_is_p (sectp->name, &names.types))
2416 {
2417 struct dwarf2_section_info type_section;
2418
2419 memset (&type_section, 0, sizeof (type_section));
2420 type_section.s.section = sectp;
2421 type_section.size = bfd_get_section_size (sectp);
2422
2423 VEC_safe_push (dwarf2_section_info_def, this->types,
2424 &type_section);
2425 }
2426 else if (section_is_p (sectp->name, &names.gdb_index))
2427 {
2428 this->gdb_index.s.section = sectp;
2429 this->gdb_index.size = bfd_get_section_size (sectp);
2430 }
2431 else if (section_is_p (sectp->name, &names.debug_names))
2432 {
2433 this->debug_names.s.section = sectp;
2434 this->debug_names.size = bfd_get_section_size (sectp);
2435 }
2436 else if (section_is_p (sectp->name, &names.debug_aranges))
2437 {
2438 this->debug_aranges.s.section = sectp;
2439 this->debug_aranges.size = bfd_get_section_size (sectp);
2440 }
2441
2442 if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2443 && bfd_section_vma (abfd, sectp) == 0)
2444 this->has_section_at_zero = true;
2445 }
2446
2447 /* A helper function that decides whether a section is empty,
2448 or not present. */
2449
2450 static int
2451 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2452 {
2453 if (section->is_virtual)
2454 return section->size == 0;
2455 return section->s.section == NULL || section->size == 0;
2456 }
2457
2458 /* See dwarf2read.h. */
2459
2460 void
2461 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2462 {
2463 asection *sectp;
2464 bfd *abfd;
2465 gdb_byte *buf, *retbuf;
2466
2467 if (info->readin)
2468 return;
2469 info->buffer = NULL;
2470 info->readin = true;
2471
2472 if (dwarf2_section_empty_p (info))
2473 return;
2474
2475 sectp = get_section_bfd_section (info);
2476
2477 /* If this is a virtual section we need to read in the real one first. */
2478 if (info->is_virtual)
2479 {
2480 struct dwarf2_section_info *containing_section =
2481 get_containing_section (info);
2482
2483 gdb_assert (sectp != NULL);
2484 if ((sectp->flags & SEC_RELOC) != 0)
2485 {
2486 error (_("Dwarf Error: DWP format V2 with relocations is not"
2487 " supported in section %s [in module %s]"),
2488 get_section_name (info), get_section_file_name (info));
2489 }
2490 dwarf2_read_section (objfile, containing_section);
2491 /* Other code should have already caught virtual sections that don't
2492 fit. */
2493 gdb_assert (info->virtual_offset + info->size
2494 <= containing_section->size);
2495 /* If the real section is empty or there was a problem reading the
2496 section we shouldn't get here. */
2497 gdb_assert (containing_section->buffer != NULL);
2498 info->buffer = containing_section->buffer + info->virtual_offset;
2499 return;
2500 }
2501
2502 /* If the section has relocations, we must read it ourselves.
2503 Otherwise we attach it to the BFD. */
2504 if ((sectp->flags & SEC_RELOC) == 0)
2505 {
2506 info->buffer = gdb_bfd_map_section (sectp, &info->size);
2507 return;
2508 }
2509
2510 buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2511 info->buffer = buf;
2512
2513 /* When debugging .o files, we may need to apply relocations; see
2514 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2515 We never compress sections in .o files, so we only need to
2516 try this when the section is not compressed. */
2517 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2518 if (retbuf != NULL)
2519 {
2520 info->buffer = retbuf;
2521 return;
2522 }
2523
2524 abfd = get_section_bfd_owner (info);
2525 gdb_assert (abfd != NULL);
2526
2527 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2528 || bfd_bread (buf, info->size, abfd) != info->size)
2529 {
2530 error (_("Dwarf Error: Can't read DWARF data"
2531 " in section %s [in module %s]"),
2532 bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2533 }
2534 }
2535
2536 /* A helper function that returns the size of a section in a safe way.
2537 If you are positive that the section has been read before using the
2538 size, then it is safe to refer to the dwarf2_section_info object's
2539 "size" field directly. In other cases, you must call this
2540 function, because for compressed sections the size field is not set
2541 correctly until the section has been read. */
2542
2543 static bfd_size_type
2544 dwarf2_section_size (struct objfile *objfile,
2545 struct dwarf2_section_info *info)
2546 {
2547 if (!info->readin)
2548 dwarf2_read_section (objfile, info);
2549 return info->size;
2550 }
2551
2552 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2553 SECTION_NAME. */
2554
2555 void
2556 dwarf2_get_section_info (struct objfile *objfile,
2557 enum dwarf2_section_enum sect,
2558 asection **sectp, const gdb_byte **bufp,
2559 bfd_size_type *sizep)
2560 {
2561 struct dwarf2_per_objfile *data = dwarf2_objfile_data_key.get (objfile);
2562 struct dwarf2_section_info *info;
2563
2564 /* We may see an objfile without any DWARF, in which case we just
2565 return nothing. */
2566 if (data == NULL)
2567 {
2568 *sectp = NULL;
2569 *bufp = NULL;
2570 *sizep = 0;
2571 return;
2572 }
2573 switch (sect)
2574 {
2575 case DWARF2_DEBUG_FRAME:
2576 info = &data->frame;
2577 break;
2578 case DWARF2_EH_FRAME:
2579 info = &data->eh_frame;
2580 break;
2581 default:
2582 gdb_assert_not_reached ("unexpected section");
2583 }
2584
2585 dwarf2_read_section (objfile, info);
2586
2587 *sectp = get_section_bfd_section (info);
2588 *bufp = info->buffer;
2589 *sizep = info->size;
2590 }
2591
2592 /* A helper function to find the sections for a .dwz file. */
2593
2594 static void
2595 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2596 {
2597 struct dwz_file *dwz_file = (struct dwz_file *) arg;
2598
2599 /* Note that we only support the standard ELF names, because .dwz
2600 is ELF-only (at the time of writing). */
2601 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2602 {
2603 dwz_file->abbrev.s.section = sectp;
2604 dwz_file->abbrev.size = bfd_get_section_size (sectp);
2605 }
2606 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2607 {
2608 dwz_file->info.s.section = sectp;
2609 dwz_file->info.size = bfd_get_section_size (sectp);
2610 }
2611 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2612 {
2613 dwz_file->str.s.section = sectp;
2614 dwz_file->str.size = bfd_get_section_size (sectp);
2615 }
2616 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2617 {
2618 dwz_file->line.s.section = sectp;
2619 dwz_file->line.size = bfd_get_section_size (sectp);
2620 }
2621 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2622 {
2623 dwz_file->macro.s.section = sectp;
2624 dwz_file->macro.size = bfd_get_section_size (sectp);
2625 }
2626 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2627 {
2628 dwz_file->gdb_index.s.section = sectp;
2629 dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2630 }
2631 else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2632 {
2633 dwz_file->debug_names.s.section = sectp;
2634 dwz_file->debug_names.size = bfd_get_section_size (sectp);
2635 }
2636 }
2637
2638 /* See dwarf2read.h. */
2639
2640 struct dwz_file *
2641 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2642 {
2643 const char *filename;
2644 bfd_size_type buildid_len_arg;
2645 size_t buildid_len;
2646 bfd_byte *buildid;
2647
2648 if (dwarf2_per_objfile->dwz_file != NULL)
2649 return dwarf2_per_objfile->dwz_file.get ();
2650
2651 bfd_set_error (bfd_error_no_error);
2652 gdb::unique_xmalloc_ptr<char> data
2653 (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2654 &buildid_len_arg, &buildid));
2655 if (data == NULL)
2656 {
2657 if (bfd_get_error () == bfd_error_no_error)
2658 return NULL;
2659 error (_("could not read '.gnu_debugaltlink' section: %s"),
2660 bfd_errmsg (bfd_get_error ()));
2661 }
2662
2663 gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2664
2665 buildid_len = (size_t) buildid_len_arg;
2666
2667 filename = data.get ();
2668
2669 std::string abs_storage;
2670 if (!IS_ABSOLUTE_PATH (filename))
2671 {
2672 gdb::unique_xmalloc_ptr<char> abs
2673 = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2674
2675 abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2676 filename = abs_storage.c_str ();
2677 }
2678
2679 /* First try the file name given in the section. If that doesn't
2680 work, try to use the build-id instead. */
2681 gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2682 if (dwz_bfd != NULL)
2683 {
2684 if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2685 dwz_bfd.reset (nullptr);
2686 }
2687
2688 if (dwz_bfd == NULL)
2689 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2690
2691 if (dwz_bfd == NULL)
2692 error (_("could not find '.gnu_debugaltlink' file for %s"),
2693 objfile_name (dwarf2_per_objfile->objfile));
2694
2695 std::unique_ptr<struct dwz_file> result
2696 (new struct dwz_file (std::move (dwz_bfd)));
2697
2698 bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2699 result.get ());
2700
2701 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2702 result->dwz_bfd.get ());
2703 dwarf2_per_objfile->dwz_file = std::move (result);
2704 return dwarf2_per_objfile->dwz_file.get ();
2705 }
2706 \f
2707 /* DWARF quick_symbols_functions support. */
2708
2709 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2710 unique line tables, so we maintain a separate table of all .debug_line
2711 derived entries to support the sharing.
2712 All the quick functions need is the list of file names. We discard the
2713 line_header when we're done and don't need to record it here. */
2714 struct quick_file_names
2715 {
2716 /* The data used to construct the hash key. */
2717 struct stmt_list_hash hash;
2718
2719 /* The number of entries in file_names, real_names. */
2720 unsigned int num_file_names;
2721
2722 /* The file names from the line table, after being run through
2723 file_full_name. */
2724 const char **file_names;
2725
2726 /* The file names from the line table after being run through
2727 gdb_realpath. These are computed lazily. */
2728 const char **real_names;
2729 };
2730
2731 /* When using the index (and thus not using psymtabs), each CU has an
2732 object of this type. This is used to hold information needed by
2733 the various "quick" methods. */
2734 struct dwarf2_per_cu_quick_data
2735 {
2736 /* The file table. This can be NULL if there was no file table
2737 or it's currently not read in.
2738 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2739 struct quick_file_names *file_names;
2740
2741 /* The corresponding symbol table. This is NULL if symbols for this
2742 CU have not yet been read. */
2743 struct compunit_symtab *compunit_symtab;
2744
2745 /* A temporary mark bit used when iterating over all CUs in
2746 expand_symtabs_matching. */
2747 unsigned int mark : 1;
2748
2749 /* True if we've tried to read the file table and found there isn't one.
2750 There will be no point in trying to read it again next time. */
2751 unsigned int no_file_data : 1;
2752 };
2753
2754 /* Utility hash function for a stmt_list_hash. */
2755
2756 static hashval_t
2757 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2758 {
2759 hashval_t v = 0;
2760
2761 if (stmt_list_hash->dwo_unit != NULL)
2762 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2763 v += to_underlying (stmt_list_hash->line_sect_off);
2764 return v;
2765 }
2766
2767 /* Utility equality function for a stmt_list_hash. */
2768
2769 static int
2770 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2771 const struct stmt_list_hash *rhs)
2772 {
2773 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2774 return 0;
2775 if (lhs->dwo_unit != NULL
2776 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2777 return 0;
2778
2779 return lhs->line_sect_off == rhs->line_sect_off;
2780 }
2781
2782 /* Hash function for a quick_file_names. */
2783
2784 static hashval_t
2785 hash_file_name_entry (const void *e)
2786 {
2787 const struct quick_file_names *file_data
2788 = (const struct quick_file_names *) e;
2789
2790 return hash_stmt_list_entry (&file_data->hash);
2791 }
2792
2793 /* Equality function for a quick_file_names. */
2794
2795 static int
2796 eq_file_name_entry (const void *a, const void *b)
2797 {
2798 const struct quick_file_names *ea = (const struct quick_file_names *) a;
2799 const struct quick_file_names *eb = (const struct quick_file_names *) b;
2800
2801 return eq_stmt_list_entry (&ea->hash, &eb->hash);
2802 }
2803
2804 /* Delete function for a quick_file_names. */
2805
2806 static void
2807 delete_file_name_entry (void *e)
2808 {
2809 struct quick_file_names *file_data = (struct quick_file_names *) e;
2810 int i;
2811
2812 for (i = 0; i < file_data->num_file_names; ++i)
2813 {
2814 xfree ((void*) file_data->file_names[i]);
2815 if (file_data->real_names)
2816 xfree ((void*) file_data->real_names[i]);
2817 }
2818
2819 /* The space for the struct itself lives on objfile_obstack,
2820 so we don't free it here. */
2821 }
2822
2823 /* Create a quick_file_names hash table. */
2824
2825 static htab_t
2826 create_quick_file_names_table (unsigned int nr_initial_entries)
2827 {
2828 return htab_create_alloc (nr_initial_entries,
2829 hash_file_name_entry, eq_file_name_entry,
2830 delete_file_name_entry, xcalloc, xfree);
2831 }
2832
2833 /* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2834 have to be created afterwards. You should call age_cached_comp_units after
2835 processing PER_CU->CU. dw2_setup must have been already called. */
2836
2837 static void
2838 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2839 {
2840 if (per_cu->is_debug_types)
2841 load_full_type_unit (per_cu);
2842 else
2843 load_full_comp_unit (per_cu, skip_partial, language_minimal);
2844
2845 if (per_cu->cu == NULL)
2846 return; /* Dummy CU. */
2847
2848 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2849 }
2850
2851 /* Read in the symbols for PER_CU. */
2852
2853 static void
2854 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2855 {
2856 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2857
2858 /* Skip type_unit_groups, reading the type units they contain
2859 is handled elsewhere. */
2860 if (IS_TYPE_UNIT_GROUP (per_cu))
2861 return;
2862
2863 /* The destructor of dwarf2_queue_guard frees any entries left on
2864 the queue. After this point we're guaranteed to leave this function
2865 with the dwarf queue empty. */
2866 dwarf2_queue_guard q_guard;
2867
2868 if (dwarf2_per_objfile->using_index
2869 ? per_cu->v.quick->compunit_symtab == NULL
2870 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2871 {
2872 queue_comp_unit (per_cu, language_minimal);
2873 load_cu (per_cu, skip_partial);
2874
2875 /* If we just loaded a CU from a DWO, and we're working with an index
2876 that may badly handle TUs, load all the TUs in that DWO as well.
2877 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2878 if (!per_cu->is_debug_types
2879 && per_cu->cu != NULL
2880 && per_cu->cu->dwo_unit != NULL
2881 && dwarf2_per_objfile->index_table != NULL
2882 && dwarf2_per_objfile->index_table->version <= 7
2883 /* DWP files aren't supported yet. */
2884 && get_dwp_file (dwarf2_per_objfile) == NULL)
2885 queue_and_load_all_dwo_tus (per_cu);
2886 }
2887
2888 process_queue (dwarf2_per_objfile);
2889
2890 /* Age the cache, releasing compilation units that have not
2891 been used recently. */
2892 age_cached_comp_units (dwarf2_per_objfile);
2893 }
2894
2895 /* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2896 the objfile from which this CU came. Returns the resulting symbol
2897 table. */
2898
2899 static struct compunit_symtab *
2900 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2901 {
2902 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2903
2904 gdb_assert (dwarf2_per_objfile->using_index);
2905 if (!per_cu->v.quick->compunit_symtab)
2906 {
2907 free_cached_comp_units freer (dwarf2_per_objfile);
2908 scoped_restore decrementer = increment_reading_symtab ();
2909 dw2_do_instantiate_symtab (per_cu, skip_partial);
2910 process_cu_includes (dwarf2_per_objfile);
2911 }
2912
2913 return per_cu->v.quick->compunit_symtab;
2914 }
2915
2916 /* See declaration. */
2917
2918 dwarf2_per_cu_data *
2919 dwarf2_per_objfile::get_cutu (int index)
2920 {
2921 if (index >= this->all_comp_units.size ())
2922 {
2923 index -= this->all_comp_units.size ();
2924 gdb_assert (index < this->all_type_units.size ());
2925 return &this->all_type_units[index]->per_cu;
2926 }
2927
2928 return this->all_comp_units[index];
2929 }
2930
2931 /* See declaration. */
2932
2933 dwarf2_per_cu_data *
2934 dwarf2_per_objfile::get_cu (int index)
2935 {
2936 gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2937
2938 return this->all_comp_units[index];
2939 }
2940
2941 /* See declaration. */
2942
2943 signatured_type *
2944 dwarf2_per_objfile::get_tu (int index)
2945 {
2946 gdb_assert (index >= 0 && index < this->all_type_units.size ());
2947
2948 return this->all_type_units[index];
2949 }
2950
2951 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2952 objfile_obstack, and constructed with the specified field
2953 values. */
2954
2955 static dwarf2_per_cu_data *
2956 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2957 struct dwarf2_section_info *section,
2958 int is_dwz,
2959 sect_offset sect_off, ULONGEST length)
2960 {
2961 struct objfile *objfile = dwarf2_per_objfile->objfile;
2962 dwarf2_per_cu_data *the_cu
2963 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2964 struct dwarf2_per_cu_data);
2965 the_cu->sect_off = sect_off;
2966 the_cu->length = length;
2967 the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2968 the_cu->section = section;
2969 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2970 struct dwarf2_per_cu_quick_data);
2971 the_cu->is_dwz = is_dwz;
2972 return the_cu;
2973 }
2974
2975 /* A helper for create_cus_from_index that handles a given list of
2976 CUs. */
2977
2978 static void
2979 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2980 const gdb_byte *cu_list, offset_type n_elements,
2981 struct dwarf2_section_info *section,
2982 int is_dwz)
2983 {
2984 for (offset_type i = 0; i < n_elements; i += 2)
2985 {
2986 gdb_static_assert (sizeof (ULONGEST) >= 8);
2987
2988 sect_offset sect_off
2989 = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2990 ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2991 cu_list += 2 * 8;
2992
2993 dwarf2_per_cu_data *per_cu
2994 = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
2995 sect_off, length);
2996 dwarf2_per_objfile->all_comp_units.push_back (per_cu);
2997 }
2998 }
2999
3000 /* Read the CU list from the mapped index, and use it to create all
3001 the CU objects for this objfile. */
3002
3003 static void
3004 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3005 const gdb_byte *cu_list, offset_type cu_list_elements,
3006 const gdb_byte *dwz_list, offset_type dwz_elements)
3007 {
3008 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3009 dwarf2_per_objfile->all_comp_units.reserve
3010 ((cu_list_elements + dwz_elements) / 2);
3011
3012 create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3013 &dwarf2_per_objfile->info, 0);
3014
3015 if (dwz_elements == 0)
3016 return;
3017
3018 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3019 create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3020 &dwz->info, 1);
3021 }
3022
3023 /* Create the signatured type hash table from the index. */
3024
3025 static void
3026 create_signatured_type_table_from_index
3027 (struct dwarf2_per_objfile *dwarf2_per_objfile,
3028 struct dwarf2_section_info *section,
3029 const gdb_byte *bytes,
3030 offset_type elements)
3031 {
3032 struct objfile *objfile = dwarf2_per_objfile->objfile;
3033
3034 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3035 dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3036
3037 htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3038
3039 for (offset_type i = 0; i < elements; i += 3)
3040 {
3041 struct signatured_type *sig_type;
3042 ULONGEST signature;
3043 void **slot;
3044 cu_offset type_offset_in_tu;
3045
3046 gdb_static_assert (sizeof (ULONGEST) >= 8);
3047 sect_offset sect_off
3048 = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3049 type_offset_in_tu
3050 = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3051 BFD_ENDIAN_LITTLE);
3052 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3053 bytes += 3 * 8;
3054
3055 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3056 struct signatured_type);
3057 sig_type->signature = signature;
3058 sig_type->type_offset_in_tu = type_offset_in_tu;
3059 sig_type->per_cu.is_debug_types = 1;
3060 sig_type->per_cu.section = section;
3061 sig_type->per_cu.sect_off = sect_off;
3062 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3063 sig_type->per_cu.v.quick
3064 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3065 struct dwarf2_per_cu_quick_data);
3066
3067 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3068 *slot = sig_type;
3069
3070 dwarf2_per_objfile->all_type_units.push_back (sig_type);
3071 }
3072
3073 dwarf2_per_objfile->signatured_types = sig_types_hash;
3074 }
3075
3076 /* Create the signatured type hash table from .debug_names. */
3077
3078 static void
3079 create_signatured_type_table_from_debug_names
3080 (struct dwarf2_per_objfile *dwarf2_per_objfile,
3081 const mapped_debug_names &map,
3082 struct dwarf2_section_info *section,
3083 struct dwarf2_section_info *abbrev_section)
3084 {
3085 struct objfile *objfile = dwarf2_per_objfile->objfile;
3086
3087 dwarf2_read_section (objfile, section);
3088 dwarf2_read_section (objfile, abbrev_section);
3089
3090 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3091 dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3092
3093 htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3094
3095 for (uint32_t i = 0; i < map.tu_count; ++i)
3096 {
3097 struct signatured_type *sig_type;
3098 void **slot;
3099
3100 sect_offset sect_off
3101 = (sect_offset) (extract_unsigned_integer
3102 (map.tu_table_reordered + i * map.offset_size,
3103 map.offset_size,
3104 map.dwarf5_byte_order));
3105
3106 comp_unit_head cu_header;
3107 read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3108 abbrev_section,
3109 section->buffer + to_underlying (sect_off),
3110 rcuh_kind::TYPE);
3111
3112 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3113 struct signatured_type);
3114 sig_type->signature = cu_header.signature;
3115 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3116 sig_type->per_cu.is_debug_types = 1;
3117 sig_type->per_cu.section = section;
3118 sig_type->per_cu.sect_off = sect_off;
3119 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3120 sig_type->per_cu.v.quick
3121 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3122 struct dwarf2_per_cu_quick_data);
3123
3124 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3125 *slot = sig_type;
3126
3127 dwarf2_per_objfile->all_type_units.push_back (sig_type);
3128 }
3129
3130 dwarf2_per_objfile->signatured_types = sig_types_hash;
3131 }
3132
3133 /* Read the address map data from the mapped index, and use it to
3134 populate the objfile's psymtabs_addrmap. */
3135
3136 static void
3137 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3138 struct mapped_index *index)
3139 {
3140 struct objfile *objfile = dwarf2_per_objfile->objfile;
3141 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3142 const gdb_byte *iter, *end;
3143 struct addrmap *mutable_map;
3144 CORE_ADDR baseaddr;
3145
3146 auto_obstack temp_obstack;
3147
3148 mutable_map = addrmap_create_mutable (&temp_obstack);
3149
3150 iter = index->address_table.data ();
3151 end = iter + index->address_table.size ();
3152
3153 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3154
3155 while (iter < end)
3156 {
3157 ULONGEST hi, lo, cu_index;
3158 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3159 iter += 8;
3160 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3161 iter += 8;
3162 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3163 iter += 4;
3164
3165 if (lo > hi)
3166 {
3167 complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3168 hex_string (lo), hex_string (hi));
3169 continue;
3170 }
3171
3172 if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3173 {
3174 complaint (_(".gdb_index address table has invalid CU number %u"),
3175 (unsigned) cu_index);
3176 continue;
3177 }
3178
3179 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3180 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3181 addrmap_set_empty (mutable_map, lo, hi - 1,
3182 dwarf2_per_objfile->get_cu (cu_index));
3183 }
3184
3185 objfile->partial_symtabs->psymtabs_addrmap
3186 = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3187 }
3188
3189 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3190 populate the objfile's psymtabs_addrmap. */
3191
3192 static void
3193 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3194 struct dwarf2_section_info *section)
3195 {
3196 struct objfile *objfile = dwarf2_per_objfile->objfile;
3197 bfd *abfd = objfile->obfd;
3198 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3199 const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3200 SECT_OFF_TEXT (objfile));
3201
3202 auto_obstack temp_obstack;
3203 addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3204
3205 std::unordered_map<sect_offset,
3206 dwarf2_per_cu_data *,
3207 gdb::hash_enum<sect_offset>>
3208 debug_info_offset_to_per_cu;
3209 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3210 {
3211 const auto insertpair
3212 = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3213 if (!insertpair.second)
3214 {
3215 warning (_("Section .debug_aranges in %s has duplicate "
3216 "debug_info_offset %s, ignoring .debug_aranges."),
3217 objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3218 return;
3219 }
3220 }
3221
3222 dwarf2_read_section (objfile, section);
3223
3224 const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3225
3226 const gdb_byte *addr = section->buffer;
3227
3228 while (addr < section->buffer + section->size)
3229 {
3230 const gdb_byte *const entry_addr = addr;
3231 unsigned int bytes_read;
3232
3233 const LONGEST entry_length = read_initial_length (abfd, addr,
3234 &bytes_read);
3235 addr += bytes_read;
3236
3237 const gdb_byte *const entry_end = addr + entry_length;
3238 const bool dwarf5_is_dwarf64 = bytes_read != 4;
3239 const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3240 if (addr + entry_length > section->buffer + section->size)
3241 {
3242 warning (_("Section .debug_aranges in %s entry at offset %zu "
3243 "length %s exceeds section length %s, "
3244 "ignoring .debug_aranges."),
3245 objfile_name (objfile), entry_addr - section->buffer,
3246 plongest (bytes_read + entry_length),
3247 pulongest (section->size));
3248 return;
3249 }
3250
3251 /* The version number. */
3252 const uint16_t version = read_2_bytes (abfd, addr);
3253 addr += 2;
3254 if (version != 2)
3255 {
3256 warning (_("Section .debug_aranges in %s entry at offset %zu "
3257 "has unsupported version %d, ignoring .debug_aranges."),
3258 objfile_name (objfile), entry_addr - section->buffer,
3259 version);
3260 return;
3261 }
3262
3263 const uint64_t debug_info_offset
3264 = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3265 addr += offset_size;
3266 const auto per_cu_it
3267 = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3268 if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3269 {
3270 warning (_("Section .debug_aranges in %s entry at offset %zu "
3271 "debug_info_offset %s does not exists, "
3272 "ignoring .debug_aranges."),
3273 objfile_name (objfile), entry_addr - section->buffer,
3274 pulongest (debug_info_offset));
3275 return;
3276 }
3277 dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3278
3279 const uint8_t address_size = *addr++;
3280 if (address_size < 1 || address_size > 8)
3281 {
3282 warning (_("Section .debug_aranges in %s entry at offset %zu "
3283 "address_size %u is invalid, ignoring .debug_aranges."),
3284 objfile_name (objfile), entry_addr - section->buffer,
3285 address_size);
3286 return;
3287 }
3288
3289 const uint8_t segment_selector_size = *addr++;
3290 if (segment_selector_size != 0)
3291 {
3292 warning (_("Section .debug_aranges in %s entry at offset %zu "
3293 "segment_selector_size %u is not supported, "
3294 "ignoring .debug_aranges."),
3295 objfile_name (objfile), entry_addr - section->buffer,
3296 segment_selector_size);
3297 return;
3298 }
3299
3300 /* Must pad to an alignment boundary that is twice the address
3301 size. It is undocumented by the DWARF standard but GCC does
3302 use it. */
3303 for (size_t padding = ((-(addr - section->buffer))
3304 & (2 * address_size - 1));
3305 padding > 0; padding--)
3306 if (*addr++ != 0)
3307 {
3308 warning (_("Section .debug_aranges in %s entry at offset %zu "
3309 "padding is not zero, ignoring .debug_aranges."),
3310 objfile_name (objfile), entry_addr - section->buffer);
3311 return;
3312 }
3313
3314 for (;;)
3315 {
3316 if (addr + 2 * address_size > entry_end)
3317 {
3318 warning (_("Section .debug_aranges in %s entry at offset %zu "
3319 "address list is not properly terminated, "
3320 "ignoring .debug_aranges."),
3321 objfile_name (objfile), entry_addr - section->buffer);
3322 return;
3323 }
3324 ULONGEST start = extract_unsigned_integer (addr, address_size,
3325 dwarf5_byte_order);
3326 addr += address_size;
3327 ULONGEST length = extract_unsigned_integer (addr, address_size,
3328 dwarf5_byte_order);
3329 addr += address_size;
3330 if (start == 0 && length == 0)
3331 break;
3332 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3333 {
3334 /* Symbol was eliminated due to a COMDAT group. */
3335 continue;
3336 }
3337 ULONGEST end = start + length;
3338 start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3339 - baseaddr);
3340 end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3341 - baseaddr);
3342 addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3343 }
3344 }
3345
3346 objfile->partial_symtabs->psymtabs_addrmap
3347 = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3348 }
3349
3350 /* Find a slot in the mapped index INDEX for the object named NAME.
3351 If NAME is found, set *VEC_OUT to point to the CU vector in the
3352 constant pool and return true. If NAME cannot be found, return
3353 false. */
3354
3355 static bool
3356 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3357 offset_type **vec_out)
3358 {
3359 offset_type hash;
3360 offset_type slot, step;
3361 int (*cmp) (const char *, const char *);
3362
3363 gdb::unique_xmalloc_ptr<char> without_params;
3364 if (current_language->la_language == language_cplus
3365 || current_language->la_language == language_fortran
3366 || current_language->la_language == language_d)
3367 {
3368 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
3369 not contain any. */
3370
3371 if (strchr (name, '(') != NULL)
3372 {
3373 without_params = cp_remove_params (name);
3374
3375 if (without_params != NULL)
3376 name = without_params.get ();
3377 }
3378 }
3379
3380 /* Index version 4 did not support case insensitive searches. But the
3381 indices for case insensitive languages are built in lowercase, therefore
3382 simulate our NAME being searched is also lowercased. */
3383 hash = mapped_index_string_hash ((index->version == 4
3384 && case_sensitivity == case_sensitive_off
3385 ? 5 : index->version),
3386 name);
3387
3388 slot = hash & (index->symbol_table.size () - 1);
3389 step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3390 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3391
3392 for (;;)
3393 {
3394 const char *str;
3395
3396 const auto &bucket = index->symbol_table[slot];
3397 if (bucket.name == 0 && bucket.vec == 0)
3398 return false;
3399
3400 str = index->constant_pool + MAYBE_SWAP (bucket.name);
3401 if (!cmp (name, str))
3402 {
3403 *vec_out = (offset_type *) (index->constant_pool
3404 + MAYBE_SWAP (bucket.vec));
3405 return true;
3406 }
3407
3408 slot = (slot + step) & (index->symbol_table.size () - 1);
3409 }
3410 }
3411
3412 /* A helper function that reads the .gdb_index from BUFFER and fills
3413 in MAP. FILENAME is the name of the file containing the data;
3414 it is used for error reporting. DEPRECATED_OK is true if it is
3415 ok to use deprecated sections.
3416
3417 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3418 out parameters that are filled in with information about the CU and
3419 TU lists in the section.
3420
3421 Returns true if all went well, false otherwise. */
3422
3423 static bool
3424 read_gdb_index_from_buffer (struct objfile *objfile,
3425 const char *filename,
3426 bool deprecated_ok,
3427 gdb::array_view<const gdb_byte> buffer,
3428 struct mapped_index *map,
3429 const gdb_byte **cu_list,
3430 offset_type *cu_list_elements,
3431 const gdb_byte **types_list,
3432 offset_type *types_list_elements)
3433 {
3434 const gdb_byte *addr = &buffer[0];
3435
3436 /* Version check. */
3437 offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3438 /* Versions earlier than 3 emitted every copy of a psymbol. This
3439 causes the index to behave very poorly for certain requests. Version 3
3440 contained incomplete addrmap. So, it seems better to just ignore such
3441 indices. */
3442 if (version < 4)
3443 {
3444 static int warning_printed = 0;
3445 if (!warning_printed)
3446 {
3447 warning (_("Skipping obsolete .gdb_index section in %s."),
3448 filename);
3449 warning_printed = 1;
3450 }
3451 return 0;
3452 }
3453 /* Index version 4 uses a different hash function than index version
3454 5 and later.
3455
3456 Versions earlier than 6 did not emit psymbols for inlined
3457 functions. Using these files will cause GDB not to be able to
3458 set breakpoints on inlined functions by name, so we ignore these
3459 indices unless the user has done
3460 "set use-deprecated-index-sections on". */
3461 if (version < 6 && !deprecated_ok)
3462 {
3463 static int warning_printed = 0;
3464 if (!warning_printed)
3465 {
3466 warning (_("\
3467 Skipping deprecated .gdb_index section in %s.\n\
3468 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3469 to use the section anyway."),
3470 filename);
3471 warning_printed = 1;
3472 }
3473 return 0;
3474 }
3475 /* Version 7 indices generated by gold refer to the CU for a symbol instead
3476 of the TU (for symbols coming from TUs),
3477 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3478 Plus gold-generated indices can have duplicate entries for global symbols,
3479 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3480 These are just performance bugs, and we can't distinguish gdb-generated
3481 indices from gold-generated ones, so issue no warning here. */
3482
3483 /* Indexes with higher version than the one supported by GDB may be no
3484 longer backward compatible. */
3485 if (version > 8)
3486 return 0;
3487
3488 map->version = version;
3489
3490 offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3491
3492 int i = 0;
3493 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3494 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3495 / 8);
3496 ++i;
3497
3498 *types_list = addr + MAYBE_SWAP (metadata[i]);
3499 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3500 - MAYBE_SWAP (metadata[i]))
3501 / 8);
3502 ++i;
3503
3504 const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3505 const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3506 map->address_table
3507 = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3508 ++i;
3509
3510 const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3511 const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3512 map->symbol_table
3513 = gdb::array_view<mapped_index::symbol_table_slot>
3514 ((mapped_index::symbol_table_slot *) symbol_table,
3515 (mapped_index::symbol_table_slot *) symbol_table_end);
3516
3517 ++i;
3518 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3519
3520 return 1;
3521 }
3522
3523 /* Callback types for dwarf2_read_gdb_index. */
3524
3525 typedef gdb::function_view
3526 <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3527 get_gdb_index_contents_ftype;
3528 typedef gdb::function_view
3529 <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3530 get_gdb_index_contents_dwz_ftype;
3531
3532 /* Read .gdb_index. If everything went ok, initialize the "quick"
3533 elements of all the CUs and return 1. Otherwise, return 0. */
3534
3535 static int
3536 dwarf2_read_gdb_index
3537 (struct dwarf2_per_objfile *dwarf2_per_objfile,
3538 get_gdb_index_contents_ftype get_gdb_index_contents,
3539 get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3540 {
3541 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3542 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3543 struct dwz_file *dwz;
3544 struct objfile *objfile = dwarf2_per_objfile->objfile;
3545
3546 gdb::array_view<const gdb_byte> main_index_contents
3547 = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3548
3549 if (main_index_contents.empty ())
3550 return 0;
3551
3552 std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3553 if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3554 use_deprecated_index_sections,
3555 main_index_contents, map.get (), &cu_list,
3556 &cu_list_elements, &types_list,
3557 &types_list_elements))
3558 return 0;
3559
3560 /* Don't use the index if it's empty. */
3561 if (map->symbol_table.empty ())
3562 return 0;
3563
3564 /* If there is a .dwz file, read it so we can get its CU list as
3565 well. */
3566 dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3567 if (dwz != NULL)
3568 {
3569 struct mapped_index dwz_map;
3570 const gdb_byte *dwz_types_ignore;
3571 offset_type dwz_types_elements_ignore;
3572
3573 gdb::array_view<const gdb_byte> dwz_index_content
3574 = get_gdb_index_contents_dwz (objfile, dwz);
3575
3576 if (dwz_index_content.empty ())
3577 return 0;
3578
3579 if (!read_gdb_index_from_buffer (objfile,
3580 bfd_get_filename (dwz->dwz_bfd), 1,
3581 dwz_index_content, &dwz_map,
3582 &dwz_list, &dwz_list_elements,
3583 &dwz_types_ignore,
3584 &dwz_types_elements_ignore))
3585 {
3586 warning (_("could not read '.gdb_index' section from %s; skipping"),
3587 bfd_get_filename (dwz->dwz_bfd));
3588 return 0;
3589 }
3590 }
3591
3592 create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3593 dwz_list, dwz_list_elements);
3594
3595 if (types_list_elements)
3596 {
3597 struct dwarf2_section_info *section;
3598
3599 /* We can only handle a single .debug_types when we have an
3600 index. */
3601 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3602 return 0;
3603
3604 section = VEC_index (dwarf2_section_info_def,
3605 dwarf2_per_objfile->types, 0);
3606
3607 create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3608 types_list, types_list_elements);
3609 }
3610
3611 create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3612
3613 dwarf2_per_objfile->index_table = std::move (map);
3614 dwarf2_per_objfile->using_index = 1;
3615 dwarf2_per_objfile->quick_file_names_table =
3616 create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3617
3618 return 1;
3619 }
3620
3621 /* die_reader_func for dw2_get_file_names. */
3622
3623 static void
3624 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3625 const gdb_byte *info_ptr,
3626 struct die_info *comp_unit_die,
3627 int has_children,
3628 void *data)
3629 {
3630 struct dwarf2_cu *cu = reader->cu;
3631 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3632 struct dwarf2_per_objfile *dwarf2_per_objfile
3633 = cu->per_cu->dwarf2_per_objfile;
3634 struct objfile *objfile = dwarf2_per_objfile->objfile;
3635 struct dwarf2_per_cu_data *lh_cu;
3636 struct attribute *attr;
3637 int i;
3638 void **slot;
3639 struct quick_file_names *qfn;
3640
3641 gdb_assert (! this_cu->is_debug_types);
3642
3643 /* Our callers never want to match partial units -- instead they
3644 will match the enclosing full CU. */
3645 if (comp_unit_die->tag == DW_TAG_partial_unit)
3646 {
3647 this_cu->v.quick->no_file_data = 1;
3648 return;
3649 }
3650
3651 lh_cu = this_cu;
3652 slot = NULL;
3653
3654 line_header_up lh;
3655 sect_offset line_offset {};
3656
3657 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3658 if (attr)
3659 {
3660 struct quick_file_names find_entry;
3661
3662 line_offset = (sect_offset) DW_UNSND (attr);
3663
3664 /* We may have already read in this line header (TU line header sharing).
3665 If we have we're done. */
3666 find_entry.hash.dwo_unit = cu->dwo_unit;
3667 find_entry.hash.line_sect_off = line_offset;
3668 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3669 &find_entry, INSERT);
3670 if (*slot != NULL)
3671 {
3672 lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3673 return;
3674 }
3675
3676 lh = dwarf_decode_line_header (line_offset, cu);
3677 }
3678 if (lh == NULL)
3679 {
3680 lh_cu->v.quick->no_file_data = 1;
3681 return;
3682 }
3683
3684 qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3685 qfn->hash.dwo_unit = cu->dwo_unit;
3686 qfn->hash.line_sect_off = line_offset;
3687 gdb_assert (slot != NULL);
3688 *slot = qfn;
3689
3690 file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3691
3692 qfn->num_file_names = lh->file_names.size ();
3693 qfn->file_names =
3694 XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3695 for (i = 0; i < lh->file_names.size (); ++i)
3696 qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3697 qfn->real_names = NULL;
3698
3699 lh_cu->v.quick->file_names = qfn;
3700 }
3701
3702 /* A helper for the "quick" functions which attempts to read the line
3703 table for THIS_CU. */
3704
3705 static struct quick_file_names *
3706 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3707 {
3708 /* This should never be called for TUs. */
3709 gdb_assert (! this_cu->is_debug_types);
3710 /* Nor type unit groups. */
3711 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3712
3713 if (this_cu->v.quick->file_names != NULL)
3714 return this_cu->v.quick->file_names;
3715 /* If we know there is no line data, no point in looking again. */
3716 if (this_cu->v.quick->no_file_data)
3717 return NULL;
3718
3719 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3720
3721 if (this_cu->v.quick->no_file_data)
3722 return NULL;
3723 return this_cu->v.quick->file_names;
3724 }
3725
3726 /* A helper for the "quick" functions which computes and caches the
3727 real path for a given file name from the line table. */
3728
3729 static const char *
3730 dw2_get_real_path (struct objfile *objfile,
3731 struct quick_file_names *qfn, int index)
3732 {
3733 if (qfn->real_names == NULL)
3734 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3735 qfn->num_file_names, const char *);
3736
3737 if (qfn->real_names[index] == NULL)
3738 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3739
3740 return qfn->real_names[index];
3741 }
3742
3743 static struct symtab *
3744 dw2_find_last_source_symtab (struct objfile *objfile)
3745 {
3746 struct dwarf2_per_objfile *dwarf2_per_objfile
3747 = get_dwarf2_per_objfile (objfile);
3748 dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3749 compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3750
3751 if (cust == NULL)
3752 return NULL;
3753
3754 return compunit_primary_filetab (cust);
3755 }
3756
3757 /* Traversal function for dw2_forget_cached_source_info. */
3758
3759 static int
3760 dw2_free_cached_file_names (void **slot, void *info)
3761 {
3762 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3763
3764 if (file_data->real_names)
3765 {
3766 int i;
3767
3768 for (i = 0; i < file_data->num_file_names; ++i)
3769 {
3770 xfree ((void*) file_data->real_names[i]);
3771 file_data->real_names[i] = NULL;
3772 }
3773 }
3774
3775 return 1;
3776 }
3777
3778 static void
3779 dw2_forget_cached_source_info (struct objfile *objfile)
3780 {
3781 struct dwarf2_per_objfile *dwarf2_per_objfile
3782 = get_dwarf2_per_objfile (objfile);
3783
3784 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3785 dw2_free_cached_file_names, NULL);
3786 }
3787
3788 /* Helper function for dw2_map_symtabs_matching_filename that expands
3789 the symtabs and calls the iterator. */
3790
3791 static int
3792 dw2_map_expand_apply (struct objfile *objfile,
3793 struct dwarf2_per_cu_data *per_cu,
3794 const char *name, const char *real_path,
3795 gdb::function_view<bool (symtab *)> callback)
3796 {
3797 struct compunit_symtab *last_made = objfile->compunit_symtabs;
3798
3799 /* Don't visit already-expanded CUs. */
3800 if (per_cu->v.quick->compunit_symtab)
3801 return 0;
3802
3803 /* This may expand more than one symtab, and we want to iterate over
3804 all of them. */
3805 dw2_instantiate_symtab (per_cu, false);
3806
3807 return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3808 last_made, callback);
3809 }
3810
3811 /* Implementation of the map_symtabs_matching_filename method. */
3812
3813 static bool
3814 dw2_map_symtabs_matching_filename
3815 (struct objfile *objfile, const char *name, const char *real_path,
3816 gdb::function_view<bool (symtab *)> callback)
3817 {
3818 const char *name_basename = lbasename (name);
3819 struct dwarf2_per_objfile *dwarf2_per_objfile
3820 = get_dwarf2_per_objfile (objfile);
3821
3822 /* The rule is CUs specify all the files, including those used by
3823 any TU, so there's no need to scan TUs here. */
3824
3825 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3826 {
3827 /* We only need to look at symtabs not already expanded. */
3828 if (per_cu->v.quick->compunit_symtab)
3829 continue;
3830
3831 quick_file_names *file_data = dw2_get_file_names (per_cu);
3832 if (file_data == NULL)
3833 continue;
3834
3835 for (int j = 0; j < file_data->num_file_names; ++j)
3836 {
3837 const char *this_name = file_data->file_names[j];
3838 const char *this_real_name;
3839
3840 if (compare_filenames_for_search (this_name, name))
3841 {
3842 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3843 callback))
3844 return true;
3845 continue;
3846 }
3847
3848 /* Before we invoke realpath, which can get expensive when many
3849 files are involved, do a quick comparison of the basenames. */
3850 if (! basenames_may_differ
3851 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3852 continue;
3853
3854 this_real_name = dw2_get_real_path (objfile, file_data, j);
3855 if (compare_filenames_for_search (this_real_name, name))
3856 {
3857 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3858 callback))
3859 return true;
3860 continue;
3861 }
3862
3863 if (real_path != NULL)
3864 {
3865 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3866 gdb_assert (IS_ABSOLUTE_PATH (name));
3867 if (this_real_name != NULL
3868 && FILENAME_CMP (real_path, this_real_name) == 0)
3869 {
3870 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3871 callback))
3872 return true;
3873 continue;
3874 }
3875 }
3876 }
3877 }
3878
3879 return false;
3880 }
3881
3882 /* Struct used to manage iterating over all CUs looking for a symbol. */
3883
3884 struct dw2_symtab_iterator
3885 {
3886 /* The dwarf2_per_objfile owning the CUs we are iterating on. */
3887 struct dwarf2_per_objfile *dwarf2_per_objfile;
3888 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3889 int want_specific_block;
3890 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3891 Unused if !WANT_SPECIFIC_BLOCK. */
3892 int block_index;
3893 /* The kind of symbol we're looking for. */
3894 domain_enum domain;
3895 /* The list of CUs from the index entry of the symbol,
3896 or NULL if not found. */
3897 offset_type *vec;
3898 /* The next element in VEC to look at. */
3899 int next;
3900 /* The number of elements in VEC, or zero if there is no match. */
3901 int length;
3902 /* Have we seen a global version of the symbol?
3903 If so we can ignore all further global instances.
3904 This is to work around gold/15646, inefficient gold-generated
3905 indices. */
3906 int global_seen;
3907 };
3908
3909 /* Initialize the index symtab iterator ITER.
3910 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3911 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
3912
3913 static void
3914 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3915 struct dwarf2_per_objfile *dwarf2_per_objfile,
3916 int want_specific_block,
3917 int block_index,
3918 domain_enum domain,
3919 const char *name)
3920 {
3921 iter->dwarf2_per_objfile = dwarf2_per_objfile;
3922 iter->want_specific_block = want_specific_block;
3923 iter->block_index = block_index;
3924 iter->domain = domain;
3925 iter->next = 0;
3926 iter->global_seen = 0;
3927
3928 mapped_index *index = dwarf2_per_objfile->index_table.get ();
3929
3930 /* index is NULL if OBJF_READNOW. */
3931 if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3932 iter->length = MAYBE_SWAP (*iter->vec);
3933 else
3934 {
3935 iter->vec = NULL;
3936 iter->length = 0;
3937 }
3938 }
3939
3940 /* Return the next matching CU or NULL if there are no more. */
3941
3942 static struct dwarf2_per_cu_data *
3943 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3944 {
3945 struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3946
3947 for ( ; iter->next < iter->length; ++iter->next)
3948 {
3949 offset_type cu_index_and_attrs =
3950 MAYBE_SWAP (iter->vec[iter->next + 1]);
3951 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3952 int want_static = iter->block_index != GLOBAL_BLOCK;
3953 /* This value is only valid for index versions >= 7. */
3954 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3955 gdb_index_symbol_kind symbol_kind =
3956 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3957 /* Only check the symbol attributes if they're present.
3958 Indices prior to version 7 don't record them,
3959 and indices >= 7 may elide them for certain symbols
3960 (gold does this). */
3961 int attrs_valid =
3962 (dwarf2_per_objfile->index_table->version >= 7
3963 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3964
3965 /* Don't crash on bad data. */
3966 if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3967 + dwarf2_per_objfile->all_type_units.size ()))
3968 {
3969 complaint (_(".gdb_index entry has bad CU index"
3970 " [in module %s]"),
3971 objfile_name (dwarf2_per_objfile->objfile));
3972 continue;
3973 }
3974
3975 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3976
3977 /* Skip if already read in. */
3978 if (per_cu->v.quick->compunit_symtab)
3979 continue;
3980
3981 /* Check static vs global. */
3982 if (attrs_valid)
3983 {
3984 if (iter->want_specific_block
3985 && want_static != is_static)
3986 continue;
3987 /* Work around gold/15646. */
3988 if (!is_static && iter->global_seen)
3989 continue;
3990 if (!is_static)
3991 iter->global_seen = 1;
3992 }
3993
3994 /* Only check the symbol's kind if it has one. */
3995 if (attrs_valid)
3996 {
3997 switch (iter->domain)
3998 {
3999 case VAR_DOMAIN:
4000 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4001 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4002 /* Some types are also in VAR_DOMAIN. */
4003 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4004 continue;
4005 break;
4006 case STRUCT_DOMAIN:
4007 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4008 continue;
4009 break;
4010 case LABEL_DOMAIN:
4011 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4012 continue;
4013 break;
4014 default:
4015 break;
4016 }
4017 }
4018
4019 ++iter->next;
4020 return per_cu;
4021 }
4022
4023 return NULL;
4024 }
4025
4026 static struct compunit_symtab *
4027 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4028 const char *name, domain_enum domain)
4029 {
4030 struct compunit_symtab *stab_best = NULL;
4031 struct dwarf2_per_objfile *dwarf2_per_objfile
4032 = get_dwarf2_per_objfile (objfile);
4033
4034 lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4035
4036 struct dw2_symtab_iterator iter;
4037 struct dwarf2_per_cu_data *per_cu;
4038
4039 dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4040
4041 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4042 {
4043 struct symbol *sym, *with_opaque = NULL;
4044 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4045 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4046 const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4047
4048 sym = block_find_symbol (block, name, domain,
4049 block_find_non_opaque_type_preferred,
4050 &with_opaque);
4051
4052 /* Some caution must be observed with overloaded functions
4053 and methods, since the index will not contain any overload
4054 information (but NAME might contain it). */
4055
4056 if (sym != NULL
4057 && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4058 return stab;
4059 if (with_opaque != NULL
4060 && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4061 stab_best = stab;
4062
4063 /* Keep looking through other CUs. */
4064 }
4065
4066 return stab_best;
4067 }
4068
4069 static void
4070 dw2_print_stats (struct objfile *objfile)
4071 {
4072 struct dwarf2_per_objfile *dwarf2_per_objfile
4073 = get_dwarf2_per_objfile (objfile);
4074 int total = (dwarf2_per_objfile->all_comp_units.size ()
4075 + dwarf2_per_objfile->all_type_units.size ());
4076 int count = 0;
4077
4078 for (int i = 0; i < total; ++i)
4079 {
4080 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4081
4082 if (!per_cu->v.quick->compunit_symtab)
4083 ++count;
4084 }
4085 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
4086 printf_filtered (_(" Number of unread CUs: %d\n"), count);
4087 }
4088
4089 /* This dumps minimal information about the index.
4090 It is called via "mt print objfiles".
4091 One use is to verify .gdb_index has been loaded by the
4092 gdb.dwarf2/gdb-index.exp testcase. */
4093
4094 static void
4095 dw2_dump (struct objfile *objfile)
4096 {
4097 struct dwarf2_per_objfile *dwarf2_per_objfile
4098 = get_dwarf2_per_objfile (objfile);
4099
4100 gdb_assert (dwarf2_per_objfile->using_index);
4101 printf_filtered (".gdb_index:");
4102 if (dwarf2_per_objfile->index_table != NULL)
4103 {
4104 printf_filtered (" version %d\n",
4105 dwarf2_per_objfile->index_table->version);
4106 }
4107 else
4108 printf_filtered (" faked for \"readnow\"\n");
4109 printf_filtered ("\n");
4110 }
4111
4112 static void
4113 dw2_expand_symtabs_for_function (struct objfile *objfile,
4114 const char *func_name)
4115 {
4116 struct dwarf2_per_objfile *dwarf2_per_objfile
4117 = get_dwarf2_per_objfile (objfile);
4118
4119 struct dw2_symtab_iterator iter;
4120 struct dwarf2_per_cu_data *per_cu;
4121
4122 /* Note: It doesn't matter what we pass for block_index here. */
4123 dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4124 func_name);
4125
4126 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4127 dw2_instantiate_symtab (per_cu, false);
4128
4129 }
4130
4131 static void
4132 dw2_expand_all_symtabs (struct objfile *objfile)
4133 {
4134 struct dwarf2_per_objfile *dwarf2_per_objfile
4135 = get_dwarf2_per_objfile (objfile);
4136 int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4137 + dwarf2_per_objfile->all_type_units.size ());
4138
4139 for (int i = 0; i < total_units; ++i)
4140 {
4141 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4142
4143 /* We don't want to directly expand a partial CU, because if we
4144 read it with the wrong language, then assertion failures can
4145 be triggered later on. See PR symtab/23010. So, tell
4146 dw2_instantiate_symtab to skip partial CUs -- any important
4147 partial CU will be read via DW_TAG_imported_unit anyway. */
4148 dw2_instantiate_symtab (per_cu, true);
4149 }
4150 }
4151
4152 static void
4153 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4154 const char *fullname)
4155 {
4156 struct dwarf2_per_objfile *dwarf2_per_objfile
4157 = get_dwarf2_per_objfile (objfile);
4158
4159 /* We don't need to consider type units here.
4160 This is only called for examining code, e.g. expand_line_sal.
4161 There can be an order of magnitude (or more) more type units
4162 than comp units, and we avoid them if we can. */
4163
4164 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4165 {
4166 /* We only need to look at symtabs not already expanded. */
4167 if (per_cu->v.quick->compunit_symtab)
4168 continue;
4169
4170 quick_file_names *file_data = dw2_get_file_names (per_cu);
4171 if (file_data == NULL)
4172 continue;
4173
4174 for (int j = 0; j < file_data->num_file_names; ++j)
4175 {
4176 const char *this_fullname = file_data->file_names[j];
4177
4178 if (filename_cmp (this_fullname, fullname) == 0)
4179 {
4180 dw2_instantiate_symtab (per_cu, false);
4181 break;
4182 }
4183 }
4184 }
4185 }
4186
4187 static void
4188 dw2_map_matching_symbols (struct objfile *objfile,
4189 const char * name, domain_enum domain,
4190 int global,
4191 int (*callback) (const struct block *,
4192 struct symbol *, void *),
4193 void *data, symbol_name_match_type match,
4194 symbol_compare_ftype *ordered_compare)
4195 {
4196 /* Currently unimplemented; used for Ada. The function can be called if the
4197 current language is Ada for a non-Ada objfile using GNU index. As Ada
4198 does not look for non-Ada symbols this function should just return. */
4199 }
4200
4201 /* Symbol name matcher for .gdb_index names.
4202
4203 Symbol names in .gdb_index have a few particularities:
4204
4205 - There's no indication of which is the language of each symbol.
4206
4207 Since each language has its own symbol name matching algorithm,
4208 and we don't know which language is the right one, we must match
4209 each symbol against all languages. This would be a potential
4210 performance problem if it were not mitigated by the
4211 mapped_index::name_components lookup table, which significantly
4212 reduces the number of times we need to call into this matcher,
4213 making it a non-issue.
4214
4215 - Symbol names in the index have no overload (parameter)
4216 information. I.e., in C++, "foo(int)" and "foo(long)" both
4217 appear as "foo" in the index, for example.
4218
4219 This means that the lookup names passed to the symbol name
4220 matcher functions must have no parameter information either
4221 because (e.g.) symbol search name "foo" does not match
4222 lookup-name "foo(int)" [while swapping search name for lookup
4223 name would match].
4224 */
4225 class gdb_index_symbol_name_matcher
4226 {
4227 public:
4228 /* Prepares the vector of comparison functions for LOOKUP_NAME. */
4229 gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4230
4231 /* Walk all the matcher routines and match SYMBOL_NAME against them.
4232 Returns true if any matcher matches. */
4233 bool matches (const char *symbol_name);
4234
4235 private:
4236 /* A reference to the lookup name we're matching against. */
4237 const lookup_name_info &m_lookup_name;
4238
4239 /* A vector holding all the different symbol name matchers, for all
4240 languages. */
4241 std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4242 };
4243
4244 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4245 (const lookup_name_info &lookup_name)
4246 : m_lookup_name (lookup_name)
4247 {
4248 /* Prepare the vector of comparison functions upfront, to avoid
4249 doing the same work for each symbol. Care is taken to avoid
4250 matching with the same matcher more than once if/when multiple
4251 languages use the same matcher function. */
4252 auto &matchers = m_symbol_name_matcher_funcs;
4253 matchers.reserve (nr_languages);
4254
4255 matchers.push_back (default_symbol_name_matcher);
4256
4257 for (int i = 0; i < nr_languages; i++)
4258 {
4259 const language_defn *lang = language_def ((enum language) i);
4260 symbol_name_matcher_ftype *name_matcher
4261 = get_symbol_name_matcher (lang, m_lookup_name);
4262
4263 /* Don't insert the same comparison routine more than once.
4264 Note that we do this linear walk instead of a seemingly
4265 cheaper sorted insert, or use a std::set or something like
4266 that, because relative order of function addresses is not
4267 stable. This is not a problem in practice because the number
4268 of supported languages is low, and the cost here is tiny
4269 compared to the number of searches we'll do afterwards using
4270 this object. */
4271 if (name_matcher != default_symbol_name_matcher
4272 && (std::find (matchers.begin (), matchers.end (), name_matcher)
4273 == matchers.end ()))
4274 matchers.push_back (name_matcher);
4275 }
4276 }
4277
4278 bool
4279 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4280 {
4281 for (auto matches_name : m_symbol_name_matcher_funcs)
4282 if (matches_name (symbol_name, m_lookup_name, NULL))
4283 return true;
4284
4285 return false;
4286 }
4287
4288 /* Starting from a search name, return the string that finds the upper
4289 bound of all strings that start with SEARCH_NAME in a sorted name
4290 list. Returns the empty string to indicate that the upper bound is
4291 the end of the list. */
4292
4293 static std::string
4294 make_sort_after_prefix_name (const char *search_name)
4295 {
4296 /* When looking to complete "func", we find the upper bound of all
4297 symbols that start with "func" by looking for where we'd insert
4298 the closest string that would follow "func" in lexicographical
4299 order. Usually, that's "func"-with-last-character-incremented,
4300 i.e. "fund". Mind non-ASCII characters, though. Usually those
4301 will be UTF-8 multi-byte sequences, but we can't be certain.
4302 Especially mind the 0xff character, which is a valid character in
4303 non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4304 rule out compilers allowing it in identifiers. Note that
4305 conveniently, strcmp/strcasecmp are specified to compare
4306 characters interpreted as unsigned char. So what we do is treat
4307 the whole string as a base 256 number composed of a sequence of
4308 base 256 "digits" and add 1 to it. I.e., adding 1 to 0xff wraps
4309 to 0, and carries 1 to the following more-significant position.
4310 If the very first character in SEARCH_NAME ends up incremented
4311 and carries/overflows, then the upper bound is the end of the
4312 list. The string after the empty string is also the empty
4313 string.
4314
4315 Some examples of this operation:
4316
4317 SEARCH_NAME => "+1" RESULT
4318
4319 "abc" => "abd"
4320 "ab\xff" => "ac"
4321 "\xff" "a" "\xff" => "\xff" "b"
4322 "\xff" => ""
4323 "\xff\xff" => ""
4324 "" => ""
4325
4326 Then, with these symbols for example:
4327
4328 func
4329 func1
4330 fund
4331
4332 completing "func" looks for symbols between "func" and
4333 "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4334 which finds "func" and "func1", but not "fund".
4335
4336 And with:
4337
4338 funcÿ (Latin1 'ÿ' [0xff])
4339 funcÿ1
4340 fund
4341
4342 completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4343 (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4344
4345 And with:
4346
4347 ÿÿ (Latin1 'ÿ' [0xff])
4348 ÿÿ1
4349
4350 completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4351 the end of the list.
4352 */
4353 std::string after = search_name;
4354 while (!after.empty () && (unsigned char) after.back () == 0xff)
4355 after.pop_back ();
4356 if (!after.empty ())
4357 after.back () = (unsigned char) after.back () + 1;
4358 return after;
4359 }
4360
4361 /* See declaration. */
4362
4363 std::pair<std::vector<name_component>::const_iterator,
4364 std::vector<name_component>::const_iterator>
4365 mapped_index_base::find_name_components_bounds
4366 (const lookup_name_info &lookup_name_without_params) const
4367 {
4368 auto *name_cmp
4369 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4370
4371 const char *cplus
4372 = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4373
4374 /* Comparison function object for lower_bound that matches against a
4375 given symbol name. */
4376 auto lookup_compare_lower = [&] (const name_component &elem,
4377 const char *name)
4378 {
4379 const char *elem_qualified = this->symbol_name_at (elem.idx);
4380 const char *elem_name = elem_qualified + elem.name_offset;
4381 return name_cmp (elem_name, name) < 0;
4382 };
4383
4384 /* Comparison function object for upper_bound that matches against a
4385 given symbol name. */
4386 auto lookup_compare_upper = [&] (const char *name,
4387 const name_component &elem)
4388 {
4389 const char *elem_qualified = this->symbol_name_at (elem.idx);
4390 const char *elem_name = elem_qualified + elem.name_offset;
4391 return name_cmp (name, elem_name) < 0;
4392 };
4393
4394 auto begin = this->name_components.begin ();
4395 auto end = this->name_components.end ();
4396
4397 /* Find the lower bound. */
4398 auto lower = [&] ()
4399 {
4400 if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4401 return begin;
4402 else
4403 return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4404 } ();
4405
4406 /* Find the upper bound. */
4407 auto upper = [&] ()
4408 {
4409 if (lookup_name_without_params.completion_mode ())
4410 {
4411 /* In completion mode, we want UPPER to point past all
4412 symbols names that have the same prefix. I.e., with
4413 these symbols, and completing "func":
4414
4415 function << lower bound
4416 function1
4417 other_function << upper bound
4418
4419 We find the upper bound by looking for the insertion
4420 point of "func"-with-last-character-incremented,
4421 i.e. "fund". */
4422 std::string after = make_sort_after_prefix_name (cplus);
4423 if (after.empty ())
4424 return end;
4425 return std::lower_bound (lower, end, after.c_str (),
4426 lookup_compare_lower);
4427 }
4428 else
4429 return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4430 } ();
4431
4432 return {lower, upper};
4433 }
4434
4435 /* See declaration. */
4436
4437 void
4438 mapped_index_base::build_name_components ()
4439 {
4440 if (!this->name_components.empty ())
4441 return;
4442
4443 this->name_components_casing = case_sensitivity;
4444 auto *name_cmp
4445 = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4446
4447 /* The code below only knows how to break apart components of C++
4448 symbol names (and other languages that use '::' as
4449 namespace/module separator). If we add support for wild matching
4450 to some language that uses some other operator (E.g., Ada, Go and
4451 D use '.'), then we'll need to try splitting the symbol name
4452 according to that language too. Note that Ada does support wild
4453 matching, but doesn't currently support .gdb_index. */
4454 auto count = this->symbol_name_count ();
4455 for (offset_type idx = 0; idx < count; idx++)
4456 {
4457 if (this->symbol_name_slot_invalid (idx))
4458 continue;
4459
4460 const char *name = this->symbol_name_at (idx);
4461
4462 /* Add each name component to the name component table. */
4463 unsigned int previous_len = 0;
4464 for (unsigned int current_len = cp_find_first_component (name);
4465 name[current_len] != '\0';
4466 current_len += cp_find_first_component (name + current_len))
4467 {
4468 gdb_assert (name[current_len] == ':');
4469 this->name_components.push_back ({previous_len, idx});
4470 /* Skip the '::'. */
4471 current_len += 2;
4472 previous_len = current_len;
4473 }
4474 this->name_components.push_back ({previous_len, idx});
4475 }
4476
4477 /* Sort name_components elements by name. */
4478 auto name_comp_compare = [&] (const name_component &left,
4479 const name_component &right)
4480 {
4481 const char *left_qualified = this->symbol_name_at (left.idx);
4482 const char *right_qualified = this->symbol_name_at (right.idx);
4483
4484 const char *left_name = left_qualified + left.name_offset;
4485 const char *right_name = right_qualified + right.name_offset;
4486
4487 return name_cmp (left_name, right_name) < 0;
4488 };
4489
4490 std::sort (this->name_components.begin (),
4491 this->name_components.end (),
4492 name_comp_compare);
4493 }
4494
4495 /* Helper for dw2_expand_symtabs_matching that works with a
4496 mapped_index_base instead of the containing objfile. This is split
4497 to a separate function in order to be able to unit test the
4498 name_components matching using a mock mapped_index_base. For each
4499 symbol name that matches, calls MATCH_CALLBACK, passing it the
4500 symbol's index in the mapped_index_base symbol table. */
4501
4502 static void
4503 dw2_expand_symtabs_matching_symbol
4504 (mapped_index_base &index,
4505 const lookup_name_info &lookup_name_in,
4506 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4507 enum search_domain kind,
4508 gdb::function_view<void (offset_type)> match_callback)
4509 {
4510 lookup_name_info lookup_name_without_params
4511 = lookup_name_in.make_ignore_params ();
4512 gdb_index_symbol_name_matcher lookup_name_matcher
4513 (lookup_name_without_params);
4514
4515 /* Build the symbol name component sorted vector, if we haven't
4516 yet. */
4517 index.build_name_components ();
4518
4519 auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4520
4521 /* Now for each symbol name in range, check to see if we have a name
4522 match, and if so, call the MATCH_CALLBACK callback. */
4523
4524 /* The same symbol may appear more than once in the range though.
4525 E.g., if we're looking for symbols that complete "w", and we have
4526 a symbol named "w1::w2", we'll find the two name components for
4527 that same symbol in the range. To be sure we only call the
4528 callback once per symbol, we first collect the symbol name
4529 indexes that matched in a temporary vector and ignore
4530 duplicates. */
4531 std::vector<offset_type> matches;
4532 matches.reserve (std::distance (bounds.first, bounds.second));
4533
4534 for (; bounds.first != bounds.second; ++bounds.first)
4535 {
4536 const char *qualified = index.symbol_name_at (bounds.first->idx);
4537
4538 if (!lookup_name_matcher.matches (qualified)
4539 || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4540 continue;
4541
4542 matches.push_back (bounds.first->idx);
4543 }
4544
4545 std::sort (matches.begin (), matches.end ());
4546
4547 /* Finally call the callback, once per match. */
4548 ULONGEST prev = -1;
4549 for (offset_type idx : matches)
4550 {
4551 if (prev != idx)
4552 {
4553 match_callback (idx);
4554 prev = idx;
4555 }
4556 }
4557
4558 /* Above we use a type wider than idx's for 'prev', since 0 and
4559 (offset_type)-1 are both possible values. */
4560 static_assert (sizeof (prev) > sizeof (offset_type), "");
4561 }
4562
4563 #if GDB_SELF_TEST
4564
4565 namespace selftests { namespace dw2_expand_symtabs_matching {
4566
4567 /* A mock .gdb_index/.debug_names-like name index table, enough to
4568 exercise dw2_expand_symtabs_matching_symbol, which works with the
4569 mapped_index_base interface. Builds an index from the symbol list
4570 passed as parameter to the constructor. */
4571 class mock_mapped_index : public mapped_index_base
4572 {
4573 public:
4574 mock_mapped_index (gdb::array_view<const char *> symbols)
4575 : m_symbol_table (symbols)
4576 {}
4577
4578 DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4579
4580 /* Return the number of names in the symbol table. */
4581 size_t symbol_name_count () const override
4582 {
4583 return m_symbol_table.size ();
4584 }
4585
4586 /* Get the name of the symbol at IDX in the symbol table. */
4587 const char *symbol_name_at (offset_type idx) const override
4588 {
4589 return m_symbol_table[idx];
4590 }
4591
4592 private:
4593 gdb::array_view<const char *> m_symbol_table;
4594 };
4595
4596 /* Convenience function that converts a NULL pointer to a "<null>"
4597 string, to pass to print routines. */
4598
4599 static const char *
4600 string_or_null (const char *str)
4601 {
4602 return str != NULL ? str : "<null>";
4603 }
4604
4605 /* Check if a lookup_name_info built from
4606 NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4607 index. EXPECTED_LIST is the list of expected matches, in expected
4608 matching order. If no match expected, then an empty list is
4609 specified. Returns true on success. On failure prints a warning
4610 indicating the file:line that failed, and returns false. */
4611
4612 static bool
4613 check_match (const char *file, int line,
4614 mock_mapped_index &mock_index,
4615 const char *name, symbol_name_match_type match_type,
4616 bool completion_mode,
4617 std::initializer_list<const char *> expected_list)
4618 {
4619 lookup_name_info lookup_name (name, match_type, completion_mode);
4620
4621 bool matched = true;
4622
4623 auto mismatch = [&] (const char *expected_str,
4624 const char *got)
4625 {
4626 warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4627 "expected=\"%s\", got=\"%s\"\n"),
4628 file, line,
4629 (match_type == symbol_name_match_type::FULL
4630 ? "FULL" : "WILD"),
4631 name, string_or_null (expected_str), string_or_null (got));
4632 matched = false;
4633 };
4634
4635 auto expected_it = expected_list.begin ();
4636 auto expected_end = expected_list.end ();
4637
4638 dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4639 NULL, ALL_DOMAIN,
4640 [&] (offset_type idx)
4641 {
4642 const char *matched_name = mock_index.symbol_name_at (idx);
4643 const char *expected_str
4644 = expected_it == expected_end ? NULL : *expected_it++;
4645
4646 if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4647 mismatch (expected_str, matched_name);
4648 });
4649
4650 const char *expected_str
4651 = expected_it == expected_end ? NULL : *expected_it++;
4652 if (expected_str != NULL)
4653 mismatch (expected_str, NULL);
4654
4655 return matched;
4656 }
4657
4658 /* The symbols added to the mock mapped_index for testing (in
4659 canonical form). */
4660 static const char *test_symbols[] = {
4661 "function",
4662 "std::bar",
4663 "std::zfunction",
4664 "std::zfunction2",
4665 "w1::w2",
4666 "ns::foo<char*>",
4667 "ns::foo<int>",
4668 "ns::foo<long>",
4669 "ns2::tmpl<int>::foo2",
4670 "(anonymous namespace)::A::B::C",
4671
4672 /* These are used to check that the increment-last-char in the
4673 matching algorithm for completion doesn't match "t1_fund" when
4674 completing "t1_func". */
4675 "t1_func",
4676 "t1_func1",
4677 "t1_fund",
4678 "t1_fund1",
4679
4680 /* A UTF-8 name with multi-byte sequences to make sure that
4681 cp-name-parser understands this as a single identifier ("função"
4682 is "function" in PT). */
4683 u8"u8função",
4684
4685 /* \377 (0xff) is Latin1 'ÿ'. */
4686 "yfunc\377",
4687
4688 /* \377 (0xff) is Latin1 'ÿ'. */
4689 "\377",
4690 "\377\377123",
4691
4692 /* A name with all sorts of complications. Starts with "z" to make
4693 it easier for the completion tests below. */
4694 #define Z_SYM_NAME \
4695 "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4696 "::tuple<(anonymous namespace)::ui*, " \
4697 "std::default_delete<(anonymous namespace)::ui>, void>"
4698
4699 Z_SYM_NAME
4700 };
4701
4702 /* Returns true if the mapped_index_base::find_name_component_bounds
4703 method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4704 in completion mode. */
4705
4706 static bool
4707 check_find_bounds_finds (mapped_index_base &index,
4708 const char *search_name,
4709 gdb::array_view<const char *> expected_syms)
4710 {
4711 lookup_name_info lookup_name (search_name,
4712 symbol_name_match_type::FULL, true);
4713
4714 auto bounds = index.find_name_components_bounds (lookup_name);
4715
4716 size_t distance = std::distance (bounds.first, bounds.second);
4717 if (distance != expected_syms.size ())
4718 return false;
4719
4720 for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4721 {
4722 auto nc_elem = bounds.first + exp_elem;
4723 const char *qualified = index.symbol_name_at (nc_elem->idx);
4724 if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4725 return false;
4726 }
4727
4728 return true;
4729 }
4730
4731 /* Test the lower-level mapped_index::find_name_component_bounds
4732 method. */
4733
4734 static void
4735 test_mapped_index_find_name_component_bounds ()
4736 {
4737 mock_mapped_index mock_index (test_symbols);
4738
4739 mock_index.build_name_components ();
4740
4741 /* Test the lower-level mapped_index::find_name_component_bounds
4742 method in completion mode. */
4743 {
4744 static const char *expected_syms[] = {
4745 "t1_func",
4746 "t1_func1",
4747 };
4748
4749 SELF_CHECK (check_find_bounds_finds (mock_index,
4750 "t1_func", expected_syms));
4751 }
4752
4753 /* Check that the increment-last-char in the name matching algorithm
4754 for completion doesn't get confused with Ansi1 'ÿ' / 0xff. */
4755 {
4756 static const char *expected_syms1[] = {
4757 "\377",
4758 "\377\377123",
4759 };
4760 SELF_CHECK (check_find_bounds_finds (mock_index,
4761 "\377", expected_syms1));
4762
4763 static const char *expected_syms2[] = {
4764 "\377\377123",
4765 };
4766 SELF_CHECK (check_find_bounds_finds (mock_index,
4767 "\377\377", expected_syms2));
4768 }
4769 }
4770
4771 /* Test dw2_expand_symtabs_matching_symbol. */
4772
4773 static void
4774 test_dw2_expand_symtabs_matching_symbol ()
4775 {
4776 mock_mapped_index mock_index (test_symbols);
4777
4778 /* We let all tests run until the end even if some fails, for debug
4779 convenience. */
4780 bool any_mismatch = false;
4781
4782 /* Create the expected symbols list (an initializer_list). Needed
4783 because lists have commas, and we need to pass them to CHECK,
4784 which is a macro. */
4785 #define EXPECT(...) { __VA_ARGS__ }
4786
4787 /* Wrapper for check_match that passes down the current
4788 __FILE__/__LINE__. */
4789 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST) \
4790 any_mismatch |= !check_match (__FILE__, __LINE__, \
4791 mock_index, \
4792 NAME, MATCH_TYPE, COMPLETION_MODE, \
4793 EXPECTED_LIST)
4794
4795 /* Identity checks. */
4796 for (const char *sym : test_symbols)
4797 {
4798 /* Should be able to match all existing symbols. */
4799 CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4800 EXPECT (sym));
4801
4802 /* Should be able to match all existing symbols with
4803 parameters. */
4804 std::string with_params = std::string (sym) + "(int)";
4805 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4806 EXPECT (sym));
4807
4808 /* Should be able to match all existing symbols with
4809 parameters and qualifiers. */
4810 with_params = std::string (sym) + " ( int ) const";
4811 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4812 EXPECT (sym));
4813
4814 /* This should really find sym, but cp-name-parser.y doesn't
4815 know about lvalue/rvalue qualifiers yet. */
4816 with_params = std::string (sym) + " ( int ) &&";
4817 CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4818 {});
4819 }
4820
4821 /* Check that the name matching algorithm for completion doesn't get
4822 confused with Latin1 'ÿ' / 0xff. */
4823 {
4824 static const char str[] = "\377";
4825 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4826 EXPECT ("\377", "\377\377123"));
4827 }
4828
4829 /* Check that the increment-last-char in the matching algorithm for
4830 completion doesn't match "t1_fund" when completing "t1_func". */
4831 {
4832 static const char str[] = "t1_func";
4833 CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4834 EXPECT ("t1_func", "t1_func1"));
4835 }
4836
4837 /* Check that completion mode works at each prefix of the expected
4838 symbol name. */
4839 {
4840 static const char str[] = "function(int)";
4841 size_t len = strlen (str);
4842 std::string lookup;
4843
4844 for (size_t i = 1; i < len; i++)
4845 {
4846 lookup.assign (str, i);
4847 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4848 EXPECT ("function"));
4849 }
4850 }
4851
4852 /* While "w" is a prefix of both components, the match function
4853 should still only be called once. */
4854 {
4855 CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4856 EXPECT ("w1::w2"));
4857 CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4858 EXPECT ("w1::w2"));
4859 }
4860
4861 /* Same, with a "complicated" symbol. */
4862 {
4863 static const char str[] = Z_SYM_NAME;
4864 size_t len = strlen (str);
4865 std::string lookup;
4866
4867 for (size_t i = 1; i < len; i++)
4868 {
4869 lookup.assign (str, i);
4870 CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4871 EXPECT (Z_SYM_NAME));
4872 }
4873 }
4874
4875 /* In FULL mode, an incomplete symbol doesn't match. */
4876 {
4877 CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4878 {});
4879 }
4880
4881 /* A complete symbol with parameters matches any overload, since the
4882 index has no overload info. */
4883 {
4884 CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4885 EXPECT ("std::zfunction", "std::zfunction2"));
4886 CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4887 EXPECT ("std::zfunction", "std::zfunction2"));
4888 CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4889 EXPECT ("std::zfunction", "std::zfunction2"));
4890 }
4891
4892 /* Check that whitespace is ignored appropriately. A symbol with a
4893 template argument list. */
4894 {
4895 static const char expected[] = "ns::foo<int>";
4896 CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4897 EXPECT (expected));
4898 CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4899 EXPECT (expected));
4900 }
4901
4902 /* Check that whitespace is ignored appropriately. A symbol with a
4903 template argument list that includes a pointer. */
4904 {
4905 static const char expected[] = "ns::foo<char*>";
4906 /* Try both completion and non-completion modes. */
4907 static const bool completion_mode[2] = {false, true};
4908 for (size_t i = 0; i < 2; i++)
4909 {
4910 CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4911 completion_mode[i], EXPECT (expected));
4912 CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4913 completion_mode[i], EXPECT (expected));
4914
4915 CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4916 completion_mode[i], EXPECT (expected));
4917 CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4918 completion_mode[i], EXPECT (expected));
4919 }
4920 }
4921
4922 {
4923 /* Check method qualifiers are ignored. */
4924 static const char expected[] = "ns::foo<char*>";
4925 CHECK_MATCH ("ns :: foo < char * > ( int ) const",
4926 symbol_name_match_type::FULL, true, EXPECT (expected));
4927 CHECK_MATCH ("ns :: foo < char * > ( int ) &&",
4928 symbol_name_match_type::FULL, true, EXPECT (expected));
4929 CHECK_MATCH ("foo < char * > ( int ) const",
4930 symbol_name_match_type::WILD, true, EXPECT (expected));
4931 CHECK_MATCH ("foo < char * > ( int ) &&",
4932 symbol_name_match_type::WILD, true, EXPECT (expected));
4933 }
4934
4935 /* Test lookup names that don't match anything. */
4936 {
4937 CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4938 {});
4939
4940 CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4941 {});
4942 }
4943
4944 /* Some wild matching tests, exercising "(anonymous namespace)",
4945 which should not be confused with a parameter list. */
4946 {
4947 static const char *syms[] = {
4948 "A::B::C",
4949 "B::C",
4950 "C",
4951 "A :: B :: C ( int )",
4952 "B :: C ( int )",
4953 "C ( int )",
4954 };
4955
4956 for (const char *s : syms)
4957 {
4958 CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4959 EXPECT ("(anonymous namespace)::A::B::C"));
4960 }
4961 }
4962
4963 {
4964 static const char expected[] = "ns2::tmpl<int>::foo2";
4965 CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4966 EXPECT (expected));
4967 CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4968 EXPECT (expected));
4969 }
4970
4971 SELF_CHECK (!any_mismatch);
4972
4973 #undef EXPECT
4974 #undef CHECK_MATCH
4975 }
4976
4977 static void
4978 run_test ()
4979 {
4980 test_mapped_index_find_name_component_bounds ();
4981 test_dw2_expand_symtabs_matching_symbol ();
4982 }
4983
4984 }} // namespace selftests::dw2_expand_symtabs_matching
4985
4986 #endif /* GDB_SELF_TEST */
4987
4988 /* If FILE_MATCHER is NULL or if PER_CU has
4989 dwarf2_per_cu_quick_data::MARK set (see
4990 dw_expand_symtabs_matching_file_matcher), expand the CU and call
4991 EXPANSION_NOTIFY on it. */
4992
4993 static void
4994 dw2_expand_symtabs_matching_one
4995 (struct dwarf2_per_cu_data *per_cu,
4996 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
4997 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
4998 {
4999 if (file_matcher == NULL || per_cu->v.quick->mark)
5000 {
5001 bool symtab_was_null
5002 = (per_cu->v.quick->compunit_symtab == NULL);
5003
5004 dw2_instantiate_symtab (per_cu, false);
5005
5006 if (expansion_notify != NULL
5007 && symtab_was_null
5008 && per_cu->v.quick->compunit_symtab != NULL)
5009 expansion_notify (per_cu->v.quick->compunit_symtab);
5010 }
5011 }
5012
5013 /* Helper for dw2_expand_matching symtabs. Called on each symbol
5014 matched, to expand corresponding CUs that were marked. IDX is the
5015 index of the symbol name that matched. */
5016
5017 static void
5018 dw2_expand_marked_cus
5019 (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5020 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5021 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5022 search_domain kind)
5023 {
5024 offset_type *vec, vec_len, vec_idx;
5025 bool global_seen = false;
5026 mapped_index &index = *dwarf2_per_objfile->index_table;
5027
5028 vec = (offset_type *) (index.constant_pool
5029 + MAYBE_SWAP (index.symbol_table[idx].vec));
5030 vec_len = MAYBE_SWAP (vec[0]);
5031 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5032 {
5033 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5034 /* This value is only valid for index versions >= 7. */
5035 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5036 gdb_index_symbol_kind symbol_kind =
5037 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5038 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5039 /* Only check the symbol attributes if they're present.
5040 Indices prior to version 7 don't record them,
5041 and indices >= 7 may elide them for certain symbols
5042 (gold does this). */
5043 int attrs_valid =
5044 (index.version >= 7
5045 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5046
5047 /* Work around gold/15646. */
5048 if (attrs_valid)
5049 {
5050 if (!is_static && global_seen)
5051 continue;
5052 if (!is_static)
5053 global_seen = true;
5054 }
5055
5056 /* Only check the symbol's kind if it has one. */
5057 if (attrs_valid)
5058 {
5059 switch (kind)
5060 {
5061 case VARIABLES_DOMAIN:
5062 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5063 continue;
5064 break;
5065 case FUNCTIONS_DOMAIN:
5066 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5067 continue;
5068 break;
5069 case TYPES_DOMAIN:
5070 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5071 continue;
5072 break;
5073 default:
5074 break;
5075 }
5076 }
5077
5078 /* Don't crash on bad data. */
5079 if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5080 + dwarf2_per_objfile->all_type_units.size ()))
5081 {
5082 complaint (_(".gdb_index entry has bad CU index"
5083 " [in module %s]"),
5084 objfile_name (dwarf2_per_objfile->objfile));
5085 continue;
5086 }
5087
5088 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5089 dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5090 expansion_notify);
5091 }
5092 }
5093
5094 /* If FILE_MATCHER is non-NULL, set all the
5095 dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5096 that match FILE_MATCHER. */
5097
5098 static void
5099 dw_expand_symtabs_matching_file_matcher
5100 (struct dwarf2_per_objfile *dwarf2_per_objfile,
5101 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5102 {
5103 if (file_matcher == NULL)
5104 return;
5105
5106 objfile *const objfile = dwarf2_per_objfile->objfile;
5107
5108 htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5109 htab_eq_pointer,
5110 NULL, xcalloc, xfree));
5111 htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5112 htab_eq_pointer,
5113 NULL, xcalloc, xfree));
5114
5115 /* The rule is CUs specify all the files, including those used by
5116 any TU, so there's no need to scan TUs here. */
5117
5118 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5119 {
5120 QUIT;
5121
5122 per_cu->v.quick->mark = 0;
5123
5124 /* We only need to look at symtabs not already expanded. */
5125 if (per_cu->v.quick->compunit_symtab)
5126 continue;
5127
5128 quick_file_names *file_data = dw2_get_file_names (per_cu);
5129 if (file_data == NULL)
5130 continue;
5131
5132 if (htab_find (visited_not_found.get (), file_data) != NULL)
5133 continue;
5134 else if (htab_find (visited_found.get (), file_data) != NULL)
5135 {
5136 per_cu->v.quick->mark = 1;
5137 continue;
5138 }
5139
5140 for (int j = 0; j < file_data->num_file_names; ++j)
5141 {
5142 const char *this_real_name;
5143
5144 if (file_matcher (file_data->file_names[j], false))
5145 {
5146 per_cu->v.quick->mark = 1;
5147 break;
5148 }
5149
5150 /* Before we invoke realpath, which can get expensive when many
5151 files are involved, do a quick comparison of the basenames. */
5152 if (!basenames_may_differ
5153 && !file_matcher (lbasename (file_data->file_names[j]),
5154 true))
5155 continue;
5156
5157 this_real_name = dw2_get_real_path (objfile, file_data, j);
5158 if (file_matcher (this_real_name, false))
5159 {
5160 per_cu->v.quick->mark = 1;
5161 break;
5162 }
5163 }
5164
5165 void **slot = htab_find_slot (per_cu->v.quick->mark
5166 ? visited_found.get ()
5167 : visited_not_found.get (),
5168 file_data, INSERT);
5169 *slot = file_data;
5170 }
5171 }
5172
5173 static void
5174 dw2_expand_symtabs_matching
5175 (struct objfile *objfile,
5176 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5177 const lookup_name_info &lookup_name,
5178 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5179 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5180 enum search_domain kind)
5181 {
5182 struct dwarf2_per_objfile *dwarf2_per_objfile
5183 = get_dwarf2_per_objfile (objfile);
5184
5185 /* index_table is NULL if OBJF_READNOW. */
5186 if (!dwarf2_per_objfile->index_table)
5187 return;
5188
5189 dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5190
5191 mapped_index &index = *dwarf2_per_objfile->index_table;
5192
5193 dw2_expand_symtabs_matching_symbol (index, lookup_name,
5194 symbol_matcher,
5195 kind, [&] (offset_type idx)
5196 {
5197 dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5198 expansion_notify, kind);
5199 });
5200 }
5201
5202 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5203 symtab. */
5204
5205 static struct compunit_symtab *
5206 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5207 CORE_ADDR pc)
5208 {
5209 int i;
5210
5211 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5212 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5213 return cust;
5214
5215 if (cust->includes == NULL)
5216 return NULL;
5217
5218 for (i = 0; cust->includes[i]; ++i)
5219 {
5220 struct compunit_symtab *s = cust->includes[i];
5221
5222 s = recursively_find_pc_sect_compunit_symtab (s, pc);
5223 if (s != NULL)
5224 return s;
5225 }
5226
5227 return NULL;
5228 }
5229
5230 static struct compunit_symtab *
5231 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5232 struct bound_minimal_symbol msymbol,
5233 CORE_ADDR pc,
5234 struct obj_section *section,
5235 int warn_if_readin)
5236 {
5237 struct dwarf2_per_cu_data *data;
5238 struct compunit_symtab *result;
5239
5240 if (!objfile->partial_symtabs->psymtabs_addrmap)
5241 return NULL;
5242
5243 CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5244 SECT_OFF_TEXT (objfile));
5245 data = (struct dwarf2_per_cu_data *) addrmap_find
5246 (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
5247 if (!data)
5248 return NULL;
5249
5250 if (warn_if_readin && data->v.quick->compunit_symtab)
5251 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5252 paddress (get_objfile_arch (objfile), pc));
5253
5254 result
5255 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5256 false),
5257 pc);
5258 gdb_assert (result != NULL);
5259 return result;
5260 }
5261
5262 static void
5263 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5264 void *data, int need_fullname)
5265 {
5266 struct dwarf2_per_objfile *dwarf2_per_objfile
5267 = get_dwarf2_per_objfile (objfile);
5268
5269 if (!dwarf2_per_objfile->filenames_cache)
5270 {
5271 dwarf2_per_objfile->filenames_cache.emplace ();
5272
5273 htab_up visited (htab_create_alloc (10,
5274 htab_hash_pointer, htab_eq_pointer,
5275 NULL, xcalloc, xfree));
5276
5277 /* The rule is CUs specify all the files, including those used
5278 by any TU, so there's no need to scan TUs here. We can
5279 ignore file names coming from already-expanded CUs. */
5280
5281 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5282 {
5283 if (per_cu->v.quick->compunit_symtab)
5284 {
5285 void **slot = htab_find_slot (visited.get (),
5286 per_cu->v.quick->file_names,
5287 INSERT);
5288
5289 *slot = per_cu->v.quick->file_names;
5290 }
5291 }
5292
5293 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5294 {
5295 /* We only need to look at symtabs not already expanded. */
5296 if (per_cu->v.quick->compunit_symtab)
5297 continue;
5298
5299 quick_file_names *file_data = dw2_get_file_names (per_cu);
5300 if (file_data == NULL)
5301 continue;
5302
5303 void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5304 if (*slot)
5305 {
5306 /* Already visited. */
5307 continue;
5308 }
5309 *slot = file_data;
5310
5311 for (int j = 0; j < file_data->num_file_names; ++j)
5312 {
5313 const char *filename = file_data->file_names[j];
5314 dwarf2_per_objfile->filenames_cache->seen (filename);
5315 }
5316 }
5317 }
5318
5319 dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5320 {
5321 gdb::unique_xmalloc_ptr<char> this_real_name;
5322
5323 if (need_fullname)
5324 this_real_name = gdb_realpath (filename);
5325 (*fun) (filename, this_real_name.get (), data);
5326 });
5327 }
5328
5329 static int
5330 dw2_has_symbols (struct objfile *objfile)
5331 {
5332 return 1;
5333 }
5334
5335 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5336 {
5337 dw2_has_symbols,
5338 dw2_find_last_source_symtab,
5339 dw2_forget_cached_source_info,
5340 dw2_map_symtabs_matching_filename,
5341 dw2_lookup_symbol,
5342 dw2_print_stats,
5343 dw2_dump,
5344 dw2_expand_symtabs_for_function,
5345 dw2_expand_all_symtabs,
5346 dw2_expand_symtabs_with_fullname,
5347 dw2_map_matching_symbols,
5348 dw2_expand_symtabs_matching,
5349 dw2_find_pc_sect_compunit_symtab,
5350 NULL,
5351 dw2_map_symbol_filenames
5352 };
5353
5354 /* DWARF-5 debug_names reader. */
5355
5356 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension. */
5357 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5358
5359 /* A helper function that reads the .debug_names section in SECTION
5360 and fills in MAP. FILENAME is the name of the file containing the
5361 section; it is used for error reporting.
5362
5363 Returns true if all went well, false otherwise. */
5364
5365 static bool
5366 read_debug_names_from_section (struct objfile *objfile,
5367 const char *filename,
5368 struct dwarf2_section_info *section,
5369 mapped_debug_names &map)
5370 {
5371 if (dwarf2_section_empty_p (section))
5372 return false;
5373
5374 /* Older elfutils strip versions could keep the section in the main
5375 executable while splitting it for the separate debug info file. */
5376 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5377 return false;
5378
5379 dwarf2_read_section (objfile, section);
5380
5381 map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5382
5383 const gdb_byte *addr = section->buffer;
5384
5385 bfd *const abfd = get_section_bfd_owner (section);
5386
5387 unsigned int bytes_read;
5388 LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5389 addr += bytes_read;
5390
5391 map.dwarf5_is_dwarf64 = bytes_read != 4;
5392 map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5393 if (bytes_read + length != section->size)
5394 {
5395 /* There may be multiple per-CU indices. */
5396 warning (_("Section .debug_names in %s length %s does not match "
5397 "section length %s, ignoring .debug_names."),
5398 filename, plongest (bytes_read + length),
5399 pulongest (section->size));
5400 return false;
5401 }
5402
5403 /* The version number. */
5404 uint16_t version = read_2_bytes (abfd, addr);
5405 addr += 2;
5406 if (version != 5)
5407 {
5408 warning (_("Section .debug_names in %s has unsupported version %d, "
5409 "ignoring .debug_names."),
5410 filename, version);
5411 return false;
5412 }
5413
5414 /* Padding. */
5415 uint16_t padding = read_2_bytes (abfd, addr);
5416 addr += 2;
5417 if (padding != 0)
5418 {
5419 warning (_("Section .debug_names in %s has unsupported padding %d, "
5420 "ignoring .debug_names."),
5421 filename, padding);
5422 return false;
5423 }
5424
5425 /* comp_unit_count - The number of CUs in the CU list. */
5426 map.cu_count = read_4_bytes (abfd, addr);
5427 addr += 4;
5428
5429 /* local_type_unit_count - The number of TUs in the local TU
5430 list. */
5431 map.tu_count = read_4_bytes (abfd, addr);
5432 addr += 4;
5433
5434 /* foreign_type_unit_count - The number of TUs in the foreign TU
5435 list. */
5436 uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5437 addr += 4;
5438 if (foreign_tu_count != 0)
5439 {
5440 warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5441 "ignoring .debug_names."),
5442 filename, static_cast<unsigned long> (foreign_tu_count));
5443 return false;
5444 }
5445
5446 /* bucket_count - The number of hash buckets in the hash lookup
5447 table. */
5448 map.bucket_count = read_4_bytes (abfd, addr);
5449 addr += 4;
5450
5451 /* name_count - The number of unique names in the index. */
5452 map.name_count = read_4_bytes (abfd, addr);
5453 addr += 4;
5454
5455 /* abbrev_table_size - The size in bytes of the abbreviations
5456 table. */
5457 uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5458 addr += 4;
5459
5460 /* augmentation_string_size - The size in bytes of the augmentation
5461 string. This value is rounded up to a multiple of 4. */
5462 uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5463 addr += 4;
5464 map.augmentation_is_gdb = ((augmentation_string_size
5465 == sizeof (dwarf5_augmentation))
5466 && memcmp (addr, dwarf5_augmentation,
5467 sizeof (dwarf5_augmentation)) == 0);
5468 augmentation_string_size += (-augmentation_string_size) & 3;
5469 addr += augmentation_string_size;
5470
5471 /* List of CUs */
5472 map.cu_table_reordered = addr;
5473 addr += map.cu_count * map.offset_size;
5474
5475 /* List of Local TUs */
5476 map.tu_table_reordered = addr;
5477 addr += map.tu_count * map.offset_size;
5478
5479 /* Hash Lookup Table */
5480 map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5481 addr += map.bucket_count * 4;
5482 map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5483 addr += map.name_count * 4;
5484
5485 /* Name Table */
5486 map.name_table_string_offs_reordered = addr;
5487 addr += map.name_count * map.offset_size;
5488 map.name_table_entry_offs_reordered = addr;
5489 addr += map.name_count * map.offset_size;
5490
5491 const gdb_byte *abbrev_table_start = addr;
5492 for (;;)
5493 {
5494 const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5495 addr += bytes_read;
5496 if (index_num == 0)
5497 break;
5498
5499 const auto insertpair
5500 = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5501 if (!insertpair.second)
5502 {
5503 warning (_("Section .debug_names in %s has duplicate index %s, "
5504 "ignoring .debug_names."),
5505 filename, pulongest (index_num));
5506 return false;
5507 }
5508 mapped_debug_names::index_val &indexval = insertpair.first->second;
5509 indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5510 addr += bytes_read;
5511
5512 for (;;)
5513 {
5514 mapped_debug_names::index_val::attr attr;
5515 attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5516 addr += bytes_read;
5517 attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5518 addr += bytes_read;
5519 if (attr.form == DW_FORM_implicit_const)
5520 {
5521 attr.implicit_const = read_signed_leb128 (abfd, addr,
5522 &bytes_read);
5523 addr += bytes_read;
5524 }
5525 if (attr.dw_idx == 0 && attr.form == 0)
5526 break;
5527 indexval.attr_vec.push_back (std::move (attr));
5528 }
5529 }
5530 if (addr != abbrev_table_start + abbrev_table_size)
5531 {
5532 warning (_("Section .debug_names in %s has abbreviation_table "
5533 "of size %zu vs. written as %u, ignoring .debug_names."),
5534 filename, addr - abbrev_table_start, abbrev_table_size);
5535 return false;
5536 }
5537 map.entry_pool = addr;
5538
5539 return true;
5540 }
5541
5542 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5543 list. */
5544
5545 static void
5546 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5547 const mapped_debug_names &map,
5548 dwarf2_section_info &section,
5549 bool is_dwz)
5550 {
5551 sect_offset sect_off_prev;
5552 for (uint32_t i = 0; i <= map.cu_count; ++i)
5553 {
5554 sect_offset sect_off_next;
5555 if (i < map.cu_count)
5556 {
5557 sect_off_next
5558 = (sect_offset) (extract_unsigned_integer
5559 (map.cu_table_reordered + i * map.offset_size,
5560 map.offset_size,
5561 map.dwarf5_byte_order));
5562 }
5563 else
5564 sect_off_next = (sect_offset) section.size;
5565 if (i >= 1)
5566 {
5567 const ULONGEST length = sect_off_next - sect_off_prev;
5568 dwarf2_per_cu_data *per_cu
5569 = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5570 sect_off_prev, length);
5571 dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5572 }
5573 sect_off_prev = sect_off_next;
5574 }
5575 }
5576
5577 /* Read the CU list from the mapped index, and use it to create all
5578 the CU objects for this dwarf2_per_objfile. */
5579
5580 static void
5581 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5582 const mapped_debug_names &map,
5583 const mapped_debug_names &dwz_map)
5584 {
5585 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5586 dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5587
5588 create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5589 dwarf2_per_objfile->info,
5590 false /* is_dwz */);
5591
5592 if (dwz_map.cu_count == 0)
5593 return;
5594
5595 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5596 create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5597 true /* is_dwz */);
5598 }
5599
5600 /* Read .debug_names. If everything went ok, initialize the "quick"
5601 elements of all the CUs and return true. Otherwise, return false. */
5602
5603 static bool
5604 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5605 {
5606 std::unique_ptr<mapped_debug_names> map
5607 (new mapped_debug_names (dwarf2_per_objfile));
5608 mapped_debug_names dwz_map (dwarf2_per_objfile);
5609 struct objfile *objfile = dwarf2_per_objfile->objfile;
5610
5611 if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5612 &dwarf2_per_objfile->debug_names,
5613 *map))
5614 return false;
5615
5616 /* Don't use the index if it's empty. */
5617 if (map->name_count == 0)
5618 return false;
5619
5620 /* If there is a .dwz file, read it so we can get its CU list as
5621 well. */
5622 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5623 if (dwz != NULL)
5624 {
5625 if (!read_debug_names_from_section (objfile,
5626 bfd_get_filename (dwz->dwz_bfd),
5627 &dwz->debug_names, dwz_map))
5628 {
5629 warning (_("could not read '.debug_names' section from %s; skipping"),
5630 bfd_get_filename (dwz->dwz_bfd));
5631 return false;
5632 }
5633 }
5634
5635 create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5636
5637 if (map->tu_count != 0)
5638 {
5639 /* We can only handle a single .debug_types when we have an
5640 index. */
5641 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5642 return false;
5643
5644 dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5645 dwarf2_per_objfile->types, 0);
5646
5647 create_signatured_type_table_from_debug_names
5648 (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5649 }
5650
5651 create_addrmap_from_aranges (dwarf2_per_objfile,
5652 &dwarf2_per_objfile->debug_aranges);
5653
5654 dwarf2_per_objfile->debug_names_table = std::move (map);
5655 dwarf2_per_objfile->using_index = 1;
5656 dwarf2_per_objfile->quick_file_names_table =
5657 create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5658
5659 return true;
5660 }
5661
5662 /* Type used to manage iterating over all CUs looking for a symbol for
5663 .debug_names. */
5664
5665 class dw2_debug_names_iterator
5666 {
5667 public:
5668 /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5669 BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
5670 dw2_debug_names_iterator (const mapped_debug_names &map,
5671 bool want_specific_block,
5672 block_enum block_index, domain_enum domain,
5673 const char *name)
5674 : m_map (map), m_want_specific_block (want_specific_block),
5675 m_block_index (block_index), m_domain (domain),
5676 m_addr (find_vec_in_debug_names (map, name))
5677 {}
5678
5679 dw2_debug_names_iterator (const mapped_debug_names &map,
5680 search_domain search, uint32_t namei)
5681 : m_map (map),
5682 m_search (search),
5683 m_addr (find_vec_in_debug_names (map, namei))
5684 {}
5685
5686 /* Return the next matching CU or NULL if there are no more. */
5687 dwarf2_per_cu_data *next ();
5688
5689 private:
5690 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5691 const char *name);
5692 static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5693 uint32_t namei);
5694
5695 /* The internalized form of .debug_names. */
5696 const mapped_debug_names &m_map;
5697
5698 /* If true, only look for symbols that match BLOCK_INDEX. */
5699 const bool m_want_specific_block = false;
5700
5701 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5702 Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5703 value. */
5704 const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5705
5706 /* The kind of symbol we're looking for. */
5707 const domain_enum m_domain = UNDEF_DOMAIN;
5708 const search_domain m_search = ALL_DOMAIN;
5709
5710 /* The list of CUs from the index entry of the symbol, or NULL if
5711 not found. */
5712 const gdb_byte *m_addr;
5713 };
5714
5715 const char *
5716 mapped_debug_names::namei_to_name (uint32_t namei) const
5717 {
5718 const ULONGEST namei_string_offs
5719 = extract_unsigned_integer ((name_table_string_offs_reordered
5720 + namei * offset_size),
5721 offset_size,
5722 dwarf5_byte_order);
5723 return read_indirect_string_at_offset
5724 (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5725 }
5726
5727 /* Find a slot in .debug_names for the object named NAME. If NAME is
5728 found, return pointer to its pool data. If NAME cannot be found,
5729 return NULL. */
5730
5731 const gdb_byte *
5732 dw2_debug_names_iterator::find_vec_in_debug_names
5733 (const mapped_debug_names &map, const char *name)
5734 {
5735 int (*cmp) (const char *, const char *);
5736
5737 if (current_language->la_language == language_cplus
5738 || current_language->la_language == language_fortran
5739 || current_language->la_language == language_d)
5740 {
5741 /* NAME is already canonical. Drop any qualifiers as
5742 .debug_names does not contain any. */
5743
5744 if (strchr (name, '(') != NULL)
5745 {
5746 gdb::unique_xmalloc_ptr<char> without_params
5747 = cp_remove_params (name);
5748
5749 if (without_params != NULL)
5750 {
5751 name = without_params.get();
5752 }
5753 }
5754 }
5755
5756 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5757
5758 const uint32_t full_hash = dwarf5_djb_hash (name);
5759 uint32_t namei
5760 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5761 (map.bucket_table_reordered
5762 + (full_hash % map.bucket_count)), 4,
5763 map.dwarf5_byte_order);
5764 if (namei == 0)
5765 return NULL;
5766 --namei;
5767 if (namei >= map.name_count)
5768 {
5769 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5770 "[in module %s]"),
5771 namei, map.name_count,
5772 objfile_name (map.dwarf2_per_objfile->objfile));
5773 return NULL;
5774 }
5775
5776 for (;;)
5777 {
5778 const uint32_t namei_full_hash
5779 = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5780 (map.hash_table_reordered + namei), 4,
5781 map.dwarf5_byte_order);
5782 if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5783 return NULL;
5784
5785 if (full_hash == namei_full_hash)
5786 {
5787 const char *const namei_string = map.namei_to_name (namei);
5788
5789 #if 0 /* An expensive sanity check. */
5790 if (namei_full_hash != dwarf5_djb_hash (namei_string))
5791 {
5792 complaint (_("Wrong .debug_names hash for string at index %u "
5793 "[in module %s]"),
5794 namei, objfile_name (dwarf2_per_objfile->objfile));
5795 return NULL;
5796 }
5797 #endif
5798
5799 if (cmp (namei_string, name) == 0)
5800 {
5801 const ULONGEST namei_entry_offs
5802 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5803 + namei * map.offset_size),
5804 map.offset_size, map.dwarf5_byte_order);
5805 return map.entry_pool + namei_entry_offs;
5806 }
5807 }
5808
5809 ++namei;
5810 if (namei >= map.name_count)
5811 return NULL;
5812 }
5813 }
5814
5815 const gdb_byte *
5816 dw2_debug_names_iterator::find_vec_in_debug_names
5817 (const mapped_debug_names &map, uint32_t namei)
5818 {
5819 if (namei >= map.name_count)
5820 {
5821 complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5822 "[in module %s]"),
5823 namei, map.name_count,
5824 objfile_name (map.dwarf2_per_objfile->objfile));
5825 return NULL;
5826 }
5827
5828 const ULONGEST namei_entry_offs
5829 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5830 + namei * map.offset_size),
5831 map.offset_size, map.dwarf5_byte_order);
5832 return map.entry_pool + namei_entry_offs;
5833 }
5834
5835 /* See dw2_debug_names_iterator. */
5836
5837 dwarf2_per_cu_data *
5838 dw2_debug_names_iterator::next ()
5839 {
5840 if (m_addr == NULL)
5841 return NULL;
5842
5843 struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5844 struct objfile *objfile = dwarf2_per_objfile->objfile;
5845 bfd *const abfd = objfile->obfd;
5846
5847 again:
5848
5849 unsigned int bytes_read;
5850 const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5851 m_addr += bytes_read;
5852 if (abbrev == 0)
5853 return NULL;
5854
5855 const auto indexval_it = m_map.abbrev_map.find (abbrev);
5856 if (indexval_it == m_map.abbrev_map.cend ())
5857 {
5858 complaint (_("Wrong .debug_names undefined abbrev code %s "
5859 "[in module %s]"),
5860 pulongest (abbrev), objfile_name (objfile));
5861 return NULL;
5862 }
5863 const mapped_debug_names::index_val &indexval = indexval_it->second;
5864 bool have_is_static = false;
5865 bool is_static;
5866 dwarf2_per_cu_data *per_cu = NULL;
5867 for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5868 {
5869 ULONGEST ull;
5870 switch (attr.form)
5871 {
5872 case DW_FORM_implicit_const:
5873 ull = attr.implicit_const;
5874 break;
5875 case DW_FORM_flag_present:
5876 ull = 1;
5877 break;
5878 case DW_FORM_udata:
5879 ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5880 m_addr += bytes_read;
5881 break;
5882 default:
5883 complaint (_("Unsupported .debug_names form %s [in module %s]"),
5884 dwarf_form_name (attr.form),
5885 objfile_name (objfile));
5886 return NULL;
5887 }
5888 switch (attr.dw_idx)
5889 {
5890 case DW_IDX_compile_unit:
5891 /* Don't crash on bad data. */
5892 if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5893 {
5894 complaint (_(".debug_names entry has bad CU index %s"
5895 " [in module %s]"),
5896 pulongest (ull),
5897 objfile_name (dwarf2_per_objfile->objfile));
5898 continue;
5899 }
5900 per_cu = dwarf2_per_objfile->get_cutu (ull);
5901 break;
5902 case DW_IDX_type_unit:
5903 /* Don't crash on bad data. */
5904 if (ull >= dwarf2_per_objfile->all_type_units.size ())
5905 {
5906 complaint (_(".debug_names entry has bad TU index %s"
5907 " [in module %s]"),
5908 pulongest (ull),
5909 objfile_name (dwarf2_per_objfile->objfile));
5910 continue;
5911 }
5912 per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5913 break;
5914 case DW_IDX_GNU_internal:
5915 if (!m_map.augmentation_is_gdb)
5916 break;
5917 have_is_static = true;
5918 is_static = true;
5919 break;
5920 case DW_IDX_GNU_external:
5921 if (!m_map.augmentation_is_gdb)
5922 break;
5923 have_is_static = true;
5924 is_static = false;
5925 break;
5926 }
5927 }
5928
5929 /* Skip if already read in. */
5930 if (per_cu->v.quick->compunit_symtab)
5931 goto again;
5932
5933 /* Check static vs global. */
5934 if (have_is_static)
5935 {
5936 const bool want_static = m_block_index != GLOBAL_BLOCK;
5937 if (m_want_specific_block && want_static != is_static)
5938 goto again;
5939 }
5940
5941 /* Match dw2_symtab_iter_next, symbol_kind
5942 and debug_names::psymbol_tag. */
5943 switch (m_domain)
5944 {
5945 case VAR_DOMAIN:
5946 switch (indexval.dwarf_tag)
5947 {
5948 case DW_TAG_variable:
5949 case DW_TAG_subprogram:
5950 /* Some types are also in VAR_DOMAIN. */
5951 case DW_TAG_typedef:
5952 case DW_TAG_structure_type:
5953 break;
5954 default:
5955 goto again;
5956 }
5957 break;
5958 case STRUCT_DOMAIN:
5959 switch (indexval.dwarf_tag)
5960 {
5961 case DW_TAG_typedef:
5962 case DW_TAG_structure_type:
5963 break;
5964 default:
5965 goto again;
5966 }
5967 break;
5968 case LABEL_DOMAIN:
5969 switch (indexval.dwarf_tag)
5970 {
5971 case 0:
5972 case DW_TAG_variable:
5973 break;
5974 default:
5975 goto again;
5976 }
5977 break;
5978 default:
5979 break;
5980 }
5981
5982 /* Match dw2_expand_symtabs_matching, symbol_kind and
5983 debug_names::psymbol_tag. */
5984 switch (m_search)
5985 {
5986 case VARIABLES_DOMAIN:
5987 switch (indexval.dwarf_tag)
5988 {
5989 case DW_TAG_variable:
5990 break;
5991 default:
5992 goto again;
5993 }
5994 break;
5995 case FUNCTIONS_DOMAIN:
5996 switch (indexval.dwarf_tag)
5997 {
5998 case DW_TAG_subprogram:
5999 break;
6000 default:
6001 goto again;
6002 }
6003 break;
6004 case TYPES_DOMAIN:
6005 switch (indexval.dwarf_tag)
6006 {
6007 case DW_TAG_typedef:
6008 case DW_TAG_structure_type:
6009 break;
6010 default:
6011 goto again;
6012 }
6013 break;
6014 default:
6015 break;
6016 }
6017
6018 return per_cu;
6019 }
6020
6021 static struct compunit_symtab *
6022 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6023 const char *name, domain_enum domain)
6024 {
6025 const block_enum block_index = static_cast<block_enum> (block_index_int);
6026 struct dwarf2_per_objfile *dwarf2_per_objfile
6027 = get_dwarf2_per_objfile (objfile);
6028
6029 const auto &mapp = dwarf2_per_objfile->debug_names_table;
6030 if (!mapp)
6031 {
6032 /* index is NULL if OBJF_READNOW. */
6033 return NULL;
6034 }
6035 const auto &map = *mapp;
6036
6037 dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6038 block_index, domain, name);
6039
6040 struct compunit_symtab *stab_best = NULL;
6041 struct dwarf2_per_cu_data *per_cu;
6042 while ((per_cu = iter.next ()) != NULL)
6043 {
6044 struct symbol *sym, *with_opaque = NULL;
6045 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6046 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6047 const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6048
6049 sym = block_find_symbol (block, name, domain,
6050 block_find_non_opaque_type_preferred,
6051 &with_opaque);
6052
6053 /* Some caution must be observed with overloaded functions and
6054 methods, since the index will not contain any overload
6055 information (but NAME might contain it). */
6056
6057 if (sym != NULL
6058 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6059 return stab;
6060 if (with_opaque != NULL
6061 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6062 stab_best = stab;
6063
6064 /* Keep looking through other CUs. */
6065 }
6066
6067 return stab_best;
6068 }
6069
6070 /* This dumps minimal information about .debug_names. It is called
6071 via "mt print objfiles". The gdb.dwarf2/gdb-index.exp testcase
6072 uses this to verify that .debug_names has been loaded. */
6073
6074 static void
6075 dw2_debug_names_dump (struct objfile *objfile)
6076 {
6077 struct dwarf2_per_objfile *dwarf2_per_objfile
6078 = get_dwarf2_per_objfile (objfile);
6079
6080 gdb_assert (dwarf2_per_objfile->using_index);
6081 printf_filtered (".debug_names:");
6082 if (dwarf2_per_objfile->debug_names_table)
6083 printf_filtered (" exists\n");
6084 else
6085 printf_filtered (" faked for \"readnow\"\n");
6086 printf_filtered ("\n");
6087 }
6088
6089 static void
6090 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6091 const char *func_name)
6092 {
6093 struct dwarf2_per_objfile *dwarf2_per_objfile
6094 = get_dwarf2_per_objfile (objfile);
6095
6096 /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW. */
6097 if (dwarf2_per_objfile->debug_names_table)
6098 {
6099 const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6100
6101 /* Note: It doesn't matter what we pass for block_index here. */
6102 dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6103 GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6104
6105 struct dwarf2_per_cu_data *per_cu;
6106 while ((per_cu = iter.next ()) != NULL)
6107 dw2_instantiate_symtab (per_cu, false);
6108 }
6109 }
6110
6111 static void
6112 dw2_debug_names_expand_symtabs_matching
6113 (struct objfile *objfile,
6114 gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6115 const lookup_name_info &lookup_name,
6116 gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6117 gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6118 enum search_domain kind)
6119 {
6120 struct dwarf2_per_objfile *dwarf2_per_objfile
6121 = get_dwarf2_per_objfile (objfile);
6122
6123 /* debug_names_table is NULL if OBJF_READNOW. */
6124 if (!dwarf2_per_objfile->debug_names_table)
6125 return;
6126
6127 dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6128
6129 mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6130
6131 dw2_expand_symtabs_matching_symbol (map, lookup_name,
6132 symbol_matcher,
6133 kind, [&] (offset_type namei)
6134 {
6135 /* The name was matched, now expand corresponding CUs that were
6136 marked. */
6137 dw2_debug_names_iterator iter (map, kind, namei);
6138
6139 struct dwarf2_per_cu_data *per_cu;
6140 while ((per_cu = iter.next ()) != NULL)
6141 dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6142 expansion_notify);
6143 });
6144 }
6145
6146 const struct quick_symbol_functions dwarf2_debug_names_functions =
6147 {
6148 dw2_has_symbols,
6149 dw2_find_last_source_symtab,
6150 dw2_forget_cached_source_info,
6151 dw2_map_symtabs_matching_filename,
6152 dw2_debug_names_lookup_symbol,
6153 dw2_print_stats,
6154 dw2_debug_names_dump,
6155 dw2_debug_names_expand_symtabs_for_function,
6156 dw2_expand_all_symtabs,
6157 dw2_expand_symtabs_with_fullname,
6158 dw2_map_matching_symbols,
6159 dw2_debug_names_expand_symtabs_matching,
6160 dw2_find_pc_sect_compunit_symtab,
6161 NULL,
6162 dw2_map_symbol_filenames
6163 };
6164
6165 /* Get the content of the .gdb_index section of OBJ. SECTION_OWNER should point
6166 to either a dwarf2_per_objfile or dwz_file object. */
6167
6168 template <typename T>
6169 static gdb::array_view<const gdb_byte>
6170 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6171 {
6172 dwarf2_section_info *section = &section_owner->gdb_index;
6173
6174 if (dwarf2_section_empty_p (section))
6175 return {};
6176
6177 /* Older elfutils strip versions could keep the section in the main
6178 executable while splitting it for the separate debug info file. */
6179 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6180 return {};
6181
6182 dwarf2_read_section (obj, section);
6183
6184 /* dwarf2_section_info::size is a bfd_size_type, while
6185 gdb::array_view works with size_t. On 32-bit hosts, with
6186 --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
6187 is 32-bit. So we need an explicit narrowing conversion here.
6188 This is fine, because it's impossible to allocate or mmap an
6189 array/buffer larger than what size_t can represent. */
6190 return gdb::make_array_view (section->buffer, section->size);
6191 }
6192
6193 /* Lookup the index cache for the contents of the index associated to
6194 DWARF2_OBJ. */
6195
6196 static gdb::array_view<const gdb_byte>
6197 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6198 {
6199 const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6200 if (build_id == nullptr)
6201 return {};
6202
6203 return global_index_cache.lookup_gdb_index (build_id,
6204 &dwarf2_obj->index_cache_res);
6205 }
6206
6207 /* Same as the above, but for DWZ. */
6208
6209 static gdb::array_view<const gdb_byte>
6210 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6211 {
6212 const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6213 if (build_id == nullptr)
6214 return {};
6215
6216 return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6217 }
6218
6219 /* See symfile.h. */
6220
6221 bool
6222 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6223 {
6224 struct dwarf2_per_objfile *dwarf2_per_objfile
6225 = get_dwarf2_per_objfile (objfile);
6226
6227 /* If we're about to read full symbols, don't bother with the
6228 indices. In this case we also don't care if some other debug
6229 format is making psymtabs, because they are all about to be
6230 expanded anyway. */
6231 if ((objfile->flags & OBJF_READNOW))
6232 {
6233 dwarf2_per_objfile->using_index = 1;
6234 create_all_comp_units (dwarf2_per_objfile);
6235 create_all_type_units (dwarf2_per_objfile);
6236 dwarf2_per_objfile->quick_file_names_table
6237 = create_quick_file_names_table
6238 (dwarf2_per_objfile->all_comp_units.size ());
6239
6240 for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6241 + dwarf2_per_objfile->all_type_units.size ()); ++i)
6242 {
6243 dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6244
6245 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6246 struct dwarf2_per_cu_quick_data);
6247 }
6248
6249 /* Return 1 so that gdb sees the "quick" functions. However,
6250 these functions will be no-ops because we will have expanded
6251 all symtabs. */
6252 *index_kind = dw_index_kind::GDB_INDEX;
6253 return true;
6254 }
6255
6256 if (dwarf2_read_debug_names (dwarf2_per_objfile))
6257 {
6258 *index_kind = dw_index_kind::DEBUG_NAMES;
6259 return true;
6260 }
6261
6262 if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6263 get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6264 get_gdb_index_contents_from_section<dwz_file>))
6265 {
6266 *index_kind = dw_index_kind::GDB_INDEX;
6267 return true;
6268 }
6269
6270 /* ... otherwise, try to find the index in the index cache. */
6271 if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6272 get_gdb_index_contents_from_cache,
6273 get_gdb_index_contents_from_cache_dwz))
6274 {
6275 global_index_cache.hit ();
6276 *index_kind = dw_index_kind::GDB_INDEX;
6277 return true;
6278 }
6279
6280 global_index_cache.miss ();
6281 return false;
6282 }
6283
6284 \f
6285
6286 /* Build a partial symbol table. */
6287
6288 void
6289 dwarf2_build_psymtabs (struct objfile *objfile)
6290 {
6291 struct dwarf2_per_objfile *dwarf2_per_objfile
6292 = get_dwarf2_per_objfile (objfile);
6293
6294 init_psymbol_list (objfile, 1024);
6295
6296 try
6297 {
6298 /* This isn't really ideal: all the data we allocate on the
6299 objfile's obstack is still uselessly kept around. However,
6300 freeing it seems unsafe. */
6301 psymtab_discarder psymtabs (objfile);
6302 dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6303 psymtabs.keep ();
6304
6305 /* (maybe) store an index in the cache. */
6306 global_index_cache.store (dwarf2_per_objfile);
6307 }
6308 catch (const gdb_exception_error &except)
6309 {
6310 exception_print (gdb_stderr, except);
6311 }
6312 }
6313
6314 /* Return the total length of the CU described by HEADER. */
6315
6316 static unsigned int
6317 get_cu_length (const struct comp_unit_head *header)
6318 {
6319 return header->initial_length_size + header->length;
6320 }
6321
6322 /* Return TRUE if SECT_OFF is within CU_HEADER. */
6323
6324 static inline bool
6325 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6326 {
6327 sect_offset bottom = cu_header->sect_off;
6328 sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6329
6330 return sect_off >= bottom && sect_off < top;
6331 }
6332
6333 /* Find the base address of the compilation unit for range lists and
6334 location lists. It will normally be specified by DW_AT_low_pc.
6335 In DWARF-3 draft 4, the base address could be overridden by
6336 DW_AT_entry_pc. It's been removed, but GCC still uses this for
6337 compilation units with discontinuous ranges. */
6338
6339 static void
6340 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6341 {
6342 struct attribute *attr;
6343
6344 cu->base_known = 0;
6345 cu->base_address = 0;
6346
6347 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6348 if (attr)
6349 {
6350 cu->base_address = attr_value_as_address (attr);
6351 cu->base_known = 1;
6352 }
6353 else
6354 {
6355 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6356 if (attr)
6357 {
6358 cu->base_address = attr_value_as_address (attr);
6359 cu->base_known = 1;
6360 }
6361 }
6362 }
6363
6364 /* Read in the comp unit header information from the debug_info at info_ptr.
6365 Use rcuh_kind::COMPILE as the default type if not known by the caller.
6366 NOTE: This leaves members offset, first_die_offset to be filled in
6367 by the caller. */
6368
6369 static const gdb_byte *
6370 read_comp_unit_head (struct comp_unit_head *cu_header,
6371 const gdb_byte *info_ptr,
6372 struct dwarf2_section_info *section,
6373 rcuh_kind section_kind)
6374 {
6375 int signed_addr;
6376 unsigned int bytes_read;
6377 const char *filename = get_section_file_name (section);
6378 bfd *abfd = get_section_bfd_owner (section);
6379
6380 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6381 cu_header->initial_length_size = bytes_read;
6382 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6383 info_ptr += bytes_read;
6384 cu_header->version = read_2_bytes (abfd, info_ptr);
6385 if (cu_header->version < 2 || cu_header->version > 5)
6386 error (_("Dwarf Error: wrong version in compilation unit header "
6387 "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6388 cu_header->version, filename);
6389 info_ptr += 2;
6390 if (cu_header->version < 5)
6391 switch (section_kind)
6392 {
6393 case rcuh_kind::COMPILE:
6394 cu_header->unit_type = DW_UT_compile;
6395 break;
6396 case rcuh_kind::TYPE:
6397 cu_header->unit_type = DW_UT_type;
6398 break;
6399 default:
6400 internal_error (__FILE__, __LINE__,
6401 _("read_comp_unit_head: invalid section_kind"));
6402 }
6403 else
6404 {
6405 cu_header->unit_type = static_cast<enum dwarf_unit_type>
6406 (read_1_byte (abfd, info_ptr));
6407 info_ptr += 1;
6408 switch (cu_header->unit_type)
6409 {
6410 case DW_UT_compile:
6411 if (section_kind != rcuh_kind::COMPILE)
6412 error (_("Dwarf Error: wrong unit_type in compilation unit header "
6413 "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6414 filename);
6415 break;
6416 case DW_UT_type:
6417 section_kind = rcuh_kind::TYPE;
6418 break;
6419 default:
6420 error (_("Dwarf Error: wrong unit_type in compilation unit header "
6421 "(is %d, should be %d or %d) [in module %s]"),
6422 cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6423 }
6424
6425 cu_header->addr_size = read_1_byte (abfd, info_ptr);
6426 info_ptr += 1;
6427 }
6428 cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6429 cu_header,
6430 &bytes_read);
6431 info_ptr += bytes_read;
6432 if (cu_header->version < 5)
6433 {
6434 cu_header->addr_size = read_1_byte (abfd, info_ptr);
6435 info_ptr += 1;
6436 }
6437 signed_addr = bfd_get_sign_extend_vma (abfd);
6438 if (signed_addr < 0)
6439 internal_error (__FILE__, __LINE__,
6440 _("read_comp_unit_head: dwarf from non elf file"));
6441 cu_header->signed_addr_p = signed_addr;
6442
6443 if (section_kind == rcuh_kind::TYPE)
6444 {
6445 LONGEST type_offset;
6446
6447 cu_header->signature = read_8_bytes (abfd, info_ptr);
6448 info_ptr += 8;
6449
6450 type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6451 info_ptr += bytes_read;
6452 cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6453 if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6454 error (_("Dwarf Error: Too big type_offset in compilation unit "
6455 "header (is %s) [in module %s]"), plongest (type_offset),
6456 filename);
6457 }
6458
6459 return info_ptr;
6460 }
6461
6462 /* Helper function that returns the proper abbrev section for
6463 THIS_CU. */
6464
6465 static struct dwarf2_section_info *
6466 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6467 {
6468 struct dwarf2_section_info *abbrev;
6469 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6470
6471 if (this_cu->is_dwz)
6472 abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6473 else
6474 abbrev = &dwarf2_per_objfile->abbrev;
6475
6476 return abbrev;
6477 }
6478
6479 /* Subroutine of read_and_check_comp_unit_head and
6480 read_and_check_type_unit_head to simplify them.
6481 Perform various error checking on the header. */
6482
6483 static void
6484 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6485 struct comp_unit_head *header,
6486 struct dwarf2_section_info *section,
6487 struct dwarf2_section_info *abbrev_section)
6488 {
6489 const char *filename = get_section_file_name (section);
6490
6491 if (to_underlying (header->abbrev_sect_off)
6492 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6493 error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6494 "(offset %s + 6) [in module %s]"),
6495 sect_offset_str (header->abbrev_sect_off),
6496 sect_offset_str (header->sect_off),
6497 filename);
6498
6499 /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6500 avoid potential 32-bit overflow. */
6501 if (((ULONGEST) header->sect_off + get_cu_length (header))
6502 > section->size)
6503 error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6504 "(offset %s + 0) [in module %s]"),
6505 header->length, sect_offset_str (header->sect_off),
6506 filename);
6507 }
6508
6509 /* Read in a CU/TU header and perform some basic error checking.
6510 The contents of the header are stored in HEADER.
6511 The result is a pointer to the start of the first DIE. */
6512
6513 static const gdb_byte *
6514 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6515 struct comp_unit_head *header,
6516 struct dwarf2_section_info *section,
6517 struct dwarf2_section_info *abbrev_section,
6518 const gdb_byte *info_ptr,
6519 rcuh_kind section_kind)
6520 {
6521 const gdb_byte *beg_of_comp_unit = info_ptr;
6522
6523 header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6524
6525 info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6526
6527 header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6528
6529 error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6530 abbrev_section);
6531
6532 return info_ptr;
6533 }
6534
6535 /* Fetch the abbreviation table offset from a comp or type unit header. */
6536
6537 static sect_offset
6538 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6539 struct dwarf2_section_info *section,
6540 sect_offset sect_off)
6541 {
6542 bfd *abfd = get_section_bfd_owner (section);
6543 const gdb_byte *info_ptr;
6544 unsigned int initial_length_size, offset_size;
6545 uint16_t version;
6546
6547 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6548 info_ptr = section->buffer + to_underlying (sect_off);
6549 read_initial_length (abfd, info_ptr, &initial_length_size);
6550 offset_size = initial_length_size == 4 ? 4 : 8;
6551 info_ptr += initial_length_size;
6552
6553 version = read_2_bytes (abfd, info_ptr);
6554 info_ptr += 2;
6555 if (version >= 5)
6556 {
6557 /* Skip unit type and address size. */
6558 info_ptr += 2;
6559 }
6560
6561 return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6562 }
6563
6564 /* Allocate a new partial symtab for file named NAME and mark this new
6565 partial symtab as being an include of PST. */
6566
6567 static void
6568 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6569 struct objfile *objfile)
6570 {
6571 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6572
6573 if (!IS_ABSOLUTE_PATH (subpst->filename))
6574 {
6575 /* It shares objfile->objfile_obstack. */
6576 subpst->dirname = pst->dirname;
6577 }
6578
6579 subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
6580 subpst->dependencies[0] = pst;
6581 subpst->number_of_dependencies = 1;
6582
6583 subpst->read_symtab = pst->read_symtab;
6584
6585 /* No private part is necessary for include psymtabs. This property
6586 can be used to differentiate between such include psymtabs and
6587 the regular ones. */
6588 subpst->read_symtab_private = NULL;
6589 }
6590
6591 /* Read the Line Number Program data and extract the list of files
6592 included by the source file represented by PST. Build an include
6593 partial symtab for each of these included files. */
6594
6595 static void
6596 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6597 struct die_info *die,
6598 struct partial_symtab *pst)
6599 {
6600 line_header_up lh;
6601 struct attribute *attr;
6602
6603 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6604 if (attr)
6605 lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6606 if (lh == NULL)
6607 return; /* No linetable, so no includes. */
6608
6609 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). Also note
6610 that we pass in the raw text_low here; that is ok because we're
6611 only decoding the line table to make include partial symtabs, and
6612 so the addresses aren't really used. */
6613 dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6614 pst->raw_text_low (), 1);
6615 }
6616
6617 static hashval_t
6618 hash_signatured_type (const void *item)
6619 {
6620 const struct signatured_type *sig_type
6621 = (const struct signatured_type *) item;
6622
6623 /* This drops the top 32 bits of the signature, but is ok for a hash. */
6624 return sig_type->signature;
6625 }
6626
6627 static int
6628 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6629 {
6630 const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6631 const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6632
6633 return lhs->signature == rhs->signature;
6634 }
6635
6636 /* Allocate a hash table for signatured types. */
6637
6638 static htab_t
6639 allocate_signatured_type_table (struct objfile *objfile)
6640 {
6641 return htab_create_alloc_ex (41,
6642 hash_signatured_type,
6643 eq_signatured_type,
6644 NULL,
6645 &objfile->objfile_obstack,
6646 hashtab_obstack_allocate,
6647 dummy_obstack_deallocate);
6648 }
6649
6650 /* A helper function to add a signatured type CU to a table. */
6651
6652 static int
6653 add_signatured_type_cu_to_table (void **slot, void *datum)
6654 {
6655 struct signatured_type *sigt = (struct signatured_type *) *slot;
6656 std::vector<signatured_type *> *all_type_units
6657 = (std::vector<signatured_type *> *) datum;
6658
6659 all_type_units->push_back (sigt);
6660
6661 return 1;
6662 }
6663
6664 /* A helper for create_debug_types_hash_table. Read types from SECTION
6665 and fill them into TYPES_HTAB. It will process only type units,
6666 therefore DW_UT_type. */
6667
6668 static void
6669 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6670 struct dwo_file *dwo_file,
6671 dwarf2_section_info *section, htab_t &types_htab,
6672 rcuh_kind section_kind)
6673 {
6674 struct objfile *objfile = dwarf2_per_objfile->objfile;
6675 struct dwarf2_section_info *abbrev_section;
6676 bfd *abfd;
6677 const gdb_byte *info_ptr, *end_ptr;
6678
6679 abbrev_section = (dwo_file != NULL
6680 ? &dwo_file->sections.abbrev
6681 : &dwarf2_per_objfile->abbrev);
6682
6683 if (dwarf_read_debug)
6684 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6685 get_section_name (section),
6686 get_section_file_name (abbrev_section));
6687
6688 dwarf2_read_section (objfile, section);
6689 info_ptr = section->buffer;
6690
6691 if (info_ptr == NULL)
6692 return;
6693
6694 /* We can't set abfd until now because the section may be empty or
6695 not present, in which case the bfd is unknown. */
6696 abfd = get_section_bfd_owner (section);
6697
6698 /* We don't use init_cutu_and_read_dies_simple, or some such, here
6699 because we don't need to read any dies: the signature is in the
6700 header. */
6701
6702 end_ptr = info_ptr + section->size;
6703 while (info_ptr < end_ptr)
6704 {
6705 struct signatured_type *sig_type;
6706 struct dwo_unit *dwo_tu;
6707 void **slot;
6708 const gdb_byte *ptr = info_ptr;
6709 struct comp_unit_head header;
6710 unsigned int length;
6711
6712 sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6713
6714 /* Initialize it due to a false compiler warning. */
6715 header.signature = -1;
6716 header.type_cu_offset_in_tu = (cu_offset) -1;
6717
6718 /* We need to read the type's signature in order to build the hash
6719 table, but we don't need anything else just yet. */
6720
6721 ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6722 abbrev_section, ptr, section_kind);
6723
6724 length = get_cu_length (&header);
6725
6726 /* Skip dummy type units. */
6727 if (ptr >= info_ptr + length
6728 || peek_abbrev_code (abfd, ptr) == 0
6729 || header.unit_type != DW_UT_type)
6730 {
6731 info_ptr += length;
6732 continue;
6733 }
6734
6735 if (types_htab == NULL)
6736 {
6737 if (dwo_file)
6738 types_htab = allocate_dwo_unit_table (objfile);
6739 else
6740 types_htab = allocate_signatured_type_table (objfile);
6741 }
6742
6743 if (dwo_file)
6744 {
6745 sig_type = NULL;
6746 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6747 struct dwo_unit);
6748 dwo_tu->dwo_file = dwo_file;
6749 dwo_tu->signature = header.signature;
6750 dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6751 dwo_tu->section = section;
6752 dwo_tu->sect_off = sect_off;
6753 dwo_tu->length = length;
6754 }
6755 else
6756 {
6757 /* N.B.: type_offset is not usable if this type uses a DWO file.
6758 The real type_offset is in the DWO file. */
6759 dwo_tu = NULL;
6760 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6761 struct signatured_type);
6762 sig_type->signature = header.signature;
6763 sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6764 sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6765 sig_type->per_cu.is_debug_types = 1;
6766 sig_type->per_cu.section = section;
6767 sig_type->per_cu.sect_off = sect_off;
6768 sig_type->per_cu.length = length;
6769 }
6770
6771 slot = htab_find_slot (types_htab,
6772 dwo_file ? (void*) dwo_tu : (void *) sig_type,
6773 INSERT);
6774 gdb_assert (slot != NULL);
6775 if (*slot != NULL)
6776 {
6777 sect_offset dup_sect_off;
6778
6779 if (dwo_file)
6780 {
6781 const struct dwo_unit *dup_tu
6782 = (const struct dwo_unit *) *slot;
6783
6784 dup_sect_off = dup_tu->sect_off;
6785 }
6786 else
6787 {
6788 const struct signatured_type *dup_tu
6789 = (const struct signatured_type *) *slot;
6790
6791 dup_sect_off = dup_tu->per_cu.sect_off;
6792 }
6793
6794 complaint (_("debug type entry at offset %s is duplicate to"
6795 " the entry at offset %s, signature %s"),
6796 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6797 hex_string (header.signature));
6798 }
6799 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6800
6801 if (dwarf_read_debug > 1)
6802 fprintf_unfiltered (gdb_stdlog, " offset %s, signature %s\n",
6803 sect_offset_str (sect_off),
6804 hex_string (header.signature));
6805
6806 info_ptr += length;
6807 }
6808 }
6809
6810 /* Create the hash table of all entries in the .debug_types
6811 (or .debug_types.dwo) section(s).
6812 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6813 otherwise it is NULL.
6814
6815 The result is a pointer to the hash table or NULL if there are no types.
6816
6817 Note: This function processes DWO files only, not DWP files. */
6818
6819 static void
6820 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6821 struct dwo_file *dwo_file,
6822 VEC (dwarf2_section_info_def) *types,
6823 htab_t &types_htab)
6824 {
6825 int ix;
6826 struct dwarf2_section_info *section;
6827
6828 if (VEC_empty (dwarf2_section_info_def, types))
6829 return;
6830
6831 for (ix = 0;
6832 VEC_iterate (dwarf2_section_info_def, types, ix, section);
6833 ++ix)
6834 create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6835 types_htab, rcuh_kind::TYPE);
6836 }
6837
6838 /* Create the hash table of all entries in the .debug_types section,
6839 and initialize all_type_units.
6840 The result is zero if there is an error (e.g. missing .debug_types section),
6841 otherwise non-zero. */
6842
6843 static int
6844 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6845 {
6846 htab_t types_htab = NULL;
6847
6848 create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6849 &dwarf2_per_objfile->info, types_htab,
6850 rcuh_kind::COMPILE);
6851 create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6852 dwarf2_per_objfile->types, types_htab);
6853 if (types_htab == NULL)
6854 {
6855 dwarf2_per_objfile->signatured_types = NULL;
6856 return 0;
6857 }
6858
6859 dwarf2_per_objfile->signatured_types = types_htab;
6860
6861 gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6862 dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6863
6864 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6865 &dwarf2_per_objfile->all_type_units);
6866
6867 return 1;
6868 }
6869
6870 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6871 If SLOT is non-NULL, it is the entry to use in the hash table.
6872 Otherwise we find one. */
6873
6874 static struct signatured_type *
6875 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6876 void **slot)
6877 {
6878 struct objfile *objfile = dwarf2_per_objfile->objfile;
6879
6880 if (dwarf2_per_objfile->all_type_units.size ()
6881 == dwarf2_per_objfile->all_type_units.capacity ())
6882 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6883
6884 signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6885 struct signatured_type);
6886
6887 dwarf2_per_objfile->all_type_units.push_back (sig_type);
6888 sig_type->signature = sig;
6889 sig_type->per_cu.is_debug_types = 1;
6890 if (dwarf2_per_objfile->using_index)
6891 {
6892 sig_type->per_cu.v.quick =
6893 OBSTACK_ZALLOC (&objfile->objfile_obstack,
6894 struct dwarf2_per_cu_quick_data);
6895 }
6896
6897 if (slot == NULL)
6898 {
6899 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6900 sig_type, INSERT);
6901 }
6902 gdb_assert (*slot == NULL);
6903 *slot = sig_type;
6904 /* The rest of sig_type must be filled in by the caller. */
6905 return sig_type;
6906 }
6907
6908 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6909 Fill in SIG_ENTRY with DWO_ENTRY. */
6910
6911 static void
6912 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6913 struct signatured_type *sig_entry,
6914 struct dwo_unit *dwo_entry)
6915 {
6916 /* Make sure we're not clobbering something we don't expect to. */
6917 gdb_assert (! sig_entry->per_cu.queued);
6918 gdb_assert (sig_entry->per_cu.cu == NULL);
6919 if (dwarf2_per_objfile->using_index)
6920 {
6921 gdb_assert (sig_entry->per_cu.v.quick != NULL);
6922 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6923 }
6924 else
6925 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6926 gdb_assert (sig_entry->signature == dwo_entry->signature);
6927 gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6928 gdb_assert (sig_entry->type_unit_group == NULL);
6929 gdb_assert (sig_entry->dwo_unit == NULL);
6930
6931 sig_entry->per_cu.section = dwo_entry->section;
6932 sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6933 sig_entry->per_cu.length = dwo_entry->length;
6934 sig_entry->per_cu.reading_dwo_directly = 1;
6935 sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6936 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6937 sig_entry->dwo_unit = dwo_entry;
6938 }
6939
6940 /* Subroutine of lookup_signatured_type.
6941 If we haven't read the TU yet, create the signatured_type data structure
6942 for a TU to be read in directly from a DWO file, bypassing the stub.
6943 This is the "Stay in DWO Optimization": When there is no DWP file and we're
6944 using .gdb_index, then when reading a CU we want to stay in the DWO file
6945 containing that CU. Otherwise we could end up reading several other DWO
6946 files (due to comdat folding) to process the transitive closure of all the
6947 mentioned TUs, and that can be slow. The current DWO file will have every
6948 type signature that it needs.
6949 We only do this for .gdb_index because in the psymtab case we already have
6950 to read all the DWOs to build the type unit groups. */
6951
6952 static struct signatured_type *
6953 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6954 {
6955 struct dwarf2_per_objfile *dwarf2_per_objfile
6956 = cu->per_cu->dwarf2_per_objfile;
6957 struct objfile *objfile = dwarf2_per_objfile->objfile;
6958 struct dwo_file *dwo_file;
6959 struct dwo_unit find_dwo_entry, *dwo_entry;
6960 struct signatured_type find_sig_entry, *sig_entry;
6961 void **slot;
6962
6963 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6964
6965 /* If TU skeletons have been removed then we may not have read in any
6966 TUs yet. */
6967 if (dwarf2_per_objfile->signatured_types == NULL)
6968 {
6969 dwarf2_per_objfile->signatured_types
6970 = allocate_signatured_type_table (objfile);
6971 }
6972
6973 /* We only ever need to read in one copy of a signatured type.
6974 Use the global signatured_types array to do our own comdat-folding
6975 of types. If this is the first time we're reading this TU, and
6976 the TU has an entry in .gdb_index, replace the recorded data from
6977 .gdb_index with this TU. */
6978
6979 find_sig_entry.signature = sig;
6980 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6981 &find_sig_entry, INSERT);
6982 sig_entry = (struct signatured_type *) *slot;
6983
6984 /* We can get here with the TU already read, *or* in the process of being
6985 read. Don't reassign the global entry to point to this DWO if that's
6986 the case. Also note that if the TU is already being read, it may not
6987 have come from a DWO, the program may be a mix of Fission-compiled
6988 code and non-Fission-compiled code. */
6989
6990 /* Have we already tried to read this TU?
6991 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
6992 needn't exist in the global table yet). */
6993 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
6994 return sig_entry;
6995
6996 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
6997 dwo_unit of the TU itself. */
6998 dwo_file = cu->dwo_unit->dwo_file;
6999
7000 /* Ok, this is the first time we're reading this TU. */
7001 if (dwo_file->tus == NULL)
7002 return NULL;
7003 find_dwo_entry.signature = sig;
7004 dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7005 if (dwo_entry == NULL)
7006 return NULL;
7007
7008 /* If the global table doesn't have an entry for this TU, add one. */
7009 if (sig_entry == NULL)
7010 sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7011
7012 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7013 sig_entry->per_cu.tu_read = 1;
7014 return sig_entry;
7015 }
7016
7017 /* Subroutine of lookup_signatured_type.
7018 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7019 then try the DWP file. If the TU stub (skeleton) has been removed then
7020 it won't be in .gdb_index. */
7021
7022 static struct signatured_type *
7023 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7024 {
7025 struct dwarf2_per_objfile *dwarf2_per_objfile
7026 = cu->per_cu->dwarf2_per_objfile;
7027 struct objfile *objfile = dwarf2_per_objfile->objfile;
7028 struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7029 struct dwo_unit *dwo_entry;
7030 struct signatured_type find_sig_entry, *sig_entry;
7031 void **slot;
7032
7033 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7034 gdb_assert (dwp_file != NULL);
7035
7036 /* If TU skeletons have been removed then we may not have read in any
7037 TUs yet. */
7038 if (dwarf2_per_objfile->signatured_types == NULL)
7039 {
7040 dwarf2_per_objfile->signatured_types
7041 = allocate_signatured_type_table (objfile);
7042 }
7043
7044 find_sig_entry.signature = sig;
7045 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7046 &find_sig_entry, INSERT);
7047 sig_entry = (struct signatured_type *) *slot;
7048
7049 /* Have we already tried to read this TU?
7050 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7051 needn't exist in the global table yet). */
7052 if (sig_entry != NULL)
7053 return sig_entry;
7054
7055 if (dwp_file->tus == NULL)
7056 return NULL;
7057 dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7058 sig, 1 /* is_debug_types */);
7059 if (dwo_entry == NULL)
7060 return NULL;
7061
7062 sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7063 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7064
7065 return sig_entry;
7066 }
7067
7068 /* Lookup a signature based type for DW_FORM_ref_sig8.
7069 Returns NULL if signature SIG is not present in the table.
7070 It is up to the caller to complain about this. */
7071
7072 static struct signatured_type *
7073 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7074 {
7075 struct dwarf2_per_objfile *dwarf2_per_objfile
7076 = cu->per_cu->dwarf2_per_objfile;
7077
7078 if (cu->dwo_unit
7079 && dwarf2_per_objfile->using_index)
7080 {
7081 /* We're in a DWO/DWP file, and we're using .gdb_index.
7082 These cases require special processing. */
7083 if (get_dwp_file (dwarf2_per_objfile) == NULL)
7084 return lookup_dwo_signatured_type (cu, sig);
7085 else
7086 return lookup_dwp_signatured_type (cu, sig);
7087 }
7088 else
7089 {
7090 struct signatured_type find_entry, *entry;
7091
7092 if (dwarf2_per_objfile->signatured_types == NULL)
7093 return NULL;
7094 find_entry.signature = sig;
7095 entry = ((struct signatured_type *)
7096 htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7097 return entry;
7098 }
7099 }
7100 \f
7101 /* Low level DIE reading support. */
7102
7103 /* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
7104
7105 static void
7106 init_cu_die_reader (struct die_reader_specs *reader,
7107 struct dwarf2_cu *cu,
7108 struct dwarf2_section_info *section,
7109 struct dwo_file *dwo_file,
7110 struct abbrev_table *abbrev_table)
7111 {
7112 gdb_assert (section->readin && section->buffer != NULL);
7113 reader->abfd = get_section_bfd_owner (section);
7114 reader->cu = cu;
7115 reader->dwo_file = dwo_file;
7116 reader->die_section = section;
7117 reader->buffer = section->buffer;
7118 reader->buffer_end = section->buffer + section->size;
7119 reader->comp_dir = NULL;
7120 reader->abbrev_table = abbrev_table;
7121 }
7122
7123 /* Subroutine of init_cutu_and_read_dies to simplify it.
7124 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7125 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7126 already.
7127
7128 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7129 from it to the DIE in the DWO. If NULL we are skipping the stub.
7130 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7131 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7132 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
7133 STUB_COMP_DIR may be non-NULL.
7134 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7135 are filled in with the info of the DIE from the DWO file.
7136 *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7137 from the dwo. Since *RESULT_READER references this abbrev table, it must be
7138 kept around for at least as long as *RESULT_READER.
7139
7140 The result is non-zero if a valid (non-dummy) DIE was found. */
7141
7142 static int
7143 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7144 struct dwo_unit *dwo_unit,
7145 struct die_info *stub_comp_unit_die,
7146 const char *stub_comp_dir,
7147 struct die_reader_specs *result_reader,
7148 const gdb_byte **result_info_ptr,
7149 struct die_info **result_comp_unit_die,
7150 int *result_has_children,
7151 abbrev_table_up *result_dwo_abbrev_table)
7152 {
7153 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7154 struct objfile *objfile = dwarf2_per_objfile->objfile;
7155 struct dwarf2_cu *cu = this_cu->cu;
7156 bfd *abfd;
7157 const gdb_byte *begin_info_ptr, *info_ptr;
7158 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7159 int i,num_extra_attrs;
7160 struct dwarf2_section_info *dwo_abbrev_section;
7161 struct attribute *attr;
7162 struct die_info *comp_unit_die;
7163
7164 /* At most one of these may be provided. */
7165 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7166
7167 /* These attributes aren't processed until later:
7168 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7169 DW_AT_comp_dir is used now, to find the DWO file, but it is also
7170 referenced later. However, these attributes are found in the stub
7171 which we won't have later. In order to not impose this complication
7172 on the rest of the code, we read them here and copy them to the
7173 DWO CU/TU die. */
7174
7175 stmt_list = NULL;
7176 low_pc = NULL;
7177 high_pc = NULL;
7178 ranges = NULL;
7179 comp_dir = NULL;
7180
7181 if (stub_comp_unit_die != NULL)
7182 {
7183 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7184 DWO file. */
7185 if (! this_cu->is_debug_types)
7186 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7187 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7188 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7189 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7190 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7191
7192 /* There should be a DW_AT_addr_base attribute here (if needed).
7193 We need the value before we can process DW_FORM_GNU_addr_index
7194 or DW_FORM_addrx. */
7195 cu->addr_base = 0;
7196 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7197 if (attr)
7198 cu->addr_base = DW_UNSND (attr);
7199
7200 /* There should be a DW_AT_ranges_base attribute here (if needed).
7201 We need the value before we can process DW_AT_ranges. */
7202 cu->ranges_base = 0;
7203 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7204 if (attr)
7205 cu->ranges_base = DW_UNSND (attr);
7206 }
7207 else if (stub_comp_dir != NULL)
7208 {
7209 /* Reconstruct the comp_dir attribute to simplify the code below. */
7210 comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7211 comp_dir->name = DW_AT_comp_dir;
7212 comp_dir->form = DW_FORM_string;
7213 DW_STRING_IS_CANONICAL (comp_dir) = 0;
7214 DW_STRING (comp_dir) = stub_comp_dir;
7215 }
7216
7217 /* Set up for reading the DWO CU/TU. */
7218 cu->dwo_unit = dwo_unit;
7219 dwarf2_section_info *section = dwo_unit->section;
7220 dwarf2_read_section (objfile, section);
7221 abfd = get_section_bfd_owner (section);
7222 begin_info_ptr = info_ptr = (section->buffer
7223 + to_underlying (dwo_unit->sect_off));
7224 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7225
7226 if (this_cu->is_debug_types)
7227 {
7228 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7229
7230 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7231 &cu->header, section,
7232 dwo_abbrev_section,
7233 info_ptr, rcuh_kind::TYPE);
7234 /* This is not an assert because it can be caused by bad debug info. */
7235 if (sig_type->signature != cu->header.signature)
7236 {
7237 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7238 " TU at offset %s [in module %s]"),
7239 hex_string (sig_type->signature),
7240 hex_string (cu->header.signature),
7241 sect_offset_str (dwo_unit->sect_off),
7242 bfd_get_filename (abfd));
7243 }
7244 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7245 /* For DWOs coming from DWP files, we don't know the CU length
7246 nor the type's offset in the TU until now. */
7247 dwo_unit->length = get_cu_length (&cu->header);
7248 dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7249
7250 /* Establish the type offset that can be used to lookup the type.
7251 For DWO files, we don't know it until now. */
7252 sig_type->type_offset_in_section
7253 = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7254 }
7255 else
7256 {
7257 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7258 &cu->header, section,
7259 dwo_abbrev_section,
7260 info_ptr, rcuh_kind::COMPILE);
7261 gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7262 /* For DWOs coming from DWP files, we don't know the CU length
7263 until now. */
7264 dwo_unit->length = get_cu_length (&cu->header);
7265 }
7266
7267 *result_dwo_abbrev_table
7268 = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7269 cu->header.abbrev_sect_off);
7270 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7271 result_dwo_abbrev_table->get ());
7272
7273 /* Read in the die, but leave space to copy over the attributes
7274 from the stub. This has the benefit of simplifying the rest of
7275 the code - all the work to maintain the illusion of a single
7276 DW_TAG_{compile,type}_unit DIE is done here. */
7277 num_extra_attrs = ((stmt_list != NULL)
7278 + (low_pc != NULL)
7279 + (high_pc != NULL)
7280 + (ranges != NULL)
7281 + (comp_dir != NULL));
7282 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7283 result_has_children, num_extra_attrs);
7284
7285 /* Copy over the attributes from the stub to the DIE we just read in. */
7286 comp_unit_die = *result_comp_unit_die;
7287 i = comp_unit_die->num_attrs;
7288 if (stmt_list != NULL)
7289 comp_unit_die->attrs[i++] = *stmt_list;
7290 if (low_pc != NULL)
7291 comp_unit_die->attrs[i++] = *low_pc;
7292 if (high_pc != NULL)
7293 comp_unit_die->attrs[i++] = *high_pc;
7294 if (ranges != NULL)
7295 comp_unit_die->attrs[i++] = *ranges;
7296 if (comp_dir != NULL)
7297 comp_unit_die->attrs[i++] = *comp_dir;
7298 comp_unit_die->num_attrs += num_extra_attrs;
7299
7300 if (dwarf_die_debug)
7301 {
7302 fprintf_unfiltered (gdb_stdlog,
7303 "Read die from %s@0x%x of %s:\n",
7304 get_section_name (section),
7305 (unsigned) (begin_info_ptr - section->buffer),
7306 bfd_get_filename (abfd));
7307 dump_die (comp_unit_die, dwarf_die_debug);
7308 }
7309
7310 /* Save the comp_dir attribute. If there is no DWP file then we'll read
7311 TUs by skipping the stub and going directly to the entry in the DWO file.
7312 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7313 to get it via circuitous means. Blech. */
7314 if (comp_dir != NULL)
7315 result_reader->comp_dir = DW_STRING (comp_dir);
7316
7317 /* Skip dummy compilation units. */
7318 if (info_ptr >= begin_info_ptr + dwo_unit->length
7319 || peek_abbrev_code (abfd, info_ptr) == 0)
7320 return 0;
7321
7322 *result_info_ptr = info_ptr;
7323 return 1;
7324 }
7325
7326 /* Subroutine of init_cutu_and_read_dies to simplify it.
7327 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7328 Returns NULL if the specified DWO unit cannot be found. */
7329
7330 static struct dwo_unit *
7331 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7332 struct die_info *comp_unit_die)
7333 {
7334 struct dwarf2_cu *cu = this_cu->cu;
7335 ULONGEST signature;
7336 struct dwo_unit *dwo_unit;
7337 const char *comp_dir, *dwo_name;
7338
7339 gdb_assert (cu != NULL);
7340
7341 /* Yeah, we look dwo_name up again, but it simplifies the code. */
7342 dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7343 comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7344
7345 if (this_cu->is_debug_types)
7346 {
7347 struct signatured_type *sig_type;
7348
7349 /* Since this_cu is the first member of struct signatured_type,
7350 we can go from a pointer to one to a pointer to the other. */
7351 sig_type = (struct signatured_type *) this_cu;
7352 signature = sig_type->signature;
7353 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7354 }
7355 else
7356 {
7357 struct attribute *attr;
7358
7359 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7360 if (! attr)
7361 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7362 " [in module %s]"),
7363 dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7364 signature = DW_UNSND (attr);
7365 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7366 signature);
7367 }
7368
7369 return dwo_unit;
7370 }
7371
7372 /* Subroutine of init_cutu_and_read_dies to simplify it.
7373 See it for a description of the parameters.
7374 Read a TU directly from a DWO file, bypassing the stub. */
7375
7376 static void
7377 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7378 int use_existing_cu, int keep,
7379 die_reader_func_ftype *die_reader_func,
7380 void *data)
7381 {
7382 std::unique_ptr<dwarf2_cu> new_cu;
7383 struct signatured_type *sig_type;
7384 struct die_reader_specs reader;
7385 const gdb_byte *info_ptr;
7386 struct die_info *comp_unit_die;
7387 int has_children;
7388 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7389
7390 /* Verify we can do the following downcast, and that we have the
7391 data we need. */
7392 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7393 sig_type = (struct signatured_type *) this_cu;
7394 gdb_assert (sig_type->dwo_unit != NULL);
7395
7396 if (use_existing_cu && this_cu->cu != NULL)
7397 {
7398 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7399 /* There's no need to do the rereading_dwo_cu handling that
7400 init_cutu_and_read_dies does since we don't read the stub. */
7401 }
7402 else
7403 {
7404 /* If !use_existing_cu, this_cu->cu must be NULL. */
7405 gdb_assert (this_cu->cu == NULL);
7406 new_cu.reset (new dwarf2_cu (this_cu));
7407 }
7408
7409 /* A future optimization, if needed, would be to use an existing
7410 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
7411 could share abbrev tables. */
7412
7413 /* The abbreviation table used by READER, this must live at least as long as
7414 READER. */
7415 abbrev_table_up dwo_abbrev_table;
7416
7417 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7418 NULL /* stub_comp_unit_die */,
7419 sig_type->dwo_unit->dwo_file->comp_dir,
7420 &reader, &info_ptr,
7421 &comp_unit_die, &has_children,
7422 &dwo_abbrev_table) == 0)
7423 {
7424 /* Dummy die. */
7425 return;
7426 }
7427
7428 /* All the "real" work is done here. */
7429 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7430
7431 /* This duplicates the code in init_cutu_and_read_dies,
7432 but the alternative is making the latter more complex.
7433 This function is only for the special case of using DWO files directly:
7434 no point in overly complicating the general case just to handle this. */
7435 if (new_cu != NULL && keep)
7436 {
7437 /* Link this CU into read_in_chain. */
7438 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7439 dwarf2_per_objfile->read_in_chain = this_cu;
7440 /* The chain owns it now. */
7441 new_cu.release ();
7442 }
7443 }
7444
7445 /* Initialize a CU (or TU) and read its DIEs.
7446 If the CU defers to a DWO file, read the DWO file as well.
7447
7448 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7449 Otherwise the table specified in the comp unit header is read in and used.
7450 This is an optimization for when we already have the abbrev table.
7451
7452 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7453 Otherwise, a new CU is allocated with xmalloc.
7454
7455 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7456 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
7457
7458 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7459 linker) then DIE_READER_FUNC will not get called. */
7460
7461 static void
7462 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7463 struct abbrev_table *abbrev_table,
7464 int use_existing_cu, int keep,
7465 bool skip_partial,
7466 die_reader_func_ftype *die_reader_func,
7467 void *data)
7468 {
7469 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7470 struct objfile *objfile = dwarf2_per_objfile->objfile;
7471 struct dwarf2_section_info *section = this_cu->section;
7472 bfd *abfd = get_section_bfd_owner (section);
7473 struct dwarf2_cu *cu;
7474 const gdb_byte *begin_info_ptr, *info_ptr;
7475 struct die_reader_specs reader;
7476 struct die_info *comp_unit_die;
7477 int has_children;
7478 struct attribute *attr;
7479 struct signatured_type *sig_type = NULL;
7480 struct dwarf2_section_info *abbrev_section;
7481 /* Non-zero if CU currently points to a DWO file and we need to
7482 reread it. When this happens we need to reread the skeleton die
7483 before we can reread the DWO file (this only applies to CUs, not TUs). */
7484 int rereading_dwo_cu = 0;
7485
7486 if (dwarf_die_debug)
7487 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7488 this_cu->is_debug_types ? "type" : "comp",
7489 sect_offset_str (this_cu->sect_off));
7490
7491 if (use_existing_cu)
7492 gdb_assert (keep);
7493
7494 /* If we're reading a TU directly from a DWO file, including a virtual DWO
7495 file (instead of going through the stub), short-circuit all of this. */
7496 if (this_cu->reading_dwo_directly)
7497 {
7498 /* Narrow down the scope of possibilities to have to understand. */
7499 gdb_assert (this_cu->is_debug_types);
7500 gdb_assert (abbrev_table == NULL);
7501 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7502 die_reader_func, data);
7503 return;
7504 }
7505
7506 /* This is cheap if the section is already read in. */
7507 dwarf2_read_section (objfile, section);
7508
7509 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7510
7511 abbrev_section = get_abbrev_section_for_cu (this_cu);
7512
7513 std::unique_ptr<dwarf2_cu> new_cu;
7514 if (use_existing_cu && this_cu->cu != NULL)
7515 {
7516 cu = this_cu->cu;
7517 /* If this CU is from a DWO file we need to start over, we need to
7518 refetch the attributes from the skeleton CU.
7519 This could be optimized by retrieving those attributes from when we
7520 were here the first time: the previous comp_unit_die was stored in
7521 comp_unit_obstack. But there's no data yet that we need this
7522 optimization. */
7523 if (cu->dwo_unit != NULL)
7524 rereading_dwo_cu = 1;
7525 }
7526 else
7527 {
7528 /* If !use_existing_cu, this_cu->cu must be NULL. */
7529 gdb_assert (this_cu->cu == NULL);
7530 new_cu.reset (new dwarf2_cu (this_cu));
7531 cu = new_cu.get ();
7532 }
7533
7534 /* Get the header. */
7535 if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7536 {
7537 /* We already have the header, there's no need to read it in again. */
7538 info_ptr += to_underlying (cu->header.first_die_cu_offset);
7539 }
7540 else
7541 {
7542 if (this_cu->is_debug_types)
7543 {
7544 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7545 &cu->header, section,
7546 abbrev_section, info_ptr,
7547 rcuh_kind::TYPE);
7548
7549 /* Since per_cu is the first member of struct signatured_type,
7550 we can go from a pointer to one to a pointer to the other. */
7551 sig_type = (struct signatured_type *) this_cu;
7552 gdb_assert (sig_type->signature == cu->header.signature);
7553 gdb_assert (sig_type->type_offset_in_tu
7554 == cu->header.type_cu_offset_in_tu);
7555 gdb_assert (this_cu->sect_off == cu->header.sect_off);
7556
7557 /* LENGTH has not been set yet for type units if we're
7558 using .gdb_index. */
7559 this_cu->length = get_cu_length (&cu->header);
7560
7561 /* Establish the type offset that can be used to lookup the type. */
7562 sig_type->type_offset_in_section =
7563 this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7564
7565 this_cu->dwarf_version = cu->header.version;
7566 }
7567 else
7568 {
7569 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7570 &cu->header, section,
7571 abbrev_section,
7572 info_ptr,
7573 rcuh_kind::COMPILE);
7574
7575 gdb_assert (this_cu->sect_off == cu->header.sect_off);
7576 gdb_assert (this_cu->length == get_cu_length (&cu->header));
7577 this_cu->dwarf_version = cu->header.version;
7578 }
7579 }
7580
7581 /* Skip dummy compilation units. */
7582 if (info_ptr >= begin_info_ptr + this_cu->length
7583 || peek_abbrev_code (abfd, info_ptr) == 0)
7584 return;
7585
7586 /* If we don't have them yet, read the abbrevs for this compilation unit.
7587 And if we need to read them now, make sure they're freed when we're
7588 done (own the table through ABBREV_TABLE_HOLDER). */
7589 abbrev_table_up abbrev_table_holder;
7590 if (abbrev_table != NULL)
7591 gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7592 else
7593 {
7594 abbrev_table_holder
7595 = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7596 cu->header.abbrev_sect_off);
7597 abbrev_table = abbrev_table_holder.get ();
7598 }
7599
7600 /* Read the top level CU/TU die. */
7601 init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7602 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7603
7604 if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7605 return;
7606
7607 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7608 from the DWO file. read_cutu_die_from_dwo will allocate the abbreviation
7609 table from the DWO file and pass the ownership over to us. It will be
7610 referenced from READER, so we must make sure to free it after we're done
7611 with READER.
7612
7613 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7614 DWO CU, that this test will fail (the attribute will not be present). */
7615 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7616 abbrev_table_up dwo_abbrev_table;
7617 if (attr)
7618 {
7619 struct dwo_unit *dwo_unit;
7620 struct die_info *dwo_comp_unit_die;
7621
7622 if (has_children)
7623 {
7624 complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7625 " has children (offset %s) [in module %s]"),
7626 sect_offset_str (this_cu->sect_off),
7627 bfd_get_filename (abfd));
7628 }
7629 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7630 if (dwo_unit != NULL)
7631 {
7632 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7633 comp_unit_die, NULL,
7634 &reader, &info_ptr,
7635 &dwo_comp_unit_die, &has_children,
7636 &dwo_abbrev_table) == 0)
7637 {
7638 /* Dummy die. */
7639 return;
7640 }
7641 comp_unit_die = dwo_comp_unit_die;
7642 }
7643 else
7644 {
7645 /* Yikes, we couldn't find the rest of the DIE, we only have
7646 the stub. A complaint has already been logged. There's
7647 not much more we can do except pass on the stub DIE to
7648 die_reader_func. We don't want to throw an error on bad
7649 debug info. */
7650 }
7651 }
7652
7653 /* All of the above is setup for this call. Yikes. */
7654 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7655
7656 /* Done, clean up. */
7657 if (new_cu != NULL && keep)
7658 {
7659 /* Link this CU into read_in_chain. */
7660 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7661 dwarf2_per_objfile->read_in_chain = this_cu;
7662 /* The chain owns it now. */
7663 new_cu.release ();
7664 }
7665 }
7666
7667 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7668 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7669 to have already done the lookup to find the DWO file).
7670
7671 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7672 THIS_CU->is_debug_types, but nothing else.
7673
7674 We fill in THIS_CU->length.
7675
7676 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7677 linker) then DIE_READER_FUNC will not get called.
7678
7679 THIS_CU->cu is always freed when done.
7680 This is done in order to not leave THIS_CU->cu in a state where we have
7681 to care whether it refers to the "main" CU or the DWO CU. */
7682
7683 static void
7684 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7685 struct dwo_file *dwo_file,
7686 die_reader_func_ftype *die_reader_func,
7687 void *data)
7688 {
7689 struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7690 struct objfile *objfile = dwarf2_per_objfile->objfile;
7691 struct dwarf2_section_info *section = this_cu->section;
7692 bfd *abfd = get_section_bfd_owner (section);
7693 struct dwarf2_section_info *abbrev_section;
7694 const gdb_byte *begin_info_ptr, *info_ptr;
7695 struct die_reader_specs reader;
7696 struct die_info *comp_unit_die;
7697 int has_children;
7698
7699 if (dwarf_die_debug)
7700 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7701 this_cu->is_debug_types ? "type" : "comp",
7702 sect_offset_str (this_cu->sect_off));
7703
7704 gdb_assert (this_cu->cu == NULL);
7705
7706 abbrev_section = (dwo_file != NULL
7707 ? &dwo_file->sections.abbrev
7708 : get_abbrev_section_for_cu (this_cu));
7709
7710 /* This is cheap if the section is already read in. */
7711 dwarf2_read_section (objfile, section);
7712
7713 struct dwarf2_cu cu (this_cu);
7714
7715 begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7716 info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7717 &cu.header, section,
7718 abbrev_section, info_ptr,
7719 (this_cu->is_debug_types
7720 ? rcuh_kind::TYPE
7721 : rcuh_kind::COMPILE));
7722
7723 this_cu->length = get_cu_length (&cu.header);
7724
7725 /* Skip dummy compilation units. */
7726 if (info_ptr >= begin_info_ptr + this_cu->length
7727 || peek_abbrev_code (abfd, info_ptr) == 0)
7728 return;
7729
7730 abbrev_table_up abbrev_table
7731 = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7732 cu.header.abbrev_sect_off);
7733
7734 init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7735 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7736
7737 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7738 }
7739
7740 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7741 does not lookup the specified DWO file.
7742 This cannot be used to read DWO files.
7743
7744 THIS_CU->cu is always freed when done.
7745 This is done in order to not leave THIS_CU->cu in a state where we have
7746 to care whether it refers to the "main" CU or the DWO CU.
7747 We can revisit this if the data shows there's a performance issue. */
7748
7749 static void
7750 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7751 die_reader_func_ftype *die_reader_func,
7752 void *data)
7753 {
7754 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7755 }
7756 \f
7757 /* Type Unit Groups.
7758
7759 Type Unit Groups are a way to collapse the set of all TUs (type units) into
7760 a more manageable set. The grouping is done by DW_AT_stmt_list entry
7761 so that all types coming from the same compilation (.o file) are grouped
7762 together. A future step could be to put the types in the same symtab as
7763 the CU the types ultimately came from. */
7764
7765 static hashval_t
7766 hash_type_unit_group (const void *item)
7767 {
7768 const struct type_unit_group *tu_group
7769 = (const struct type_unit_group *) item;
7770
7771 return hash_stmt_list_entry (&tu_group->hash);
7772 }
7773
7774 static int
7775 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7776 {
7777 const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7778 const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7779
7780 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7781 }
7782
7783 /* Allocate a hash table for type unit groups. */
7784
7785 static htab_t
7786 allocate_type_unit_groups_table (struct objfile *objfile)
7787 {
7788 return htab_create_alloc_ex (3,
7789 hash_type_unit_group,
7790 eq_type_unit_group,
7791 NULL,
7792 &objfile->objfile_obstack,
7793 hashtab_obstack_allocate,
7794 dummy_obstack_deallocate);
7795 }
7796
7797 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7798 partial symtabs. We combine several TUs per psymtab to not let the size
7799 of any one psymtab grow too big. */
7800 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7801 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7802
7803 /* Helper routine for get_type_unit_group.
7804 Create the type_unit_group object used to hold one or more TUs. */
7805
7806 static struct type_unit_group *
7807 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7808 {
7809 struct dwarf2_per_objfile *dwarf2_per_objfile
7810 = cu->per_cu->dwarf2_per_objfile;
7811 struct objfile *objfile = dwarf2_per_objfile->objfile;
7812 struct dwarf2_per_cu_data *per_cu;
7813 struct type_unit_group *tu_group;
7814
7815 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7816 struct type_unit_group);
7817 per_cu = &tu_group->per_cu;
7818 per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7819
7820 if (dwarf2_per_objfile->using_index)
7821 {
7822 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7823 struct dwarf2_per_cu_quick_data);
7824 }
7825 else
7826 {
7827 unsigned int line_offset = to_underlying (line_offset_struct);
7828 struct partial_symtab *pst;
7829 std::string name;
7830
7831 /* Give the symtab a useful name for debug purposes. */
7832 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7833 name = string_printf ("<type_units_%d>",
7834 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7835 else
7836 name = string_printf ("<type_units_at_0x%x>", line_offset);
7837
7838 pst = create_partial_symtab (per_cu, name.c_str ());
7839 pst->anonymous = 1;
7840 }
7841
7842 tu_group->hash.dwo_unit = cu->dwo_unit;
7843 tu_group->hash.line_sect_off = line_offset_struct;
7844
7845 return tu_group;
7846 }
7847
7848 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7849 STMT_LIST is a DW_AT_stmt_list attribute. */
7850
7851 static struct type_unit_group *
7852 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7853 {
7854 struct dwarf2_per_objfile *dwarf2_per_objfile
7855 = cu->per_cu->dwarf2_per_objfile;
7856 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7857 struct type_unit_group *tu_group;
7858 void **slot;
7859 unsigned int line_offset;
7860 struct type_unit_group type_unit_group_for_lookup;
7861
7862 if (dwarf2_per_objfile->type_unit_groups == NULL)
7863 {
7864 dwarf2_per_objfile->type_unit_groups =
7865 allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7866 }
7867
7868 /* Do we need to create a new group, or can we use an existing one? */
7869
7870 if (stmt_list)
7871 {
7872 line_offset = DW_UNSND (stmt_list);
7873 ++tu_stats->nr_symtab_sharers;
7874 }
7875 else
7876 {
7877 /* Ugh, no stmt_list. Rare, but we have to handle it.
7878 We can do various things here like create one group per TU or
7879 spread them over multiple groups to split up the expansion work.
7880 To avoid worst case scenarios (too many groups or too large groups)
7881 we, umm, group them in bunches. */
7882 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7883 | (tu_stats->nr_stmt_less_type_units
7884 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7885 ++tu_stats->nr_stmt_less_type_units;
7886 }
7887
7888 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7889 type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7890 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7891 &type_unit_group_for_lookup, INSERT);
7892 if (*slot != NULL)
7893 {
7894 tu_group = (struct type_unit_group *) *slot;
7895 gdb_assert (tu_group != NULL);
7896 }
7897 else
7898 {
7899 sect_offset line_offset_struct = (sect_offset) line_offset;
7900 tu_group = create_type_unit_group (cu, line_offset_struct);
7901 *slot = tu_group;
7902 ++tu_stats->nr_symtabs;
7903 }
7904
7905 return tu_group;
7906 }
7907 \f
7908 /* Partial symbol tables. */
7909
7910 /* Create a psymtab named NAME and assign it to PER_CU.
7911
7912 The caller must fill in the following details:
7913 dirname, textlow, texthigh. */
7914
7915 static struct partial_symtab *
7916 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7917 {
7918 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7919 struct partial_symtab *pst;
7920
7921 pst = start_psymtab_common (objfile, name, 0);
7922
7923 pst->psymtabs_addrmap_supported = 1;
7924
7925 /* This is the glue that links PST into GDB's symbol API. */
7926 pst->read_symtab_private = per_cu;
7927 pst->read_symtab = dwarf2_read_symtab;
7928 per_cu->v.psymtab = pst;
7929
7930 return pst;
7931 }
7932
7933 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7934 type. */
7935
7936 struct process_psymtab_comp_unit_data
7937 {
7938 /* True if we are reading a DW_TAG_partial_unit. */
7939
7940 int want_partial_unit;
7941
7942 /* The "pretend" language that is used if the CU doesn't declare a
7943 language. */
7944
7945 enum language pretend_language;
7946 };
7947
7948 /* die_reader_func for process_psymtab_comp_unit. */
7949
7950 static void
7951 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7952 const gdb_byte *info_ptr,
7953 struct die_info *comp_unit_die,
7954 int has_children,
7955 void *data)
7956 {
7957 struct dwarf2_cu *cu = reader->cu;
7958 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7959 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7960 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7961 CORE_ADDR baseaddr;
7962 CORE_ADDR best_lowpc = 0, best_highpc = 0;
7963 struct partial_symtab *pst;
7964 enum pc_bounds_kind cu_bounds_kind;
7965 const char *filename;
7966 struct process_psymtab_comp_unit_data *info
7967 = (struct process_psymtab_comp_unit_data *) data;
7968
7969 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7970 return;
7971
7972 gdb_assert (! per_cu->is_debug_types);
7973
7974 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7975
7976 /* Allocate a new partial symbol table structure. */
7977 filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7978 if (filename == NULL)
7979 filename = "";
7980
7981 pst = create_partial_symtab (per_cu, filename);
7982
7983 /* This must be done before calling dwarf2_build_include_psymtabs. */
7984 pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7985
7986 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7987
7988 dwarf2_find_base_address (comp_unit_die, cu);
7989
7990 /* Possibly set the default values of LOWPC and HIGHPC from
7991 `DW_AT_ranges'. */
7992 cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
7993 &best_highpc, cu, pst);
7994 if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
7995 {
7996 CORE_ADDR low
7997 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
7998 - baseaddr);
7999 CORE_ADDR high
8000 = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8001 - baseaddr - 1);
8002 /* Store the contiguous range if it is not empty; it can be
8003 empty for CUs with no code. */
8004 addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
8005 low, high, pst);
8006 }
8007
8008 /* Check if comp unit has_children.
8009 If so, read the rest of the partial symbols from this comp unit.
8010 If not, there's no more debug_info for this comp unit. */
8011 if (has_children)
8012 {
8013 struct partial_die_info *first_die;
8014 CORE_ADDR lowpc, highpc;
8015
8016 lowpc = ((CORE_ADDR) -1);
8017 highpc = ((CORE_ADDR) 0);
8018
8019 first_die = load_partial_dies (reader, info_ptr, 1);
8020
8021 scan_partial_symbols (first_die, &lowpc, &highpc,
8022 cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8023
8024 /* If we didn't find a lowpc, set it to highpc to avoid
8025 complaints from `maint check'. */
8026 if (lowpc == ((CORE_ADDR) -1))
8027 lowpc = highpc;
8028
8029 /* If the compilation unit didn't have an explicit address range,
8030 then use the information extracted from its child dies. */
8031 if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8032 {
8033 best_lowpc = lowpc;
8034 best_highpc = highpc;
8035 }
8036 }
8037 pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8038 best_lowpc + baseaddr)
8039 - baseaddr);
8040 pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8041 best_highpc + baseaddr)
8042 - baseaddr);
8043
8044 end_psymtab_common (objfile, pst);
8045
8046 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8047 {
8048 int i;
8049 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8050 struct dwarf2_per_cu_data *iter;
8051
8052 /* Fill in 'dependencies' here; we fill in 'users' in a
8053 post-pass. */
8054 pst->number_of_dependencies = len;
8055 pst->dependencies
8056 = objfile->partial_symtabs->allocate_dependencies (len);
8057 for (i = 0;
8058 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8059 i, iter);
8060 ++i)
8061 pst->dependencies[i] = iter->v.psymtab;
8062
8063 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8064 }
8065
8066 /* Get the list of files included in the current compilation unit,
8067 and build a psymtab for each of them. */
8068 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8069
8070 if (dwarf_read_debug)
8071 fprintf_unfiltered (gdb_stdlog,
8072 "Psymtab for %s unit @%s: %s - %s"
8073 ", %d global, %d static syms\n",
8074 per_cu->is_debug_types ? "type" : "comp",
8075 sect_offset_str (per_cu->sect_off),
8076 paddress (gdbarch, pst->text_low (objfile)),
8077 paddress (gdbarch, pst->text_high (objfile)),
8078 pst->n_global_syms, pst->n_static_syms);
8079 }
8080
8081 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8082 Process compilation unit THIS_CU for a psymtab. */
8083
8084 static void
8085 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8086 int want_partial_unit,
8087 enum language pretend_language)
8088 {
8089 /* If this compilation unit was already read in, free the
8090 cached copy in order to read it in again. This is
8091 necessary because we skipped some symbols when we first
8092 read in the compilation unit (see load_partial_dies).
8093 This problem could be avoided, but the benefit is unclear. */
8094 if (this_cu->cu != NULL)
8095 free_one_cached_comp_unit (this_cu);
8096
8097 if (this_cu->is_debug_types)
8098 init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8099 build_type_psymtabs_reader, NULL);
8100 else
8101 {
8102 process_psymtab_comp_unit_data info;
8103 info.want_partial_unit = want_partial_unit;
8104 info.pretend_language = pretend_language;
8105 init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8106 process_psymtab_comp_unit_reader, &info);
8107 }
8108
8109 /* Age out any secondary CUs. */
8110 age_cached_comp_units (this_cu->dwarf2_per_objfile);
8111 }
8112
8113 /* Reader function for build_type_psymtabs. */
8114
8115 static void
8116 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8117 const gdb_byte *info_ptr,
8118 struct die_info *type_unit_die,
8119 int has_children,
8120 void *data)
8121 {
8122 struct dwarf2_per_objfile *dwarf2_per_objfile
8123 = reader->cu->per_cu->dwarf2_per_objfile;
8124 struct objfile *objfile = dwarf2_per_objfile->objfile;
8125 struct dwarf2_cu *cu = reader->cu;
8126 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8127 struct signatured_type *sig_type;
8128 struct type_unit_group *tu_group;
8129 struct attribute *attr;
8130 struct partial_die_info *first_die;
8131 CORE_ADDR lowpc, highpc;
8132 struct partial_symtab *pst;
8133
8134 gdb_assert (data == NULL);
8135 gdb_assert (per_cu->is_debug_types);
8136 sig_type = (struct signatured_type *) per_cu;
8137
8138 if (! has_children)
8139 return;
8140
8141 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8142 tu_group = get_type_unit_group (cu, attr);
8143
8144 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8145
8146 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8147 pst = create_partial_symtab (per_cu, "");
8148 pst->anonymous = 1;
8149
8150 first_die = load_partial_dies (reader, info_ptr, 1);
8151
8152 lowpc = (CORE_ADDR) -1;
8153 highpc = (CORE_ADDR) 0;
8154 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8155
8156 end_psymtab_common (objfile, pst);
8157 }
8158
8159 /* Struct used to sort TUs by their abbreviation table offset. */
8160
8161 struct tu_abbrev_offset
8162 {
8163 tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8164 : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8165 {}
8166
8167 signatured_type *sig_type;
8168 sect_offset abbrev_offset;
8169 };
8170
8171 /* Helper routine for build_type_psymtabs_1, passed to std::sort. */
8172
8173 static bool
8174 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8175 const struct tu_abbrev_offset &b)
8176 {
8177 return a.abbrev_offset < b.abbrev_offset;
8178 }
8179
8180 /* Efficiently read all the type units.
8181 This does the bulk of the work for build_type_psymtabs.
8182
8183 The efficiency is because we sort TUs by the abbrev table they use and
8184 only read each abbrev table once. In one program there are 200K TUs
8185 sharing 8K abbrev tables.
8186
8187 The main purpose of this function is to support building the
8188 dwarf2_per_objfile->type_unit_groups table.
8189 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8190 can collapse the search space by grouping them by stmt_list.
8191 The savings can be significant, in the same program from above the 200K TUs
8192 share 8K stmt_list tables.
8193
8194 FUNC is expected to call get_type_unit_group, which will create the
8195 struct type_unit_group if necessary and add it to
8196 dwarf2_per_objfile->type_unit_groups. */
8197
8198 static void
8199 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8200 {
8201 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8202 abbrev_table_up abbrev_table;
8203 sect_offset abbrev_offset;
8204
8205 /* It's up to the caller to not call us multiple times. */
8206 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8207
8208 if (dwarf2_per_objfile->all_type_units.empty ())
8209 return;
8210
8211 /* TUs typically share abbrev tables, and there can be way more TUs than
8212 abbrev tables. Sort by abbrev table to reduce the number of times we
8213 read each abbrev table in.
8214 Alternatives are to punt or to maintain a cache of abbrev tables.
8215 This is simpler and efficient enough for now.
8216
8217 Later we group TUs by their DW_AT_stmt_list value (as this defines the
8218 symtab to use). Typically TUs with the same abbrev offset have the same
8219 stmt_list value too so in practice this should work well.
8220
8221 The basic algorithm here is:
8222
8223 sort TUs by abbrev table
8224 for each TU with same abbrev table:
8225 read abbrev table if first user
8226 read TU top level DIE
8227 [IWBN if DWO skeletons had DW_AT_stmt_list]
8228 call FUNC */
8229
8230 if (dwarf_read_debug)
8231 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8232
8233 /* Sort in a separate table to maintain the order of all_type_units
8234 for .gdb_index: TU indices directly index all_type_units. */
8235 std::vector<tu_abbrev_offset> sorted_by_abbrev;
8236 sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8237
8238 for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8239 sorted_by_abbrev.emplace_back
8240 (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8241 sig_type->per_cu.section,
8242 sig_type->per_cu.sect_off));
8243
8244 std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8245 sort_tu_by_abbrev_offset);
8246
8247 abbrev_offset = (sect_offset) ~(unsigned) 0;
8248
8249 for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8250 {
8251 /* Switch to the next abbrev table if necessary. */
8252 if (abbrev_table == NULL
8253 || tu.abbrev_offset != abbrev_offset)
8254 {
8255 abbrev_offset = tu.abbrev_offset;
8256 abbrev_table =
8257 abbrev_table_read_table (dwarf2_per_objfile,
8258 &dwarf2_per_objfile->abbrev,
8259 abbrev_offset);
8260 ++tu_stats->nr_uniq_abbrev_tables;
8261 }
8262
8263 init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8264 0, 0, false, build_type_psymtabs_reader, NULL);
8265 }
8266 }
8267
8268 /* Print collected type unit statistics. */
8269
8270 static void
8271 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8272 {
8273 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8274
8275 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8276 fprintf_unfiltered (gdb_stdlog, " %zu TUs\n",
8277 dwarf2_per_objfile->all_type_units.size ());
8278 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
8279 tu_stats->nr_uniq_abbrev_tables);
8280 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
8281 tu_stats->nr_symtabs);
8282 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
8283 tu_stats->nr_symtab_sharers);
8284 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
8285 tu_stats->nr_stmt_less_type_units);
8286 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
8287 tu_stats->nr_all_type_units_reallocs);
8288 }
8289
8290 /* Traversal function for build_type_psymtabs. */
8291
8292 static int
8293 build_type_psymtab_dependencies (void **slot, void *info)
8294 {
8295 struct dwarf2_per_objfile *dwarf2_per_objfile
8296 = (struct dwarf2_per_objfile *) info;
8297 struct objfile *objfile = dwarf2_per_objfile->objfile;
8298 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8299 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8300 struct partial_symtab *pst = per_cu->v.psymtab;
8301 int len = VEC_length (sig_type_ptr, tu_group->tus);
8302 struct signatured_type *iter;
8303 int i;
8304
8305 gdb_assert (len > 0);
8306 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8307
8308 pst->number_of_dependencies = len;
8309 pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
8310 for (i = 0;
8311 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8312 ++i)
8313 {
8314 gdb_assert (iter->per_cu.is_debug_types);
8315 pst->dependencies[i] = iter->per_cu.v.psymtab;
8316 iter->type_unit_group = tu_group;
8317 }
8318
8319 VEC_free (sig_type_ptr, tu_group->tus);
8320
8321 return 1;
8322 }
8323
8324 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8325 Build partial symbol tables for the .debug_types comp-units. */
8326
8327 static void
8328 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8329 {
8330 if (! create_all_type_units (dwarf2_per_objfile))
8331 return;
8332
8333 build_type_psymtabs_1 (dwarf2_per_objfile);
8334 }
8335
8336 /* Traversal function for process_skeletonless_type_unit.
8337 Read a TU in a DWO file and build partial symbols for it. */
8338
8339 static int
8340 process_skeletonless_type_unit (void **slot, void *info)
8341 {
8342 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8343 struct dwarf2_per_objfile *dwarf2_per_objfile
8344 = (struct dwarf2_per_objfile *) info;
8345 struct signatured_type find_entry, *entry;
8346
8347 /* If this TU doesn't exist in the global table, add it and read it in. */
8348
8349 if (dwarf2_per_objfile->signatured_types == NULL)
8350 {
8351 dwarf2_per_objfile->signatured_types
8352 = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8353 }
8354
8355 find_entry.signature = dwo_unit->signature;
8356 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8357 INSERT);
8358 /* If we've already seen this type there's nothing to do. What's happening
8359 is we're doing our own version of comdat-folding here. */
8360 if (*slot != NULL)
8361 return 1;
8362
8363 /* This does the job that create_all_type_units would have done for
8364 this TU. */
8365 entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8366 fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8367 *slot = entry;
8368
8369 /* This does the job that build_type_psymtabs_1 would have done. */
8370 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8371 build_type_psymtabs_reader, NULL);
8372
8373 return 1;
8374 }
8375
8376 /* Traversal function for process_skeletonless_type_units. */
8377
8378 static int
8379 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8380 {
8381 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8382
8383 if (dwo_file->tus != NULL)
8384 {
8385 htab_traverse_noresize (dwo_file->tus,
8386 process_skeletonless_type_unit, info);
8387 }
8388
8389 return 1;
8390 }
8391
8392 /* Scan all TUs of DWO files, verifying we've processed them.
8393 This is needed in case a TU was emitted without its skeleton.
8394 Note: This can't be done until we know what all the DWO files are. */
8395
8396 static void
8397 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8398 {
8399 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
8400 if (get_dwp_file (dwarf2_per_objfile) == NULL
8401 && dwarf2_per_objfile->dwo_files != NULL)
8402 {
8403 htab_traverse_noresize (dwarf2_per_objfile->dwo_files.get (),
8404 process_dwo_file_for_skeletonless_type_units,
8405 dwarf2_per_objfile);
8406 }
8407 }
8408
8409 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE. */
8410
8411 static void
8412 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8413 {
8414 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8415 {
8416 struct partial_symtab *pst = per_cu->v.psymtab;
8417
8418 if (pst == NULL)
8419 continue;
8420
8421 for (int j = 0; j < pst->number_of_dependencies; ++j)
8422 {
8423 /* Set the 'user' field only if it is not already set. */
8424 if (pst->dependencies[j]->user == NULL)
8425 pst->dependencies[j]->user = pst;
8426 }
8427 }
8428 }
8429
8430 /* Build the partial symbol table by doing a quick pass through the
8431 .debug_info and .debug_abbrev sections. */
8432
8433 static void
8434 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8435 {
8436 struct objfile *objfile = dwarf2_per_objfile->objfile;
8437
8438 if (dwarf_read_debug)
8439 {
8440 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8441 objfile_name (objfile));
8442 }
8443
8444 dwarf2_per_objfile->reading_partial_symbols = 1;
8445
8446 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8447
8448 /* Any cached compilation units will be linked by the per-objfile
8449 read_in_chain. Make sure to free them when we're done. */
8450 free_cached_comp_units freer (dwarf2_per_objfile);
8451
8452 build_type_psymtabs (dwarf2_per_objfile);
8453
8454 create_all_comp_units (dwarf2_per_objfile);
8455
8456 /* Create a temporary address map on a temporary obstack. We later
8457 copy this to the final obstack. */
8458 auto_obstack temp_obstack;
8459
8460 scoped_restore save_psymtabs_addrmap
8461 = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
8462 addrmap_create_mutable (&temp_obstack));
8463
8464 for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8465 process_psymtab_comp_unit (per_cu, 0, language_minimal);
8466
8467 /* This has to wait until we read the CUs, we need the list of DWOs. */
8468 process_skeletonless_type_units (dwarf2_per_objfile);
8469
8470 /* Now that all TUs have been processed we can fill in the dependencies. */
8471 if (dwarf2_per_objfile->type_unit_groups != NULL)
8472 {
8473 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8474 build_type_psymtab_dependencies, dwarf2_per_objfile);
8475 }
8476
8477 if (dwarf_read_debug)
8478 print_tu_stats (dwarf2_per_objfile);
8479
8480 set_partial_user (dwarf2_per_objfile);
8481
8482 objfile->partial_symtabs->psymtabs_addrmap
8483 = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
8484 objfile->partial_symtabs->obstack ());
8485 /* At this point we want to keep the address map. */
8486 save_psymtabs_addrmap.release ();
8487
8488 if (dwarf_read_debug)
8489 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8490 objfile_name (objfile));
8491 }
8492
8493 /* die_reader_func for load_partial_comp_unit. */
8494
8495 static void
8496 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8497 const gdb_byte *info_ptr,
8498 struct die_info *comp_unit_die,
8499 int has_children,
8500 void *data)
8501 {
8502 struct dwarf2_cu *cu = reader->cu;
8503
8504 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8505
8506 /* Check if comp unit has_children.
8507 If so, read the rest of the partial symbols from this comp unit.
8508 If not, there's no more debug_info for this comp unit. */
8509 if (has_children)
8510 load_partial_dies (reader, info_ptr, 0);
8511 }
8512
8513 /* Load the partial DIEs for a secondary CU into memory.
8514 This is also used when rereading a primary CU with load_all_dies. */
8515
8516 static void
8517 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8518 {
8519 init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8520 load_partial_comp_unit_reader, NULL);
8521 }
8522
8523 static void
8524 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8525 struct dwarf2_section_info *section,
8526 struct dwarf2_section_info *abbrev_section,
8527 unsigned int is_dwz)
8528 {
8529 const gdb_byte *info_ptr;
8530 struct objfile *objfile = dwarf2_per_objfile->objfile;
8531
8532 if (dwarf_read_debug)
8533 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8534 get_section_name (section),
8535 get_section_file_name (section));
8536
8537 dwarf2_read_section (objfile, section);
8538
8539 info_ptr = section->buffer;
8540
8541 while (info_ptr < section->buffer + section->size)
8542 {
8543 struct dwarf2_per_cu_data *this_cu;
8544
8545 sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8546
8547 comp_unit_head cu_header;
8548 read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8549 abbrev_section, info_ptr,
8550 rcuh_kind::COMPILE);
8551
8552 /* Save the compilation unit for later lookup. */
8553 if (cu_header.unit_type != DW_UT_type)
8554 {
8555 this_cu = XOBNEW (&objfile->objfile_obstack,
8556 struct dwarf2_per_cu_data);
8557 memset (this_cu, 0, sizeof (*this_cu));
8558 }
8559 else
8560 {
8561 auto sig_type = XOBNEW (&objfile->objfile_obstack,
8562 struct signatured_type);
8563 memset (sig_type, 0, sizeof (*sig_type));
8564 sig_type->signature = cu_header.signature;
8565 sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8566 this_cu = &sig_type->per_cu;
8567 }
8568 this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8569 this_cu->sect_off = sect_off;
8570 this_cu->length = cu_header.length + cu_header.initial_length_size;
8571 this_cu->is_dwz = is_dwz;
8572 this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8573 this_cu->section = section;
8574
8575 dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8576
8577 info_ptr = info_ptr + this_cu->length;
8578 }
8579 }
8580
8581 /* Create a list of all compilation units in OBJFILE.
8582 This is only done for -readnow and building partial symtabs. */
8583
8584 static void
8585 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8586 {
8587 gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8588 read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8589 &dwarf2_per_objfile->abbrev, 0);
8590
8591 dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8592 if (dwz != NULL)
8593 read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8594 1);
8595 }
8596
8597 /* Process all loaded DIEs for compilation unit CU, starting at
8598 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
8599 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8600 DW_AT_ranges). See the comments of add_partial_subprogram on how
8601 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
8602
8603 static void
8604 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8605 CORE_ADDR *highpc, int set_addrmap,
8606 struct dwarf2_cu *cu)
8607 {
8608 struct partial_die_info *pdi;
8609
8610 /* Now, march along the PDI's, descending into ones which have
8611 interesting children but skipping the children of the other ones,
8612 until we reach the end of the compilation unit. */
8613
8614 pdi = first_die;
8615
8616 while (pdi != NULL)
8617 {
8618 pdi->fixup (cu);
8619
8620 /* Anonymous namespaces or modules have no name but have interesting
8621 children, so we need to look at them. Ditto for anonymous
8622 enums. */
8623
8624 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8625 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8626 || pdi->tag == DW_TAG_imported_unit
8627 || pdi->tag == DW_TAG_inlined_subroutine)
8628 {
8629 switch (pdi->tag)
8630 {
8631 case DW_TAG_subprogram:
8632 case DW_TAG_inlined_subroutine:
8633 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8634 break;
8635 case DW_TAG_constant:
8636 case DW_TAG_variable:
8637 case DW_TAG_typedef:
8638 case DW_TAG_union_type:
8639 if (!pdi->is_declaration)
8640 {
8641 add_partial_symbol (pdi, cu);
8642 }
8643 break;
8644 case DW_TAG_class_type:
8645 case DW_TAG_interface_type:
8646 case DW_TAG_structure_type:
8647 if (!pdi->is_declaration)
8648 {
8649 add_partial_symbol (pdi, cu);
8650 }
8651 if ((cu->language == language_rust
8652 || cu->language == language_cplus) && pdi->has_children)
8653 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8654 set_addrmap, cu);
8655 break;
8656 case DW_TAG_enumeration_type:
8657 if (!pdi->is_declaration)
8658 add_partial_enumeration (pdi, cu);
8659 break;
8660 case DW_TAG_base_type:
8661 case DW_TAG_subrange_type:
8662 /* File scope base type definitions are added to the partial
8663 symbol table. */
8664 add_partial_symbol (pdi, cu);
8665 break;
8666 case DW_TAG_namespace:
8667 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8668 break;
8669 case DW_TAG_module:
8670 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8671 break;
8672 case DW_TAG_imported_unit:
8673 {
8674 struct dwarf2_per_cu_data *per_cu;
8675
8676 /* For now we don't handle imported units in type units. */
8677 if (cu->per_cu->is_debug_types)
8678 {
8679 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8680 " supported in type units [in module %s]"),
8681 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8682 }
8683
8684 per_cu = dwarf2_find_containing_comp_unit
8685 (pdi->d.sect_off, pdi->is_dwz,
8686 cu->per_cu->dwarf2_per_objfile);
8687
8688 /* Go read the partial unit, if needed. */
8689 if (per_cu->v.psymtab == NULL)
8690 process_psymtab_comp_unit (per_cu, 1, cu->language);
8691
8692 VEC_safe_push (dwarf2_per_cu_ptr,
8693 cu->per_cu->imported_symtabs, per_cu);
8694 }
8695 break;
8696 case DW_TAG_imported_declaration:
8697 add_partial_symbol (pdi, cu);
8698 break;
8699 default:
8700 break;
8701 }
8702 }
8703
8704 /* If the die has a sibling, skip to the sibling. */
8705
8706 pdi = pdi->die_sibling;
8707 }
8708 }
8709
8710 /* Functions used to compute the fully scoped name of a partial DIE.
8711
8712 Normally, this is simple. For C++, the parent DIE's fully scoped
8713 name is concatenated with "::" and the partial DIE's name.
8714 Enumerators are an exception; they use the scope of their parent
8715 enumeration type, i.e. the name of the enumeration type is not
8716 prepended to the enumerator.
8717
8718 There are two complexities. One is DW_AT_specification; in this
8719 case "parent" means the parent of the target of the specification,
8720 instead of the direct parent of the DIE. The other is compilers
8721 which do not emit DW_TAG_namespace; in this case we try to guess
8722 the fully qualified name of structure types from their members'
8723 linkage names. This must be done using the DIE's children rather
8724 than the children of any DW_AT_specification target. We only need
8725 to do this for structures at the top level, i.e. if the target of
8726 any DW_AT_specification (if any; otherwise the DIE itself) does not
8727 have a parent. */
8728
8729 /* Compute the scope prefix associated with PDI's parent, in
8730 compilation unit CU. The result will be allocated on CU's
8731 comp_unit_obstack, or a copy of the already allocated PDI->NAME
8732 field. NULL is returned if no prefix is necessary. */
8733 static const char *
8734 partial_die_parent_scope (struct partial_die_info *pdi,
8735 struct dwarf2_cu *cu)
8736 {
8737 const char *grandparent_scope;
8738 struct partial_die_info *parent, *real_pdi;
8739
8740 /* We need to look at our parent DIE; if we have a DW_AT_specification,
8741 then this means the parent of the specification DIE. */
8742
8743 real_pdi = pdi;
8744 while (real_pdi->has_specification)
8745 {
8746 auto res = find_partial_die (real_pdi->spec_offset,
8747 real_pdi->spec_is_dwz, cu);
8748 real_pdi = res.pdi;
8749 cu = res.cu;
8750 }
8751
8752 parent = real_pdi->die_parent;
8753 if (parent == NULL)
8754 return NULL;
8755
8756 if (parent->scope_set)
8757 return parent->scope;
8758
8759 parent->fixup (cu);
8760
8761 grandparent_scope = partial_die_parent_scope (parent, cu);
8762
8763 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8764 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8765 Work around this problem here. */
8766 if (cu->language == language_cplus
8767 && parent->tag == DW_TAG_namespace
8768 && strcmp (parent->name, "::") == 0
8769 && grandparent_scope == NULL)
8770 {
8771 parent->scope = NULL;
8772 parent->scope_set = 1;
8773 return NULL;
8774 }
8775
8776 if (pdi->tag == DW_TAG_enumerator)
8777 /* Enumerators should not get the name of the enumeration as a prefix. */
8778 parent->scope = grandparent_scope;
8779 else if (parent->tag == DW_TAG_namespace
8780 || parent->tag == DW_TAG_module
8781 || parent->tag == DW_TAG_structure_type
8782 || parent->tag == DW_TAG_class_type
8783 || parent->tag == DW_TAG_interface_type
8784 || parent->tag == DW_TAG_union_type
8785 || parent->tag == DW_TAG_enumeration_type)
8786 {
8787 if (grandparent_scope == NULL)
8788 parent->scope = parent->name;
8789 else
8790 parent->scope = typename_concat (&cu->comp_unit_obstack,
8791 grandparent_scope,
8792 parent->name, 0, cu);
8793 }
8794 else
8795 {
8796 /* FIXME drow/2004-04-01: What should we be doing with
8797 function-local names? For partial symbols, we should probably be
8798 ignoring them. */
8799 complaint (_("unhandled containing DIE tag %s for DIE at %s"),
8800 dwarf_tag_name (parent->tag),
8801 sect_offset_str (pdi->sect_off));
8802 parent->scope = grandparent_scope;
8803 }
8804
8805 parent->scope_set = 1;
8806 return parent->scope;
8807 }
8808
8809 /* Return the fully scoped name associated with PDI, from compilation unit
8810 CU. The result will be allocated with malloc. */
8811
8812 static char *
8813 partial_die_full_name (struct partial_die_info *pdi,
8814 struct dwarf2_cu *cu)
8815 {
8816 const char *parent_scope;
8817
8818 /* If this is a template instantiation, we can not work out the
8819 template arguments from partial DIEs. So, unfortunately, we have
8820 to go through the full DIEs. At least any work we do building
8821 types here will be reused if full symbols are loaded later. */
8822 if (pdi->has_template_arguments)
8823 {
8824 pdi->fixup (cu);
8825
8826 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8827 {
8828 struct die_info *die;
8829 struct attribute attr;
8830 struct dwarf2_cu *ref_cu = cu;
8831
8832 /* DW_FORM_ref_addr is using section offset. */
8833 attr.name = (enum dwarf_attribute) 0;
8834 attr.form = DW_FORM_ref_addr;
8835 attr.u.unsnd = to_underlying (pdi->sect_off);
8836 die = follow_die_ref (NULL, &attr, &ref_cu);
8837
8838 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8839 }
8840 }
8841
8842 parent_scope = partial_die_parent_scope (pdi, cu);
8843 if (parent_scope == NULL)
8844 return NULL;
8845 else
8846 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8847 }
8848
8849 static void
8850 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8851 {
8852 struct dwarf2_per_objfile *dwarf2_per_objfile
8853 = cu->per_cu->dwarf2_per_objfile;
8854 struct objfile *objfile = dwarf2_per_objfile->objfile;
8855 struct gdbarch *gdbarch = get_objfile_arch (objfile);
8856 CORE_ADDR addr = 0;
8857 const char *actual_name = NULL;
8858 CORE_ADDR baseaddr;
8859 char *built_actual_name;
8860
8861 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8862
8863 built_actual_name = partial_die_full_name (pdi, cu);
8864 if (built_actual_name != NULL)
8865 actual_name = built_actual_name;
8866
8867 if (actual_name == NULL)
8868 actual_name = pdi->name;
8869
8870 switch (pdi->tag)
8871 {
8872 case DW_TAG_inlined_subroutine:
8873 case DW_TAG_subprogram:
8874 addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8875 - baseaddr);
8876 if (pdi->is_external || cu->language == language_ada)
8877 {
8878 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8879 of the global scope. But in Ada, we want to be able to access
8880 nested procedures globally. So all Ada subprograms are stored
8881 in the global scope. */
8882 add_psymbol_to_list (actual_name, strlen (actual_name),
8883 built_actual_name != NULL,
8884 VAR_DOMAIN, LOC_BLOCK,
8885 SECT_OFF_TEXT (objfile),
8886 psymbol_placement::GLOBAL,
8887 addr,
8888 cu->language, objfile);
8889 }
8890 else
8891 {
8892 add_psymbol_to_list (actual_name, strlen (actual_name),
8893 built_actual_name != NULL,
8894 VAR_DOMAIN, LOC_BLOCK,
8895 SECT_OFF_TEXT (objfile),
8896 psymbol_placement::STATIC,
8897 addr, cu->language, objfile);
8898 }
8899
8900 if (pdi->main_subprogram && actual_name != NULL)
8901 set_objfile_main_name (objfile, actual_name, cu->language);
8902 break;
8903 case DW_TAG_constant:
8904 add_psymbol_to_list (actual_name, strlen (actual_name),
8905 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8906 -1, (pdi->is_external
8907 ? psymbol_placement::GLOBAL
8908 : psymbol_placement::STATIC),
8909 0, cu->language, objfile);
8910 break;
8911 case DW_TAG_variable:
8912 if (pdi->d.locdesc)
8913 addr = decode_locdesc (pdi->d.locdesc, cu);
8914
8915 if (pdi->d.locdesc
8916 && addr == 0
8917 && !dwarf2_per_objfile->has_section_at_zero)
8918 {
8919 /* A global or static variable may also have been stripped
8920 out by the linker if unused, in which case its address
8921 will be nullified; do not add such variables into partial
8922 symbol table then. */
8923 }
8924 else if (pdi->is_external)
8925 {
8926 /* Global Variable.
8927 Don't enter into the minimal symbol tables as there is
8928 a minimal symbol table entry from the ELF symbols already.
8929 Enter into partial symbol table if it has a location
8930 descriptor or a type.
8931 If the location descriptor is missing, new_symbol will create
8932 a LOC_UNRESOLVED symbol, the address of the variable will then
8933 be determined from the minimal symbol table whenever the variable
8934 is referenced.
8935 The address for the partial symbol table entry is not
8936 used by GDB, but it comes in handy for debugging partial symbol
8937 table building. */
8938
8939 if (pdi->d.locdesc || pdi->has_type)
8940 add_psymbol_to_list (actual_name, strlen (actual_name),
8941 built_actual_name != NULL,
8942 VAR_DOMAIN, LOC_STATIC,
8943 SECT_OFF_TEXT (objfile),
8944 psymbol_placement::GLOBAL,
8945 addr, cu->language, objfile);
8946 }
8947 else
8948 {
8949 int has_loc = pdi->d.locdesc != NULL;
8950
8951 /* Static Variable. Skip symbols whose value we cannot know (those
8952 without location descriptors or constant values). */
8953 if (!has_loc && !pdi->has_const_value)
8954 {
8955 xfree (built_actual_name);
8956 return;
8957 }
8958
8959 add_psymbol_to_list (actual_name, strlen (actual_name),
8960 built_actual_name != NULL,
8961 VAR_DOMAIN, LOC_STATIC,
8962 SECT_OFF_TEXT (objfile),
8963 psymbol_placement::STATIC,
8964 has_loc ? addr : 0,
8965 cu->language, objfile);
8966 }
8967 break;
8968 case DW_TAG_typedef:
8969 case DW_TAG_base_type:
8970 case DW_TAG_subrange_type:
8971 add_psymbol_to_list (actual_name, strlen (actual_name),
8972 built_actual_name != NULL,
8973 VAR_DOMAIN, LOC_TYPEDEF, -1,
8974 psymbol_placement::STATIC,
8975 0, cu->language, objfile);
8976 break;
8977 case DW_TAG_imported_declaration:
8978 case DW_TAG_namespace:
8979 add_psymbol_to_list (actual_name, strlen (actual_name),
8980 built_actual_name != NULL,
8981 VAR_DOMAIN, LOC_TYPEDEF, -1,
8982 psymbol_placement::GLOBAL,
8983 0, cu->language, objfile);
8984 break;
8985 case DW_TAG_module:
8986 /* With Fortran 77 there might be a "BLOCK DATA" module
8987 available without any name. If so, we skip the module as it
8988 doesn't bring any value. */
8989 if (actual_name != nullptr)
8990 add_psymbol_to_list (actual_name, strlen (actual_name),
8991 built_actual_name != NULL,
8992 MODULE_DOMAIN, LOC_TYPEDEF, -1,
8993 psymbol_placement::GLOBAL,
8994 0, cu->language, objfile);
8995 break;
8996 case DW_TAG_class_type:
8997 case DW_TAG_interface_type:
8998 case DW_TAG_structure_type:
8999 case DW_TAG_union_type:
9000 case DW_TAG_enumeration_type:
9001 /* Skip external references. The DWARF standard says in the section
9002 about "Structure, Union, and Class Type Entries": "An incomplete
9003 structure, union or class type is represented by a structure,
9004 union or class entry that does not have a byte size attribute
9005 and that has a DW_AT_declaration attribute." */
9006 if (!pdi->has_byte_size && pdi->is_declaration)
9007 {
9008 xfree (built_actual_name);
9009 return;
9010 }
9011
9012 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9013 static vs. global. */
9014 add_psymbol_to_list (actual_name, strlen (actual_name),
9015 built_actual_name != NULL,
9016 STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9017 cu->language == language_cplus
9018 ? psymbol_placement::GLOBAL
9019 : psymbol_placement::STATIC,
9020 0, cu->language, objfile);
9021
9022 break;
9023 case DW_TAG_enumerator:
9024 add_psymbol_to_list (actual_name, strlen (actual_name),
9025 built_actual_name != NULL,
9026 VAR_DOMAIN, LOC_CONST, -1,
9027 cu->language == language_cplus
9028 ? psymbol_placement::GLOBAL
9029 : psymbol_placement::STATIC,
9030 0, cu->language, objfile);
9031 break;
9032 default:
9033 break;
9034 }
9035
9036 xfree (built_actual_name);
9037 }
9038
9039 /* Read a partial die corresponding to a namespace; also, add a symbol
9040 corresponding to that namespace to the symbol table. NAMESPACE is
9041 the name of the enclosing namespace. */
9042
9043 static void
9044 add_partial_namespace (struct partial_die_info *pdi,
9045 CORE_ADDR *lowpc, CORE_ADDR *highpc,
9046 int set_addrmap, struct dwarf2_cu *cu)
9047 {
9048 /* Add a symbol for the namespace. */
9049
9050 add_partial_symbol (pdi, cu);
9051
9052 /* Now scan partial symbols in that namespace. */
9053
9054 if (pdi->has_children)
9055 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9056 }
9057
9058 /* Read a partial die corresponding to a Fortran module. */
9059
9060 static void
9061 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9062 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9063 {
9064 /* Add a symbol for the namespace. */
9065
9066 add_partial_symbol (pdi, cu);
9067
9068 /* Now scan partial symbols in that module. */
9069
9070 if (pdi->has_children)
9071 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9072 }
9073
9074 /* Read a partial die corresponding to a subprogram or an inlined
9075 subprogram and create a partial symbol for that subprogram.
9076 When the CU language allows it, this routine also defines a partial
9077 symbol for each nested subprogram that this subprogram contains.
9078 If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9079 Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9080
9081 PDI may also be a lexical block, in which case we simply search
9082 recursively for subprograms defined inside that lexical block.
9083 Again, this is only performed when the CU language allows this
9084 type of definitions. */
9085
9086 static void
9087 add_partial_subprogram (struct partial_die_info *pdi,
9088 CORE_ADDR *lowpc, CORE_ADDR *highpc,
9089 int set_addrmap, struct dwarf2_cu *cu)
9090 {
9091 if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9092 {
9093 if (pdi->has_pc_info)
9094 {
9095 if (pdi->lowpc < *lowpc)
9096 *lowpc = pdi->lowpc;
9097 if (pdi->highpc > *highpc)
9098 *highpc = pdi->highpc;
9099 if (set_addrmap)
9100 {
9101 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9102 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9103 CORE_ADDR baseaddr;
9104 CORE_ADDR this_highpc;
9105 CORE_ADDR this_lowpc;
9106
9107 baseaddr = ANOFFSET (objfile->section_offsets,
9108 SECT_OFF_TEXT (objfile));
9109 this_lowpc
9110 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9111 pdi->lowpc + baseaddr)
9112 - baseaddr);
9113 this_highpc
9114 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9115 pdi->highpc + baseaddr)
9116 - baseaddr);
9117 addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
9118 this_lowpc, this_highpc - 1,
9119 cu->per_cu->v.psymtab);
9120 }
9121 }
9122
9123 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9124 {
9125 if (!pdi->is_declaration)
9126 /* Ignore subprogram DIEs that do not have a name, they are
9127 illegal. Do not emit a complaint at this point, we will
9128 do so when we convert this psymtab into a symtab. */
9129 if (pdi->name)
9130 add_partial_symbol (pdi, cu);
9131 }
9132 }
9133
9134 if (! pdi->has_children)
9135 return;
9136
9137 if (cu->language == language_ada)
9138 {
9139 pdi = pdi->die_child;
9140 while (pdi != NULL)
9141 {
9142 pdi->fixup (cu);
9143 if (pdi->tag == DW_TAG_subprogram
9144 || pdi->tag == DW_TAG_inlined_subroutine
9145 || pdi->tag == DW_TAG_lexical_block)
9146 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9147 pdi = pdi->die_sibling;
9148 }
9149 }
9150 }
9151
9152 /* Read a partial die corresponding to an enumeration type. */
9153
9154 static void
9155 add_partial_enumeration (struct partial_die_info *enum_pdi,
9156 struct dwarf2_cu *cu)
9157 {
9158 struct partial_die_info *pdi;
9159
9160 if (enum_pdi->name != NULL)
9161 add_partial_symbol (enum_pdi, cu);
9162
9163 pdi = enum_pdi->die_child;
9164 while (pdi)
9165 {
9166 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9167 complaint (_("malformed enumerator DIE ignored"));
9168 else
9169 add_partial_symbol (pdi, cu);
9170 pdi = pdi->die_sibling;
9171 }
9172 }
9173
9174 /* Return the initial uleb128 in the die at INFO_PTR. */
9175
9176 static unsigned int
9177 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9178 {
9179 unsigned int bytes_read;
9180
9181 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9182 }
9183
9184 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9185 READER::CU. Use READER::ABBREV_TABLE to lookup any abbreviation.
9186
9187 Return the corresponding abbrev, or NULL if the number is zero (indicating
9188 an empty DIE). In either case *BYTES_READ will be set to the length of
9189 the initial number. */
9190
9191 static struct abbrev_info *
9192 peek_die_abbrev (const die_reader_specs &reader,
9193 const gdb_byte *info_ptr, unsigned int *bytes_read)
9194 {
9195 dwarf2_cu *cu = reader.cu;
9196 bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9197 unsigned int abbrev_number
9198 = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9199
9200 if (abbrev_number == 0)
9201 return NULL;
9202
9203 abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9204 if (!abbrev)
9205 {
9206 error (_("Dwarf Error: Could not find abbrev number %d in %s"
9207 " at offset %s [in module %s]"),
9208 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9209 sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9210 }
9211
9212 return abbrev;
9213 }
9214
9215 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9216 Returns a pointer to the end of a series of DIEs, terminated by an empty
9217 DIE. Any children of the skipped DIEs will also be skipped. */
9218
9219 static const gdb_byte *
9220 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9221 {
9222 while (1)
9223 {
9224 unsigned int bytes_read;
9225 abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9226
9227 if (abbrev == NULL)
9228 return info_ptr + bytes_read;
9229 else
9230 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9231 }
9232 }
9233
9234 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9235 INFO_PTR should point just after the initial uleb128 of a DIE, and the
9236 abbrev corresponding to that skipped uleb128 should be passed in
9237 ABBREV. Returns a pointer to this DIE's sibling, skipping any
9238 children. */
9239
9240 static const gdb_byte *
9241 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9242 struct abbrev_info *abbrev)
9243 {
9244 unsigned int bytes_read;
9245 struct attribute attr;
9246 bfd *abfd = reader->abfd;
9247 struct dwarf2_cu *cu = reader->cu;
9248 const gdb_byte *buffer = reader->buffer;
9249 const gdb_byte *buffer_end = reader->buffer_end;
9250 unsigned int form, i;
9251
9252 for (i = 0; i < abbrev->num_attrs; i++)
9253 {
9254 /* The only abbrev we care about is DW_AT_sibling. */
9255 if (abbrev->attrs[i].name == DW_AT_sibling)
9256 {
9257 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9258 if (attr.form == DW_FORM_ref_addr)
9259 complaint (_("ignoring absolute DW_AT_sibling"));
9260 else
9261 {
9262 sect_offset off = dwarf2_get_ref_die_offset (&attr);
9263 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9264
9265 if (sibling_ptr < info_ptr)
9266 complaint (_("DW_AT_sibling points backwards"));
9267 else if (sibling_ptr > reader->buffer_end)
9268 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9269 else
9270 return sibling_ptr;
9271 }
9272 }
9273
9274 /* If it isn't DW_AT_sibling, skip this attribute. */
9275 form = abbrev->attrs[i].form;
9276 skip_attribute:
9277 switch (form)
9278 {
9279 case DW_FORM_ref_addr:
9280 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9281 and later it is offset sized. */
9282 if (cu->header.version == 2)
9283 info_ptr += cu->header.addr_size;
9284 else
9285 info_ptr += cu->header.offset_size;
9286 break;
9287 case DW_FORM_GNU_ref_alt:
9288 info_ptr += cu->header.offset_size;
9289 break;
9290 case DW_FORM_addr:
9291 info_ptr += cu->header.addr_size;
9292 break;
9293 case DW_FORM_data1:
9294 case DW_FORM_ref1:
9295 case DW_FORM_flag:
9296 info_ptr += 1;
9297 break;
9298 case DW_FORM_flag_present:
9299 case DW_FORM_implicit_const:
9300 break;
9301 case DW_FORM_data2:
9302 case DW_FORM_ref2:
9303 info_ptr += 2;
9304 break;
9305 case DW_FORM_data4:
9306 case DW_FORM_ref4:
9307 info_ptr += 4;
9308 break;
9309 case DW_FORM_data8:
9310 case DW_FORM_ref8:
9311 case DW_FORM_ref_sig8:
9312 info_ptr += 8;
9313 break;
9314 case DW_FORM_data16:
9315 info_ptr += 16;
9316 break;
9317 case DW_FORM_string:
9318 read_direct_string (abfd, info_ptr, &bytes_read);
9319 info_ptr += bytes_read;
9320 break;
9321 case DW_FORM_sec_offset:
9322 case DW_FORM_strp:
9323 case DW_FORM_GNU_strp_alt:
9324 info_ptr += cu->header.offset_size;
9325 break;
9326 case DW_FORM_exprloc:
9327 case DW_FORM_block:
9328 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9329 info_ptr += bytes_read;
9330 break;
9331 case DW_FORM_block1:
9332 info_ptr += 1 + read_1_byte (abfd, info_ptr);
9333 break;
9334 case DW_FORM_block2:
9335 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9336 break;
9337 case DW_FORM_block4:
9338 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9339 break;
9340 case DW_FORM_addrx:
9341 case DW_FORM_strx:
9342 case DW_FORM_sdata:
9343 case DW_FORM_udata:
9344 case DW_FORM_ref_udata:
9345 case DW_FORM_GNU_addr_index:
9346 case DW_FORM_GNU_str_index:
9347 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9348 break;
9349 case DW_FORM_indirect:
9350 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9351 info_ptr += bytes_read;
9352 /* We need to continue parsing from here, so just go back to
9353 the top. */
9354 goto skip_attribute;
9355
9356 default:
9357 error (_("Dwarf Error: Cannot handle %s "
9358 "in DWARF reader [in module %s]"),
9359 dwarf_form_name (form),
9360 bfd_get_filename (abfd));
9361 }
9362 }
9363
9364 if (abbrev->has_children)
9365 return skip_children (reader, info_ptr);
9366 else
9367 return info_ptr;
9368 }
9369
9370 /* Locate ORIG_PDI's sibling.
9371 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
9372
9373 static const gdb_byte *
9374 locate_pdi_sibling (const struct die_reader_specs *reader,
9375 struct partial_die_info *orig_pdi,
9376 const gdb_byte *info_ptr)
9377 {
9378 /* Do we know the sibling already? */
9379
9380 if (orig_pdi->sibling)
9381 return orig_pdi->sibling;
9382
9383 /* Are there any children to deal with? */
9384
9385 if (!orig_pdi->has_children)
9386 return info_ptr;
9387
9388 /* Skip the children the long way. */
9389
9390 return skip_children (reader, info_ptr);
9391 }
9392
9393 /* Expand this partial symbol table into a full symbol table. SELF is
9394 not NULL. */
9395
9396 static void
9397 dwarf2_read_symtab (struct partial_symtab *self,
9398 struct objfile *objfile)
9399 {
9400 struct dwarf2_per_objfile *dwarf2_per_objfile
9401 = get_dwarf2_per_objfile (objfile);
9402
9403 if (self->readin)
9404 {
9405 warning (_("bug: psymtab for %s is already read in."),
9406 self->filename);
9407 }
9408 else
9409 {
9410 if (info_verbose)
9411 {
9412 printf_filtered (_("Reading in symbols for %s..."),
9413 self->filename);
9414 gdb_flush (gdb_stdout);
9415 }
9416
9417 /* If this psymtab is constructed from a debug-only objfile, the
9418 has_section_at_zero flag will not necessarily be correct. We
9419 can get the correct value for this flag by looking at the data
9420 associated with the (presumably stripped) associated objfile. */
9421 if (objfile->separate_debug_objfile_backlink)
9422 {
9423 struct dwarf2_per_objfile *dpo_backlink
9424 = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9425
9426 dwarf2_per_objfile->has_section_at_zero
9427 = dpo_backlink->has_section_at_zero;
9428 }
9429
9430 dwarf2_per_objfile->reading_partial_symbols = 0;
9431
9432 psymtab_to_symtab_1 (self);
9433
9434 /* Finish up the debug error message. */
9435 if (info_verbose)
9436 printf_filtered (_("done.\n"));
9437 }
9438
9439 process_cu_includes (dwarf2_per_objfile);
9440 }
9441 \f
9442 /* Reading in full CUs. */
9443
9444 /* Add PER_CU to the queue. */
9445
9446 static void
9447 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9448 enum language pretend_language)
9449 {
9450 struct dwarf2_queue_item *item;
9451
9452 per_cu->queued = 1;
9453 item = XNEW (struct dwarf2_queue_item);
9454 item->per_cu = per_cu;
9455 item->pretend_language = pretend_language;
9456 item->next = NULL;
9457
9458 if (dwarf2_queue == NULL)
9459 dwarf2_queue = item;
9460 else
9461 dwarf2_queue_tail->next = item;
9462
9463 dwarf2_queue_tail = item;
9464 }
9465
9466 /* If PER_CU is not yet queued, add it to the queue.
9467 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9468 dependency.
9469 The result is non-zero if PER_CU was queued, otherwise the result is zero
9470 meaning either PER_CU is already queued or it is already loaded.
9471
9472 N.B. There is an invariant here that if a CU is queued then it is loaded.
9473 The caller is required to load PER_CU if we return non-zero. */
9474
9475 static int
9476 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9477 struct dwarf2_per_cu_data *per_cu,
9478 enum language pretend_language)
9479 {
9480 /* We may arrive here during partial symbol reading, if we need full
9481 DIEs to process an unusual case (e.g. template arguments). Do
9482 not queue PER_CU, just tell our caller to load its DIEs. */
9483 if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9484 {
9485 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9486 return 1;
9487 return 0;
9488 }
9489
9490 /* Mark the dependence relation so that we don't flush PER_CU
9491 too early. */
9492 if (dependent_cu != NULL)
9493 dwarf2_add_dependence (dependent_cu, per_cu);
9494
9495 /* If it's already on the queue, we have nothing to do. */
9496 if (per_cu->queued)
9497 return 0;
9498
9499 /* If the compilation unit is already loaded, just mark it as
9500 used. */
9501 if (per_cu->cu != NULL)
9502 {
9503 per_cu->cu->last_used = 0;
9504 return 0;
9505 }
9506
9507 /* Add it to the queue. */
9508 queue_comp_unit (per_cu, pretend_language);
9509
9510 return 1;
9511 }
9512
9513 /* Process the queue. */
9514
9515 static void
9516 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9517 {
9518 struct dwarf2_queue_item *item, *next_item;
9519
9520 if (dwarf_read_debug)
9521 {
9522 fprintf_unfiltered (gdb_stdlog,
9523 "Expanding one or more symtabs of objfile %s ...\n",
9524 objfile_name (dwarf2_per_objfile->objfile));
9525 }
9526
9527 /* The queue starts out with one item, but following a DIE reference
9528 may load a new CU, adding it to the end of the queue. */
9529 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9530 {
9531 if ((dwarf2_per_objfile->using_index
9532 ? !item->per_cu->v.quick->compunit_symtab
9533 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9534 /* Skip dummy CUs. */
9535 && item->per_cu->cu != NULL)
9536 {
9537 struct dwarf2_per_cu_data *per_cu = item->per_cu;
9538 unsigned int debug_print_threshold;
9539 char buf[100];
9540
9541 if (per_cu->is_debug_types)
9542 {
9543 struct signatured_type *sig_type =
9544 (struct signatured_type *) per_cu;
9545
9546 sprintf (buf, "TU %s at offset %s",
9547 hex_string (sig_type->signature),
9548 sect_offset_str (per_cu->sect_off));
9549 /* There can be 100s of TUs.
9550 Only print them in verbose mode. */
9551 debug_print_threshold = 2;
9552 }
9553 else
9554 {
9555 sprintf (buf, "CU at offset %s",
9556 sect_offset_str (per_cu->sect_off));
9557 debug_print_threshold = 1;
9558 }
9559
9560 if (dwarf_read_debug >= debug_print_threshold)
9561 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9562
9563 if (per_cu->is_debug_types)
9564 process_full_type_unit (per_cu, item->pretend_language);
9565 else
9566 process_full_comp_unit (per_cu, item->pretend_language);
9567
9568 if (dwarf_read_debug >= debug_print_threshold)
9569 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9570 }
9571
9572 item->per_cu->queued = 0;
9573 next_item = item->next;
9574 xfree (item);
9575 }
9576
9577 dwarf2_queue_tail = NULL;
9578
9579 if (dwarf_read_debug)
9580 {
9581 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9582 objfile_name (dwarf2_per_objfile->objfile));
9583 }
9584 }
9585
9586 /* Read in full symbols for PST, and anything it depends on. */
9587
9588 static void
9589 psymtab_to_symtab_1 (struct partial_symtab *pst)
9590 {
9591 struct dwarf2_per_cu_data *per_cu;
9592 int i;
9593
9594 if (pst->readin)
9595 return;
9596
9597 for (i = 0; i < pst->number_of_dependencies; i++)
9598 if (!pst->dependencies[i]->readin
9599 && pst->dependencies[i]->user == NULL)
9600 {
9601 /* Inform about additional files that need to be read in. */
9602 if (info_verbose)
9603 {
9604 /* FIXME: i18n: Need to make this a single string. */
9605 fputs_filtered (" ", gdb_stdout);
9606 wrap_here ("");
9607 fputs_filtered ("and ", gdb_stdout);
9608 wrap_here ("");
9609 printf_filtered ("%s...", pst->dependencies[i]->filename);
9610 wrap_here (""); /* Flush output. */
9611 gdb_flush (gdb_stdout);
9612 }
9613 psymtab_to_symtab_1 (pst->dependencies[i]);
9614 }
9615
9616 per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9617
9618 if (per_cu == NULL)
9619 {
9620 /* It's an include file, no symbols to read for it.
9621 Everything is in the parent symtab. */
9622 pst->readin = 1;
9623 return;
9624 }
9625
9626 dw2_do_instantiate_symtab (per_cu, false);
9627 }
9628
9629 /* Trivial hash function for die_info: the hash value of a DIE
9630 is its offset in .debug_info for this objfile. */
9631
9632 static hashval_t
9633 die_hash (const void *item)
9634 {
9635 const struct die_info *die = (const struct die_info *) item;
9636
9637 return to_underlying (die->sect_off);
9638 }
9639
9640 /* Trivial comparison function for die_info structures: two DIEs
9641 are equal if they have the same offset. */
9642
9643 static int
9644 die_eq (const void *item_lhs, const void *item_rhs)
9645 {
9646 const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9647 const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9648
9649 return die_lhs->sect_off == die_rhs->sect_off;
9650 }
9651
9652 /* die_reader_func for load_full_comp_unit.
9653 This is identical to read_signatured_type_reader,
9654 but is kept separate for now. */
9655
9656 static void
9657 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9658 const gdb_byte *info_ptr,
9659 struct die_info *comp_unit_die,
9660 int has_children,
9661 void *data)
9662 {
9663 struct dwarf2_cu *cu = reader->cu;
9664 enum language *language_ptr = (enum language *) data;
9665
9666 gdb_assert (cu->die_hash == NULL);
9667 cu->die_hash =
9668 htab_create_alloc_ex (cu->header.length / 12,
9669 die_hash,
9670 die_eq,
9671 NULL,
9672 &cu->comp_unit_obstack,
9673 hashtab_obstack_allocate,
9674 dummy_obstack_deallocate);
9675
9676 if (has_children)
9677 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9678 &info_ptr, comp_unit_die);
9679 cu->dies = comp_unit_die;
9680 /* comp_unit_die is not stored in die_hash, no need. */
9681
9682 /* We try not to read any attributes in this function, because not
9683 all CUs needed for references have been loaded yet, and symbol
9684 table processing isn't initialized. But we have to set the CU language,
9685 or we won't be able to build types correctly.
9686 Similarly, if we do not read the producer, we can not apply
9687 producer-specific interpretation. */
9688 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9689 }
9690
9691 /* Load the DIEs associated with PER_CU into memory. */
9692
9693 static void
9694 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9695 bool skip_partial,
9696 enum language pretend_language)
9697 {
9698 gdb_assert (! this_cu->is_debug_types);
9699
9700 init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9701 load_full_comp_unit_reader, &pretend_language);
9702 }
9703
9704 /* Add a DIE to the delayed physname list. */
9705
9706 static void
9707 add_to_method_list (struct type *type, int fnfield_index, int index,
9708 const char *name, struct die_info *die,
9709 struct dwarf2_cu *cu)
9710 {
9711 struct delayed_method_info mi;
9712 mi.type = type;
9713 mi.fnfield_index = fnfield_index;
9714 mi.index = index;
9715 mi.name = name;
9716 mi.die = die;
9717 cu->method_list.push_back (mi);
9718 }
9719
9720 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9721 "const" / "volatile". If so, decrements LEN by the length of the
9722 modifier and return true. Otherwise return false. */
9723
9724 template<size_t N>
9725 static bool
9726 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9727 {
9728 size_t mod_len = sizeof (mod) - 1;
9729 if (len > mod_len && startswith (physname + (len - mod_len), mod))
9730 {
9731 len -= mod_len;
9732 return true;
9733 }
9734 return false;
9735 }
9736
9737 /* Compute the physnames of any methods on the CU's method list.
9738
9739 The computation of method physnames is delayed in order to avoid the
9740 (bad) condition that one of the method's formal parameters is of an as yet
9741 incomplete type. */
9742
9743 static void
9744 compute_delayed_physnames (struct dwarf2_cu *cu)
9745 {
9746 /* Only C++ delays computing physnames. */
9747 if (cu->method_list.empty ())
9748 return;
9749 gdb_assert (cu->language == language_cplus);
9750
9751 for (const delayed_method_info &mi : cu->method_list)
9752 {
9753 const char *physname;
9754 struct fn_fieldlist *fn_flp
9755 = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9756 physname = dwarf2_physname (mi.name, mi.die, cu);
9757 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9758 = physname ? physname : "";
9759
9760 /* Since there's no tag to indicate whether a method is a
9761 const/volatile overload, extract that information out of the
9762 demangled name. */
9763 if (physname != NULL)
9764 {
9765 size_t len = strlen (physname);
9766
9767 while (1)
9768 {
9769 if (physname[len] == ')') /* shortcut */
9770 break;
9771 else if (check_modifier (physname, len, " const"))
9772 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9773 else if (check_modifier (physname, len, " volatile"))
9774 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9775 else
9776 break;
9777 }
9778 }
9779 }
9780
9781 /* The list is no longer needed. */
9782 cu->method_list.clear ();
9783 }
9784
9785 /* Go objects should be embedded in a DW_TAG_module DIE,
9786 and it's not clear if/how imported objects will appear.
9787 To keep Go support simple until that's worked out,
9788 go back through what we've read and create something usable.
9789 We could do this while processing each DIE, and feels kinda cleaner,
9790 but that way is more invasive.
9791 This is to, for example, allow the user to type "p var" or "b main"
9792 without having to specify the package name, and allow lookups
9793 of module.object to work in contexts that use the expression
9794 parser. */
9795
9796 static void
9797 fixup_go_packaging (struct dwarf2_cu *cu)
9798 {
9799 char *package_name = NULL;
9800 struct pending *list;
9801 int i;
9802
9803 for (list = *cu->get_builder ()->get_global_symbols ();
9804 list != NULL;
9805 list = list->next)
9806 {
9807 for (i = 0; i < list->nsyms; ++i)
9808 {
9809 struct symbol *sym = list->symbol[i];
9810
9811 if (SYMBOL_LANGUAGE (sym) == language_go
9812 && SYMBOL_CLASS (sym) == LOC_BLOCK)
9813 {
9814 char *this_package_name = go_symbol_package_name (sym);
9815
9816 if (this_package_name == NULL)
9817 continue;
9818 if (package_name == NULL)
9819 package_name = this_package_name;
9820 else
9821 {
9822 struct objfile *objfile
9823 = cu->per_cu->dwarf2_per_objfile->objfile;
9824 if (strcmp (package_name, this_package_name) != 0)
9825 complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9826 (symbol_symtab (sym) != NULL
9827 ? symtab_to_filename_for_display
9828 (symbol_symtab (sym))
9829 : objfile_name (objfile)),
9830 this_package_name, package_name);
9831 xfree (this_package_name);
9832 }
9833 }
9834 }
9835 }
9836
9837 if (package_name != NULL)
9838 {
9839 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9840 const char *saved_package_name
9841 = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9842 package_name,
9843 strlen (package_name));
9844 struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9845 saved_package_name);
9846 struct symbol *sym;
9847
9848 sym = allocate_symbol (objfile);
9849 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9850 SYMBOL_SET_NAMES (sym, saved_package_name,
9851 strlen (saved_package_name), 0, objfile);
9852 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9853 e.g., "main" finds the "main" module and not C's main(). */
9854 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9855 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9856 SYMBOL_TYPE (sym) = type;
9857
9858 add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
9859
9860 xfree (package_name);
9861 }
9862 }
9863
9864 /* Allocate a fully-qualified name consisting of the two parts on the
9865 obstack. */
9866
9867 static const char *
9868 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9869 {
9870 return obconcat (obstack, p1, "::", p2, (char *) NULL);
9871 }
9872
9873 /* A helper that allocates a struct discriminant_info to attach to a
9874 union type. */
9875
9876 static struct discriminant_info *
9877 alloc_discriminant_info (struct type *type, int discriminant_index,
9878 int default_index)
9879 {
9880 gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9881 gdb_assert (discriminant_index == -1
9882 || (discriminant_index >= 0
9883 && discriminant_index < TYPE_NFIELDS (type)));
9884 gdb_assert (default_index == -1
9885 || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9886
9887 TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9888
9889 struct discriminant_info *disc
9890 = ((struct discriminant_info *)
9891 TYPE_ZALLOC (type,
9892 offsetof (struct discriminant_info, discriminants)
9893 + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9894 disc->default_index = default_index;
9895 disc->discriminant_index = discriminant_index;
9896
9897 struct dynamic_prop prop;
9898 prop.kind = PROP_UNDEFINED;
9899 prop.data.baton = disc;
9900
9901 add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9902
9903 return disc;
9904 }
9905
9906 /* Some versions of rustc emitted enums in an unusual way.
9907
9908 Ordinary enums were emitted as unions. The first element of each
9909 structure in the union was named "RUST$ENUM$DISR". This element
9910 held the discriminant.
9911
9912 These versions of Rust also implemented the "non-zero"
9913 optimization. When the enum had two values, and one is empty and
9914 the other holds a pointer that cannot be zero, the pointer is used
9915 as the discriminant, with a zero value meaning the empty variant.
9916 Here, the union's first member is of the form
9917 RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9918 where the fieldnos are the indices of the fields that should be
9919 traversed in order to find the field (which may be several fields deep)
9920 and the variantname is the name of the variant of the case when the
9921 field is zero.
9922
9923 This function recognizes whether TYPE is of one of these forms,
9924 and, if so, smashes it to be a variant type. */
9925
9926 static void
9927 quirk_rust_enum (struct type *type, struct objfile *objfile)
9928 {
9929 gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9930
9931 /* We don't need to deal with empty enums. */
9932 if (TYPE_NFIELDS (type) == 0)
9933 return;
9934
9935 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9936 if (TYPE_NFIELDS (type) == 1
9937 && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9938 {
9939 const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9940
9941 /* Decode the field name to find the offset of the
9942 discriminant. */
9943 ULONGEST bit_offset = 0;
9944 struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9945 while (name[0] >= '0' && name[0] <= '9')
9946 {
9947 char *tail;
9948 unsigned long index = strtoul (name, &tail, 10);
9949 name = tail;
9950 if (*name != '$'
9951 || index >= TYPE_NFIELDS (field_type)
9952 || (TYPE_FIELD_LOC_KIND (field_type, index)
9953 != FIELD_LOC_KIND_BITPOS))
9954 {
9955 complaint (_("Could not parse Rust enum encoding string \"%s\""
9956 "[in module %s]"),
9957 TYPE_FIELD_NAME (type, 0),
9958 objfile_name (objfile));
9959 return;
9960 }
9961 ++name;
9962
9963 bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9964 field_type = TYPE_FIELD_TYPE (field_type, index);
9965 }
9966
9967 /* Make a union to hold the variants. */
9968 struct type *union_type = alloc_type (objfile);
9969 TYPE_CODE (union_type) = TYPE_CODE_UNION;
9970 TYPE_NFIELDS (union_type) = 3;
9971 TYPE_FIELDS (union_type)
9972 = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9973 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9974 set_type_align (union_type, TYPE_RAW_ALIGN (type));
9975
9976 /* Put the discriminant must at index 0. */
9977 TYPE_FIELD_TYPE (union_type, 0) = field_type;
9978 TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
9979 TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
9980 SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
9981
9982 /* The order of fields doesn't really matter, so put the real
9983 field at index 1 and the data-less field at index 2. */
9984 struct discriminant_info *disc
9985 = alloc_discriminant_info (union_type, 0, 1);
9986 TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
9987 TYPE_FIELD_NAME (union_type, 1)
9988 = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
9989 TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
9990 = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
9991 TYPE_FIELD_NAME (union_type, 1));
9992
9993 const char *dataless_name
9994 = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
9995 name);
9996 struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
9997 dataless_name);
9998 TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
9999 /* NAME points into the original discriminant name, which
10000 already has the correct lifetime. */
10001 TYPE_FIELD_NAME (union_type, 2) = name;
10002 SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10003 disc->discriminants[2] = 0;
10004
10005 /* Smash this type to be a structure type. We have to do this
10006 because the type has already been recorded. */
10007 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10008 TYPE_NFIELDS (type) = 1;
10009 TYPE_FIELDS (type)
10010 = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10011
10012 /* Install the variant part. */
10013 TYPE_FIELD_TYPE (type, 0) = union_type;
10014 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10015 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10016 }
10017 else if (TYPE_NFIELDS (type) == 1)
10018 {
10019 /* We assume that a union with a single field is a univariant
10020 enum. */
10021 /* Smash this type to be a structure type. We have to do this
10022 because the type has already been recorded. */
10023 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10024
10025 /* Make a union to hold the variants. */
10026 struct type *union_type = alloc_type (objfile);
10027 TYPE_CODE (union_type) = TYPE_CODE_UNION;
10028 TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10029 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10030 set_type_align (union_type, TYPE_RAW_ALIGN (type));
10031 TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10032
10033 struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10034 const char *variant_name
10035 = rust_last_path_segment (TYPE_NAME (field_type));
10036 TYPE_FIELD_NAME (union_type, 0) = variant_name;
10037 TYPE_NAME (field_type)
10038 = rust_fully_qualify (&objfile->objfile_obstack,
10039 TYPE_NAME (type), variant_name);
10040
10041 /* Install the union in the outer struct type. */
10042 TYPE_NFIELDS (type) = 1;
10043 TYPE_FIELDS (type)
10044 = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10045 TYPE_FIELD_TYPE (type, 0) = union_type;
10046 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10047 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10048
10049 alloc_discriminant_info (union_type, -1, 0);
10050 }
10051 else
10052 {
10053 struct type *disr_type = nullptr;
10054 for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10055 {
10056 disr_type = TYPE_FIELD_TYPE (type, i);
10057
10058 if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10059 {
10060 /* All fields of a true enum will be structs. */
10061 return;
10062 }
10063 else if (TYPE_NFIELDS (disr_type) == 0)
10064 {
10065 /* Could be data-less variant, so keep going. */
10066 disr_type = nullptr;
10067 }
10068 else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10069 "RUST$ENUM$DISR") != 0)
10070 {
10071 /* Not a Rust enum. */
10072 return;
10073 }
10074 else
10075 {
10076 /* Found one. */
10077 break;
10078 }
10079 }
10080
10081 /* If we got here without a discriminant, then it's probably
10082 just a union. */
10083 if (disr_type == nullptr)
10084 return;
10085
10086 /* Smash this type to be a structure type. We have to do this
10087 because the type has already been recorded. */
10088 TYPE_CODE (type) = TYPE_CODE_STRUCT;
10089
10090 /* Make a union to hold the variants. */
10091 struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10092 struct type *union_type = alloc_type (objfile);
10093 TYPE_CODE (union_type) = TYPE_CODE_UNION;
10094 TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10095 TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10096 set_type_align (union_type, TYPE_RAW_ALIGN (type));
10097 TYPE_FIELDS (union_type)
10098 = (struct field *) TYPE_ZALLOC (union_type,
10099 (TYPE_NFIELDS (union_type)
10100 * sizeof (struct field)));
10101
10102 memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10103 TYPE_NFIELDS (type) * sizeof (struct field));
10104
10105 /* Install the discriminant at index 0 in the union. */
10106 TYPE_FIELD (union_type, 0) = *disr_field;
10107 TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10108 TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10109
10110 /* Install the union in the outer struct type. */
10111 TYPE_FIELD_TYPE (type, 0) = union_type;
10112 TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10113 TYPE_NFIELDS (type) = 1;
10114
10115 /* Set the size and offset of the union type. */
10116 SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10117
10118 /* We need a way to find the correct discriminant given a
10119 variant name. For convenience we build a map here. */
10120 struct type *enum_type = FIELD_TYPE (*disr_field);
10121 std::unordered_map<std::string, ULONGEST> discriminant_map;
10122 for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10123 {
10124 if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10125 {
10126 const char *name
10127 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10128 discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10129 }
10130 }
10131
10132 int n_fields = TYPE_NFIELDS (union_type);
10133 struct discriminant_info *disc
10134 = alloc_discriminant_info (union_type, 0, -1);
10135 /* Skip the discriminant here. */
10136 for (int i = 1; i < n_fields; ++i)
10137 {
10138 /* Find the final word in the name of this variant's type.
10139 That name can be used to look up the correct
10140 discriminant. */
10141 const char *variant_name
10142 = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10143 i)));
10144
10145 auto iter = discriminant_map.find (variant_name);
10146 if (iter != discriminant_map.end ())
10147 disc->discriminants[i] = iter->second;
10148
10149 /* Remove the discriminant field, if it exists. */
10150 struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10151 if (TYPE_NFIELDS (sub_type) > 0)
10152 {
10153 --TYPE_NFIELDS (sub_type);
10154 ++TYPE_FIELDS (sub_type);
10155 }
10156 TYPE_FIELD_NAME (union_type, i) = variant_name;
10157 TYPE_NAME (sub_type)
10158 = rust_fully_qualify (&objfile->objfile_obstack,
10159 TYPE_NAME (type), variant_name);
10160 }
10161 }
10162 }
10163
10164 /* Rewrite some Rust unions to be structures with variants parts. */
10165
10166 static void
10167 rust_union_quirks (struct dwarf2_cu *cu)
10168 {
10169 gdb_assert (cu->language == language_rust);
10170 for (type *type_ : cu->rust_unions)
10171 quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10172 /* We don't need this any more. */
10173 cu->rust_unions.clear ();
10174 }
10175
10176 /* Return the symtab for PER_CU. This works properly regardless of
10177 whether we're using the index or psymtabs. */
10178
10179 static struct compunit_symtab *
10180 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10181 {
10182 return (per_cu->dwarf2_per_objfile->using_index
10183 ? per_cu->v.quick->compunit_symtab
10184 : per_cu->v.psymtab->compunit_symtab);
10185 }
10186
10187 /* A helper function for computing the list of all symbol tables
10188 included by PER_CU. */
10189
10190 static void
10191 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
10192 htab_t all_children, htab_t all_type_symtabs,
10193 struct dwarf2_per_cu_data *per_cu,
10194 struct compunit_symtab *immediate_parent)
10195 {
10196 void **slot;
10197 int ix;
10198 struct compunit_symtab *cust;
10199 struct dwarf2_per_cu_data *iter;
10200
10201 slot = htab_find_slot (all_children, per_cu, INSERT);
10202 if (*slot != NULL)
10203 {
10204 /* This inclusion and its children have been processed. */
10205 return;
10206 }
10207
10208 *slot = per_cu;
10209 /* Only add a CU if it has a symbol table. */
10210 cust = get_compunit_symtab (per_cu);
10211 if (cust != NULL)
10212 {
10213 /* If this is a type unit only add its symbol table if we haven't
10214 seen it yet (type unit per_cu's can share symtabs). */
10215 if (per_cu->is_debug_types)
10216 {
10217 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10218 if (*slot == NULL)
10219 {
10220 *slot = cust;
10221 result->push_back (cust);
10222 if (cust->user == NULL)
10223 cust->user = immediate_parent;
10224 }
10225 }
10226 else
10227 {
10228 result->push_back (cust);
10229 if (cust->user == NULL)
10230 cust->user = immediate_parent;
10231 }
10232 }
10233
10234 for (ix = 0;
10235 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10236 ++ix)
10237 {
10238 recursively_compute_inclusions (result, all_children,
10239 all_type_symtabs, iter, cust);
10240 }
10241 }
10242
10243 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10244 PER_CU. */
10245
10246 static void
10247 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10248 {
10249 gdb_assert (! per_cu->is_debug_types);
10250
10251 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10252 {
10253 int ix, len;
10254 struct dwarf2_per_cu_data *per_cu_iter;
10255 std::vector<compunit_symtab *> result_symtabs;
10256 htab_t all_children, all_type_symtabs;
10257 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10258
10259 /* If we don't have a symtab, we can just skip this case. */
10260 if (cust == NULL)
10261 return;
10262
10263 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10264 NULL, xcalloc, xfree);
10265 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10266 NULL, xcalloc, xfree);
10267
10268 for (ix = 0;
10269 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10270 ix, per_cu_iter);
10271 ++ix)
10272 {
10273 recursively_compute_inclusions (&result_symtabs, all_children,
10274 all_type_symtabs, per_cu_iter,
10275 cust);
10276 }
10277
10278 /* Now we have a transitive closure of all the included symtabs. */
10279 len = result_symtabs.size ();
10280 cust->includes
10281 = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10282 struct compunit_symtab *, len + 1);
10283 memcpy (cust->includes, result_symtabs.data (),
10284 len * sizeof (compunit_symtab *));
10285 cust->includes[len] = NULL;
10286
10287 htab_delete (all_children);
10288 htab_delete (all_type_symtabs);
10289 }
10290 }
10291
10292 /* Compute the 'includes' field for the symtabs of all the CUs we just
10293 read. */
10294
10295 static void
10296 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10297 {
10298 for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10299 {
10300 if (! iter->is_debug_types)
10301 compute_compunit_symtab_includes (iter);
10302 }
10303
10304 dwarf2_per_objfile->just_read_cus.clear ();
10305 }
10306
10307 /* Generate full symbol information for PER_CU, whose DIEs have
10308 already been loaded into memory. */
10309
10310 static void
10311 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10312 enum language pretend_language)
10313 {
10314 struct dwarf2_cu *cu = per_cu->cu;
10315 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10316 struct objfile *objfile = dwarf2_per_objfile->objfile;
10317 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10318 CORE_ADDR lowpc, highpc;
10319 struct compunit_symtab *cust;
10320 CORE_ADDR baseaddr;
10321 struct block *static_block;
10322 CORE_ADDR addr;
10323
10324 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10325
10326 /* Clear the list here in case something was left over. */
10327 cu->method_list.clear ();
10328
10329 cu->language = pretend_language;
10330 cu->language_defn = language_def (cu->language);
10331
10332 /* Do line number decoding in read_file_scope () */
10333 process_die (cu->dies, cu);
10334
10335 /* For now fudge the Go package. */
10336 if (cu->language == language_go)
10337 fixup_go_packaging (cu);
10338
10339 /* Now that we have processed all the DIEs in the CU, all the types
10340 should be complete, and it should now be safe to compute all of the
10341 physnames. */
10342 compute_delayed_physnames (cu);
10343
10344 if (cu->language == language_rust)
10345 rust_union_quirks (cu);
10346
10347 /* Some compilers don't define a DW_AT_high_pc attribute for the
10348 compilation unit. If the DW_AT_high_pc is missing, synthesize
10349 it, by scanning the DIE's below the compilation unit. */
10350 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10351
10352 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10353 static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
10354
10355 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10356 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10357 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
10358 addrmap to help ensure it has an accurate map of pc values belonging to
10359 this comp unit. */
10360 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10361
10362 cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
10363 SECT_OFF_TEXT (objfile),
10364 0);
10365
10366 if (cust != NULL)
10367 {
10368 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10369
10370 /* Set symtab language to language from DW_AT_language. If the
10371 compilation is from a C file generated by language preprocessors, do
10372 not set the language if it was already deduced by start_subfile. */
10373 if (!(cu->language == language_c
10374 && COMPUNIT_FILETABS (cust)->language != language_unknown))
10375 COMPUNIT_FILETABS (cust)->language = cu->language;
10376
10377 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
10378 produce DW_AT_location with location lists but it can be possibly
10379 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
10380 there were bugs in prologue debug info, fixed later in GCC-4.5
10381 by "unwind info for epilogues" patch (which is not directly related).
10382
10383 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10384 needed, it would be wrong due to missing DW_AT_producer there.
10385
10386 Still one can confuse GDB by using non-standard GCC compilation
10387 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10388 */
10389 if (cu->has_loclist && gcc_4_minor >= 5)
10390 cust->locations_valid = 1;
10391
10392 if (gcc_4_minor >= 5)
10393 cust->epilogue_unwind_valid = 1;
10394
10395 cust->call_site_htab = cu->call_site_htab;
10396 }
10397
10398 if (dwarf2_per_objfile->using_index)
10399 per_cu->v.quick->compunit_symtab = cust;
10400 else
10401 {
10402 struct partial_symtab *pst = per_cu->v.psymtab;
10403 pst->compunit_symtab = cust;
10404 pst->readin = 1;
10405 }
10406
10407 /* Push it for inclusion processing later. */
10408 dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10409
10410 /* Not needed any more. */
10411 cu->reset_builder ();
10412 }
10413
10414 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10415 already been loaded into memory. */
10416
10417 static void
10418 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10419 enum language pretend_language)
10420 {
10421 struct dwarf2_cu *cu = per_cu->cu;
10422 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10423 struct objfile *objfile = dwarf2_per_objfile->objfile;
10424 struct compunit_symtab *cust;
10425 struct signatured_type *sig_type;
10426
10427 gdb_assert (per_cu->is_debug_types);
10428 sig_type = (struct signatured_type *) per_cu;
10429
10430 /* Clear the list here in case something was left over. */
10431 cu->method_list.clear ();
10432
10433 cu->language = pretend_language;
10434 cu->language_defn = language_def (cu->language);
10435
10436 /* The symbol tables are set up in read_type_unit_scope. */
10437 process_die (cu->dies, cu);
10438
10439 /* For now fudge the Go package. */
10440 if (cu->language == language_go)
10441 fixup_go_packaging (cu);
10442
10443 /* Now that we have processed all the DIEs in the CU, all the types
10444 should be complete, and it should now be safe to compute all of the
10445 physnames. */
10446 compute_delayed_physnames (cu);
10447
10448 if (cu->language == language_rust)
10449 rust_union_quirks (cu);
10450
10451 /* TUs share symbol tables.
10452 If this is the first TU to use this symtab, complete the construction
10453 of it with end_expandable_symtab. Otherwise, complete the addition of
10454 this TU's symbols to the existing symtab. */
10455 if (sig_type->type_unit_group->compunit_symtab == NULL)
10456 {
10457 buildsym_compunit *builder = cu->get_builder ();
10458 cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10459 sig_type->type_unit_group->compunit_symtab = cust;
10460
10461 if (cust != NULL)
10462 {
10463 /* Set symtab language to language from DW_AT_language. If the
10464 compilation is from a C file generated by language preprocessors,
10465 do not set the language if it was already deduced by
10466 start_subfile. */
10467 if (!(cu->language == language_c
10468 && COMPUNIT_FILETABS (cust)->language != language_c))
10469 COMPUNIT_FILETABS (cust)->language = cu->language;
10470 }
10471 }
10472 else
10473 {
10474 cu->get_builder ()->augment_type_symtab ();
10475 cust = sig_type->type_unit_group->compunit_symtab;
10476 }
10477
10478 if (dwarf2_per_objfile->using_index)
10479 per_cu->v.quick->compunit_symtab = cust;
10480 else
10481 {
10482 struct partial_symtab *pst = per_cu->v.psymtab;
10483 pst->compunit_symtab = cust;
10484 pst->readin = 1;
10485 }
10486
10487 /* Not needed any more. */
10488 cu->reset_builder ();
10489 }
10490
10491 /* Process an imported unit DIE. */
10492
10493 static void
10494 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10495 {
10496 struct attribute *attr;
10497
10498 /* For now we don't handle imported units in type units. */
10499 if (cu->per_cu->is_debug_types)
10500 {
10501 error (_("Dwarf Error: DW_TAG_imported_unit is not"
10502 " supported in type units [in module %s]"),
10503 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10504 }
10505
10506 attr = dwarf2_attr (die, DW_AT_import, cu);
10507 if (attr != NULL)
10508 {
10509 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10510 bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10511 dwarf2_per_cu_data *per_cu
10512 = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10513 cu->per_cu->dwarf2_per_objfile);
10514
10515 /* If necessary, add it to the queue and load its DIEs. */
10516 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10517 load_full_comp_unit (per_cu, false, cu->language);
10518
10519 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10520 per_cu);
10521 }
10522 }
10523
10524 /* RAII object that represents a process_die scope: i.e.,
10525 starts/finishes processing a DIE. */
10526 class process_die_scope
10527 {
10528 public:
10529 process_die_scope (die_info *die, dwarf2_cu *cu)
10530 : m_die (die), m_cu (cu)
10531 {
10532 /* We should only be processing DIEs not already in process. */
10533 gdb_assert (!m_die->in_process);
10534 m_die->in_process = true;
10535 }
10536
10537 ~process_die_scope ()
10538 {
10539 m_die->in_process = false;
10540
10541 /* If we're done processing the DIE for the CU that owns the line
10542 header, we don't need the line header anymore. */
10543 if (m_cu->line_header_die_owner == m_die)
10544 {
10545 delete m_cu->line_header;
10546 m_cu->line_header = NULL;
10547 m_cu->line_header_die_owner = NULL;
10548 }
10549 }
10550
10551 private:
10552 die_info *m_die;
10553 dwarf2_cu *m_cu;
10554 };
10555
10556 /* Process a die and its children. */
10557
10558 static void
10559 process_die (struct die_info *die, struct dwarf2_cu *cu)
10560 {
10561 process_die_scope scope (die, cu);
10562
10563 switch (die->tag)
10564 {
10565 case DW_TAG_padding:
10566 break;
10567 case DW_TAG_compile_unit:
10568 case DW_TAG_partial_unit:
10569 read_file_scope (die, cu);
10570 break;
10571 case DW_TAG_type_unit:
10572 read_type_unit_scope (die, cu);
10573 break;
10574 case DW_TAG_subprogram:
10575 case DW_TAG_inlined_subroutine:
10576 read_func_scope (die, cu);
10577 break;
10578 case DW_TAG_lexical_block:
10579 case DW_TAG_try_block:
10580 case DW_TAG_catch_block:
10581 read_lexical_block_scope (die, cu);
10582 break;
10583 case DW_TAG_call_site:
10584 case DW_TAG_GNU_call_site:
10585 read_call_site_scope (die, cu);
10586 break;
10587 case DW_TAG_class_type:
10588 case DW_TAG_interface_type:
10589 case DW_TAG_structure_type:
10590 case DW_TAG_union_type:
10591 process_structure_scope (die, cu);
10592 break;
10593 case DW_TAG_enumeration_type:
10594 process_enumeration_scope (die, cu);
10595 break;
10596
10597 /* These dies have a type, but processing them does not create
10598 a symbol or recurse to process the children. Therefore we can
10599 read them on-demand through read_type_die. */
10600 case DW_TAG_subroutine_type:
10601 case DW_TAG_set_type:
10602 case DW_TAG_array_type:
10603 case DW_TAG_pointer_type:
10604 case DW_TAG_ptr_to_member_type:
10605 case DW_TAG_reference_type:
10606 case DW_TAG_rvalue_reference_type:
10607 case DW_TAG_string_type:
10608 break;
10609
10610 case DW_TAG_base_type:
10611 case DW_TAG_subrange_type:
10612 case DW_TAG_typedef:
10613 /* Add a typedef symbol for the type definition, if it has a
10614 DW_AT_name. */
10615 new_symbol (die, read_type_die (die, cu), cu);
10616 break;
10617 case DW_TAG_common_block:
10618 read_common_block (die, cu);
10619 break;
10620 case DW_TAG_common_inclusion:
10621 break;
10622 case DW_TAG_namespace:
10623 cu->processing_has_namespace_info = true;
10624 read_namespace (die, cu);
10625 break;
10626 case DW_TAG_module:
10627 cu->processing_has_namespace_info = true;
10628 read_module (die, cu);
10629 break;
10630 case DW_TAG_imported_declaration:
10631 cu->processing_has_namespace_info = true;
10632 if (read_namespace_alias (die, cu))
10633 break;
10634 /* The declaration is not a global namespace alias. */
10635 /* Fall through. */
10636 case DW_TAG_imported_module:
10637 cu->processing_has_namespace_info = true;
10638 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10639 || cu->language != language_fortran))
10640 complaint (_("Tag '%s' has unexpected children"),
10641 dwarf_tag_name (die->tag));
10642 read_import_statement (die, cu);
10643 break;
10644
10645 case DW_TAG_imported_unit:
10646 process_imported_unit_die (die, cu);
10647 break;
10648
10649 case DW_TAG_variable:
10650 read_variable (die, cu);
10651 break;
10652
10653 default:
10654 new_symbol (die, NULL, cu);
10655 break;
10656 }
10657 }
10658 \f
10659 /* DWARF name computation. */
10660
10661 /* A helper function for dwarf2_compute_name which determines whether DIE
10662 needs to have the name of the scope prepended to the name listed in the
10663 die. */
10664
10665 static int
10666 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10667 {
10668 struct attribute *attr;
10669
10670 switch (die->tag)
10671 {
10672 case DW_TAG_namespace:
10673 case DW_TAG_typedef:
10674 case DW_TAG_class_type:
10675 case DW_TAG_interface_type:
10676 case DW_TAG_structure_type:
10677 case DW_TAG_union_type:
10678 case DW_TAG_enumeration_type:
10679 case DW_TAG_enumerator:
10680 case DW_TAG_subprogram:
10681 case DW_TAG_inlined_subroutine:
10682 case DW_TAG_member:
10683 case DW_TAG_imported_declaration:
10684 return 1;
10685
10686 case DW_TAG_variable:
10687 case DW_TAG_constant:
10688 /* We only need to prefix "globally" visible variables. These include
10689 any variable marked with DW_AT_external or any variable that
10690 lives in a namespace. [Variables in anonymous namespaces
10691 require prefixing, but they are not DW_AT_external.] */
10692
10693 if (dwarf2_attr (die, DW_AT_specification, cu))
10694 {
10695 struct dwarf2_cu *spec_cu = cu;
10696
10697 return die_needs_namespace (die_specification (die, &spec_cu),
10698 spec_cu);
10699 }
10700
10701 attr = dwarf2_attr (die, DW_AT_external, cu);
10702 if (attr == NULL && die->parent->tag != DW_TAG_namespace
10703 && die->parent->tag != DW_TAG_module)
10704 return 0;
10705 /* A variable in a lexical block of some kind does not need a
10706 namespace, even though in C++ such variables may be external
10707 and have a mangled name. */
10708 if (die->parent->tag == DW_TAG_lexical_block
10709 || die->parent->tag == DW_TAG_try_block
10710 || die->parent->tag == DW_TAG_catch_block
10711 || die->parent->tag == DW_TAG_subprogram)
10712 return 0;
10713 return 1;
10714
10715 default:
10716 return 0;
10717 }
10718 }
10719
10720 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10721 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
10722 defined for the given DIE. */
10723
10724 static struct attribute *
10725 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10726 {
10727 struct attribute *attr;
10728
10729 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10730 if (attr == NULL)
10731 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10732
10733 return attr;
10734 }
10735
10736 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10737 or DW_AT_MIPS_linkage_name. Returns NULL if the attribute is not
10738 defined for the given DIE. */
10739
10740 static const char *
10741 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10742 {
10743 const char *linkage_name;
10744
10745 linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10746 if (linkage_name == NULL)
10747 linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10748
10749 return linkage_name;
10750 }
10751
10752 /* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
10753 compute the physname for the object, which include a method's:
10754 - formal parameters (C++),
10755 - receiver type (Go),
10756
10757 The term "physname" is a bit confusing.
10758 For C++, for example, it is the demangled name.
10759 For Go, for example, it's the mangled name.
10760
10761 For Ada, return the DIE's linkage name rather than the fully qualified
10762 name. PHYSNAME is ignored..
10763
10764 The result is allocated on the objfile_obstack and canonicalized. */
10765
10766 static const char *
10767 dwarf2_compute_name (const char *name,
10768 struct die_info *die, struct dwarf2_cu *cu,
10769 int physname)
10770 {
10771 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10772
10773 if (name == NULL)
10774 name = dwarf2_name (die, cu);
10775
10776 /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10777 but otherwise compute it by typename_concat inside GDB.
10778 FIXME: Actually this is not really true, or at least not always true.
10779 It's all very confusing. SYMBOL_SET_NAMES doesn't try to demangle
10780 Fortran names because there is no mangling standard. So new_symbol
10781 will set the demangled name to the result of dwarf2_full_name, and it is
10782 the demangled name that GDB uses if it exists. */
10783 if (cu->language == language_ada
10784 || (cu->language == language_fortran && physname))
10785 {
10786 /* For Ada unit, we prefer the linkage name over the name, as
10787 the former contains the exported name, which the user expects
10788 to be able to reference. Ideally, we want the user to be able
10789 to reference this entity using either natural or linkage name,
10790 but we haven't started looking at this enhancement yet. */
10791 const char *linkage_name = dw2_linkage_name (die, cu);
10792
10793 if (linkage_name != NULL)
10794 return linkage_name;
10795 }
10796
10797 /* These are the only languages we know how to qualify names in. */
10798 if (name != NULL
10799 && (cu->language == language_cplus
10800 || cu->language == language_fortran || cu->language == language_d
10801 || cu->language == language_rust))
10802 {
10803 if (die_needs_namespace (die, cu))
10804 {
10805 const char *prefix;
10806 const char *canonical_name = NULL;
10807
10808 string_file buf;
10809
10810 prefix = determine_prefix (die, cu);
10811 if (*prefix != '\0')
10812 {
10813 char *prefixed_name = typename_concat (NULL, prefix, name,
10814 physname, cu);
10815
10816 buf.puts (prefixed_name);
10817 xfree (prefixed_name);
10818 }
10819 else
10820 buf.puts (name);
10821
10822 /* Template parameters may be specified in the DIE's DW_AT_name, or
10823 as children with DW_TAG_template_type_param or
10824 DW_TAG_value_type_param. If the latter, add them to the name
10825 here. If the name already has template parameters, then
10826 skip this step; some versions of GCC emit both, and
10827 it is more efficient to use the pre-computed name.
10828
10829 Something to keep in mind about this process: it is very
10830 unlikely, or in some cases downright impossible, to produce
10831 something that will match the mangled name of a function.
10832 If the definition of the function has the same debug info,
10833 we should be able to match up with it anyway. But fallbacks
10834 using the minimal symbol, for instance to find a method
10835 implemented in a stripped copy of libstdc++, will not work.
10836 If we do not have debug info for the definition, we will have to
10837 match them up some other way.
10838
10839 When we do name matching there is a related problem with function
10840 templates; two instantiated function templates are allowed to
10841 differ only by their return types, which we do not add here. */
10842
10843 if (cu->language == language_cplus && strchr (name, '<') == NULL)
10844 {
10845 struct attribute *attr;
10846 struct die_info *child;
10847 int first = 1;
10848
10849 die->building_fullname = 1;
10850
10851 for (child = die->child; child != NULL; child = child->sibling)
10852 {
10853 struct type *type;
10854 LONGEST value;
10855 const gdb_byte *bytes;
10856 struct dwarf2_locexpr_baton *baton;
10857 struct value *v;
10858
10859 if (child->tag != DW_TAG_template_type_param
10860 && child->tag != DW_TAG_template_value_param)
10861 continue;
10862
10863 if (first)
10864 {
10865 buf.puts ("<");
10866 first = 0;
10867 }
10868 else
10869 buf.puts (", ");
10870
10871 attr = dwarf2_attr (child, DW_AT_type, cu);
10872 if (attr == NULL)
10873 {
10874 complaint (_("template parameter missing DW_AT_type"));
10875 buf.puts ("UNKNOWN_TYPE");
10876 continue;
10877 }
10878 type = die_type (child, cu);
10879
10880 if (child->tag == DW_TAG_template_type_param)
10881 {
10882 c_print_type (type, "", &buf, -1, 0, cu->language,
10883 &type_print_raw_options);
10884 continue;
10885 }
10886
10887 attr = dwarf2_attr (child, DW_AT_const_value, cu);
10888 if (attr == NULL)
10889 {
10890 complaint (_("template parameter missing "
10891 "DW_AT_const_value"));
10892 buf.puts ("UNKNOWN_VALUE");
10893 continue;
10894 }
10895
10896 dwarf2_const_value_attr (attr, type, name,
10897 &cu->comp_unit_obstack, cu,
10898 &value, &bytes, &baton);
10899
10900 if (TYPE_NOSIGN (type))
10901 /* GDB prints characters as NUMBER 'CHAR'. If that's
10902 changed, this can use value_print instead. */
10903 c_printchar (value, type, &buf);
10904 else
10905 {
10906 struct value_print_options opts;
10907
10908 if (baton != NULL)
10909 v = dwarf2_evaluate_loc_desc (type, NULL,
10910 baton->data,
10911 baton->size,
10912 baton->per_cu);
10913 else if (bytes != NULL)
10914 {
10915 v = allocate_value (type);
10916 memcpy (value_contents_writeable (v), bytes,
10917 TYPE_LENGTH (type));
10918 }
10919 else
10920 v = value_from_longest (type, value);
10921
10922 /* Specify decimal so that we do not depend on
10923 the radix. */
10924 get_formatted_print_options (&opts, 'd');
10925 opts.raw = 1;
10926 value_print (v, &buf, &opts);
10927 release_value (v);
10928 }
10929 }
10930
10931 die->building_fullname = 0;
10932
10933 if (!first)
10934 {
10935 /* Close the argument list, with a space if necessary
10936 (nested templates). */
10937 if (!buf.empty () && buf.string ().back () == '>')
10938 buf.puts (" >");
10939 else
10940 buf.puts (">");
10941 }
10942 }
10943
10944 /* For C++ methods, append formal parameter type
10945 information, if PHYSNAME. */
10946
10947 if (physname && die->tag == DW_TAG_subprogram
10948 && cu->language == language_cplus)
10949 {
10950 struct type *type = read_type_die (die, cu);
10951
10952 c_type_print_args (type, &buf, 1, cu->language,
10953 &type_print_raw_options);
10954
10955 if (cu->language == language_cplus)
10956 {
10957 /* Assume that an artificial first parameter is
10958 "this", but do not crash if it is not. RealView
10959 marks unnamed (and thus unused) parameters as
10960 artificial; there is no way to differentiate
10961 the two cases. */
10962 if (TYPE_NFIELDS (type) > 0
10963 && TYPE_FIELD_ARTIFICIAL (type, 0)
10964 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10965 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10966 0))))
10967 buf.puts (" const");
10968 }
10969 }
10970
10971 const std::string &intermediate_name = buf.string ();
10972
10973 if (cu->language == language_cplus)
10974 canonical_name
10975 = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
10976 &objfile->per_bfd->storage_obstack);
10977
10978 /* If we only computed INTERMEDIATE_NAME, or if
10979 INTERMEDIATE_NAME is already canonical, then we need to
10980 copy it to the appropriate obstack. */
10981 if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
10982 name = ((const char *)
10983 obstack_copy0 (&objfile->per_bfd->storage_obstack,
10984 intermediate_name.c_str (),
10985 intermediate_name.length ()));
10986 else
10987 name = canonical_name;
10988 }
10989 }
10990
10991 return name;
10992 }
10993
10994 /* Return the fully qualified name of DIE, based on its DW_AT_name.
10995 If scope qualifiers are appropriate they will be added. The result
10996 will be allocated on the storage_obstack, or NULL if the DIE does
10997 not have a name. NAME may either be from a previous call to
10998 dwarf2_name or NULL.
10999
11000 The output string will be canonicalized (if C++). */
11001
11002 static const char *
11003 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11004 {
11005 return dwarf2_compute_name (name, die, cu, 0);
11006 }
11007
11008 /* Construct a physname for the given DIE in CU. NAME may either be
11009 from a previous call to dwarf2_name or NULL. The result will be
11010 allocated on the objfile_objstack or NULL if the DIE does not have a
11011 name.
11012
11013 The output string will be canonicalized (if C++). */
11014
11015 static const char *
11016 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11017 {
11018 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11019 const char *retval, *mangled = NULL, *canon = NULL;
11020 int need_copy = 1;
11021
11022 /* In this case dwarf2_compute_name is just a shortcut not building anything
11023 on its own. */
11024 if (!die_needs_namespace (die, cu))
11025 return dwarf2_compute_name (name, die, cu, 1);
11026
11027 mangled = dw2_linkage_name (die, cu);
11028
11029 /* rustc emits invalid values for DW_AT_linkage_name. Ignore these.
11030 See https://github.com/rust-lang/rust/issues/32925. */
11031 if (cu->language == language_rust && mangled != NULL
11032 && strchr (mangled, '{') != NULL)
11033 mangled = NULL;
11034
11035 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11036 has computed. */
11037 gdb::unique_xmalloc_ptr<char> demangled;
11038 if (mangled != NULL)
11039 {
11040
11041 if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11042 {
11043 /* Do nothing (do not demangle the symbol name). */
11044 }
11045 else if (cu->language == language_go)
11046 {
11047 /* This is a lie, but we already lie to the caller new_symbol.
11048 new_symbol assumes we return the mangled name.
11049 This just undoes that lie until things are cleaned up. */
11050 }
11051 else
11052 {
11053 /* Use DMGL_RET_DROP for C++ template functions to suppress
11054 their return type. It is easier for GDB users to search
11055 for such functions as `name(params)' than `long name(params)'.
11056 In such case the minimal symbol names do not match the full
11057 symbol names but for template functions there is never a need
11058 to look up their definition from their declaration so
11059 the only disadvantage remains the minimal symbol variant
11060 `long name(params)' does not have the proper inferior type. */
11061 demangled.reset (gdb_demangle (mangled,
11062 (DMGL_PARAMS | DMGL_ANSI
11063 | DMGL_RET_DROP)));
11064 }
11065 if (demangled)
11066 canon = demangled.get ();
11067 else
11068 {
11069 canon = mangled;
11070 need_copy = 0;
11071 }
11072 }
11073
11074 if (canon == NULL || check_physname)
11075 {
11076 const char *physname = dwarf2_compute_name (name, die, cu, 1);
11077
11078 if (canon != NULL && strcmp (physname, canon) != 0)
11079 {
11080 /* It may not mean a bug in GDB. The compiler could also
11081 compute DW_AT_linkage_name incorrectly. But in such case
11082 GDB would need to be bug-to-bug compatible. */
11083
11084 complaint (_("Computed physname <%s> does not match demangled <%s> "
11085 "(from linkage <%s>) - DIE at %s [in module %s]"),
11086 physname, canon, mangled, sect_offset_str (die->sect_off),
11087 objfile_name (objfile));
11088
11089 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11090 is available here - over computed PHYSNAME. It is safer
11091 against both buggy GDB and buggy compilers. */
11092
11093 retval = canon;
11094 }
11095 else
11096 {
11097 retval = physname;
11098 need_copy = 0;
11099 }
11100 }
11101 else
11102 retval = canon;
11103
11104 if (need_copy)
11105 retval = ((const char *)
11106 obstack_copy0 (&objfile->per_bfd->storage_obstack,
11107 retval, strlen (retval)));
11108
11109 return retval;
11110 }
11111
11112 /* Inspect DIE in CU for a namespace alias. If one exists, record
11113 a new symbol for it.
11114
11115 Returns 1 if a namespace alias was recorded, 0 otherwise. */
11116
11117 static int
11118 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11119 {
11120 struct attribute *attr;
11121
11122 /* If the die does not have a name, this is not a namespace
11123 alias. */
11124 attr = dwarf2_attr (die, DW_AT_name, cu);
11125 if (attr != NULL)
11126 {
11127 int num;
11128 struct die_info *d = die;
11129 struct dwarf2_cu *imported_cu = cu;
11130
11131 /* If the compiler has nested DW_AT_imported_declaration DIEs,
11132 keep inspecting DIEs until we hit the underlying import. */
11133 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11134 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11135 {
11136 attr = dwarf2_attr (d, DW_AT_import, cu);
11137 if (attr == NULL)
11138 break;
11139
11140 d = follow_die_ref (d, attr, &imported_cu);
11141 if (d->tag != DW_TAG_imported_declaration)
11142 break;
11143 }
11144
11145 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11146 {
11147 complaint (_("DIE at %s has too many recursively imported "
11148 "declarations"), sect_offset_str (d->sect_off));
11149 return 0;
11150 }
11151
11152 if (attr != NULL)
11153 {
11154 struct type *type;
11155 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11156
11157 type = get_die_type_at_offset (sect_off, cu->per_cu);
11158 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11159 {
11160 /* This declaration is a global namespace alias. Add
11161 a symbol for it whose type is the aliased namespace. */
11162 new_symbol (die, type, cu);
11163 return 1;
11164 }
11165 }
11166 }
11167
11168 return 0;
11169 }
11170
11171 /* Return the using directives repository (global or local?) to use in the
11172 current context for CU.
11173
11174 For Ada, imported declarations can materialize renamings, which *may* be
11175 global. However it is impossible (for now?) in DWARF to distinguish
11176 "external" imported declarations and "static" ones. As all imported
11177 declarations seem to be static in all other languages, make them all CU-wide
11178 global only in Ada. */
11179
11180 static struct using_direct **
11181 using_directives (struct dwarf2_cu *cu)
11182 {
11183 if (cu->language == language_ada
11184 && cu->get_builder ()->outermost_context_p ())
11185 return cu->get_builder ()->get_global_using_directives ();
11186 else
11187 return cu->get_builder ()->get_local_using_directives ();
11188 }
11189
11190 /* Read the import statement specified by the given die and record it. */
11191
11192 static void
11193 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11194 {
11195 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11196 struct attribute *import_attr;
11197 struct die_info *imported_die, *child_die;
11198 struct dwarf2_cu *imported_cu;
11199 const char *imported_name;
11200 const char *imported_name_prefix;
11201 const char *canonical_name;
11202 const char *import_alias;
11203 const char *imported_declaration = NULL;
11204 const char *import_prefix;
11205 std::vector<const char *> excludes;
11206
11207 import_attr = dwarf2_attr (die, DW_AT_import, cu);
11208 if (import_attr == NULL)
11209 {
11210 complaint (_("Tag '%s' has no DW_AT_import"),
11211 dwarf_tag_name (die->tag));
11212 return;
11213 }
11214
11215 imported_cu = cu;
11216 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11217 imported_name = dwarf2_name (imported_die, imported_cu);
11218 if (imported_name == NULL)
11219 {
11220 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11221
11222 The import in the following code:
11223 namespace A
11224 {
11225 typedef int B;
11226 }
11227
11228 int main ()
11229 {
11230 using A::B;
11231 B b;
11232 return b;
11233 }
11234
11235 ...
11236 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11237 <52> DW_AT_decl_file : 1
11238 <53> DW_AT_decl_line : 6
11239 <54> DW_AT_import : <0x75>
11240 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11241 <59> DW_AT_name : B
11242 <5b> DW_AT_decl_file : 1
11243 <5c> DW_AT_decl_line : 2
11244 <5d> DW_AT_type : <0x6e>
11245 ...
11246 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11247 <76> DW_AT_byte_size : 4
11248 <77> DW_AT_encoding : 5 (signed)
11249
11250 imports the wrong die ( 0x75 instead of 0x58 ).
11251 This case will be ignored until the gcc bug is fixed. */
11252 return;
11253 }
11254
11255 /* Figure out the local name after import. */
11256 import_alias = dwarf2_name (die, cu);
11257
11258 /* Figure out where the statement is being imported to. */
11259 import_prefix = determine_prefix (die, cu);
11260
11261 /* Figure out what the scope of the imported die is and prepend it
11262 to the name of the imported die. */
11263 imported_name_prefix = determine_prefix (imported_die, imported_cu);
11264
11265 if (imported_die->tag != DW_TAG_namespace
11266 && imported_die->tag != DW_TAG_module)
11267 {
11268 imported_declaration = imported_name;
11269 canonical_name = imported_name_prefix;
11270 }
11271 else if (strlen (imported_name_prefix) > 0)
11272 canonical_name = obconcat (&objfile->objfile_obstack,
11273 imported_name_prefix,
11274 (cu->language == language_d ? "." : "::"),
11275 imported_name, (char *) NULL);
11276 else
11277 canonical_name = imported_name;
11278
11279 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11280 for (child_die = die->child; child_die && child_die->tag;
11281 child_die = sibling_die (child_die))
11282 {
11283 /* DWARF-4: A Fortran use statement with a “rename list” may be
11284 represented by an imported module entry with an import attribute
11285 referring to the module and owned entries corresponding to those
11286 entities that are renamed as part of being imported. */
11287
11288 if (child_die->tag != DW_TAG_imported_declaration)
11289 {
11290 complaint (_("child DW_TAG_imported_declaration expected "
11291 "- DIE at %s [in module %s]"),
11292 sect_offset_str (child_die->sect_off),
11293 objfile_name (objfile));
11294 continue;
11295 }
11296
11297 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11298 if (import_attr == NULL)
11299 {
11300 complaint (_("Tag '%s' has no DW_AT_import"),
11301 dwarf_tag_name (child_die->tag));
11302 continue;
11303 }
11304
11305 imported_cu = cu;
11306 imported_die = follow_die_ref_or_sig (child_die, import_attr,
11307 &imported_cu);
11308 imported_name = dwarf2_name (imported_die, imported_cu);
11309 if (imported_name == NULL)
11310 {
11311 complaint (_("child DW_TAG_imported_declaration has unknown "
11312 "imported name - DIE at %s [in module %s]"),
11313 sect_offset_str (child_die->sect_off),
11314 objfile_name (objfile));
11315 continue;
11316 }
11317
11318 excludes.push_back (imported_name);
11319
11320 process_die (child_die, cu);
11321 }
11322
11323 add_using_directive (using_directives (cu),
11324 import_prefix,
11325 canonical_name,
11326 import_alias,
11327 imported_declaration,
11328 excludes,
11329 0,
11330 &objfile->objfile_obstack);
11331 }
11332
11333 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11334 types, but gives them a size of zero. Starting with version 14,
11335 ICC is compatible with GCC. */
11336
11337 static bool
11338 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11339 {
11340 if (!cu->checked_producer)
11341 check_producer (cu);
11342
11343 return cu->producer_is_icc_lt_14;
11344 }
11345
11346 /* ICC generates a DW_AT_type for C void functions. This was observed on
11347 ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11348 which says that void functions should not have a DW_AT_type. */
11349
11350 static bool
11351 producer_is_icc (struct dwarf2_cu *cu)
11352 {
11353 if (!cu->checked_producer)
11354 check_producer (cu);
11355
11356 return cu->producer_is_icc;
11357 }
11358
11359 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11360 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11361 this, it was first present in GCC release 4.3.0. */
11362
11363 static bool
11364 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11365 {
11366 if (!cu->checked_producer)
11367 check_producer (cu);
11368
11369 return cu->producer_is_gcc_lt_4_3;
11370 }
11371
11372 static file_and_directory
11373 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11374 {
11375 file_and_directory res;
11376
11377 /* Find the filename. Do not use dwarf2_name here, since the filename
11378 is not a source language identifier. */
11379 res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11380 res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11381
11382 if (res.comp_dir == NULL
11383 && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11384 && IS_ABSOLUTE_PATH (res.name))
11385 {
11386 res.comp_dir_storage = ldirname (res.name);
11387 if (!res.comp_dir_storage.empty ())
11388 res.comp_dir = res.comp_dir_storage.c_str ();
11389 }
11390 if (res.comp_dir != NULL)
11391 {
11392 /* Irix 6.2 native cc prepends <machine>.: to the compilation
11393 directory, get rid of it. */
11394 const char *cp = strchr (res.comp_dir, ':');
11395
11396 if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11397 res.comp_dir = cp + 1;
11398 }
11399
11400 if (res.name == NULL)
11401 res.name = "<unknown>";
11402
11403 return res;
11404 }
11405
11406 /* Handle DW_AT_stmt_list for a compilation unit.
11407 DIE is the DW_TAG_compile_unit die for CU.
11408 COMP_DIR is the compilation directory. LOWPC is passed to
11409 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
11410
11411 static void
11412 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11413 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11414 {
11415 struct dwarf2_per_objfile *dwarf2_per_objfile
11416 = cu->per_cu->dwarf2_per_objfile;
11417 struct objfile *objfile = dwarf2_per_objfile->objfile;
11418 struct attribute *attr;
11419 struct line_header line_header_local;
11420 hashval_t line_header_local_hash;
11421 void **slot;
11422 int decode_mapping;
11423
11424 gdb_assert (! cu->per_cu->is_debug_types);
11425
11426 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11427 if (attr == NULL)
11428 return;
11429
11430 sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11431
11432 /* The line header hash table is only created if needed (it exists to
11433 prevent redundant reading of the line table for partial_units).
11434 If we're given a partial_unit, we'll need it. If we're given a
11435 compile_unit, then use the line header hash table if it's already
11436 created, but don't create one just yet. */
11437
11438 if (dwarf2_per_objfile->line_header_hash == NULL
11439 && die->tag == DW_TAG_partial_unit)
11440 {
11441 dwarf2_per_objfile->line_header_hash
11442 = htab_create_alloc_ex (127, line_header_hash_voidp,
11443 line_header_eq_voidp,
11444 free_line_header_voidp,
11445 &objfile->objfile_obstack,
11446 hashtab_obstack_allocate,
11447 dummy_obstack_deallocate);
11448 }
11449
11450 line_header_local.sect_off = line_offset;
11451 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11452 line_header_local_hash = line_header_hash (&line_header_local);
11453 if (dwarf2_per_objfile->line_header_hash != NULL)
11454 {
11455 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11456 &line_header_local,
11457 line_header_local_hash, NO_INSERT);
11458
11459 /* For DW_TAG_compile_unit we need info like symtab::linetable which
11460 is not present in *SLOT (since if there is something in *SLOT then
11461 it will be for a partial_unit). */
11462 if (die->tag == DW_TAG_partial_unit && slot != NULL)
11463 {
11464 gdb_assert (*slot != NULL);
11465 cu->line_header = (struct line_header *) *slot;
11466 return;
11467 }
11468 }
11469
11470 /* dwarf_decode_line_header does not yet provide sufficient information.
11471 We always have to call also dwarf_decode_lines for it. */
11472 line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11473 if (lh == NULL)
11474 return;
11475
11476 cu->line_header = lh.release ();
11477 cu->line_header_die_owner = die;
11478
11479 if (dwarf2_per_objfile->line_header_hash == NULL)
11480 slot = NULL;
11481 else
11482 {
11483 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11484 &line_header_local,
11485 line_header_local_hash, INSERT);
11486 gdb_assert (slot != NULL);
11487 }
11488 if (slot != NULL && *slot == NULL)
11489 {
11490 /* This newly decoded line number information unit will be owned
11491 by line_header_hash hash table. */
11492 *slot = cu->line_header;
11493 cu->line_header_die_owner = NULL;
11494 }
11495 else
11496 {
11497 /* We cannot free any current entry in (*slot) as that struct line_header
11498 may be already used by multiple CUs. Create only temporary decoded
11499 line_header for this CU - it may happen at most once for each line
11500 number information unit. And if we're not using line_header_hash
11501 then this is what we want as well. */
11502 gdb_assert (die->tag != DW_TAG_partial_unit);
11503 }
11504 decode_mapping = (die->tag != DW_TAG_partial_unit);
11505 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11506 decode_mapping);
11507
11508 }
11509
11510 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
11511
11512 static void
11513 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11514 {
11515 struct dwarf2_per_objfile *dwarf2_per_objfile
11516 = cu->per_cu->dwarf2_per_objfile;
11517 struct objfile *objfile = dwarf2_per_objfile->objfile;
11518 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11519 CORE_ADDR lowpc = ((CORE_ADDR) -1);
11520 CORE_ADDR highpc = ((CORE_ADDR) 0);
11521 struct attribute *attr;
11522 struct die_info *child_die;
11523 CORE_ADDR baseaddr;
11524
11525 prepare_one_comp_unit (cu, die, cu->language);
11526 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11527
11528 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11529
11530 /* If we didn't find a lowpc, set it to highpc to avoid complaints
11531 from finish_block. */
11532 if (lowpc == ((CORE_ADDR) -1))
11533 lowpc = highpc;
11534 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11535
11536 file_and_directory fnd = find_file_and_directory (die, cu);
11537
11538 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11539 standardised yet. As a workaround for the language detection we fall
11540 back to the DW_AT_producer string. */
11541 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11542 cu->language = language_opencl;
11543
11544 /* Similar hack for Go. */
11545 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11546 set_cu_language (DW_LANG_Go, cu);
11547
11548 cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
11549
11550 /* Decode line number information if present. We do this before
11551 processing child DIEs, so that the line header table is available
11552 for DW_AT_decl_file. */
11553 handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11554
11555 /* Process all dies in compilation unit. */
11556 if (die->child != NULL)
11557 {
11558 child_die = die->child;
11559 while (child_die && child_die->tag)
11560 {
11561 process_die (child_die, cu);
11562 child_die = sibling_die (child_die);
11563 }
11564 }
11565
11566 /* Decode macro information, if present. Dwarf 2 macro information
11567 refers to information in the line number info statement program
11568 header, so we can only read it if we've read the header
11569 successfully. */
11570 attr = dwarf2_attr (die, DW_AT_macros, cu);
11571 if (attr == NULL)
11572 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11573 if (attr && cu->line_header)
11574 {
11575 if (dwarf2_attr (die, DW_AT_macro_info, cu))
11576 complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11577
11578 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11579 }
11580 else
11581 {
11582 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11583 if (attr && cu->line_header)
11584 {
11585 unsigned int macro_offset = DW_UNSND (attr);
11586
11587 dwarf_decode_macros (cu, macro_offset, 0);
11588 }
11589 }
11590 }
11591
11592 void
11593 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
11594 {
11595 struct type_unit_group *tu_group;
11596 int first_time;
11597 struct attribute *attr;
11598 unsigned int i;
11599 struct signatured_type *sig_type;
11600
11601 gdb_assert (per_cu->is_debug_types);
11602 sig_type = (struct signatured_type *) per_cu;
11603
11604 attr = dwarf2_attr (die, DW_AT_stmt_list, this);
11605
11606 /* If we're using .gdb_index (includes -readnow) then
11607 per_cu->type_unit_group may not have been set up yet. */
11608 if (sig_type->type_unit_group == NULL)
11609 sig_type->type_unit_group = get_type_unit_group (this, attr);
11610 tu_group = sig_type->type_unit_group;
11611
11612 /* If we've already processed this stmt_list there's no real need to
11613 do it again, we could fake it and just recreate the part we need
11614 (file name,index -> symtab mapping). If data shows this optimization
11615 is useful we can do it then. */
11616 first_time = tu_group->compunit_symtab == NULL;
11617
11618 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11619 debug info. */
11620 line_header_up lh;
11621 if (attr != NULL)
11622 {
11623 sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11624 lh = dwarf_decode_line_header (line_offset, this);
11625 }
11626 if (lh == NULL)
11627 {
11628 if (first_time)
11629 start_symtab ("", NULL, 0);
11630 else
11631 {
11632 gdb_assert (tu_group->symtabs == NULL);
11633 gdb_assert (m_builder == nullptr);
11634 struct compunit_symtab *cust = tu_group->compunit_symtab;
11635 m_builder.reset (new struct buildsym_compunit
11636 (COMPUNIT_OBJFILE (cust), "",
11637 COMPUNIT_DIRNAME (cust),
11638 compunit_language (cust),
11639 0, cust));
11640 }
11641 return;
11642 }
11643
11644 line_header = lh.release ();
11645 line_header_die_owner = die;
11646
11647 if (first_time)
11648 {
11649 struct compunit_symtab *cust = start_symtab ("", NULL, 0);
11650
11651 /* Note: We don't assign tu_group->compunit_symtab yet because we're
11652 still initializing it, and our caller (a few levels up)
11653 process_full_type_unit still needs to know if this is the first
11654 time. */
11655
11656 tu_group->num_symtabs = line_header->file_names.size ();
11657 tu_group->symtabs = XNEWVEC (struct symtab *,
11658 line_header->file_names.size ());
11659
11660 for (i = 0; i < line_header->file_names.size (); ++i)
11661 {
11662 file_entry &fe = line_header->file_names[i];
11663
11664 dwarf2_start_subfile (this, fe.name,
11665 fe.include_dir (line_header));
11666 buildsym_compunit *b = get_builder ();
11667 if (b->get_current_subfile ()->symtab == NULL)
11668 {
11669 /* NOTE: start_subfile will recognize when it's been
11670 passed a file it has already seen. So we can't
11671 assume there's a simple mapping from
11672 cu->line_header->file_names to subfiles, plus
11673 cu->line_header->file_names may contain dups. */
11674 b->get_current_subfile ()->symtab
11675 = allocate_symtab (cust, b->get_current_subfile ()->name);
11676 }
11677
11678 fe.symtab = b->get_current_subfile ()->symtab;
11679 tu_group->symtabs[i] = fe.symtab;
11680 }
11681 }
11682 else
11683 {
11684 gdb_assert (m_builder == nullptr);
11685 struct compunit_symtab *cust = tu_group->compunit_symtab;
11686 m_builder.reset (new struct buildsym_compunit
11687 (COMPUNIT_OBJFILE (cust), "",
11688 COMPUNIT_DIRNAME (cust),
11689 compunit_language (cust),
11690 0, cust));
11691
11692 for (i = 0; i < line_header->file_names.size (); ++i)
11693 {
11694 file_entry &fe = line_header->file_names[i];
11695
11696 fe.symtab = tu_group->symtabs[i];
11697 }
11698 }
11699
11700 /* The main symtab is allocated last. Type units don't have DW_AT_name
11701 so they don't have a "real" (so to speak) symtab anyway.
11702 There is later code that will assign the main symtab to all symbols
11703 that don't have one. We need to handle the case of a symbol with a
11704 missing symtab (DW_AT_decl_file) anyway. */
11705 }
11706
11707 /* Process DW_TAG_type_unit.
11708 For TUs we want to skip the first top level sibling if it's not the
11709 actual type being defined by this TU. In this case the first top
11710 level sibling is there to provide context only. */
11711
11712 static void
11713 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11714 {
11715 struct die_info *child_die;
11716
11717 prepare_one_comp_unit (cu, die, language_minimal);
11718
11719 /* Initialize (or reinitialize) the machinery for building symtabs.
11720 We do this before processing child DIEs, so that the line header table
11721 is available for DW_AT_decl_file. */
11722 cu->setup_type_unit_groups (die);
11723
11724 if (die->child != NULL)
11725 {
11726 child_die = die->child;
11727 while (child_die && child_die->tag)
11728 {
11729 process_die (child_die, cu);
11730 child_die = sibling_die (child_die);
11731 }
11732 }
11733 }
11734 \f
11735 /* DWO/DWP files.
11736
11737 http://gcc.gnu.org/wiki/DebugFission
11738 http://gcc.gnu.org/wiki/DebugFissionDWP
11739
11740 To simplify handling of both DWO files ("object" files with the DWARF info)
11741 and DWP files (a file with the DWOs packaged up into one file), we treat
11742 DWP files as having a collection of virtual DWO files. */
11743
11744 static hashval_t
11745 hash_dwo_file (const void *item)
11746 {
11747 const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11748 hashval_t hash;
11749
11750 hash = htab_hash_string (dwo_file->dwo_name);
11751 if (dwo_file->comp_dir != NULL)
11752 hash += htab_hash_string (dwo_file->comp_dir);
11753 return hash;
11754 }
11755
11756 static int
11757 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11758 {
11759 const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11760 const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11761
11762 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11763 return 0;
11764 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11765 return lhs->comp_dir == rhs->comp_dir;
11766 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11767 }
11768
11769 /* Allocate a hash table for DWO files. */
11770
11771 static htab_up
11772 allocate_dwo_file_hash_table (struct objfile *objfile)
11773 {
11774 auto delete_dwo_file = [] (void *item)
11775 {
11776 struct dwo_file *dwo_file = (struct dwo_file *) item;
11777
11778 delete dwo_file;
11779 };
11780
11781 return htab_up (htab_create_alloc_ex (41,
11782 hash_dwo_file,
11783 eq_dwo_file,
11784 delete_dwo_file,
11785 &objfile->objfile_obstack,
11786 hashtab_obstack_allocate,
11787 dummy_obstack_deallocate));
11788 }
11789
11790 /* Lookup DWO file DWO_NAME. */
11791
11792 static void **
11793 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11794 const char *dwo_name,
11795 const char *comp_dir)
11796 {
11797 struct dwo_file find_entry;
11798 void **slot;
11799
11800 if (dwarf2_per_objfile->dwo_files == NULL)
11801 dwarf2_per_objfile->dwo_files
11802 = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11803
11804 find_entry.dwo_name = dwo_name;
11805 find_entry.comp_dir = comp_dir;
11806 slot = htab_find_slot (dwarf2_per_objfile->dwo_files.get (), &find_entry,
11807 INSERT);
11808
11809 return slot;
11810 }
11811
11812 static hashval_t
11813 hash_dwo_unit (const void *item)
11814 {
11815 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11816
11817 /* This drops the top 32 bits of the id, but is ok for a hash. */
11818 return dwo_unit->signature;
11819 }
11820
11821 static int
11822 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11823 {
11824 const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11825 const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11826
11827 /* The signature is assumed to be unique within the DWO file.
11828 So while object file CU dwo_id's always have the value zero,
11829 that's OK, assuming each object file DWO file has only one CU,
11830 and that's the rule for now. */
11831 return lhs->signature == rhs->signature;
11832 }
11833
11834 /* Allocate a hash table for DWO CUs,TUs.
11835 There is one of these tables for each of CUs,TUs for each DWO file. */
11836
11837 static htab_t
11838 allocate_dwo_unit_table (struct objfile *objfile)
11839 {
11840 /* Start out with a pretty small number.
11841 Generally DWO files contain only one CU and maybe some TUs. */
11842 return htab_create_alloc_ex (3,
11843 hash_dwo_unit,
11844 eq_dwo_unit,
11845 NULL,
11846 &objfile->objfile_obstack,
11847 hashtab_obstack_allocate,
11848 dummy_obstack_deallocate);
11849 }
11850
11851 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
11852
11853 struct create_dwo_cu_data
11854 {
11855 struct dwo_file *dwo_file;
11856 struct dwo_unit dwo_unit;
11857 };
11858
11859 /* die_reader_func for create_dwo_cu. */
11860
11861 static void
11862 create_dwo_cu_reader (const struct die_reader_specs *reader,
11863 const gdb_byte *info_ptr,
11864 struct die_info *comp_unit_die,
11865 int has_children,
11866 void *datap)
11867 {
11868 struct dwarf2_cu *cu = reader->cu;
11869 sect_offset sect_off = cu->per_cu->sect_off;
11870 struct dwarf2_section_info *section = cu->per_cu->section;
11871 struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11872 struct dwo_file *dwo_file = data->dwo_file;
11873 struct dwo_unit *dwo_unit = &data->dwo_unit;
11874 struct attribute *attr;
11875
11876 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11877 if (attr == NULL)
11878 {
11879 complaint (_("Dwarf Error: debug entry at offset %s is missing"
11880 " its dwo_id [in module %s]"),
11881 sect_offset_str (sect_off), dwo_file->dwo_name);
11882 return;
11883 }
11884
11885 dwo_unit->dwo_file = dwo_file;
11886 dwo_unit->signature = DW_UNSND (attr);
11887 dwo_unit->section = section;
11888 dwo_unit->sect_off = sect_off;
11889 dwo_unit->length = cu->per_cu->length;
11890
11891 if (dwarf_read_debug)
11892 fprintf_unfiltered (gdb_stdlog, " offset %s, dwo_id %s\n",
11893 sect_offset_str (sect_off),
11894 hex_string (dwo_unit->signature));
11895 }
11896
11897 /* Create the dwo_units for the CUs in a DWO_FILE.
11898 Note: This function processes DWO files only, not DWP files. */
11899
11900 static void
11901 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11902 struct dwo_file &dwo_file, dwarf2_section_info &section,
11903 htab_t &cus_htab)
11904 {
11905 struct objfile *objfile = dwarf2_per_objfile->objfile;
11906 const gdb_byte *info_ptr, *end_ptr;
11907
11908 dwarf2_read_section (objfile, &section);
11909 info_ptr = section.buffer;
11910
11911 if (info_ptr == NULL)
11912 return;
11913
11914 if (dwarf_read_debug)
11915 {
11916 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11917 get_section_name (&section),
11918 get_section_file_name (&section));
11919 }
11920
11921 end_ptr = info_ptr + section.size;
11922 while (info_ptr < end_ptr)
11923 {
11924 struct dwarf2_per_cu_data per_cu;
11925 struct create_dwo_cu_data create_dwo_cu_data;
11926 struct dwo_unit *dwo_unit;
11927 void **slot;
11928 sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11929
11930 memset (&create_dwo_cu_data.dwo_unit, 0,
11931 sizeof (create_dwo_cu_data.dwo_unit));
11932 memset (&per_cu, 0, sizeof (per_cu));
11933 per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11934 per_cu.is_debug_types = 0;
11935 per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11936 per_cu.section = &section;
11937 create_dwo_cu_data.dwo_file = &dwo_file;
11938
11939 init_cutu_and_read_dies_no_follow (
11940 &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11941 info_ptr += per_cu.length;
11942
11943 // If the unit could not be parsed, skip it.
11944 if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11945 continue;
11946
11947 if (cus_htab == NULL)
11948 cus_htab = allocate_dwo_unit_table (objfile);
11949
11950 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11951 *dwo_unit = create_dwo_cu_data.dwo_unit;
11952 slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11953 gdb_assert (slot != NULL);
11954 if (*slot != NULL)
11955 {
11956 const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11957 sect_offset dup_sect_off = dup_cu->sect_off;
11958
11959 complaint (_("debug cu entry at offset %s is duplicate to"
11960 " the entry at offset %s, signature %s"),
11961 sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11962 hex_string (dwo_unit->signature));
11963 }
11964 *slot = (void *)dwo_unit;
11965 }
11966 }
11967
11968 /* DWP file .debug_{cu,tu}_index section format:
11969 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11970
11971 DWP Version 1:
11972
11973 Both index sections have the same format, and serve to map a 64-bit
11974 signature to a set of section numbers. Each section begins with a header,
11975 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11976 indexes, and a pool of 32-bit section numbers. The index sections will be
11977 aligned at 8-byte boundaries in the file.
11978
11979 The index section header consists of:
11980
11981 V, 32 bit version number
11982 -, 32 bits unused
11983 N, 32 bit number of compilation units or type units in the index
11984 M, 32 bit number of slots in the hash table
11985
11986 Numbers are recorded using the byte order of the application binary.
11987
11988 The hash table begins at offset 16 in the section, and consists of an array
11989 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
11990 order of the application binary). Unused slots in the hash table are 0.
11991 (We rely on the extreme unlikeliness of a signature being exactly 0.)
11992
11993 The parallel table begins immediately after the hash table
11994 (at offset 16 + 8 * M from the beginning of the section), and consists of an
11995 array of 32-bit indexes (using the byte order of the application binary),
11996 corresponding 1-1 with slots in the hash table. Each entry in the parallel
11997 table contains a 32-bit index into the pool of section numbers. For unused
11998 hash table slots, the corresponding entry in the parallel table will be 0.
11999
12000 The pool of section numbers begins immediately following the hash table
12001 (at offset 16 + 12 * M from the beginning of the section). The pool of
12002 section numbers consists of an array of 32-bit words (using the byte order
12003 of the application binary). Each item in the array is indexed starting
12004 from 0. The hash table entry provides the index of the first section
12005 number in the set. Additional section numbers in the set follow, and the
12006 set is terminated by a 0 entry (section number 0 is not used in ELF).
12007
12008 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12009 section must be the first entry in the set, and the .debug_abbrev.dwo must
12010 be the second entry. Other members of the set may follow in any order.
12011
12012 ---
12013
12014 DWP Version 2:
12015
12016 DWP Version 2 combines all the .debug_info, etc. sections into one,
12017 and the entries in the index tables are now offsets into these sections.
12018 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
12019 section.
12020
12021 Index Section Contents:
12022 Header
12023 Hash Table of Signatures dwp_hash_table.hash_table
12024 Parallel Table of Indices dwp_hash_table.unit_table
12025 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
12026 Table of Section Sizes dwp_hash_table.v2.sizes
12027
12028 The index section header consists of:
12029
12030 V, 32 bit version number
12031 L, 32 bit number of columns in the table of section offsets
12032 N, 32 bit number of compilation units or type units in the index
12033 M, 32 bit number of slots in the hash table
12034
12035 Numbers are recorded using the byte order of the application binary.
12036
12037 The hash table has the same format as version 1.
12038 The parallel table of indices has the same format as version 1,
12039 except that the entries are origin-1 indices into the table of sections
12040 offsets and the table of section sizes.
12041
12042 The table of offsets begins immediately following the parallel table
12043 (at offset 16 + 12 * M from the beginning of the section). The table is
12044 a two-dimensional array of 32-bit words (using the byte order of the
12045 application binary), with L columns and N+1 rows, in row-major order.
12046 Each row in the array is indexed starting from 0. The first row provides
12047 a key to the remaining rows: each column in this row provides an identifier
12048 for a debug section, and the offsets in the same column of subsequent rows
12049 refer to that section. The section identifiers are:
12050
12051 DW_SECT_INFO 1 .debug_info.dwo
12052 DW_SECT_TYPES 2 .debug_types.dwo
12053 DW_SECT_ABBREV 3 .debug_abbrev.dwo
12054 DW_SECT_LINE 4 .debug_line.dwo
12055 DW_SECT_LOC 5 .debug_loc.dwo
12056 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
12057 DW_SECT_MACINFO 7 .debug_macinfo.dwo
12058 DW_SECT_MACRO 8 .debug_macro.dwo
12059
12060 The offsets provided by the CU and TU index sections are the base offsets
12061 for the contributions made by each CU or TU to the corresponding section
12062 in the package file. Each CU and TU header contains an abbrev_offset
12063 field, used to find the abbreviations table for that CU or TU within the
12064 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12065 be interpreted as relative to the base offset given in the index section.
12066 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12067 should be interpreted as relative to the base offset for .debug_line.dwo,
12068 and offsets into other debug sections obtained from DWARF attributes should
12069 also be interpreted as relative to the corresponding base offset.
12070
12071 The table of sizes begins immediately following the table of offsets.
12072 Like the table of offsets, it is a two-dimensional array of 32-bit words,
12073 with L columns and N rows, in row-major order. Each row in the array is
12074 indexed starting from 1 (row 0 is shared by the two tables).
12075
12076 ---
12077
12078 Hash table lookup is handled the same in version 1 and 2:
12079
12080 We assume that N and M will not exceed 2^32 - 1.
12081 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12082
12083 Given a 64-bit compilation unit signature or a type signature S, an entry
12084 in the hash table is located as follows:
12085
12086 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12087 the low-order k bits all set to 1.
12088
12089 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12090
12091 3) If the hash table entry at index H matches the signature, use that
12092 entry. If the hash table entry at index H is unused (all zeroes),
12093 terminate the search: the signature is not present in the table.
12094
12095 4) Let H = (H + H') modulo M. Repeat at Step 3.
12096
12097 Because M > N and H' and M are relatively prime, the search is guaranteed
12098 to stop at an unused slot or find the match. */
12099
12100 /* Create a hash table to map DWO IDs to their CU/TU entry in
12101 .debug_{info,types}.dwo in DWP_FILE.
12102 Returns NULL if there isn't one.
12103 Note: This function processes DWP files only, not DWO files. */
12104
12105 static struct dwp_hash_table *
12106 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12107 struct dwp_file *dwp_file, int is_debug_types)
12108 {
12109 struct objfile *objfile = dwarf2_per_objfile->objfile;
12110 bfd *dbfd = dwp_file->dbfd.get ();
12111 const gdb_byte *index_ptr, *index_end;
12112 struct dwarf2_section_info *index;
12113 uint32_t version, nr_columns, nr_units, nr_slots;
12114 struct dwp_hash_table *htab;
12115
12116 if (is_debug_types)
12117 index = &dwp_file->sections.tu_index;
12118 else
12119 index = &dwp_file->sections.cu_index;
12120
12121 if (dwarf2_section_empty_p (index))
12122 return NULL;
12123 dwarf2_read_section (objfile, index);
12124
12125 index_ptr = index->buffer;
12126 index_end = index_ptr + index->size;
12127
12128 version = read_4_bytes (dbfd, index_ptr);
12129 index_ptr += 4;
12130 if (version == 2)
12131 nr_columns = read_4_bytes (dbfd, index_ptr);
12132 else
12133 nr_columns = 0;
12134 index_ptr += 4;
12135 nr_units = read_4_bytes (dbfd, index_ptr);
12136 index_ptr += 4;
12137 nr_slots = read_4_bytes (dbfd, index_ptr);
12138 index_ptr += 4;
12139
12140 if (version != 1 && version != 2)
12141 {
12142 error (_("Dwarf Error: unsupported DWP file version (%s)"
12143 " [in module %s]"),
12144 pulongest (version), dwp_file->name);
12145 }
12146 if (nr_slots != (nr_slots & -nr_slots))
12147 {
12148 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12149 " is not power of 2 [in module %s]"),
12150 pulongest (nr_slots), dwp_file->name);
12151 }
12152
12153 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12154 htab->version = version;
12155 htab->nr_columns = nr_columns;
12156 htab->nr_units = nr_units;
12157 htab->nr_slots = nr_slots;
12158 htab->hash_table = index_ptr;
12159 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12160
12161 /* Exit early if the table is empty. */
12162 if (nr_slots == 0 || nr_units == 0
12163 || (version == 2 && nr_columns == 0))
12164 {
12165 /* All must be zero. */
12166 if (nr_slots != 0 || nr_units != 0
12167 || (version == 2 && nr_columns != 0))
12168 {
12169 complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12170 " all zero [in modules %s]"),
12171 dwp_file->name);
12172 }
12173 return htab;
12174 }
12175
12176 if (version == 1)
12177 {
12178 htab->section_pool.v1.indices =
12179 htab->unit_table + sizeof (uint32_t) * nr_slots;
12180 /* It's harder to decide whether the section is too small in v1.
12181 V1 is deprecated anyway so we punt. */
12182 }
12183 else
12184 {
12185 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12186 int *ids = htab->section_pool.v2.section_ids;
12187 size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
12188 /* Reverse map for error checking. */
12189 int ids_seen[DW_SECT_MAX + 1];
12190 int i;
12191
12192 if (nr_columns < 2)
12193 {
12194 error (_("Dwarf Error: bad DWP hash table, too few columns"
12195 " in section table [in module %s]"),
12196 dwp_file->name);
12197 }
12198 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12199 {
12200 error (_("Dwarf Error: bad DWP hash table, too many columns"
12201 " in section table [in module %s]"),
12202 dwp_file->name);
12203 }
12204 memset (ids, 255, sizeof_ids);
12205 memset (ids_seen, 255, sizeof (ids_seen));
12206 for (i = 0; i < nr_columns; ++i)
12207 {
12208 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12209
12210 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12211 {
12212 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12213 " in section table [in module %s]"),
12214 id, dwp_file->name);
12215 }
12216 if (ids_seen[id] != -1)
12217 {
12218 error (_("Dwarf Error: bad DWP hash table, duplicate section"
12219 " id %d in section table [in module %s]"),
12220 id, dwp_file->name);
12221 }
12222 ids_seen[id] = i;
12223 ids[i] = id;
12224 }
12225 /* Must have exactly one info or types section. */
12226 if (((ids_seen[DW_SECT_INFO] != -1)
12227 + (ids_seen[DW_SECT_TYPES] != -1))
12228 != 1)
12229 {
12230 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12231 " DWO info/types section [in module %s]"),
12232 dwp_file->name);
12233 }
12234 /* Must have an abbrev section. */
12235 if (ids_seen[DW_SECT_ABBREV] == -1)
12236 {
12237 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12238 " section [in module %s]"),
12239 dwp_file->name);
12240 }
12241 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12242 htab->section_pool.v2.sizes =
12243 htab->section_pool.v2.offsets + (sizeof (uint32_t)
12244 * nr_units * nr_columns);
12245 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12246 * nr_units * nr_columns))
12247 > index_end)
12248 {
12249 error (_("Dwarf Error: DWP index section is corrupt (too small)"
12250 " [in module %s]"),
12251 dwp_file->name);
12252 }
12253 }
12254
12255 return htab;
12256 }
12257
12258 /* Update SECTIONS with the data from SECTP.
12259
12260 This function is like the other "locate" section routines that are
12261 passed to bfd_map_over_sections, but in this context the sections to
12262 read comes from the DWP V1 hash table, not the full ELF section table.
12263
12264 The result is non-zero for success, or zero if an error was found. */
12265
12266 static int
12267 locate_v1_virtual_dwo_sections (asection *sectp,
12268 struct virtual_v1_dwo_sections *sections)
12269 {
12270 const struct dwop_section_names *names = &dwop_section_names;
12271
12272 if (section_is_p (sectp->name, &names->abbrev_dwo))
12273 {
12274 /* There can be only one. */
12275 if (sections->abbrev.s.section != NULL)
12276 return 0;
12277 sections->abbrev.s.section = sectp;
12278 sections->abbrev.size = bfd_get_section_size (sectp);
12279 }
12280 else if (section_is_p (sectp->name, &names->info_dwo)
12281 || section_is_p (sectp->name, &names->types_dwo))
12282 {
12283 /* There can be only one. */
12284 if (sections->info_or_types.s.section != NULL)
12285 return 0;
12286 sections->info_or_types.s.section = sectp;
12287 sections->info_or_types.size = bfd_get_section_size (sectp);
12288 }
12289 else if (section_is_p (sectp->name, &names->line_dwo))
12290 {
12291 /* There can be only one. */
12292 if (sections->line.s.section != NULL)
12293 return 0;
12294 sections->line.s.section = sectp;
12295 sections->line.size = bfd_get_section_size (sectp);
12296 }
12297 else if (section_is_p (sectp->name, &names->loc_dwo))
12298 {
12299 /* There can be only one. */
12300 if (sections->loc.s.section != NULL)
12301 return 0;
12302 sections->loc.s.section = sectp;
12303 sections->loc.size = bfd_get_section_size (sectp);
12304 }
12305 else if (section_is_p (sectp->name, &names->macinfo_dwo))
12306 {
12307 /* There can be only one. */
12308 if (sections->macinfo.s.section != NULL)
12309 return 0;
12310 sections->macinfo.s.section = sectp;
12311 sections->macinfo.size = bfd_get_section_size (sectp);
12312 }
12313 else if (section_is_p (sectp->name, &names->macro_dwo))
12314 {
12315 /* There can be only one. */
12316 if (sections->macro.s.section != NULL)
12317 return 0;
12318 sections->macro.s.section = sectp;
12319 sections->macro.size = bfd_get_section_size (sectp);
12320 }
12321 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12322 {
12323 /* There can be only one. */
12324 if (sections->str_offsets.s.section != NULL)
12325 return 0;
12326 sections->str_offsets.s.section = sectp;
12327 sections->str_offsets.size = bfd_get_section_size (sectp);
12328 }
12329 else
12330 {
12331 /* No other kind of section is valid. */
12332 return 0;
12333 }
12334
12335 return 1;
12336 }
12337
12338 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12339 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12340 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12341 This is for DWP version 1 files. */
12342
12343 static struct dwo_unit *
12344 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12345 struct dwp_file *dwp_file,
12346 uint32_t unit_index,
12347 const char *comp_dir,
12348 ULONGEST signature, int is_debug_types)
12349 {
12350 struct objfile *objfile = dwarf2_per_objfile->objfile;
12351 const struct dwp_hash_table *dwp_htab =
12352 is_debug_types ? dwp_file->tus : dwp_file->cus;
12353 bfd *dbfd = dwp_file->dbfd.get ();
12354 const char *kind = is_debug_types ? "TU" : "CU";
12355 struct dwo_file *dwo_file;
12356 struct dwo_unit *dwo_unit;
12357 struct virtual_v1_dwo_sections sections;
12358 void **dwo_file_slot;
12359 int i;
12360
12361 gdb_assert (dwp_file->version == 1);
12362
12363 if (dwarf_read_debug)
12364 {
12365 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12366 kind,
12367 pulongest (unit_index), hex_string (signature),
12368 dwp_file->name);
12369 }
12370
12371 /* Fetch the sections of this DWO unit.
12372 Put a limit on the number of sections we look for so that bad data
12373 doesn't cause us to loop forever. */
12374
12375 #define MAX_NR_V1_DWO_SECTIONS \
12376 (1 /* .debug_info or .debug_types */ \
12377 + 1 /* .debug_abbrev */ \
12378 + 1 /* .debug_line */ \
12379 + 1 /* .debug_loc */ \
12380 + 1 /* .debug_str_offsets */ \
12381 + 1 /* .debug_macro or .debug_macinfo */ \
12382 + 1 /* trailing zero */)
12383
12384 memset (&sections, 0, sizeof (sections));
12385
12386 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12387 {
12388 asection *sectp;
12389 uint32_t section_nr =
12390 read_4_bytes (dbfd,
12391 dwp_htab->section_pool.v1.indices
12392 + (unit_index + i) * sizeof (uint32_t));
12393
12394 if (section_nr == 0)
12395 break;
12396 if (section_nr >= dwp_file->num_sections)
12397 {
12398 error (_("Dwarf Error: bad DWP hash table, section number too large"
12399 " [in module %s]"),
12400 dwp_file->name);
12401 }
12402
12403 sectp = dwp_file->elf_sections[section_nr];
12404 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12405 {
12406 error (_("Dwarf Error: bad DWP hash table, invalid section found"
12407 " [in module %s]"),
12408 dwp_file->name);
12409 }
12410 }
12411
12412 if (i < 2
12413 || dwarf2_section_empty_p (&sections.info_or_types)
12414 || dwarf2_section_empty_p (&sections.abbrev))
12415 {
12416 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12417 " [in module %s]"),
12418 dwp_file->name);
12419 }
12420 if (i == MAX_NR_V1_DWO_SECTIONS)
12421 {
12422 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12423 " [in module %s]"),
12424 dwp_file->name);
12425 }
12426
12427 /* It's easier for the rest of the code if we fake a struct dwo_file and
12428 have dwo_unit "live" in that. At least for now.
12429
12430 The DWP file can be made up of a random collection of CUs and TUs.
12431 However, for each CU + set of TUs that came from the same original DWO
12432 file, we can combine them back into a virtual DWO file to save space
12433 (fewer struct dwo_file objects to allocate). Remember that for really
12434 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12435
12436 std::string virtual_dwo_name =
12437 string_printf ("virtual-dwo/%d-%d-%d-%d",
12438 get_section_id (&sections.abbrev),
12439 get_section_id (&sections.line),
12440 get_section_id (&sections.loc),
12441 get_section_id (&sections.str_offsets));
12442 /* Can we use an existing virtual DWO file? */
12443 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12444 virtual_dwo_name.c_str (),
12445 comp_dir);
12446 /* Create one if necessary. */
12447 if (*dwo_file_slot == NULL)
12448 {
12449 if (dwarf_read_debug)
12450 {
12451 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12452 virtual_dwo_name.c_str ());
12453 }
12454 dwo_file = new struct dwo_file;
12455 dwo_file->dwo_name
12456 = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12457 virtual_dwo_name.c_str (),
12458 virtual_dwo_name.size ());
12459 dwo_file->comp_dir = comp_dir;
12460 dwo_file->sections.abbrev = sections.abbrev;
12461 dwo_file->sections.line = sections.line;
12462 dwo_file->sections.loc = sections.loc;
12463 dwo_file->sections.macinfo = sections.macinfo;
12464 dwo_file->sections.macro = sections.macro;
12465 dwo_file->sections.str_offsets = sections.str_offsets;
12466 /* The "str" section is global to the entire DWP file. */
12467 dwo_file->sections.str = dwp_file->sections.str;
12468 /* The info or types section is assigned below to dwo_unit,
12469 there's no need to record it in dwo_file.
12470 Also, we can't simply record type sections in dwo_file because
12471 we record a pointer into the vector in dwo_unit. As we collect more
12472 types we'll grow the vector and eventually have to reallocate space
12473 for it, invalidating all copies of pointers into the previous
12474 contents. */
12475 *dwo_file_slot = dwo_file;
12476 }
12477 else
12478 {
12479 if (dwarf_read_debug)
12480 {
12481 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12482 virtual_dwo_name.c_str ());
12483 }
12484 dwo_file = (struct dwo_file *) *dwo_file_slot;
12485 }
12486
12487 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12488 dwo_unit->dwo_file = dwo_file;
12489 dwo_unit->signature = signature;
12490 dwo_unit->section =
12491 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12492 *dwo_unit->section = sections.info_or_types;
12493 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
12494
12495 return dwo_unit;
12496 }
12497
12498 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12499 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12500 piece within that section used by a TU/CU, return a virtual section
12501 of just that piece. */
12502
12503 static struct dwarf2_section_info
12504 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12505 struct dwarf2_section_info *section,
12506 bfd_size_type offset, bfd_size_type size)
12507 {
12508 struct dwarf2_section_info result;
12509 asection *sectp;
12510
12511 gdb_assert (section != NULL);
12512 gdb_assert (!section->is_virtual);
12513
12514 memset (&result, 0, sizeof (result));
12515 result.s.containing_section = section;
12516 result.is_virtual = true;
12517
12518 if (size == 0)
12519 return result;
12520
12521 sectp = get_section_bfd_section (section);
12522
12523 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12524 bounds of the real section. This is a pretty-rare event, so just
12525 flag an error (easier) instead of a warning and trying to cope. */
12526 if (sectp == NULL
12527 || offset + size > bfd_get_section_size (sectp))
12528 {
12529 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12530 " in section %s [in module %s]"),
12531 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12532 objfile_name (dwarf2_per_objfile->objfile));
12533 }
12534
12535 result.virtual_offset = offset;
12536 result.size = size;
12537 return result;
12538 }
12539
12540 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12541 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12542 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12543 This is for DWP version 2 files. */
12544
12545 static struct dwo_unit *
12546 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12547 struct dwp_file *dwp_file,
12548 uint32_t unit_index,
12549 const char *comp_dir,
12550 ULONGEST signature, int is_debug_types)
12551 {
12552 struct objfile *objfile = dwarf2_per_objfile->objfile;
12553 const struct dwp_hash_table *dwp_htab =
12554 is_debug_types ? dwp_file->tus : dwp_file->cus;
12555 bfd *dbfd = dwp_file->dbfd.get ();
12556 const char *kind = is_debug_types ? "TU" : "CU";
12557 struct dwo_file *dwo_file;
12558 struct dwo_unit *dwo_unit;
12559 struct virtual_v2_dwo_sections sections;
12560 void **dwo_file_slot;
12561 int i;
12562
12563 gdb_assert (dwp_file->version == 2);
12564
12565 if (dwarf_read_debug)
12566 {
12567 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12568 kind,
12569 pulongest (unit_index), hex_string (signature),
12570 dwp_file->name);
12571 }
12572
12573 /* Fetch the section offsets of this DWO unit. */
12574
12575 memset (&sections, 0, sizeof (sections));
12576
12577 for (i = 0; i < dwp_htab->nr_columns; ++i)
12578 {
12579 uint32_t offset = read_4_bytes (dbfd,
12580 dwp_htab->section_pool.v2.offsets
12581 + (((unit_index - 1) * dwp_htab->nr_columns
12582 + i)
12583 * sizeof (uint32_t)));
12584 uint32_t size = read_4_bytes (dbfd,
12585 dwp_htab->section_pool.v2.sizes
12586 + (((unit_index - 1) * dwp_htab->nr_columns
12587 + i)
12588 * sizeof (uint32_t)));
12589
12590 switch (dwp_htab->section_pool.v2.section_ids[i])
12591 {
12592 case DW_SECT_INFO:
12593 case DW_SECT_TYPES:
12594 sections.info_or_types_offset = offset;
12595 sections.info_or_types_size = size;
12596 break;
12597 case DW_SECT_ABBREV:
12598 sections.abbrev_offset = offset;
12599 sections.abbrev_size = size;
12600 break;
12601 case DW_SECT_LINE:
12602 sections.line_offset = offset;
12603 sections.line_size = size;
12604 break;
12605 case DW_SECT_LOC:
12606 sections.loc_offset = offset;
12607 sections.loc_size = size;
12608 break;
12609 case DW_SECT_STR_OFFSETS:
12610 sections.str_offsets_offset = offset;
12611 sections.str_offsets_size = size;
12612 break;
12613 case DW_SECT_MACINFO:
12614 sections.macinfo_offset = offset;
12615 sections.macinfo_size = size;
12616 break;
12617 case DW_SECT_MACRO:
12618 sections.macro_offset = offset;
12619 sections.macro_size = size;
12620 break;
12621 }
12622 }
12623
12624 /* It's easier for the rest of the code if we fake a struct dwo_file and
12625 have dwo_unit "live" in that. At least for now.
12626
12627 The DWP file can be made up of a random collection of CUs and TUs.
12628 However, for each CU + set of TUs that came from the same original DWO
12629 file, we can combine them back into a virtual DWO file to save space
12630 (fewer struct dwo_file objects to allocate). Remember that for really
12631 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
12632
12633 std::string virtual_dwo_name =
12634 string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12635 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12636 (long) (sections.line_size ? sections.line_offset : 0),
12637 (long) (sections.loc_size ? sections.loc_offset : 0),
12638 (long) (sections.str_offsets_size
12639 ? sections.str_offsets_offset : 0));
12640 /* Can we use an existing virtual DWO file? */
12641 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12642 virtual_dwo_name.c_str (),
12643 comp_dir);
12644 /* Create one if necessary. */
12645 if (*dwo_file_slot == NULL)
12646 {
12647 if (dwarf_read_debug)
12648 {
12649 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12650 virtual_dwo_name.c_str ());
12651 }
12652 dwo_file = new struct dwo_file;
12653 dwo_file->dwo_name
12654 = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12655 virtual_dwo_name.c_str (),
12656 virtual_dwo_name.size ());
12657 dwo_file->comp_dir = comp_dir;
12658 dwo_file->sections.abbrev =
12659 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12660 sections.abbrev_offset, sections.abbrev_size);
12661 dwo_file->sections.line =
12662 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12663 sections.line_offset, sections.line_size);
12664 dwo_file->sections.loc =
12665 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12666 sections.loc_offset, sections.loc_size);
12667 dwo_file->sections.macinfo =
12668 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12669 sections.macinfo_offset, sections.macinfo_size);
12670 dwo_file->sections.macro =
12671 create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12672 sections.macro_offset, sections.macro_size);
12673 dwo_file->sections.str_offsets =
12674 create_dwp_v2_section (dwarf2_per_objfile,
12675 &dwp_file->sections.str_offsets,
12676 sections.str_offsets_offset,
12677 sections.str_offsets_size);
12678 /* The "str" section is global to the entire DWP file. */
12679 dwo_file->sections.str = dwp_file->sections.str;
12680 /* The info or types section is assigned below to dwo_unit,
12681 there's no need to record it in dwo_file.
12682 Also, we can't simply record type sections in dwo_file because
12683 we record a pointer into the vector in dwo_unit. As we collect more
12684 types we'll grow the vector and eventually have to reallocate space
12685 for it, invalidating all copies of pointers into the previous
12686 contents. */
12687 *dwo_file_slot = dwo_file;
12688 }
12689 else
12690 {
12691 if (dwarf_read_debug)
12692 {
12693 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12694 virtual_dwo_name.c_str ());
12695 }
12696 dwo_file = (struct dwo_file *) *dwo_file_slot;
12697 }
12698
12699 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12700 dwo_unit->dwo_file = dwo_file;
12701 dwo_unit->signature = signature;
12702 dwo_unit->section =
12703 XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12704 *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12705 is_debug_types
12706 ? &dwp_file->sections.types
12707 : &dwp_file->sections.info,
12708 sections.info_or_types_offset,
12709 sections.info_or_types_size);
12710 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
12711
12712 return dwo_unit;
12713 }
12714
12715 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12716 Returns NULL if the signature isn't found. */
12717
12718 static struct dwo_unit *
12719 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12720 struct dwp_file *dwp_file, const char *comp_dir,
12721 ULONGEST signature, int is_debug_types)
12722 {
12723 const struct dwp_hash_table *dwp_htab =
12724 is_debug_types ? dwp_file->tus : dwp_file->cus;
12725 bfd *dbfd = dwp_file->dbfd.get ();
12726 uint32_t mask = dwp_htab->nr_slots - 1;
12727 uint32_t hash = signature & mask;
12728 uint32_t hash2 = ((signature >> 32) & mask) | 1;
12729 unsigned int i;
12730 void **slot;
12731 struct dwo_unit find_dwo_cu;
12732
12733 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12734 find_dwo_cu.signature = signature;
12735 slot = htab_find_slot (is_debug_types
12736 ? dwp_file->loaded_tus
12737 : dwp_file->loaded_cus,
12738 &find_dwo_cu, INSERT);
12739
12740 if (*slot != NULL)
12741 return (struct dwo_unit *) *slot;
12742
12743 /* Use a for loop so that we don't loop forever on bad debug info. */
12744 for (i = 0; i < dwp_htab->nr_slots; ++i)
12745 {
12746 ULONGEST signature_in_table;
12747
12748 signature_in_table =
12749 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12750 if (signature_in_table == signature)
12751 {
12752 uint32_t unit_index =
12753 read_4_bytes (dbfd,
12754 dwp_htab->unit_table + hash * sizeof (uint32_t));
12755
12756 if (dwp_file->version == 1)
12757 {
12758 *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12759 dwp_file, unit_index,
12760 comp_dir, signature,
12761 is_debug_types);
12762 }
12763 else
12764 {
12765 *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12766 dwp_file, unit_index,
12767 comp_dir, signature,
12768 is_debug_types);
12769 }
12770 return (struct dwo_unit *) *slot;
12771 }
12772 if (signature_in_table == 0)
12773 return NULL;
12774 hash = (hash + hash2) & mask;
12775 }
12776
12777 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12778 " [in module %s]"),
12779 dwp_file->name);
12780 }
12781
12782 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12783 Open the file specified by FILE_NAME and hand it off to BFD for
12784 preliminary analysis. Return a newly initialized bfd *, which
12785 includes a canonicalized copy of FILE_NAME.
12786 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12787 SEARCH_CWD is true if the current directory is to be searched.
12788 It will be searched before debug-file-directory.
12789 If successful, the file is added to the bfd include table of the
12790 objfile's bfd (see gdb_bfd_record_inclusion).
12791 If unable to find/open the file, return NULL.
12792 NOTE: This function is derived from symfile_bfd_open. */
12793
12794 static gdb_bfd_ref_ptr
12795 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12796 const char *file_name, int is_dwp, int search_cwd)
12797 {
12798 int desc;
12799 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
12800 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
12801 to debug_file_directory. */
12802 const char *search_path;
12803 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12804
12805 gdb::unique_xmalloc_ptr<char> search_path_holder;
12806 if (search_cwd)
12807 {
12808 if (*debug_file_directory != '\0')
12809 {
12810 search_path_holder.reset (concat (".", dirname_separator_string,
12811 debug_file_directory,
12812 (char *) NULL));
12813 search_path = search_path_holder.get ();
12814 }
12815 else
12816 search_path = ".";
12817 }
12818 else
12819 search_path = debug_file_directory;
12820
12821 openp_flags flags = OPF_RETURN_REALPATH;
12822 if (is_dwp)
12823 flags |= OPF_SEARCH_IN_PATH;
12824
12825 gdb::unique_xmalloc_ptr<char> absolute_name;
12826 desc = openp (search_path, flags, file_name,
12827 O_RDONLY | O_BINARY, &absolute_name);
12828 if (desc < 0)
12829 return NULL;
12830
12831 gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12832 gnutarget, desc));
12833 if (sym_bfd == NULL)
12834 return NULL;
12835 bfd_set_cacheable (sym_bfd.get (), 1);
12836
12837 if (!bfd_check_format (sym_bfd.get (), bfd_object))
12838 return NULL;
12839
12840 /* Success. Record the bfd as having been included by the objfile's bfd.
12841 This is important because things like demangled_names_hash lives in the
12842 objfile's per_bfd space and may have references to things like symbol
12843 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
12844 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12845
12846 return sym_bfd;
12847 }
12848
12849 /* Try to open DWO file FILE_NAME.
12850 COMP_DIR is the DW_AT_comp_dir attribute.
12851 The result is the bfd handle of the file.
12852 If there is a problem finding or opening the file, return NULL.
12853 Upon success, the canonicalized path of the file is stored in the bfd,
12854 same as symfile_bfd_open. */
12855
12856 static gdb_bfd_ref_ptr
12857 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12858 const char *file_name, const char *comp_dir)
12859 {
12860 if (IS_ABSOLUTE_PATH (file_name))
12861 return try_open_dwop_file (dwarf2_per_objfile, file_name,
12862 0 /*is_dwp*/, 0 /*search_cwd*/);
12863
12864 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
12865
12866 if (comp_dir != NULL)
12867 {
12868 char *path_to_try = concat (comp_dir, SLASH_STRING,
12869 file_name, (char *) NULL);
12870
12871 /* NOTE: If comp_dir is a relative path, this will also try the
12872 search path, which seems useful. */
12873 gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12874 path_to_try,
12875 0 /*is_dwp*/,
12876 1 /*search_cwd*/));
12877 xfree (path_to_try);
12878 if (abfd != NULL)
12879 return abfd;
12880 }
12881
12882 /* That didn't work, try debug-file-directory, which, despite its name,
12883 is a list of paths. */
12884
12885 if (*debug_file_directory == '\0')
12886 return NULL;
12887
12888 return try_open_dwop_file (dwarf2_per_objfile, file_name,
12889 0 /*is_dwp*/, 1 /*search_cwd*/);
12890 }
12891
12892 /* This function is mapped across the sections and remembers the offset and
12893 size of each of the DWO debugging sections we are interested in. */
12894
12895 static void
12896 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12897 {
12898 struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12899 const struct dwop_section_names *names = &dwop_section_names;
12900
12901 if (section_is_p (sectp->name, &names->abbrev_dwo))
12902 {
12903 dwo_sections->abbrev.s.section = sectp;
12904 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12905 }
12906 else if (section_is_p (sectp->name, &names->info_dwo))
12907 {
12908 dwo_sections->info.s.section = sectp;
12909 dwo_sections->info.size = bfd_get_section_size (sectp);
12910 }
12911 else if (section_is_p (sectp->name, &names->line_dwo))
12912 {
12913 dwo_sections->line.s.section = sectp;
12914 dwo_sections->line.size = bfd_get_section_size (sectp);
12915 }
12916 else if (section_is_p (sectp->name, &names->loc_dwo))
12917 {
12918 dwo_sections->loc.s.section = sectp;
12919 dwo_sections->loc.size = bfd_get_section_size (sectp);
12920 }
12921 else if (section_is_p (sectp->name, &names->macinfo_dwo))
12922 {
12923 dwo_sections->macinfo.s.section = sectp;
12924 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12925 }
12926 else if (section_is_p (sectp->name, &names->macro_dwo))
12927 {
12928 dwo_sections->macro.s.section = sectp;
12929 dwo_sections->macro.size = bfd_get_section_size (sectp);
12930 }
12931 else if (section_is_p (sectp->name, &names->str_dwo))
12932 {
12933 dwo_sections->str.s.section = sectp;
12934 dwo_sections->str.size = bfd_get_section_size (sectp);
12935 }
12936 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12937 {
12938 dwo_sections->str_offsets.s.section = sectp;
12939 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12940 }
12941 else if (section_is_p (sectp->name, &names->types_dwo))
12942 {
12943 struct dwarf2_section_info type_section;
12944
12945 memset (&type_section, 0, sizeof (type_section));
12946 type_section.s.section = sectp;
12947 type_section.size = bfd_get_section_size (sectp);
12948 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12949 &type_section);
12950 }
12951 }
12952
12953 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12954 by PER_CU. This is for the non-DWP case.
12955 The result is NULL if DWO_NAME can't be found. */
12956
12957 static struct dwo_file *
12958 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12959 const char *dwo_name, const char *comp_dir)
12960 {
12961 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12962
12963 gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12964 if (dbfd == NULL)
12965 {
12966 if (dwarf_read_debug)
12967 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12968 return NULL;
12969 }
12970
12971 dwo_file_up dwo_file (new struct dwo_file);
12972 dwo_file->dwo_name = dwo_name;
12973 dwo_file->comp_dir = comp_dir;
12974 dwo_file->dbfd = dbfd.release ();
12975
12976 bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12977 &dwo_file->sections);
12978
12979 create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12980 dwo_file->cus);
12981
12982 create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12983 dwo_file->sections.types, dwo_file->tus);
12984
12985 if (dwarf_read_debug)
12986 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
12987
12988 return dwo_file.release ();
12989 }
12990
12991 /* This function is mapped across the sections and remembers the offset and
12992 size of each of the DWP debugging sections common to version 1 and 2 that
12993 we are interested in. */
12994
12995 static void
12996 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
12997 void *dwp_file_ptr)
12998 {
12999 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13000 const struct dwop_section_names *names = &dwop_section_names;
13001 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13002
13003 /* Record the ELF section number for later lookup: this is what the
13004 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
13005 gdb_assert (elf_section_nr < dwp_file->num_sections);
13006 dwp_file->elf_sections[elf_section_nr] = sectp;
13007
13008 /* Look for specific sections that we need. */
13009 if (section_is_p (sectp->name, &names->str_dwo))
13010 {
13011 dwp_file->sections.str.s.section = sectp;
13012 dwp_file->sections.str.size = bfd_get_section_size (sectp);
13013 }
13014 else if (section_is_p (sectp->name, &names->cu_index))
13015 {
13016 dwp_file->sections.cu_index.s.section = sectp;
13017 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13018 }
13019 else if (section_is_p (sectp->name, &names->tu_index))
13020 {
13021 dwp_file->sections.tu_index.s.section = sectp;
13022 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13023 }
13024 }
13025
13026 /* This function is mapped across the sections and remembers the offset and
13027 size of each of the DWP version 2 debugging sections that we are interested
13028 in. This is split into a separate function because we don't know if we
13029 have version 1 or 2 until we parse the cu_index/tu_index sections. */
13030
13031 static void
13032 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13033 {
13034 struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13035 const struct dwop_section_names *names = &dwop_section_names;
13036 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13037
13038 /* Record the ELF section number for later lookup: this is what the
13039 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
13040 gdb_assert (elf_section_nr < dwp_file->num_sections);
13041 dwp_file->elf_sections[elf_section_nr] = sectp;
13042
13043 /* Look for specific sections that we need. */
13044 if (section_is_p (sectp->name, &names->abbrev_dwo))
13045 {
13046 dwp_file->sections.abbrev.s.section = sectp;
13047 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13048 }
13049 else if (section_is_p (sectp->name, &names->info_dwo))
13050 {
13051 dwp_file->sections.info.s.section = sectp;
13052 dwp_file->sections.info.size = bfd_get_section_size (sectp);
13053 }
13054 else if (section_is_p (sectp->name, &names->line_dwo))
13055 {
13056 dwp_file->sections.line.s.section = sectp;
13057 dwp_file->sections.line.size = bfd_get_section_size (sectp);
13058 }
13059 else if (section_is_p (sectp->name, &names->loc_dwo))
13060 {
13061 dwp_file->sections.loc.s.section = sectp;
13062 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13063 }
13064 else if (section_is_p (sectp->name, &names->macinfo_dwo))
13065 {
13066 dwp_file->sections.macinfo.s.section = sectp;
13067 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13068 }
13069 else if (section_is_p (sectp->name, &names->macro_dwo))
13070 {
13071 dwp_file->sections.macro.s.section = sectp;
13072 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13073 }
13074 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13075 {
13076 dwp_file->sections.str_offsets.s.section = sectp;
13077 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13078 }
13079 else if (section_is_p (sectp->name, &names->types_dwo))
13080 {
13081 dwp_file->sections.types.s.section = sectp;
13082 dwp_file->sections.types.size = bfd_get_section_size (sectp);
13083 }
13084 }
13085
13086 /* Hash function for dwp_file loaded CUs/TUs. */
13087
13088 static hashval_t
13089 hash_dwp_loaded_cutus (const void *item)
13090 {
13091 const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13092
13093 /* This drops the top 32 bits of the signature, but is ok for a hash. */
13094 return dwo_unit->signature;
13095 }
13096
13097 /* Equality function for dwp_file loaded CUs/TUs. */
13098
13099 static int
13100 eq_dwp_loaded_cutus (const void *a, const void *b)
13101 {
13102 const struct dwo_unit *dua = (const struct dwo_unit *) a;
13103 const struct dwo_unit *dub = (const struct dwo_unit *) b;
13104
13105 return dua->signature == dub->signature;
13106 }
13107
13108 /* Allocate a hash table for dwp_file loaded CUs/TUs. */
13109
13110 static htab_t
13111 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13112 {
13113 return htab_create_alloc_ex (3,
13114 hash_dwp_loaded_cutus,
13115 eq_dwp_loaded_cutus,
13116 NULL,
13117 &objfile->objfile_obstack,
13118 hashtab_obstack_allocate,
13119 dummy_obstack_deallocate);
13120 }
13121
13122 /* Try to open DWP file FILE_NAME.
13123 The result is the bfd handle of the file.
13124 If there is a problem finding or opening the file, return NULL.
13125 Upon success, the canonicalized path of the file is stored in the bfd,
13126 same as symfile_bfd_open. */
13127
13128 static gdb_bfd_ref_ptr
13129 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13130 const char *file_name)
13131 {
13132 gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13133 1 /*is_dwp*/,
13134 1 /*search_cwd*/));
13135 if (abfd != NULL)
13136 return abfd;
13137
13138 /* Work around upstream bug 15652.
13139 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13140 [Whether that's a "bug" is debatable, but it is getting in our way.]
13141 We have no real idea where the dwp file is, because gdb's realpath-ing
13142 of the executable's path may have discarded the needed info.
13143 [IWBN if the dwp file name was recorded in the executable, akin to
13144 .gnu_debuglink, but that doesn't exist yet.]
13145 Strip the directory from FILE_NAME and search again. */
13146 if (*debug_file_directory != '\0')
13147 {
13148 /* Don't implicitly search the current directory here.
13149 If the user wants to search "." to handle this case,
13150 it must be added to debug-file-directory. */
13151 return try_open_dwop_file (dwarf2_per_objfile,
13152 lbasename (file_name), 1 /*is_dwp*/,
13153 0 /*search_cwd*/);
13154 }
13155
13156 return NULL;
13157 }
13158
13159 /* Initialize the use of the DWP file for the current objfile.
13160 By convention the name of the DWP file is ${objfile}.dwp.
13161 The result is NULL if it can't be found. */
13162
13163 static std::unique_ptr<struct dwp_file>
13164 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13165 {
13166 struct objfile *objfile = dwarf2_per_objfile->objfile;
13167
13168 /* Try to find first .dwp for the binary file before any symbolic links
13169 resolving. */
13170
13171 /* If the objfile is a debug file, find the name of the real binary
13172 file and get the name of dwp file from there. */
13173 std::string dwp_name;
13174 if (objfile->separate_debug_objfile_backlink != NULL)
13175 {
13176 struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13177 const char *backlink_basename = lbasename (backlink->original_name);
13178
13179 dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13180 }
13181 else
13182 dwp_name = objfile->original_name;
13183
13184 dwp_name += ".dwp";
13185
13186 gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13187 if (dbfd == NULL
13188 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13189 {
13190 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
13191 dwp_name = objfile_name (objfile);
13192 dwp_name += ".dwp";
13193 dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13194 }
13195
13196 if (dbfd == NULL)
13197 {
13198 if (dwarf_read_debug)
13199 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13200 return std::unique_ptr<dwp_file> ();
13201 }
13202
13203 const char *name = bfd_get_filename (dbfd.get ());
13204 std::unique_ptr<struct dwp_file> dwp_file
13205 (new struct dwp_file (name, std::move (dbfd)));
13206
13207 dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
13208 dwp_file->elf_sections =
13209 OBSTACK_CALLOC (&objfile->objfile_obstack,
13210 dwp_file->num_sections, asection *);
13211
13212 bfd_map_over_sections (dwp_file->dbfd.get (),
13213 dwarf2_locate_common_dwp_sections,
13214 dwp_file.get ());
13215
13216 dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13217 0);
13218
13219 dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13220 1);
13221
13222 /* The DWP file version is stored in the hash table. Oh well. */
13223 if (dwp_file->cus && dwp_file->tus
13224 && dwp_file->cus->version != dwp_file->tus->version)
13225 {
13226 /* Technically speaking, we should try to limp along, but this is
13227 pretty bizarre. We use pulongest here because that's the established
13228 portability solution (e.g, we cannot use %u for uint32_t). */
13229 error (_("Dwarf Error: DWP file CU version %s doesn't match"
13230 " TU version %s [in DWP file %s]"),
13231 pulongest (dwp_file->cus->version),
13232 pulongest (dwp_file->tus->version), dwp_name.c_str ());
13233 }
13234
13235 if (dwp_file->cus)
13236 dwp_file->version = dwp_file->cus->version;
13237 else if (dwp_file->tus)
13238 dwp_file->version = dwp_file->tus->version;
13239 else
13240 dwp_file->version = 2;
13241
13242 if (dwp_file->version == 2)
13243 bfd_map_over_sections (dwp_file->dbfd.get (),
13244 dwarf2_locate_v2_dwp_sections,
13245 dwp_file.get ());
13246
13247 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13248 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13249
13250 if (dwarf_read_debug)
13251 {
13252 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13253 fprintf_unfiltered (gdb_stdlog,
13254 " %s CUs, %s TUs\n",
13255 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13256 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13257 }
13258
13259 return dwp_file;
13260 }
13261
13262 /* Wrapper around open_and_init_dwp_file, only open it once. */
13263
13264 static struct dwp_file *
13265 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13266 {
13267 if (! dwarf2_per_objfile->dwp_checked)
13268 {
13269 dwarf2_per_objfile->dwp_file
13270 = open_and_init_dwp_file (dwarf2_per_objfile);
13271 dwarf2_per_objfile->dwp_checked = 1;
13272 }
13273 return dwarf2_per_objfile->dwp_file.get ();
13274 }
13275
13276 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13277 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13278 or in the DWP file for the objfile, referenced by THIS_UNIT.
13279 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13280 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13281
13282 This is called, for example, when wanting to read a variable with a
13283 complex location. Therefore we don't want to do file i/o for every call.
13284 Therefore we don't want to look for a DWO file on every call.
13285 Therefore we first see if we've already seen SIGNATURE in a DWP file,
13286 then we check if we've already seen DWO_NAME, and only THEN do we check
13287 for a DWO file.
13288
13289 The result is a pointer to the dwo_unit object or NULL if we didn't find it
13290 (dwo_id mismatch or couldn't find the DWO/DWP file). */
13291
13292 static struct dwo_unit *
13293 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13294 const char *dwo_name, const char *comp_dir,
13295 ULONGEST signature, int is_debug_types)
13296 {
13297 struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13298 struct objfile *objfile = dwarf2_per_objfile->objfile;
13299 const char *kind = is_debug_types ? "TU" : "CU";
13300 void **dwo_file_slot;
13301 struct dwo_file *dwo_file;
13302 struct dwp_file *dwp_file;
13303
13304 /* First see if there's a DWP file.
13305 If we have a DWP file but didn't find the DWO inside it, don't
13306 look for the original DWO file. It makes gdb behave differently
13307 depending on whether one is debugging in the build tree. */
13308
13309 dwp_file = get_dwp_file (dwarf2_per_objfile);
13310 if (dwp_file != NULL)
13311 {
13312 const struct dwp_hash_table *dwp_htab =
13313 is_debug_types ? dwp_file->tus : dwp_file->cus;
13314
13315 if (dwp_htab != NULL)
13316 {
13317 struct dwo_unit *dwo_cutu =
13318 lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13319 signature, is_debug_types);
13320
13321 if (dwo_cutu != NULL)
13322 {
13323 if (dwarf_read_debug)
13324 {
13325 fprintf_unfiltered (gdb_stdlog,
13326 "Virtual DWO %s %s found: @%s\n",
13327 kind, hex_string (signature),
13328 host_address_to_string (dwo_cutu));
13329 }
13330 return dwo_cutu;
13331 }
13332 }
13333 }
13334 else
13335 {
13336 /* No DWP file, look for the DWO file. */
13337
13338 dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13339 dwo_name, comp_dir);
13340 if (*dwo_file_slot == NULL)
13341 {
13342 /* Read in the file and build a table of the CUs/TUs it contains. */
13343 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13344 }
13345 /* NOTE: This will be NULL if unable to open the file. */
13346 dwo_file = (struct dwo_file *) *dwo_file_slot;
13347
13348 if (dwo_file != NULL)
13349 {
13350 struct dwo_unit *dwo_cutu = NULL;
13351
13352 if (is_debug_types && dwo_file->tus)
13353 {
13354 struct dwo_unit find_dwo_cutu;
13355
13356 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13357 find_dwo_cutu.signature = signature;
13358 dwo_cutu
13359 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13360 }
13361 else if (!is_debug_types && dwo_file->cus)
13362 {
13363 struct dwo_unit find_dwo_cutu;
13364
13365 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13366 find_dwo_cutu.signature = signature;
13367 dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13368 &find_dwo_cutu);
13369 }
13370
13371 if (dwo_cutu != NULL)
13372 {
13373 if (dwarf_read_debug)
13374 {
13375 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13376 kind, dwo_name, hex_string (signature),
13377 host_address_to_string (dwo_cutu));
13378 }
13379 return dwo_cutu;
13380 }
13381 }
13382 }
13383
13384 /* We didn't find it. This could mean a dwo_id mismatch, or
13385 someone deleted the DWO/DWP file, or the search path isn't set up
13386 correctly to find the file. */
13387
13388 if (dwarf_read_debug)
13389 {
13390 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13391 kind, dwo_name, hex_string (signature));
13392 }
13393
13394 /* This is a warning and not a complaint because it can be caused by
13395 pilot error (e.g., user accidentally deleting the DWO). */
13396 {
13397 /* Print the name of the DWP file if we looked there, helps the user
13398 better diagnose the problem. */
13399 std::string dwp_text;
13400
13401 if (dwp_file != NULL)
13402 dwp_text = string_printf (" [in DWP file %s]",
13403 lbasename (dwp_file->name));
13404
13405 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13406 " [in module %s]"),
13407 kind, dwo_name, hex_string (signature),
13408 dwp_text.c_str (),
13409 this_unit->is_debug_types ? "TU" : "CU",
13410 sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13411 }
13412 return NULL;
13413 }
13414
13415 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13416 See lookup_dwo_cutu_unit for details. */
13417
13418 static struct dwo_unit *
13419 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13420 const char *dwo_name, const char *comp_dir,
13421 ULONGEST signature)
13422 {
13423 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13424 }
13425
13426 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13427 See lookup_dwo_cutu_unit for details. */
13428
13429 static struct dwo_unit *
13430 lookup_dwo_type_unit (struct signatured_type *this_tu,
13431 const char *dwo_name, const char *comp_dir)
13432 {
13433 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13434 }
13435
13436 /* Traversal function for queue_and_load_all_dwo_tus. */
13437
13438 static int
13439 queue_and_load_dwo_tu (void **slot, void *info)
13440 {
13441 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13442 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13443 ULONGEST signature = dwo_unit->signature;
13444 struct signatured_type *sig_type =
13445 lookup_dwo_signatured_type (per_cu->cu, signature);
13446
13447 if (sig_type != NULL)
13448 {
13449 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13450
13451 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13452 a real dependency of PER_CU on SIG_TYPE. That is detected later
13453 while processing PER_CU. */
13454 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13455 load_full_type_unit (sig_cu);
13456 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13457 }
13458
13459 return 1;
13460 }
13461
13462 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13463 The DWO may have the only definition of the type, though it may not be
13464 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
13465 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
13466
13467 static void
13468 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13469 {
13470 struct dwo_unit *dwo_unit;
13471 struct dwo_file *dwo_file;
13472
13473 gdb_assert (!per_cu->is_debug_types);
13474 gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13475 gdb_assert (per_cu->cu != NULL);
13476
13477 dwo_unit = per_cu->cu->dwo_unit;
13478 gdb_assert (dwo_unit != NULL);
13479
13480 dwo_file = dwo_unit->dwo_file;
13481 if (dwo_file->tus != NULL)
13482 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13483 }
13484
13485 /* Read in various DIEs. */
13486
13487 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13488 Inherit only the children of the DW_AT_abstract_origin DIE not being
13489 already referenced by DW_AT_abstract_origin from the children of the
13490 current DIE. */
13491
13492 static void
13493 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13494 {
13495 struct die_info *child_die;
13496 sect_offset *offsetp;
13497 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
13498 struct die_info *origin_die;
13499 /* Iterator of the ORIGIN_DIE children. */
13500 struct die_info *origin_child_die;
13501 struct attribute *attr;
13502 struct dwarf2_cu *origin_cu;
13503 struct pending **origin_previous_list_in_scope;
13504
13505 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13506 if (!attr)
13507 return;
13508
13509 /* Note that following die references may follow to a die in a
13510 different cu. */
13511
13512 origin_cu = cu;
13513 origin_die = follow_die_ref (die, attr, &origin_cu);
13514
13515 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13516 symbols in. */
13517 origin_previous_list_in_scope = origin_cu->list_in_scope;
13518 origin_cu->list_in_scope = cu->list_in_scope;
13519
13520 if (die->tag != origin_die->tag
13521 && !(die->tag == DW_TAG_inlined_subroutine
13522 && origin_die->tag == DW_TAG_subprogram))
13523 complaint (_("DIE %s and its abstract origin %s have different tags"),
13524 sect_offset_str (die->sect_off),
13525 sect_offset_str (origin_die->sect_off));
13526
13527 std::vector<sect_offset> offsets;
13528
13529 for (child_die = die->child;
13530 child_die && child_die->tag;
13531 child_die = sibling_die (child_die))
13532 {
13533 struct die_info *child_origin_die;
13534 struct dwarf2_cu *child_origin_cu;
13535
13536 /* We are trying to process concrete instance entries:
13537 DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13538 it's not relevant to our analysis here. i.e. detecting DIEs that are
13539 present in the abstract instance but not referenced in the concrete
13540 one. */
13541 if (child_die->tag == DW_TAG_call_site
13542 || child_die->tag == DW_TAG_GNU_call_site)
13543 continue;
13544
13545 /* For each CHILD_DIE, find the corresponding child of
13546 ORIGIN_DIE. If there is more than one layer of
13547 DW_AT_abstract_origin, follow them all; there shouldn't be,
13548 but GCC versions at least through 4.4 generate this (GCC PR
13549 40573). */
13550 child_origin_die = child_die;
13551 child_origin_cu = cu;
13552 while (1)
13553 {
13554 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13555 child_origin_cu);
13556 if (attr == NULL)
13557 break;
13558 child_origin_die = follow_die_ref (child_origin_die, attr,
13559 &child_origin_cu);
13560 }
13561
13562 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13563 counterpart may exist. */
13564 if (child_origin_die != child_die)
13565 {
13566 if (child_die->tag != child_origin_die->tag
13567 && !(child_die->tag == DW_TAG_inlined_subroutine
13568 && child_origin_die->tag == DW_TAG_subprogram))
13569 complaint (_("Child DIE %s and its abstract origin %s have "
13570 "different tags"),
13571 sect_offset_str (child_die->sect_off),
13572 sect_offset_str (child_origin_die->sect_off));
13573 if (child_origin_die->parent != origin_die)
13574 complaint (_("Child DIE %s and its abstract origin %s have "
13575 "different parents"),
13576 sect_offset_str (child_die->sect_off),
13577 sect_offset_str (child_origin_die->sect_off));
13578 else
13579 offsets.push_back (child_origin_die->sect_off);
13580 }
13581 }
13582 std::sort (offsets.begin (), offsets.end ());
13583 sect_offset *offsets_end = offsets.data () + offsets.size ();
13584 for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13585 if (offsetp[-1] == *offsetp)
13586 complaint (_("Multiple children of DIE %s refer "
13587 "to DIE %s as their abstract origin"),
13588 sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13589
13590 offsetp = offsets.data ();
13591 origin_child_die = origin_die->child;
13592 while (origin_child_die && origin_child_die->tag)
13593 {
13594 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
13595 while (offsetp < offsets_end
13596 && *offsetp < origin_child_die->sect_off)
13597 offsetp++;
13598 if (offsetp >= offsets_end
13599 || *offsetp > origin_child_die->sect_off)
13600 {
13601 /* Found that ORIGIN_CHILD_DIE is really not referenced.
13602 Check whether we're already processing ORIGIN_CHILD_DIE.
13603 This can happen with mutually referenced abstract_origins.
13604 PR 16581. */
13605 if (!origin_child_die->in_process)
13606 process_die (origin_child_die, origin_cu);
13607 }
13608 origin_child_die = sibling_die (origin_child_die);
13609 }
13610 origin_cu->list_in_scope = origin_previous_list_in_scope;
13611 }
13612
13613 static void
13614 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13615 {
13616 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13617 struct gdbarch *gdbarch = get_objfile_arch (objfile);
13618 struct context_stack *newobj;
13619 CORE_ADDR lowpc;
13620 CORE_ADDR highpc;
13621 struct die_info *child_die;
13622 struct attribute *attr, *call_line, *call_file;
13623 const char *name;
13624 CORE_ADDR baseaddr;
13625 struct block *block;
13626 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13627 std::vector<struct symbol *> template_args;
13628 struct template_symbol *templ_func = NULL;
13629
13630 if (inlined_func)
13631 {
13632 /* If we do not have call site information, we can't show the
13633 caller of this inlined function. That's too confusing, so
13634 only use the scope for local variables. */
13635 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13636 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13637 if (call_line == NULL || call_file == NULL)
13638 {
13639 read_lexical_block_scope (die, cu);
13640 return;
13641 }
13642 }
13643
13644 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13645
13646 name = dwarf2_name (die, cu);
13647
13648 /* Ignore functions with missing or empty names. These are actually
13649 illegal according to the DWARF standard. */
13650 if (name == NULL)
13651 {
13652 complaint (_("missing name for subprogram DIE at %s"),
13653 sect_offset_str (die->sect_off));
13654 return;
13655 }
13656
13657 /* Ignore functions with missing or invalid low and high pc attributes. */
13658 if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13659 <= PC_BOUNDS_INVALID)
13660 {
13661 attr = dwarf2_attr (die, DW_AT_external, cu);
13662 if (!attr || !DW_UNSND (attr))
13663 complaint (_("cannot get low and high bounds "
13664 "for subprogram DIE at %s"),
13665 sect_offset_str (die->sect_off));
13666 return;
13667 }
13668
13669 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13670 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13671
13672 /* If we have any template arguments, then we must allocate a
13673 different sort of symbol. */
13674 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13675 {
13676 if (child_die->tag == DW_TAG_template_type_param
13677 || child_die->tag == DW_TAG_template_value_param)
13678 {
13679 templ_func = allocate_template_symbol (objfile);
13680 templ_func->subclass = SYMBOL_TEMPLATE;
13681 break;
13682 }
13683 }
13684
13685 newobj = cu->get_builder ()->push_context (0, lowpc);
13686 newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13687 (struct symbol *) templ_func);
13688
13689 if (dwarf2_flag_true_p (die, DW_AT_main_subprogram, cu))
13690 set_objfile_main_name (objfile, SYMBOL_LINKAGE_NAME (newobj->name),
13691 cu->language);
13692
13693 /* If there is a location expression for DW_AT_frame_base, record
13694 it. */
13695 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13696 if (attr)
13697 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13698
13699 /* If there is a location for the static link, record it. */
13700 newobj->static_link = NULL;
13701 attr = dwarf2_attr (die, DW_AT_static_link, cu);
13702 if (attr)
13703 {
13704 newobj->static_link
13705 = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13706 attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13707 }
13708
13709 cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13710
13711 if (die->child != NULL)
13712 {
13713 child_die = die->child;
13714 while (child_die && child_die->tag)
13715 {
13716 if (child_die->tag == DW_TAG_template_type_param
13717 || child_die->tag == DW_TAG_template_value_param)
13718 {
13719 struct symbol *arg = new_symbol (child_die, NULL, cu);
13720
13721 if (arg != NULL)
13722 template_args.push_back (arg);
13723 }
13724 else
13725 process_die (child_die, cu);
13726 child_die = sibling_die (child_die);
13727 }
13728 }
13729
13730 inherit_abstract_dies (die, cu);
13731
13732 /* If we have a DW_AT_specification, we might need to import using
13733 directives from the context of the specification DIE. See the
13734 comment in determine_prefix. */
13735 if (cu->language == language_cplus
13736 && dwarf2_attr (die, DW_AT_specification, cu))
13737 {
13738 struct dwarf2_cu *spec_cu = cu;
13739 struct die_info *spec_die = die_specification (die, &spec_cu);
13740
13741 while (spec_die)
13742 {
13743 child_die = spec_die->child;
13744 while (child_die && child_die->tag)
13745 {
13746 if (child_die->tag == DW_TAG_imported_module)
13747 process_die (child_die, spec_cu);
13748 child_die = sibling_die (child_die);
13749 }
13750
13751 /* In some cases, GCC generates specification DIEs that
13752 themselves contain DW_AT_specification attributes. */
13753 spec_die = die_specification (spec_die, &spec_cu);
13754 }
13755 }
13756
13757 struct context_stack cstk = cu->get_builder ()->pop_context ();
13758 /* Make a block for the local symbols within. */
13759 block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13760 cstk.static_link, lowpc, highpc);
13761
13762 /* For C++, set the block's scope. */
13763 if ((cu->language == language_cplus
13764 || cu->language == language_fortran
13765 || cu->language == language_d
13766 || cu->language == language_rust)
13767 && cu->processing_has_namespace_info)
13768 block_set_scope (block, determine_prefix (die, cu),
13769 &objfile->objfile_obstack);
13770
13771 /* If we have address ranges, record them. */
13772 dwarf2_record_block_ranges (die, block, baseaddr, cu);
13773
13774 gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13775
13776 /* Attach template arguments to function. */
13777 if (!template_args.empty ())
13778 {
13779 gdb_assert (templ_func != NULL);
13780
13781 templ_func->n_template_arguments = template_args.size ();
13782 templ_func->template_arguments
13783 = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13784 templ_func->n_template_arguments);
13785 memcpy (templ_func->template_arguments,
13786 template_args.data (),
13787 (templ_func->n_template_arguments * sizeof (struct symbol *)));
13788
13789 /* Make sure that the symtab is set on the new symbols. Even
13790 though they don't appear in this symtab directly, other parts
13791 of gdb assume that symbols do, and this is reasonably
13792 true. */
13793 for (symbol *sym : template_args)
13794 symbol_set_symtab (sym, symbol_symtab (templ_func));
13795 }
13796
13797 /* In C++, we can have functions nested inside functions (e.g., when
13798 a function declares a class that has methods). This means that
13799 when we finish processing a function scope, we may need to go
13800 back to building a containing block's symbol lists. */
13801 *cu->get_builder ()->get_local_symbols () = cstk.locals;
13802 cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13803
13804 /* If we've finished processing a top-level function, subsequent
13805 symbols go in the file symbol list. */
13806 if (cu->get_builder ()->outermost_context_p ())
13807 cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13808 }
13809
13810 /* Process all the DIES contained within a lexical block scope. Start
13811 a new scope, process the dies, and then close the scope. */
13812
13813 static void
13814 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13815 {
13816 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13817 struct gdbarch *gdbarch = get_objfile_arch (objfile);
13818 CORE_ADDR lowpc, highpc;
13819 struct die_info *child_die;
13820 CORE_ADDR baseaddr;
13821
13822 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13823
13824 /* Ignore blocks with missing or invalid low and high pc attributes. */
13825 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13826 as multiple lexical blocks? Handling children in a sane way would
13827 be nasty. Might be easier to properly extend generic blocks to
13828 describe ranges. */
13829 switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13830 {
13831 case PC_BOUNDS_NOT_PRESENT:
13832 /* DW_TAG_lexical_block has no attributes, process its children as if
13833 there was no wrapping by that DW_TAG_lexical_block.
13834 GCC does no longer produces such DWARF since GCC r224161. */
13835 for (child_die = die->child;
13836 child_die != NULL && child_die->tag;
13837 child_die = sibling_die (child_die))
13838 process_die (child_die, cu);
13839 return;
13840 case PC_BOUNDS_INVALID:
13841 return;
13842 }
13843 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13844 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13845
13846 cu->get_builder ()->push_context (0, lowpc);
13847 if (die->child != NULL)
13848 {
13849 child_die = die->child;
13850 while (child_die && child_die->tag)
13851 {
13852 process_die (child_die, cu);
13853 child_die = sibling_die (child_die);
13854 }
13855 }
13856 inherit_abstract_dies (die, cu);
13857 struct context_stack cstk = cu->get_builder ()->pop_context ();
13858
13859 if (*cu->get_builder ()->get_local_symbols () != NULL
13860 || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13861 {
13862 struct block *block
13863 = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13864 cstk.start_addr, highpc);
13865
13866 /* Note that recording ranges after traversing children, as we
13867 do here, means that recording a parent's ranges entails
13868 walking across all its children's ranges as they appear in
13869 the address map, which is quadratic behavior.
13870
13871 It would be nicer to record the parent's ranges before
13872 traversing its children, simply overriding whatever you find
13873 there. But since we don't even decide whether to create a
13874 block until after we've traversed its children, that's hard
13875 to do. */
13876 dwarf2_record_block_ranges (die, block, baseaddr, cu);
13877 }
13878 *cu->get_builder ()->get_local_symbols () = cstk.locals;
13879 cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13880 }
13881
13882 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab. */
13883
13884 static void
13885 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13886 {
13887 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13888 struct gdbarch *gdbarch = get_objfile_arch (objfile);
13889 CORE_ADDR pc, baseaddr;
13890 struct attribute *attr;
13891 struct call_site *call_site, call_site_local;
13892 void **slot;
13893 int nparams;
13894 struct die_info *child_die;
13895
13896 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13897
13898 attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13899 if (attr == NULL)
13900 {
13901 /* This was a pre-DWARF-5 GNU extension alias
13902 for DW_AT_call_return_pc. */
13903 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13904 }
13905 if (!attr)
13906 {
13907 complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13908 "DIE %s [in module %s]"),
13909 sect_offset_str (die->sect_off), objfile_name (objfile));
13910 return;
13911 }
13912 pc = attr_value_as_address (attr) + baseaddr;
13913 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13914
13915 if (cu->call_site_htab == NULL)
13916 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13917 NULL, &objfile->objfile_obstack,
13918 hashtab_obstack_allocate, NULL);
13919 call_site_local.pc = pc;
13920 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13921 if (*slot != NULL)
13922 {
13923 complaint (_("Duplicate PC %s for DW_TAG_call_site "
13924 "DIE %s [in module %s]"),
13925 paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13926 objfile_name (objfile));
13927 return;
13928 }
13929
13930 /* Count parameters at the caller. */
13931
13932 nparams = 0;
13933 for (child_die = die->child; child_die && child_die->tag;
13934 child_die = sibling_die (child_die))
13935 {
13936 if (child_die->tag != DW_TAG_call_site_parameter
13937 && child_die->tag != DW_TAG_GNU_call_site_parameter)
13938 {
13939 complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13940 "DW_TAG_call_site child DIE %s [in module %s]"),
13941 child_die->tag, sect_offset_str (child_die->sect_off),
13942 objfile_name (objfile));
13943 continue;
13944 }
13945
13946 nparams++;
13947 }
13948
13949 call_site
13950 = ((struct call_site *)
13951 obstack_alloc (&objfile->objfile_obstack,
13952 sizeof (*call_site)
13953 + (sizeof (*call_site->parameter) * (nparams - 1))));
13954 *slot = call_site;
13955 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13956 call_site->pc = pc;
13957
13958 if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13959 || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
13960 {
13961 struct die_info *func_die;
13962
13963 /* Skip also over DW_TAG_inlined_subroutine. */
13964 for (func_die = die->parent;
13965 func_die && func_die->tag != DW_TAG_subprogram
13966 && func_die->tag != DW_TAG_subroutine_type;
13967 func_die = func_die->parent);
13968
13969 /* DW_AT_call_all_calls is a superset
13970 of DW_AT_call_all_tail_calls. */
13971 if (func_die
13972 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
13973 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
13974 && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
13975 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
13976 {
13977 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
13978 not complete. But keep CALL_SITE for look ups via call_site_htab,
13979 both the initial caller containing the real return address PC and
13980 the final callee containing the current PC of a chain of tail
13981 calls do not need to have the tail call list complete. But any
13982 function candidate for a virtual tail call frame searched via
13983 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
13984 determined unambiguously. */
13985 }
13986 else
13987 {
13988 struct type *func_type = NULL;
13989
13990 if (func_die)
13991 func_type = get_die_type (func_die, cu);
13992 if (func_type != NULL)
13993 {
13994 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
13995
13996 /* Enlist this call site to the function. */
13997 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
13998 TYPE_TAIL_CALL_LIST (func_type) = call_site;
13999 }
14000 else
14001 complaint (_("Cannot find function owning DW_TAG_call_site "
14002 "DIE %s [in module %s]"),
14003 sect_offset_str (die->sect_off), objfile_name (objfile));
14004 }
14005 }
14006
14007 attr = dwarf2_attr (die, DW_AT_call_target, cu);
14008 if (attr == NULL)
14009 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14010 if (attr == NULL)
14011 attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14012 if (attr == NULL)
14013 {
14014 /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin. */
14015 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14016 }
14017 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14018 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14019 /* Keep NULL DWARF_BLOCK. */;
14020 else if (attr_form_is_block (attr))
14021 {
14022 struct dwarf2_locexpr_baton *dlbaton;
14023
14024 dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14025 dlbaton->data = DW_BLOCK (attr)->data;
14026 dlbaton->size = DW_BLOCK (attr)->size;
14027 dlbaton->per_cu = cu->per_cu;
14028
14029 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14030 }
14031 else if (attr_form_is_ref (attr))
14032 {
14033 struct dwarf2_cu *target_cu = cu;
14034 struct die_info *target_die;
14035
14036 target_die = follow_die_ref (die, attr, &target_cu);
14037 gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14038 if (die_is_declaration (target_die, target_cu))
14039 {
14040 const char *target_physname;
14041
14042 /* Prefer the mangled name; otherwise compute the demangled one. */
14043 target_physname = dw2_linkage_name (target_die, target_cu);
14044 if (target_physname == NULL)
14045 target_physname = dwarf2_physname (NULL, target_die, target_cu);
14046 if (target_physname == NULL)
14047 complaint (_("DW_AT_call_target target DIE has invalid "
14048 "physname, for referencing DIE %s [in module %s]"),
14049 sect_offset_str (die->sect_off), objfile_name (objfile));
14050 else
14051 SET_FIELD_PHYSNAME (call_site->target, target_physname);
14052 }
14053 else
14054 {
14055 CORE_ADDR lowpc;
14056
14057 /* DW_AT_entry_pc should be preferred. */
14058 if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14059 <= PC_BOUNDS_INVALID)
14060 complaint (_("DW_AT_call_target target DIE has invalid "
14061 "low pc, for referencing DIE %s [in module %s]"),
14062 sect_offset_str (die->sect_off), objfile_name (objfile));
14063 else
14064 {
14065 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14066 SET_FIELD_PHYSADDR (call_site->target, lowpc);
14067 }
14068 }
14069 }
14070 else
14071 complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14072 "block nor reference, for DIE %s [in module %s]"),
14073 sect_offset_str (die->sect_off), objfile_name (objfile));
14074
14075 call_site->per_cu = cu->per_cu;
14076
14077 for (child_die = die->child;
14078 child_die && child_die->tag;
14079 child_die = sibling_die (child_die))
14080 {
14081 struct call_site_parameter *parameter;
14082 struct attribute *loc, *origin;
14083
14084 if (child_die->tag != DW_TAG_call_site_parameter
14085 && child_die->tag != DW_TAG_GNU_call_site_parameter)
14086 {
14087 /* Already printed the complaint above. */
14088 continue;
14089 }
14090
14091 gdb_assert (call_site->parameter_count < nparams);
14092 parameter = &call_site->parameter[call_site->parameter_count];
14093
14094 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14095 specifies DW_TAG_formal_parameter. Value of the data assumed for the
14096 register is contained in DW_AT_call_value. */
14097
14098 loc = dwarf2_attr (child_die, DW_AT_location, cu);
14099 origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14100 if (origin == NULL)
14101 {
14102 /* This was a pre-DWARF-5 GNU extension alias
14103 for DW_AT_call_parameter. */
14104 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14105 }
14106 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14107 {
14108 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14109
14110 sect_offset sect_off
14111 = (sect_offset) dwarf2_get_ref_die_offset (origin);
14112 if (!offset_in_cu_p (&cu->header, sect_off))
14113 {
14114 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14115 binding can be done only inside one CU. Such referenced DIE
14116 therefore cannot be even moved to DW_TAG_partial_unit. */
14117 complaint (_("DW_AT_call_parameter offset is not in CU for "
14118 "DW_TAG_call_site child DIE %s [in module %s]"),
14119 sect_offset_str (child_die->sect_off),
14120 objfile_name (objfile));
14121 continue;
14122 }
14123 parameter->u.param_cu_off
14124 = (cu_offset) (sect_off - cu->header.sect_off);
14125 }
14126 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14127 {
14128 complaint (_("No DW_FORM_block* DW_AT_location for "
14129 "DW_TAG_call_site child DIE %s [in module %s]"),
14130 sect_offset_str (child_die->sect_off), objfile_name (objfile));
14131 continue;
14132 }
14133 else
14134 {
14135 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14136 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14137 if (parameter->u.dwarf_reg != -1)
14138 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14139 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14140 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14141 &parameter->u.fb_offset))
14142 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14143 else
14144 {
14145 complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14146 "for DW_FORM_block* DW_AT_location is supported for "
14147 "DW_TAG_call_site child DIE %s "
14148 "[in module %s]"),
14149 sect_offset_str (child_die->sect_off),
14150 objfile_name (objfile));
14151 continue;
14152 }
14153 }
14154
14155 attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14156 if (attr == NULL)
14157 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14158 if (!attr_form_is_block (attr))
14159 {
14160 complaint (_("No DW_FORM_block* DW_AT_call_value for "
14161 "DW_TAG_call_site child DIE %s [in module %s]"),
14162 sect_offset_str (child_die->sect_off),
14163 objfile_name (objfile));
14164 continue;
14165 }
14166 parameter->value = DW_BLOCK (attr)->data;
14167 parameter->value_size = DW_BLOCK (attr)->size;
14168
14169 /* Parameters are not pre-cleared by memset above. */
14170 parameter->data_value = NULL;
14171 parameter->data_value_size = 0;
14172 call_site->parameter_count++;
14173
14174 attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14175 if (attr == NULL)
14176 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14177 if (attr)
14178 {
14179 if (!attr_form_is_block (attr))
14180 complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14181 "DW_TAG_call_site child DIE %s [in module %s]"),
14182 sect_offset_str (child_die->sect_off),
14183 objfile_name (objfile));
14184 else
14185 {
14186 parameter->data_value = DW_BLOCK (attr)->data;
14187 parameter->data_value_size = DW_BLOCK (attr)->size;
14188 }
14189 }
14190 }
14191 }
14192
14193 /* Helper function for read_variable. If DIE represents a virtual
14194 table, then return the type of the concrete object that is
14195 associated with the virtual table. Otherwise, return NULL. */
14196
14197 static struct type *
14198 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14199 {
14200 struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14201 if (attr == NULL)
14202 return NULL;
14203
14204 /* Find the type DIE. */
14205 struct die_info *type_die = NULL;
14206 struct dwarf2_cu *type_cu = cu;
14207
14208 if (attr_form_is_ref (attr))
14209 type_die = follow_die_ref (die, attr, &type_cu);
14210 if (type_die == NULL)
14211 return NULL;
14212
14213 if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14214 return NULL;
14215 return die_containing_type (type_die, type_cu);
14216 }
14217
14218 /* Read a variable (DW_TAG_variable) DIE and create a new symbol. */
14219
14220 static void
14221 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14222 {
14223 struct rust_vtable_symbol *storage = NULL;
14224
14225 if (cu->language == language_rust)
14226 {
14227 struct type *containing_type = rust_containing_type (die, cu);
14228
14229 if (containing_type != NULL)
14230 {
14231 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14232
14233 storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14234 struct rust_vtable_symbol);
14235 initialize_objfile_symbol (storage);
14236 storage->concrete_type = containing_type;
14237 storage->subclass = SYMBOL_RUST_VTABLE;
14238 }
14239 }
14240
14241 struct symbol *res = new_symbol (die, NULL, cu, storage);
14242 struct attribute *abstract_origin
14243 = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14244 struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14245 if (res == NULL && loc && abstract_origin)
14246 {
14247 /* We have a variable without a name, but with a location and an abstract
14248 origin. This may be a concrete instance of an abstract variable
14249 referenced from an DW_OP_GNU_variable_value, so save it to find it back
14250 later. */
14251 struct dwarf2_cu *origin_cu = cu;
14252 struct die_info *origin_die
14253 = follow_die_ref (die, abstract_origin, &origin_cu);
14254 dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14255 dpo->abstract_to_concrete[origin_die->sect_off].push_back (die->sect_off);
14256 }
14257 }
14258
14259 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14260 reading .debug_rnglists.
14261 Callback's type should be:
14262 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14263 Return true if the attributes are present and valid, otherwise,
14264 return false. */
14265
14266 template <typename Callback>
14267 static bool
14268 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14269 Callback &&callback)
14270 {
14271 struct dwarf2_per_objfile *dwarf2_per_objfile
14272 = cu->per_cu->dwarf2_per_objfile;
14273 struct objfile *objfile = dwarf2_per_objfile->objfile;
14274 bfd *obfd = objfile->obfd;
14275 /* Base address selection entry. */
14276 CORE_ADDR base;
14277 int found_base;
14278 const gdb_byte *buffer;
14279 CORE_ADDR baseaddr;
14280 bool overflow = false;
14281
14282 found_base = cu->base_known;
14283 base = cu->base_address;
14284
14285 dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14286 if (offset >= dwarf2_per_objfile->rnglists.size)
14287 {
14288 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14289 offset);
14290 return false;
14291 }
14292 buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14293
14294 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14295
14296 while (1)
14297 {
14298 /* Initialize it due to a false compiler warning. */
14299 CORE_ADDR range_beginning = 0, range_end = 0;
14300 const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14301 + dwarf2_per_objfile->rnglists.size);
14302 unsigned int bytes_read;
14303
14304 if (buffer == buf_end)
14305 {
14306 overflow = true;
14307 break;
14308 }
14309 const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14310 switch (rlet)
14311 {
14312 case DW_RLE_end_of_list:
14313 break;
14314 case DW_RLE_base_address:
14315 if (buffer + cu->header.addr_size > buf_end)
14316 {
14317 overflow = true;
14318 break;
14319 }
14320 base = read_address (obfd, buffer, cu, &bytes_read);
14321 found_base = 1;
14322 buffer += bytes_read;
14323 break;
14324 case DW_RLE_start_length:
14325 if (buffer + cu->header.addr_size > buf_end)
14326 {
14327 overflow = true;
14328 break;
14329 }
14330 range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14331 buffer += bytes_read;
14332 range_end = (range_beginning
14333 + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14334 buffer += bytes_read;
14335 if (buffer > buf_end)
14336 {
14337 overflow = true;
14338 break;
14339 }
14340 break;
14341 case DW_RLE_offset_pair:
14342 range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14343 buffer += bytes_read;
14344 if (buffer > buf_end)
14345 {
14346 overflow = true;
14347 break;
14348 }
14349 range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14350 buffer += bytes_read;
14351 if (buffer > buf_end)
14352 {
14353 overflow = true;
14354 break;
14355 }
14356 break;
14357 case DW_RLE_start_end:
14358 if (buffer + 2 * cu->header.addr_size > buf_end)
14359 {
14360 overflow = true;
14361 break;
14362 }
14363 range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14364 buffer += bytes_read;
14365 range_end = read_address (obfd, buffer, cu, &bytes_read);
14366 buffer += bytes_read;
14367 break;
14368 default:
14369 complaint (_("Invalid .debug_rnglists data (no base address)"));
14370 return false;
14371 }
14372 if (rlet == DW_RLE_end_of_list || overflow)
14373 break;
14374 if (rlet == DW_RLE_base_address)
14375 continue;
14376
14377 if (!found_base)
14378 {
14379 /* We have no valid base address for the ranges
14380 data. */
14381 complaint (_("Invalid .debug_rnglists data (no base address)"));
14382 return false;
14383 }
14384
14385 if (range_beginning > range_end)
14386 {
14387 /* Inverted range entries are invalid. */
14388 complaint (_("Invalid .debug_rnglists data (inverted range)"));
14389 return false;
14390 }
14391
14392 /* Empty range entries have no effect. */
14393 if (range_beginning == range_end)
14394 continue;
14395
14396 range_beginning += base;
14397 range_end += base;
14398
14399 /* A not-uncommon case of bad debug info.
14400 Don't pollute the addrmap with bad data. */
14401 if (range_beginning + baseaddr == 0
14402 && !dwarf2_per_objfile->has_section_at_zero)
14403 {
14404 complaint (_(".debug_rnglists entry has start address of zero"
14405 " [in module %s]"), objfile_name (objfile));
14406 continue;
14407 }
14408
14409 callback (range_beginning, range_end);
14410 }
14411
14412 if (overflow)
14413 {
14414 complaint (_("Offset %d is not terminated "
14415 "for DW_AT_ranges attribute"),
14416 offset);
14417 return false;
14418 }
14419
14420 return true;
14421 }
14422
14423 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14424 Callback's type should be:
14425 void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14426 Return 1 if the attributes are present and valid, otherwise, return 0. */
14427
14428 template <typename Callback>
14429 static int
14430 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14431 Callback &&callback)
14432 {
14433 struct dwarf2_per_objfile *dwarf2_per_objfile
14434 = cu->per_cu->dwarf2_per_objfile;
14435 struct objfile *objfile = dwarf2_per_objfile->objfile;
14436 struct comp_unit_head *cu_header = &cu->header;
14437 bfd *obfd = objfile->obfd;
14438 unsigned int addr_size = cu_header->addr_size;
14439 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14440 /* Base address selection entry. */
14441 CORE_ADDR base;
14442 int found_base;
14443 unsigned int dummy;
14444 const gdb_byte *buffer;
14445 CORE_ADDR baseaddr;
14446
14447 if (cu_header->version >= 5)
14448 return dwarf2_rnglists_process (offset, cu, callback);
14449
14450 found_base = cu->base_known;
14451 base = cu->base_address;
14452
14453 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14454 if (offset >= dwarf2_per_objfile->ranges.size)
14455 {
14456 complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14457 offset);
14458 return 0;
14459 }
14460 buffer = dwarf2_per_objfile->ranges.buffer + offset;
14461
14462 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14463
14464 while (1)
14465 {
14466 CORE_ADDR range_beginning, range_end;
14467
14468 range_beginning = read_address (obfd, buffer, cu, &dummy);
14469 buffer += addr_size;
14470 range_end = read_address (obfd, buffer, cu, &dummy);
14471 buffer += addr_size;
14472 offset += 2 * addr_size;
14473
14474 /* An end of list marker is a pair of zero addresses. */
14475 if (range_beginning == 0 && range_end == 0)
14476 /* Found the end of list entry. */
14477 break;
14478
14479 /* Each base address selection entry is a pair of 2 values.
14480 The first is the largest possible address, the second is
14481 the base address. Check for a base address here. */
14482 if ((range_beginning & mask) == mask)
14483 {
14484 /* If we found the largest possible address, then we already
14485 have the base address in range_end. */
14486 base = range_end;
14487 found_base = 1;
14488 continue;
14489 }
14490
14491 if (!found_base)
14492 {
14493 /* We have no valid base address for the ranges
14494 data. */
14495 complaint (_("Invalid .debug_ranges data (no base address)"));
14496 return 0;
14497 }
14498
14499 if (range_beginning > range_end)
14500 {
14501 /* Inverted range entries are invalid. */
14502 complaint (_("Invalid .debug_ranges data (inverted range)"));
14503 return 0;
14504 }
14505
14506 /* Empty range entries have no effect. */
14507 if (range_beginning == range_end)
14508 continue;
14509
14510 range_beginning += base;
14511 range_end += base;
14512
14513 /* A not-uncommon case of bad debug info.
14514 Don't pollute the addrmap with bad data. */
14515 if (range_beginning + baseaddr == 0
14516 && !dwarf2_per_objfile->has_section_at_zero)
14517 {
14518 complaint (_(".debug_ranges entry has start address of zero"
14519 " [in module %s]"), objfile_name (objfile));
14520 continue;
14521 }
14522
14523 callback (range_beginning, range_end);
14524 }
14525
14526 return 1;
14527 }
14528
14529 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14530 Return 1 if the attributes are present and valid, otherwise, return 0.
14531 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
14532
14533 static int
14534 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14535 CORE_ADDR *high_return, struct dwarf2_cu *cu,
14536 struct partial_symtab *ranges_pst)
14537 {
14538 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14539 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14540 const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14541 SECT_OFF_TEXT (objfile));
14542 int low_set = 0;
14543 CORE_ADDR low = 0;
14544 CORE_ADDR high = 0;
14545 int retval;
14546
14547 retval = dwarf2_ranges_process (offset, cu,
14548 [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14549 {
14550 if (ranges_pst != NULL)
14551 {
14552 CORE_ADDR lowpc;
14553 CORE_ADDR highpc;
14554
14555 lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14556 range_beginning + baseaddr)
14557 - baseaddr);
14558 highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14559 range_end + baseaddr)
14560 - baseaddr);
14561 addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
14562 lowpc, highpc - 1, ranges_pst);
14563 }
14564
14565 /* FIXME: This is recording everything as a low-high
14566 segment of consecutive addresses. We should have a
14567 data structure for discontiguous block ranges
14568 instead. */
14569 if (! low_set)
14570 {
14571 low = range_beginning;
14572 high = range_end;
14573 low_set = 1;
14574 }
14575 else
14576 {
14577 if (range_beginning < low)
14578 low = range_beginning;
14579 if (range_end > high)
14580 high = range_end;
14581 }
14582 });
14583 if (!retval)
14584 return 0;
14585
14586 if (! low_set)
14587 /* If the first entry is an end-of-list marker, the range
14588 describes an empty scope, i.e. no instructions. */
14589 return 0;
14590
14591 if (low_return)
14592 *low_return = low;
14593 if (high_return)
14594 *high_return = high;
14595 return 1;
14596 }
14597
14598 /* Get low and high pc attributes from a die. See enum pc_bounds_kind
14599 definition for the return value. *LOWPC and *HIGHPC are set iff
14600 neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned. */
14601
14602 static enum pc_bounds_kind
14603 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14604 CORE_ADDR *highpc, struct dwarf2_cu *cu,
14605 struct partial_symtab *pst)
14606 {
14607 struct dwarf2_per_objfile *dwarf2_per_objfile
14608 = cu->per_cu->dwarf2_per_objfile;
14609 struct attribute *attr;
14610 struct attribute *attr_high;
14611 CORE_ADDR low = 0;
14612 CORE_ADDR high = 0;
14613 enum pc_bounds_kind ret;
14614
14615 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14616 if (attr_high)
14617 {
14618 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14619 if (attr)
14620 {
14621 low = attr_value_as_address (attr);
14622 high = attr_value_as_address (attr_high);
14623 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14624 high += low;
14625 }
14626 else
14627 /* Found high w/o low attribute. */
14628 return PC_BOUNDS_INVALID;
14629
14630 /* Found consecutive range of addresses. */
14631 ret = PC_BOUNDS_HIGH_LOW;
14632 }
14633 else
14634 {
14635 attr = dwarf2_attr (die, DW_AT_ranges, cu);
14636 if (attr != NULL)
14637 {
14638 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14639 We take advantage of the fact that DW_AT_ranges does not appear
14640 in DW_TAG_compile_unit of DWO files. */
14641 int need_ranges_base = die->tag != DW_TAG_compile_unit;
14642 unsigned int ranges_offset = (DW_UNSND (attr)
14643 + (need_ranges_base
14644 ? cu->ranges_base
14645 : 0));
14646
14647 /* Value of the DW_AT_ranges attribute is the offset in the
14648 .debug_ranges section. */
14649 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14650 return PC_BOUNDS_INVALID;
14651 /* Found discontinuous range of addresses. */
14652 ret = PC_BOUNDS_RANGES;
14653 }
14654 else
14655 return PC_BOUNDS_NOT_PRESENT;
14656 }
14657
14658 /* partial_die_info::read has also the strict LOW < HIGH requirement. */
14659 if (high <= low)
14660 return PC_BOUNDS_INVALID;
14661
14662 /* When using the GNU linker, .gnu.linkonce. sections are used to
14663 eliminate duplicate copies of functions and vtables and such.
14664 The linker will arbitrarily choose one and discard the others.
14665 The AT_*_pc values for such functions refer to local labels in
14666 these sections. If the section from that file was discarded, the
14667 labels are not in the output, so the relocs get a value of 0.
14668 If this is a discarded function, mark the pc bounds as invalid,
14669 so that GDB will ignore it. */
14670 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14671 return PC_BOUNDS_INVALID;
14672
14673 *lowpc = low;
14674 if (highpc)
14675 *highpc = high;
14676 return ret;
14677 }
14678
14679 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14680 its low and high PC addresses. Do nothing if these addresses could not
14681 be determined. Otherwise, set LOWPC to the low address if it is smaller,
14682 and HIGHPC to the high address if greater than HIGHPC. */
14683
14684 static void
14685 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14686 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14687 struct dwarf2_cu *cu)
14688 {
14689 CORE_ADDR low, high;
14690 struct die_info *child = die->child;
14691
14692 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14693 {
14694 *lowpc = std::min (*lowpc, low);
14695 *highpc = std::max (*highpc, high);
14696 }
14697
14698 /* If the language does not allow nested subprograms (either inside
14699 subprograms or lexical blocks), we're done. */
14700 if (cu->language != language_ada)
14701 return;
14702
14703 /* Check all the children of the given DIE. If it contains nested
14704 subprograms, then check their pc bounds. Likewise, we need to
14705 check lexical blocks as well, as they may also contain subprogram
14706 definitions. */
14707 while (child && child->tag)
14708 {
14709 if (child->tag == DW_TAG_subprogram
14710 || child->tag == DW_TAG_lexical_block)
14711 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14712 child = sibling_die (child);
14713 }
14714 }
14715
14716 /* Get the low and high pc's represented by the scope DIE, and store
14717 them in *LOWPC and *HIGHPC. If the correct values can't be
14718 determined, set *LOWPC to -1 and *HIGHPC to 0. */
14719
14720 static void
14721 get_scope_pc_bounds (struct die_info *die,
14722 CORE_ADDR *lowpc, CORE_ADDR *highpc,
14723 struct dwarf2_cu *cu)
14724 {
14725 CORE_ADDR best_low = (CORE_ADDR) -1;
14726 CORE_ADDR best_high = (CORE_ADDR) 0;
14727 CORE_ADDR current_low, current_high;
14728
14729 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14730 >= PC_BOUNDS_RANGES)
14731 {
14732 best_low = current_low;
14733 best_high = current_high;
14734 }
14735 else
14736 {
14737 struct die_info *child = die->child;
14738
14739 while (child && child->tag)
14740 {
14741 switch (child->tag) {
14742 case DW_TAG_subprogram:
14743 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14744 break;
14745 case DW_TAG_namespace:
14746 case DW_TAG_module:
14747 /* FIXME: carlton/2004-01-16: Should we do this for
14748 DW_TAG_class_type/DW_TAG_structure_type, too? I think
14749 that current GCC's always emit the DIEs corresponding
14750 to definitions of methods of classes as children of a
14751 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14752 the DIEs giving the declarations, which could be
14753 anywhere). But I don't see any reason why the
14754 standards says that they have to be there. */
14755 get_scope_pc_bounds (child, &current_low, &current_high, cu);
14756
14757 if (current_low != ((CORE_ADDR) -1))
14758 {
14759 best_low = std::min (best_low, current_low);
14760 best_high = std::max (best_high, current_high);
14761 }
14762 break;
14763 default:
14764 /* Ignore. */
14765 break;
14766 }
14767
14768 child = sibling_die (child);
14769 }
14770 }
14771
14772 *lowpc = best_low;
14773 *highpc = best_high;
14774 }
14775
14776 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14777 in DIE. */
14778
14779 static void
14780 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14781 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14782 {
14783 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14784 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14785 struct attribute *attr;
14786 struct attribute *attr_high;
14787
14788 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14789 if (attr_high)
14790 {
14791 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14792 if (attr)
14793 {
14794 CORE_ADDR low = attr_value_as_address (attr);
14795 CORE_ADDR high = attr_value_as_address (attr_high);
14796
14797 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14798 high += low;
14799
14800 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14801 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14802 cu->get_builder ()->record_block_range (block, low, high - 1);
14803 }
14804 }
14805
14806 attr = dwarf2_attr (die, DW_AT_ranges, cu);
14807 if (attr)
14808 {
14809 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14810 We take advantage of the fact that DW_AT_ranges does not appear
14811 in DW_TAG_compile_unit of DWO files. */
14812 int need_ranges_base = die->tag != DW_TAG_compile_unit;
14813
14814 /* The value of the DW_AT_ranges attribute is the offset of the
14815 address range list in the .debug_ranges section. */
14816 unsigned long offset = (DW_UNSND (attr)
14817 + (need_ranges_base ? cu->ranges_base : 0));
14818
14819 std::vector<blockrange> blockvec;
14820 dwarf2_ranges_process (offset, cu,
14821 [&] (CORE_ADDR start, CORE_ADDR end)
14822 {
14823 start += baseaddr;
14824 end += baseaddr;
14825 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14826 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14827 cu->get_builder ()->record_block_range (block, start, end - 1);
14828 blockvec.emplace_back (start, end);
14829 });
14830
14831 BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14832 }
14833 }
14834
14835 /* Check whether the producer field indicates either of GCC < 4.6, or the
14836 Intel C/C++ compiler, and cache the result in CU. */
14837
14838 static void
14839 check_producer (struct dwarf2_cu *cu)
14840 {
14841 int major, minor;
14842
14843 if (cu->producer == NULL)
14844 {
14845 /* For unknown compilers expect their behavior is DWARF version
14846 compliant.
14847
14848 GCC started to support .debug_types sections by -gdwarf-4 since
14849 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
14850 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14851 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14852 interpreted incorrectly by GDB now - GCC PR debug/48229. */
14853 }
14854 else if (producer_is_gcc (cu->producer, &major, &minor))
14855 {
14856 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14857 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14858 }
14859 else if (producer_is_icc (cu->producer, &major, &minor))
14860 {
14861 cu->producer_is_icc = true;
14862 cu->producer_is_icc_lt_14 = major < 14;
14863 }
14864 else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14865 cu->producer_is_codewarrior = true;
14866 else
14867 {
14868 /* For other non-GCC compilers, expect their behavior is DWARF version
14869 compliant. */
14870 }
14871
14872 cu->checked_producer = true;
14873 }
14874
14875 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14876 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14877 during 4.6.0 experimental. */
14878
14879 static bool
14880 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14881 {
14882 if (!cu->checked_producer)
14883 check_producer (cu);
14884
14885 return cu->producer_is_gxx_lt_4_6;
14886 }
14887
14888
14889 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14890 with incorrect is_stmt attributes. */
14891
14892 static bool
14893 producer_is_codewarrior (struct dwarf2_cu *cu)
14894 {
14895 if (!cu->checked_producer)
14896 check_producer (cu);
14897
14898 return cu->producer_is_codewarrior;
14899 }
14900
14901 /* Return the default accessibility type if it is not overriden by
14902 DW_AT_accessibility. */
14903
14904 static enum dwarf_access_attribute
14905 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14906 {
14907 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14908 {
14909 /* The default DWARF 2 accessibility for members is public, the default
14910 accessibility for inheritance is private. */
14911
14912 if (die->tag != DW_TAG_inheritance)
14913 return DW_ACCESS_public;
14914 else
14915 return DW_ACCESS_private;
14916 }
14917 else
14918 {
14919 /* DWARF 3+ defines the default accessibility a different way. The same
14920 rules apply now for DW_TAG_inheritance as for the members and it only
14921 depends on the container kind. */
14922
14923 if (die->parent->tag == DW_TAG_class_type)
14924 return DW_ACCESS_private;
14925 else
14926 return DW_ACCESS_public;
14927 }
14928 }
14929
14930 /* Look for DW_AT_data_member_location. Set *OFFSET to the byte
14931 offset. If the attribute was not found return 0, otherwise return
14932 1. If it was found but could not properly be handled, set *OFFSET
14933 to 0. */
14934
14935 static int
14936 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14937 LONGEST *offset)
14938 {
14939 struct attribute *attr;
14940
14941 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14942 if (attr != NULL)
14943 {
14944 *offset = 0;
14945
14946 /* Note that we do not check for a section offset first here.
14947 This is because DW_AT_data_member_location is new in DWARF 4,
14948 so if we see it, we can assume that a constant form is really
14949 a constant and not a section offset. */
14950 if (attr_form_is_constant (attr))
14951 *offset = dwarf2_get_attr_constant_value (attr, 0);
14952 else if (attr_form_is_section_offset (attr))
14953 dwarf2_complex_location_expr_complaint ();
14954 else if (attr_form_is_block (attr))
14955 *offset = decode_locdesc (DW_BLOCK (attr), cu);
14956 else
14957 dwarf2_complex_location_expr_complaint ();
14958
14959 return 1;
14960 }
14961
14962 return 0;
14963 }
14964
14965 /* Add an aggregate field to the field list. */
14966
14967 static void
14968 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14969 struct dwarf2_cu *cu)
14970 {
14971 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14972 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14973 struct nextfield *new_field;
14974 struct attribute *attr;
14975 struct field *fp;
14976 const char *fieldname = "";
14977
14978 if (die->tag == DW_TAG_inheritance)
14979 {
14980 fip->baseclasses.emplace_back ();
14981 new_field = &fip->baseclasses.back ();
14982 }
14983 else
14984 {
14985 fip->fields.emplace_back ();
14986 new_field = &fip->fields.back ();
14987 }
14988
14989 fip->nfields++;
14990
14991 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
14992 if (attr)
14993 new_field->accessibility = DW_UNSND (attr);
14994 else
14995 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
14996 if (new_field->accessibility != DW_ACCESS_public)
14997 fip->non_public_fields = 1;
14998
14999 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15000 if (attr)
15001 new_field->virtuality = DW_UNSND (attr);
15002 else
15003 new_field->virtuality = DW_VIRTUALITY_none;
15004
15005 fp = &new_field->field;
15006
15007 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15008 {
15009 LONGEST offset;
15010
15011 /* Data member other than a C++ static data member. */
15012
15013 /* Get type of field. */
15014 fp->type = die_type (die, cu);
15015
15016 SET_FIELD_BITPOS (*fp, 0);
15017
15018 /* Get bit size of field (zero if none). */
15019 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15020 if (attr)
15021 {
15022 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15023 }
15024 else
15025 {
15026 FIELD_BITSIZE (*fp) = 0;
15027 }
15028
15029 /* Get bit offset of field. */
15030 if (handle_data_member_location (die, cu, &offset))
15031 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15032 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15033 if (attr)
15034 {
15035 if (gdbarch_bits_big_endian (gdbarch))
15036 {
15037 /* For big endian bits, the DW_AT_bit_offset gives the
15038 additional bit offset from the MSB of the containing
15039 anonymous object to the MSB of the field. We don't
15040 have to do anything special since we don't need to
15041 know the size of the anonymous object. */
15042 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15043 }
15044 else
15045 {
15046 /* For little endian bits, compute the bit offset to the
15047 MSB of the anonymous object, subtract off the number of
15048 bits from the MSB of the field to the MSB of the
15049 object, and then subtract off the number of bits of
15050 the field itself. The result is the bit offset of
15051 the LSB of the field. */
15052 int anonymous_size;
15053 int bit_offset = DW_UNSND (attr);
15054
15055 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15056 if (attr)
15057 {
15058 /* The size of the anonymous object containing
15059 the bit field is explicit, so use the
15060 indicated size (in bytes). */
15061 anonymous_size = DW_UNSND (attr);
15062 }
15063 else
15064 {
15065 /* The size of the anonymous object containing
15066 the bit field must be inferred from the type
15067 attribute of the data member containing the
15068 bit field. */
15069 anonymous_size = TYPE_LENGTH (fp->type);
15070 }
15071 SET_FIELD_BITPOS (*fp,
15072 (FIELD_BITPOS (*fp)
15073 + anonymous_size * bits_per_byte
15074 - bit_offset - FIELD_BITSIZE (*fp)));
15075 }
15076 }
15077 attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15078 if (attr != NULL)
15079 SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15080 + dwarf2_get_attr_constant_value (attr, 0)));
15081
15082 /* Get name of field. */
15083 fieldname = dwarf2_name (die, cu);
15084 if (fieldname == NULL)
15085 fieldname = "";
15086
15087 /* The name is already allocated along with this objfile, so we don't
15088 need to duplicate it for the type. */
15089 fp->name = fieldname;
15090
15091 /* Change accessibility for artificial fields (e.g. virtual table
15092 pointer or virtual base class pointer) to private. */
15093 if (dwarf2_attr (die, DW_AT_artificial, cu))
15094 {
15095 FIELD_ARTIFICIAL (*fp) = 1;
15096 new_field->accessibility = DW_ACCESS_private;
15097 fip->non_public_fields = 1;
15098 }
15099 }
15100 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15101 {
15102 /* C++ static member. */
15103
15104 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15105 is a declaration, but all versions of G++ as of this writing
15106 (so through at least 3.2.1) incorrectly generate
15107 DW_TAG_variable tags. */
15108
15109 const char *physname;
15110
15111 /* Get name of field. */
15112 fieldname = dwarf2_name (die, cu);
15113 if (fieldname == NULL)
15114 return;
15115
15116 attr = dwarf2_attr (die, DW_AT_const_value, cu);
15117 if (attr
15118 /* Only create a symbol if this is an external value.
15119 new_symbol checks this and puts the value in the global symbol
15120 table, which we want. If it is not external, new_symbol
15121 will try to put the value in cu->list_in_scope which is wrong. */
15122 && dwarf2_flag_true_p (die, DW_AT_external, cu))
15123 {
15124 /* A static const member, not much different than an enum as far as
15125 we're concerned, except that we can support more types. */
15126 new_symbol (die, NULL, cu);
15127 }
15128
15129 /* Get physical name. */
15130 physname = dwarf2_physname (fieldname, die, cu);
15131
15132 /* The name is already allocated along with this objfile, so we don't
15133 need to duplicate it for the type. */
15134 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15135 FIELD_TYPE (*fp) = die_type (die, cu);
15136 FIELD_NAME (*fp) = fieldname;
15137 }
15138 else if (die->tag == DW_TAG_inheritance)
15139 {
15140 LONGEST offset;
15141
15142 /* C++ base class field. */
15143 if (handle_data_member_location (die, cu, &offset))
15144 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15145 FIELD_BITSIZE (*fp) = 0;
15146 FIELD_TYPE (*fp) = die_type (die, cu);
15147 FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15148 }
15149 else if (die->tag == DW_TAG_variant_part)
15150 {
15151 /* process_structure_scope will treat this DIE as a union. */
15152 process_structure_scope (die, cu);
15153
15154 /* The variant part is relative to the start of the enclosing
15155 structure. */
15156 SET_FIELD_BITPOS (*fp, 0);
15157 fp->type = get_die_type (die, cu);
15158 fp->artificial = 1;
15159 fp->name = "<<variant>>";
15160
15161 /* Normally a DW_TAG_variant_part won't have a size, but our
15162 representation requires one, so set it to the maximum of the
15163 child sizes. */
15164 if (TYPE_LENGTH (fp->type) == 0)
15165 {
15166 unsigned max = 0;
15167 for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15168 if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15169 max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15170 TYPE_LENGTH (fp->type) = max;
15171 }
15172 }
15173 else
15174 gdb_assert_not_reached ("missing case in dwarf2_add_field");
15175 }
15176
15177 /* Can the type given by DIE define another type? */
15178
15179 static bool
15180 type_can_define_types (const struct die_info *die)
15181 {
15182 switch (die->tag)
15183 {
15184 case DW_TAG_typedef:
15185 case DW_TAG_class_type:
15186 case DW_TAG_structure_type:
15187 case DW_TAG_union_type:
15188 case DW_TAG_enumeration_type:
15189 return true;
15190
15191 default:
15192 return false;
15193 }
15194 }
15195
15196 /* Add a type definition defined in the scope of the FIP's class. */
15197
15198 static void
15199 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15200 struct dwarf2_cu *cu)
15201 {
15202 struct decl_field fp;
15203 memset (&fp, 0, sizeof (fp));
15204
15205 gdb_assert (type_can_define_types (die));
15206
15207 /* Get name of field. NULL is okay here, meaning an anonymous type. */
15208 fp.name = dwarf2_name (die, cu);
15209 fp.type = read_type_die (die, cu);
15210
15211 /* Save accessibility. */
15212 enum dwarf_access_attribute accessibility;
15213 struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15214 if (attr != NULL)
15215 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15216 else
15217 accessibility = dwarf2_default_access_attribute (die, cu);
15218 switch (accessibility)
15219 {
15220 case DW_ACCESS_public:
15221 /* The assumed value if neither private nor protected. */
15222 break;
15223 case DW_ACCESS_private:
15224 fp.is_private = 1;
15225 break;
15226 case DW_ACCESS_protected:
15227 fp.is_protected = 1;
15228 break;
15229 default:
15230 complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15231 }
15232
15233 if (die->tag == DW_TAG_typedef)
15234 fip->typedef_field_list.push_back (fp);
15235 else
15236 fip->nested_types_list.push_back (fp);
15237 }
15238
15239 /* Create the vector of fields, and attach it to the type. */
15240
15241 static void
15242 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15243 struct dwarf2_cu *cu)
15244 {
15245 int nfields = fip->nfields;
15246
15247 /* Record the field count, allocate space for the array of fields,
15248 and create blank accessibility bitfields if necessary. */
15249 TYPE_NFIELDS (type) = nfields;
15250 TYPE_FIELDS (type) = (struct field *)
15251 TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15252
15253 if (fip->non_public_fields && cu->language != language_ada)
15254 {
15255 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15256
15257 TYPE_FIELD_PRIVATE_BITS (type) =
15258 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15259 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15260
15261 TYPE_FIELD_PROTECTED_BITS (type) =
15262 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15263 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15264
15265 TYPE_FIELD_IGNORE_BITS (type) =
15266 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15267 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15268 }
15269
15270 /* If the type has baseclasses, allocate and clear a bit vector for
15271 TYPE_FIELD_VIRTUAL_BITS. */
15272 if (!fip->baseclasses.empty () && cu->language != language_ada)
15273 {
15274 int num_bytes = B_BYTES (fip->baseclasses.size ());
15275 unsigned char *pointer;
15276
15277 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15278 pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15279 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15280 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15281 TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15282 }
15283
15284 if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15285 {
15286 struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15287
15288 for (int index = 0; index < nfields; ++index)
15289 {
15290 struct nextfield &field = fip->fields[index];
15291
15292 if (field.variant.is_discriminant)
15293 di->discriminant_index = index;
15294 else if (field.variant.default_branch)
15295 di->default_index = index;
15296 else
15297 di->discriminants[index] = field.variant.discriminant_value;
15298 }
15299 }
15300
15301 /* Copy the saved-up fields into the field vector. */
15302 for (int i = 0; i < nfields; ++i)
15303 {
15304 struct nextfield &field
15305 = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15306 : fip->fields[i - fip->baseclasses.size ()]);
15307
15308 TYPE_FIELD (type, i) = field.field;
15309 switch (field.accessibility)
15310 {
15311 case DW_ACCESS_private:
15312 if (cu->language != language_ada)
15313 SET_TYPE_FIELD_PRIVATE (type, i);
15314 break;
15315
15316 case DW_ACCESS_protected:
15317 if (cu->language != language_ada)
15318 SET_TYPE_FIELD_PROTECTED (type, i);
15319 break;
15320
15321 case DW_ACCESS_public:
15322 break;
15323
15324 default:
15325 /* Unknown accessibility. Complain and treat it as public. */
15326 {
15327 complaint (_("unsupported accessibility %d"),
15328 field.accessibility);
15329 }
15330 break;
15331 }
15332 if (i < fip->baseclasses.size ())
15333 {
15334 switch (field.virtuality)
15335 {
15336 case DW_VIRTUALITY_virtual:
15337 case DW_VIRTUALITY_pure_virtual:
15338 if (cu->language == language_ada)
15339 error (_("unexpected virtuality in component of Ada type"));
15340 SET_TYPE_FIELD_VIRTUAL (type, i);
15341 break;
15342 }
15343 }
15344 }
15345 }
15346
15347 /* Return true if this member function is a constructor, false
15348 otherwise. */
15349
15350 static int
15351 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15352 {
15353 const char *fieldname;
15354 const char *type_name;
15355 int len;
15356
15357 if (die->parent == NULL)
15358 return 0;
15359
15360 if (die->parent->tag != DW_TAG_structure_type
15361 && die->parent->tag != DW_TAG_union_type
15362 && die->parent->tag != DW_TAG_class_type)
15363 return 0;
15364
15365 fieldname = dwarf2_name (die, cu);
15366 type_name = dwarf2_name (die->parent, cu);
15367 if (fieldname == NULL || type_name == NULL)
15368 return 0;
15369
15370 len = strlen (fieldname);
15371 return (strncmp (fieldname, type_name, len) == 0
15372 && (type_name[len] == '\0' || type_name[len] == '<'));
15373 }
15374
15375 /* Add a member function to the proper fieldlist. */
15376
15377 static void
15378 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15379 struct type *type, struct dwarf2_cu *cu)
15380 {
15381 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15382 struct attribute *attr;
15383 int i;
15384 struct fnfieldlist *flp = nullptr;
15385 struct fn_field *fnp;
15386 const char *fieldname;
15387 struct type *this_type;
15388 enum dwarf_access_attribute accessibility;
15389
15390 if (cu->language == language_ada)
15391 error (_("unexpected member function in Ada type"));
15392
15393 /* Get name of member function. */
15394 fieldname = dwarf2_name (die, cu);
15395 if (fieldname == NULL)
15396 return;
15397
15398 /* Look up member function name in fieldlist. */
15399 for (i = 0; i < fip->fnfieldlists.size (); i++)
15400 {
15401 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15402 {
15403 flp = &fip->fnfieldlists[i];
15404 break;
15405 }
15406 }
15407
15408 /* Create a new fnfieldlist if necessary. */
15409 if (flp == nullptr)
15410 {
15411 fip->fnfieldlists.emplace_back ();
15412 flp = &fip->fnfieldlists.back ();
15413 flp->name = fieldname;
15414 i = fip->fnfieldlists.size () - 1;
15415 }
15416
15417 /* Create a new member function field and add it to the vector of
15418 fnfieldlists. */
15419 flp->fnfields.emplace_back ();
15420 fnp = &flp->fnfields.back ();
15421
15422 /* Delay processing of the physname until later. */
15423 if (cu->language == language_cplus)
15424 add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15425 die, cu);
15426 else
15427 {
15428 const char *physname = dwarf2_physname (fieldname, die, cu);
15429 fnp->physname = physname ? physname : "";
15430 }
15431
15432 fnp->type = alloc_type (objfile);
15433 this_type = read_type_die (die, cu);
15434 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15435 {
15436 int nparams = TYPE_NFIELDS (this_type);
15437
15438 /* TYPE is the domain of this method, and THIS_TYPE is the type
15439 of the method itself (TYPE_CODE_METHOD). */
15440 smash_to_method_type (fnp->type, type,
15441 TYPE_TARGET_TYPE (this_type),
15442 TYPE_FIELDS (this_type),
15443 TYPE_NFIELDS (this_type),
15444 TYPE_VARARGS (this_type));
15445
15446 /* Handle static member functions.
15447 Dwarf2 has no clean way to discern C++ static and non-static
15448 member functions. G++ helps GDB by marking the first
15449 parameter for non-static member functions (which is the this
15450 pointer) as artificial. We obtain this information from
15451 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
15452 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15453 fnp->voffset = VOFFSET_STATIC;
15454 }
15455 else
15456 complaint (_("member function type missing for '%s'"),
15457 dwarf2_full_name (fieldname, die, cu));
15458
15459 /* Get fcontext from DW_AT_containing_type if present. */
15460 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15461 fnp->fcontext = die_containing_type (die, cu);
15462
15463 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15464 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
15465
15466 /* Get accessibility. */
15467 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15468 if (attr)
15469 accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15470 else
15471 accessibility = dwarf2_default_access_attribute (die, cu);
15472 switch (accessibility)
15473 {
15474 case DW_ACCESS_private:
15475 fnp->is_private = 1;
15476 break;
15477 case DW_ACCESS_protected:
15478 fnp->is_protected = 1;
15479 break;
15480 }
15481
15482 /* Check for artificial methods. */
15483 attr = dwarf2_attr (die, DW_AT_artificial, cu);
15484 if (attr && DW_UNSND (attr) != 0)
15485 fnp->is_artificial = 1;
15486
15487 fnp->is_constructor = dwarf2_is_constructor (die, cu);
15488
15489 /* Get index in virtual function table if it is a virtual member
15490 function. For older versions of GCC, this is an offset in the
15491 appropriate virtual table, as specified by DW_AT_containing_type.
15492 For everyone else, it is an expression to be evaluated relative
15493 to the object address. */
15494
15495 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15496 if (attr)
15497 {
15498 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15499 {
15500 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15501 {
15502 /* Old-style GCC. */
15503 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15504 }
15505 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15506 || (DW_BLOCK (attr)->size > 1
15507 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15508 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15509 {
15510 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15511 if ((fnp->voffset % cu->header.addr_size) != 0)
15512 dwarf2_complex_location_expr_complaint ();
15513 else
15514 fnp->voffset /= cu->header.addr_size;
15515 fnp->voffset += 2;
15516 }
15517 else
15518 dwarf2_complex_location_expr_complaint ();
15519
15520 if (!fnp->fcontext)
15521 {
15522 /* If there is no `this' field and no DW_AT_containing_type,
15523 we cannot actually find a base class context for the
15524 vtable! */
15525 if (TYPE_NFIELDS (this_type) == 0
15526 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15527 {
15528 complaint (_("cannot determine context for virtual member "
15529 "function \"%s\" (offset %s)"),
15530 fieldname, sect_offset_str (die->sect_off));
15531 }
15532 else
15533 {
15534 fnp->fcontext
15535 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15536 }
15537 }
15538 }
15539 else if (attr_form_is_section_offset (attr))
15540 {
15541 dwarf2_complex_location_expr_complaint ();
15542 }
15543 else
15544 {
15545 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15546 fieldname);
15547 }
15548 }
15549 else
15550 {
15551 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15552 if (attr && DW_UNSND (attr))
15553 {
15554 /* GCC does this, as of 2008-08-25; PR debug/37237. */
15555 complaint (_("Member function \"%s\" (offset %s) is virtual "
15556 "but the vtable offset is not specified"),
15557 fieldname, sect_offset_str (die->sect_off));
15558 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15559 TYPE_CPLUS_DYNAMIC (type) = 1;
15560 }
15561 }
15562 }
15563
15564 /* Create the vector of member function fields, and attach it to the type. */
15565
15566 static void
15567 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15568 struct dwarf2_cu *cu)
15569 {
15570 if (cu->language == language_ada)
15571 error (_("unexpected member functions in Ada type"));
15572
15573 ALLOCATE_CPLUS_STRUCT_TYPE (type);
15574 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15575 TYPE_ALLOC (type,
15576 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15577
15578 for (int i = 0; i < fip->fnfieldlists.size (); i++)
15579 {
15580 struct fnfieldlist &nf = fip->fnfieldlists[i];
15581 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15582
15583 TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15584 TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15585 fn_flp->fn_fields = (struct fn_field *)
15586 TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15587
15588 for (int k = 0; k < nf.fnfields.size (); ++k)
15589 fn_flp->fn_fields[k] = nf.fnfields[k];
15590 }
15591
15592 TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15593 }
15594
15595 /* Returns non-zero if NAME is the name of a vtable member in CU's
15596 language, zero otherwise. */
15597 static int
15598 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15599 {
15600 static const char vptr[] = "_vptr";
15601
15602 /* Look for the C++ form of the vtable. */
15603 if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15604 return 1;
15605
15606 return 0;
15607 }
15608
15609 /* GCC outputs unnamed structures that are really pointers to member
15610 functions, with the ABI-specified layout. If TYPE describes
15611 such a structure, smash it into a member function type.
15612
15613 GCC shouldn't do this; it should just output pointer to member DIEs.
15614 This is GCC PR debug/28767. */
15615
15616 static void
15617 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15618 {
15619 struct type *pfn_type, *self_type, *new_type;
15620
15621 /* Check for a structure with no name and two children. */
15622 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15623 return;
15624
15625 /* Check for __pfn and __delta members. */
15626 if (TYPE_FIELD_NAME (type, 0) == NULL
15627 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15628 || TYPE_FIELD_NAME (type, 1) == NULL
15629 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15630 return;
15631
15632 /* Find the type of the method. */
15633 pfn_type = TYPE_FIELD_TYPE (type, 0);
15634 if (pfn_type == NULL
15635 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15636 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15637 return;
15638
15639 /* Look for the "this" argument. */
15640 pfn_type = TYPE_TARGET_TYPE (pfn_type);
15641 if (TYPE_NFIELDS (pfn_type) == 0
15642 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15643 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15644 return;
15645
15646 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15647 new_type = alloc_type (objfile);
15648 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15649 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15650 TYPE_VARARGS (pfn_type));
15651 smash_to_methodptr_type (type, new_type);
15652 }
15653
15654 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15655 appropriate error checking and issuing complaints if there is a
15656 problem. */
15657
15658 static ULONGEST
15659 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15660 {
15661 struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15662
15663 if (attr == nullptr)
15664 return 0;
15665
15666 if (!attr_form_is_constant (attr))
15667 {
15668 complaint (_("DW_AT_alignment must have constant form"
15669 " - DIE at %s [in module %s]"),
15670 sect_offset_str (die->sect_off),
15671 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15672 return 0;
15673 }
15674
15675 ULONGEST align;
15676 if (attr->form == DW_FORM_sdata)
15677 {
15678 LONGEST val = DW_SND (attr);
15679 if (val < 0)
15680 {
15681 complaint (_("DW_AT_alignment value must not be negative"
15682 " - DIE at %s [in module %s]"),
15683 sect_offset_str (die->sect_off),
15684 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15685 return 0;
15686 }
15687 align = val;
15688 }
15689 else
15690 align = DW_UNSND (attr);
15691
15692 if (align == 0)
15693 {
15694 complaint (_("DW_AT_alignment value must not be zero"
15695 " - DIE at %s [in module %s]"),
15696 sect_offset_str (die->sect_off),
15697 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15698 return 0;
15699 }
15700 if ((align & (align - 1)) != 0)
15701 {
15702 complaint (_("DW_AT_alignment value must be a power of 2"
15703 " - DIE at %s [in module %s]"),
15704 sect_offset_str (die->sect_off),
15705 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15706 return 0;
15707 }
15708
15709 return align;
15710 }
15711
15712 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15713 the alignment for TYPE. */
15714
15715 static void
15716 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15717 struct type *type)
15718 {
15719 if (!set_type_align (type, get_alignment (cu, die)))
15720 complaint (_("DW_AT_alignment value too large"
15721 " - DIE at %s [in module %s]"),
15722 sect_offset_str (die->sect_off),
15723 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15724 }
15725
15726 /* Called when we find the DIE that starts a structure or union scope
15727 (definition) to create a type for the structure or union. Fill in
15728 the type's name and general properties; the members will not be
15729 processed until process_structure_scope. A symbol table entry for
15730 the type will also not be done until process_structure_scope (assuming
15731 the type has a name).
15732
15733 NOTE: we need to call these functions regardless of whether or not the
15734 DIE has a DW_AT_name attribute, since it might be an anonymous
15735 structure or union. This gets the type entered into our set of
15736 user defined types. */
15737
15738 static struct type *
15739 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15740 {
15741 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15742 struct type *type;
15743 struct attribute *attr;
15744 const char *name;
15745
15746 /* If the definition of this type lives in .debug_types, read that type.
15747 Don't follow DW_AT_specification though, that will take us back up
15748 the chain and we want to go down. */
15749 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15750 if (attr)
15751 {
15752 type = get_DW_AT_signature_type (die, attr, cu);
15753
15754 /* The type's CU may not be the same as CU.
15755 Ensure TYPE is recorded with CU in die_type_hash. */
15756 return set_die_type (die, type, cu);
15757 }
15758
15759 type = alloc_type (objfile);
15760 INIT_CPLUS_SPECIFIC (type);
15761
15762 name = dwarf2_name (die, cu);
15763 if (name != NULL)
15764 {
15765 if (cu->language == language_cplus
15766 || cu->language == language_d
15767 || cu->language == language_rust)
15768 {
15769 const char *full_name = dwarf2_full_name (name, die, cu);
15770
15771 /* dwarf2_full_name might have already finished building the DIE's
15772 type. If so, there is no need to continue. */
15773 if (get_die_type (die, cu) != NULL)
15774 return get_die_type (die, cu);
15775
15776 TYPE_NAME (type) = full_name;
15777 }
15778 else
15779 {
15780 /* The name is already allocated along with this objfile, so
15781 we don't need to duplicate it for the type. */
15782 TYPE_NAME (type) = name;
15783 }
15784 }
15785
15786 if (die->tag == DW_TAG_structure_type)
15787 {
15788 TYPE_CODE (type) = TYPE_CODE_STRUCT;
15789 }
15790 else if (die->tag == DW_TAG_union_type)
15791 {
15792 TYPE_CODE (type) = TYPE_CODE_UNION;
15793 }
15794 else if (die->tag == DW_TAG_variant_part)
15795 {
15796 TYPE_CODE (type) = TYPE_CODE_UNION;
15797 TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15798 }
15799 else
15800 {
15801 TYPE_CODE (type) = TYPE_CODE_STRUCT;
15802 }
15803
15804 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15805 TYPE_DECLARED_CLASS (type) = 1;
15806
15807 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15808 if (attr)
15809 {
15810 if (attr_form_is_constant (attr))
15811 TYPE_LENGTH (type) = DW_UNSND (attr);
15812 else
15813 {
15814 /* For the moment, dynamic type sizes are not supported
15815 by GDB's struct type. The actual size is determined
15816 on-demand when resolving the type of a given object,
15817 so set the type's length to zero for now. Otherwise,
15818 we record an expression as the length, and that expression
15819 could lead to a very large value, which could eventually
15820 lead to us trying to allocate that much memory when creating
15821 a value of that type. */
15822 TYPE_LENGTH (type) = 0;
15823 }
15824 }
15825 else
15826 {
15827 TYPE_LENGTH (type) = 0;
15828 }
15829
15830 maybe_set_alignment (cu, die, type);
15831
15832 if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15833 {
15834 /* ICC<14 does not output the required DW_AT_declaration on
15835 incomplete types, but gives them a size of zero. */
15836 TYPE_STUB (type) = 1;
15837 }
15838 else
15839 TYPE_STUB_SUPPORTED (type) = 1;
15840
15841 if (die_is_declaration (die, cu))
15842 TYPE_STUB (type) = 1;
15843 else if (attr == NULL && die->child == NULL
15844 && producer_is_realview (cu->producer))
15845 /* RealView does not output the required DW_AT_declaration
15846 on incomplete types. */
15847 TYPE_STUB (type) = 1;
15848
15849 /* We need to add the type field to the die immediately so we don't
15850 infinitely recurse when dealing with pointers to the structure
15851 type within the structure itself. */
15852 set_die_type (die, type, cu);
15853
15854 /* set_die_type should be already done. */
15855 set_descriptive_type (type, die, cu);
15856
15857 return type;
15858 }
15859
15860 /* A helper for process_structure_scope that handles a single member
15861 DIE. */
15862
15863 static void
15864 handle_struct_member_die (struct die_info *child_die, struct type *type,
15865 struct field_info *fi,
15866 std::vector<struct symbol *> *template_args,
15867 struct dwarf2_cu *cu)
15868 {
15869 if (child_die->tag == DW_TAG_member
15870 || child_die->tag == DW_TAG_variable
15871 || child_die->tag == DW_TAG_variant_part)
15872 {
15873 /* NOTE: carlton/2002-11-05: A C++ static data member
15874 should be a DW_TAG_member that is a declaration, but
15875 all versions of G++ as of this writing (so through at
15876 least 3.2.1) incorrectly generate DW_TAG_variable
15877 tags for them instead. */
15878 dwarf2_add_field (fi, child_die, cu);
15879 }
15880 else if (child_die->tag == DW_TAG_subprogram)
15881 {
15882 /* Rust doesn't have member functions in the C++ sense.
15883 However, it does emit ordinary functions as children
15884 of a struct DIE. */
15885 if (cu->language == language_rust)
15886 read_func_scope (child_die, cu);
15887 else
15888 {
15889 /* C++ member function. */
15890 dwarf2_add_member_fn (fi, child_die, type, cu);
15891 }
15892 }
15893 else if (child_die->tag == DW_TAG_inheritance)
15894 {
15895 /* C++ base class field. */
15896 dwarf2_add_field (fi, child_die, cu);
15897 }
15898 else if (type_can_define_types (child_die))
15899 dwarf2_add_type_defn (fi, child_die, cu);
15900 else if (child_die->tag == DW_TAG_template_type_param
15901 || child_die->tag == DW_TAG_template_value_param)
15902 {
15903 struct symbol *arg = new_symbol (child_die, NULL, cu);
15904
15905 if (arg != NULL)
15906 template_args->push_back (arg);
15907 }
15908 else if (child_die->tag == DW_TAG_variant)
15909 {
15910 /* In a variant we want to get the discriminant and also add a
15911 field for our sole member child. */
15912 struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15913
15914 for (die_info *variant_child = child_die->child;
15915 variant_child != NULL;
15916 variant_child = sibling_die (variant_child))
15917 {
15918 if (variant_child->tag == DW_TAG_member)
15919 {
15920 handle_struct_member_die (variant_child, type, fi,
15921 template_args, cu);
15922 /* Only handle the one. */
15923 break;
15924 }
15925 }
15926
15927 /* We don't handle this but we might as well report it if we see
15928 it. */
15929 if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15930 complaint (_("DW_AT_discr_list is not supported yet"
15931 " - DIE at %s [in module %s]"),
15932 sect_offset_str (child_die->sect_off),
15933 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15934
15935 /* The first field was just added, so we can stash the
15936 discriminant there. */
15937 gdb_assert (!fi->fields.empty ());
15938 if (discr == NULL)
15939 fi->fields.back ().variant.default_branch = true;
15940 else
15941 fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15942 }
15943 }
15944
15945 /* Finish creating a structure or union type, including filling in
15946 its members and creating a symbol for it. */
15947
15948 static void
15949 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15950 {
15951 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15952 struct die_info *child_die;
15953 struct type *type;
15954
15955 type = get_die_type (die, cu);
15956 if (type == NULL)
15957 type = read_structure_type (die, cu);
15958
15959 /* When reading a DW_TAG_variant_part, we need to notice when we
15960 read the discriminant member, so we can record it later in the
15961 discriminant_info. */
15962 bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15963 sect_offset discr_offset;
15964 bool has_template_parameters = false;
15965
15966 if (is_variant_part)
15967 {
15968 struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15969 if (discr == NULL)
15970 {
15971 /* Maybe it's a univariant form, an extension we support.
15972 In this case arrange not to check the offset. */
15973 is_variant_part = false;
15974 }
15975 else if (attr_form_is_ref (discr))
15976 {
15977 struct dwarf2_cu *target_cu = cu;
15978 struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
15979
15980 discr_offset = target_die->sect_off;
15981 }
15982 else
15983 {
15984 complaint (_("DW_AT_discr does not have DIE reference form"
15985 " - DIE at %s [in module %s]"),
15986 sect_offset_str (die->sect_off),
15987 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15988 is_variant_part = false;
15989 }
15990 }
15991
15992 if (die->child != NULL && ! die_is_declaration (die, cu))
15993 {
15994 struct field_info fi;
15995 std::vector<struct symbol *> template_args;
15996
15997 child_die = die->child;
15998
15999 while (child_die && child_die->tag)
16000 {
16001 handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16002
16003 if (is_variant_part && discr_offset == child_die->sect_off)
16004 fi.fields.back ().variant.is_discriminant = true;
16005
16006 child_die = sibling_die (child_die);
16007 }
16008
16009 /* Attach template arguments to type. */
16010 if (!template_args.empty ())
16011 {
16012 has_template_parameters = true;
16013 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16014 TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16015 TYPE_TEMPLATE_ARGUMENTS (type)
16016 = XOBNEWVEC (&objfile->objfile_obstack,
16017 struct symbol *,
16018 TYPE_N_TEMPLATE_ARGUMENTS (type));
16019 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16020 template_args.data (),
16021 (TYPE_N_TEMPLATE_ARGUMENTS (type)
16022 * sizeof (struct symbol *)));
16023 }
16024
16025 /* Attach fields and member functions to the type. */
16026 if (fi.nfields)
16027 dwarf2_attach_fields_to_type (&fi, type, cu);
16028 if (!fi.fnfieldlists.empty ())
16029 {
16030 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16031
16032 /* Get the type which refers to the base class (possibly this
16033 class itself) which contains the vtable pointer for the current
16034 class from the DW_AT_containing_type attribute. This use of
16035 DW_AT_containing_type is a GNU extension. */
16036
16037 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16038 {
16039 struct type *t = die_containing_type (die, cu);
16040
16041 set_type_vptr_basetype (type, t);
16042 if (type == t)
16043 {
16044 int i;
16045
16046 /* Our own class provides vtbl ptr. */
16047 for (i = TYPE_NFIELDS (t) - 1;
16048 i >= TYPE_N_BASECLASSES (t);
16049 --i)
16050 {
16051 const char *fieldname = TYPE_FIELD_NAME (t, i);
16052
16053 if (is_vtable_name (fieldname, cu))
16054 {
16055 set_type_vptr_fieldno (type, i);
16056 break;
16057 }
16058 }
16059
16060 /* Complain if virtual function table field not found. */
16061 if (i < TYPE_N_BASECLASSES (t))
16062 complaint (_("virtual function table pointer "
16063 "not found when defining class '%s'"),
16064 TYPE_NAME (type) ? TYPE_NAME (type) : "");
16065 }
16066 else
16067 {
16068 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16069 }
16070 }
16071 else if (cu->producer
16072 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16073 {
16074 /* The IBM XLC compiler does not provide direct indication
16075 of the containing type, but the vtable pointer is
16076 always named __vfp. */
16077
16078 int i;
16079
16080 for (i = TYPE_NFIELDS (type) - 1;
16081 i >= TYPE_N_BASECLASSES (type);
16082 --i)
16083 {
16084 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16085 {
16086 set_type_vptr_fieldno (type, i);
16087 set_type_vptr_basetype (type, type);
16088 break;
16089 }
16090 }
16091 }
16092 }
16093
16094 /* Copy fi.typedef_field_list linked list elements content into the
16095 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
16096 if (!fi.typedef_field_list.empty ())
16097 {
16098 int count = fi.typedef_field_list.size ();
16099
16100 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16101 TYPE_TYPEDEF_FIELD_ARRAY (type)
16102 = ((struct decl_field *)
16103 TYPE_ALLOC (type,
16104 sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16105 TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16106
16107 for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16108 TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16109 }
16110
16111 /* Copy fi.nested_types_list linked list elements content into the
16112 allocated array TYPE_NESTED_TYPES_ARRAY (type). */
16113 if (!fi.nested_types_list.empty () && cu->language != language_ada)
16114 {
16115 int count = fi.nested_types_list.size ();
16116
16117 ALLOCATE_CPLUS_STRUCT_TYPE (type);
16118 TYPE_NESTED_TYPES_ARRAY (type)
16119 = ((struct decl_field *)
16120 TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16121 TYPE_NESTED_TYPES_COUNT (type) = count;
16122
16123 for (int i = 0; i < fi.nested_types_list.size (); ++i)
16124 TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16125 }
16126 }
16127
16128 quirk_gcc_member_function_pointer (type, objfile);
16129 if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16130 cu->rust_unions.push_back (type);
16131
16132 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16133 snapshots) has been known to create a die giving a declaration
16134 for a class that has, as a child, a die giving a definition for a
16135 nested class. So we have to process our children even if the
16136 current die is a declaration. Normally, of course, a declaration
16137 won't have any children at all. */
16138
16139 child_die = die->child;
16140
16141 while (child_die != NULL && child_die->tag)
16142 {
16143 if (child_die->tag == DW_TAG_member
16144 || child_die->tag == DW_TAG_variable
16145 || child_die->tag == DW_TAG_inheritance
16146 || child_die->tag == DW_TAG_template_value_param
16147 || child_die->tag == DW_TAG_template_type_param)
16148 {
16149 /* Do nothing. */
16150 }
16151 else
16152 process_die (child_die, cu);
16153
16154 child_die = sibling_die (child_die);
16155 }
16156
16157 /* Do not consider external references. According to the DWARF standard,
16158 these DIEs are identified by the fact that they have no byte_size
16159 attribute, and a declaration attribute. */
16160 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16161 || !die_is_declaration (die, cu))
16162 {
16163 struct symbol *sym = new_symbol (die, type, cu);
16164
16165 if (has_template_parameters)
16166 {
16167 struct symtab *symtab;
16168 if (sym != nullptr)
16169 symtab = symbol_symtab (sym);
16170 else if (cu->line_header != nullptr)
16171 {
16172 /* Any related symtab will do. */
16173 symtab
16174 = cu->line_header->file_name_at (file_name_index (1))->symtab;
16175 }
16176 else
16177 {
16178 symtab = nullptr;
16179 complaint (_("could not find suitable "
16180 "symtab for template parameter"
16181 " - DIE at %s [in module %s]"),
16182 sect_offset_str (die->sect_off),
16183 objfile_name (objfile));
16184 }
16185
16186 if (symtab != nullptr)
16187 {
16188 /* Make sure that the symtab is set on the new symbols.
16189 Even though they don't appear in this symtab directly,
16190 other parts of gdb assume that symbols do, and this is
16191 reasonably true. */
16192 for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16193 symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i), symtab);
16194 }
16195 }
16196 }
16197 }
16198
16199 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16200 update TYPE using some information only available in DIE's children. */
16201
16202 static void
16203 update_enumeration_type_from_children (struct die_info *die,
16204 struct type *type,
16205 struct dwarf2_cu *cu)
16206 {
16207 struct die_info *child_die;
16208 int unsigned_enum = 1;
16209 int flag_enum = 1;
16210 ULONGEST mask = 0;
16211
16212 auto_obstack obstack;
16213
16214 for (child_die = die->child;
16215 child_die != NULL && child_die->tag;
16216 child_die = sibling_die (child_die))
16217 {
16218 struct attribute *attr;
16219 LONGEST value;
16220 const gdb_byte *bytes;
16221 struct dwarf2_locexpr_baton *baton;
16222 const char *name;
16223
16224 if (child_die->tag != DW_TAG_enumerator)
16225 continue;
16226
16227 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16228 if (attr == NULL)
16229 continue;
16230
16231 name = dwarf2_name (child_die, cu);
16232 if (name == NULL)
16233 name = "<anonymous enumerator>";
16234
16235 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16236 &value, &bytes, &baton);
16237 if (value < 0)
16238 {
16239 unsigned_enum = 0;
16240 flag_enum = 0;
16241 }
16242 else if ((mask & value) != 0)
16243 flag_enum = 0;
16244 else
16245 mask |= value;
16246
16247 /* If we already know that the enum type is neither unsigned, nor
16248 a flag type, no need to look at the rest of the enumerates. */
16249 if (!unsigned_enum && !flag_enum)
16250 break;
16251 }
16252
16253 if (unsigned_enum)
16254 TYPE_UNSIGNED (type) = 1;
16255 if (flag_enum)
16256 TYPE_FLAG_ENUM (type) = 1;
16257 }
16258
16259 /* Given a DW_AT_enumeration_type die, set its type. We do not
16260 complete the type's fields yet, or create any symbols. */
16261
16262 static struct type *
16263 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16264 {
16265 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16266 struct type *type;
16267 struct attribute *attr;
16268 const char *name;
16269
16270 /* If the definition of this type lives in .debug_types, read that type.
16271 Don't follow DW_AT_specification though, that will take us back up
16272 the chain and we want to go down. */
16273 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16274 if (attr)
16275 {
16276 type = get_DW_AT_signature_type (die, attr, cu);
16277
16278 /* The type's CU may not be the same as CU.
16279 Ensure TYPE is recorded with CU in die_type_hash. */
16280 return set_die_type (die, type, cu);
16281 }
16282
16283 type = alloc_type (objfile);
16284
16285 TYPE_CODE (type) = TYPE_CODE_ENUM;
16286 name = dwarf2_full_name (NULL, die, cu);
16287 if (name != NULL)
16288 TYPE_NAME (type) = name;
16289
16290 attr = dwarf2_attr (die, DW_AT_type, cu);
16291 if (attr != NULL)
16292 {
16293 struct type *underlying_type = die_type (die, cu);
16294
16295 TYPE_TARGET_TYPE (type) = underlying_type;
16296 }
16297
16298 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16299 if (attr)
16300 {
16301 TYPE_LENGTH (type) = DW_UNSND (attr);
16302 }
16303 else
16304 {
16305 TYPE_LENGTH (type) = 0;
16306 }
16307
16308 maybe_set_alignment (cu, die, type);
16309
16310 /* The enumeration DIE can be incomplete. In Ada, any type can be
16311 declared as private in the package spec, and then defined only
16312 inside the package body. Such types are known as Taft Amendment
16313 Types. When another package uses such a type, an incomplete DIE
16314 may be generated by the compiler. */
16315 if (die_is_declaration (die, cu))
16316 TYPE_STUB (type) = 1;
16317
16318 /* Finish the creation of this type by using the enum's children.
16319 We must call this even when the underlying type has been provided
16320 so that we can determine if we're looking at a "flag" enum. */
16321 update_enumeration_type_from_children (die, type, cu);
16322
16323 /* If this type has an underlying type that is not a stub, then we
16324 may use its attributes. We always use the "unsigned" attribute
16325 in this situation, because ordinarily we guess whether the type
16326 is unsigned -- but the guess can be wrong and the underlying type
16327 can tell us the reality. However, we defer to a local size
16328 attribute if one exists, because this lets the compiler override
16329 the underlying type if needed. */
16330 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16331 {
16332 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16333 if (TYPE_LENGTH (type) == 0)
16334 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16335 if (TYPE_RAW_ALIGN (type) == 0
16336 && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16337 set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16338 }
16339
16340 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16341
16342 return set_die_type (die, type, cu);
16343 }
16344
16345 /* Given a pointer to a die which begins an enumeration, process all
16346 the dies that define the members of the enumeration, and create the
16347 symbol for the enumeration type.
16348
16349 NOTE: We reverse the order of the element list. */
16350
16351 static void
16352 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16353 {
16354 struct type *this_type;
16355
16356 this_type = get_die_type (die, cu);
16357 if (this_type == NULL)
16358 this_type = read_enumeration_type (die, cu);
16359
16360 if (die->child != NULL)
16361 {
16362 struct die_info *child_die;
16363 struct symbol *sym;
16364 struct field *fields = NULL;
16365 int num_fields = 0;
16366 const char *name;
16367
16368 child_die = die->child;
16369 while (child_die && child_die->tag)
16370 {
16371 if (child_die->tag != DW_TAG_enumerator)
16372 {
16373 process_die (child_die, cu);
16374 }
16375 else
16376 {
16377 name = dwarf2_name (child_die, cu);
16378 if (name)
16379 {
16380 sym = new_symbol (child_die, this_type, cu);
16381
16382 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16383 {
16384 fields = (struct field *)
16385 xrealloc (fields,
16386 (num_fields + DW_FIELD_ALLOC_CHUNK)
16387 * sizeof (struct field));
16388 }
16389
16390 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16391 FIELD_TYPE (fields[num_fields]) = NULL;
16392 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16393 FIELD_BITSIZE (fields[num_fields]) = 0;
16394
16395 num_fields++;
16396 }
16397 }
16398
16399 child_die = sibling_die (child_die);
16400 }
16401
16402 if (num_fields)
16403 {
16404 TYPE_NFIELDS (this_type) = num_fields;
16405 TYPE_FIELDS (this_type) = (struct field *)
16406 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16407 memcpy (TYPE_FIELDS (this_type), fields,
16408 sizeof (struct field) * num_fields);
16409 xfree (fields);
16410 }
16411 }
16412
16413 /* If we are reading an enum from a .debug_types unit, and the enum
16414 is a declaration, and the enum is not the signatured type in the
16415 unit, then we do not want to add a symbol for it. Adding a
16416 symbol would in some cases obscure the true definition of the
16417 enum, giving users an incomplete type when the definition is
16418 actually available. Note that we do not want to do this for all
16419 enums which are just declarations, because C++0x allows forward
16420 enum declarations. */
16421 if (cu->per_cu->is_debug_types
16422 && die_is_declaration (die, cu))
16423 {
16424 struct signatured_type *sig_type;
16425
16426 sig_type = (struct signatured_type *) cu->per_cu;
16427 gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16428 if (sig_type->type_offset_in_section != die->sect_off)
16429 return;
16430 }
16431
16432 new_symbol (die, this_type, cu);
16433 }
16434
16435 /* Extract all information from a DW_TAG_array_type DIE and put it in
16436 the DIE's type field. For now, this only handles one dimensional
16437 arrays. */
16438
16439 static struct type *
16440 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16441 {
16442 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16443 struct die_info *child_die;
16444 struct type *type;
16445 struct type *element_type, *range_type, *index_type;
16446 struct attribute *attr;
16447 const char *name;
16448 struct dynamic_prop *byte_stride_prop = NULL;
16449 unsigned int bit_stride = 0;
16450
16451 element_type = die_type (die, cu);
16452
16453 /* The die_type call above may have already set the type for this DIE. */
16454 type = get_die_type (die, cu);
16455 if (type)
16456 return type;
16457
16458 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16459 if (attr != NULL)
16460 {
16461 int stride_ok;
16462
16463 byte_stride_prop
16464 = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16465 stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16466 if (!stride_ok)
16467 {
16468 complaint (_("unable to read array DW_AT_byte_stride "
16469 " - DIE at %s [in module %s]"),
16470 sect_offset_str (die->sect_off),
16471 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16472 /* Ignore this attribute. We will likely not be able to print
16473 arrays of this type correctly, but there is little we can do
16474 to help if we cannot read the attribute's value. */
16475 byte_stride_prop = NULL;
16476 }
16477 }
16478
16479 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16480 if (attr != NULL)
16481 bit_stride = DW_UNSND (attr);
16482
16483 /* Irix 6.2 native cc creates array types without children for
16484 arrays with unspecified length. */
16485 if (die->child == NULL)
16486 {
16487 index_type = objfile_type (objfile)->builtin_int;
16488 range_type = create_static_range_type (NULL, index_type, 0, -1);
16489 type = create_array_type_with_stride (NULL, element_type, range_type,
16490 byte_stride_prop, bit_stride);
16491 return set_die_type (die, type, cu);
16492 }
16493
16494 std::vector<struct type *> range_types;
16495 child_die = die->child;
16496 while (child_die && child_die->tag)
16497 {
16498 if (child_die->tag == DW_TAG_subrange_type)
16499 {
16500 struct type *child_type = read_type_die (child_die, cu);
16501
16502 if (child_type != NULL)
16503 {
16504 /* The range type was succesfully read. Save it for the
16505 array type creation. */
16506 range_types.push_back (child_type);
16507 }
16508 }
16509 child_die = sibling_die (child_die);
16510 }
16511
16512 /* Dwarf2 dimensions are output from left to right, create the
16513 necessary array types in backwards order. */
16514
16515 type = element_type;
16516
16517 if (read_array_order (die, cu) == DW_ORD_col_major)
16518 {
16519 int i = 0;
16520
16521 while (i < range_types.size ())
16522 type = create_array_type_with_stride (NULL, type, range_types[i++],
16523 byte_stride_prop, bit_stride);
16524 }
16525 else
16526 {
16527 size_t ndim = range_types.size ();
16528 while (ndim-- > 0)
16529 type = create_array_type_with_stride (NULL, type, range_types[ndim],
16530 byte_stride_prop, bit_stride);
16531 }
16532
16533 /* Understand Dwarf2 support for vector types (like they occur on
16534 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
16535 array type. This is not part of the Dwarf2/3 standard yet, but a
16536 custom vendor extension. The main difference between a regular
16537 array and the vector variant is that vectors are passed by value
16538 to functions. */
16539 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16540 if (attr)
16541 make_vector_type (type);
16542
16543 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
16544 implementation may choose to implement triple vectors using this
16545 attribute. */
16546 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16547 if (attr)
16548 {
16549 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16550 TYPE_LENGTH (type) = DW_UNSND (attr);
16551 else
16552 complaint (_("DW_AT_byte_size for array type smaller "
16553 "than the total size of elements"));
16554 }
16555
16556 name = dwarf2_name (die, cu);
16557 if (name)
16558 TYPE_NAME (type) = name;
16559
16560 maybe_set_alignment (cu, die, type);
16561
16562 /* Install the type in the die. */
16563 set_die_type (die, type, cu);
16564
16565 /* set_die_type should be already done. */
16566 set_descriptive_type (type, die, cu);
16567
16568 return type;
16569 }
16570
16571 static enum dwarf_array_dim_ordering
16572 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16573 {
16574 struct attribute *attr;
16575
16576 attr = dwarf2_attr (die, DW_AT_ordering, cu);
16577
16578 if (attr)
16579 return (enum dwarf_array_dim_ordering) DW_SND (attr);
16580
16581 /* GNU F77 is a special case, as at 08/2004 array type info is the
16582 opposite order to the dwarf2 specification, but data is still
16583 laid out as per normal fortran.
16584
16585 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16586 version checking. */
16587
16588 if (cu->language == language_fortran
16589 && cu->producer && strstr (cu->producer, "GNU F77"))
16590 {
16591 return DW_ORD_row_major;
16592 }
16593
16594 switch (cu->language_defn->la_array_ordering)
16595 {
16596 case array_column_major:
16597 return DW_ORD_col_major;
16598 case array_row_major:
16599 default:
16600 return DW_ORD_row_major;
16601 };
16602 }
16603
16604 /* Extract all information from a DW_TAG_set_type DIE and put it in
16605 the DIE's type field. */
16606
16607 static struct type *
16608 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16609 {
16610 struct type *domain_type, *set_type;
16611 struct attribute *attr;
16612
16613 domain_type = die_type (die, cu);
16614
16615 /* The die_type call above may have already set the type for this DIE. */
16616 set_type = get_die_type (die, cu);
16617 if (set_type)
16618 return set_type;
16619
16620 set_type = create_set_type (NULL, domain_type);
16621
16622 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16623 if (attr)
16624 TYPE_LENGTH (set_type) = DW_UNSND (attr);
16625
16626 maybe_set_alignment (cu, die, set_type);
16627
16628 return set_die_type (die, set_type, cu);
16629 }
16630
16631 /* A helper for read_common_block that creates a locexpr baton.
16632 SYM is the symbol which we are marking as computed.
16633 COMMON_DIE is the DIE for the common block.
16634 COMMON_LOC is the location expression attribute for the common
16635 block itself.
16636 MEMBER_LOC is the location expression attribute for the particular
16637 member of the common block that we are processing.
16638 CU is the CU from which the above come. */
16639
16640 static void
16641 mark_common_block_symbol_computed (struct symbol *sym,
16642 struct die_info *common_die,
16643 struct attribute *common_loc,
16644 struct attribute *member_loc,
16645 struct dwarf2_cu *cu)
16646 {
16647 struct dwarf2_per_objfile *dwarf2_per_objfile
16648 = cu->per_cu->dwarf2_per_objfile;
16649 struct objfile *objfile = dwarf2_per_objfile->objfile;
16650 struct dwarf2_locexpr_baton *baton;
16651 gdb_byte *ptr;
16652 unsigned int cu_off;
16653 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16654 LONGEST offset = 0;
16655
16656 gdb_assert (common_loc && member_loc);
16657 gdb_assert (attr_form_is_block (common_loc));
16658 gdb_assert (attr_form_is_block (member_loc)
16659 || attr_form_is_constant (member_loc));
16660
16661 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16662 baton->per_cu = cu->per_cu;
16663 gdb_assert (baton->per_cu);
16664
16665 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16666
16667 if (attr_form_is_constant (member_loc))
16668 {
16669 offset = dwarf2_get_attr_constant_value (member_loc, 0);
16670 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16671 }
16672 else
16673 baton->size += DW_BLOCK (member_loc)->size;
16674
16675 ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16676 baton->data = ptr;
16677
16678 *ptr++ = DW_OP_call4;
16679 cu_off = common_die->sect_off - cu->per_cu->sect_off;
16680 store_unsigned_integer (ptr, 4, byte_order, cu_off);
16681 ptr += 4;
16682
16683 if (attr_form_is_constant (member_loc))
16684 {
16685 *ptr++ = DW_OP_addr;
16686 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16687 ptr += cu->header.addr_size;
16688 }
16689 else
16690 {
16691 /* We have to copy the data here, because DW_OP_call4 will only
16692 use a DW_AT_location attribute. */
16693 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16694 ptr += DW_BLOCK (member_loc)->size;
16695 }
16696
16697 *ptr++ = DW_OP_plus;
16698 gdb_assert (ptr - baton->data == baton->size);
16699
16700 SYMBOL_LOCATION_BATON (sym) = baton;
16701 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16702 }
16703
16704 /* Create appropriate locally-scoped variables for all the
16705 DW_TAG_common_block entries. Also create a struct common_block
16706 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
16707 is used to sepate the common blocks name namespace from regular
16708 variable names. */
16709
16710 static void
16711 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16712 {
16713 struct attribute *attr;
16714
16715 attr = dwarf2_attr (die, DW_AT_location, cu);
16716 if (attr)
16717 {
16718 /* Support the .debug_loc offsets. */
16719 if (attr_form_is_block (attr))
16720 {
16721 /* Ok. */
16722 }
16723 else if (attr_form_is_section_offset (attr))
16724 {
16725 dwarf2_complex_location_expr_complaint ();
16726 attr = NULL;
16727 }
16728 else
16729 {
16730 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16731 "common block member");
16732 attr = NULL;
16733 }
16734 }
16735
16736 if (die->child != NULL)
16737 {
16738 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16739 struct die_info *child_die;
16740 size_t n_entries = 0, size;
16741 struct common_block *common_block;
16742 struct symbol *sym;
16743
16744 for (child_die = die->child;
16745 child_die && child_die->tag;
16746 child_die = sibling_die (child_die))
16747 ++n_entries;
16748
16749 size = (sizeof (struct common_block)
16750 + (n_entries - 1) * sizeof (struct symbol *));
16751 common_block
16752 = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16753 size);
16754 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16755 common_block->n_entries = 0;
16756
16757 for (child_die = die->child;
16758 child_die && child_die->tag;
16759 child_die = sibling_die (child_die))
16760 {
16761 /* Create the symbol in the DW_TAG_common_block block in the current
16762 symbol scope. */
16763 sym = new_symbol (child_die, NULL, cu);
16764 if (sym != NULL)
16765 {
16766 struct attribute *member_loc;
16767
16768 common_block->contents[common_block->n_entries++] = sym;
16769
16770 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16771 cu);
16772 if (member_loc)
16773 {
16774 /* GDB has handled this for a long time, but it is
16775 not specified by DWARF. It seems to have been
16776 emitted by gfortran at least as recently as:
16777 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
16778 complaint (_("Variable in common block has "
16779 "DW_AT_data_member_location "
16780 "- DIE at %s [in module %s]"),
16781 sect_offset_str (child_die->sect_off),
16782 objfile_name (objfile));
16783
16784 if (attr_form_is_section_offset (member_loc))
16785 dwarf2_complex_location_expr_complaint ();
16786 else if (attr_form_is_constant (member_loc)
16787 || attr_form_is_block (member_loc))
16788 {
16789 if (attr)
16790 mark_common_block_symbol_computed (sym, die, attr,
16791 member_loc, cu);
16792 }
16793 else
16794 dwarf2_complex_location_expr_complaint ();
16795 }
16796 }
16797 }
16798
16799 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16800 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16801 }
16802 }
16803
16804 /* Create a type for a C++ namespace. */
16805
16806 static struct type *
16807 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16808 {
16809 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16810 const char *previous_prefix, *name;
16811 int is_anonymous;
16812 struct type *type;
16813
16814 /* For extensions, reuse the type of the original namespace. */
16815 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16816 {
16817 struct die_info *ext_die;
16818 struct dwarf2_cu *ext_cu = cu;
16819
16820 ext_die = dwarf2_extension (die, &ext_cu);
16821 type = read_type_die (ext_die, ext_cu);
16822
16823 /* EXT_CU may not be the same as CU.
16824 Ensure TYPE is recorded with CU in die_type_hash. */
16825 return set_die_type (die, type, cu);
16826 }
16827
16828 name = namespace_name (die, &is_anonymous, cu);
16829
16830 /* Now build the name of the current namespace. */
16831
16832 previous_prefix = determine_prefix (die, cu);
16833 if (previous_prefix[0] != '\0')
16834 name = typename_concat (&objfile->objfile_obstack,
16835 previous_prefix, name, 0, cu);
16836
16837 /* Create the type. */
16838 type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16839
16840 return set_die_type (die, type, cu);
16841 }
16842
16843 /* Read a namespace scope. */
16844
16845 static void
16846 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16847 {
16848 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16849 int is_anonymous;
16850
16851 /* Add a symbol associated to this if we haven't seen the namespace
16852 before. Also, add a using directive if it's an anonymous
16853 namespace. */
16854
16855 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16856 {
16857 struct type *type;
16858
16859 type = read_type_die (die, cu);
16860 new_symbol (die, type, cu);
16861
16862 namespace_name (die, &is_anonymous, cu);
16863 if (is_anonymous)
16864 {
16865 const char *previous_prefix = determine_prefix (die, cu);
16866
16867 std::vector<const char *> excludes;
16868 add_using_directive (using_directives (cu),
16869 previous_prefix, TYPE_NAME (type), NULL,
16870 NULL, excludes, 0, &objfile->objfile_obstack);
16871 }
16872 }
16873
16874 if (die->child != NULL)
16875 {
16876 struct die_info *child_die = die->child;
16877
16878 while (child_die && child_die->tag)
16879 {
16880 process_die (child_die, cu);
16881 child_die = sibling_die (child_die);
16882 }
16883 }
16884 }
16885
16886 /* Read a Fortran module as type. This DIE can be only a declaration used for
16887 imported module. Still we need that type as local Fortran "use ... only"
16888 declaration imports depend on the created type in determine_prefix. */
16889
16890 static struct type *
16891 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16892 {
16893 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16894 const char *module_name;
16895 struct type *type;
16896
16897 module_name = dwarf2_name (die, cu);
16898 type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16899
16900 return set_die_type (die, type, cu);
16901 }
16902
16903 /* Read a Fortran module. */
16904
16905 static void
16906 read_module (struct die_info *die, struct dwarf2_cu *cu)
16907 {
16908 struct die_info *child_die = die->child;
16909 struct type *type;
16910
16911 type = read_type_die (die, cu);
16912 new_symbol (die, type, cu);
16913
16914 while (child_die && child_die->tag)
16915 {
16916 process_die (child_die, cu);
16917 child_die = sibling_die (child_die);
16918 }
16919 }
16920
16921 /* Return the name of the namespace represented by DIE. Set
16922 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16923 namespace. */
16924
16925 static const char *
16926 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16927 {
16928 struct die_info *current_die;
16929 const char *name = NULL;
16930
16931 /* Loop through the extensions until we find a name. */
16932
16933 for (current_die = die;
16934 current_die != NULL;
16935 current_die = dwarf2_extension (die, &cu))
16936 {
16937 /* We don't use dwarf2_name here so that we can detect the absence
16938 of a name -> anonymous namespace. */
16939 name = dwarf2_string_attr (die, DW_AT_name, cu);
16940
16941 if (name != NULL)
16942 break;
16943 }
16944
16945 /* Is it an anonymous namespace? */
16946
16947 *is_anonymous = (name == NULL);
16948 if (*is_anonymous)
16949 name = CP_ANONYMOUS_NAMESPACE_STR;
16950
16951 return name;
16952 }
16953
16954 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16955 the user defined type vector. */
16956
16957 static struct type *
16958 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16959 {
16960 struct gdbarch *gdbarch
16961 = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16962 struct comp_unit_head *cu_header = &cu->header;
16963 struct type *type;
16964 struct attribute *attr_byte_size;
16965 struct attribute *attr_address_class;
16966 int byte_size, addr_class;
16967 struct type *target_type;
16968
16969 target_type = die_type (die, cu);
16970
16971 /* The die_type call above may have already set the type for this DIE. */
16972 type = get_die_type (die, cu);
16973 if (type)
16974 return type;
16975
16976 type = lookup_pointer_type (target_type);
16977
16978 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16979 if (attr_byte_size)
16980 byte_size = DW_UNSND (attr_byte_size);
16981 else
16982 byte_size = cu_header->addr_size;
16983
16984 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16985 if (attr_address_class)
16986 addr_class = DW_UNSND (attr_address_class);
16987 else
16988 addr_class = DW_ADDR_none;
16989
16990 ULONGEST alignment = get_alignment (cu, die);
16991
16992 /* If the pointer size, alignment, or address class is different
16993 than the default, create a type variant marked as such and set
16994 the length accordingly. */
16995 if (TYPE_LENGTH (type) != byte_size
16996 || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
16997 && alignment != TYPE_RAW_ALIGN (type))
16998 || addr_class != DW_ADDR_none)
16999 {
17000 if (gdbarch_address_class_type_flags_p (gdbarch))
17001 {
17002 int type_flags;
17003
17004 type_flags = gdbarch_address_class_type_flags
17005 (gdbarch, byte_size, addr_class);
17006 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17007 == 0);
17008 type = make_type_with_address_space (type, type_flags);
17009 }
17010 else if (TYPE_LENGTH (type) != byte_size)
17011 {
17012 complaint (_("invalid pointer size %d"), byte_size);
17013 }
17014 else if (TYPE_RAW_ALIGN (type) != alignment)
17015 {
17016 complaint (_("Invalid DW_AT_alignment"
17017 " - DIE at %s [in module %s]"),
17018 sect_offset_str (die->sect_off),
17019 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17020 }
17021 else
17022 {
17023 /* Should we also complain about unhandled address classes? */
17024 }
17025 }
17026
17027 TYPE_LENGTH (type) = byte_size;
17028 set_type_align (type, alignment);
17029 return set_die_type (die, type, cu);
17030 }
17031
17032 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17033 the user defined type vector. */
17034
17035 static struct type *
17036 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17037 {
17038 struct type *type;
17039 struct type *to_type;
17040 struct type *domain;
17041
17042 to_type = die_type (die, cu);
17043 domain = die_containing_type (die, cu);
17044
17045 /* The calls above may have already set the type for this DIE. */
17046 type = get_die_type (die, cu);
17047 if (type)
17048 return type;
17049
17050 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17051 type = lookup_methodptr_type (to_type);
17052 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17053 {
17054 struct type *new_type
17055 = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17056
17057 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17058 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17059 TYPE_VARARGS (to_type));
17060 type = lookup_methodptr_type (new_type);
17061 }
17062 else
17063 type = lookup_memberptr_type (to_type, domain);
17064
17065 return set_die_type (die, type, cu);
17066 }
17067
17068 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17069 the user defined type vector. */
17070
17071 static struct type *
17072 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17073 enum type_code refcode)
17074 {
17075 struct comp_unit_head *cu_header = &cu->header;
17076 struct type *type, *target_type;
17077 struct attribute *attr;
17078
17079 gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17080
17081 target_type = die_type (die, cu);
17082
17083 /* The die_type call above may have already set the type for this DIE. */
17084 type = get_die_type (die, cu);
17085 if (type)
17086 return type;
17087
17088 type = lookup_reference_type (target_type, refcode);
17089 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17090 if (attr)
17091 {
17092 TYPE_LENGTH (type) = DW_UNSND (attr);
17093 }
17094 else
17095 {
17096 TYPE_LENGTH (type) = cu_header->addr_size;
17097 }
17098 maybe_set_alignment (cu, die, type);
17099 return set_die_type (die, type, cu);
17100 }
17101
17102 /* Add the given cv-qualifiers to the element type of the array. GCC
17103 outputs DWARF type qualifiers that apply to an array, not the
17104 element type. But GDB relies on the array element type to carry
17105 the cv-qualifiers. This mimics section 6.7.3 of the C99
17106 specification. */
17107
17108 static struct type *
17109 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17110 struct type *base_type, int cnst, int voltl)
17111 {
17112 struct type *el_type, *inner_array;
17113
17114 base_type = copy_type (base_type);
17115 inner_array = base_type;
17116
17117 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17118 {
17119 TYPE_TARGET_TYPE (inner_array) =
17120 copy_type (TYPE_TARGET_TYPE (inner_array));
17121 inner_array = TYPE_TARGET_TYPE (inner_array);
17122 }
17123
17124 el_type = TYPE_TARGET_TYPE (inner_array);
17125 cnst |= TYPE_CONST (el_type);
17126 voltl |= TYPE_VOLATILE (el_type);
17127 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17128
17129 return set_die_type (die, base_type, cu);
17130 }
17131
17132 static struct type *
17133 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17134 {
17135 struct type *base_type, *cv_type;
17136
17137 base_type = die_type (die, cu);
17138
17139 /* The die_type call above may have already set the type for this DIE. */
17140 cv_type = get_die_type (die, cu);
17141 if (cv_type)
17142 return cv_type;
17143
17144 /* In case the const qualifier is applied to an array type, the element type
17145 is so qualified, not the array type (section 6.7.3 of C99). */
17146 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17147 return add_array_cv_type (die, cu, base_type, 1, 0);
17148
17149 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17150 return set_die_type (die, cv_type, cu);
17151 }
17152
17153 static struct type *
17154 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17155 {
17156 struct type *base_type, *cv_type;
17157
17158 base_type = die_type (die, cu);
17159
17160 /* The die_type call above may have already set the type for this DIE. */
17161 cv_type = get_die_type (die, cu);
17162 if (cv_type)
17163 return cv_type;
17164
17165 /* In case the volatile qualifier is applied to an array type, the
17166 element type is so qualified, not the array type (section 6.7.3
17167 of C99). */
17168 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17169 return add_array_cv_type (die, cu, base_type, 0, 1);
17170
17171 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17172 return set_die_type (die, cv_type, cu);
17173 }
17174
17175 /* Handle DW_TAG_restrict_type. */
17176
17177 static struct type *
17178 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17179 {
17180 struct type *base_type, *cv_type;
17181
17182 base_type = die_type (die, cu);
17183
17184 /* The die_type call above may have already set the type for this DIE. */
17185 cv_type = get_die_type (die, cu);
17186 if (cv_type)
17187 return cv_type;
17188
17189 cv_type = make_restrict_type (base_type);
17190 return set_die_type (die, cv_type, cu);
17191 }
17192
17193 /* Handle DW_TAG_atomic_type. */
17194
17195 static struct type *
17196 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17197 {
17198 struct type *base_type, *cv_type;
17199
17200 base_type = die_type (die, cu);
17201
17202 /* The die_type call above may have already set the type for this DIE. */
17203 cv_type = get_die_type (die, cu);
17204 if (cv_type)
17205 return cv_type;
17206
17207 cv_type = make_atomic_type (base_type);
17208 return set_die_type (die, cv_type, cu);
17209 }
17210
17211 /* Extract all information from a DW_TAG_string_type DIE and add to
17212 the user defined type vector. It isn't really a user defined type,
17213 but it behaves like one, with other DIE's using an AT_user_def_type
17214 attribute to reference it. */
17215
17216 static struct type *
17217 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17218 {
17219 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17220 struct gdbarch *gdbarch = get_objfile_arch (objfile);
17221 struct type *type, *range_type, *index_type, *char_type;
17222 struct attribute *attr;
17223 unsigned int length;
17224
17225 attr = dwarf2_attr (die, DW_AT_string_length, cu);
17226 if (attr)
17227 {
17228 length = DW_UNSND (attr);
17229 }
17230 else
17231 {
17232 /* Check for the DW_AT_byte_size attribute. */
17233 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17234 if (attr)
17235 {
17236 length = DW_UNSND (attr);
17237 }
17238 else
17239 {
17240 length = 1;
17241 }
17242 }
17243
17244 index_type = objfile_type (objfile)->builtin_int;
17245 range_type = create_static_range_type (NULL, index_type, 1, length);
17246 char_type = language_string_char_type (cu->language_defn, gdbarch);
17247 type = create_string_type (NULL, char_type, range_type);
17248
17249 return set_die_type (die, type, cu);
17250 }
17251
17252 /* Assuming that DIE corresponds to a function, returns nonzero
17253 if the function is prototyped. */
17254
17255 static int
17256 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17257 {
17258 struct attribute *attr;
17259
17260 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17261 if (attr && (DW_UNSND (attr) != 0))
17262 return 1;
17263
17264 /* The DWARF standard implies that the DW_AT_prototyped attribute
17265 is only meaninful for C, but the concept also extends to other
17266 languages that allow unprototyped functions (Eg: Objective C).
17267 For all other languages, assume that functions are always
17268 prototyped. */
17269 if (cu->language != language_c
17270 && cu->language != language_objc
17271 && cu->language != language_opencl)
17272 return 1;
17273
17274 /* RealView does not emit DW_AT_prototyped. We can not distinguish
17275 prototyped and unprototyped functions; default to prototyped,
17276 since that is more common in modern code (and RealView warns
17277 about unprototyped functions). */
17278 if (producer_is_realview (cu->producer))
17279 return 1;
17280
17281 return 0;
17282 }
17283
17284 /* Handle DIES due to C code like:
17285
17286 struct foo
17287 {
17288 int (*funcp)(int a, long l);
17289 int b;
17290 };
17291
17292 ('funcp' generates a DW_TAG_subroutine_type DIE). */
17293
17294 static struct type *
17295 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17296 {
17297 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17298 struct type *type; /* Type that this function returns. */
17299 struct type *ftype; /* Function that returns above type. */
17300 struct attribute *attr;
17301
17302 type = die_type (die, cu);
17303
17304 /* The die_type call above may have already set the type for this DIE. */
17305 ftype = get_die_type (die, cu);
17306 if (ftype)
17307 return ftype;
17308
17309 ftype = lookup_function_type (type);
17310
17311 if (prototyped_function_p (die, cu))
17312 TYPE_PROTOTYPED (ftype) = 1;
17313
17314 /* Store the calling convention in the type if it's available in
17315 the subroutine die. Otherwise set the calling convention to
17316 the default value DW_CC_normal. */
17317 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17318 if (attr)
17319 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17320 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17321 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17322 else
17323 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17324
17325 /* Record whether the function returns normally to its caller or not
17326 if the DWARF producer set that information. */
17327 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17328 if (attr && (DW_UNSND (attr) != 0))
17329 TYPE_NO_RETURN (ftype) = 1;
17330
17331 /* We need to add the subroutine type to the die immediately so
17332 we don't infinitely recurse when dealing with parameters
17333 declared as the same subroutine type. */
17334 set_die_type (die, ftype, cu);
17335
17336 if (die->child != NULL)
17337 {
17338 struct type *void_type = objfile_type (objfile)->builtin_void;
17339 struct die_info *child_die;
17340 int nparams, iparams;
17341
17342 /* Count the number of parameters.
17343 FIXME: GDB currently ignores vararg functions, but knows about
17344 vararg member functions. */
17345 nparams = 0;
17346 child_die = die->child;
17347 while (child_die && child_die->tag)
17348 {
17349 if (child_die->tag == DW_TAG_formal_parameter)
17350 nparams++;
17351 else if (child_die->tag == DW_TAG_unspecified_parameters)
17352 TYPE_VARARGS (ftype) = 1;
17353 child_die = sibling_die (child_die);
17354 }
17355
17356 /* Allocate storage for parameters and fill them in. */
17357 TYPE_NFIELDS (ftype) = nparams;
17358 TYPE_FIELDS (ftype) = (struct field *)
17359 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17360
17361 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
17362 even if we error out during the parameters reading below. */
17363 for (iparams = 0; iparams < nparams; iparams++)
17364 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17365
17366 iparams = 0;
17367 child_die = die->child;
17368 while (child_die && child_die->tag)
17369 {
17370 if (child_die->tag == DW_TAG_formal_parameter)
17371 {
17372 struct type *arg_type;
17373
17374 /* DWARF version 2 has no clean way to discern C++
17375 static and non-static member functions. G++ helps
17376 GDB by marking the first parameter for non-static
17377 member functions (which is the this pointer) as
17378 artificial. We pass this information to
17379 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17380
17381 DWARF version 3 added DW_AT_object_pointer, which GCC
17382 4.5 does not yet generate. */
17383 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17384 if (attr)
17385 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17386 else
17387 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17388 arg_type = die_type (child_die, cu);
17389
17390 /* RealView does not mark THIS as const, which the testsuite
17391 expects. GCC marks THIS as const in method definitions,
17392 but not in the class specifications (GCC PR 43053). */
17393 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17394 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17395 {
17396 int is_this = 0;
17397 struct dwarf2_cu *arg_cu = cu;
17398 const char *name = dwarf2_name (child_die, cu);
17399
17400 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17401 if (attr)
17402 {
17403 /* If the compiler emits this, use it. */
17404 if (follow_die_ref (die, attr, &arg_cu) == child_die)
17405 is_this = 1;
17406 }
17407 else if (name && strcmp (name, "this") == 0)
17408 /* Function definitions will have the argument names. */
17409 is_this = 1;
17410 else if (name == NULL && iparams == 0)
17411 /* Declarations may not have the names, so like
17412 elsewhere in GDB, assume an artificial first
17413 argument is "this". */
17414 is_this = 1;
17415
17416 if (is_this)
17417 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17418 arg_type, 0);
17419 }
17420
17421 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17422 iparams++;
17423 }
17424 child_die = sibling_die (child_die);
17425 }
17426 }
17427
17428 return ftype;
17429 }
17430
17431 static struct type *
17432 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17433 {
17434 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17435 const char *name = NULL;
17436 struct type *this_type, *target_type;
17437
17438 name = dwarf2_full_name (NULL, die, cu);
17439 this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17440 TYPE_TARGET_STUB (this_type) = 1;
17441 set_die_type (die, this_type, cu);
17442 target_type = die_type (die, cu);
17443 if (target_type != this_type)
17444 TYPE_TARGET_TYPE (this_type) = target_type;
17445 else
17446 {
17447 /* Self-referential typedefs are, it seems, not allowed by the DWARF
17448 spec and cause infinite loops in GDB. */
17449 complaint (_("Self-referential DW_TAG_typedef "
17450 "- DIE at %s [in module %s]"),
17451 sect_offset_str (die->sect_off), objfile_name (objfile));
17452 TYPE_TARGET_TYPE (this_type) = NULL;
17453 }
17454 return this_type;
17455 }
17456
17457 /* Allocate a floating-point type of size BITS and name NAME. Pass NAME_HINT
17458 (which may be different from NAME) to the architecture back-end to allow
17459 it to guess the correct format if necessary. */
17460
17461 static struct type *
17462 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17463 const char *name_hint)
17464 {
17465 struct gdbarch *gdbarch = get_objfile_arch (objfile);
17466 const struct floatformat **format;
17467 struct type *type;
17468
17469 format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17470 if (format)
17471 type = init_float_type (objfile, bits, name, format);
17472 else
17473 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17474
17475 return type;
17476 }
17477
17478 /* Allocate an integer type of size BITS and name NAME. */
17479
17480 static struct type *
17481 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17482 int bits, int unsigned_p, const char *name)
17483 {
17484 struct type *type;
17485
17486 /* Versions of Intel's C Compiler generate an integer type called "void"
17487 instead of using DW_TAG_unspecified_type. This has been seen on
17488 at least versions 14, 17, and 18. */
17489 if (bits == 0 && producer_is_icc (cu) && name != nullptr
17490 && strcmp (name, "void") == 0)
17491 type = objfile_type (objfile)->builtin_void;
17492 else
17493 type = init_integer_type (objfile, bits, unsigned_p, name);
17494
17495 return type;
17496 }
17497
17498 /* Initialise and return a floating point type of size BITS suitable for
17499 use as a component of a complex number. The NAME_HINT is passed through
17500 when initialising the floating point type and is the name of the complex
17501 type.
17502
17503 As DWARF doesn't currently provide an explicit name for the components
17504 of a complex number, but it can be helpful to have these components
17505 named, we try to select a suitable name based on the size of the
17506 component. */
17507 static struct type *
17508 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17509 struct objfile *objfile,
17510 int bits, const char *name_hint)
17511 {
17512 gdbarch *gdbarch = get_objfile_arch (objfile);
17513 struct type *tt = nullptr;
17514
17515 /* Try to find a suitable floating point builtin type of size BITS.
17516 We're going to use the name of this type as the name for the complex
17517 target type that we are about to create. */
17518 switch (cu->language)
17519 {
17520 case language_fortran:
17521 switch (bits)
17522 {
17523 case 32:
17524 tt = builtin_f_type (gdbarch)->builtin_real;
17525 break;
17526 case 64:
17527 tt = builtin_f_type (gdbarch)->builtin_real_s8;
17528 break;
17529 case 96: /* The x86-32 ABI specifies 96-bit long double. */
17530 case 128:
17531 tt = builtin_f_type (gdbarch)->builtin_real_s16;
17532 break;
17533 }
17534 break;
17535 default:
17536 switch (bits)
17537 {
17538 case 32:
17539 tt = builtin_type (gdbarch)->builtin_float;
17540 break;
17541 case 64:
17542 tt = builtin_type (gdbarch)->builtin_double;
17543 break;
17544 case 96: /* The x86-32 ABI specifies 96-bit long double. */
17545 case 128:
17546 tt = builtin_type (gdbarch)->builtin_long_double;
17547 break;
17548 }
17549 break;
17550 }
17551
17552 /* If the type we found doesn't match the size we were looking for, then
17553 pretend we didn't find a type at all, the complex target type we
17554 create will then be nameless. */
17555 if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
17556 tt = nullptr;
17557
17558 const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
17559 return dwarf2_init_float_type (objfile, bits, name, name_hint);
17560 }
17561
17562 /* Find a representation of a given base type and install
17563 it in the TYPE field of the die. */
17564
17565 static struct type *
17566 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17567 {
17568 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17569 struct type *type;
17570 struct attribute *attr;
17571 int encoding = 0, bits = 0;
17572 const char *name;
17573
17574 attr = dwarf2_attr (die, DW_AT_encoding, cu);
17575 if (attr)
17576 {
17577 encoding = DW_UNSND (attr);
17578 }
17579 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17580 if (attr)
17581 {
17582 bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17583 }
17584 name = dwarf2_name (die, cu);
17585 if (!name)
17586 {
17587 complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17588 }
17589
17590 switch (encoding)
17591 {
17592 case DW_ATE_address:
17593 /* Turn DW_ATE_address into a void * pointer. */
17594 type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17595 type = init_pointer_type (objfile, bits, name, type);
17596 break;
17597 case DW_ATE_boolean:
17598 type = init_boolean_type (objfile, bits, 1, name);
17599 break;
17600 case DW_ATE_complex_float:
17601 type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name);
17602 type = init_complex_type (objfile, name, type);
17603 break;
17604 case DW_ATE_decimal_float:
17605 type = init_decfloat_type (objfile, bits, name);
17606 break;
17607 case DW_ATE_float:
17608 type = dwarf2_init_float_type (objfile, bits, name, name);
17609 break;
17610 case DW_ATE_signed:
17611 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17612 break;
17613 case DW_ATE_unsigned:
17614 if (cu->language == language_fortran
17615 && name
17616 && startswith (name, "character("))
17617 type = init_character_type (objfile, bits, 1, name);
17618 else
17619 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17620 break;
17621 case DW_ATE_signed_char:
17622 if (cu->language == language_ada || cu->language == language_m2
17623 || cu->language == language_pascal
17624 || cu->language == language_fortran)
17625 type = init_character_type (objfile, bits, 0, name);
17626 else
17627 type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17628 break;
17629 case DW_ATE_unsigned_char:
17630 if (cu->language == language_ada || cu->language == language_m2
17631 || cu->language == language_pascal
17632 || cu->language == language_fortran
17633 || cu->language == language_rust)
17634 type = init_character_type (objfile, bits, 1, name);
17635 else
17636 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17637 break;
17638 case DW_ATE_UTF:
17639 {
17640 gdbarch *arch = get_objfile_arch (objfile);
17641
17642 if (bits == 16)
17643 type = builtin_type (arch)->builtin_char16;
17644 else if (bits == 32)
17645 type = builtin_type (arch)->builtin_char32;
17646 else
17647 {
17648 complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17649 bits);
17650 type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17651 }
17652 return set_die_type (die, type, cu);
17653 }
17654 break;
17655
17656 default:
17657 complaint (_("unsupported DW_AT_encoding: '%s'"),
17658 dwarf_type_encoding_name (encoding));
17659 type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17660 break;
17661 }
17662
17663 if (name && strcmp (name, "char") == 0)
17664 TYPE_NOSIGN (type) = 1;
17665
17666 maybe_set_alignment (cu, die, type);
17667
17668 return set_die_type (die, type, cu);
17669 }
17670
17671 /* Parse dwarf attribute if it's a block, reference or constant and put the
17672 resulting value of the attribute into struct bound_prop.
17673 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
17674
17675 static int
17676 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17677 struct dwarf2_cu *cu, struct dynamic_prop *prop)
17678 {
17679 struct dwarf2_property_baton *baton;
17680 struct obstack *obstack
17681 = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17682
17683 if (attr == NULL || prop == NULL)
17684 return 0;
17685
17686 if (attr_form_is_block (attr))
17687 {
17688 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17689 baton->referenced_type = NULL;
17690 baton->locexpr.per_cu = cu->per_cu;
17691 baton->locexpr.size = DW_BLOCK (attr)->size;
17692 baton->locexpr.data = DW_BLOCK (attr)->data;
17693 prop->data.baton = baton;
17694 prop->kind = PROP_LOCEXPR;
17695 gdb_assert (prop->data.baton != NULL);
17696 }
17697 else if (attr_form_is_ref (attr))
17698 {
17699 struct dwarf2_cu *target_cu = cu;
17700 struct die_info *target_die;
17701 struct attribute *target_attr;
17702
17703 target_die = follow_die_ref (die, attr, &target_cu);
17704 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17705 if (target_attr == NULL)
17706 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17707 target_cu);
17708 if (target_attr == NULL)
17709 return 0;
17710
17711 switch (target_attr->name)
17712 {
17713 case DW_AT_location:
17714 if (attr_form_is_section_offset (target_attr))
17715 {
17716 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17717 baton->referenced_type = die_type (target_die, target_cu);
17718 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17719 prop->data.baton = baton;
17720 prop->kind = PROP_LOCLIST;
17721 gdb_assert (prop->data.baton != NULL);
17722 }
17723 else if (attr_form_is_block (target_attr))
17724 {
17725 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17726 baton->referenced_type = die_type (target_die, target_cu);
17727 baton->locexpr.per_cu = cu->per_cu;
17728 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17729 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17730 prop->data.baton = baton;
17731 prop->kind = PROP_LOCEXPR;
17732 gdb_assert (prop->data.baton != NULL);
17733 }
17734 else
17735 {
17736 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17737 "dynamic property");
17738 return 0;
17739 }
17740 break;
17741 case DW_AT_data_member_location:
17742 {
17743 LONGEST offset;
17744
17745 if (!handle_data_member_location (target_die, target_cu,
17746 &offset))
17747 return 0;
17748
17749 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17750 baton->referenced_type = read_type_die (target_die->parent,
17751 target_cu);
17752 baton->offset_info.offset = offset;
17753 baton->offset_info.type = die_type (target_die, target_cu);
17754 prop->data.baton = baton;
17755 prop->kind = PROP_ADDR_OFFSET;
17756 break;
17757 }
17758 }
17759 }
17760 else if (attr_form_is_constant (attr))
17761 {
17762 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17763 prop->kind = PROP_CONST;
17764 }
17765 else
17766 {
17767 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17768 dwarf2_name (die, cu));
17769 return 0;
17770 }
17771
17772 return 1;
17773 }
17774
17775 /* Read the given DW_AT_subrange DIE. */
17776
17777 static struct type *
17778 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17779 {
17780 struct type *base_type, *orig_base_type;
17781 struct type *range_type;
17782 struct attribute *attr;
17783 struct dynamic_prop low, high;
17784 int low_default_is_valid;
17785 int high_bound_is_count = 0;
17786 const char *name;
17787 ULONGEST negative_mask;
17788
17789 orig_base_type = die_type (die, cu);
17790 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17791 whereas the real type might be. So, we use ORIG_BASE_TYPE when
17792 creating the range type, but we use the result of check_typedef
17793 when examining properties of the type. */
17794 base_type = check_typedef (orig_base_type);
17795
17796 /* The die_type call above may have already set the type for this DIE. */
17797 range_type = get_die_type (die, cu);
17798 if (range_type)
17799 return range_type;
17800
17801 low.kind = PROP_CONST;
17802 high.kind = PROP_CONST;
17803 high.data.const_val = 0;
17804
17805 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17806 omitting DW_AT_lower_bound. */
17807 switch (cu->language)
17808 {
17809 case language_c:
17810 case language_cplus:
17811 low.data.const_val = 0;
17812 low_default_is_valid = 1;
17813 break;
17814 case language_fortran:
17815 low.data.const_val = 1;
17816 low_default_is_valid = 1;
17817 break;
17818 case language_d:
17819 case language_objc:
17820 case language_rust:
17821 low.data.const_val = 0;
17822 low_default_is_valid = (cu->header.version >= 4);
17823 break;
17824 case language_ada:
17825 case language_m2:
17826 case language_pascal:
17827 low.data.const_val = 1;
17828 low_default_is_valid = (cu->header.version >= 4);
17829 break;
17830 default:
17831 low.data.const_val = 0;
17832 low_default_is_valid = 0;
17833 break;
17834 }
17835
17836 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17837 if (attr)
17838 attr_to_dynamic_prop (attr, die, cu, &low);
17839 else if (!low_default_is_valid)
17840 complaint (_("Missing DW_AT_lower_bound "
17841 "- DIE at %s [in module %s]"),
17842 sect_offset_str (die->sect_off),
17843 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17844
17845 struct attribute *attr_ub, *attr_count;
17846 attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17847 if (!attr_to_dynamic_prop (attr, die, cu, &high))
17848 {
17849 attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17850 if (attr_to_dynamic_prop (attr, die, cu, &high))
17851 {
17852 /* If bounds are constant do the final calculation here. */
17853 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17854 high.data.const_val = low.data.const_val + high.data.const_val - 1;
17855 else
17856 high_bound_is_count = 1;
17857 }
17858 else
17859 {
17860 if (attr_ub != NULL)
17861 complaint (_("Unresolved DW_AT_upper_bound "
17862 "- DIE at %s [in module %s]"),
17863 sect_offset_str (die->sect_off),
17864 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17865 if (attr_count != NULL)
17866 complaint (_("Unresolved DW_AT_count "
17867 "- DIE at %s [in module %s]"),
17868 sect_offset_str (die->sect_off),
17869 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17870 }
17871
17872 }
17873
17874 /* Dwarf-2 specifications explicitly allows to create subrange types
17875 without specifying a base type.
17876 In that case, the base type must be set to the type of
17877 the lower bound, upper bound or count, in that order, if any of these
17878 three attributes references an object that has a type.
17879 If no base type is found, the Dwarf-2 specifications say that
17880 a signed integer type of size equal to the size of an address should
17881 be used.
17882 For the following C code: `extern char gdb_int [];'
17883 GCC produces an empty range DIE.
17884 FIXME: muller/2010-05-28: Possible references to object for low bound,
17885 high bound or count are not yet handled by this code. */
17886 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17887 {
17888 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17889 struct gdbarch *gdbarch = get_objfile_arch (objfile);
17890 int addr_size = gdbarch_addr_bit (gdbarch) /8;
17891 struct type *int_type = objfile_type (objfile)->builtin_int;
17892
17893 /* Test "int", "long int", and "long long int" objfile types,
17894 and select the first one having a size above or equal to the
17895 architecture address size. */
17896 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17897 base_type = int_type;
17898 else
17899 {
17900 int_type = objfile_type (objfile)->builtin_long;
17901 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17902 base_type = int_type;
17903 else
17904 {
17905 int_type = objfile_type (objfile)->builtin_long_long;
17906 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17907 base_type = int_type;
17908 }
17909 }
17910 }
17911
17912 /* Normally, the DWARF producers are expected to use a signed
17913 constant form (Eg. DW_FORM_sdata) to express negative bounds.
17914 But this is unfortunately not always the case, as witnessed
17915 with GCC, for instance, where the ambiguous DW_FORM_dataN form
17916 is used instead. To work around that ambiguity, we treat
17917 the bounds as signed, and thus sign-extend their values, when
17918 the base type is signed. */
17919 negative_mask =
17920 -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17921 if (low.kind == PROP_CONST
17922 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17923 low.data.const_val |= negative_mask;
17924 if (high.kind == PROP_CONST
17925 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17926 high.data.const_val |= negative_mask;
17927
17928 range_type = create_range_type (NULL, orig_base_type, &low, &high);
17929
17930 if (high_bound_is_count)
17931 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17932
17933 /* Ada expects an empty array on no boundary attributes. */
17934 if (attr == NULL && cu->language != language_ada)
17935 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17936
17937 name = dwarf2_name (die, cu);
17938 if (name)
17939 TYPE_NAME (range_type) = name;
17940
17941 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17942 if (attr)
17943 TYPE_LENGTH (range_type) = DW_UNSND (attr);
17944
17945 maybe_set_alignment (cu, die, range_type);
17946
17947 set_die_type (die, range_type, cu);
17948
17949 /* set_die_type should be already done. */
17950 set_descriptive_type (range_type, die, cu);
17951
17952 return range_type;
17953 }
17954
17955 static struct type *
17956 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17957 {
17958 struct type *type;
17959
17960 type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17961 NULL);
17962 TYPE_NAME (type) = dwarf2_name (die, cu);
17963
17964 /* In Ada, an unspecified type is typically used when the description
17965 of the type is defered to a different unit. When encountering
17966 such a type, we treat it as a stub, and try to resolve it later on,
17967 when needed. */
17968 if (cu->language == language_ada)
17969 TYPE_STUB (type) = 1;
17970
17971 return set_die_type (die, type, cu);
17972 }
17973
17974 /* Read a single die and all its descendents. Set the die's sibling
17975 field to NULL; set other fields in the die correctly, and set all
17976 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
17977 location of the info_ptr after reading all of those dies. PARENT
17978 is the parent of the die in question. */
17979
17980 static struct die_info *
17981 read_die_and_children (const struct die_reader_specs *reader,
17982 const gdb_byte *info_ptr,
17983 const gdb_byte **new_info_ptr,
17984 struct die_info *parent)
17985 {
17986 struct die_info *die;
17987 const gdb_byte *cur_ptr;
17988 int has_children;
17989
17990 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17991 if (die == NULL)
17992 {
17993 *new_info_ptr = cur_ptr;
17994 return NULL;
17995 }
17996 store_in_ref_table (die, reader->cu);
17997
17998 if (has_children)
17999 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
18000 else
18001 {
18002 die->child = NULL;
18003 *new_info_ptr = cur_ptr;
18004 }
18005
18006 die->sibling = NULL;
18007 die->parent = parent;
18008 return die;
18009 }
18010
18011 /* Read a die, all of its descendents, and all of its siblings; set
18012 all of the fields of all of the dies correctly. Arguments are as
18013 in read_die_and_children. */
18014
18015 static struct die_info *
18016 read_die_and_siblings_1 (const struct die_reader_specs *reader,
18017 const gdb_byte *info_ptr,
18018 const gdb_byte **new_info_ptr,
18019 struct die_info *parent)
18020 {
18021 struct die_info *first_die, *last_sibling;
18022 const gdb_byte *cur_ptr;
18023
18024 cur_ptr = info_ptr;
18025 first_die = last_sibling = NULL;
18026
18027 while (1)
18028 {
18029 struct die_info *die
18030 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
18031
18032 if (die == NULL)
18033 {
18034 *new_info_ptr = cur_ptr;
18035 return first_die;
18036 }
18037
18038 if (!first_die)
18039 first_die = die;
18040 else
18041 last_sibling->sibling = die;
18042
18043 last_sibling = die;
18044 }
18045 }
18046
18047 /* Read a die, all of its descendents, and all of its siblings; set
18048 all of the fields of all of the dies correctly. Arguments are as
18049 in read_die_and_children.
18050 This the main entry point for reading a DIE and all its children. */
18051
18052 static struct die_info *
18053 read_die_and_siblings (const struct die_reader_specs *reader,
18054 const gdb_byte *info_ptr,
18055 const gdb_byte **new_info_ptr,
18056 struct die_info *parent)
18057 {
18058 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18059 new_info_ptr, parent);
18060
18061 if (dwarf_die_debug)
18062 {
18063 fprintf_unfiltered (gdb_stdlog,
18064 "Read die from %s@0x%x of %s:\n",
18065 get_section_name (reader->die_section),
18066 (unsigned) (info_ptr - reader->die_section->buffer),
18067 bfd_get_filename (reader->abfd));
18068 dump_die (die, dwarf_die_debug);
18069 }
18070
18071 return die;
18072 }
18073
18074 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18075 attributes.
18076 The caller is responsible for filling in the extra attributes
18077 and updating (*DIEP)->num_attrs.
18078 Set DIEP to point to a newly allocated die with its information,
18079 except for its child, sibling, and parent fields.
18080 Set HAS_CHILDREN to tell whether the die has children or not. */
18081
18082 static const gdb_byte *
18083 read_full_die_1 (const struct die_reader_specs *reader,
18084 struct die_info **diep, const gdb_byte *info_ptr,
18085 int *has_children, int num_extra_attrs)
18086 {
18087 unsigned int abbrev_number, bytes_read, i;
18088 struct abbrev_info *abbrev;
18089 struct die_info *die;
18090 struct dwarf2_cu *cu = reader->cu;
18091 bfd *abfd = reader->abfd;
18092
18093 sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18094 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18095 info_ptr += bytes_read;
18096 if (!abbrev_number)
18097 {
18098 *diep = NULL;
18099 *has_children = 0;
18100 return info_ptr;
18101 }
18102
18103 abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18104 if (!abbrev)
18105 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18106 abbrev_number,
18107 bfd_get_filename (abfd));
18108
18109 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18110 die->sect_off = sect_off;
18111 die->tag = abbrev->tag;
18112 die->abbrev = abbrev_number;
18113
18114 /* Make the result usable.
18115 The caller needs to update num_attrs after adding the extra
18116 attributes. */
18117 die->num_attrs = abbrev->num_attrs;
18118
18119 for (i = 0; i < abbrev->num_attrs; ++i)
18120 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18121 info_ptr);
18122
18123 *diep = die;
18124 *has_children = abbrev->has_children;
18125 return info_ptr;
18126 }
18127
18128 /* Read a die and all its attributes.
18129 Set DIEP to point to a newly allocated die with its information,
18130 except for its child, sibling, and parent fields.
18131 Set HAS_CHILDREN to tell whether the die has children or not. */
18132
18133 static const gdb_byte *
18134 read_full_die (const struct die_reader_specs *reader,
18135 struct die_info **diep, const gdb_byte *info_ptr,
18136 int *has_children)
18137 {
18138 const gdb_byte *result;
18139
18140 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18141
18142 if (dwarf_die_debug)
18143 {
18144 fprintf_unfiltered (gdb_stdlog,
18145 "Read die from %s@0x%x of %s:\n",
18146 get_section_name (reader->die_section),
18147 (unsigned) (info_ptr - reader->die_section->buffer),
18148 bfd_get_filename (reader->abfd));
18149 dump_die (*diep, dwarf_die_debug);
18150 }
18151
18152 return result;
18153 }
18154 \f
18155 /* Abbreviation tables.
18156
18157 In DWARF version 2, the description of the debugging information is
18158 stored in a separate .debug_abbrev section. Before we read any
18159 dies from a section we read in all abbreviations and install them
18160 in a hash table. */
18161
18162 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
18163
18164 struct abbrev_info *
18165 abbrev_table::alloc_abbrev ()
18166 {
18167 struct abbrev_info *abbrev;
18168
18169 abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18170 memset (abbrev, 0, sizeof (struct abbrev_info));
18171
18172 return abbrev;
18173 }
18174
18175 /* Add an abbreviation to the table. */
18176
18177 void
18178 abbrev_table::add_abbrev (unsigned int abbrev_number,
18179 struct abbrev_info *abbrev)
18180 {
18181 unsigned int hash_number;
18182
18183 hash_number = abbrev_number % ABBREV_HASH_SIZE;
18184 abbrev->next = m_abbrevs[hash_number];
18185 m_abbrevs[hash_number] = abbrev;
18186 }
18187
18188 /* Look up an abbrev in the table.
18189 Returns NULL if the abbrev is not found. */
18190
18191 struct abbrev_info *
18192 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18193 {
18194 unsigned int hash_number;
18195 struct abbrev_info *abbrev;
18196
18197 hash_number = abbrev_number % ABBREV_HASH_SIZE;
18198 abbrev = m_abbrevs[hash_number];
18199
18200 while (abbrev)
18201 {
18202 if (abbrev->number == abbrev_number)
18203 return abbrev;
18204 abbrev = abbrev->next;
18205 }
18206 return NULL;
18207 }
18208
18209 /* Read in an abbrev table. */
18210
18211 static abbrev_table_up
18212 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18213 struct dwarf2_section_info *section,
18214 sect_offset sect_off)
18215 {
18216 struct objfile *objfile = dwarf2_per_objfile->objfile;
18217 bfd *abfd = get_section_bfd_owner (section);
18218 const gdb_byte *abbrev_ptr;
18219 struct abbrev_info *cur_abbrev;
18220 unsigned int abbrev_number, bytes_read, abbrev_name;
18221 unsigned int abbrev_form;
18222 struct attr_abbrev *cur_attrs;
18223 unsigned int allocated_attrs;
18224
18225 abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18226
18227 dwarf2_read_section (objfile, section);
18228 abbrev_ptr = section->buffer + to_underlying (sect_off);
18229 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18230 abbrev_ptr += bytes_read;
18231
18232 allocated_attrs = ATTR_ALLOC_CHUNK;
18233 cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18234
18235 /* Loop until we reach an abbrev number of 0. */
18236 while (abbrev_number)
18237 {
18238 cur_abbrev = abbrev_table->alloc_abbrev ();
18239
18240 /* read in abbrev header */
18241 cur_abbrev->number = abbrev_number;
18242 cur_abbrev->tag
18243 = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18244 abbrev_ptr += bytes_read;
18245 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18246 abbrev_ptr += 1;
18247
18248 /* now read in declarations */
18249 for (;;)
18250 {
18251 LONGEST implicit_const;
18252
18253 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18254 abbrev_ptr += bytes_read;
18255 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18256 abbrev_ptr += bytes_read;
18257 if (abbrev_form == DW_FORM_implicit_const)
18258 {
18259 implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18260 &bytes_read);
18261 abbrev_ptr += bytes_read;
18262 }
18263 else
18264 {
18265 /* Initialize it due to a false compiler warning. */
18266 implicit_const = -1;
18267 }
18268
18269 if (abbrev_name == 0)
18270 break;
18271
18272 if (cur_abbrev->num_attrs == allocated_attrs)
18273 {
18274 allocated_attrs += ATTR_ALLOC_CHUNK;
18275 cur_attrs
18276 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18277 }
18278
18279 cur_attrs[cur_abbrev->num_attrs].name
18280 = (enum dwarf_attribute) abbrev_name;
18281 cur_attrs[cur_abbrev->num_attrs].form
18282 = (enum dwarf_form) abbrev_form;
18283 cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18284 ++cur_abbrev->num_attrs;
18285 }
18286
18287 cur_abbrev->attrs =
18288 XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18289 cur_abbrev->num_attrs);
18290 memcpy (cur_abbrev->attrs, cur_attrs,
18291 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18292
18293 abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18294
18295 /* Get next abbreviation.
18296 Under Irix6 the abbreviations for a compilation unit are not
18297 always properly terminated with an abbrev number of 0.
18298 Exit loop if we encounter an abbreviation which we have
18299 already read (which means we are about to read the abbreviations
18300 for the next compile unit) or if the end of the abbreviation
18301 table is reached. */
18302 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18303 break;
18304 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18305 abbrev_ptr += bytes_read;
18306 if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18307 break;
18308 }
18309
18310 xfree (cur_attrs);
18311 return abbrev_table;
18312 }
18313
18314 /* Returns nonzero if TAG represents a type that we might generate a partial
18315 symbol for. */
18316
18317 static int
18318 is_type_tag_for_partial (int tag)
18319 {
18320 switch (tag)
18321 {
18322 #if 0
18323 /* Some types that would be reasonable to generate partial symbols for,
18324 that we don't at present. */
18325 case DW_TAG_array_type:
18326 case DW_TAG_file_type:
18327 case DW_TAG_ptr_to_member_type:
18328 case DW_TAG_set_type:
18329 case DW_TAG_string_type:
18330 case DW_TAG_subroutine_type:
18331 #endif
18332 case DW_TAG_base_type:
18333 case DW_TAG_class_type:
18334 case DW_TAG_interface_type:
18335 case DW_TAG_enumeration_type:
18336 case DW_TAG_structure_type:
18337 case DW_TAG_subrange_type:
18338 case DW_TAG_typedef:
18339 case DW_TAG_union_type:
18340 return 1;
18341 default:
18342 return 0;
18343 }
18344 }
18345
18346 /* Load all DIEs that are interesting for partial symbols into memory. */
18347
18348 static struct partial_die_info *
18349 load_partial_dies (const struct die_reader_specs *reader,
18350 const gdb_byte *info_ptr, int building_psymtab)
18351 {
18352 struct dwarf2_cu *cu = reader->cu;
18353 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18354 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18355 unsigned int bytes_read;
18356 unsigned int load_all = 0;
18357 int nesting_level = 1;
18358
18359 parent_die = NULL;
18360 last_die = NULL;
18361
18362 gdb_assert (cu->per_cu != NULL);
18363 if (cu->per_cu->load_all_dies)
18364 load_all = 1;
18365
18366 cu->partial_dies
18367 = htab_create_alloc_ex (cu->header.length / 12,
18368 partial_die_hash,
18369 partial_die_eq,
18370 NULL,
18371 &cu->comp_unit_obstack,
18372 hashtab_obstack_allocate,
18373 dummy_obstack_deallocate);
18374
18375 while (1)
18376 {
18377 abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18378
18379 /* A NULL abbrev means the end of a series of children. */
18380 if (abbrev == NULL)
18381 {
18382 if (--nesting_level == 0)
18383 return first_die;
18384
18385 info_ptr += bytes_read;
18386 last_die = parent_die;
18387 parent_die = parent_die->die_parent;
18388 continue;
18389 }
18390
18391 /* Check for template arguments. We never save these; if
18392 they're seen, we just mark the parent, and go on our way. */
18393 if (parent_die != NULL
18394 && cu->language == language_cplus
18395 && (abbrev->tag == DW_TAG_template_type_param
18396 || abbrev->tag == DW_TAG_template_value_param))
18397 {
18398 parent_die->has_template_arguments = 1;
18399
18400 if (!load_all)
18401 {
18402 /* We don't need a partial DIE for the template argument. */
18403 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18404 continue;
18405 }
18406 }
18407
18408 /* We only recurse into c++ subprograms looking for template arguments.
18409 Skip their other children. */
18410 if (!load_all
18411 && cu->language == language_cplus
18412 && parent_die != NULL
18413 && parent_die->tag == DW_TAG_subprogram)
18414 {
18415 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18416 continue;
18417 }
18418
18419 /* Check whether this DIE is interesting enough to save. Normally
18420 we would not be interested in members here, but there may be
18421 later variables referencing them via DW_AT_specification (for
18422 static members). */
18423 if (!load_all
18424 && !is_type_tag_for_partial (abbrev->tag)
18425 && abbrev->tag != DW_TAG_constant
18426 && abbrev->tag != DW_TAG_enumerator
18427 && abbrev->tag != DW_TAG_subprogram
18428 && abbrev->tag != DW_TAG_inlined_subroutine
18429 && abbrev->tag != DW_TAG_lexical_block
18430 && abbrev->tag != DW_TAG_variable
18431 && abbrev->tag != DW_TAG_namespace
18432 && abbrev->tag != DW_TAG_module
18433 && abbrev->tag != DW_TAG_member
18434 && abbrev->tag != DW_TAG_imported_unit
18435 && abbrev->tag != DW_TAG_imported_declaration)
18436 {
18437 /* Otherwise we skip to the next sibling, if any. */
18438 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18439 continue;
18440 }
18441
18442 struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18443 abbrev);
18444
18445 info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18446
18447 /* This two-pass algorithm for processing partial symbols has a
18448 high cost in cache pressure. Thus, handle some simple cases
18449 here which cover the majority of C partial symbols. DIEs
18450 which neither have specification tags in them, nor could have
18451 specification tags elsewhere pointing at them, can simply be
18452 processed and discarded.
18453
18454 This segment is also optional; scan_partial_symbols and
18455 add_partial_symbol will handle these DIEs if we chain
18456 them in normally. When compilers which do not emit large
18457 quantities of duplicate debug information are more common,
18458 this code can probably be removed. */
18459
18460 /* Any complete simple types at the top level (pretty much all
18461 of them, for a language without namespaces), can be processed
18462 directly. */
18463 if (parent_die == NULL
18464 && pdi.has_specification == 0
18465 && pdi.is_declaration == 0
18466 && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18467 || pdi.tag == DW_TAG_base_type
18468 || pdi.tag == DW_TAG_subrange_type))
18469 {
18470 if (building_psymtab && pdi.name != NULL)
18471 add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18472 VAR_DOMAIN, LOC_TYPEDEF, -1,
18473 psymbol_placement::STATIC,
18474 0, cu->language, objfile);
18475 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18476 continue;
18477 }
18478
18479 /* The exception for DW_TAG_typedef with has_children above is
18480 a workaround of GCC PR debug/47510. In the case of this complaint
18481 type_name_or_error will error on such types later.
18482
18483 GDB skipped children of DW_TAG_typedef by the shortcut above and then
18484 it could not find the child DIEs referenced later, this is checked
18485 above. In correct DWARF DW_TAG_typedef should have no children. */
18486
18487 if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18488 complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18489 "- DIE at %s [in module %s]"),
18490 sect_offset_str (pdi.sect_off), objfile_name (objfile));
18491
18492 /* If we're at the second level, and we're an enumerator, and
18493 our parent has no specification (meaning possibly lives in a
18494 namespace elsewhere), then we can add the partial symbol now
18495 instead of queueing it. */
18496 if (pdi.tag == DW_TAG_enumerator
18497 && parent_die != NULL
18498 && parent_die->die_parent == NULL
18499 && parent_die->tag == DW_TAG_enumeration_type
18500 && parent_die->has_specification == 0)
18501 {
18502 if (pdi.name == NULL)
18503 complaint (_("malformed enumerator DIE ignored"));
18504 else if (building_psymtab)
18505 add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18506 VAR_DOMAIN, LOC_CONST, -1,
18507 cu->language == language_cplus
18508 ? psymbol_placement::GLOBAL
18509 : psymbol_placement::STATIC,
18510 0, cu->language, objfile);
18511
18512 info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18513 continue;
18514 }
18515
18516 struct partial_die_info *part_die
18517 = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18518
18519 /* We'll save this DIE so link it in. */
18520 part_die->die_parent = parent_die;
18521 part_die->die_sibling = NULL;
18522 part_die->die_child = NULL;
18523
18524 if (last_die && last_die == parent_die)
18525 last_die->die_child = part_die;
18526 else if (last_die)
18527 last_die->die_sibling = part_die;
18528
18529 last_die = part_die;
18530
18531 if (first_die == NULL)
18532 first_die = part_die;
18533
18534 /* Maybe add the DIE to the hash table. Not all DIEs that we
18535 find interesting need to be in the hash table, because we
18536 also have the parent/sibling/child chains; only those that we
18537 might refer to by offset later during partial symbol reading.
18538
18539 For now this means things that might have be the target of a
18540 DW_AT_specification, DW_AT_abstract_origin, or
18541 DW_AT_extension. DW_AT_extension will refer only to
18542 namespaces; DW_AT_abstract_origin refers to functions (and
18543 many things under the function DIE, but we do not recurse
18544 into function DIEs during partial symbol reading) and
18545 possibly variables as well; DW_AT_specification refers to
18546 declarations. Declarations ought to have the DW_AT_declaration
18547 flag. It happens that GCC forgets to put it in sometimes, but
18548 only for functions, not for types.
18549
18550 Adding more things than necessary to the hash table is harmless
18551 except for the performance cost. Adding too few will result in
18552 wasted time in find_partial_die, when we reread the compilation
18553 unit with load_all_dies set. */
18554
18555 if (load_all
18556 || abbrev->tag == DW_TAG_constant
18557 || abbrev->tag == DW_TAG_subprogram
18558 || abbrev->tag == DW_TAG_variable
18559 || abbrev->tag == DW_TAG_namespace
18560 || part_die->is_declaration)
18561 {
18562 void **slot;
18563
18564 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18565 to_underlying (part_die->sect_off),
18566 INSERT);
18567 *slot = part_die;
18568 }
18569
18570 /* For some DIEs we want to follow their children (if any). For C
18571 we have no reason to follow the children of structures; for other
18572 languages we have to, so that we can get at method physnames
18573 to infer fully qualified class names, for DW_AT_specification,
18574 and for C++ template arguments. For C++, we also look one level
18575 inside functions to find template arguments (if the name of the
18576 function does not already contain the template arguments).
18577
18578 For Ada, we need to scan the children of subprograms and lexical
18579 blocks as well because Ada allows the definition of nested
18580 entities that could be interesting for the debugger, such as
18581 nested subprograms for instance. */
18582 if (last_die->has_children
18583 && (load_all
18584 || last_die->tag == DW_TAG_namespace
18585 || last_die->tag == DW_TAG_module
18586 || last_die->tag == DW_TAG_enumeration_type
18587 || (cu->language == language_cplus
18588 && last_die->tag == DW_TAG_subprogram
18589 && (last_die->name == NULL
18590 || strchr (last_die->name, '<') == NULL))
18591 || (cu->language != language_c
18592 && (last_die->tag == DW_TAG_class_type
18593 || last_die->tag == DW_TAG_interface_type
18594 || last_die->tag == DW_TAG_structure_type
18595 || last_die->tag == DW_TAG_union_type))
18596 || (cu->language == language_ada
18597 && (last_die->tag == DW_TAG_subprogram
18598 || last_die->tag == DW_TAG_lexical_block))))
18599 {
18600 nesting_level++;
18601 parent_die = last_die;
18602 continue;
18603 }
18604
18605 /* Otherwise we skip to the next sibling, if any. */
18606 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18607
18608 /* Back to the top, do it again. */
18609 }
18610 }
18611
18612 partial_die_info::partial_die_info (sect_offset sect_off_,
18613 struct abbrev_info *abbrev)
18614 : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18615 {
18616 }
18617
18618 /* Read a minimal amount of information into the minimal die structure.
18619 INFO_PTR should point just after the initial uleb128 of a DIE. */
18620
18621 const gdb_byte *
18622 partial_die_info::read (const struct die_reader_specs *reader,
18623 const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18624 {
18625 struct dwarf2_cu *cu = reader->cu;
18626 struct dwarf2_per_objfile *dwarf2_per_objfile
18627 = cu->per_cu->dwarf2_per_objfile;
18628 unsigned int i;
18629 int has_low_pc_attr = 0;
18630 int has_high_pc_attr = 0;
18631 int high_pc_relative = 0;
18632
18633 for (i = 0; i < abbrev.num_attrs; ++i)
18634 {
18635 struct attribute attr;
18636
18637 info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18638
18639 /* Store the data if it is of an attribute we want to keep in a
18640 partial symbol table. */
18641 switch (attr.name)
18642 {
18643 case DW_AT_name:
18644 switch (tag)
18645 {
18646 case DW_TAG_compile_unit:
18647 case DW_TAG_partial_unit:
18648 case DW_TAG_type_unit:
18649 /* Compilation units have a DW_AT_name that is a filename, not
18650 a source language identifier. */
18651 case DW_TAG_enumeration_type:
18652 case DW_TAG_enumerator:
18653 /* These tags always have simple identifiers already; no need
18654 to canonicalize them. */
18655 name = DW_STRING (&attr);
18656 break;
18657 default:
18658 {
18659 struct objfile *objfile = dwarf2_per_objfile->objfile;
18660
18661 name
18662 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18663 &objfile->per_bfd->storage_obstack);
18664 }
18665 break;
18666 }
18667 break;
18668 case DW_AT_linkage_name:
18669 case DW_AT_MIPS_linkage_name:
18670 /* Note that both forms of linkage name might appear. We
18671 assume they will be the same, and we only store the last
18672 one we see. */
18673 if (cu->language == language_ada)
18674 name = DW_STRING (&attr);
18675 linkage_name = DW_STRING (&attr);
18676 break;
18677 case DW_AT_low_pc:
18678 has_low_pc_attr = 1;
18679 lowpc = attr_value_as_address (&attr);
18680 break;
18681 case DW_AT_high_pc:
18682 has_high_pc_attr = 1;
18683 highpc = attr_value_as_address (&attr);
18684 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18685 high_pc_relative = 1;
18686 break;
18687 case DW_AT_location:
18688 /* Support the .debug_loc offsets. */
18689 if (attr_form_is_block (&attr))
18690 {
18691 d.locdesc = DW_BLOCK (&attr);
18692 }
18693 else if (attr_form_is_section_offset (&attr))
18694 {
18695 dwarf2_complex_location_expr_complaint ();
18696 }
18697 else
18698 {
18699 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18700 "partial symbol information");
18701 }
18702 break;
18703 case DW_AT_external:
18704 is_external = DW_UNSND (&attr);
18705 break;
18706 case DW_AT_declaration:
18707 is_declaration = DW_UNSND (&attr);
18708 break;
18709 case DW_AT_type:
18710 has_type = 1;
18711 break;
18712 case DW_AT_abstract_origin:
18713 case DW_AT_specification:
18714 case DW_AT_extension:
18715 has_specification = 1;
18716 spec_offset = dwarf2_get_ref_die_offset (&attr);
18717 spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18718 || cu->per_cu->is_dwz);
18719 break;
18720 case DW_AT_sibling:
18721 /* Ignore absolute siblings, they might point outside of
18722 the current compile unit. */
18723 if (attr.form == DW_FORM_ref_addr)
18724 complaint (_("ignoring absolute DW_AT_sibling"));
18725 else
18726 {
18727 const gdb_byte *buffer = reader->buffer;
18728 sect_offset off = dwarf2_get_ref_die_offset (&attr);
18729 const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18730
18731 if (sibling_ptr < info_ptr)
18732 complaint (_("DW_AT_sibling points backwards"));
18733 else if (sibling_ptr > reader->buffer_end)
18734 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18735 else
18736 sibling = sibling_ptr;
18737 }
18738 break;
18739 case DW_AT_byte_size:
18740 has_byte_size = 1;
18741 break;
18742 case DW_AT_const_value:
18743 has_const_value = 1;
18744 break;
18745 case DW_AT_calling_convention:
18746 /* DWARF doesn't provide a way to identify a program's source-level
18747 entry point. DW_AT_calling_convention attributes are only meant
18748 to describe functions' calling conventions.
18749
18750 However, because it's a necessary piece of information in
18751 Fortran, and before DWARF 4 DW_CC_program was the only
18752 piece of debugging information whose definition refers to
18753 a 'main program' at all, several compilers marked Fortran
18754 main programs with DW_CC_program --- even when those
18755 functions use the standard calling conventions.
18756
18757 Although DWARF now specifies a way to provide this
18758 information, we support this practice for backward
18759 compatibility. */
18760 if (DW_UNSND (&attr) == DW_CC_program
18761 && cu->language == language_fortran)
18762 main_subprogram = 1;
18763 break;
18764 case DW_AT_inline:
18765 if (DW_UNSND (&attr) == DW_INL_inlined
18766 || DW_UNSND (&attr) == DW_INL_declared_inlined)
18767 may_be_inlined = 1;
18768 break;
18769
18770 case DW_AT_import:
18771 if (tag == DW_TAG_imported_unit)
18772 {
18773 d.sect_off = dwarf2_get_ref_die_offset (&attr);
18774 is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18775 || cu->per_cu->is_dwz);
18776 }
18777 break;
18778
18779 case DW_AT_main_subprogram:
18780 main_subprogram = DW_UNSND (&attr);
18781 break;
18782
18783 case DW_AT_ranges:
18784 {
18785 /* It would be nice to reuse dwarf2_get_pc_bounds here,
18786 but that requires a full DIE, so instead we just
18787 reimplement it. */
18788 int need_ranges_base = tag != DW_TAG_compile_unit;
18789 unsigned int ranges_offset = (DW_UNSND (&attr)
18790 + (need_ranges_base
18791 ? cu->ranges_base
18792 : 0));
18793
18794 /* Value of the DW_AT_ranges attribute is the offset in the
18795 .debug_ranges section. */
18796 if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
18797 nullptr))
18798 has_pc_info = 1;
18799 }
18800 break;
18801
18802 default:
18803 break;
18804 }
18805 }
18806
18807 if (high_pc_relative)
18808 highpc += lowpc;
18809
18810 if (has_low_pc_attr && has_high_pc_attr)
18811 {
18812 /* When using the GNU linker, .gnu.linkonce. sections are used to
18813 eliminate duplicate copies of functions and vtables and such.
18814 The linker will arbitrarily choose one and discard the others.
18815 The AT_*_pc values for such functions refer to local labels in
18816 these sections. If the section from that file was discarded, the
18817 labels are not in the output, so the relocs get a value of 0.
18818 If this is a discarded function, mark the pc bounds as invalid,
18819 so that GDB will ignore it. */
18820 if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18821 {
18822 struct objfile *objfile = dwarf2_per_objfile->objfile;
18823 struct gdbarch *gdbarch = get_objfile_arch (objfile);
18824
18825 complaint (_("DW_AT_low_pc %s is zero "
18826 "for DIE at %s [in module %s]"),
18827 paddress (gdbarch, lowpc),
18828 sect_offset_str (sect_off),
18829 objfile_name (objfile));
18830 }
18831 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
18832 else if (lowpc >= highpc)
18833 {
18834 struct objfile *objfile = dwarf2_per_objfile->objfile;
18835 struct gdbarch *gdbarch = get_objfile_arch (objfile);
18836
18837 complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18838 "for DIE at %s [in module %s]"),
18839 paddress (gdbarch, lowpc),
18840 paddress (gdbarch, highpc),
18841 sect_offset_str (sect_off),
18842 objfile_name (objfile));
18843 }
18844 else
18845 has_pc_info = 1;
18846 }
18847
18848 return info_ptr;
18849 }
18850
18851 /* Find a cached partial DIE at OFFSET in CU. */
18852
18853 struct partial_die_info *
18854 dwarf2_cu::find_partial_die (sect_offset sect_off)
18855 {
18856 struct partial_die_info *lookup_die = NULL;
18857 struct partial_die_info part_die (sect_off);
18858
18859 lookup_die = ((struct partial_die_info *)
18860 htab_find_with_hash (partial_dies, &part_die,
18861 to_underlying (sect_off)));
18862
18863 return lookup_die;
18864 }
18865
18866 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18867 except in the case of .debug_types DIEs which do not reference
18868 outside their CU (they do however referencing other types via
18869 DW_FORM_ref_sig8). */
18870
18871 static const struct cu_partial_die_info
18872 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18873 {
18874 struct dwarf2_per_objfile *dwarf2_per_objfile
18875 = cu->per_cu->dwarf2_per_objfile;
18876 struct objfile *objfile = dwarf2_per_objfile->objfile;
18877 struct dwarf2_per_cu_data *per_cu = NULL;
18878 struct partial_die_info *pd = NULL;
18879
18880 if (offset_in_dwz == cu->per_cu->is_dwz
18881 && offset_in_cu_p (&cu->header, sect_off))
18882 {
18883 pd = cu->find_partial_die (sect_off);
18884 if (pd != NULL)
18885 return { cu, pd };
18886 /* We missed recording what we needed.
18887 Load all dies and try again. */
18888 per_cu = cu->per_cu;
18889 }
18890 else
18891 {
18892 /* TUs don't reference other CUs/TUs (except via type signatures). */
18893 if (cu->per_cu->is_debug_types)
18894 {
18895 error (_("Dwarf Error: Type Unit at offset %s contains"
18896 " external reference to offset %s [in module %s].\n"),
18897 sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18898 bfd_get_filename (objfile->obfd));
18899 }
18900 per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18901 dwarf2_per_objfile);
18902
18903 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18904 load_partial_comp_unit (per_cu);
18905
18906 per_cu->cu->last_used = 0;
18907 pd = per_cu->cu->find_partial_die (sect_off);
18908 }
18909
18910 /* If we didn't find it, and not all dies have been loaded,
18911 load them all and try again. */
18912
18913 if (pd == NULL && per_cu->load_all_dies == 0)
18914 {
18915 per_cu->load_all_dies = 1;
18916
18917 /* This is nasty. When we reread the DIEs, somewhere up the call chain
18918 THIS_CU->cu may already be in use. So we can't just free it and
18919 replace its DIEs with the ones we read in. Instead, we leave those
18920 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18921 and clobber THIS_CU->cu->partial_dies with the hash table for the new
18922 set. */
18923 load_partial_comp_unit (per_cu);
18924
18925 pd = per_cu->cu->find_partial_die (sect_off);
18926 }
18927
18928 if (pd == NULL)
18929 internal_error (__FILE__, __LINE__,
18930 _("could not find partial DIE %s "
18931 "in cache [from module %s]\n"),
18932 sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18933 return { per_cu->cu, pd };
18934 }
18935
18936 /* See if we can figure out if the class lives in a namespace. We do
18937 this by looking for a member function; its demangled name will
18938 contain namespace info, if there is any. */
18939
18940 static void
18941 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18942 struct dwarf2_cu *cu)
18943 {
18944 /* NOTE: carlton/2003-10-07: Getting the info this way changes
18945 what template types look like, because the demangler
18946 frequently doesn't give the same name as the debug info. We
18947 could fix this by only using the demangled name to get the
18948 prefix (but see comment in read_structure_type). */
18949
18950 struct partial_die_info *real_pdi;
18951 struct partial_die_info *child_pdi;
18952
18953 /* If this DIE (this DIE's specification, if any) has a parent, then
18954 we should not do this. We'll prepend the parent's fully qualified
18955 name when we create the partial symbol. */
18956
18957 real_pdi = struct_pdi;
18958 while (real_pdi->has_specification)
18959 {
18960 auto res = find_partial_die (real_pdi->spec_offset,
18961 real_pdi->spec_is_dwz, cu);
18962 real_pdi = res.pdi;
18963 cu = res.cu;
18964 }
18965
18966 if (real_pdi->die_parent != NULL)
18967 return;
18968
18969 for (child_pdi = struct_pdi->die_child;
18970 child_pdi != NULL;
18971 child_pdi = child_pdi->die_sibling)
18972 {
18973 if (child_pdi->tag == DW_TAG_subprogram
18974 && child_pdi->linkage_name != NULL)
18975 {
18976 char *actual_class_name
18977 = language_class_name_from_physname (cu->language_defn,
18978 child_pdi->linkage_name);
18979 if (actual_class_name != NULL)
18980 {
18981 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18982 struct_pdi->name
18983 = ((const char *)
18984 obstack_copy0 (&objfile->per_bfd->storage_obstack,
18985 actual_class_name,
18986 strlen (actual_class_name)));
18987 xfree (actual_class_name);
18988 }
18989 break;
18990 }
18991 }
18992 }
18993
18994 void
18995 partial_die_info::fixup (struct dwarf2_cu *cu)
18996 {
18997 /* Once we've fixed up a die, there's no point in doing so again.
18998 This also avoids a memory leak if we were to call
18999 guess_partial_die_structure_name multiple times. */
19000 if (fixup_called)
19001 return;
19002
19003 /* If we found a reference attribute and the DIE has no name, try
19004 to find a name in the referred to DIE. */
19005
19006 if (name == NULL && has_specification)
19007 {
19008 struct partial_die_info *spec_die;
19009
19010 auto res = find_partial_die (spec_offset, spec_is_dwz, cu);
19011 spec_die = res.pdi;
19012 cu = res.cu;
19013
19014 spec_die->fixup (cu);
19015
19016 if (spec_die->name)
19017 {
19018 name = spec_die->name;
19019
19020 /* Copy DW_AT_external attribute if it is set. */
19021 if (spec_die->is_external)
19022 is_external = spec_die->is_external;
19023 }
19024 }
19025
19026 /* Set default names for some unnamed DIEs. */
19027
19028 if (name == NULL && tag == DW_TAG_namespace)
19029 name = CP_ANONYMOUS_NAMESPACE_STR;
19030
19031 /* If there is no parent die to provide a namespace, and there are
19032 children, see if we can determine the namespace from their linkage
19033 name. */
19034 if (cu->language == language_cplus
19035 && !VEC_empty (dwarf2_section_info_def,
19036 cu->per_cu->dwarf2_per_objfile->types)
19037 && die_parent == NULL
19038 && has_children
19039 && (tag == DW_TAG_class_type
19040 || tag == DW_TAG_structure_type
19041 || tag == DW_TAG_union_type))
19042 guess_partial_die_structure_name (this, cu);
19043
19044 /* GCC might emit a nameless struct or union that has a linkage
19045 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19046 if (name == NULL
19047 && (tag == DW_TAG_class_type
19048 || tag == DW_TAG_interface_type
19049 || tag == DW_TAG_structure_type
19050 || tag == DW_TAG_union_type)
19051 && linkage_name != NULL)
19052 {
19053 char *demangled;
19054
19055 demangled = gdb_demangle (linkage_name, DMGL_TYPES);
19056 if (demangled)
19057 {
19058 const char *base;
19059
19060 /* Strip any leading namespaces/classes, keep only the base name.
19061 DW_AT_name for named DIEs does not contain the prefixes. */
19062 base = strrchr (demangled, ':');
19063 if (base && base > demangled && base[-1] == ':')
19064 base++;
19065 else
19066 base = demangled;
19067
19068 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19069 name
19070 = ((const char *)
19071 obstack_copy0 (&objfile->per_bfd->storage_obstack,
19072 base, strlen (base)));
19073 xfree (demangled);
19074 }
19075 }
19076
19077 fixup_called = 1;
19078 }
19079
19080 /* Read an attribute value described by an attribute form. */
19081
19082 static const gdb_byte *
19083 read_attribute_value (const struct die_reader_specs *reader,
19084 struct attribute *attr, unsigned form,
19085 LONGEST implicit_const, const gdb_byte *info_ptr)
19086 {
19087 struct dwarf2_cu *cu = reader->cu;
19088 struct dwarf2_per_objfile *dwarf2_per_objfile
19089 = cu->per_cu->dwarf2_per_objfile;
19090 struct objfile *objfile = dwarf2_per_objfile->objfile;
19091 struct gdbarch *gdbarch = get_objfile_arch (objfile);
19092 bfd *abfd = reader->abfd;
19093 struct comp_unit_head *cu_header = &cu->header;
19094 unsigned int bytes_read;
19095 struct dwarf_block *blk;
19096
19097 attr->form = (enum dwarf_form) form;
19098 switch (form)
19099 {
19100 case DW_FORM_ref_addr:
19101 if (cu->header.version == 2)
19102 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19103 else
19104 DW_UNSND (attr) = read_offset (abfd, info_ptr,
19105 &cu->header, &bytes_read);
19106 info_ptr += bytes_read;
19107 break;
19108 case DW_FORM_GNU_ref_alt:
19109 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19110 info_ptr += bytes_read;
19111 break;
19112 case DW_FORM_addr:
19113 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19114 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19115 info_ptr += bytes_read;
19116 break;
19117 case DW_FORM_block2:
19118 blk = dwarf_alloc_block (cu);
19119 blk->size = read_2_bytes (abfd, info_ptr);
19120 info_ptr += 2;
19121 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19122 info_ptr += blk->size;
19123 DW_BLOCK (attr) = blk;
19124 break;
19125 case DW_FORM_block4:
19126 blk = dwarf_alloc_block (cu);
19127 blk->size = read_4_bytes (abfd, info_ptr);
19128 info_ptr += 4;
19129 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19130 info_ptr += blk->size;
19131 DW_BLOCK (attr) = blk;
19132 break;
19133 case DW_FORM_data2:
19134 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19135 info_ptr += 2;
19136 break;
19137 case DW_FORM_data4:
19138 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19139 info_ptr += 4;
19140 break;
19141 case DW_FORM_data8:
19142 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19143 info_ptr += 8;
19144 break;
19145 case DW_FORM_data16:
19146 blk = dwarf_alloc_block (cu);
19147 blk->size = 16;
19148 blk->data = read_n_bytes (abfd, info_ptr, 16);
19149 info_ptr += 16;
19150 DW_BLOCK (attr) = blk;
19151 break;
19152 case DW_FORM_sec_offset:
19153 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19154 info_ptr += bytes_read;
19155 break;
19156 case DW_FORM_string:
19157 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19158 DW_STRING_IS_CANONICAL (attr) = 0;
19159 info_ptr += bytes_read;
19160 break;
19161 case DW_FORM_strp:
19162 if (!cu->per_cu->is_dwz)
19163 {
19164 DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19165 abfd, info_ptr, cu_header,
19166 &bytes_read);
19167 DW_STRING_IS_CANONICAL (attr) = 0;
19168 info_ptr += bytes_read;
19169 break;
19170 }
19171 /* FALLTHROUGH */
19172 case DW_FORM_line_strp:
19173 if (!cu->per_cu->is_dwz)
19174 {
19175 DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19176 abfd, info_ptr,
19177 cu_header, &bytes_read);
19178 DW_STRING_IS_CANONICAL (attr) = 0;
19179 info_ptr += bytes_read;
19180 break;
19181 }
19182 /* FALLTHROUGH */
19183 case DW_FORM_GNU_strp_alt:
19184 {
19185 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19186 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19187 &bytes_read);
19188
19189 DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19190 dwz, str_offset);
19191 DW_STRING_IS_CANONICAL (attr) = 0;
19192 info_ptr += bytes_read;
19193 }
19194 break;
19195 case DW_FORM_exprloc:
19196 case DW_FORM_block:
19197 blk = dwarf_alloc_block (cu);
19198 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19199 info_ptr += bytes_read;
19200 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19201 info_ptr += blk->size;
19202 DW_BLOCK (attr) = blk;
19203 break;
19204 case DW_FORM_block1:
19205 blk = dwarf_alloc_block (cu);
19206 blk->size = read_1_byte (abfd, info_ptr);
19207 info_ptr += 1;
19208 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19209 info_ptr += blk->size;
19210 DW_BLOCK (attr) = blk;
19211 break;
19212 case DW_FORM_data1:
19213 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19214 info_ptr += 1;
19215 break;
19216 case DW_FORM_flag:
19217 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19218 info_ptr += 1;
19219 break;
19220 case DW_FORM_flag_present:
19221 DW_UNSND (attr) = 1;
19222 break;
19223 case DW_FORM_sdata:
19224 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19225 info_ptr += bytes_read;
19226 break;
19227 case DW_FORM_udata:
19228 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19229 info_ptr += bytes_read;
19230 break;
19231 case DW_FORM_ref1:
19232 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19233 + read_1_byte (abfd, info_ptr));
19234 info_ptr += 1;
19235 break;
19236 case DW_FORM_ref2:
19237 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19238 + read_2_bytes (abfd, info_ptr));
19239 info_ptr += 2;
19240 break;
19241 case DW_FORM_ref4:
19242 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19243 + read_4_bytes (abfd, info_ptr));
19244 info_ptr += 4;
19245 break;
19246 case DW_FORM_ref8:
19247 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19248 + read_8_bytes (abfd, info_ptr));
19249 info_ptr += 8;
19250 break;
19251 case DW_FORM_ref_sig8:
19252 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19253 info_ptr += 8;
19254 break;
19255 case DW_FORM_ref_udata:
19256 DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19257 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19258 info_ptr += bytes_read;
19259 break;
19260 case DW_FORM_indirect:
19261 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19262 info_ptr += bytes_read;
19263 if (form == DW_FORM_implicit_const)
19264 {
19265 implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19266 info_ptr += bytes_read;
19267 }
19268 info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19269 info_ptr);
19270 break;
19271 case DW_FORM_implicit_const:
19272 DW_SND (attr) = implicit_const;
19273 break;
19274 case DW_FORM_addrx:
19275 case DW_FORM_GNU_addr_index:
19276 if (reader->dwo_file == NULL)
19277 {
19278 /* For now flag a hard error.
19279 Later we can turn this into a complaint. */
19280 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19281 dwarf_form_name (form),
19282 bfd_get_filename (abfd));
19283 }
19284 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19285 info_ptr += bytes_read;
19286 break;
19287 case DW_FORM_strx:
19288 case DW_FORM_strx1:
19289 case DW_FORM_strx2:
19290 case DW_FORM_strx3:
19291 case DW_FORM_strx4:
19292 case DW_FORM_GNU_str_index:
19293 if (reader->dwo_file == NULL)
19294 {
19295 /* For now flag a hard error.
19296 Later we can turn this into a complaint if warranted. */
19297 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19298 dwarf_form_name (form),
19299 bfd_get_filename (abfd));
19300 }
19301 {
19302 ULONGEST str_index;
19303 if (form == DW_FORM_strx1)
19304 {
19305 str_index = read_1_byte (abfd, info_ptr);
19306 info_ptr += 1;
19307 }
19308 else if (form == DW_FORM_strx2)
19309 {
19310 str_index = read_2_bytes (abfd, info_ptr);
19311 info_ptr += 2;
19312 }
19313 else if (form == DW_FORM_strx3)
19314 {
19315 str_index = read_3_bytes (abfd, info_ptr);
19316 info_ptr += 3;
19317 }
19318 else if (form == DW_FORM_strx4)
19319 {
19320 str_index = read_4_bytes (abfd, info_ptr);
19321 info_ptr += 4;
19322 }
19323 else
19324 {
19325 str_index = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19326 info_ptr += bytes_read;
19327 }
19328 DW_STRING (attr) = read_str_index (reader, str_index);
19329 DW_STRING_IS_CANONICAL (attr) = 0;
19330 }
19331 break;
19332 default:
19333 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19334 dwarf_form_name (form),
19335 bfd_get_filename (abfd));
19336 }
19337
19338 /* Super hack. */
19339 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19340 attr->form = DW_FORM_GNU_ref_alt;
19341
19342 /* We have seen instances where the compiler tried to emit a byte
19343 size attribute of -1 which ended up being encoded as an unsigned
19344 0xffffffff. Although 0xffffffff is technically a valid size value,
19345 an object of this size seems pretty unlikely so we can relatively
19346 safely treat these cases as if the size attribute was invalid and
19347 treat them as zero by default. */
19348 if (attr->name == DW_AT_byte_size
19349 && form == DW_FORM_data4
19350 && DW_UNSND (attr) >= 0xffffffff)
19351 {
19352 complaint
19353 (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19354 hex_string (DW_UNSND (attr)));
19355 DW_UNSND (attr) = 0;
19356 }
19357
19358 return info_ptr;
19359 }
19360
19361 /* Read an attribute described by an abbreviated attribute. */
19362
19363 static const gdb_byte *
19364 read_attribute (const struct die_reader_specs *reader,
19365 struct attribute *attr, struct attr_abbrev *abbrev,
19366 const gdb_byte *info_ptr)
19367 {
19368 attr->name = abbrev->name;
19369 return read_attribute_value (reader, attr, abbrev->form,
19370 abbrev->implicit_const, info_ptr);
19371 }
19372
19373 /* Read dwarf information from a buffer. */
19374
19375 static unsigned int
19376 read_1_byte (bfd *abfd, const gdb_byte *buf)
19377 {
19378 return bfd_get_8 (abfd, buf);
19379 }
19380
19381 static int
19382 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19383 {
19384 return bfd_get_signed_8 (abfd, buf);
19385 }
19386
19387 static unsigned int
19388 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19389 {
19390 return bfd_get_16 (abfd, buf);
19391 }
19392
19393 static int
19394 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19395 {
19396 return bfd_get_signed_16 (abfd, buf);
19397 }
19398
19399 static unsigned int
19400 read_3_bytes (bfd *abfd, const gdb_byte *buf)
19401 {
19402 unsigned int result = 0;
19403 for (int i = 0; i < 3; ++i)
19404 {
19405 unsigned char byte = bfd_get_8 (abfd, buf);
19406 buf++;
19407 result |= ((unsigned int) byte << (i * 8));
19408 }
19409 return result;
19410 }
19411
19412 static unsigned int
19413 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19414 {
19415 return bfd_get_32 (abfd, buf);
19416 }
19417
19418 static int
19419 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19420 {
19421 return bfd_get_signed_32 (abfd, buf);
19422 }
19423
19424 static ULONGEST
19425 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19426 {
19427 return bfd_get_64 (abfd, buf);
19428 }
19429
19430 static CORE_ADDR
19431 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19432 unsigned int *bytes_read)
19433 {
19434 struct comp_unit_head *cu_header = &cu->header;
19435 CORE_ADDR retval = 0;
19436
19437 if (cu_header->signed_addr_p)
19438 {
19439 switch (cu_header->addr_size)
19440 {
19441 case 2:
19442 retval = bfd_get_signed_16 (abfd, buf);
19443 break;
19444 case 4:
19445 retval = bfd_get_signed_32 (abfd, buf);
19446 break;
19447 case 8:
19448 retval = bfd_get_signed_64 (abfd, buf);
19449 break;
19450 default:
19451 internal_error (__FILE__, __LINE__,
19452 _("read_address: bad switch, signed [in module %s]"),
19453 bfd_get_filename (abfd));
19454 }
19455 }
19456 else
19457 {
19458 switch (cu_header->addr_size)
19459 {
19460 case 2:
19461 retval = bfd_get_16 (abfd, buf);
19462 break;
19463 case 4:
19464 retval = bfd_get_32 (abfd, buf);
19465 break;
19466 case 8:
19467 retval = bfd_get_64 (abfd, buf);
19468 break;
19469 default:
19470 internal_error (__FILE__, __LINE__,
19471 _("read_address: bad switch, "
19472 "unsigned [in module %s]"),
19473 bfd_get_filename (abfd));
19474 }
19475 }
19476
19477 *bytes_read = cu_header->addr_size;
19478 return retval;
19479 }
19480
19481 /* Read the initial length from a section. The (draft) DWARF 3
19482 specification allows the initial length to take up either 4 bytes
19483 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
19484 bytes describe the length and all offsets will be 8 bytes in length
19485 instead of 4.
19486
19487 An older, non-standard 64-bit format is also handled by this
19488 function. The older format in question stores the initial length
19489 as an 8-byte quantity without an escape value. Lengths greater
19490 than 2^32 aren't very common which means that the initial 4 bytes
19491 is almost always zero. Since a length value of zero doesn't make
19492 sense for the 32-bit format, this initial zero can be considered to
19493 be an escape value which indicates the presence of the older 64-bit
19494 format. As written, the code can't detect (old format) lengths
19495 greater than 4GB. If it becomes necessary to handle lengths
19496 somewhat larger than 4GB, we could allow other small values (such
19497 as the non-sensical values of 1, 2, and 3) to also be used as
19498 escape values indicating the presence of the old format.
19499
19500 The value returned via bytes_read should be used to increment the
19501 relevant pointer after calling read_initial_length().
19502
19503 [ Note: read_initial_length() and read_offset() are based on the
19504 document entitled "DWARF Debugging Information Format", revision
19505 3, draft 8, dated November 19, 2001. This document was obtained
19506 from:
19507
19508 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19509
19510 This document is only a draft and is subject to change. (So beware.)
19511
19512 Details regarding the older, non-standard 64-bit format were
19513 determined empirically by examining 64-bit ELF files produced by
19514 the SGI toolchain on an IRIX 6.5 machine.
19515
19516 - Kevin, July 16, 2002
19517 ] */
19518
19519 static LONGEST
19520 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19521 {
19522 LONGEST length = bfd_get_32 (abfd, buf);
19523
19524 if (length == 0xffffffff)
19525 {
19526 length = bfd_get_64 (abfd, buf + 4);
19527 *bytes_read = 12;
19528 }
19529 else if (length == 0)
19530 {
19531 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
19532 length = bfd_get_64 (abfd, buf);
19533 *bytes_read = 8;
19534 }
19535 else
19536 {
19537 *bytes_read = 4;
19538 }
19539
19540 return length;
19541 }
19542
19543 /* Cover function for read_initial_length.
19544 Returns the length of the object at BUF, and stores the size of the
19545 initial length in *BYTES_READ and stores the size that offsets will be in
19546 *OFFSET_SIZE.
19547 If the initial length size is not equivalent to that specified in
19548 CU_HEADER then issue a complaint.
19549 This is useful when reading non-comp-unit headers. */
19550
19551 static LONGEST
19552 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19553 const struct comp_unit_head *cu_header,
19554 unsigned int *bytes_read,
19555 unsigned int *offset_size)
19556 {
19557 LONGEST length = read_initial_length (abfd, buf, bytes_read);
19558
19559 gdb_assert (cu_header->initial_length_size == 4
19560 || cu_header->initial_length_size == 8
19561 || cu_header->initial_length_size == 12);
19562
19563 if (cu_header->initial_length_size != *bytes_read)
19564 complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19565
19566 *offset_size = (*bytes_read == 4) ? 4 : 8;
19567 return length;
19568 }
19569
19570 /* Read an offset from the data stream. The size of the offset is
19571 given by cu_header->offset_size. */
19572
19573 static LONGEST
19574 read_offset (bfd *abfd, const gdb_byte *buf,
19575 const struct comp_unit_head *cu_header,
19576 unsigned int *bytes_read)
19577 {
19578 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19579
19580 *bytes_read = cu_header->offset_size;
19581 return offset;
19582 }
19583
19584 /* Read an offset from the data stream. */
19585
19586 static LONGEST
19587 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19588 {
19589 LONGEST retval = 0;
19590
19591 switch (offset_size)
19592 {
19593 case 4:
19594 retval = bfd_get_32 (abfd, buf);
19595 break;
19596 case 8:
19597 retval = bfd_get_64 (abfd, buf);
19598 break;
19599 default:
19600 internal_error (__FILE__, __LINE__,
19601 _("read_offset_1: bad switch [in module %s]"),
19602 bfd_get_filename (abfd));
19603 }
19604
19605 return retval;
19606 }
19607
19608 static const gdb_byte *
19609 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19610 {
19611 /* If the size of a host char is 8 bits, we can return a pointer
19612 to the buffer, otherwise we have to copy the data to a buffer
19613 allocated on the temporary obstack. */
19614 gdb_assert (HOST_CHAR_BIT == 8);
19615 return buf;
19616 }
19617
19618 static const char *
19619 read_direct_string (bfd *abfd, const gdb_byte *buf,
19620 unsigned int *bytes_read_ptr)
19621 {
19622 /* If the size of a host char is 8 bits, we can return a pointer
19623 to the string, otherwise we have to copy the string to a buffer
19624 allocated on the temporary obstack. */
19625 gdb_assert (HOST_CHAR_BIT == 8);
19626 if (*buf == '\0')
19627 {
19628 *bytes_read_ptr = 1;
19629 return NULL;
19630 }
19631 *bytes_read_ptr = strlen ((const char *) buf) + 1;
19632 return (const char *) buf;
19633 }
19634
19635 /* Return pointer to string at section SECT offset STR_OFFSET with error
19636 reporting strings FORM_NAME and SECT_NAME. */
19637
19638 static const char *
19639 read_indirect_string_at_offset_from (struct objfile *objfile,
19640 bfd *abfd, LONGEST str_offset,
19641 struct dwarf2_section_info *sect,
19642 const char *form_name,
19643 const char *sect_name)
19644 {
19645 dwarf2_read_section (objfile, sect);
19646 if (sect->buffer == NULL)
19647 error (_("%s used without %s section [in module %s]"),
19648 form_name, sect_name, bfd_get_filename (abfd));
19649 if (str_offset >= sect->size)
19650 error (_("%s pointing outside of %s section [in module %s]"),
19651 form_name, sect_name, bfd_get_filename (abfd));
19652 gdb_assert (HOST_CHAR_BIT == 8);
19653 if (sect->buffer[str_offset] == '\0')
19654 return NULL;
19655 return (const char *) (sect->buffer + str_offset);
19656 }
19657
19658 /* Return pointer to string at .debug_str offset STR_OFFSET. */
19659
19660 static const char *
19661 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19662 bfd *abfd, LONGEST str_offset)
19663 {
19664 return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19665 abfd, str_offset,
19666 &dwarf2_per_objfile->str,
19667 "DW_FORM_strp", ".debug_str");
19668 }
19669
19670 /* Return pointer to string at .debug_line_str offset STR_OFFSET. */
19671
19672 static const char *
19673 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19674 bfd *abfd, LONGEST str_offset)
19675 {
19676 return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19677 abfd, str_offset,
19678 &dwarf2_per_objfile->line_str,
19679 "DW_FORM_line_strp",
19680 ".debug_line_str");
19681 }
19682
19683 /* Read a string at offset STR_OFFSET in the .debug_str section from
19684 the .dwz file DWZ. Throw an error if the offset is too large. If
19685 the string consists of a single NUL byte, return NULL; otherwise
19686 return a pointer to the string. */
19687
19688 static const char *
19689 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19690 LONGEST str_offset)
19691 {
19692 dwarf2_read_section (objfile, &dwz->str);
19693
19694 if (dwz->str.buffer == NULL)
19695 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19696 "section [in module %s]"),
19697 bfd_get_filename (dwz->dwz_bfd));
19698 if (str_offset >= dwz->str.size)
19699 error (_("DW_FORM_GNU_strp_alt pointing outside of "
19700 ".debug_str section [in module %s]"),
19701 bfd_get_filename (dwz->dwz_bfd));
19702 gdb_assert (HOST_CHAR_BIT == 8);
19703 if (dwz->str.buffer[str_offset] == '\0')
19704 return NULL;
19705 return (const char *) (dwz->str.buffer + str_offset);
19706 }
19707
19708 /* Return pointer to string at .debug_str offset as read from BUF.
19709 BUF is assumed to be in a compilation unit described by CU_HEADER.
19710 Return *BYTES_READ_PTR count of bytes read from BUF. */
19711
19712 static const char *
19713 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19714 const gdb_byte *buf,
19715 const struct comp_unit_head *cu_header,
19716 unsigned int *bytes_read_ptr)
19717 {
19718 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19719
19720 return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19721 }
19722
19723 /* Return pointer to string at .debug_line_str offset as read from BUF.
19724 BUF is assumed to be in a compilation unit described by CU_HEADER.
19725 Return *BYTES_READ_PTR count of bytes read from BUF. */
19726
19727 static const char *
19728 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19729 bfd *abfd, const gdb_byte *buf,
19730 const struct comp_unit_head *cu_header,
19731 unsigned int *bytes_read_ptr)
19732 {
19733 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19734
19735 return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19736 str_offset);
19737 }
19738
19739 ULONGEST
19740 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19741 unsigned int *bytes_read_ptr)
19742 {
19743 ULONGEST result;
19744 unsigned int num_read;
19745 int shift;
19746 unsigned char byte;
19747
19748 result = 0;
19749 shift = 0;
19750 num_read = 0;
19751 while (1)
19752 {
19753 byte = bfd_get_8 (abfd, buf);
19754 buf++;
19755 num_read++;
19756 result |= ((ULONGEST) (byte & 127) << shift);
19757 if ((byte & 128) == 0)
19758 {
19759 break;
19760 }
19761 shift += 7;
19762 }
19763 *bytes_read_ptr = num_read;
19764 return result;
19765 }
19766
19767 static LONGEST
19768 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19769 unsigned int *bytes_read_ptr)
19770 {
19771 ULONGEST result;
19772 int shift, num_read;
19773 unsigned char byte;
19774
19775 result = 0;
19776 shift = 0;
19777 num_read = 0;
19778 while (1)
19779 {
19780 byte = bfd_get_8 (abfd, buf);
19781 buf++;
19782 num_read++;
19783 result |= ((ULONGEST) (byte & 127) << shift);
19784 shift += 7;
19785 if ((byte & 128) == 0)
19786 {
19787 break;
19788 }
19789 }
19790 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19791 result |= -(((ULONGEST) 1) << shift);
19792 *bytes_read_ptr = num_read;
19793 return result;
19794 }
19795
19796 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19797 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19798 ADDR_SIZE is the size of addresses from the CU header. */
19799
19800 static CORE_ADDR
19801 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19802 unsigned int addr_index, ULONGEST addr_base, int addr_size)
19803 {
19804 struct objfile *objfile = dwarf2_per_objfile->objfile;
19805 bfd *abfd = objfile->obfd;
19806 const gdb_byte *info_ptr;
19807
19808 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19809 if (dwarf2_per_objfile->addr.buffer == NULL)
19810 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19811 objfile_name (objfile));
19812 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19813 error (_("DW_FORM_addr_index pointing outside of "
19814 ".debug_addr section [in module %s]"),
19815 objfile_name (objfile));
19816 info_ptr = (dwarf2_per_objfile->addr.buffer
19817 + addr_base + addr_index * addr_size);
19818 if (addr_size == 4)
19819 return bfd_get_32 (abfd, info_ptr);
19820 else
19821 return bfd_get_64 (abfd, info_ptr);
19822 }
19823
19824 /* Given index ADDR_INDEX in .debug_addr, fetch the value. */
19825
19826 static CORE_ADDR
19827 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19828 {
19829 return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19830 cu->addr_base, cu->header.addr_size);
19831 }
19832
19833 /* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
19834
19835 static CORE_ADDR
19836 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19837 unsigned int *bytes_read)
19838 {
19839 bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19840 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19841
19842 return read_addr_index (cu, addr_index);
19843 }
19844
19845 /* Data structure to pass results from dwarf2_read_addr_index_reader
19846 back to dwarf2_read_addr_index. */
19847
19848 struct dwarf2_read_addr_index_data
19849 {
19850 ULONGEST addr_base;
19851 int addr_size;
19852 };
19853
19854 /* die_reader_func for dwarf2_read_addr_index. */
19855
19856 static void
19857 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19858 const gdb_byte *info_ptr,
19859 struct die_info *comp_unit_die,
19860 int has_children,
19861 void *data)
19862 {
19863 struct dwarf2_cu *cu = reader->cu;
19864 struct dwarf2_read_addr_index_data *aidata =
19865 (struct dwarf2_read_addr_index_data *) data;
19866
19867 aidata->addr_base = cu->addr_base;
19868 aidata->addr_size = cu->header.addr_size;
19869 }
19870
19871 /* Given an index in .debug_addr, fetch the value.
19872 NOTE: This can be called during dwarf expression evaluation,
19873 long after the debug information has been read, and thus per_cu->cu
19874 may no longer exist. */
19875
19876 CORE_ADDR
19877 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19878 unsigned int addr_index)
19879 {
19880 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19881 struct dwarf2_cu *cu = per_cu->cu;
19882 ULONGEST addr_base;
19883 int addr_size;
19884
19885 /* We need addr_base and addr_size.
19886 If we don't have PER_CU->cu, we have to get it.
19887 Nasty, but the alternative is storing the needed info in PER_CU,
19888 which at this point doesn't seem justified: it's not clear how frequently
19889 it would get used and it would increase the size of every PER_CU.
19890 Entry points like dwarf2_per_cu_addr_size do a similar thing
19891 so we're not in uncharted territory here.
19892 Alas we need to be a bit more complicated as addr_base is contained
19893 in the DIE.
19894
19895 We don't need to read the entire CU(/TU).
19896 We just need the header and top level die.
19897
19898 IWBN to use the aging mechanism to let us lazily later discard the CU.
19899 For now we skip this optimization. */
19900
19901 if (cu != NULL)
19902 {
19903 addr_base = cu->addr_base;
19904 addr_size = cu->header.addr_size;
19905 }
19906 else
19907 {
19908 struct dwarf2_read_addr_index_data aidata;
19909
19910 /* Note: We can't use init_cutu_and_read_dies_simple here,
19911 we need addr_base. */
19912 init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19913 dwarf2_read_addr_index_reader, &aidata);
19914 addr_base = aidata.addr_base;
19915 addr_size = aidata.addr_size;
19916 }
19917
19918 return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19919 addr_size);
19920 }
19921
19922 /* Given a DW_FORM_GNU_str_index or DW_FORM_strx, fetch the string.
19923 This is only used by the Fission support. */
19924
19925 static const char *
19926 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19927 {
19928 struct dwarf2_cu *cu = reader->cu;
19929 struct dwarf2_per_objfile *dwarf2_per_objfile
19930 = cu->per_cu->dwarf2_per_objfile;
19931 struct objfile *objfile = dwarf2_per_objfile->objfile;
19932 const char *objf_name = objfile_name (objfile);
19933 bfd *abfd = objfile->obfd;
19934 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19935 struct dwarf2_section_info *str_offsets_section =
19936 &reader->dwo_file->sections.str_offsets;
19937 const gdb_byte *info_ptr;
19938 ULONGEST str_offset;
19939 static const char form_name[] = "DW_FORM_GNU_str_index or DW_FORM_strx";
19940
19941 dwarf2_read_section (objfile, str_section);
19942 dwarf2_read_section (objfile, str_offsets_section);
19943 if (str_section->buffer == NULL)
19944 error (_("%s used without .debug_str.dwo section"
19945 " in CU at offset %s [in module %s]"),
19946 form_name, sect_offset_str (cu->header.sect_off), objf_name);
19947 if (str_offsets_section->buffer == NULL)
19948 error (_("%s used without .debug_str_offsets.dwo section"
19949 " in CU at offset %s [in module %s]"),
19950 form_name, sect_offset_str (cu->header.sect_off), objf_name);
19951 if (str_index * cu->header.offset_size >= str_offsets_section->size)
19952 error (_("%s pointing outside of .debug_str_offsets.dwo"
19953 " section in CU at offset %s [in module %s]"),
19954 form_name, sect_offset_str (cu->header.sect_off), objf_name);
19955 info_ptr = (str_offsets_section->buffer
19956 + str_index * cu->header.offset_size);
19957 if (cu->header.offset_size == 4)
19958 str_offset = bfd_get_32 (abfd, info_ptr);
19959 else
19960 str_offset = bfd_get_64 (abfd, info_ptr);
19961 if (str_offset >= str_section->size)
19962 error (_("Offset from %s pointing outside of"
19963 " .debug_str.dwo section in CU at offset %s [in module %s]"),
19964 form_name, sect_offset_str (cu->header.sect_off), objf_name);
19965 return (const char *) (str_section->buffer + str_offset);
19966 }
19967
19968 /* Return the length of an LEB128 number in BUF. */
19969
19970 static int
19971 leb128_size (const gdb_byte *buf)
19972 {
19973 const gdb_byte *begin = buf;
19974 gdb_byte byte;
19975
19976 while (1)
19977 {
19978 byte = *buf++;
19979 if ((byte & 128) == 0)
19980 return buf - begin;
19981 }
19982 }
19983
19984 static void
19985 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19986 {
19987 switch (lang)
19988 {
19989 case DW_LANG_C89:
19990 case DW_LANG_C99:
19991 case DW_LANG_C11:
19992 case DW_LANG_C:
19993 case DW_LANG_UPC:
19994 cu->language = language_c;
19995 break;
19996 case DW_LANG_Java:
19997 case DW_LANG_C_plus_plus:
19998 case DW_LANG_C_plus_plus_11:
19999 case DW_LANG_C_plus_plus_14:
20000 cu->language = language_cplus;
20001 break;
20002 case DW_LANG_D:
20003 cu->language = language_d;
20004 break;
20005 case DW_LANG_Fortran77:
20006 case DW_LANG_Fortran90:
20007 case DW_LANG_Fortran95:
20008 case DW_LANG_Fortran03:
20009 case DW_LANG_Fortran08:
20010 cu->language = language_fortran;
20011 break;
20012 case DW_LANG_Go:
20013 cu->language = language_go;
20014 break;
20015 case DW_LANG_Mips_Assembler:
20016 cu->language = language_asm;
20017 break;
20018 case DW_LANG_Ada83:
20019 case DW_LANG_Ada95:
20020 cu->language = language_ada;
20021 break;
20022 case DW_LANG_Modula2:
20023 cu->language = language_m2;
20024 break;
20025 case DW_LANG_Pascal83:
20026 cu->language = language_pascal;
20027 break;
20028 case DW_LANG_ObjC:
20029 cu->language = language_objc;
20030 break;
20031 case DW_LANG_Rust:
20032 case DW_LANG_Rust_old:
20033 cu->language = language_rust;
20034 break;
20035 case DW_LANG_Cobol74:
20036 case DW_LANG_Cobol85:
20037 default:
20038 cu->language = language_minimal;
20039 break;
20040 }
20041 cu->language_defn = language_def (cu->language);
20042 }
20043
20044 /* Return the named attribute or NULL if not there. */
20045
20046 static struct attribute *
20047 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20048 {
20049 for (;;)
20050 {
20051 unsigned int i;
20052 struct attribute *spec = NULL;
20053
20054 for (i = 0; i < die->num_attrs; ++i)
20055 {
20056 if (die->attrs[i].name == name)
20057 return &die->attrs[i];
20058 if (die->attrs[i].name == DW_AT_specification
20059 || die->attrs[i].name == DW_AT_abstract_origin)
20060 spec = &die->attrs[i];
20061 }
20062
20063 if (!spec)
20064 break;
20065
20066 die = follow_die_ref (die, spec, &cu);
20067 }
20068
20069 return NULL;
20070 }
20071
20072 /* Return the named attribute or NULL if not there,
20073 but do not follow DW_AT_specification, etc.
20074 This is for use in contexts where we're reading .debug_types dies.
20075 Following DW_AT_specification, DW_AT_abstract_origin will take us
20076 back up the chain, and we want to go down. */
20077
20078 static struct attribute *
20079 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
20080 {
20081 unsigned int i;
20082
20083 for (i = 0; i < die->num_attrs; ++i)
20084 if (die->attrs[i].name == name)
20085 return &die->attrs[i];
20086
20087 return NULL;
20088 }
20089
20090 /* Return the string associated with a string-typed attribute, or NULL if it
20091 is either not found or is of an incorrect type. */
20092
20093 static const char *
20094 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20095 {
20096 struct attribute *attr;
20097 const char *str = NULL;
20098
20099 attr = dwarf2_attr (die, name, cu);
20100
20101 if (attr != NULL)
20102 {
20103 if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
20104 || attr->form == DW_FORM_string
20105 || attr->form == DW_FORM_strx
20106 || attr->form == DW_FORM_GNU_str_index
20107 || attr->form == DW_FORM_GNU_strp_alt)
20108 str = DW_STRING (attr);
20109 else
20110 complaint (_("string type expected for attribute %s for "
20111 "DIE at %s in module %s"),
20112 dwarf_attr_name (name), sect_offset_str (die->sect_off),
20113 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
20114 }
20115
20116 return str;
20117 }
20118
20119 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20120 and holds a non-zero value. This function should only be used for
20121 DW_FORM_flag or DW_FORM_flag_present attributes. */
20122
20123 static int
20124 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20125 {
20126 struct attribute *attr = dwarf2_attr (die, name, cu);
20127
20128 return (attr && DW_UNSND (attr));
20129 }
20130
20131 static int
20132 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20133 {
20134 /* A DIE is a declaration if it has a DW_AT_declaration attribute
20135 which value is non-zero. However, we have to be careful with
20136 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20137 (via dwarf2_flag_true_p) follows this attribute. So we may
20138 end up accidently finding a declaration attribute that belongs
20139 to a different DIE referenced by the specification attribute,
20140 even though the given DIE does not have a declaration attribute. */
20141 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20142 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20143 }
20144
20145 /* Return the die giving the specification for DIE, if there is
20146 one. *SPEC_CU is the CU containing DIE on input, and the CU
20147 containing the return value on output. If there is no
20148 specification, but there is an abstract origin, that is
20149 returned. */
20150
20151 static struct die_info *
20152 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20153 {
20154 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20155 *spec_cu);
20156
20157 if (spec_attr == NULL)
20158 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20159
20160 if (spec_attr == NULL)
20161 return NULL;
20162 else
20163 return follow_die_ref (die, spec_attr, spec_cu);
20164 }
20165
20166 /* Stub for free_line_header to match void * callback types. */
20167
20168 static void
20169 free_line_header_voidp (void *arg)
20170 {
20171 struct line_header *lh = (struct line_header *) arg;
20172
20173 delete lh;
20174 }
20175
20176 void
20177 line_header::add_include_dir (const char *include_dir)
20178 {
20179 if (dwarf_line_debug >= 2)
20180 fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20181 include_dirs.size () + 1, include_dir);
20182
20183 include_dirs.push_back (include_dir);
20184 }
20185
20186 void
20187 line_header::add_file_name (const char *name,
20188 dir_index d_index,
20189 unsigned int mod_time,
20190 unsigned int length)
20191 {
20192 if (dwarf_line_debug >= 2)
20193 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20194 (unsigned) file_names.size () + 1, name);
20195
20196 file_names.emplace_back (name, d_index, mod_time, length);
20197 }
20198
20199 /* A convenience function to find the proper .debug_line section for a CU. */
20200
20201 static struct dwarf2_section_info *
20202 get_debug_line_section (struct dwarf2_cu *cu)
20203 {
20204 struct dwarf2_section_info *section;
20205 struct dwarf2_per_objfile *dwarf2_per_objfile
20206 = cu->per_cu->dwarf2_per_objfile;
20207
20208 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20209 DWO file. */
20210 if (cu->dwo_unit && cu->per_cu->is_debug_types)
20211 section = &cu->dwo_unit->dwo_file->sections.line;
20212 else if (cu->per_cu->is_dwz)
20213 {
20214 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20215
20216 section = &dwz->line;
20217 }
20218 else
20219 section = &dwarf2_per_objfile->line;
20220
20221 return section;
20222 }
20223
20224 /* Read directory or file name entry format, starting with byte of
20225 format count entries, ULEB128 pairs of entry formats, ULEB128 of
20226 entries count and the entries themselves in the described entry
20227 format. */
20228
20229 static void
20230 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20231 bfd *abfd, const gdb_byte **bufp,
20232 struct line_header *lh,
20233 const struct comp_unit_head *cu_header,
20234 void (*callback) (struct line_header *lh,
20235 const char *name,
20236 dir_index d_index,
20237 unsigned int mod_time,
20238 unsigned int length))
20239 {
20240 gdb_byte format_count, formati;
20241 ULONGEST data_count, datai;
20242 const gdb_byte *buf = *bufp;
20243 const gdb_byte *format_header_data;
20244 unsigned int bytes_read;
20245
20246 format_count = read_1_byte (abfd, buf);
20247 buf += 1;
20248 format_header_data = buf;
20249 for (formati = 0; formati < format_count; formati++)
20250 {
20251 read_unsigned_leb128 (abfd, buf, &bytes_read);
20252 buf += bytes_read;
20253 read_unsigned_leb128 (abfd, buf, &bytes_read);
20254 buf += bytes_read;
20255 }
20256
20257 data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20258 buf += bytes_read;
20259 for (datai = 0; datai < data_count; datai++)
20260 {
20261 const gdb_byte *format = format_header_data;
20262 struct file_entry fe;
20263
20264 for (formati = 0; formati < format_count; formati++)
20265 {
20266 ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20267 format += bytes_read;
20268
20269 ULONGEST form = read_unsigned_leb128 (abfd, format, &bytes_read);
20270 format += bytes_read;
20271
20272 gdb::optional<const char *> string;
20273 gdb::optional<unsigned int> uint;
20274
20275 switch (form)
20276 {
20277 case DW_FORM_string:
20278 string.emplace (read_direct_string (abfd, buf, &bytes_read));
20279 buf += bytes_read;
20280 break;
20281
20282 case DW_FORM_line_strp:
20283 string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20284 abfd, buf,
20285 cu_header,
20286 &bytes_read));
20287 buf += bytes_read;
20288 break;
20289
20290 case DW_FORM_data1:
20291 uint.emplace (read_1_byte (abfd, buf));
20292 buf += 1;
20293 break;
20294
20295 case DW_FORM_data2:
20296 uint.emplace (read_2_bytes (abfd, buf));
20297 buf += 2;
20298 break;
20299
20300 case DW_FORM_data4:
20301 uint.emplace (read_4_bytes (abfd, buf));
20302 buf += 4;
20303 break;
20304
20305 case DW_FORM_data8:
20306 uint.emplace (read_8_bytes (abfd, buf));
20307 buf += 8;
20308 break;
20309
20310 case DW_FORM_udata:
20311 uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20312 buf += bytes_read;
20313 break;
20314
20315 case DW_FORM_block:
20316 /* It is valid only for DW_LNCT_timestamp which is ignored by
20317 current GDB. */
20318 break;
20319 }
20320
20321 switch (content_type)
20322 {
20323 case DW_LNCT_path:
20324 if (string.has_value ())
20325 fe.name = *string;
20326 break;
20327 case DW_LNCT_directory_index:
20328 if (uint.has_value ())
20329 fe.d_index = (dir_index) *uint;
20330 break;
20331 case DW_LNCT_timestamp:
20332 if (uint.has_value ())
20333 fe.mod_time = *uint;
20334 break;
20335 case DW_LNCT_size:
20336 if (uint.has_value ())
20337 fe.length = *uint;
20338 break;
20339 case DW_LNCT_MD5:
20340 break;
20341 default:
20342 complaint (_("Unknown format content type %s"),
20343 pulongest (content_type));
20344 }
20345 }
20346
20347 callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20348 }
20349
20350 *bufp = buf;
20351 }
20352
20353 /* Read the statement program header starting at OFFSET in
20354 .debug_line, or .debug_line.dwo. Return a pointer
20355 to a struct line_header, allocated using xmalloc.
20356 Returns NULL if there is a problem reading the header, e.g., if it
20357 has a version we don't understand.
20358
20359 NOTE: the strings in the include directory and file name tables of
20360 the returned object point into the dwarf line section buffer,
20361 and must not be freed. */
20362
20363 static line_header_up
20364 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20365 {
20366 const gdb_byte *line_ptr;
20367 unsigned int bytes_read, offset_size;
20368 int i;
20369 const char *cur_dir, *cur_file;
20370 struct dwarf2_section_info *section;
20371 bfd *abfd;
20372 struct dwarf2_per_objfile *dwarf2_per_objfile
20373 = cu->per_cu->dwarf2_per_objfile;
20374
20375 section = get_debug_line_section (cu);
20376 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20377 if (section->buffer == NULL)
20378 {
20379 if (cu->dwo_unit && cu->per_cu->is_debug_types)
20380 complaint (_("missing .debug_line.dwo section"));
20381 else
20382 complaint (_("missing .debug_line section"));
20383 return 0;
20384 }
20385
20386 /* We can't do this until we know the section is non-empty.
20387 Only then do we know we have such a section. */
20388 abfd = get_section_bfd_owner (section);
20389
20390 /* Make sure that at least there's room for the total_length field.
20391 That could be 12 bytes long, but we're just going to fudge that. */
20392 if (to_underlying (sect_off) + 4 >= section->size)
20393 {
20394 dwarf2_statement_list_fits_in_line_number_section_complaint ();
20395 return 0;
20396 }
20397
20398 line_header_up lh (new line_header ());
20399
20400 lh->sect_off = sect_off;
20401 lh->offset_in_dwz = cu->per_cu->is_dwz;
20402
20403 line_ptr = section->buffer + to_underlying (sect_off);
20404
20405 /* Read in the header. */
20406 lh->total_length =
20407 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20408 &bytes_read, &offset_size);
20409 line_ptr += bytes_read;
20410 if (line_ptr + lh->total_length > (section->buffer + section->size))
20411 {
20412 dwarf2_statement_list_fits_in_line_number_section_complaint ();
20413 return 0;
20414 }
20415 lh->statement_program_end = line_ptr + lh->total_length;
20416 lh->version = read_2_bytes (abfd, line_ptr);
20417 line_ptr += 2;
20418 if (lh->version > 5)
20419 {
20420 /* This is a version we don't understand. The format could have
20421 changed in ways we don't handle properly so just punt. */
20422 complaint (_("unsupported version in .debug_line section"));
20423 return NULL;
20424 }
20425 if (lh->version >= 5)
20426 {
20427 gdb_byte segment_selector_size;
20428
20429 /* Skip address size. */
20430 read_1_byte (abfd, line_ptr);
20431 line_ptr += 1;
20432
20433 segment_selector_size = read_1_byte (abfd, line_ptr);
20434 line_ptr += 1;
20435 if (segment_selector_size != 0)
20436 {
20437 complaint (_("unsupported segment selector size %u "
20438 "in .debug_line section"),
20439 segment_selector_size);
20440 return NULL;
20441 }
20442 }
20443 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20444 line_ptr += offset_size;
20445 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20446 line_ptr += 1;
20447 if (lh->version >= 4)
20448 {
20449 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20450 line_ptr += 1;
20451 }
20452 else
20453 lh->maximum_ops_per_instruction = 1;
20454
20455 if (lh->maximum_ops_per_instruction == 0)
20456 {
20457 lh->maximum_ops_per_instruction = 1;
20458 complaint (_("invalid maximum_ops_per_instruction "
20459 "in `.debug_line' section"));
20460 }
20461
20462 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20463 line_ptr += 1;
20464 lh->line_base = read_1_signed_byte (abfd, line_ptr);
20465 line_ptr += 1;
20466 lh->line_range = read_1_byte (abfd, line_ptr);
20467 line_ptr += 1;
20468 lh->opcode_base = read_1_byte (abfd, line_ptr);
20469 line_ptr += 1;
20470 lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20471
20472 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
20473 for (i = 1; i < lh->opcode_base; ++i)
20474 {
20475 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20476 line_ptr += 1;
20477 }
20478
20479 if (lh->version >= 5)
20480 {
20481 /* Read directory table. */
20482 read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20483 &cu->header,
20484 [] (struct line_header *header, const char *name,
20485 dir_index d_index, unsigned int mod_time,
20486 unsigned int length)
20487 {
20488 header->add_include_dir (name);
20489 });
20490
20491 /* Read file name table. */
20492 read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20493 &cu->header,
20494 [] (struct line_header *header, const char *name,
20495 dir_index d_index, unsigned int mod_time,
20496 unsigned int length)
20497 {
20498 header->add_file_name (name, d_index, mod_time, length);
20499 });
20500 }
20501 else
20502 {
20503 /* Read directory table. */
20504 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20505 {
20506 line_ptr += bytes_read;
20507 lh->add_include_dir (cur_dir);
20508 }
20509 line_ptr += bytes_read;
20510
20511 /* Read file name table. */
20512 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20513 {
20514 unsigned int mod_time, length;
20515 dir_index d_index;
20516
20517 line_ptr += bytes_read;
20518 d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20519 line_ptr += bytes_read;
20520 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20521 line_ptr += bytes_read;
20522 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20523 line_ptr += bytes_read;
20524
20525 lh->add_file_name (cur_file, d_index, mod_time, length);
20526 }
20527 line_ptr += bytes_read;
20528 }
20529 lh->statement_program_start = line_ptr;
20530
20531 if (line_ptr > (section->buffer + section->size))
20532 complaint (_("line number info header doesn't "
20533 "fit in `.debug_line' section"));
20534
20535 return lh;
20536 }
20537
20538 /* Subroutine of dwarf_decode_lines to simplify it.
20539 Return the file name of the psymtab for included file FILE_INDEX
20540 in line header LH of PST.
20541 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20542 If space for the result is malloc'd, *NAME_HOLDER will be set.
20543 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename. */
20544
20545 static const char *
20546 psymtab_include_file_name (const struct line_header *lh, int file_index,
20547 const struct partial_symtab *pst,
20548 const char *comp_dir,
20549 gdb::unique_xmalloc_ptr<char> *name_holder)
20550 {
20551 const file_entry &fe = lh->file_names[file_index];
20552 const char *include_name = fe.name;
20553 const char *include_name_to_compare = include_name;
20554 const char *pst_filename;
20555 int file_is_pst;
20556
20557 const char *dir_name = fe.include_dir (lh);
20558
20559 gdb::unique_xmalloc_ptr<char> hold_compare;
20560 if (!IS_ABSOLUTE_PATH (include_name)
20561 && (dir_name != NULL || comp_dir != NULL))
20562 {
20563 /* Avoid creating a duplicate psymtab for PST.
20564 We do this by comparing INCLUDE_NAME and PST_FILENAME.
20565 Before we do the comparison, however, we need to account
20566 for DIR_NAME and COMP_DIR.
20567 First prepend dir_name (if non-NULL). If we still don't
20568 have an absolute path prepend comp_dir (if non-NULL).
20569 However, the directory we record in the include-file's
20570 psymtab does not contain COMP_DIR (to match the
20571 corresponding symtab(s)).
20572
20573 Example:
20574
20575 bash$ cd /tmp
20576 bash$ gcc -g ./hello.c
20577 include_name = "hello.c"
20578 dir_name = "."
20579 DW_AT_comp_dir = comp_dir = "/tmp"
20580 DW_AT_name = "./hello.c"
20581
20582 */
20583
20584 if (dir_name != NULL)
20585 {
20586 name_holder->reset (concat (dir_name, SLASH_STRING,
20587 include_name, (char *) NULL));
20588 include_name = name_holder->get ();
20589 include_name_to_compare = include_name;
20590 }
20591 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20592 {
20593 hold_compare.reset (concat (comp_dir, SLASH_STRING,
20594 include_name, (char *) NULL));
20595 include_name_to_compare = hold_compare.get ();
20596 }
20597 }
20598
20599 pst_filename = pst->filename;
20600 gdb::unique_xmalloc_ptr<char> copied_name;
20601 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20602 {
20603 copied_name.reset (concat (pst->dirname, SLASH_STRING,
20604 pst_filename, (char *) NULL));
20605 pst_filename = copied_name.get ();
20606 }
20607
20608 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20609
20610 if (file_is_pst)
20611 return NULL;
20612 return include_name;
20613 }
20614
20615 /* State machine to track the state of the line number program. */
20616
20617 class lnp_state_machine
20618 {
20619 public:
20620 /* Initialize a machine state for the start of a line number
20621 program. */
20622 lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20623 bool record_lines_p);
20624
20625 file_entry *current_file ()
20626 {
20627 /* lh->file_names is 0-based, but the file name numbers in the
20628 statement program are 1-based. */
20629 return m_line_header->file_name_at (m_file);
20630 }
20631
20632 /* Record the line in the state machine. END_SEQUENCE is true if
20633 we're processing the end of a sequence. */
20634 void record_line (bool end_sequence);
20635
20636 /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20637 nop-out rest of the lines in this sequence. */
20638 void check_line_address (struct dwarf2_cu *cu,
20639 const gdb_byte *line_ptr,
20640 CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20641
20642 void handle_set_discriminator (unsigned int discriminator)
20643 {
20644 m_discriminator = discriminator;
20645 m_line_has_non_zero_discriminator |= discriminator != 0;
20646 }
20647
20648 /* Handle DW_LNE_set_address. */
20649 void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20650 {
20651 m_op_index = 0;
20652 address += baseaddr;
20653 m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20654 }
20655
20656 /* Handle DW_LNS_advance_pc. */
20657 void handle_advance_pc (CORE_ADDR adjust);
20658
20659 /* Handle a special opcode. */
20660 void handle_special_opcode (unsigned char op_code);
20661
20662 /* Handle DW_LNS_advance_line. */
20663 void handle_advance_line (int line_delta)
20664 {
20665 advance_line (line_delta);
20666 }
20667
20668 /* Handle DW_LNS_set_file. */
20669 void handle_set_file (file_name_index file);
20670
20671 /* Handle DW_LNS_negate_stmt. */
20672 void handle_negate_stmt ()
20673 {
20674 m_is_stmt = !m_is_stmt;
20675 }
20676
20677 /* Handle DW_LNS_const_add_pc. */
20678 void handle_const_add_pc ();
20679
20680 /* Handle DW_LNS_fixed_advance_pc. */
20681 void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20682 {
20683 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20684 m_op_index = 0;
20685 }
20686
20687 /* Handle DW_LNS_copy. */
20688 void handle_copy ()
20689 {
20690 record_line (false);
20691 m_discriminator = 0;
20692 }
20693
20694 /* Handle DW_LNE_end_sequence. */
20695 void handle_end_sequence ()
20696 {
20697 m_currently_recording_lines = true;
20698 }
20699
20700 private:
20701 /* Advance the line by LINE_DELTA. */
20702 void advance_line (int line_delta)
20703 {
20704 m_line += line_delta;
20705
20706 if (line_delta != 0)
20707 m_line_has_non_zero_discriminator = m_discriminator != 0;
20708 }
20709
20710 struct dwarf2_cu *m_cu;
20711
20712 gdbarch *m_gdbarch;
20713
20714 /* True if we're recording lines.
20715 Otherwise we're building partial symtabs and are just interested in
20716 finding include files mentioned by the line number program. */
20717 bool m_record_lines_p;
20718
20719 /* The line number header. */
20720 line_header *m_line_header;
20721
20722 /* These are part of the standard DWARF line number state machine,
20723 and initialized according to the DWARF spec. */
20724
20725 unsigned char m_op_index = 0;
20726 /* The line table index (1-based) of the current file. */
20727 file_name_index m_file = (file_name_index) 1;
20728 unsigned int m_line = 1;
20729
20730 /* These are initialized in the constructor. */
20731
20732 CORE_ADDR m_address;
20733 bool m_is_stmt;
20734 unsigned int m_discriminator;
20735
20736 /* Additional bits of state we need to track. */
20737
20738 /* The last file that we called dwarf2_start_subfile for.
20739 This is only used for TLLs. */
20740 unsigned int m_last_file = 0;
20741 /* The last file a line number was recorded for. */
20742 struct subfile *m_last_subfile = NULL;
20743
20744 /* When true, record the lines we decode. */
20745 bool m_currently_recording_lines = false;
20746
20747 /* The last line number that was recorded, used to coalesce
20748 consecutive entries for the same line. This can happen, for
20749 example, when discriminators are present. PR 17276. */
20750 unsigned int m_last_line = 0;
20751 bool m_line_has_non_zero_discriminator = false;
20752 };
20753
20754 void
20755 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20756 {
20757 CORE_ADDR addr_adj = (((m_op_index + adjust)
20758 / m_line_header->maximum_ops_per_instruction)
20759 * m_line_header->minimum_instruction_length);
20760 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20761 m_op_index = ((m_op_index + adjust)
20762 % m_line_header->maximum_ops_per_instruction);
20763 }
20764
20765 void
20766 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20767 {
20768 unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20769 CORE_ADDR addr_adj = (((m_op_index
20770 + (adj_opcode / m_line_header->line_range))
20771 / m_line_header->maximum_ops_per_instruction)
20772 * m_line_header->minimum_instruction_length);
20773 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20774 m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20775 % m_line_header->maximum_ops_per_instruction);
20776
20777 int line_delta = (m_line_header->line_base
20778 + (adj_opcode % m_line_header->line_range));
20779 advance_line (line_delta);
20780 record_line (false);
20781 m_discriminator = 0;
20782 }
20783
20784 void
20785 lnp_state_machine::handle_set_file (file_name_index file)
20786 {
20787 m_file = file;
20788
20789 const file_entry *fe = current_file ();
20790 if (fe == NULL)
20791 dwarf2_debug_line_missing_file_complaint ();
20792 else if (m_record_lines_p)
20793 {
20794 const char *dir = fe->include_dir (m_line_header);
20795
20796 m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20797 m_line_has_non_zero_discriminator = m_discriminator != 0;
20798 dwarf2_start_subfile (m_cu, fe->name, dir);
20799 }
20800 }
20801
20802 void
20803 lnp_state_machine::handle_const_add_pc ()
20804 {
20805 CORE_ADDR adjust
20806 = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20807
20808 CORE_ADDR addr_adj
20809 = (((m_op_index + adjust)
20810 / m_line_header->maximum_ops_per_instruction)
20811 * m_line_header->minimum_instruction_length);
20812
20813 m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20814 m_op_index = ((m_op_index + adjust)
20815 % m_line_header->maximum_ops_per_instruction);
20816 }
20817
20818 /* Return non-zero if we should add LINE to the line number table.
20819 LINE is the line to add, LAST_LINE is the last line that was added,
20820 LAST_SUBFILE is the subfile for LAST_LINE.
20821 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20822 had a non-zero discriminator.
20823
20824 We have to be careful in the presence of discriminators.
20825 E.g., for this line:
20826
20827 for (i = 0; i < 100000; i++);
20828
20829 clang can emit four line number entries for that one line,
20830 each with a different discriminator.
20831 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20832
20833 However, we want gdb to coalesce all four entries into one.
20834 Otherwise the user could stepi into the middle of the line and
20835 gdb would get confused about whether the pc really was in the
20836 middle of the line.
20837
20838 Things are further complicated by the fact that two consecutive
20839 line number entries for the same line is a heuristic used by gcc
20840 to denote the end of the prologue. So we can't just discard duplicate
20841 entries, we have to be selective about it. The heuristic we use is
20842 that we only collapse consecutive entries for the same line if at least
20843 one of those entries has a non-zero discriminator. PR 17276.
20844
20845 Note: Addresses in the line number state machine can never go backwards
20846 within one sequence, thus this coalescing is ok. */
20847
20848 static int
20849 dwarf_record_line_p (struct dwarf2_cu *cu,
20850 unsigned int line, unsigned int last_line,
20851 int line_has_non_zero_discriminator,
20852 struct subfile *last_subfile)
20853 {
20854 if (cu->get_builder ()->get_current_subfile () != last_subfile)
20855 return 1;
20856 if (line != last_line)
20857 return 1;
20858 /* Same line for the same file that we've seen already.
20859 As a last check, for pr 17276, only record the line if the line
20860 has never had a non-zero discriminator. */
20861 if (!line_has_non_zero_discriminator)
20862 return 1;
20863 return 0;
20864 }
20865
20866 /* Use the CU's builder to record line number LINE beginning at
20867 address ADDRESS in the line table of subfile SUBFILE. */
20868
20869 static void
20870 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20871 unsigned int line, CORE_ADDR address,
20872 struct dwarf2_cu *cu)
20873 {
20874 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20875
20876 if (dwarf_line_debug)
20877 {
20878 fprintf_unfiltered (gdb_stdlog,
20879 "Recording line %u, file %s, address %s\n",
20880 line, lbasename (subfile->name),
20881 paddress (gdbarch, address));
20882 }
20883
20884 if (cu != nullptr)
20885 cu->get_builder ()->record_line (subfile, line, addr);
20886 }
20887
20888 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20889 Mark the end of a set of line number records.
20890 The arguments are the same as for dwarf_record_line_1.
20891 If SUBFILE is NULL the request is ignored. */
20892
20893 static void
20894 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20895 CORE_ADDR address, struct dwarf2_cu *cu)
20896 {
20897 if (subfile == NULL)
20898 return;
20899
20900 if (dwarf_line_debug)
20901 {
20902 fprintf_unfiltered (gdb_stdlog,
20903 "Finishing current line, file %s, address %s\n",
20904 lbasename (subfile->name),
20905 paddress (gdbarch, address));
20906 }
20907
20908 dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20909 }
20910
20911 void
20912 lnp_state_machine::record_line (bool end_sequence)
20913 {
20914 if (dwarf_line_debug)
20915 {
20916 fprintf_unfiltered (gdb_stdlog,
20917 "Processing actual line %u: file %u,"
20918 " address %s, is_stmt %u, discrim %u\n",
20919 m_line, to_underlying (m_file),
20920 paddress (m_gdbarch, m_address),
20921 m_is_stmt, m_discriminator);
20922 }
20923
20924 file_entry *fe = current_file ();
20925
20926 if (fe == NULL)
20927 dwarf2_debug_line_missing_file_complaint ();
20928 /* For now we ignore lines not starting on an instruction boundary.
20929 But not when processing end_sequence for compatibility with the
20930 previous version of the code. */
20931 else if (m_op_index == 0 || end_sequence)
20932 {
20933 fe->included_p = 1;
20934 if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20935 {
20936 if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
20937 || end_sequence)
20938 {
20939 dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20940 m_currently_recording_lines ? m_cu : nullptr);
20941 }
20942
20943 if (!end_sequence)
20944 {
20945 if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20946 m_line_has_non_zero_discriminator,
20947 m_last_subfile))
20948 {
20949 buildsym_compunit *builder = m_cu->get_builder ();
20950 dwarf_record_line_1 (m_gdbarch,
20951 builder->get_current_subfile (),
20952 m_line, m_address,
20953 m_currently_recording_lines ? m_cu : nullptr);
20954 }
20955 m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20956 m_last_line = m_line;
20957 }
20958 }
20959 }
20960 }
20961
20962 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20963 line_header *lh, bool record_lines_p)
20964 {
20965 m_cu = cu;
20966 m_gdbarch = arch;
20967 m_record_lines_p = record_lines_p;
20968 m_line_header = lh;
20969
20970 m_currently_recording_lines = true;
20971
20972 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20973 was a line entry for it so that the backend has a chance to adjust it
20974 and also record it in case it needs it. This is currently used by MIPS
20975 code, cf. `mips_adjust_dwarf2_line'. */
20976 m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20977 m_is_stmt = lh->default_is_stmt;
20978 m_discriminator = 0;
20979 }
20980
20981 void
20982 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20983 const gdb_byte *line_ptr,
20984 CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20985 {
20986 /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20987 the pc range of the CU. However, we restrict the test to only ADDRESS
20988 values of zero to preserve GDB's previous behaviour which is to handle
20989 the specific case of a function being GC'd by the linker. */
20990
20991 if (address == 0 && address < unrelocated_lowpc)
20992 {
20993 /* This line table is for a function which has been
20994 GCd by the linker. Ignore it. PR gdb/12528 */
20995
20996 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20997 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20998
20999 complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
21000 line_offset, objfile_name (objfile));
21001 m_currently_recording_lines = false;
21002 /* Note: m_currently_recording_lines is left as false until we see
21003 DW_LNE_end_sequence. */
21004 }
21005 }
21006
21007 /* Subroutine of dwarf_decode_lines to simplify it.
21008 Process the line number information in LH.
21009 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
21010 program in order to set included_p for every referenced header. */
21011
21012 static void
21013 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
21014 const int decode_for_pst_p, CORE_ADDR lowpc)
21015 {
21016 const gdb_byte *line_ptr, *extended_end;
21017 const gdb_byte *line_end;
21018 unsigned int bytes_read, extended_len;
21019 unsigned char op_code, extended_op;
21020 CORE_ADDR baseaddr;
21021 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21022 bfd *abfd = objfile->obfd;
21023 struct gdbarch *gdbarch = get_objfile_arch (objfile);
21024 /* True if we're recording line info (as opposed to building partial
21025 symtabs and just interested in finding include files mentioned by
21026 the line number program). */
21027 bool record_lines_p = !decode_for_pst_p;
21028
21029 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21030
21031 line_ptr = lh->statement_program_start;
21032 line_end = lh->statement_program_end;
21033
21034 /* Read the statement sequences until there's nothing left. */
21035 while (line_ptr < line_end)
21036 {
21037 /* The DWARF line number program state machine. Reset the state
21038 machine at the start of each sequence. */
21039 lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
21040 bool end_sequence = false;
21041
21042 if (record_lines_p)
21043 {
21044 /* Start a subfile for the current file of the state
21045 machine. */
21046 const file_entry *fe = state_machine.current_file ();
21047
21048 if (fe != NULL)
21049 dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
21050 }
21051
21052 /* Decode the table. */
21053 while (line_ptr < line_end && !end_sequence)
21054 {
21055 op_code = read_1_byte (abfd, line_ptr);
21056 line_ptr += 1;
21057
21058 if (op_code >= lh->opcode_base)
21059 {
21060 /* Special opcode. */
21061 state_machine.handle_special_opcode (op_code);
21062 }
21063 else switch (op_code)
21064 {
21065 case DW_LNS_extended_op:
21066 extended_len = read_unsigned_leb128 (abfd, line_ptr,
21067 &bytes_read);
21068 line_ptr += bytes_read;
21069 extended_end = line_ptr + extended_len;
21070 extended_op = read_1_byte (abfd, line_ptr);
21071 line_ptr += 1;
21072 switch (extended_op)
21073 {
21074 case DW_LNE_end_sequence:
21075 state_machine.handle_end_sequence ();
21076 end_sequence = true;
21077 break;
21078 case DW_LNE_set_address:
21079 {
21080 CORE_ADDR address
21081 = read_address (abfd, line_ptr, cu, &bytes_read);
21082 line_ptr += bytes_read;
21083
21084 state_machine.check_line_address (cu, line_ptr,
21085 lowpc - baseaddr, address);
21086 state_machine.handle_set_address (baseaddr, address);
21087 }
21088 break;
21089 case DW_LNE_define_file:
21090 {
21091 const char *cur_file;
21092 unsigned int mod_time, length;
21093 dir_index dindex;
21094
21095 cur_file = read_direct_string (abfd, line_ptr,
21096 &bytes_read);
21097 line_ptr += bytes_read;
21098 dindex = (dir_index)
21099 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21100 line_ptr += bytes_read;
21101 mod_time =
21102 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21103 line_ptr += bytes_read;
21104 length =
21105 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21106 line_ptr += bytes_read;
21107 lh->add_file_name (cur_file, dindex, mod_time, length);
21108 }
21109 break;
21110 case DW_LNE_set_discriminator:
21111 {
21112 /* The discriminator is not interesting to the
21113 debugger; just ignore it. We still need to
21114 check its value though:
21115 if there are consecutive entries for the same
21116 (non-prologue) line we want to coalesce them.
21117 PR 17276. */
21118 unsigned int discr
21119 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21120 line_ptr += bytes_read;
21121
21122 state_machine.handle_set_discriminator (discr);
21123 }
21124 break;
21125 default:
21126 complaint (_("mangled .debug_line section"));
21127 return;
21128 }
21129 /* Make sure that we parsed the extended op correctly. If e.g.
21130 we expected a different address size than the producer used,
21131 we may have read the wrong number of bytes. */
21132 if (line_ptr != extended_end)
21133 {
21134 complaint (_("mangled .debug_line section"));
21135 return;
21136 }
21137 break;
21138 case DW_LNS_copy:
21139 state_machine.handle_copy ();
21140 break;
21141 case DW_LNS_advance_pc:
21142 {
21143 CORE_ADDR adjust
21144 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21145 line_ptr += bytes_read;
21146
21147 state_machine.handle_advance_pc (adjust);
21148 }
21149 break;
21150 case DW_LNS_advance_line:
21151 {
21152 int line_delta
21153 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21154 line_ptr += bytes_read;
21155
21156 state_machine.handle_advance_line (line_delta);
21157 }
21158 break;
21159 case DW_LNS_set_file:
21160 {
21161 file_name_index file
21162 = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21163 &bytes_read);
21164 line_ptr += bytes_read;
21165
21166 state_machine.handle_set_file (file);
21167 }
21168 break;
21169 case DW_LNS_set_column:
21170 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21171 line_ptr += bytes_read;
21172 break;
21173 case DW_LNS_negate_stmt:
21174 state_machine.handle_negate_stmt ();
21175 break;
21176 case DW_LNS_set_basic_block:
21177 break;
21178 /* Add to the address register of the state machine the
21179 address increment value corresponding to special opcode
21180 255. I.e., this value is scaled by the minimum
21181 instruction length since special opcode 255 would have
21182 scaled the increment. */
21183 case DW_LNS_const_add_pc:
21184 state_machine.handle_const_add_pc ();
21185 break;
21186 case DW_LNS_fixed_advance_pc:
21187 {
21188 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21189 line_ptr += 2;
21190
21191 state_machine.handle_fixed_advance_pc (addr_adj);
21192 }
21193 break;
21194 default:
21195 {
21196 /* Unknown standard opcode, ignore it. */
21197 int i;
21198
21199 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21200 {
21201 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21202 line_ptr += bytes_read;
21203 }
21204 }
21205 }
21206 }
21207
21208 if (!end_sequence)
21209 dwarf2_debug_line_missing_end_sequence_complaint ();
21210
21211 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21212 in which case we still finish recording the last line). */
21213 state_machine.record_line (true);
21214 }
21215 }
21216
21217 /* Decode the Line Number Program (LNP) for the given line_header
21218 structure and CU. The actual information extracted and the type
21219 of structures created from the LNP depends on the value of PST.
21220
21221 1. If PST is NULL, then this procedure uses the data from the program
21222 to create all necessary symbol tables, and their linetables.
21223
21224 2. If PST is not NULL, this procedure reads the program to determine
21225 the list of files included by the unit represented by PST, and
21226 builds all the associated partial symbol tables.
21227
21228 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21229 It is used for relative paths in the line table.
21230 NOTE: When processing partial symtabs (pst != NULL),
21231 comp_dir == pst->dirname.
21232
21233 NOTE: It is important that psymtabs have the same file name (via strcmp)
21234 as the corresponding symtab. Since COMP_DIR is not used in the name of the
21235 symtab we don't use it in the name of the psymtabs we create.
21236 E.g. expand_line_sal requires this when finding psymtabs to expand.
21237 A good testcase for this is mb-inline.exp.
21238
21239 LOWPC is the lowest address in CU (or 0 if not known).
21240
21241 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21242 for its PC<->lines mapping information. Otherwise only the filename
21243 table is read in. */
21244
21245 static void
21246 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21247 struct dwarf2_cu *cu, struct partial_symtab *pst,
21248 CORE_ADDR lowpc, int decode_mapping)
21249 {
21250 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21251 const int decode_for_pst_p = (pst != NULL);
21252
21253 if (decode_mapping)
21254 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21255
21256 if (decode_for_pst_p)
21257 {
21258 int file_index;
21259
21260 /* Now that we're done scanning the Line Header Program, we can
21261 create the psymtab of each included file. */
21262 for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21263 if (lh->file_names[file_index].included_p == 1)
21264 {
21265 gdb::unique_xmalloc_ptr<char> name_holder;
21266 const char *include_name =
21267 psymtab_include_file_name (lh, file_index, pst, comp_dir,
21268 &name_holder);
21269 if (include_name != NULL)
21270 dwarf2_create_include_psymtab (include_name, pst, objfile);
21271 }
21272 }
21273 else
21274 {
21275 /* Make sure a symtab is created for every file, even files
21276 which contain only variables (i.e. no code with associated
21277 line numbers). */
21278 buildsym_compunit *builder = cu->get_builder ();
21279 struct compunit_symtab *cust = builder->get_compunit_symtab ();
21280 int i;
21281
21282 for (i = 0; i < lh->file_names.size (); i++)
21283 {
21284 file_entry &fe = lh->file_names[i];
21285
21286 dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21287
21288 if (builder->get_current_subfile ()->symtab == NULL)
21289 {
21290 builder->get_current_subfile ()->symtab
21291 = allocate_symtab (cust,
21292 builder->get_current_subfile ()->name);
21293 }
21294 fe.symtab = builder->get_current_subfile ()->symtab;
21295 }
21296 }
21297 }
21298
21299 /* Start a subfile for DWARF. FILENAME is the name of the file and
21300 DIRNAME the name of the source directory which contains FILENAME
21301 or NULL if not known.
21302 This routine tries to keep line numbers from identical absolute and
21303 relative file names in a common subfile.
21304
21305 Using the `list' example from the GDB testsuite, which resides in
21306 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21307 of /srcdir/list0.c yields the following debugging information for list0.c:
21308
21309 DW_AT_name: /srcdir/list0.c
21310 DW_AT_comp_dir: /compdir
21311 files.files[0].name: list0.h
21312 files.files[0].dir: /srcdir
21313 files.files[1].name: list0.c
21314 files.files[1].dir: /srcdir
21315
21316 The line number information for list0.c has to end up in a single
21317 subfile, so that `break /srcdir/list0.c:1' works as expected.
21318 start_subfile will ensure that this happens provided that we pass the
21319 concatenation of files.files[1].dir and files.files[1].name as the
21320 subfile's name. */
21321
21322 static void
21323 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21324 const char *dirname)
21325 {
21326 char *copy = NULL;
21327
21328 /* In order not to lose the line information directory,
21329 we concatenate it to the filename when it makes sense.
21330 Note that the Dwarf3 standard says (speaking of filenames in line
21331 information): ``The directory index is ignored for file names
21332 that represent full path names''. Thus ignoring dirname in the
21333 `else' branch below isn't an issue. */
21334
21335 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21336 {
21337 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21338 filename = copy;
21339 }
21340
21341 cu->get_builder ()->start_subfile (filename);
21342
21343 if (copy != NULL)
21344 xfree (copy);
21345 }
21346
21347 /* Start a symtab for DWARF. NAME, COMP_DIR, LOW_PC are passed to the
21348 buildsym_compunit constructor. */
21349
21350 struct compunit_symtab *
21351 dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
21352 CORE_ADDR low_pc)
21353 {
21354 gdb_assert (m_builder == nullptr);
21355
21356 m_builder.reset (new struct buildsym_compunit
21357 (per_cu->dwarf2_per_objfile->objfile,
21358 name, comp_dir, language, low_pc));
21359
21360 list_in_scope = get_builder ()->get_file_symbols ();
21361
21362 get_builder ()->record_debugformat ("DWARF 2");
21363 get_builder ()->record_producer (producer);
21364
21365 processing_has_namespace_info = false;
21366
21367 return get_builder ()->get_compunit_symtab ();
21368 }
21369
21370 static void
21371 var_decode_location (struct attribute *attr, struct symbol *sym,
21372 struct dwarf2_cu *cu)
21373 {
21374 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21375 struct comp_unit_head *cu_header = &cu->header;
21376
21377 /* NOTE drow/2003-01-30: There used to be a comment and some special
21378 code here to turn a symbol with DW_AT_external and a
21379 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
21380 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21381 with some versions of binutils) where shared libraries could have
21382 relocations against symbols in their debug information - the
21383 minimal symbol would have the right address, but the debug info
21384 would not. It's no longer necessary, because we will explicitly
21385 apply relocations when we read in the debug information now. */
21386
21387 /* A DW_AT_location attribute with no contents indicates that a
21388 variable has been optimized away. */
21389 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21390 {
21391 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21392 return;
21393 }
21394
21395 /* Handle one degenerate form of location expression specially, to
21396 preserve GDB's previous behavior when section offsets are
21397 specified. If this is just a DW_OP_addr, DW_OP_addrx, or
21398 DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC. */
21399
21400 if (attr_form_is_block (attr)
21401 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21402 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21403 || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21404 || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
21405 && (DW_BLOCK (attr)->size
21406 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21407 {
21408 unsigned int dummy;
21409
21410 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21411 SYMBOL_VALUE_ADDRESS (sym) =
21412 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21413 else
21414 SYMBOL_VALUE_ADDRESS (sym) =
21415 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21416 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21417 fixup_symbol_section (sym, objfile);
21418 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21419 SYMBOL_SECTION (sym));
21420 return;
21421 }
21422
21423 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21424 expression evaluator, and use LOC_COMPUTED only when necessary
21425 (i.e. when the value of a register or memory location is
21426 referenced, or a thread-local block, etc.). Then again, it might
21427 not be worthwhile. I'm assuming that it isn't unless performance
21428 or memory numbers show me otherwise. */
21429
21430 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21431
21432 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21433 cu->has_loclist = true;
21434 }
21435
21436 /* Given a pointer to a DWARF information entry, figure out if we need
21437 to make a symbol table entry for it, and if so, create a new entry
21438 and return a pointer to it.
21439 If TYPE is NULL, determine symbol type from the die, otherwise
21440 used the passed type.
21441 If SPACE is not NULL, use it to hold the new symbol. If it is
21442 NULL, allocate a new symbol on the objfile's obstack. */
21443
21444 static struct symbol *
21445 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21446 struct symbol *space)
21447 {
21448 struct dwarf2_per_objfile *dwarf2_per_objfile
21449 = cu->per_cu->dwarf2_per_objfile;
21450 struct objfile *objfile = dwarf2_per_objfile->objfile;
21451 struct gdbarch *gdbarch = get_objfile_arch (objfile);
21452 struct symbol *sym = NULL;
21453 const char *name;
21454 struct attribute *attr = NULL;
21455 struct attribute *attr2 = NULL;
21456 CORE_ADDR baseaddr;
21457 struct pending **list_to_add = NULL;
21458
21459 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21460
21461 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21462
21463 name = dwarf2_name (die, cu);
21464 if (name)
21465 {
21466 const char *linkagename;
21467 int suppress_add = 0;
21468
21469 if (space)
21470 sym = space;
21471 else
21472 sym = allocate_symbol (objfile);
21473 OBJSTAT (objfile, n_syms++);
21474
21475 /* Cache this symbol's name and the name's demangled form (if any). */
21476 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21477 linkagename = dwarf2_physname (name, die, cu);
21478 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21479
21480 /* Fortran does not have mangling standard and the mangling does differ
21481 between gfortran, iFort etc. */
21482 if (cu->language == language_fortran
21483 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21484 symbol_set_demangled_name (&(sym->ginfo),
21485 dwarf2_full_name (name, die, cu),
21486 NULL);
21487
21488 /* Default assumptions.
21489 Use the passed type or decode it from the die. */
21490 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21491 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21492 if (type != NULL)
21493 SYMBOL_TYPE (sym) = type;
21494 else
21495 SYMBOL_TYPE (sym) = die_type (die, cu);
21496 attr = dwarf2_attr (die,
21497 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21498 cu);
21499 if (attr)
21500 {
21501 SYMBOL_LINE (sym) = DW_UNSND (attr);
21502 }
21503
21504 attr = dwarf2_attr (die,
21505 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21506 cu);
21507 if (attr)
21508 {
21509 file_name_index file_index = (file_name_index) DW_UNSND (attr);
21510 struct file_entry *fe;
21511
21512 if (cu->line_header != NULL)
21513 fe = cu->line_header->file_name_at (file_index);
21514 else
21515 fe = NULL;
21516
21517 if (fe == NULL)
21518 complaint (_("file index out of range"));
21519 else
21520 symbol_set_symtab (sym, fe->symtab);
21521 }
21522
21523 switch (die->tag)
21524 {
21525 case DW_TAG_label:
21526 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21527 if (attr)
21528 {
21529 CORE_ADDR addr;
21530
21531 addr = attr_value_as_address (attr);
21532 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21533 SYMBOL_VALUE_ADDRESS (sym) = addr;
21534 }
21535 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21536 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21537 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21538 add_symbol_to_list (sym, cu->list_in_scope);
21539 break;
21540 case DW_TAG_subprogram:
21541 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21542 finish_block. */
21543 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21544 attr2 = dwarf2_attr (die, DW_AT_external, cu);
21545 if ((attr2 && (DW_UNSND (attr2) != 0))
21546 || cu->language == language_ada)
21547 {
21548 /* Subprograms marked external are stored as a global symbol.
21549 Ada subprograms, whether marked external or not, are always
21550 stored as a global symbol, because we want to be able to
21551 access them globally. For instance, we want to be able
21552 to break on a nested subprogram without having to
21553 specify the context. */
21554 list_to_add = cu->get_builder ()->get_global_symbols ();
21555 }
21556 else
21557 {
21558 list_to_add = cu->list_in_scope;
21559 }
21560 break;
21561 case DW_TAG_inlined_subroutine:
21562 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21563 finish_block. */
21564 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21565 SYMBOL_INLINED (sym) = 1;
21566 list_to_add = cu->list_in_scope;
21567 break;
21568 case DW_TAG_template_value_param:
21569 suppress_add = 1;
21570 /* Fall through. */
21571 case DW_TAG_constant:
21572 case DW_TAG_variable:
21573 case DW_TAG_member:
21574 /* Compilation with minimal debug info may result in
21575 variables with missing type entries. Change the
21576 misleading `void' type to something sensible. */
21577 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21578 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21579
21580 attr = dwarf2_attr (die, DW_AT_const_value, cu);
21581 /* In the case of DW_TAG_member, we should only be called for
21582 static const members. */
21583 if (die->tag == DW_TAG_member)
21584 {
21585 /* dwarf2_add_field uses die_is_declaration,
21586 so we do the same. */
21587 gdb_assert (die_is_declaration (die, cu));
21588 gdb_assert (attr);
21589 }
21590 if (attr)
21591 {
21592 dwarf2_const_value (attr, sym, cu);
21593 attr2 = dwarf2_attr (die, DW_AT_external, cu);
21594 if (!suppress_add)
21595 {
21596 if (attr2 && (DW_UNSND (attr2) != 0))
21597 list_to_add = cu->get_builder ()->get_global_symbols ();
21598 else
21599 list_to_add = cu->list_in_scope;
21600 }
21601 break;
21602 }
21603 attr = dwarf2_attr (die, DW_AT_location, cu);
21604 if (attr)
21605 {
21606 var_decode_location (attr, sym, cu);
21607 attr2 = dwarf2_attr (die, DW_AT_external, cu);
21608
21609 /* Fortran explicitly imports any global symbols to the local
21610 scope by DW_TAG_common_block. */
21611 if (cu->language == language_fortran && die->parent
21612 && die->parent->tag == DW_TAG_common_block)
21613 attr2 = NULL;
21614
21615 if (SYMBOL_CLASS (sym) == LOC_STATIC
21616 && SYMBOL_VALUE_ADDRESS (sym) == 0
21617 && !dwarf2_per_objfile->has_section_at_zero)
21618 {
21619 /* When a static variable is eliminated by the linker,
21620 the corresponding debug information is not stripped
21621 out, but the variable address is set to null;
21622 do not add such variables into symbol table. */
21623 }
21624 else if (attr2 && (DW_UNSND (attr2) != 0))
21625 {
21626 /* Workaround gfortran PR debug/40040 - it uses
21627 DW_AT_location for variables in -fPIC libraries which may
21628 get overriden by other libraries/executable and get
21629 a different address. Resolve it by the minimal symbol
21630 which may come from inferior's executable using copy
21631 relocation. Make this workaround only for gfortran as for
21632 other compilers GDB cannot guess the minimal symbol
21633 Fortran mangling kind. */
21634 if (cu->language == language_fortran && die->parent
21635 && die->parent->tag == DW_TAG_module
21636 && cu->producer
21637 && startswith (cu->producer, "GNU Fortran"))
21638 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21639
21640 /* A variable with DW_AT_external is never static,
21641 but it may be block-scoped. */
21642 list_to_add
21643 = ((cu->list_in_scope
21644 == cu->get_builder ()->get_file_symbols ())
21645 ? cu->get_builder ()->get_global_symbols ()
21646 : cu->list_in_scope);
21647 }
21648 else
21649 list_to_add = cu->list_in_scope;
21650 }
21651 else
21652 {
21653 /* We do not know the address of this symbol.
21654 If it is an external symbol and we have type information
21655 for it, enter the symbol as a LOC_UNRESOLVED symbol.
21656 The address of the variable will then be determined from
21657 the minimal symbol table whenever the variable is
21658 referenced. */
21659 attr2 = dwarf2_attr (die, DW_AT_external, cu);
21660
21661 /* Fortran explicitly imports any global symbols to the local
21662 scope by DW_TAG_common_block. */
21663 if (cu->language == language_fortran && die->parent
21664 && die->parent->tag == DW_TAG_common_block)
21665 {
21666 /* SYMBOL_CLASS doesn't matter here because
21667 read_common_block is going to reset it. */
21668 if (!suppress_add)
21669 list_to_add = cu->list_in_scope;
21670 }
21671 else if (attr2 && (DW_UNSND (attr2) != 0)
21672 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21673 {
21674 /* A variable with DW_AT_external is never static, but it
21675 may be block-scoped. */
21676 list_to_add
21677 = ((cu->list_in_scope
21678 == cu->get_builder ()->get_file_symbols ())
21679 ? cu->get_builder ()->get_global_symbols ()
21680 : cu->list_in_scope);
21681
21682 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21683 }
21684 else if (!die_is_declaration (die, cu))
21685 {
21686 /* Use the default LOC_OPTIMIZED_OUT class. */
21687 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21688 if (!suppress_add)
21689 list_to_add = cu->list_in_scope;
21690 }
21691 }
21692 break;
21693 case DW_TAG_formal_parameter:
21694 {
21695 /* If we are inside a function, mark this as an argument. If
21696 not, we might be looking at an argument to an inlined function
21697 when we do not have enough information to show inlined frames;
21698 pretend it's a local variable in that case so that the user can
21699 still see it. */
21700 struct context_stack *curr
21701 = cu->get_builder ()->get_current_context_stack ();
21702 if (curr != nullptr && curr->name != nullptr)
21703 SYMBOL_IS_ARGUMENT (sym) = 1;
21704 attr = dwarf2_attr (die, DW_AT_location, cu);
21705 if (attr)
21706 {
21707 var_decode_location (attr, sym, cu);
21708 }
21709 attr = dwarf2_attr (die, DW_AT_const_value, cu);
21710 if (attr)
21711 {
21712 dwarf2_const_value (attr, sym, cu);
21713 }
21714
21715 list_to_add = cu->list_in_scope;
21716 }
21717 break;
21718 case DW_TAG_unspecified_parameters:
21719 /* From varargs functions; gdb doesn't seem to have any
21720 interest in this information, so just ignore it for now.
21721 (FIXME?) */
21722 break;
21723 case DW_TAG_template_type_param:
21724 suppress_add = 1;
21725 /* Fall through. */
21726 case DW_TAG_class_type:
21727 case DW_TAG_interface_type:
21728 case DW_TAG_structure_type:
21729 case DW_TAG_union_type:
21730 case DW_TAG_set_type:
21731 case DW_TAG_enumeration_type:
21732 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21733 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21734
21735 {
21736 /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21737 really ever be static objects: otherwise, if you try
21738 to, say, break of a class's method and you're in a file
21739 which doesn't mention that class, it won't work unless
21740 the check for all static symbols in lookup_symbol_aux
21741 saves you. See the OtherFileClass tests in
21742 gdb.c++/namespace.exp. */
21743
21744 if (!suppress_add)
21745 {
21746 buildsym_compunit *builder = cu->get_builder ();
21747 list_to_add
21748 = (cu->list_in_scope == builder->get_file_symbols ()
21749 && cu->language == language_cplus
21750 ? builder->get_global_symbols ()
21751 : cu->list_in_scope);
21752
21753 /* The semantics of C++ state that "struct foo {
21754 ... }" also defines a typedef for "foo". */
21755 if (cu->language == language_cplus
21756 || cu->language == language_ada
21757 || cu->language == language_d
21758 || cu->language == language_rust)
21759 {
21760 /* The symbol's name is already allocated along
21761 with this objfile, so we don't need to
21762 duplicate it for the type. */
21763 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21764 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21765 }
21766 }
21767 }
21768 break;
21769 case DW_TAG_typedef:
21770 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21771 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21772 list_to_add = cu->list_in_scope;
21773 break;
21774 case DW_TAG_base_type:
21775 case DW_TAG_subrange_type:
21776 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21777 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21778 list_to_add = cu->list_in_scope;
21779 break;
21780 case DW_TAG_enumerator:
21781 attr = dwarf2_attr (die, DW_AT_const_value, cu);
21782 if (attr)
21783 {
21784 dwarf2_const_value (attr, sym, cu);
21785 }
21786 {
21787 /* NOTE: carlton/2003-11-10: See comment above in the
21788 DW_TAG_class_type, etc. block. */
21789
21790 list_to_add
21791 = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
21792 && cu->language == language_cplus
21793 ? cu->get_builder ()->get_global_symbols ()
21794 : cu->list_in_scope);
21795 }
21796 break;
21797 case DW_TAG_imported_declaration:
21798 case DW_TAG_namespace:
21799 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21800 list_to_add = cu->get_builder ()->get_global_symbols ();
21801 break;
21802 case DW_TAG_module:
21803 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21804 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21805 list_to_add = cu->get_builder ()->get_global_symbols ();
21806 break;
21807 case DW_TAG_common_block:
21808 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21809 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21810 add_symbol_to_list (sym, cu->list_in_scope);
21811 break;
21812 default:
21813 /* Not a tag we recognize. Hopefully we aren't processing
21814 trash data, but since we must specifically ignore things
21815 we don't recognize, there is nothing else we should do at
21816 this point. */
21817 complaint (_("unsupported tag: '%s'"),
21818 dwarf_tag_name (die->tag));
21819 break;
21820 }
21821
21822 if (suppress_add)
21823 {
21824 sym->hash_next = objfile->template_symbols;
21825 objfile->template_symbols = sym;
21826 list_to_add = NULL;
21827 }
21828
21829 if (list_to_add != NULL)
21830 add_symbol_to_list (sym, list_to_add);
21831
21832 /* For the benefit of old versions of GCC, check for anonymous
21833 namespaces based on the demangled name. */
21834 if (!cu->processing_has_namespace_info
21835 && cu->language == language_cplus)
21836 cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
21837 }
21838 return (sym);
21839 }
21840
21841 /* Given an attr with a DW_FORM_dataN value in host byte order,
21842 zero-extend it as appropriate for the symbol's type. The DWARF
21843 standard (v4) is not entirely clear about the meaning of using
21844 DW_FORM_dataN for a constant with a signed type, where the type is
21845 wider than the data. The conclusion of a discussion on the DWARF
21846 list was that this is unspecified. We choose to always zero-extend
21847 because that is the interpretation long in use by GCC. */
21848
21849 static gdb_byte *
21850 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21851 struct dwarf2_cu *cu, LONGEST *value, int bits)
21852 {
21853 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21854 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21855 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21856 LONGEST l = DW_UNSND (attr);
21857
21858 if (bits < sizeof (*value) * 8)
21859 {
21860 l &= ((LONGEST) 1 << bits) - 1;
21861 *value = l;
21862 }
21863 else if (bits == sizeof (*value) * 8)
21864 *value = l;
21865 else
21866 {
21867 gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21868 store_unsigned_integer (bytes, bits / 8, byte_order, l);
21869 return bytes;
21870 }
21871
21872 return NULL;
21873 }
21874
21875 /* Read a constant value from an attribute. Either set *VALUE, or if
21876 the value does not fit in *VALUE, set *BYTES - either already
21877 allocated on the objfile obstack, or newly allocated on OBSTACK,
21878 or, set *BATON, if we translated the constant to a location
21879 expression. */
21880
21881 static void
21882 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21883 const char *name, struct obstack *obstack,
21884 struct dwarf2_cu *cu,
21885 LONGEST *value, const gdb_byte **bytes,
21886 struct dwarf2_locexpr_baton **baton)
21887 {
21888 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21889 struct comp_unit_head *cu_header = &cu->header;
21890 struct dwarf_block *blk;
21891 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21892 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21893
21894 *value = 0;
21895 *bytes = NULL;
21896 *baton = NULL;
21897
21898 switch (attr->form)
21899 {
21900 case DW_FORM_addr:
21901 case DW_FORM_addrx:
21902 case DW_FORM_GNU_addr_index:
21903 {
21904 gdb_byte *data;
21905
21906 if (TYPE_LENGTH (type) != cu_header->addr_size)
21907 dwarf2_const_value_length_mismatch_complaint (name,
21908 cu_header->addr_size,
21909 TYPE_LENGTH (type));
21910 /* Symbols of this form are reasonably rare, so we just
21911 piggyback on the existing location code rather than writing
21912 a new implementation of symbol_computed_ops. */
21913 *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21914 (*baton)->per_cu = cu->per_cu;
21915 gdb_assert ((*baton)->per_cu);
21916
21917 (*baton)->size = 2 + cu_header->addr_size;
21918 data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21919 (*baton)->data = data;
21920
21921 data[0] = DW_OP_addr;
21922 store_unsigned_integer (&data[1], cu_header->addr_size,
21923 byte_order, DW_ADDR (attr));
21924 data[cu_header->addr_size + 1] = DW_OP_stack_value;
21925 }
21926 break;
21927 case DW_FORM_string:
21928 case DW_FORM_strp:
21929 case DW_FORM_strx:
21930 case DW_FORM_GNU_str_index:
21931 case DW_FORM_GNU_strp_alt:
21932 /* DW_STRING is already allocated on the objfile obstack, point
21933 directly to it. */
21934 *bytes = (const gdb_byte *) DW_STRING (attr);
21935 break;
21936 case DW_FORM_block1:
21937 case DW_FORM_block2:
21938 case DW_FORM_block4:
21939 case DW_FORM_block:
21940 case DW_FORM_exprloc:
21941 case DW_FORM_data16:
21942 blk = DW_BLOCK (attr);
21943 if (TYPE_LENGTH (type) != blk->size)
21944 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21945 TYPE_LENGTH (type));
21946 *bytes = blk->data;
21947 break;
21948
21949 /* The DW_AT_const_value attributes are supposed to carry the
21950 symbol's value "represented as it would be on the target
21951 architecture." By the time we get here, it's already been
21952 converted to host endianness, so we just need to sign- or
21953 zero-extend it as appropriate. */
21954 case DW_FORM_data1:
21955 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21956 break;
21957 case DW_FORM_data2:
21958 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21959 break;
21960 case DW_FORM_data4:
21961 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21962 break;
21963 case DW_FORM_data8:
21964 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21965 break;
21966
21967 case DW_FORM_sdata:
21968 case DW_FORM_implicit_const:
21969 *value = DW_SND (attr);
21970 break;
21971
21972 case DW_FORM_udata:
21973 *value = DW_UNSND (attr);
21974 break;
21975
21976 default:
21977 complaint (_("unsupported const value attribute form: '%s'"),
21978 dwarf_form_name (attr->form));
21979 *value = 0;
21980 break;
21981 }
21982 }
21983
21984
21985 /* Copy constant value from an attribute to a symbol. */
21986
21987 static void
21988 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21989 struct dwarf2_cu *cu)
21990 {
21991 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21992 LONGEST value;
21993 const gdb_byte *bytes;
21994 struct dwarf2_locexpr_baton *baton;
21995
21996 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21997 SYMBOL_PRINT_NAME (sym),
21998 &objfile->objfile_obstack, cu,
21999 &value, &bytes, &baton);
22000
22001 if (baton != NULL)
22002 {
22003 SYMBOL_LOCATION_BATON (sym) = baton;
22004 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
22005 }
22006 else if (bytes != NULL)
22007 {
22008 SYMBOL_VALUE_BYTES (sym) = bytes;
22009 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
22010 }
22011 else
22012 {
22013 SYMBOL_VALUE (sym) = value;
22014 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
22015 }
22016 }
22017
22018 /* Return the type of the die in question using its DW_AT_type attribute. */
22019
22020 static struct type *
22021 die_type (struct die_info *die, struct dwarf2_cu *cu)
22022 {
22023 struct attribute *type_attr;
22024
22025 type_attr = dwarf2_attr (die, DW_AT_type, cu);
22026 if (!type_attr)
22027 {
22028 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22029 /* A missing DW_AT_type represents a void type. */
22030 return objfile_type (objfile)->builtin_void;
22031 }
22032
22033 return lookup_die_type (die, type_attr, cu);
22034 }
22035
22036 /* True iff CU's producer generates GNAT Ada auxiliary information
22037 that allows to find parallel types through that information instead
22038 of having to do expensive parallel lookups by type name. */
22039
22040 static int
22041 need_gnat_info (struct dwarf2_cu *cu)
22042 {
22043 /* Assume that the Ada compiler was GNAT, which always produces
22044 the auxiliary information. */
22045 return (cu->language == language_ada);
22046 }
22047
22048 /* Return the auxiliary type of the die in question using its
22049 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
22050 attribute is not present. */
22051
22052 static struct type *
22053 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22054 {
22055 struct attribute *type_attr;
22056
22057 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22058 if (!type_attr)
22059 return NULL;
22060
22061 return lookup_die_type (die, type_attr, cu);
22062 }
22063
22064 /* If DIE has a descriptive_type attribute, then set the TYPE's
22065 descriptive type accordingly. */
22066
22067 static void
22068 set_descriptive_type (struct type *type, struct die_info *die,
22069 struct dwarf2_cu *cu)
22070 {
22071 struct type *descriptive_type = die_descriptive_type (die, cu);
22072
22073 if (descriptive_type)
22074 {
22075 ALLOCATE_GNAT_AUX_TYPE (type);
22076 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22077 }
22078 }
22079
22080 /* Return the containing type of the die in question using its
22081 DW_AT_containing_type attribute. */
22082
22083 static struct type *
22084 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22085 {
22086 struct attribute *type_attr;
22087 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22088
22089 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22090 if (!type_attr)
22091 error (_("Dwarf Error: Problem turning containing type into gdb type "
22092 "[in module %s]"), objfile_name (objfile));
22093
22094 return lookup_die_type (die, type_attr, cu);
22095 }
22096
22097 /* Return an error marker type to use for the ill formed type in DIE/CU. */
22098
22099 static struct type *
22100 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22101 {
22102 struct dwarf2_per_objfile *dwarf2_per_objfile
22103 = cu->per_cu->dwarf2_per_objfile;
22104 struct objfile *objfile = dwarf2_per_objfile->objfile;
22105 char *saved;
22106
22107 std::string message
22108 = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22109 objfile_name (objfile),
22110 sect_offset_str (cu->header.sect_off),
22111 sect_offset_str (die->sect_off));
22112 saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
22113 message.c_str (), message.length ());
22114
22115 return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22116 }
22117
22118 /* Look up the type of DIE in CU using its type attribute ATTR.
22119 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22120 DW_AT_containing_type.
22121 If there is no type substitute an error marker. */
22122
22123 static struct type *
22124 lookup_die_type (struct die_info *die, const struct attribute *attr,
22125 struct dwarf2_cu *cu)
22126 {
22127 struct dwarf2_per_objfile *dwarf2_per_objfile
22128 = cu->per_cu->dwarf2_per_objfile;
22129 struct objfile *objfile = dwarf2_per_objfile->objfile;
22130 struct type *this_type;
22131
22132 gdb_assert (attr->name == DW_AT_type
22133 || attr->name == DW_AT_GNAT_descriptive_type
22134 || attr->name == DW_AT_containing_type);
22135
22136 /* First see if we have it cached. */
22137
22138 if (attr->form == DW_FORM_GNU_ref_alt)
22139 {
22140 struct dwarf2_per_cu_data *per_cu;
22141 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22142
22143 per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22144 dwarf2_per_objfile);
22145 this_type = get_die_type_at_offset (sect_off, per_cu);
22146 }
22147 else if (attr_form_is_ref (attr))
22148 {
22149 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22150
22151 this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22152 }
22153 else if (attr->form == DW_FORM_ref_sig8)
22154 {
22155 ULONGEST signature = DW_SIGNATURE (attr);
22156
22157 return get_signatured_type (die, signature, cu);
22158 }
22159 else
22160 {
22161 complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22162 " at %s [in module %s]"),
22163 dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22164 objfile_name (objfile));
22165 return build_error_marker_type (cu, die);
22166 }
22167
22168 /* If not cached we need to read it in. */
22169
22170 if (this_type == NULL)
22171 {
22172 struct die_info *type_die = NULL;
22173 struct dwarf2_cu *type_cu = cu;
22174
22175 if (attr_form_is_ref (attr))
22176 type_die = follow_die_ref (die, attr, &type_cu);
22177 if (type_die == NULL)
22178 return build_error_marker_type (cu, die);
22179 /* If we find the type now, it's probably because the type came
22180 from an inter-CU reference and the type's CU got expanded before
22181 ours. */
22182 this_type = read_type_die (type_die, type_cu);
22183 }
22184
22185 /* If we still don't have a type use an error marker. */
22186
22187 if (this_type == NULL)
22188 return build_error_marker_type (cu, die);
22189
22190 return this_type;
22191 }
22192
22193 /* Return the type in DIE, CU.
22194 Returns NULL for invalid types.
22195
22196 This first does a lookup in die_type_hash,
22197 and only reads the die in if necessary.
22198
22199 NOTE: This can be called when reading in partial or full symbols. */
22200
22201 static struct type *
22202 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22203 {
22204 struct type *this_type;
22205
22206 this_type = get_die_type (die, cu);
22207 if (this_type)
22208 return this_type;
22209
22210 return read_type_die_1 (die, cu);
22211 }
22212
22213 /* Read the type in DIE, CU.
22214 Returns NULL for invalid types. */
22215
22216 static struct type *
22217 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22218 {
22219 struct type *this_type = NULL;
22220
22221 switch (die->tag)
22222 {
22223 case DW_TAG_class_type:
22224 case DW_TAG_interface_type:
22225 case DW_TAG_structure_type:
22226 case DW_TAG_union_type:
22227 this_type = read_structure_type (die, cu);
22228 break;
22229 case DW_TAG_enumeration_type:
22230 this_type = read_enumeration_type (die, cu);
22231 break;
22232 case DW_TAG_subprogram:
22233 case DW_TAG_subroutine_type:
22234 case DW_TAG_inlined_subroutine:
22235 this_type = read_subroutine_type (die, cu);
22236 break;
22237 case DW_TAG_array_type:
22238 this_type = read_array_type (die, cu);
22239 break;
22240 case DW_TAG_set_type:
22241 this_type = read_set_type (die, cu);
22242 break;
22243 case DW_TAG_pointer_type:
22244 this_type = read_tag_pointer_type (die, cu);
22245 break;
22246 case DW_TAG_ptr_to_member_type:
22247 this_type = read_tag_ptr_to_member_type (die, cu);
22248 break;
22249 case DW_TAG_reference_type:
22250 this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22251 break;
22252 case DW_TAG_rvalue_reference_type:
22253 this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22254 break;
22255 case DW_TAG_const_type:
22256 this_type = read_tag_const_type (die, cu);
22257 break;
22258 case DW_TAG_volatile_type:
22259 this_type = read_tag_volatile_type (die, cu);
22260 break;
22261 case DW_TAG_restrict_type:
22262 this_type = read_tag_restrict_type (die, cu);
22263 break;
22264 case DW_TAG_string_type:
22265 this_type = read_tag_string_type (die, cu);
22266 break;
22267 case DW_TAG_typedef:
22268 this_type = read_typedef (die, cu);
22269 break;
22270 case DW_TAG_subrange_type:
22271 this_type = read_subrange_type (die, cu);
22272 break;
22273 case DW_TAG_base_type:
22274 this_type = read_base_type (die, cu);
22275 break;
22276 case DW_TAG_unspecified_type:
22277 this_type = read_unspecified_type (die, cu);
22278 break;
22279 case DW_TAG_namespace:
22280 this_type = read_namespace_type (die, cu);
22281 break;
22282 case DW_TAG_module:
22283 this_type = read_module_type (die, cu);
22284 break;
22285 case DW_TAG_atomic_type:
22286 this_type = read_tag_atomic_type (die, cu);
22287 break;
22288 default:
22289 complaint (_("unexpected tag in read_type_die: '%s'"),
22290 dwarf_tag_name (die->tag));
22291 break;
22292 }
22293
22294 return this_type;
22295 }
22296
22297 /* See if we can figure out if the class lives in a namespace. We do
22298 this by looking for a member function; its demangled name will
22299 contain namespace info, if there is any.
22300 Return the computed name or NULL.
22301 Space for the result is allocated on the objfile's obstack.
22302 This is the full-die version of guess_partial_die_structure_name.
22303 In this case we know DIE has no useful parent. */
22304
22305 static char *
22306 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22307 {
22308 struct die_info *spec_die;
22309 struct dwarf2_cu *spec_cu;
22310 struct die_info *child;
22311 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22312
22313 spec_cu = cu;
22314 spec_die = die_specification (die, &spec_cu);
22315 if (spec_die != NULL)
22316 {
22317 die = spec_die;
22318 cu = spec_cu;
22319 }
22320
22321 for (child = die->child;
22322 child != NULL;
22323 child = child->sibling)
22324 {
22325 if (child->tag == DW_TAG_subprogram)
22326 {
22327 const char *linkage_name = dw2_linkage_name (child, cu);
22328
22329 if (linkage_name != NULL)
22330 {
22331 char *actual_name
22332 = language_class_name_from_physname (cu->language_defn,
22333 linkage_name);
22334 char *name = NULL;
22335
22336 if (actual_name != NULL)
22337 {
22338 const char *die_name = dwarf2_name (die, cu);
22339
22340 if (die_name != NULL
22341 && strcmp (die_name, actual_name) != 0)
22342 {
22343 /* Strip off the class name from the full name.
22344 We want the prefix. */
22345 int die_name_len = strlen (die_name);
22346 int actual_name_len = strlen (actual_name);
22347
22348 /* Test for '::' as a sanity check. */
22349 if (actual_name_len > die_name_len + 2
22350 && actual_name[actual_name_len
22351 - die_name_len - 1] == ':')
22352 name = (char *) obstack_copy0 (
22353 &objfile->per_bfd->storage_obstack,
22354 actual_name, actual_name_len - die_name_len - 2);
22355 }
22356 }
22357 xfree (actual_name);
22358 return name;
22359 }
22360 }
22361 }
22362
22363 return NULL;
22364 }
22365
22366 /* GCC might emit a nameless typedef that has a linkage name. Determine the
22367 prefix part in such case. See
22368 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
22369
22370 static const char *
22371 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22372 {
22373 struct attribute *attr;
22374 const char *base;
22375
22376 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22377 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22378 return NULL;
22379
22380 if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22381 return NULL;
22382
22383 attr = dw2_linkage_name_attr (die, cu);
22384 if (attr == NULL || DW_STRING (attr) == NULL)
22385 return NULL;
22386
22387 /* dwarf2_name had to be already called. */
22388 gdb_assert (DW_STRING_IS_CANONICAL (attr));
22389
22390 /* Strip the base name, keep any leading namespaces/classes. */
22391 base = strrchr (DW_STRING (attr), ':');
22392 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22393 return "";
22394
22395 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22396 return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22397 DW_STRING (attr),
22398 &base[-1] - DW_STRING (attr));
22399 }
22400
22401 /* Return the name of the namespace/class that DIE is defined within,
22402 or "" if we can't tell. The caller should not xfree the result.
22403
22404 For example, if we're within the method foo() in the following
22405 code:
22406
22407 namespace N {
22408 class C {
22409 void foo () {
22410 }
22411 };
22412 }
22413
22414 then determine_prefix on foo's die will return "N::C". */
22415
22416 static const char *
22417 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22418 {
22419 struct dwarf2_per_objfile *dwarf2_per_objfile
22420 = cu->per_cu->dwarf2_per_objfile;
22421 struct die_info *parent, *spec_die;
22422 struct dwarf2_cu *spec_cu;
22423 struct type *parent_type;
22424 const char *retval;
22425
22426 if (cu->language != language_cplus
22427 && cu->language != language_fortran && cu->language != language_d
22428 && cu->language != language_rust)
22429 return "";
22430
22431 retval = anonymous_struct_prefix (die, cu);
22432 if (retval)
22433 return retval;
22434
22435 /* We have to be careful in the presence of DW_AT_specification.
22436 For example, with GCC 3.4, given the code
22437
22438 namespace N {
22439 void foo() {
22440 // Definition of N::foo.
22441 }
22442 }
22443
22444 then we'll have a tree of DIEs like this:
22445
22446 1: DW_TAG_compile_unit
22447 2: DW_TAG_namespace // N
22448 3: DW_TAG_subprogram // declaration of N::foo
22449 4: DW_TAG_subprogram // definition of N::foo
22450 DW_AT_specification // refers to die #3
22451
22452 Thus, when processing die #4, we have to pretend that we're in
22453 the context of its DW_AT_specification, namely the contex of die
22454 #3. */
22455 spec_cu = cu;
22456 spec_die = die_specification (die, &spec_cu);
22457 if (spec_die == NULL)
22458 parent = die->parent;
22459 else
22460 {
22461 parent = spec_die->parent;
22462 cu = spec_cu;
22463 }
22464
22465 if (parent == NULL)
22466 return "";
22467 else if (parent->building_fullname)
22468 {
22469 const char *name;
22470 const char *parent_name;
22471
22472 /* It has been seen on RealView 2.2 built binaries,
22473 DW_TAG_template_type_param types actually _defined_ as
22474 children of the parent class:
22475
22476 enum E {};
22477 template class <class Enum> Class{};
22478 Class<enum E> class_e;
22479
22480 1: DW_TAG_class_type (Class)
22481 2: DW_TAG_enumeration_type (E)
22482 3: DW_TAG_enumerator (enum1:0)
22483 3: DW_TAG_enumerator (enum2:1)
22484 ...
22485 2: DW_TAG_template_type_param
22486 DW_AT_type DW_FORM_ref_udata (E)
22487
22488 Besides being broken debug info, it can put GDB into an
22489 infinite loop. Consider:
22490
22491 When we're building the full name for Class<E>, we'll start
22492 at Class, and go look over its template type parameters,
22493 finding E. We'll then try to build the full name of E, and
22494 reach here. We're now trying to build the full name of E,
22495 and look over the parent DIE for containing scope. In the
22496 broken case, if we followed the parent DIE of E, we'd again
22497 find Class, and once again go look at its template type
22498 arguments, etc., etc. Simply don't consider such parent die
22499 as source-level parent of this die (it can't be, the language
22500 doesn't allow it), and break the loop here. */
22501 name = dwarf2_name (die, cu);
22502 parent_name = dwarf2_name (parent, cu);
22503 complaint (_("template param type '%s' defined within parent '%s'"),
22504 name ? name : "<unknown>",
22505 parent_name ? parent_name : "<unknown>");
22506 return "";
22507 }
22508 else
22509 switch (parent->tag)
22510 {
22511 case DW_TAG_namespace:
22512 parent_type = read_type_die (parent, cu);
22513 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22514 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22515 Work around this problem here. */
22516 if (cu->language == language_cplus
22517 && strcmp (TYPE_NAME (parent_type), "::") == 0)
22518 return "";
22519 /* We give a name to even anonymous namespaces. */
22520 return TYPE_NAME (parent_type);
22521 case DW_TAG_class_type:
22522 case DW_TAG_interface_type:
22523 case DW_TAG_structure_type:
22524 case DW_TAG_union_type:
22525 case DW_TAG_module:
22526 parent_type = read_type_die (parent, cu);
22527 if (TYPE_NAME (parent_type) != NULL)
22528 return TYPE_NAME (parent_type);
22529 else
22530 /* An anonymous structure is only allowed non-static data
22531 members; no typedefs, no member functions, et cetera.
22532 So it does not need a prefix. */
22533 return "";
22534 case DW_TAG_compile_unit:
22535 case DW_TAG_partial_unit:
22536 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
22537 if (cu->language == language_cplus
22538 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22539 && die->child != NULL
22540 && (die->tag == DW_TAG_class_type
22541 || die->tag == DW_TAG_structure_type
22542 || die->tag == DW_TAG_union_type))
22543 {
22544 char *name = guess_full_die_structure_name (die, cu);
22545 if (name != NULL)
22546 return name;
22547 }
22548 return "";
22549 case DW_TAG_enumeration_type:
22550 parent_type = read_type_die (parent, cu);
22551 if (TYPE_DECLARED_CLASS (parent_type))
22552 {
22553 if (TYPE_NAME (parent_type) != NULL)
22554 return TYPE_NAME (parent_type);
22555 return "";
22556 }
22557 /* Fall through. */
22558 default:
22559 return determine_prefix (parent, cu);
22560 }
22561 }
22562
22563 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22564 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
22565 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
22566 an obconcat, otherwise allocate storage for the result. The CU argument is
22567 used to determine the language and hence, the appropriate separator. */
22568
22569 #define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
22570
22571 static char *
22572 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22573 int physname, struct dwarf2_cu *cu)
22574 {
22575 const char *lead = "";
22576 const char *sep;
22577
22578 if (suffix == NULL || suffix[0] == '\0'
22579 || prefix == NULL || prefix[0] == '\0')
22580 sep = "";
22581 else if (cu->language == language_d)
22582 {
22583 /* For D, the 'main' function could be defined in any module, but it
22584 should never be prefixed. */
22585 if (strcmp (suffix, "D main") == 0)
22586 {
22587 prefix = "";
22588 sep = "";
22589 }
22590 else
22591 sep = ".";
22592 }
22593 else if (cu->language == language_fortran && physname)
22594 {
22595 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
22596 DW_AT_MIPS_linkage_name is preferred and used instead. */
22597
22598 lead = "__";
22599 sep = "_MOD_";
22600 }
22601 else
22602 sep = "::";
22603
22604 if (prefix == NULL)
22605 prefix = "";
22606 if (suffix == NULL)
22607 suffix = "";
22608
22609 if (obs == NULL)
22610 {
22611 char *retval
22612 = ((char *)
22613 xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22614
22615 strcpy (retval, lead);
22616 strcat (retval, prefix);
22617 strcat (retval, sep);
22618 strcat (retval, suffix);
22619 return retval;
22620 }
22621 else
22622 {
22623 /* We have an obstack. */
22624 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22625 }
22626 }
22627
22628 /* Return sibling of die, NULL if no sibling. */
22629
22630 static struct die_info *
22631 sibling_die (struct die_info *die)
22632 {
22633 return die->sibling;
22634 }
22635
22636 /* Get name of a die, return NULL if not found. */
22637
22638 static const char *
22639 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22640 struct obstack *obstack)
22641 {
22642 if (name && cu->language == language_cplus)
22643 {
22644 std::string canon_name = cp_canonicalize_string (name);
22645
22646 if (!canon_name.empty ())
22647 {
22648 if (canon_name != name)
22649 name = (const char *) obstack_copy0 (obstack,
22650 canon_name.c_str (),
22651 canon_name.length ());
22652 }
22653 }
22654
22655 return name;
22656 }
22657
22658 /* Get name of a die, return NULL if not found.
22659 Anonymous namespaces are converted to their magic string. */
22660
22661 static const char *
22662 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22663 {
22664 struct attribute *attr;
22665 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22666
22667 attr = dwarf2_attr (die, DW_AT_name, cu);
22668 if ((!attr || !DW_STRING (attr))
22669 && die->tag != DW_TAG_namespace
22670 && die->tag != DW_TAG_class_type
22671 && die->tag != DW_TAG_interface_type
22672 && die->tag != DW_TAG_structure_type
22673 && die->tag != DW_TAG_union_type)
22674 return NULL;
22675
22676 switch (die->tag)
22677 {
22678 case DW_TAG_compile_unit:
22679 case DW_TAG_partial_unit:
22680 /* Compilation units have a DW_AT_name that is a filename, not
22681 a source language identifier. */
22682 case DW_TAG_enumeration_type:
22683 case DW_TAG_enumerator:
22684 /* These tags always have simple identifiers already; no need
22685 to canonicalize them. */
22686 return DW_STRING (attr);
22687
22688 case DW_TAG_namespace:
22689 if (attr != NULL && DW_STRING (attr) != NULL)
22690 return DW_STRING (attr);
22691 return CP_ANONYMOUS_NAMESPACE_STR;
22692
22693 case DW_TAG_class_type:
22694 case DW_TAG_interface_type:
22695 case DW_TAG_structure_type:
22696 case DW_TAG_union_type:
22697 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22698 structures or unions. These were of the form "._%d" in GCC 4.1,
22699 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22700 and GCC 4.4. We work around this problem by ignoring these. */
22701 if (attr && DW_STRING (attr)
22702 && (startswith (DW_STRING (attr), "._")
22703 || startswith (DW_STRING (attr), "<anonymous")))
22704 return NULL;
22705
22706 /* GCC might emit a nameless typedef that has a linkage name. See
22707 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
22708 if (!attr || DW_STRING (attr) == NULL)
22709 {
22710 char *demangled = NULL;
22711
22712 attr = dw2_linkage_name_attr (die, cu);
22713 if (attr == NULL || DW_STRING (attr) == NULL)
22714 return NULL;
22715
22716 /* Avoid demangling DW_STRING (attr) the second time on a second
22717 call for the same DIE. */
22718 if (!DW_STRING_IS_CANONICAL (attr))
22719 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22720
22721 if (demangled)
22722 {
22723 const char *base;
22724
22725 /* FIXME: we already did this for the partial symbol... */
22726 DW_STRING (attr)
22727 = ((const char *)
22728 obstack_copy0 (&objfile->per_bfd->storage_obstack,
22729 demangled, strlen (demangled)));
22730 DW_STRING_IS_CANONICAL (attr) = 1;
22731 xfree (demangled);
22732
22733 /* Strip any leading namespaces/classes, keep only the base name.
22734 DW_AT_name for named DIEs does not contain the prefixes. */
22735 base = strrchr (DW_STRING (attr), ':');
22736 if (base && base > DW_STRING (attr) && base[-1] == ':')
22737 return &base[1];
22738 else
22739 return DW_STRING (attr);
22740 }
22741 }
22742 break;
22743
22744 default:
22745 break;
22746 }
22747
22748 if (!DW_STRING_IS_CANONICAL (attr))
22749 {
22750 DW_STRING (attr)
22751 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22752 &objfile->per_bfd->storage_obstack);
22753 DW_STRING_IS_CANONICAL (attr) = 1;
22754 }
22755 return DW_STRING (attr);
22756 }
22757
22758 /* Return the die that this die in an extension of, or NULL if there
22759 is none. *EXT_CU is the CU containing DIE on input, and the CU
22760 containing the return value on output. */
22761
22762 static struct die_info *
22763 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22764 {
22765 struct attribute *attr;
22766
22767 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22768 if (attr == NULL)
22769 return NULL;
22770
22771 return follow_die_ref (die, attr, ext_cu);
22772 }
22773
22774 /* A convenience function that returns an "unknown" DWARF name,
22775 including the value of V. STR is the name of the entity being
22776 printed, e.g., "TAG". */
22777
22778 static const char *
22779 dwarf_unknown (const char *str, unsigned v)
22780 {
22781 char *cell = get_print_cell ();
22782 xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
22783 return cell;
22784 }
22785
22786 /* Convert a DIE tag into its string name. */
22787
22788 static const char *
22789 dwarf_tag_name (unsigned tag)
22790 {
22791 const char *name = get_DW_TAG_name (tag);
22792
22793 if (name == NULL)
22794 return dwarf_unknown ("TAG", tag);
22795
22796 return name;
22797 }
22798
22799 /* Convert a DWARF attribute code into its string name. */
22800
22801 static const char *
22802 dwarf_attr_name (unsigned attr)
22803 {
22804 const char *name;
22805
22806 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22807 if (attr == DW_AT_MIPS_fde)
22808 return "DW_AT_MIPS_fde";
22809 #else
22810 if (attr == DW_AT_HP_block_index)
22811 return "DW_AT_HP_block_index";
22812 #endif
22813
22814 name = get_DW_AT_name (attr);
22815
22816 if (name == NULL)
22817 return dwarf_unknown ("AT", attr);
22818
22819 return name;
22820 }
22821
22822 /* Convert a DWARF value form code into its string name. */
22823
22824 static const char *
22825 dwarf_form_name (unsigned form)
22826 {
22827 const char *name = get_DW_FORM_name (form);
22828
22829 if (name == NULL)
22830 return dwarf_unknown ("FORM", form);
22831
22832 return name;
22833 }
22834
22835 static const char *
22836 dwarf_bool_name (unsigned mybool)
22837 {
22838 if (mybool)
22839 return "TRUE";
22840 else
22841 return "FALSE";
22842 }
22843
22844 /* Convert a DWARF type code into its string name. */
22845
22846 static const char *
22847 dwarf_type_encoding_name (unsigned enc)
22848 {
22849 const char *name = get_DW_ATE_name (enc);
22850
22851 if (name == NULL)
22852 return dwarf_unknown ("ATE", enc);
22853
22854 return name;
22855 }
22856
22857 static void
22858 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22859 {
22860 unsigned int i;
22861
22862 print_spaces (indent, f);
22863 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22864 dwarf_tag_name (die->tag), die->abbrev,
22865 sect_offset_str (die->sect_off));
22866
22867 if (die->parent != NULL)
22868 {
22869 print_spaces (indent, f);
22870 fprintf_unfiltered (f, " parent at offset: %s\n",
22871 sect_offset_str (die->parent->sect_off));
22872 }
22873
22874 print_spaces (indent, f);
22875 fprintf_unfiltered (f, " has children: %s\n",
22876 dwarf_bool_name (die->child != NULL));
22877
22878 print_spaces (indent, f);
22879 fprintf_unfiltered (f, " attributes:\n");
22880
22881 for (i = 0; i < die->num_attrs; ++i)
22882 {
22883 print_spaces (indent, f);
22884 fprintf_unfiltered (f, " %s (%s) ",
22885 dwarf_attr_name (die->attrs[i].name),
22886 dwarf_form_name (die->attrs[i].form));
22887
22888 switch (die->attrs[i].form)
22889 {
22890 case DW_FORM_addr:
22891 case DW_FORM_addrx:
22892 case DW_FORM_GNU_addr_index:
22893 fprintf_unfiltered (f, "address: ");
22894 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22895 break;
22896 case DW_FORM_block2:
22897 case DW_FORM_block4:
22898 case DW_FORM_block:
22899 case DW_FORM_block1:
22900 fprintf_unfiltered (f, "block: size %s",
22901 pulongest (DW_BLOCK (&die->attrs[i])->size));
22902 break;
22903 case DW_FORM_exprloc:
22904 fprintf_unfiltered (f, "expression: size %s",
22905 pulongest (DW_BLOCK (&die->attrs[i])->size));
22906 break;
22907 case DW_FORM_data16:
22908 fprintf_unfiltered (f, "constant of 16 bytes");
22909 break;
22910 case DW_FORM_ref_addr:
22911 fprintf_unfiltered (f, "ref address: ");
22912 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22913 break;
22914 case DW_FORM_GNU_ref_alt:
22915 fprintf_unfiltered (f, "alt ref address: ");
22916 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22917 break;
22918 case DW_FORM_ref1:
22919 case DW_FORM_ref2:
22920 case DW_FORM_ref4:
22921 case DW_FORM_ref8:
22922 case DW_FORM_ref_udata:
22923 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22924 (long) (DW_UNSND (&die->attrs[i])));
22925 break;
22926 case DW_FORM_data1:
22927 case DW_FORM_data2:
22928 case DW_FORM_data4:
22929 case DW_FORM_data8:
22930 case DW_FORM_udata:
22931 case DW_FORM_sdata:
22932 fprintf_unfiltered (f, "constant: %s",
22933 pulongest (DW_UNSND (&die->attrs[i])));
22934 break;
22935 case DW_FORM_sec_offset:
22936 fprintf_unfiltered (f, "section offset: %s",
22937 pulongest (DW_UNSND (&die->attrs[i])));
22938 break;
22939 case DW_FORM_ref_sig8:
22940 fprintf_unfiltered (f, "signature: %s",
22941 hex_string (DW_SIGNATURE (&die->attrs[i])));
22942 break;
22943 case DW_FORM_string:
22944 case DW_FORM_strp:
22945 case DW_FORM_line_strp:
22946 case DW_FORM_strx:
22947 case DW_FORM_GNU_str_index:
22948 case DW_FORM_GNU_strp_alt:
22949 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22950 DW_STRING (&die->attrs[i])
22951 ? DW_STRING (&die->attrs[i]) : "",
22952 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22953 break;
22954 case DW_FORM_flag:
22955 if (DW_UNSND (&die->attrs[i]))
22956 fprintf_unfiltered (f, "flag: TRUE");
22957 else
22958 fprintf_unfiltered (f, "flag: FALSE");
22959 break;
22960 case DW_FORM_flag_present:
22961 fprintf_unfiltered (f, "flag: TRUE");
22962 break;
22963 case DW_FORM_indirect:
22964 /* The reader will have reduced the indirect form to
22965 the "base form" so this form should not occur. */
22966 fprintf_unfiltered (f,
22967 "unexpected attribute form: DW_FORM_indirect");
22968 break;
22969 case DW_FORM_implicit_const:
22970 fprintf_unfiltered (f, "constant: %s",
22971 plongest (DW_SND (&die->attrs[i])));
22972 break;
22973 default:
22974 fprintf_unfiltered (f, "unsupported attribute form: %d.",
22975 die->attrs[i].form);
22976 break;
22977 }
22978 fprintf_unfiltered (f, "\n");
22979 }
22980 }
22981
22982 static void
22983 dump_die_for_error (struct die_info *die)
22984 {
22985 dump_die_shallow (gdb_stderr, 0, die);
22986 }
22987
22988 static void
22989 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22990 {
22991 int indent = level * 4;
22992
22993 gdb_assert (die != NULL);
22994
22995 if (level >= max_level)
22996 return;
22997
22998 dump_die_shallow (f, indent, die);
22999
23000 if (die->child != NULL)
23001 {
23002 print_spaces (indent, f);
23003 fprintf_unfiltered (f, " Children:");
23004 if (level + 1 < max_level)
23005 {
23006 fprintf_unfiltered (f, "\n");
23007 dump_die_1 (f, level + 1, max_level, die->child);
23008 }
23009 else
23010 {
23011 fprintf_unfiltered (f,
23012 " [not printed, max nesting level reached]\n");
23013 }
23014 }
23015
23016 if (die->sibling != NULL && level > 0)
23017 {
23018 dump_die_1 (f, level, max_level, die->sibling);
23019 }
23020 }
23021
23022 /* This is called from the pdie macro in gdbinit.in.
23023 It's not static so gcc will keep a copy callable from gdb. */
23024
23025 void
23026 dump_die (struct die_info *die, int max_level)
23027 {
23028 dump_die_1 (gdb_stdlog, 0, max_level, die);
23029 }
23030
23031 static void
23032 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
23033 {
23034 void **slot;
23035
23036 slot = htab_find_slot_with_hash (cu->die_hash, die,
23037 to_underlying (die->sect_off),
23038 INSERT);
23039
23040 *slot = die;
23041 }
23042
23043 /* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
23044 required kind. */
23045
23046 static sect_offset
23047 dwarf2_get_ref_die_offset (const struct attribute *attr)
23048 {
23049 if (attr_form_is_ref (attr))
23050 return (sect_offset) DW_UNSND (attr);
23051
23052 complaint (_("unsupported die ref attribute form: '%s'"),
23053 dwarf_form_name (attr->form));
23054 return {};
23055 }
23056
23057 /* Return the constant value held by ATTR. Return DEFAULT_VALUE if
23058 * the value held by the attribute is not constant. */
23059
23060 static LONGEST
23061 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
23062 {
23063 if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
23064 return DW_SND (attr);
23065 else if (attr->form == DW_FORM_udata
23066 || attr->form == DW_FORM_data1
23067 || attr->form == DW_FORM_data2
23068 || attr->form == DW_FORM_data4
23069 || attr->form == DW_FORM_data8)
23070 return DW_UNSND (attr);
23071 else
23072 {
23073 /* For DW_FORM_data16 see attr_form_is_constant. */
23074 complaint (_("Attribute value is not a constant (%s)"),
23075 dwarf_form_name (attr->form));
23076 return default_value;
23077 }
23078 }
23079
23080 /* Follow reference or signature attribute ATTR of SRC_DIE.
23081 On entry *REF_CU is the CU of SRC_DIE.
23082 On exit *REF_CU is the CU of the result. */
23083
23084 static struct die_info *
23085 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23086 struct dwarf2_cu **ref_cu)
23087 {
23088 struct die_info *die;
23089
23090 if (attr_form_is_ref (attr))
23091 die = follow_die_ref (src_die, attr, ref_cu);
23092 else if (attr->form == DW_FORM_ref_sig8)
23093 die = follow_die_sig (src_die, attr, ref_cu);
23094 else
23095 {
23096 dump_die_for_error (src_die);
23097 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23098 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23099 }
23100
23101 return die;
23102 }
23103
23104 /* Follow reference OFFSET.
23105 On entry *REF_CU is the CU of the source die referencing OFFSET.
23106 On exit *REF_CU is the CU of the result.
23107 Returns NULL if OFFSET is invalid. */
23108
23109 static struct die_info *
23110 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23111 struct dwarf2_cu **ref_cu)
23112 {
23113 struct die_info temp_die;
23114 struct dwarf2_cu *target_cu, *cu = *ref_cu;
23115 struct dwarf2_per_objfile *dwarf2_per_objfile
23116 = cu->per_cu->dwarf2_per_objfile;
23117
23118 gdb_assert (cu->per_cu != NULL);
23119
23120 target_cu = cu;
23121
23122 if (cu->per_cu->is_debug_types)
23123 {
23124 /* .debug_types CUs cannot reference anything outside their CU.
23125 If they need to, they have to reference a signatured type via
23126 DW_FORM_ref_sig8. */
23127 if (!offset_in_cu_p (&cu->header, sect_off))
23128 return NULL;
23129 }
23130 else if (offset_in_dwz != cu->per_cu->is_dwz
23131 || !offset_in_cu_p (&cu->header, sect_off))
23132 {
23133 struct dwarf2_per_cu_data *per_cu;
23134
23135 per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23136 dwarf2_per_objfile);
23137
23138 /* If necessary, add it to the queue and load its DIEs. */
23139 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
23140 load_full_comp_unit (per_cu, false, cu->language);
23141
23142 target_cu = per_cu->cu;
23143 }
23144 else if (cu->dies == NULL)
23145 {
23146 /* We're loading full DIEs during partial symbol reading. */
23147 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
23148 load_full_comp_unit (cu->per_cu, false, language_minimal);
23149 }
23150
23151 *ref_cu = target_cu;
23152 temp_die.sect_off = sect_off;
23153
23154 if (target_cu != cu)
23155 target_cu->ancestor = cu;
23156
23157 return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23158 &temp_die,
23159 to_underlying (sect_off));
23160 }
23161
23162 /* Follow reference attribute ATTR of SRC_DIE.
23163 On entry *REF_CU is the CU of SRC_DIE.
23164 On exit *REF_CU is the CU of the result. */
23165
23166 static struct die_info *
23167 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23168 struct dwarf2_cu **ref_cu)
23169 {
23170 sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23171 struct dwarf2_cu *cu = *ref_cu;
23172 struct die_info *die;
23173
23174 die = follow_die_offset (sect_off,
23175 (attr->form == DW_FORM_GNU_ref_alt
23176 || cu->per_cu->is_dwz),
23177 ref_cu);
23178 if (!die)
23179 error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23180 "at %s [in module %s]"),
23181 sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23182 objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23183
23184 return die;
23185 }
23186
23187 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23188 Returned value is intended for DW_OP_call*. Returned
23189 dwarf2_locexpr_baton->data has lifetime of
23190 PER_CU->DWARF2_PER_OBJFILE->OBJFILE. */
23191
23192 struct dwarf2_locexpr_baton
23193 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23194 struct dwarf2_per_cu_data *per_cu,
23195 CORE_ADDR (*get_frame_pc) (void *baton),
23196 void *baton, bool resolve_abstract_p)
23197 {
23198 struct dwarf2_cu *cu;
23199 struct die_info *die;
23200 struct attribute *attr;
23201 struct dwarf2_locexpr_baton retval;
23202 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23203 struct objfile *objfile = dwarf2_per_objfile->objfile;
23204
23205 if (per_cu->cu == NULL)
23206 load_cu (per_cu, false);
23207 cu = per_cu->cu;
23208 if (cu == NULL)
23209 {
23210 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23211 Instead just throw an error, not much else we can do. */
23212 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23213 sect_offset_str (sect_off), objfile_name (objfile));
23214 }
23215
23216 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23217 if (!die)
23218 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23219 sect_offset_str (sect_off), objfile_name (objfile));
23220
23221 attr = dwarf2_attr (die, DW_AT_location, cu);
23222 if (!attr && resolve_abstract_p
23223 && (dwarf2_per_objfile->abstract_to_concrete.find (die->sect_off)
23224 != dwarf2_per_objfile->abstract_to_concrete.end ()))
23225 {
23226 CORE_ADDR pc = (*get_frame_pc) (baton);
23227
23228 for (const auto &cand_off
23229 : dwarf2_per_objfile->abstract_to_concrete[die->sect_off])
23230 {
23231 struct dwarf2_cu *cand_cu = cu;
23232 struct die_info *cand
23233 = follow_die_offset (cand_off, per_cu->is_dwz, &cand_cu);
23234 if (!cand
23235 || !cand->parent
23236 || cand->parent->tag != DW_TAG_subprogram)
23237 continue;
23238
23239 CORE_ADDR pc_low, pc_high;
23240 get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23241 if (pc_low == ((CORE_ADDR) -1)
23242 || !(pc_low <= pc && pc < pc_high))
23243 continue;
23244
23245 die = cand;
23246 attr = dwarf2_attr (die, DW_AT_location, cu);
23247 break;
23248 }
23249 }
23250
23251 if (!attr)
23252 {
23253 /* DWARF: "If there is no such attribute, then there is no effect.".
23254 DATA is ignored if SIZE is 0. */
23255
23256 retval.data = NULL;
23257 retval.size = 0;
23258 }
23259 else if (attr_form_is_section_offset (attr))
23260 {
23261 struct dwarf2_loclist_baton loclist_baton;
23262 CORE_ADDR pc = (*get_frame_pc) (baton);
23263 size_t size;
23264
23265 fill_in_loclist_baton (cu, &loclist_baton, attr);
23266
23267 retval.data = dwarf2_find_location_expression (&loclist_baton,
23268 &size, pc);
23269 retval.size = size;
23270 }
23271 else
23272 {
23273 if (!attr_form_is_block (attr))
23274 error (_("Dwarf Error: DIE at %s referenced in module %s "
23275 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23276 sect_offset_str (sect_off), objfile_name (objfile));
23277
23278 retval.data = DW_BLOCK (attr)->data;
23279 retval.size = DW_BLOCK (attr)->size;
23280 }
23281 retval.per_cu = cu->per_cu;
23282
23283 age_cached_comp_units (dwarf2_per_objfile);
23284
23285 return retval;
23286 }
23287
23288 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23289 offset. */
23290
23291 struct dwarf2_locexpr_baton
23292 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23293 struct dwarf2_per_cu_data *per_cu,
23294 CORE_ADDR (*get_frame_pc) (void *baton),
23295 void *baton)
23296 {
23297 sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23298
23299 return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23300 }
23301
23302 /* Write a constant of a given type as target-ordered bytes into
23303 OBSTACK. */
23304
23305 static const gdb_byte *
23306 write_constant_as_bytes (struct obstack *obstack,
23307 enum bfd_endian byte_order,
23308 struct type *type,
23309 ULONGEST value,
23310 LONGEST *len)
23311 {
23312 gdb_byte *result;
23313
23314 *len = TYPE_LENGTH (type);
23315 result = (gdb_byte *) obstack_alloc (obstack, *len);
23316 store_unsigned_integer (result, *len, byte_order, value);
23317
23318 return result;
23319 }
23320
23321 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23322 pointer to the constant bytes and set LEN to the length of the
23323 data. If memory is needed, allocate it on OBSTACK. If the DIE
23324 does not have a DW_AT_const_value, return NULL. */
23325
23326 const gdb_byte *
23327 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23328 struct dwarf2_per_cu_data *per_cu,
23329 struct obstack *obstack,
23330 LONGEST *len)
23331 {
23332 struct dwarf2_cu *cu;
23333 struct die_info *die;
23334 struct attribute *attr;
23335 const gdb_byte *result = NULL;
23336 struct type *type;
23337 LONGEST value;
23338 enum bfd_endian byte_order;
23339 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23340
23341 if (per_cu->cu == NULL)
23342 load_cu (per_cu, false);
23343 cu = per_cu->cu;
23344 if (cu == NULL)
23345 {
23346 /* We shouldn't get here for a dummy CU, but don't crash on the user.
23347 Instead just throw an error, not much else we can do. */
23348 error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23349 sect_offset_str (sect_off), objfile_name (objfile));
23350 }
23351
23352 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23353 if (!die)
23354 error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23355 sect_offset_str (sect_off), objfile_name (objfile));
23356
23357 attr = dwarf2_attr (die, DW_AT_const_value, cu);
23358 if (attr == NULL)
23359 return NULL;
23360
23361 byte_order = (bfd_big_endian (objfile->obfd)
23362 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23363
23364 switch (attr->form)
23365 {
23366 case DW_FORM_addr:
23367 case DW_FORM_addrx:
23368 case DW_FORM_GNU_addr_index:
23369 {
23370 gdb_byte *tem;
23371
23372 *len = cu->header.addr_size;
23373 tem = (gdb_byte *) obstack_alloc (obstack, *len);
23374 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23375 result = tem;
23376 }
23377 break;
23378 case DW_FORM_string:
23379 case DW_FORM_strp:
23380 case DW_FORM_strx:
23381 case DW_FORM_GNU_str_index:
23382 case DW_FORM_GNU_strp_alt:
23383 /* DW_STRING is already allocated on the objfile obstack, point
23384 directly to it. */
23385 result = (const gdb_byte *) DW_STRING (attr);
23386 *len = strlen (DW_STRING (attr));
23387 break;
23388 case DW_FORM_block1:
23389 case DW_FORM_block2:
23390 case DW_FORM_block4:
23391 case DW_FORM_block:
23392 case DW_FORM_exprloc:
23393 case DW_FORM_data16:
23394 result = DW_BLOCK (attr)->data;
23395 *len = DW_BLOCK (attr)->size;
23396 break;
23397
23398 /* The DW_AT_const_value attributes are supposed to carry the
23399 symbol's value "represented as it would be on the target
23400 architecture." By the time we get here, it's already been
23401 converted to host endianness, so we just need to sign- or
23402 zero-extend it as appropriate. */
23403 case DW_FORM_data1:
23404 type = die_type (die, cu);
23405 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23406 if (result == NULL)
23407 result = write_constant_as_bytes (obstack, byte_order,
23408 type, value, len);
23409 break;
23410 case DW_FORM_data2:
23411 type = die_type (die, cu);
23412 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23413 if (result == NULL)
23414 result = write_constant_as_bytes (obstack, byte_order,
23415 type, value, len);
23416 break;
23417 case DW_FORM_data4:
23418 type = die_type (die, cu);
23419 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23420 if (result == NULL)
23421 result = write_constant_as_bytes (obstack, byte_order,
23422 type, value, len);
23423 break;
23424 case DW_FORM_data8:
23425 type = die_type (die, cu);
23426 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23427 if (result == NULL)
23428 result = write_constant_as_bytes (obstack, byte_order,
23429 type, value, len);
23430 break;
23431
23432 case DW_FORM_sdata:
23433 case DW_FORM_implicit_const:
23434 type = die_type (die, cu);
23435 result = write_constant_as_bytes (obstack, byte_order,
23436 type, DW_SND (attr), len);
23437 break;
23438
23439 case DW_FORM_udata:
23440 type = die_type (die, cu);
23441 result = write_constant_as_bytes (obstack, byte_order,
23442 type, DW_UNSND (attr), len);
23443 break;
23444
23445 default:
23446 complaint (_("unsupported const value attribute form: '%s'"),
23447 dwarf_form_name (attr->form));
23448 break;
23449 }
23450
23451 return result;
23452 }
23453
23454 /* Return the type of the die at OFFSET in PER_CU. Return NULL if no
23455 valid type for this die is found. */
23456
23457 struct type *
23458 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23459 struct dwarf2_per_cu_data *per_cu)
23460 {
23461 struct dwarf2_cu *cu;
23462 struct die_info *die;
23463
23464 if (per_cu->cu == NULL)
23465 load_cu (per_cu, false);
23466 cu = per_cu->cu;
23467 if (!cu)
23468 return NULL;
23469
23470 die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23471 if (!die)
23472 return NULL;
23473
23474 return die_type (die, cu);
23475 }
23476
23477 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23478 PER_CU. */
23479
23480 struct type *
23481 dwarf2_get_die_type (cu_offset die_offset,
23482 struct dwarf2_per_cu_data *per_cu)
23483 {
23484 sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23485 return get_die_type_at_offset (die_offset_sect, per_cu);
23486 }
23487
23488 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23489 On entry *REF_CU is the CU of SRC_DIE.
23490 On exit *REF_CU is the CU of the result.
23491 Returns NULL if the referenced DIE isn't found. */
23492
23493 static struct die_info *
23494 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23495 struct dwarf2_cu **ref_cu)
23496 {
23497 struct die_info temp_die;
23498 struct dwarf2_cu *sig_cu, *cu = *ref_cu;
23499 struct die_info *die;
23500
23501 /* While it might be nice to assert sig_type->type == NULL here,
23502 we can get here for DW_AT_imported_declaration where we need
23503 the DIE not the type. */
23504
23505 /* If necessary, add it to the queue and load its DIEs. */
23506
23507 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23508 read_signatured_type (sig_type);
23509
23510 sig_cu = sig_type->per_cu.cu;
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));
23516 if (die)
23517 {
23518 struct dwarf2_per_objfile *dwarf2_per_objfile
23519 = (*ref_cu)->per_cu->dwarf2_per_objfile;
23520
23521 /* For .gdb_index version 7 keep track of included TUs.
23522 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
23523 if (dwarf2_per_objfile->index_table != NULL
23524 && dwarf2_per_objfile->index_table->version <= 7)
23525 {
23526 VEC_safe_push (dwarf2_per_cu_ptr,
23527 (*ref_cu)->per_cu->imported_symtabs,
23528 sig_cu->per_cu);
23529 }
23530
23531 *ref_cu = sig_cu;
23532 if (sig_cu != cu)
23533 sig_cu->ancestor = cu;
23534
23535 return die;
23536 }
23537
23538 return NULL;
23539 }
23540
23541 /* Follow signatured type referenced by ATTR in SRC_DIE.
23542 On entry *REF_CU is the CU of SRC_DIE.
23543 On exit *REF_CU is the CU of the result.
23544 The result is the DIE of the type.
23545 If the referenced type cannot be found an error is thrown. */
23546
23547 static struct die_info *
23548 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23549 struct dwarf2_cu **ref_cu)
23550 {
23551 ULONGEST signature = DW_SIGNATURE (attr);
23552 struct signatured_type *sig_type;
23553 struct die_info *die;
23554
23555 gdb_assert (attr->form == DW_FORM_ref_sig8);
23556
23557 sig_type = lookup_signatured_type (*ref_cu, signature);
23558 /* sig_type will be NULL if the signatured type is missing from
23559 the debug info. */
23560 if (sig_type == NULL)
23561 {
23562 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23563 " from DIE at %s [in module %s]"),
23564 hex_string (signature), sect_offset_str (src_die->sect_off),
23565 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23566 }
23567
23568 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23569 if (die == NULL)
23570 {
23571 dump_die_for_error (src_die);
23572 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23573 " from DIE at %s [in module %s]"),
23574 hex_string (signature), sect_offset_str (src_die->sect_off),
23575 objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23576 }
23577
23578 return die;
23579 }
23580
23581 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23582 reading in and processing the type unit if necessary. */
23583
23584 static struct type *
23585 get_signatured_type (struct die_info *die, ULONGEST signature,
23586 struct dwarf2_cu *cu)
23587 {
23588 struct dwarf2_per_objfile *dwarf2_per_objfile
23589 = cu->per_cu->dwarf2_per_objfile;
23590 struct signatured_type *sig_type;
23591 struct dwarf2_cu *type_cu;
23592 struct die_info *type_die;
23593 struct type *type;
23594
23595 sig_type = lookup_signatured_type (cu, signature);
23596 /* sig_type will be NULL if the signatured type is missing from
23597 the debug info. */
23598 if (sig_type == NULL)
23599 {
23600 complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23601 " from DIE at %s [in module %s]"),
23602 hex_string (signature), sect_offset_str (die->sect_off),
23603 objfile_name (dwarf2_per_objfile->objfile));
23604 return build_error_marker_type (cu, die);
23605 }
23606
23607 /* If we already know the type we're done. */
23608 if (sig_type->type != NULL)
23609 return sig_type->type;
23610
23611 type_cu = cu;
23612 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23613 if (type_die != NULL)
23614 {
23615 /* N.B. We need to call get_die_type to ensure only one type for this DIE
23616 is created. This is important, for example, because for c++ classes
23617 we need TYPE_NAME set which is only done by new_symbol. Blech. */
23618 type = read_type_die (type_die, type_cu);
23619 if (type == NULL)
23620 {
23621 complaint (_("Dwarf Error: Cannot build signatured type %s"
23622 " referenced from DIE at %s [in module %s]"),
23623 hex_string (signature), sect_offset_str (die->sect_off),
23624 objfile_name (dwarf2_per_objfile->objfile));
23625 type = build_error_marker_type (cu, die);
23626 }
23627 }
23628 else
23629 {
23630 complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23631 " from DIE at %s [in module %s]"),
23632 hex_string (signature), sect_offset_str (die->sect_off),
23633 objfile_name (dwarf2_per_objfile->objfile));
23634 type = build_error_marker_type (cu, die);
23635 }
23636 sig_type->type = type;
23637
23638 return type;
23639 }
23640
23641 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23642 reading in and processing the type unit if necessary. */
23643
23644 static struct type *
23645 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23646 struct dwarf2_cu *cu) /* ARI: editCase function */
23647 {
23648 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
23649 if (attr_form_is_ref (attr))
23650 {
23651 struct dwarf2_cu *type_cu = cu;
23652 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23653
23654 return read_type_die (type_die, type_cu);
23655 }
23656 else if (attr->form == DW_FORM_ref_sig8)
23657 {
23658 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23659 }
23660 else
23661 {
23662 struct dwarf2_per_objfile *dwarf2_per_objfile
23663 = cu->per_cu->dwarf2_per_objfile;
23664
23665 complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23666 " at %s [in module %s]"),
23667 dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23668 objfile_name (dwarf2_per_objfile->objfile));
23669 return build_error_marker_type (cu, die);
23670 }
23671 }
23672
23673 /* Load the DIEs associated with type unit PER_CU into memory. */
23674
23675 static void
23676 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23677 {
23678 struct signatured_type *sig_type;
23679
23680 /* Caller is responsible for ensuring type_unit_groups don't get here. */
23681 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23682
23683 /* We have the per_cu, but we need the signatured_type.
23684 Fortunately this is an easy translation. */
23685 gdb_assert (per_cu->is_debug_types);
23686 sig_type = (struct signatured_type *) per_cu;
23687
23688 gdb_assert (per_cu->cu == NULL);
23689
23690 read_signatured_type (sig_type);
23691
23692 gdb_assert (per_cu->cu != NULL);
23693 }
23694
23695 /* die_reader_func for read_signatured_type.
23696 This is identical to load_full_comp_unit_reader,
23697 but is kept separate for now. */
23698
23699 static void
23700 read_signatured_type_reader (const struct die_reader_specs *reader,
23701 const gdb_byte *info_ptr,
23702 struct die_info *comp_unit_die,
23703 int has_children,
23704 void *data)
23705 {
23706 struct dwarf2_cu *cu = reader->cu;
23707
23708 gdb_assert (cu->die_hash == NULL);
23709 cu->die_hash =
23710 htab_create_alloc_ex (cu->header.length / 12,
23711 die_hash,
23712 die_eq,
23713 NULL,
23714 &cu->comp_unit_obstack,
23715 hashtab_obstack_allocate,
23716 dummy_obstack_deallocate);
23717
23718 if (has_children)
23719 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23720 &info_ptr, comp_unit_die);
23721 cu->dies = comp_unit_die;
23722 /* comp_unit_die is not stored in die_hash, no need. */
23723
23724 /* We try not to read any attributes in this function, because not
23725 all CUs needed for references have been loaded yet, and symbol
23726 table processing isn't initialized. But we have to set the CU language,
23727 or we won't be able to build types correctly.
23728 Similarly, if we do not read the producer, we can not apply
23729 producer-specific interpretation. */
23730 prepare_one_comp_unit (cu, cu->dies, language_minimal);
23731 }
23732
23733 /* Read in a signatured type and build its CU and DIEs.
23734 If the type is a stub for the real type in a DWO file,
23735 read in the real type from the DWO file as well. */
23736
23737 static void
23738 read_signatured_type (struct signatured_type *sig_type)
23739 {
23740 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23741
23742 gdb_assert (per_cu->is_debug_types);
23743 gdb_assert (per_cu->cu == NULL);
23744
23745 init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23746 read_signatured_type_reader, NULL);
23747 sig_type->per_cu.tu_read = 1;
23748 }
23749
23750 /* Decode simple location descriptions.
23751 Given a pointer to a dwarf block that defines a location, compute
23752 the location and return the value.
23753
23754 NOTE drow/2003-11-18: This function is called in two situations
23755 now: for the address of static or global variables (partial symbols
23756 only) and for offsets into structures which are expected to be
23757 (more or less) constant. The partial symbol case should go away,
23758 and only the constant case should remain. That will let this
23759 function complain more accurately. A few special modes are allowed
23760 without complaint for global variables (for instance, global
23761 register values and thread-local values).
23762
23763 A location description containing no operations indicates that the
23764 object is optimized out. The return value is 0 for that case.
23765 FIXME drow/2003-11-16: No callers check for this case any more; soon all
23766 callers will only want a very basic result and this can become a
23767 complaint.
23768
23769 Note that stack[0] is unused except as a default error return. */
23770
23771 static CORE_ADDR
23772 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23773 {
23774 struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23775 size_t i;
23776 size_t size = blk->size;
23777 const gdb_byte *data = blk->data;
23778 CORE_ADDR stack[64];
23779 int stacki;
23780 unsigned int bytes_read, unsnd;
23781 gdb_byte op;
23782
23783 i = 0;
23784 stacki = 0;
23785 stack[stacki] = 0;
23786 stack[++stacki] = 0;
23787
23788 while (i < size)
23789 {
23790 op = data[i++];
23791 switch (op)
23792 {
23793 case DW_OP_lit0:
23794 case DW_OP_lit1:
23795 case DW_OP_lit2:
23796 case DW_OP_lit3:
23797 case DW_OP_lit4:
23798 case DW_OP_lit5:
23799 case DW_OP_lit6:
23800 case DW_OP_lit7:
23801 case DW_OP_lit8:
23802 case DW_OP_lit9:
23803 case DW_OP_lit10:
23804 case DW_OP_lit11:
23805 case DW_OP_lit12:
23806 case DW_OP_lit13:
23807 case DW_OP_lit14:
23808 case DW_OP_lit15:
23809 case DW_OP_lit16:
23810 case DW_OP_lit17:
23811 case DW_OP_lit18:
23812 case DW_OP_lit19:
23813 case DW_OP_lit20:
23814 case DW_OP_lit21:
23815 case DW_OP_lit22:
23816 case DW_OP_lit23:
23817 case DW_OP_lit24:
23818 case DW_OP_lit25:
23819 case DW_OP_lit26:
23820 case DW_OP_lit27:
23821 case DW_OP_lit28:
23822 case DW_OP_lit29:
23823 case DW_OP_lit30:
23824 case DW_OP_lit31:
23825 stack[++stacki] = op - DW_OP_lit0;
23826 break;
23827
23828 case DW_OP_reg0:
23829 case DW_OP_reg1:
23830 case DW_OP_reg2:
23831 case DW_OP_reg3:
23832 case DW_OP_reg4:
23833 case DW_OP_reg5:
23834 case DW_OP_reg6:
23835 case DW_OP_reg7:
23836 case DW_OP_reg8:
23837 case DW_OP_reg9:
23838 case DW_OP_reg10:
23839 case DW_OP_reg11:
23840 case DW_OP_reg12:
23841 case DW_OP_reg13:
23842 case DW_OP_reg14:
23843 case DW_OP_reg15:
23844 case DW_OP_reg16:
23845 case DW_OP_reg17:
23846 case DW_OP_reg18:
23847 case DW_OP_reg19:
23848 case DW_OP_reg20:
23849 case DW_OP_reg21:
23850 case DW_OP_reg22:
23851 case DW_OP_reg23:
23852 case DW_OP_reg24:
23853 case DW_OP_reg25:
23854 case DW_OP_reg26:
23855 case DW_OP_reg27:
23856 case DW_OP_reg28:
23857 case DW_OP_reg29:
23858 case DW_OP_reg30:
23859 case DW_OP_reg31:
23860 stack[++stacki] = op - DW_OP_reg0;
23861 if (i < size)
23862 dwarf2_complex_location_expr_complaint ();
23863 break;
23864
23865 case DW_OP_regx:
23866 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23867 i += bytes_read;
23868 stack[++stacki] = unsnd;
23869 if (i < size)
23870 dwarf2_complex_location_expr_complaint ();
23871 break;
23872
23873 case DW_OP_addr:
23874 stack[++stacki] = read_address (objfile->obfd, &data[i],
23875 cu, &bytes_read);
23876 i += bytes_read;
23877 break;
23878
23879 case DW_OP_const1u:
23880 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23881 i += 1;
23882 break;
23883
23884 case DW_OP_const1s:
23885 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23886 i += 1;
23887 break;
23888
23889 case DW_OP_const2u:
23890 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23891 i += 2;
23892 break;
23893
23894 case DW_OP_const2s:
23895 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23896 i += 2;
23897 break;
23898
23899 case DW_OP_const4u:
23900 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23901 i += 4;
23902 break;
23903
23904 case DW_OP_const4s:
23905 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23906 i += 4;
23907 break;
23908
23909 case DW_OP_const8u:
23910 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23911 i += 8;
23912 break;
23913
23914 case DW_OP_constu:
23915 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23916 &bytes_read);
23917 i += bytes_read;
23918 break;
23919
23920 case DW_OP_consts:
23921 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23922 i += bytes_read;
23923 break;
23924
23925 case DW_OP_dup:
23926 stack[stacki + 1] = stack[stacki];
23927 stacki++;
23928 break;
23929
23930 case DW_OP_plus:
23931 stack[stacki - 1] += stack[stacki];
23932 stacki--;
23933 break;
23934
23935 case DW_OP_plus_uconst:
23936 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23937 &bytes_read);
23938 i += bytes_read;
23939 break;
23940
23941 case DW_OP_minus:
23942 stack[stacki - 1] -= stack[stacki];
23943 stacki--;
23944 break;
23945
23946 case DW_OP_deref:
23947 /* If we're not the last op, then we definitely can't encode
23948 this using GDB's address_class enum. This is valid for partial
23949 global symbols, although the variable's address will be bogus
23950 in the psymtab. */
23951 if (i < size)
23952 dwarf2_complex_location_expr_complaint ();
23953 break;
23954
23955 case DW_OP_GNU_push_tls_address:
23956 case DW_OP_form_tls_address:
23957 /* The top of the stack has the offset from the beginning
23958 of the thread control block at which the variable is located. */
23959 /* Nothing should follow this operator, so the top of stack would
23960 be returned. */
23961 /* This is valid for partial global symbols, but the variable's
23962 address will be bogus in the psymtab. Make it always at least
23963 non-zero to not look as a variable garbage collected by linker
23964 which have DW_OP_addr 0. */
23965 if (i < size)
23966 dwarf2_complex_location_expr_complaint ();
23967 stack[stacki]++;
23968 break;
23969
23970 case DW_OP_GNU_uninit:
23971 break;
23972
23973 case DW_OP_addrx:
23974 case DW_OP_GNU_addr_index:
23975 case DW_OP_GNU_const_index:
23976 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23977 &bytes_read);
23978 i += bytes_read;
23979 break;
23980
23981 default:
23982 {
23983 const char *name = get_DW_OP_name (op);
23984
23985 if (name)
23986 complaint (_("unsupported stack op: '%s'"),
23987 name);
23988 else
23989 complaint (_("unsupported stack op: '%02x'"),
23990 op);
23991 }
23992
23993 return (stack[stacki]);
23994 }
23995
23996 /* Enforce maximum stack depth of SIZE-1 to avoid writing
23997 outside of the allocated space. Also enforce minimum>0. */
23998 if (stacki >= ARRAY_SIZE (stack) - 1)
23999 {
24000 complaint (_("location description stack overflow"));
24001 return 0;
24002 }
24003
24004 if (stacki <= 0)
24005 {
24006 complaint (_("location description stack underflow"));
24007 return 0;
24008 }
24009 }
24010 return (stack[stacki]);
24011 }
24012
24013 /* memory allocation interface */
24014
24015 static struct dwarf_block *
24016 dwarf_alloc_block (struct dwarf2_cu *cu)
24017 {
24018 return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
24019 }
24020
24021 static struct die_info *
24022 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
24023 {
24024 struct die_info *die;
24025 size_t size = sizeof (struct die_info);
24026
24027 if (num_attrs > 1)
24028 size += (num_attrs - 1) * sizeof (struct attribute);
24029
24030 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
24031 memset (die, 0, sizeof (struct die_info));
24032 return (die);
24033 }
24034
24035 \f
24036 /* Macro support. */
24037
24038 /* Return file name relative to the compilation directory of file number I in
24039 *LH's file name table. The result is allocated using xmalloc; the caller is
24040 responsible for freeing it. */
24041
24042 static char *
24043 file_file_name (int file, struct line_header *lh)
24044 {
24045 /* Is the file number a valid index into the line header's file name
24046 table? Remember that file numbers start with one, not zero. */
24047 if (1 <= file && file <= lh->file_names.size ())
24048 {
24049 const file_entry &fe = lh->file_names[file - 1];
24050
24051 if (!IS_ABSOLUTE_PATH (fe.name))
24052 {
24053 const char *dir = fe.include_dir (lh);
24054 if (dir != NULL)
24055 return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
24056 }
24057 return xstrdup (fe.name);
24058 }
24059 else
24060 {
24061 /* The compiler produced a bogus file number. We can at least
24062 record the macro definitions made in the file, even if we
24063 won't be able to find the file by name. */
24064 char fake_name[80];
24065
24066 xsnprintf (fake_name, sizeof (fake_name),
24067 "<bad macro file number %d>", file);
24068
24069 complaint (_("bad file number in macro information (%d)"),
24070 file);
24071
24072 return xstrdup (fake_name);
24073 }
24074 }
24075
24076 /* Return the full name of file number I in *LH's file name table.
24077 Use COMP_DIR as the name of the current directory of the
24078 compilation. The result is allocated using xmalloc; the caller is
24079 responsible for freeing it. */
24080 static char *
24081 file_full_name (int file, struct line_header *lh, const char *comp_dir)
24082 {
24083 /* Is the file number a valid index into the line header's file name
24084 table? Remember that file numbers start with one, not zero. */
24085 if (1 <= file && file <= lh->file_names.size ())
24086 {
24087 char *relative = file_file_name (file, lh);
24088
24089 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
24090 return relative;
24091 return reconcat (relative, comp_dir, SLASH_STRING,
24092 relative, (char *) NULL);
24093 }
24094 else
24095 return file_file_name (file, lh);
24096 }
24097
24098
24099 static struct macro_source_file *
24100 macro_start_file (struct dwarf2_cu *cu,
24101 int file, int line,
24102 struct macro_source_file *current_file,
24103 struct line_header *lh)
24104 {
24105 /* File name relative to the compilation directory of this source file. */
24106 char *file_name = file_file_name (file, lh);
24107
24108 if (! current_file)
24109 {
24110 /* Note: We don't create a macro table for this compilation unit
24111 at all until we actually get a filename. */
24112 struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
24113
24114 /* If we have no current file, then this must be the start_file
24115 directive for the compilation unit's main source file. */
24116 current_file = macro_set_main (macro_table, file_name);
24117 macro_define_special (macro_table);
24118 }
24119 else
24120 current_file = macro_include (current_file, line, file_name);
24121
24122 xfree (file_name);
24123
24124 return current_file;
24125 }
24126
24127 static const char *
24128 consume_improper_spaces (const char *p, const char *body)
24129 {
24130 if (*p == ' ')
24131 {
24132 complaint (_("macro definition contains spaces "
24133 "in formal argument list:\n`%s'"),
24134 body);
24135
24136 while (*p == ' ')
24137 p++;
24138 }
24139
24140 return p;
24141 }
24142
24143
24144 static void
24145 parse_macro_definition (struct macro_source_file *file, int line,
24146 const char *body)
24147 {
24148 const char *p;
24149
24150 /* The body string takes one of two forms. For object-like macro
24151 definitions, it should be:
24152
24153 <macro name> " " <definition>
24154
24155 For function-like macro definitions, it should be:
24156
24157 <macro name> "() " <definition>
24158 or
24159 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24160
24161 Spaces may appear only where explicitly indicated, and in the
24162 <definition>.
24163
24164 The Dwarf 2 spec says that an object-like macro's name is always
24165 followed by a space, but versions of GCC around March 2002 omit
24166 the space when the macro's definition is the empty string.
24167
24168 The Dwarf 2 spec says that there should be no spaces between the
24169 formal arguments in a function-like macro's formal argument list,
24170 but versions of GCC around March 2002 include spaces after the
24171 commas. */
24172
24173
24174 /* Find the extent of the macro name. The macro name is terminated
24175 by either a space or null character (for an object-like macro) or
24176 an opening paren (for a function-like macro). */
24177 for (p = body; *p; p++)
24178 if (*p == ' ' || *p == '(')
24179 break;
24180
24181 if (*p == ' ' || *p == '\0')
24182 {
24183 /* It's an object-like macro. */
24184 int name_len = p - body;
24185 char *name = savestring (body, name_len);
24186 const char *replacement;
24187
24188 if (*p == ' ')
24189 replacement = body + name_len + 1;
24190 else
24191 {
24192 dwarf2_macro_malformed_definition_complaint (body);
24193 replacement = body + name_len;
24194 }
24195
24196 macro_define_object (file, line, name, replacement);
24197
24198 xfree (name);
24199 }
24200 else if (*p == '(')
24201 {
24202 /* It's a function-like macro. */
24203 char *name = savestring (body, p - body);
24204 int argc = 0;
24205 int argv_size = 1;
24206 char **argv = XNEWVEC (char *, argv_size);
24207
24208 p++;
24209
24210 p = consume_improper_spaces (p, body);
24211
24212 /* Parse the formal argument list. */
24213 while (*p && *p != ')')
24214 {
24215 /* Find the extent of the current argument name. */
24216 const char *arg_start = p;
24217
24218 while (*p && *p != ',' && *p != ')' && *p != ' ')
24219 p++;
24220
24221 if (! *p || p == arg_start)
24222 dwarf2_macro_malformed_definition_complaint (body);
24223 else
24224 {
24225 /* Make sure argv has room for the new argument. */
24226 if (argc >= argv_size)
24227 {
24228 argv_size *= 2;
24229 argv = XRESIZEVEC (char *, argv, argv_size);
24230 }
24231
24232 argv[argc++] = savestring (arg_start, p - arg_start);
24233 }
24234
24235 p = consume_improper_spaces (p, body);
24236
24237 /* Consume the comma, if present. */
24238 if (*p == ',')
24239 {
24240 p++;
24241
24242 p = consume_improper_spaces (p, body);
24243 }
24244 }
24245
24246 if (*p == ')')
24247 {
24248 p++;
24249
24250 if (*p == ' ')
24251 /* Perfectly formed definition, no complaints. */
24252 macro_define_function (file, line, name,
24253 argc, (const char **) argv,
24254 p + 1);
24255 else if (*p == '\0')
24256 {
24257 /* Complain, but do define it. */
24258 dwarf2_macro_malformed_definition_complaint (body);
24259 macro_define_function (file, line, name,
24260 argc, (const char **) argv,
24261 p);
24262 }
24263 else
24264 /* Just complain. */
24265 dwarf2_macro_malformed_definition_complaint (body);
24266 }
24267 else
24268 /* Just complain. */
24269 dwarf2_macro_malformed_definition_complaint (body);
24270
24271 xfree (name);
24272 {
24273 int i;
24274
24275 for (i = 0; i < argc; i++)
24276 xfree (argv[i]);
24277 }
24278 xfree (argv);
24279 }
24280 else
24281 dwarf2_macro_malformed_definition_complaint (body);
24282 }
24283
24284 /* Skip some bytes from BYTES according to the form given in FORM.
24285 Returns the new pointer. */
24286
24287 static const gdb_byte *
24288 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24289 enum dwarf_form form,
24290 unsigned int offset_size,
24291 struct dwarf2_section_info *section)
24292 {
24293 unsigned int bytes_read;
24294
24295 switch (form)
24296 {
24297 case DW_FORM_data1:
24298 case DW_FORM_flag:
24299 ++bytes;
24300 break;
24301
24302 case DW_FORM_data2:
24303 bytes += 2;
24304 break;
24305
24306 case DW_FORM_data4:
24307 bytes += 4;
24308 break;
24309
24310 case DW_FORM_data8:
24311 bytes += 8;
24312 break;
24313
24314 case DW_FORM_data16:
24315 bytes += 16;
24316 break;
24317
24318 case DW_FORM_string:
24319 read_direct_string (abfd, bytes, &bytes_read);
24320 bytes += bytes_read;
24321 break;
24322
24323 case DW_FORM_sec_offset:
24324 case DW_FORM_strp:
24325 case DW_FORM_GNU_strp_alt:
24326 bytes += offset_size;
24327 break;
24328
24329 case DW_FORM_block:
24330 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24331 bytes += bytes_read;
24332 break;
24333
24334 case DW_FORM_block1:
24335 bytes += 1 + read_1_byte (abfd, bytes);
24336 break;
24337 case DW_FORM_block2:
24338 bytes += 2 + read_2_bytes (abfd, bytes);
24339 break;
24340 case DW_FORM_block4:
24341 bytes += 4 + read_4_bytes (abfd, bytes);
24342 break;
24343
24344 case DW_FORM_addrx:
24345 case DW_FORM_sdata:
24346 case DW_FORM_strx:
24347 case DW_FORM_udata:
24348 case DW_FORM_GNU_addr_index:
24349 case DW_FORM_GNU_str_index:
24350 bytes = gdb_skip_leb128 (bytes, buffer_end);
24351 if (bytes == NULL)
24352 {
24353 dwarf2_section_buffer_overflow_complaint (section);
24354 return NULL;
24355 }
24356 break;
24357
24358 case DW_FORM_implicit_const:
24359 break;
24360
24361 default:
24362 {
24363 complaint (_("invalid form 0x%x in `%s'"),
24364 form, get_section_name (section));
24365 return NULL;
24366 }
24367 }
24368
24369 return bytes;
24370 }
24371
24372 /* A helper for dwarf_decode_macros that handles skipping an unknown
24373 opcode. Returns an updated pointer to the macro data buffer; or,
24374 on error, issues a complaint and returns NULL. */
24375
24376 static const gdb_byte *
24377 skip_unknown_opcode (unsigned int opcode,
24378 const gdb_byte **opcode_definitions,
24379 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24380 bfd *abfd,
24381 unsigned int offset_size,
24382 struct dwarf2_section_info *section)
24383 {
24384 unsigned int bytes_read, i;
24385 unsigned long arg;
24386 const gdb_byte *defn;
24387
24388 if (opcode_definitions[opcode] == NULL)
24389 {
24390 complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24391 opcode);
24392 return NULL;
24393 }
24394
24395 defn = opcode_definitions[opcode];
24396 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24397 defn += bytes_read;
24398
24399 for (i = 0; i < arg; ++i)
24400 {
24401 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24402 (enum dwarf_form) defn[i], offset_size,
24403 section);
24404 if (mac_ptr == NULL)
24405 {
24406 /* skip_form_bytes already issued the complaint. */
24407 return NULL;
24408 }
24409 }
24410
24411 return mac_ptr;
24412 }
24413
24414 /* A helper function which parses the header of a macro section.
24415 If the macro section is the extended (for now called "GNU") type,
24416 then this updates *OFFSET_SIZE. Returns a pointer to just after
24417 the header, or issues a complaint and returns NULL on error. */
24418
24419 static const gdb_byte *
24420 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24421 bfd *abfd,
24422 const gdb_byte *mac_ptr,
24423 unsigned int *offset_size,
24424 int section_is_gnu)
24425 {
24426 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24427
24428 if (section_is_gnu)
24429 {
24430 unsigned int version, flags;
24431
24432 version = read_2_bytes (abfd, mac_ptr);
24433 if (version != 4 && version != 5)
24434 {
24435 complaint (_("unrecognized version `%d' in .debug_macro section"),
24436 version);
24437 return NULL;
24438 }
24439 mac_ptr += 2;
24440
24441 flags = read_1_byte (abfd, mac_ptr);
24442 ++mac_ptr;
24443 *offset_size = (flags & 1) ? 8 : 4;
24444
24445 if ((flags & 2) != 0)
24446 /* We don't need the line table offset. */
24447 mac_ptr += *offset_size;
24448
24449 /* Vendor opcode descriptions. */
24450 if ((flags & 4) != 0)
24451 {
24452 unsigned int i, count;
24453
24454 count = read_1_byte (abfd, mac_ptr);
24455 ++mac_ptr;
24456 for (i = 0; i < count; ++i)
24457 {
24458 unsigned int opcode, bytes_read;
24459 unsigned long arg;
24460
24461 opcode = read_1_byte (abfd, mac_ptr);
24462 ++mac_ptr;
24463 opcode_definitions[opcode] = mac_ptr;
24464 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24465 mac_ptr += bytes_read;
24466 mac_ptr += arg;
24467 }
24468 }
24469 }
24470
24471 return mac_ptr;
24472 }
24473
24474 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24475 including DW_MACRO_import. */
24476
24477 static void
24478 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24479 bfd *abfd,
24480 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24481 struct macro_source_file *current_file,
24482 struct line_header *lh,
24483 struct dwarf2_section_info *section,
24484 int section_is_gnu, int section_is_dwz,
24485 unsigned int offset_size,
24486 htab_t include_hash)
24487 {
24488 struct dwarf2_per_objfile *dwarf2_per_objfile
24489 = cu->per_cu->dwarf2_per_objfile;
24490 struct objfile *objfile = dwarf2_per_objfile->objfile;
24491 enum dwarf_macro_record_type macinfo_type;
24492 int at_commandline;
24493 const gdb_byte *opcode_definitions[256];
24494
24495 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24496 &offset_size, section_is_gnu);
24497 if (mac_ptr == NULL)
24498 {
24499 /* We already issued a complaint. */
24500 return;
24501 }
24502
24503 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
24504 GDB is still reading the definitions from command line. First
24505 DW_MACINFO_start_file will need to be ignored as it was already executed
24506 to create CURRENT_FILE for the main source holding also the command line
24507 definitions. On first met DW_MACINFO_start_file this flag is reset to
24508 normally execute all the remaining DW_MACINFO_start_file macinfos. */
24509
24510 at_commandline = 1;
24511
24512 do
24513 {
24514 /* Do we at least have room for a macinfo type byte? */
24515 if (mac_ptr >= mac_end)
24516 {
24517 dwarf2_section_buffer_overflow_complaint (section);
24518 break;
24519 }
24520
24521 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24522 mac_ptr++;
24523
24524 /* Note that we rely on the fact that the corresponding GNU and
24525 DWARF constants are the same. */
24526 DIAGNOSTIC_PUSH
24527 DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24528 switch (macinfo_type)
24529 {
24530 /* A zero macinfo type indicates the end of the macro
24531 information. */
24532 case 0:
24533 break;
24534
24535 case DW_MACRO_define:
24536 case DW_MACRO_undef:
24537 case DW_MACRO_define_strp:
24538 case DW_MACRO_undef_strp:
24539 case DW_MACRO_define_sup:
24540 case DW_MACRO_undef_sup:
24541 {
24542 unsigned int bytes_read;
24543 int line;
24544 const char *body;
24545 int is_define;
24546
24547 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24548 mac_ptr += bytes_read;
24549
24550 if (macinfo_type == DW_MACRO_define
24551 || macinfo_type == DW_MACRO_undef)
24552 {
24553 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24554 mac_ptr += bytes_read;
24555 }
24556 else
24557 {
24558 LONGEST str_offset;
24559
24560 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24561 mac_ptr += offset_size;
24562
24563 if (macinfo_type == DW_MACRO_define_sup
24564 || macinfo_type == DW_MACRO_undef_sup
24565 || section_is_dwz)
24566 {
24567 struct dwz_file *dwz
24568 = dwarf2_get_dwz_file (dwarf2_per_objfile);
24569
24570 body = read_indirect_string_from_dwz (objfile,
24571 dwz, str_offset);
24572 }
24573 else
24574 body = read_indirect_string_at_offset (dwarf2_per_objfile,
24575 abfd, str_offset);
24576 }
24577
24578 is_define = (macinfo_type == DW_MACRO_define
24579 || macinfo_type == DW_MACRO_define_strp
24580 || macinfo_type == DW_MACRO_define_sup);
24581 if (! current_file)
24582 {
24583 /* DWARF violation as no main source is present. */
24584 complaint (_("debug info with no main source gives macro %s "
24585 "on line %d: %s"),
24586 is_define ? _("definition") : _("undefinition"),
24587 line, body);
24588 break;
24589 }
24590 if ((line == 0 && !at_commandline)
24591 || (line != 0 && at_commandline))
24592 complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24593 at_commandline ? _("command-line") : _("in-file"),
24594 is_define ? _("definition") : _("undefinition"),
24595 line == 0 ? _("zero") : _("non-zero"), line, body);
24596
24597 if (body == NULL)
24598 {
24599 /* Fedora's rpm-build's "debugedit" binary
24600 corrupted .debug_macro sections.
24601
24602 For more info, see
24603 https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
24604 complaint (_("debug info gives %s invalid macro %s "
24605 "without body (corrupted?) at line %d "
24606 "on file %s"),
24607 at_commandline ? _("command-line") : _("in-file"),
24608 is_define ? _("definition") : _("undefinition"),
24609 line, current_file->filename);
24610 }
24611 else if (is_define)
24612 parse_macro_definition (current_file, line, body);
24613 else
24614 {
24615 gdb_assert (macinfo_type == DW_MACRO_undef
24616 || macinfo_type == DW_MACRO_undef_strp
24617 || macinfo_type == DW_MACRO_undef_sup);
24618 macro_undef (current_file, line, body);
24619 }
24620 }
24621 break;
24622
24623 case DW_MACRO_start_file:
24624 {
24625 unsigned int bytes_read;
24626 int line, file;
24627
24628 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24629 mac_ptr += bytes_read;
24630 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24631 mac_ptr += bytes_read;
24632
24633 if ((line == 0 && !at_commandline)
24634 || (line != 0 && at_commandline))
24635 complaint (_("debug info gives source %d included "
24636 "from %s at %s line %d"),
24637 file, at_commandline ? _("command-line") : _("file"),
24638 line == 0 ? _("zero") : _("non-zero"), line);
24639
24640 if (at_commandline)
24641 {
24642 /* This DW_MACRO_start_file was executed in the
24643 pass one. */
24644 at_commandline = 0;
24645 }
24646 else
24647 current_file = macro_start_file (cu, file, line, current_file,
24648 lh);
24649 }
24650 break;
24651
24652 case DW_MACRO_end_file:
24653 if (! current_file)
24654 complaint (_("macro debug info has an unmatched "
24655 "`close_file' directive"));
24656 else
24657 {
24658 current_file = current_file->included_by;
24659 if (! current_file)
24660 {
24661 enum dwarf_macro_record_type next_type;
24662
24663 /* GCC circa March 2002 doesn't produce the zero
24664 type byte marking the end of the compilation
24665 unit. Complain if it's not there, but exit no
24666 matter what. */
24667
24668 /* Do we at least have room for a macinfo type byte? */
24669 if (mac_ptr >= mac_end)
24670 {
24671 dwarf2_section_buffer_overflow_complaint (section);
24672 return;
24673 }
24674
24675 /* We don't increment mac_ptr here, so this is just
24676 a look-ahead. */
24677 next_type
24678 = (enum dwarf_macro_record_type) read_1_byte (abfd,
24679 mac_ptr);
24680 if (next_type != 0)
24681 complaint (_("no terminating 0-type entry for "
24682 "macros in `.debug_macinfo' section"));
24683
24684 return;
24685 }
24686 }
24687 break;
24688
24689 case DW_MACRO_import:
24690 case DW_MACRO_import_sup:
24691 {
24692 LONGEST offset;
24693 void **slot;
24694 bfd *include_bfd = abfd;
24695 struct dwarf2_section_info *include_section = section;
24696 const gdb_byte *include_mac_end = mac_end;
24697 int is_dwz = section_is_dwz;
24698 const gdb_byte *new_mac_ptr;
24699
24700 offset = read_offset_1 (abfd, mac_ptr, offset_size);
24701 mac_ptr += offset_size;
24702
24703 if (macinfo_type == DW_MACRO_import_sup)
24704 {
24705 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24706
24707 dwarf2_read_section (objfile, &dwz->macro);
24708
24709 include_section = &dwz->macro;
24710 include_bfd = get_section_bfd_owner (include_section);
24711 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24712 is_dwz = 1;
24713 }
24714
24715 new_mac_ptr = include_section->buffer + offset;
24716 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24717
24718 if (*slot != NULL)
24719 {
24720 /* This has actually happened; see
24721 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
24722 complaint (_("recursive DW_MACRO_import in "
24723 ".debug_macro section"));
24724 }
24725 else
24726 {
24727 *slot = (void *) new_mac_ptr;
24728
24729 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24730 include_mac_end, current_file, lh,
24731 section, section_is_gnu, is_dwz,
24732 offset_size, include_hash);
24733
24734 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24735 }
24736 }
24737 break;
24738
24739 case DW_MACINFO_vendor_ext:
24740 if (!section_is_gnu)
24741 {
24742 unsigned int bytes_read;
24743
24744 /* This reads the constant, but since we don't recognize
24745 any vendor extensions, we ignore it. */
24746 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24747 mac_ptr += bytes_read;
24748 read_direct_string (abfd, mac_ptr, &bytes_read);
24749 mac_ptr += bytes_read;
24750
24751 /* We don't recognize any vendor extensions. */
24752 break;
24753 }
24754 /* FALLTHROUGH */
24755
24756 default:
24757 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24758 mac_ptr, mac_end, abfd, offset_size,
24759 section);
24760 if (mac_ptr == NULL)
24761 return;
24762 break;
24763 }
24764 DIAGNOSTIC_POP
24765 } while (macinfo_type != 0);
24766 }
24767
24768 static void
24769 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24770 int section_is_gnu)
24771 {
24772 struct dwarf2_per_objfile *dwarf2_per_objfile
24773 = cu->per_cu->dwarf2_per_objfile;
24774 struct objfile *objfile = dwarf2_per_objfile->objfile;
24775 struct line_header *lh = cu->line_header;
24776 bfd *abfd;
24777 const gdb_byte *mac_ptr, *mac_end;
24778 struct macro_source_file *current_file = 0;
24779 enum dwarf_macro_record_type macinfo_type;
24780 unsigned int offset_size = cu->header.offset_size;
24781 const gdb_byte *opcode_definitions[256];
24782 void **slot;
24783 struct dwarf2_section_info *section;
24784 const char *section_name;
24785
24786 if (cu->dwo_unit != NULL)
24787 {
24788 if (section_is_gnu)
24789 {
24790 section = &cu->dwo_unit->dwo_file->sections.macro;
24791 section_name = ".debug_macro.dwo";
24792 }
24793 else
24794 {
24795 section = &cu->dwo_unit->dwo_file->sections.macinfo;
24796 section_name = ".debug_macinfo.dwo";
24797 }
24798 }
24799 else
24800 {
24801 if (section_is_gnu)
24802 {
24803 section = &dwarf2_per_objfile->macro;
24804 section_name = ".debug_macro";
24805 }
24806 else
24807 {
24808 section = &dwarf2_per_objfile->macinfo;
24809 section_name = ".debug_macinfo";
24810 }
24811 }
24812
24813 dwarf2_read_section (objfile, section);
24814 if (section->buffer == NULL)
24815 {
24816 complaint (_("missing %s section"), section_name);
24817 return;
24818 }
24819 abfd = get_section_bfd_owner (section);
24820
24821 /* First pass: Find the name of the base filename.
24822 This filename is needed in order to process all macros whose definition
24823 (or undefinition) comes from the command line. These macros are defined
24824 before the first DW_MACINFO_start_file entry, and yet still need to be
24825 associated to the base file.
24826
24827 To determine the base file name, we scan the macro definitions until we
24828 reach the first DW_MACINFO_start_file entry. We then initialize
24829 CURRENT_FILE accordingly so that any macro definition found before the
24830 first DW_MACINFO_start_file can still be associated to the base file. */
24831
24832 mac_ptr = section->buffer + offset;
24833 mac_end = section->buffer + section->size;
24834
24835 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24836 &offset_size, section_is_gnu);
24837 if (mac_ptr == NULL)
24838 {
24839 /* We already issued a complaint. */
24840 return;
24841 }
24842
24843 do
24844 {
24845 /* Do we at least have room for a macinfo type byte? */
24846 if (mac_ptr >= mac_end)
24847 {
24848 /* Complaint is printed during the second pass as GDB will probably
24849 stop the first pass earlier upon finding
24850 DW_MACINFO_start_file. */
24851 break;
24852 }
24853
24854 macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24855 mac_ptr++;
24856
24857 /* Note that we rely on the fact that the corresponding GNU and
24858 DWARF constants are the same. */
24859 DIAGNOSTIC_PUSH
24860 DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24861 switch (macinfo_type)
24862 {
24863 /* A zero macinfo type indicates the end of the macro
24864 information. */
24865 case 0:
24866 break;
24867
24868 case DW_MACRO_define:
24869 case DW_MACRO_undef:
24870 /* Only skip the data by MAC_PTR. */
24871 {
24872 unsigned int bytes_read;
24873
24874 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24875 mac_ptr += bytes_read;
24876 read_direct_string (abfd, mac_ptr, &bytes_read);
24877 mac_ptr += bytes_read;
24878 }
24879 break;
24880
24881 case DW_MACRO_start_file:
24882 {
24883 unsigned int bytes_read;
24884 int line, file;
24885
24886 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24887 mac_ptr += bytes_read;
24888 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24889 mac_ptr += bytes_read;
24890
24891 current_file = macro_start_file (cu, file, line, current_file, lh);
24892 }
24893 break;
24894
24895 case DW_MACRO_end_file:
24896 /* No data to skip by MAC_PTR. */
24897 break;
24898
24899 case DW_MACRO_define_strp:
24900 case DW_MACRO_undef_strp:
24901 case DW_MACRO_define_sup:
24902 case DW_MACRO_undef_sup:
24903 {
24904 unsigned int bytes_read;
24905
24906 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24907 mac_ptr += bytes_read;
24908 mac_ptr += offset_size;
24909 }
24910 break;
24911
24912 case DW_MACRO_import:
24913 case DW_MACRO_import_sup:
24914 /* Note that, according to the spec, a transparent include
24915 chain cannot call DW_MACRO_start_file. So, we can just
24916 skip this opcode. */
24917 mac_ptr += offset_size;
24918 break;
24919
24920 case DW_MACINFO_vendor_ext:
24921 /* Only skip the data by MAC_PTR. */
24922 if (!section_is_gnu)
24923 {
24924 unsigned int bytes_read;
24925
24926 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24927 mac_ptr += bytes_read;
24928 read_direct_string (abfd, mac_ptr, &bytes_read);
24929 mac_ptr += bytes_read;
24930 }
24931 /* FALLTHROUGH */
24932
24933 default:
24934 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24935 mac_ptr, mac_end, abfd, offset_size,
24936 section);
24937 if (mac_ptr == NULL)
24938 return;
24939 break;
24940 }
24941 DIAGNOSTIC_POP
24942 } while (macinfo_type != 0 && current_file == NULL);
24943
24944 /* Second pass: Process all entries.
24945
24946 Use the AT_COMMAND_LINE flag to determine whether we are still processing
24947 command-line macro definitions/undefinitions. This flag is unset when we
24948 reach the first DW_MACINFO_start_file entry. */
24949
24950 htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24951 htab_eq_pointer,
24952 NULL, xcalloc, xfree));
24953 mac_ptr = section->buffer + offset;
24954 slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24955 *slot = (void *) mac_ptr;
24956 dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24957 current_file, lh, section,
24958 section_is_gnu, 0, offset_size,
24959 include_hash.get ());
24960 }
24961
24962 /* Check if the attribute's form is a DW_FORM_block*
24963 if so return true else false. */
24964
24965 static int
24966 attr_form_is_block (const struct attribute *attr)
24967 {
24968 return (attr == NULL ? 0 :
24969 attr->form == DW_FORM_block1
24970 || attr->form == DW_FORM_block2
24971 || attr->form == DW_FORM_block4
24972 || attr->form == DW_FORM_block
24973 || attr->form == DW_FORM_exprloc);
24974 }
24975
24976 /* Return non-zero if ATTR's value is a section offset --- classes
24977 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24978 You may use DW_UNSND (attr) to retrieve such offsets.
24979
24980 Section 7.5.4, "Attribute Encodings", explains that no attribute
24981 may have a value that belongs to more than one of these classes; it
24982 would be ambiguous if we did, because we use the same forms for all
24983 of them. */
24984
24985 static int
24986 attr_form_is_section_offset (const struct attribute *attr)
24987 {
24988 return (attr->form == DW_FORM_data4
24989 || attr->form == DW_FORM_data8
24990 || attr->form == DW_FORM_sec_offset);
24991 }
24992
24993 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24994 zero otherwise. When this function returns true, you can apply
24995 dwarf2_get_attr_constant_value to it.
24996
24997 However, note that for some attributes you must check
24998 attr_form_is_section_offset before using this test. DW_FORM_data4
24999 and DW_FORM_data8 are members of both the constant class, and of
25000 the classes that contain offsets into other debug sections
25001 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
25002 that, if an attribute's can be either a constant or one of the
25003 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
25004 taken as section offsets, not constants.
25005
25006 DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
25007 cannot handle that. */
25008
25009 static int
25010 attr_form_is_constant (const struct attribute *attr)
25011 {
25012 switch (attr->form)
25013 {
25014 case DW_FORM_sdata:
25015 case DW_FORM_udata:
25016 case DW_FORM_data1:
25017 case DW_FORM_data2:
25018 case DW_FORM_data4:
25019 case DW_FORM_data8:
25020 case DW_FORM_implicit_const:
25021 return 1;
25022 default:
25023 return 0;
25024 }
25025 }
25026
25027
25028 /* DW_ADDR is always stored already as sect_offset; despite for the forms
25029 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
25030
25031 static int
25032 attr_form_is_ref (const struct attribute *attr)
25033 {
25034 switch (attr->form)
25035 {
25036 case DW_FORM_ref_addr:
25037 case DW_FORM_ref1:
25038 case DW_FORM_ref2:
25039 case DW_FORM_ref4:
25040 case DW_FORM_ref8:
25041 case DW_FORM_ref_udata:
25042 case DW_FORM_GNU_ref_alt:
25043 return 1;
25044 default:
25045 return 0;
25046 }
25047 }
25048
25049 /* Return the .debug_loc section to use for CU.
25050 For DWO files use .debug_loc.dwo. */
25051
25052 static struct dwarf2_section_info *
25053 cu_debug_loc_section (struct dwarf2_cu *cu)
25054 {
25055 struct dwarf2_per_objfile *dwarf2_per_objfile
25056 = cu->per_cu->dwarf2_per_objfile;
25057
25058 if (cu->dwo_unit)
25059 {
25060 struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
25061
25062 return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
25063 }
25064 return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
25065 : &dwarf2_per_objfile->loc);
25066 }
25067
25068 /* A helper function that fills in a dwarf2_loclist_baton. */
25069
25070 static void
25071 fill_in_loclist_baton (struct dwarf2_cu *cu,
25072 struct dwarf2_loclist_baton *baton,
25073 const struct attribute *attr)
25074 {
25075 struct dwarf2_per_objfile *dwarf2_per_objfile
25076 = cu->per_cu->dwarf2_per_objfile;
25077 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25078
25079 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
25080
25081 baton->per_cu = cu->per_cu;
25082 gdb_assert (baton->per_cu);
25083 /* We don't know how long the location list is, but make sure we
25084 don't run off the edge of the section. */
25085 baton->size = section->size - DW_UNSND (attr);
25086 baton->data = section->buffer + DW_UNSND (attr);
25087 baton->base_address = cu->base_address;
25088 baton->from_dwo = cu->dwo_unit != NULL;
25089 }
25090
25091 static void
25092 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
25093 struct dwarf2_cu *cu, int is_block)
25094 {
25095 struct dwarf2_per_objfile *dwarf2_per_objfile
25096 = cu->per_cu->dwarf2_per_objfile;
25097 struct objfile *objfile = dwarf2_per_objfile->objfile;
25098 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25099
25100 if (attr_form_is_section_offset (attr)
25101 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
25102 the section. If so, fall through to the complaint in the
25103 other branch. */
25104 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
25105 {
25106 struct dwarf2_loclist_baton *baton;
25107
25108 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
25109
25110 fill_in_loclist_baton (cu, baton, attr);
25111
25112 if (cu->base_known == 0)
25113 complaint (_("Location list used without "
25114 "specifying the CU base address."));
25115
25116 SYMBOL_ACLASS_INDEX (sym) = (is_block
25117 ? dwarf2_loclist_block_index
25118 : dwarf2_loclist_index);
25119 SYMBOL_LOCATION_BATON (sym) = baton;
25120 }
25121 else
25122 {
25123 struct dwarf2_locexpr_baton *baton;
25124
25125 baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
25126 baton->per_cu = cu->per_cu;
25127 gdb_assert (baton->per_cu);
25128
25129 if (attr_form_is_block (attr))
25130 {
25131 /* Note that we're just copying the block's data pointer
25132 here, not the actual data. We're still pointing into the
25133 info_buffer for SYM's objfile; right now we never release
25134 that buffer, but when we do clean up properly this may
25135 need to change. */
25136 baton->size = DW_BLOCK (attr)->size;
25137 baton->data = DW_BLOCK (attr)->data;
25138 }
25139 else
25140 {
25141 dwarf2_invalid_attrib_class_complaint ("location description",
25142 SYMBOL_NATURAL_NAME (sym));
25143 baton->size = 0;
25144 }
25145
25146 SYMBOL_ACLASS_INDEX (sym) = (is_block
25147 ? dwarf2_locexpr_block_index
25148 : dwarf2_locexpr_index);
25149 SYMBOL_LOCATION_BATON (sym) = baton;
25150 }
25151 }
25152
25153 /* Return the OBJFILE associated with the compilation unit CU. If CU
25154 came from a separate debuginfo file, then the master objfile is
25155 returned. */
25156
25157 struct objfile *
25158 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25159 {
25160 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25161
25162 /* Return the master objfile, so that we can report and look up the
25163 correct file containing this variable. */
25164 if (objfile->separate_debug_objfile_backlink)
25165 objfile = objfile->separate_debug_objfile_backlink;
25166
25167 return objfile;
25168 }
25169
25170 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25171 (CU_HEADERP is unused in such case) or prepare a temporary copy at
25172 CU_HEADERP first. */
25173
25174 static const struct comp_unit_head *
25175 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25176 struct dwarf2_per_cu_data *per_cu)
25177 {
25178 const gdb_byte *info_ptr;
25179
25180 if (per_cu->cu)
25181 return &per_cu->cu->header;
25182
25183 info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25184
25185 memset (cu_headerp, 0, sizeof (*cu_headerp));
25186 read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25187 rcuh_kind::COMPILE);
25188
25189 return cu_headerp;
25190 }
25191
25192 /* Return the address size given in the compilation unit header for CU. */
25193
25194 int
25195 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25196 {
25197 struct comp_unit_head cu_header_local;
25198 const struct comp_unit_head *cu_headerp;
25199
25200 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25201
25202 return cu_headerp->addr_size;
25203 }
25204
25205 /* Return the offset size given in the compilation unit header for CU. */
25206
25207 int
25208 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25209 {
25210 struct comp_unit_head cu_header_local;
25211 const struct comp_unit_head *cu_headerp;
25212
25213 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25214
25215 return cu_headerp->offset_size;
25216 }
25217
25218 /* See its dwarf2loc.h declaration. */
25219
25220 int
25221 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25222 {
25223 struct comp_unit_head cu_header_local;
25224 const struct comp_unit_head *cu_headerp;
25225
25226 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25227
25228 if (cu_headerp->version == 2)
25229 return cu_headerp->addr_size;
25230 else
25231 return cu_headerp->offset_size;
25232 }
25233
25234 /* Return the text offset of the CU. The returned offset comes from
25235 this CU's objfile. If this objfile came from a separate debuginfo
25236 file, then the offset may be different from the corresponding
25237 offset in the parent objfile. */
25238
25239 CORE_ADDR
25240 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25241 {
25242 struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25243
25244 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25245 }
25246
25247 /* Return DWARF version number of PER_CU. */
25248
25249 short
25250 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25251 {
25252 return per_cu->dwarf_version;
25253 }
25254
25255 /* Locate the .debug_info compilation unit from CU's objfile which contains
25256 the DIE at OFFSET. Raises an error on failure. */
25257
25258 static struct dwarf2_per_cu_data *
25259 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25260 unsigned int offset_in_dwz,
25261 struct dwarf2_per_objfile *dwarf2_per_objfile)
25262 {
25263 struct dwarf2_per_cu_data *this_cu;
25264 int low, high;
25265
25266 low = 0;
25267 high = dwarf2_per_objfile->all_comp_units.size () - 1;
25268 while (high > low)
25269 {
25270 struct dwarf2_per_cu_data *mid_cu;
25271 int mid = low + (high - low) / 2;
25272
25273 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25274 if (mid_cu->is_dwz > offset_in_dwz
25275 || (mid_cu->is_dwz == offset_in_dwz
25276 && mid_cu->sect_off + mid_cu->length >= sect_off))
25277 high = mid;
25278 else
25279 low = mid + 1;
25280 }
25281 gdb_assert (low == high);
25282 this_cu = dwarf2_per_objfile->all_comp_units[low];
25283 if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
25284 {
25285 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25286 error (_("Dwarf Error: could not find partial DIE containing "
25287 "offset %s [in module %s]"),
25288 sect_offset_str (sect_off),
25289 bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25290
25291 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25292 <= sect_off);
25293 return dwarf2_per_objfile->all_comp_units[low-1];
25294 }
25295 else
25296 {
25297 if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25298 && sect_off >= this_cu->sect_off + this_cu->length)
25299 error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25300 gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25301 return this_cu;
25302 }
25303 }
25304
25305 /* Initialize dwarf2_cu CU, owned by PER_CU. */
25306
25307 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25308 : per_cu (per_cu_),
25309 mark (false),
25310 has_loclist (false),
25311 checked_producer (false),
25312 producer_is_gxx_lt_4_6 (false),
25313 producer_is_gcc_lt_4_3 (false),
25314 producer_is_icc (false),
25315 producer_is_icc_lt_14 (false),
25316 producer_is_codewarrior (false),
25317 processing_has_namespace_info (false)
25318 {
25319 per_cu->cu = this;
25320 }
25321
25322 /* Destroy a dwarf2_cu. */
25323
25324 dwarf2_cu::~dwarf2_cu ()
25325 {
25326 per_cu->cu = NULL;
25327 }
25328
25329 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
25330
25331 static void
25332 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25333 enum language pretend_language)
25334 {
25335 struct attribute *attr;
25336
25337 /* Set the language we're debugging. */
25338 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25339 if (attr)
25340 set_cu_language (DW_UNSND (attr), cu);
25341 else
25342 {
25343 cu->language = pretend_language;
25344 cu->language_defn = language_def (cu->language);
25345 }
25346
25347 cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25348 }
25349
25350 /* Increase the age counter on each cached compilation unit, and free
25351 any that are too old. */
25352
25353 static void
25354 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25355 {
25356 struct dwarf2_per_cu_data *per_cu, **last_chain;
25357
25358 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25359 per_cu = dwarf2_per_objfile->read_in_chain;
25360 while (per_cu != NULL)
25361 {
25362 per_cu->cu->last_used ++;
25363 if (per_cu->cu->last_used <= dwarf_max_cache_age)
25364 dwarf2_mark (per_cu->cu);
25365 per_cu = per_cu->cu->read_in_chain;
25366 }
25367
25368 per_cu = dwarf2_per_objfile->read_in_chain;
25369 last_chain = &dwarf2_per_objfile->read_in_chain;
25370 while (per_cu != NULL)
25371 {
25372 struct dwarf2_per_cu_data *next_cu;
25373
25374 next_cu = per_cu->cu->read_in_chain;
25375
25376 if (!per_cu->cu->mark)
25377 {
25378 delete per_cu->cu;
25379 *last_chain = next_cu;
25380 }
25381 else
25382 last_chain = &per_cu->cu->read_in_chain;
25383
25384 per_cu = next_cu;
25385 }
25386 }
25387
25388 /* Remove a single compilation unit from the cache. */
25389
25390 static void
25391 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25392 {
25393 struct dwarf2_per_cu_data *per_cu, **last_chain;
25394 struct dwarf2_per_objfile *dwarf2_per_objfile
25395 = target_per_cu->dwarf2_per_objfile;
25396
25397 per_cu = dwarf2_per_objfile->read_in_chain;
25398 last_chain = &dwarf2_per_objfile->read_in_chain;
25399 while (per_cu != NULL)
25400 {
25401 struct dwarf2_per_cu_data *next_cu;
25402
25403 next_cu = per_cu->cu->read_in_chain;
25404
25405 if (per_cu == target_per_cu)
25406 {
25407 delete per_cu->cu;
25408 per_cu->cu = NULL;
25409 *last_chain = next_cu;
25410 break;
25411 }
25412 else
25413 last_chain = &per_cu->cu->read_in_chain;
25414
25415 per_cu = next_cu;
25416 }
25417 }
25418
25419 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25420 We store these in a hash table separate from the DIEs, and preserve them
25421 when the DIEs are flushed out of cache.
25422
25423 The CU "per_cu" pointer is needed because offset alone is not enough to
25424 uniquely identify the type. A file may have multiple .debug_types sections,
25425 or the type may come from a DWO file. Furthermore, while it's more logical
25426 to use per_cu->section+offset, with Fission the section with the data is in
25427 the DWO file but we don't know that section at the point we need it.
25428 We have to use something in dwarf2_per_cu_data (or the pointer to it)
25429 because we can enter the lookup routine, get_die_type_at_offset, from
25430 outside this file, and thus won't necessarily have PER_CU->cu.
25431 Fortunately, PER_CU is stable for the life of the objfile. */
25432
25433 struct dwarf2_per_cu_offset_and_type
25434 {
25435 const struct dwarf2_per_cu_data *per_cu;
25436 sect_offset sect_off;
25437 struct type *type;
25438 };
25439
25440 /* Hash function for a dwarf2_per_cu_offset_and_type. */
25441
25442 static hashval_t
25443 per_cu_offset_and_type_hash (const void *item)
25444 {
25445 const struct dwarf2_per_cu_offset_and_type *ofs
25446 = (const struct dwarf2_per_cu_offset_and_type *) item;
25447
25448 return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25449 }
25450
25451 /* Equality function for a dwarf2_per_cu_offset_and_type. */
25452
25453 static int
25454 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25455 {
25456 const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25457 = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25458 const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25459 = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25460
25461 return (ofs_lhs->per_cu == ofs_rhs->per_cu
25462 && ofs_lhs->sect_off == ofs_rhs->sect_off);
25463 }
25464
25465 /* Set the type associated with DIE to TYPE. Save it in CU's hash
25466 table if necessary. For convenience, return TYPE.
25467
25468 The DIEs reading must have careful ordering to:
25469 * Not cause infite loops trying to read in DIEs as a prerequisite for
25470 reading current DIE.
25471 * Not trying to dereference contents of still incompletely read in types
25472 while reading in other DIEs.
25473 * Enable referencing still incompletely read in types just by a pointer to
25474 the type without accessing its fields.
25475
25476 Therefore caller should follow these rules:
25477 * Try to fetch any prerequisite types we may need to build this DIE type
25478 before building the type and calling set_die_type.
25479 * After building type call set_die_type for current DIE as soon as
25480 possible before fetching more types to complete the current type.
25481 * Make the type as complete as possible before fetching more types. */
25482
25483 static struct type *
25484 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25485 {
25486 struct dwarf2_per_objfile *dwarf2_per_objfile
25487 = cu->per_cu->dwarf2_per_objfile;
25488 struct dwarf2_per_cu_offset_and_type **slot, ofs;
25489 struct objfile *objfile = dwarf2_per_objfile->objfile;
25490 struct attribute *attr;
25491 struct dynamic_prop prop;
25492
25493 /* For Ada types, make sure that the gnat-specific data is always
25494 initialized (if not already set). There are a few types where
25495 we should not be doing so, because the type-specific area is
25496 already used to hold some other piece of info (eg: TYPE_CODE_FLT
25497 where the type-specific area is used to store the floatformat).
25498 But this is not a problem, because the gnat-specific information
25499 is actually not needed for these types. */
25500 if (need_gnat_info (cu)
25501 && TYPE_CODE (type) != TYPE_CODE_FUNC
25502 && TYPE_CODE (type) != TYPE_CODE_FLT
25503 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25504 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25505 && TYPE_CODE (type) != TYPE_CODE_METHOD
25506 && !HAVE_GNAT_AUX_INFO (type))
25507 INIT_GNAT_SPECIFIC (type);
25508
25509 /* Read DW_AT_allocated and set in type. */
25510 attr = dwarf2_attr (die, DW_AT_allocated, cu);
25511 if (attr_form_is_block (attr))
25512 {
25513 if (attr_to_dynamic_prop (attr, die, cu, &prop))
25514 add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25515 }
25516 else if (attr != NULL)
25517 {
25518 complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25519 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25520 sect_offset_str (die->sect_off));
25521 }
25522
25523 /* Read DW_AT_associated and set in type. */
25524 attr = dwarf2_attr (die, DW_AT_associated, cu);
25525 if (attr_form_is_block (attr))
25526 {
25527 if (attr_to_dynamic_prop (attr, die, cu, &prop))
25528 add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25529 }
25530 else if (attr != NULL)
25531 {
25532 complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25533 (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25534 sect_offset_str (die->sect_off));
25535 }
25536
25537 /* Read DW_AT_data_location and set in type. */
25538 attr = dwarf2_attr (die, DW_AT_data_location, cu);
25539 if (attr_to_dynamic_prop (attr, die, cu, &prop))
25540 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25541
25542 if (dwarf2_per_objfile->die_type_hash == NULL)
25543 {
25544 dwarf2_per_objfile->die_type_hash =
25545 htab_create_alloc_ex (127,
25546 per_cu_offset_and_type_hash,
25547 per_cu_offset_and_type_eq,
25548 NULL,
25549 &objfile->objfile_obstack,
25550 hashtab_obstack_allocate,
25551 dummy_obstack_deallocate);
25552 }
25553
25554 ofs.per_cu = cu->per_cu;
25555 ofs.sect_off = die->sect_off;
25556 ofs.type = type;
25557 slot = (struct dwarf2_per_cu_offset_and_type **)
25558 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25559 if (*slot)
25560 complaint (_("A problem internal to GDB: DIE %s has type already set"),
25561 sect_offset_str (die->sect_off));
25562 *slot = XOBNEW (&objfile->objfile_obstack,
25563 struct dwarf2_per_cu_offset_and_type);
25564 **slot = ofs;
25565 return type;
25566 }
25567
25568 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25569 or return NULL if the die does not have a saved type. */
25570
25571 static struct type *
25572 get_die_type_at_offset (sect_offset sect_off,
25573 struct dwarf2_per_cu_data *per_cu)
25574 {
25575 struct dwarf2_per_cu_offset_and_type *slot, ofs;
25576 struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25577
25578 if (dwarf2_per_objfile->die_type_hash == NULL)
25579 return NULL;
25580
25581 ofs.per_cu = per_cu;
25582 ofs.sect_off = sect_off;
25583 slot = ((struct dwarf2_per_cu_offset_and_type *)
25584 htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25585 if (slot)
25586 return slot->type;
25587 else
25588 return NULL;
25589 }
25590
25591 /* Look up the type for DIE in CU in die_type_hash,
25592 or return NULL if DIE does not have a saved type. */
25593
25594 static struct type *
25595 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25596 {
25597 return get_die_type_at_offset (die->sect_off, cu->per_cu);
25598 }
25599
25600 /* Add a dependence relationship from CU to REF_PER_CU. */
25601
25602 static void
25603 dwarf2_add_dependence (struct dwarf2_cu *cu,
25604 struct dwarf2_per_cu_data *ref_per_cu)
25605 {
25606 void **slot;
25607
25608 if (cu->dependencies == NULL)
25609 cu->dependencies
25610 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25611 NULL, &cu->comp_unit_obstack,
25612 hashtab_obstack_allocate,
25613 dummy_obstack_deallocate);
25614
25615 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25616 if (*slot == NULL)
25617 *slot = ref_per_cu;
25618 }
25619
25620 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25621 Set the mark field in every compilation unit in the
25622 cache that we must keep because we are keeping CU. */
25623
25624 static int
25625 dwarf2_mark_helper (void **slot, void *data)
25626 {
25627 struct dwarf2_per_cu_data *per_cu;
25628
25629 per_cu = (struct dwarf2_per_cu_data *) *slot;
25630
25631 /* cu->dependencies references may not yet have been ever read if QUIT aborts
25632 reading of the chain. As such dependencies remain valid it is not much
25633 useful to track and undo them during QUIT cleanups. */
25634 if (per_cu->cu == NULL)
25635 return 1;
25636
25637 if (per_cu->cu->mark)
25638 return 1;
25639 per_cu->cu->mark = true;
25640
25641 if (per_cu->cu->dependencies != NULL)
25642 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25643
25644 return 1;
25645 }
25646
25647 /* Set the mark field in CU and in every other compilation unit in the
25648 cache that we must keep because we are keeping CU. */
25649
25650 static void
25651 dwarf2_mark (struct dwarf2_cu *cu)
25652 {
25653 if (cu->mark)
25654 return;
25655 cu->mark = true;
25656 if (cu->dependencies != NULL)
25657 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25658 }
25659
25660 static void
25661 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25662 {
25663 while (per_cu)
25664 {
25665 per_cu->cu->mark = false;
25666 per_cu = per_cu->cu->read_in_chain;
25667 }
25668 }
25669
25670 /* Trivial hash function for partial_die_info: the hash value of a DIE
25671 is its offset in .debug_info for this objfile. */
25672
25673 static hashval_t
25674 partial_die_hash (const void *item)
25675 {
25676 const struct partial_die_info *part_die
25677 = (const struct partial_die_info *) item;
25678
25679 return to_underlying (part_die->sect_off);
25680 }
25681
25682 /* Trivial comparison function for partial_die_info structures: two DIEs
25683 are equal if they have the same offset. */
25684
25685 static int
25686 partial_die_eq (const void *item_lhs, const void *item_rhs)
25687 {
25688 const struct partial_die_info *part_die_lhs
25689 = (const struct partial_die_info *) item_lhs;
25690 const struct partial_die_info *part_die_rhs
25691 = (const struct partial_die_info *) item_rhs;
25692
25693 return part_die_lhs->sect_off == part_die_rhs->sect_off;
25694 }
25695
25696 struct cmd_list_element *set_dwarf_cmdlist;
25697 struct cmd_list_element *show_dwarf_cmdlist;
25698
25699 static void
25700 set_dwarf_cmd (const char *args, int from_tty)
25701 {
25702 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25703 gdb_stdout);
25704 }
25705
25706 static void
25707 show_dwarf_cmd (const char *args, int from_tty)
25708 {
25709 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25710 }
25711
25712 int dwarf_always_disassemble;
25713
25714 static void
25715 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25716 struct cmd_list_element *c, const char *value)
25717 {
25718 fprintf_filtered (file,
25719 _("Whether to always disassemble "
25720 "DWARF expressions is %s.\n"),
25721 value);
25722 }
25723
25724 static void
25725 show_check_physname (struct ui_file *file, int from_tty,
25726 struct cmd_list_element *c, const char *value)
25727 {
25728 fprintf_filtered (file,
25729 _("Whether to check \"physname\" is %s.\n"),
25730 value);
25731 }
25732
25733 void
25734 _initialize_dwarf2_read (void)
25735 {
25736 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25737 Set DWARF specific variables.\n\
25738 Configure DWARF variables such as the cache size"),
25739 &set_dwarf_cmdlist, "maintenance set dwarf ",
25740 0/*allow-unknown*/, &maintenance_set_cmdlist);
25741
25742 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25743 Show DWARF specific variables\n\
25744 Show DWARF variables such as the cache size"),
25745 &show_dwarf_cmdlist, "maintenance show dwarf ",
25746 0/*allow-unknown*/, &maintenance_show_cmdlist);
25747
25748 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25749 &dwarf_max_cache_age, _("\
25750 Set the upper bound on the age of cached DWARF compilation units."), _("\
25751 Show the upper bound on the age of cached DWARF compilation units."), _("\
25752 A higher limit means that cached compilation units will be stored\n\
25753 in memory longer, and more total memory will be used. Zero disables\n\
25754 caching, which can slow down startup."),
25755 NULL,
25756 show_dwarf_max_cache_age,
25757 &set_dwarf_cmdlist,
25758 &show_dwarf_cmdlist);
25759
25760 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25761 &dwarf_always_disassemble, _("\
25762 Set whether `info address' always disassembles DWARF expressions."), _("\
25763 Show whether `info address' always disassembles DWARF expressions."), _("\
25764 When enabled, DWARF expressions are always printed in an assembly-like\n\
25765 syntax. When disabled, expressions will be printed in a more\n\
25766 conversational style, when possible."),
25767 NULL,
25768 show_dwarf_always_disassemble,
25769 &set_dwarf_cmdlist,
25770 &show_dwarf_cmdlist);
25771
25772 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25773 Set debugging of the DWARF reader."), _("\
25774 Show debugging of the DWARF reader."), _("\
25775 When enabled (non-zero), debugging messages are printed during DWARF\n\
25776 reading and symtab expansion. A value of 1 (one) provides basic\n\
25777 information. A value greater than 1 provides more verbose information."),
25778 NULL,
25779 NULL,
25780 &setdebuglist, &showdebuglist);
25781
25782 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25783 Set debugging of the DWARF DIE reader."), _("\
25784 Show debugging of the DWARF DIE reader."), _("\
25785 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25786 The value is the maximum depth to print."),
25787 NULL,
25788 NULL,
25789 &setdebuglist, &showdebuglist);
25790
25791 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25792 Set debugging of the dwarf line reader."), _("\
25793 Show debugging of the dwarf line reader."), _("\
25794 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25795 A value of 1 (one) provides basic information.\n\
25796 A value greater than 1 provides more verbose information."),
25797 NULL,
25798 NULL,
25799 &setdebuglist, &showdebuglist);
25800
25801 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25802 Set cross-checking of \"physname\" code against demangler."), _("\
25803 Show cross-checking of \"physname\" code against demangler."), _("\
25804 When enabled, GDB's internal \"physname\" code is checked against\n\
25805 the demangler."),
25806 NULL, show_check_physname,
25807 &setdebuglist, &showdebuglist);
25808
25809 add_setshow_boolean_cmd ("use-deprecated-index-sections",
25810 no_class, &use_deprecated_index_sections, _("\
25811 Set whether to use deprecated gdb_index sections."), _("\
25812 Show whether to use deprecated gdb_index sections."), _("\
25813 When enabled, deprecated .gdb_index sections are used anyway.\n\
25814 Normally they are ignored either because of a missing feature or\n\
25815 performance issue.\n\
25816 Warning: This option must be enabled before gdb reads the file."),
25817 NULL,
25818 NULL,
25819 &setlist, &showlist);
25820
25821 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25822 &dwarf2_locexpr_funcs);
25823 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25824 &dwarf2_loclist_funcs);
25825
25826 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25827 &dwarf2_block_frame_base_locexpr_funcs);
25828 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25829 &dwarf2_block_frame_base_loclist_funcs);
25830
25831 #if GDB_SELF_TEST
25832 selftests::register_test ("dw2_expand_symtabs_matching",
25833 selftests::dw2_expand_symtabs_matching::run_test);
25834 #endif
25835 }
This page took 0.804261 seconds and 4 git commands to generate.