configure: check for libipt
[deliverable/binutils-gdb.git] / gdb / dwarf2read.c
CommitLineData
c906108c 1/* DWARF 2 debugging format support for GDB.
917c78fc 2
32d0add0 3 Copyright (C) 1994-2015 Free Software Foundation, Inc.
c906108c
SS
4
5 Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6 Inc. with support from Florida State University (under contract
7 with the Ada Joint Program Office), and Silicon Graphics, Inc.
8 Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9 based on Fred Fish's (Cygnus Support) implementation of DWARF 1
7ce59000 10 support.
c906108c 11
c5aa993b 12 This file is part of GDB.
c906108c 13
c5aa993b
JM
14 This program is free software; you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
a9762ec7
JB
16 the Free Software Foundation; either version 3 of the License, or
17 (at your option) any later version.
c906108c 18
a9762ec7
JB
19 This program is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 GNU General Public License for more details.
c906108c 23
c5aa993b 24 You should have received a copy of the GNU General Public License
a9762ec7 25 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c 26
21b2bd31
DE
27/* FIXME: Various die-reading functions need to be more careful with
28 reading off the end of the section.
29 E.g., load_partial_dies, read_partial_die. */
30
c906108c
SS
31#include "defs.h"
32#include "bfd.h"
80626a55 33#include "elf-bfd.h"
c906108c
SS
34#include "symtab.h"
35#include "gdbtypes.h"
c906108c 36#include "objfiles.h"
fa8f86ff 37#include "dwarf2.h"
c906108c
SS
38#include "buildsym.h"
39#include "demangle.h"
50f182aa 40#include "gdb-demangle.h"
c906108c 41#include "expression.h"
d5166ae1 42#include "filenames.h" /* for DOSish file names */
2e276125 43#include "macrotab.h"
c906108c
SS
44#include "language.h"
45#include "complaints.h"
357e46e7 46#include "bcache.h"
4c2df51b
DJ
47#include "dwarf2expr.h"
48#include "dwarf2loc.h"
9219021c 49#include "cp-support.h"
72bf9492 50#include "hashtab.h"
ae038cb0
DJ
51#include "command.h"
52#include "gdbcmd.h"
edb3359d 53#include "block.h"
ff013f42 54#include "addrmap.h"
94af9270
KS
55#include "typeprint.h"
56#include "jv-lang.h"
ccefe4c4 57#include "psympriv.h"
53ce3c39 58#include <sys/stat.h>
96d19272 59#include "completer.h"
34eaf542 60#include "vec.h"
98bfdba5 61#include "c-lang.h"
a766d390 62#include "go-lang.h"
98bfdba5 63#include "valprint.h"
3019eac3 64#include "gdbcore.h" /* for gnutarget */
156942c7 65#include "gdb/gdb-index.h"
60d5a603 66#include <ctype.h>
cbb099e8 67#include "gdb_bfd.h"
4357ac6c 68#include "f-lang.h"
05cba821 69#include "source.h"
614c279d 70#include "filestuff.h"
dc294be5 71#include "build-id.h"
4c2df51b 72
c906108c 73#include <fcntl.h>
c906108c 74#include <sys/types.h>
d8151005 75
34eaf542
TT
76typedef struct symbol *symbolp;
77DEF_VEC_P (symbolp);
78
73be47f5
DE
79/* When == 1, print basic high level tracing messages.
80 When > 1, be more verbose.
b4f54984
DE
81 This is in contrast to the low level DIE reading of dwarf_die_debug. */
82static unsigned int dwarf_read_debug = 0;
45cfd468 83
d97bc12b 84/* When non-zero, dump DIEs after they are read in. */
b4f54984 85static unsigned int dwarf_die_debug = 0;
d97bc12b 86
27e0867f
DE
87/* When non-zero, dump line number entries as they are read in. */
88static unsigned int dwarf_line_debug = 0;
89
900e11f9
JK
90/* When non-zero, cross-check physname against demangler. */
91static int check_physname = 0;
92
481860b3 93/* When non-zero, do not reject deprecated .gdb_index sections. */
e615022a 94static int use_deprecated_index_sections = 0;
481860b3 95
6502dd73
DJ
96static const struct objfile_data *dwarf2_objfile_data_key;
97
f1e6e072
TT
98/* The "aclass" indices for various kinds of computed DWARF symbols. */
99
100static int dwarf2_locexpr_index;
101static int dwarf2_loclist_index;
102static int dwarf2_locexpr_block_index;
103static int dwarf2_loclist_block_index;
104
73869dc2
DE
105/* A descriptor for dwarf sections.
106
107 S.ASECTION, SIZE are typically initialized when the objfile is first
108 scanned. BUFFER, READIN are filled in later when the section is read.
109 If the section contained compressed data then SIZE is updated to record
110 the uncompressed size of the section.
111
112 DWP file format V2 introduces a wrinkle that is easiest to handle by
113 creating the concept of virtual sections contained within a real section.
114 In DWP V2 the sections of the input DWO files are concatenated together
115 into one section, but section offsets are kept relative to the original
116 input section.
117 If this is a virtual dwp-v2 section, S.CONTAINING_SECTION is a backlink to
118 the real section this "virtual" section is contained in, and BUFFER,SIZE
119 describe the virtual section. */
120
dce234bc
PP
121struct dwarf2_section_info
122{
73869dc2
DE
123 union
124 {
e5aa3347 125 /* If this is a real section, the bfd section. */
73869dc2
DE
126 asection *asection;
127 /* If this is a virtual section, pointer to the containing ("real")
e5aa3347 128 section. */
73869dc2
DE
129 struct dwarf2_section_info *containing_section;
130 } s;
19ac8c2e 131 /* Pointer to section data, only valid if readin. */
d521ce57 132 const gdb_byte *buffer;
73869dc2 133 /* The size of the section, real or virtual. */
dce234bc 134 bfd_size_type size;
73869dc2
DE
135 /* If this is a virtual section, the offset in the real section.
136 Only valid if is_virtual. */
137 bfd_size_type virtual_offset;
be391dca 138 /* True if we have tried to read this section. */
73869dc2
DE
139 char readin;
140 /* True if this is a virtual section, False otherwise.
141 This specifies which of s.asection and s.containing_section to use. */
142 char is_virtual;
dce234bc
PP
143};
144
8b70b953
TT
145typedef struct dwarf2_section_info dwarf2_section_info_def;
146DEF_VEC_O (dwarf2_section_info_def);
147
9291a0cd
TT
148/* All offsets in the index are of this type. It must be
149 architecture-independent. */
150typedef uint32_t offset_type;
151
152DEF_VEC_I (offset_type);
153
156942c7
DE
154/* Ensure only legit values are used. */
155#define DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \
156 do { \
157 gdb_assert ((unsigned int) (value) <= 1); \
158 GDB_INDEX_SYMBOL_STATIC_SET_VALUE((cu_index), (value)); \
159 } while (0)
160
161/* Ensure only legit values are used. */
162#define DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \
163 do { \
164 gdb_assert ((value) >= GDB_INDEX_SYMBOL_KIND_TYPE \
165 && (value) <= GDB_INDEX_SYMBOL_KIND_OTHER); \
166 GDB_INDEX_SYMBOL_KIND_SET_VALUE((cu_index), (value)); \
167 } while (0)
168
169/* Ensure we don't use more than the alloted nuber of bits for the CU. */
170#define DW2_GDB_INDEX_CU_SET_VALUE(cu_index, value) \
171 do { \
172 gdb_assert (((value) & ~GDB_INDEX_CU_MASK) == 0); \
173 GDB_INDEX_CU_SET_VALUE((cu_index), (value)); \
174 } while (0)
175
9291a0cd
TT
176/* A description of the mapped index. The file format is described in
177 a comment by the code that writes the index. */
178struct mapped_index
179{
559a7a62
JK
180 /* Index data format version. */
181 int version;
182
9291a0cd
TT
183 /* The total length of the buffer. */
184 off_t total_size;
b11b1f88 185
9291a0cd
TT
186 /* A pointer to the address table data. */
187 const gdb_byte *address_table;
b11b1f88 188
9291a0cd
TT
189 /* Size of the address table data in bytes. */
190 offset_type address_table_size;
b11b1f88 191
3876f04e
DE
192 /* The symbol table, implemented as a hash table. */
193 const offset_type *symbol_table;
b11b1f88 194
9291a0cd 195 /* Size in slots, each slot is 2 offset_types. */
3876f04e 196 offset_type symbol_table_slots;
b11b1f88 197
9291a0cd
TT
198 /* A pointer to the constant pool. */
199 const char *constant_pool;
200};
201
95554aad
TT
202typedef struct dwarf2_per_cu_data *dwarf2_per_cu_ptr;
203DEF_VEC_P (dwarf2_per_cu_ptr);
204
52059ffd
TT
205struct tu_stats
206{
207 int nr_uniq_abbrev_tables;
208 int nr_symtabs;
209 int nr_symtab_sharers;
210 int nr_stmt_less_type_units;
211 int nr_all_type_units_reallocs;
212};
213
9cdd5dbd
DE
214/* Collection of data recorded per objfile.
215 This hangs off of dwarf2_objfile_data_key. */
216
6502dd73
DJ
217struct dwarf2_per_objfile
218{
dce234bc
PP
219 struct dwarf2_section_info info;
220 struct dwarf2_section_info abbrev;
221 struct dwarf2_section_info line;
dce234bc
PP
222 struct dwarf2_section_info loc;
223 struct dwarf2_section_info macinfo;
cf2c3c16 224 struct dwarf2_section_info macro;
dce234bc
PP
225 struct dwarf2_section_info str;
226 struct dwarf2_section_info ranges;
3019eac3 227 struct dwarf2_section_info addr;
dce234bc
PP
228 struct dwarf2_section_info frame;
229 struct dwarf2_section_info eh_frame;
9291a0cd 230 struct dwarf2_section_info gdb_index;
ae038cb0 231
8b70b953
TT
232 VEC (dwarf2_section_info_def) *types;
233
be391dca
TT
234 /* Back link. */
235 struct objfile *objfile;
236
d467dd73 237 /* Table of all the compilation units. This is used to locate
10b3939b 238 the target compilation unit of a particular reference. */
ae038cb0
DJ
239 struct dwarf2_per_cu_data **all_comp_units;
240
241 /* The number of compilation units in ALL_COMP_UNITS. */
242 int n_comp_units;
243
1fd400ff 244 /* The number of .debug_types-related CUs. */
d467dd73 245 int n_type_units;
1fd400ff 246
6aa5f3a6
DE
247 /* The number of elements allocated in all_type_units.
248 If there are skeleton-less TUs, we add them to all_type_units lazily. */
249 int n_allocated_type_units;
250
a2ce51a0
DE
251 /* The .debug_types-related CUs (TUs).
252 This is stored in malloc space because we may realloc it. */
b4dd5633 253 struct signatured_type **all_type_units;
1fd400ff 254
f4dc4d17
DE
255 /* Table of struct type_unit_group objects.
256 The hash key is the DW_AT_stmt_list value. */
257 htab_t type_unit_groups;
72dca2f5 258
348e048f
DE
259 /* A table mapping .debug_types signatures to its signatured_type entry.
260 This is NULL if the .debug_types section hasn't been read in yet. */
261 htab_t signatured_types;
262
f4dc4d17
DE
263 /* Type unit statistics, to see how well the scaling improvements
264 are doing. */
52059ffd 265 struct tu_stats tu_stats;
f4dc4d17
DE
266
267 /* A chain of compilation units that are currently read in, so that
268 they can be freed later. */
269 struct dwarf2_per_cu_data *read_in_chain;
270
3019eac3
DE
271 /* A table mapping DW_AT_dwo_name values to struct dwo_file objects.
272 This is NULL if the table hasn't been allocated yet. */
273 htab_t dwo_files;
274
80626a55
DE
275 /* Non-zero if we've check for whether there is a DWP file. */
276 int dwp_checked;
277
278 /* The DWP file if there is one, or NULL. */
279 struct dwp_file *dwp_file;
280
36586728
TT
281 /* The shared '.dwz' file, if one exists. This is used when the
282 original data was compressed using 'dwz -m'. */
283 struct dwz_file *dwz_file;
284
72dca2f5
FR
285 /* A flag indicating wether this objfile has a section loaded at a
286 VMA of 0. */
287 int has_section_at_zero;
9291a0cd 288
ae2de4f8
DE
289 /* True if we are using the mapped index,
290 or we are faking it for OBJF_READNOW's sake. */
9291a0cd
TT
291 unsigned char using_index;
292
ae2de4f8 293 /* The mapped index, or NULL if .gdb_index is missing or not being used. */
9291a0cd 294 struct mapped_index *index_table;
98bfdba5 295
7b9f3c50 296 /* When using index_table, this keeps track of all quick_file_names entries.
56e64610
DE
297 TUs typically share line table entries with a CU, so we maintain a
298 separate table of all line table entries to support the sharing.
299 Note that while there can be way more TUs than CUs, we've already
300 sorted all the TUs into "type unit groups", grouped by their
301 DW_AT_stmt_list value. Therefore the only sharing done here is with a
302 CU and its associated TU group if there is one. */
7b9f3c50
DE
303 htab_t quick_file_names_table;
304
98bfdba5
PA
305 /* Set during partial symbol reading, to prevent queueing of full
306 symbols. */
307 int reading_partial_symbols;
673bfd45 308
dee91e82 309 /* Table mapping type DIEs to their struct type *.
673bfd45 310 This is NULL if not allocated yet.
02142a6c 311 The mapping is done via (CU/TU + DIE offset) -> type. */
dee91e82 312 htab_t die_type_hash;
95554aad
TT
313
314 /* The CUs we recently read. */
315 VEC (dwarf2_per_cu_ptr) *just_read_cus;
527f3840
JK
316
317 /* Table containing line_header indexed by offset and offset_in_dwz. */
318 htab_t line_header_hash;
6502dd73
DJ
319};
320
321static struct dwarf2_per_objfile *dwarf2_per_objfile;
c906108c 322
251d32d9 323/* Default names of the debugging sections. */
c906108c 324
233a11ab
CS
325/* Note that if the debugging section has been compressed, it might
326 have a name like .zdebug_info. */
327
9cdd5dbd
DE
328static const struct dwarf2_debug_sections dwarf2_elf_names =
329{
251d32d9
TG
330 { ".debug_info", ".zdebug_info" },
331 { ".debug_abbrev", ".zdebug_abbrev" },
332 { ".debug_line", ".zdebug_line" },
333 { ".debug_loc", ".zdebug_loc" },
334 { ".debug_macinfo", ".zdebug_macinfo" },
cf2c3c16 335 { ".debug_macro", ".zdebug_macro" },
251d32d9
TG
336 { ".debug_str", ".zdebug_str" },
337 { ".debug_ranges", ".zdebug_ranges" },
338 { ".debug_types", ".zdebug_types" },
3019eac3 339 { ".debug_addr", ".zdebug_addr" },
251d32d9
TG
340 { ".debug_frame", ".zdebug_frame" },
341 { ".eh_frame", NULL },
24d3216f
TT
342 { ".gdb_index", ".zgdb_index" },
343 23
251d32d9 344};
c906108c 345
80626a55 346/* List of DWO/DWP sections. */
3019eac3 347
80626a55 348static const struct dwop_section_names
3019eac3
DE
349{
350 struct dwarf2_section_names abbrev_dwo;
351 struct dwarf2_section_names info_dwo;
352 struct dwarf2_section_names line_dwo;
353 struct dwarf2_section_names loc_dwo;
09262596
DE
354 struct dwarf2_section_names macinfo_dwo;
355 struct dwarf2_section_names macro_dwo;
3019eac3
DE
356 struct dwarf2_section_names str_dwo;
357 struct dwarf2_section_names str_offsets_dwo;
358 struct dwarf2_section_names types_dwo;
80626a55
DE
359 struct dwarf2_section_names cu_index;
360 struct dwarf2_section_names tu_index;
3019eac3 361}
80626a55 362dwop_section_names =
3019eac3
DE
363{
364 { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
365 { ".debug_info.dwo", ".zdebug_info.dwo" },
366 { ".debug_line.dwo", ".zdebug_line.dwo" },
367 { ".debug_loc.dwo", ".zdebug_loc.dwo" },
09262596
DE
368 { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
369 { ".debug_macro.dwo", ".zdebug_macro.dwo" },
3019eac3
DE
370 { ".debug_str.dwo", ".zdebug_str.dwo" },
371 { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
372 { ".debug_types.dwo", ".zdebug_types.dwo" },
80626a55
DE
373 { ".debug_cu_index", ".zdebug_cu_index" },
374 { ".debug_tu_index", ".zdebug_tu_index" },
3019eac3
DE
375};
376
c906108c
SS
377/* local data types */
378
107d2387
AC
379/* The data in a compilation unit header, after target2host
380 translation, looks like this. */
c906108c 381struct comp_unit_head
a738430d 382{
c764a876 383 unsigned int length;
a738430d 384 short version;
a738430d
MK
385 unsigned char addr_size;
386 unsigned char signed_addr_p;
b64f50a1 387 sect_offset abbrev_offset;
57349743 388
a738430d
MK
389 /* Size of file offsets; either 4 or 8. */
390 unsigned int offset_size;
57349743 391
a738430d
MK
392 /* Size of the length field; either 4 or 12. */
393 unsigned int initial_length_size;
57349743 394
a738430d
MK
395 /* Offset to the first byte of this compilation unit header in the
396 .debug_info section, for resolving relative reference dies. */
b64f50a1 397 sect_offset offset;
57349743 398
d00adf39
DE
399 /* Offset to first die in this cu from the start of the cu.
400 This will be the first byte following the compilation unit header. */
b64f50a1 401 cu_offset first_die_offset;
a738430d 402};
c906108c 403
3da10d80
KS
404/* Type used for delaying computation of method physnames.
405 See comments for compute_delayed_physnames. */
406struct delayed_method_info
407{
408 /* The type to which the method is attached, i.e., its parent class. */
409 struct type *type;
410
411 /* The index of the method in the type's function fieldlists. */
412 int fnfield_index;
413
414 /* The index of the method in the fieldlist. */
415 int index;
416
417 /* The name of the DIE. */
418 const char *name;
419
420 /* The DIE associated with this method. */
421 struct die_info *die;
422};
423
424typedef struct delayed_method_info delayed_method_info;
425DEF_VEC_O (delayed_method_info);
426
e7c27a73
DJ
427/* Internal state when decoding a particular compilation unit. */
428struct dwarf2_cu
429{
430 /* The objfile containing this compilation unit. */
431 struct objfile *objfile;
432
d00adf39 433 /* The header of the compilation unit. */
e7c27a73 434 struct comp_unit_head header;
e142c38c 435
d00adf39
DE
436 /* Base address of this compilation unit. */
437 CORE_ADDR base_address;
438
439 /* Non-zero if base_address has been set. */
440 int base_known;
441
e142c38c
DJ
442 /* The language we are debugging. */
443 enum language language;
444 const struct language_defn *language_defn;
445
b0f35d58
DL
446 const char *producer;
447
e142c38c
DJ
448 /* The generic symbol table building routines have separate lists for
449 file scope symbols and all all other scopes (local scopes). So
450 we need to select the right one to pass to add_symbol_to_list().
451 We do it by keeping a pointer to the correct list in list_in_scope.
452
453 FIXME: The original dwarf code just treated the file scope as the
454 first local scope, and all other local scopes as nested local
455 scopes, and worked fine. Check to see if we really need to
456 distinguish these in buildsym.c. */
457 struct pending **list_in_scope;
458
433df2d4
DE
459 /* The abbrev table for this CU.
460 Normally this points to the abbrev table in the objfile.
461 But if DWO_UNIT is non-NULL this is the abbrev table in the DWO file. */
462 struct abbrev_table *abbrev_table;
72bf9492 463
b64f50a1
JK
464 /* Hash table holding all the loaded partial DIEs
465 with partial_die->offset.SECT_OFF as hash. */
72bf9492
DJ
466 htab_t partial_dies;
467
468 /* Storage for things with the same lifetime as this read-in compilation
469 unit, including partial DIEs. */
470 struct obstack comp_unit_obstack;
471
ae038cb0
DJ
472 /* When multiple dwarf2_cu structures are living in memory, this field
473 chains them all together, so that they can be released efficiently.
474 We will probably also want a generation counter so that most-recently-used
475 compilation units are cached... */
476 struct dwarf2_per_cu_data *read_in_chain;
477
69d751e3 478 /* Backlink to our per_cu entry. */
ae038cb0
DJ
479 struct dwarf2_per_cu_data *per_cu;
480
481 /* How many compilation units ago was this CU last referenced? */
482 int last_used;
483
b64f50a1
JK
484 /* A hash table of DIE cu_offset for following references with
485 die_info->offset.sect_off as hash. */
51545339 486 htab_t die_hash;
10b3939b
DJ
487
488 /* Full DIEs if read in. */
489 struct die_info *dies;
490
491 /* A set of pointers to dwarf2_per_cu_data objects for compilation
492 units referenced by this one. Only set during full symbol processing;
493 partial symbol tables do not have dependencies. */
494 htab_t dependencies;
495
cb1df416
DJ
496 /* Header data from the line table, during full symbol processing. */
497 struct line_header *line_header;
498
3da10d80
KS
499 /* A list of methods which need to have physnames computed
500 after all type information has been read. */
501 VEC (delayed_method_info) *method_list;
502
96408a79
SA
503 /* To be copied to symtab->call_site_htab. */
504 htab_t call_site_htab;
505
034e5797
DE
506 /* Non-NULL if this CU came from a DWO file.
507 There is an invariant here that is important to remember:
508 Except for attributes copied from the top level DIE in the "main"
509 (or "stub") file in preparation for reading the DWO file
510 (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
511 Either there isn't a DWO file (in which case this is NULL and the point
512 is moot), or there is and either we're not going to read it (in which
513 case this is NULL) or there is and we are reading it (in which case this
514 is non-NULL). */
3019eac3
DE
515 struct dwo_unit *dwo_unit;
516
517 /* The DW_AT_addr_base attribute if present, zero otherwise
518 (zero is a valid value though).
1dbab08b 519 Note this value comes from the Fission stub CU/TU's DIE. */
3019eac3
DE
520 ULONGEST addr_base;
521
2e3cf129
DE
522 /* The DW_AT_ranges_base attribute if present, zero otherwise
523 (zero is a valid value though).
1dbab08b 524 Note this value comes from the Fission stub CU/TU's DIE.
2e3cf129 525 Also note that the value is zero in the non-DWO case so this value can
ab435259
DE
526 be used without needing to know whether DWO files are in use or not.
527 N.B. This does not apply to DW_AT_ranges appearing in
528 DW_TAG_compile_unit dies. This is a bit of a wart, consider if ever
529 DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
530 DW_AT_ranges_base *would* have to be applied, and we'd have to care
531 whether the DW_AT_ranges attribute came from the skeleton or DWO. */
2e3cf129
DE
532 ULONGEST ranges_base;
533
ae038cb0
DJ
534 /* Mark used when releasing cached dies. */
535 unsigned int mark : 1;
536
8be455d7
JK
537 /* This CU references .debug_loc. See the symtab->locations_valid field.
538 This test is imperfect as there may exist optimized debug code not using
539 any location list and still facing inlining issues if handled as
540 unoptimized code. For a future better test see GCC PR other/32998. */
8be455d7 541 unsigned int has_loclist : 1;
ba919b58 542
1b80a9fa
JK
543 /* These cache the results for producer_is_* fields. CHECKED_PRODUCER is set
544 if all the producer_is_* fields are valid. This information is cached
545 because profiling CU expansion showed excessive time spent in
546 producer_is_gxx_lt_4_6. */
ba919b58
TT
547 unsigned int checked_producer : 1;
548 unsigned int producer_is_gxx_lt_4_6 : 1;
1b80a9fa 549 unsigned int producer_is_gcc_lt_4_3 : 1;
685b1105 550 unsigned int producer_is_icc : 1;
4d4ec4e5
TT
551
552 /* When set, the file that we're processing is known to have
553 debugging info for C++ namespaces. GCC 3.3.x did not produce
554 this information, but later versions do. */
555
556 unsigned int processing_has_namespace_info : 1;
e7c27a73
DJ
557};
558
10b3939b
DJ
559/* Persistent data held for a compilation unit, even when not
560 processing it. We put a pointer to this structure in the
28dee7f5 561 read_symtab_private field of the psymtab. */
10b3939b 562
ae038cb0
DJ
563struct dwarf2_per_cu_data
564{
36586728 565 /* The start offset and length of this compilation unit.
45452591 566 NOTE: Unlike comp_unit_head.length, this length includes
3019eac3
DE
567 initial_length_size.
568 If the DIE refers to a DWO file, this is always of the original die,
569 not the DWO file. */
b64f50a1 570 sect_offset offset;
36586728 571 unsigned int length;
ae038cb0
DJ
572
573 /* Flag indicating this compilation unit will be read in before
574 any of the current compilation units are processed. */
c764a876 575 unsigned int queued : 1;
ae038cb0 576
0d99eb77
DE
577 /* This flag will be set when reading partial DIEs if we need to load
578 absolutely all DIEs for this compilation unit, instead of just the ones
579 we think are interesting. It gets set if we look for a DIE in the
5afb4e99
DJ
580 hash table and don't find it. */
581 unsigned int load_all_dies : 1;
582
0186c6a7
DE
583 /* Non-zero if this CU is from .debug_types.
584 Struct dwarf2_per_cu_data is contained in struct signatured_type iff
585 this is non-zero. */
3019eac3
DE
586 unsigned int is_debug_types : 1;
587
36586728
TT
588 /* Non-zero if this CU is from the .dwz file. */
589 unsigned int is_dwz : 1;
590
a2ce51a0
DE
591 /* Non-zero if reading a TU directly from a DWO file, bypassing the stub.
592 This flag is only valid if is_debug_types is true.
593 We can't read a CU directly from a DWO file: There are required
594 attributes in the stub. */
595 unsigned int reading_dwo_directly : 1;
596
7ee85ab1
DE
597 /* Non-zero if the TU has been read.
598 This is used to assist the "Stay in DWO Optimization" for Fission:
599 When reading a DWO, it's faster to read TUs from the DWO instead of
600 fetching them from random other DWOs (due to comdat folding).
601 If the TU has already been read, the optimization is unnecessary
602 (and unwise - we don't want to change where gdb thinks the TU lives
603 "midflight").
604 This flag is only valid if is_debug_types is true. */
605 unsigned int tu_read : 1;
606
3019eac3
DE
607 /* The section this CU/TU lives in.
608 If the DIE refers to a DWO file, this is always the original die,
609 not the DWO file. */
8a0459fd 610 struct dwarf2_section_info *section;
348e048f 611
17ea53c3
JK
612 /* Set to non-NULL iff this CU is currently loaded. When it gets freed out
613 of the CU cache it gets reset to NULL again. */
ae038cb0 614 struct dwarf2_cu *cu;
1c379e20 615
9cdd5dbd
DE
616 /* The corresponding objfile.
617 Normally we can get the objfile from dwarf2_per_objfile.
618 However we can enter this file with just a "per_cu" handle. */
9291a0cd
TT
619 struct objfile *objfile;
620
fffbe6a8
YQ
621 /* When dwarf2_per_objfile->using_index is true, the 'quick' field
622 is active. Otherwise, the 'psymtab' field is active. */
9291a0cd
TT
623 union
624 {
625 /* The partial symbol table associated with this compilation unit,
95554aad 626 or NULL for unread partial units. */
9291a0cd
TT
627 struct partial_symtab *psymtab;
628
629 /* Data needed by the "quick" functions. */
630 struct dwarf2_per_cu_quick_data *quick;
631 } v;
95554aad 632
796a7ff8
DE
633 /* The CUs we import using DW_TAG_imported_unit. This is filled in
634 while reading psymtabs, used to compute the psymtab dependencies,
635 and then cleared. Then it is filled in again while reading full
636 symbols, and only deleted when the objfile is destroyed.
637
638 This is also used to work around a difference between the way gold
639 generates .gdb_index version <=7 and the way gdb does. Arguably this
640 is a gold bug. For symbols coming from TUs, gold records in the index
641 the CU that includes the TU instead of the TU itself. This breaks
642 dw2_lookup_symbol: It assumes that if the index says symbol X lives
643 in CU/TU Y, then one need only expand Y and a subsequent lookup in Y
644 will find X. Alas TUs live in their own symtab, so after expanding CU Y
645 we need to look in TU Z to find X. Fortunately, this is akin to
646 DW_TAG_imported_unit, so we just use the same mechanism: For
647 .gdb_index version <=7 this also records the TUs that the CU referred
648 to. Concurrently with this change gdb was modified to emit version 8
69d751e3
DE
649 indices so we only pay a price for gold generated indices.
650 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
796a7ff8 651 VEC (dwarf2_per_cu_ptr) *imported_symtabs;
ae038cb0
DJ
652};
653
348e048f
DE
654/* Entry in the signatured_types hash table. */
655
656struct signatured_type
657{
42e7ad6c 658 /* The "per_cu" object of this type.
ac9ec31b 659 This struct is used iff per_cu.is_debug_types.
42e7ad6c
DE
660 N.B.: This is the first member so that it's easy to convert pointers
661 between them. */
662 struct dwarf2_per_cu_data per_cu;
663
3019eac3 664 /* The type's signature. */
348e048f
DE
665 ULONGEST signature;
666
3019eac3 667 /* Offset in the TU of the type's DIE, as read from the TU header.
c88ee1f0
DE
668 If this TU is a DWO stub and the definition lives in a DWO file
669 (specified by DW_AT_GNU_dwo_name), this value is unusable. */
3019eac3
DE
670 cu_offset type_offset_in_tu;
671
672 /* Offset in the section of the type's DIE.
673 If the definition lives in a DWO file, this is the offset in the
674 .debug_types.dwo section.
675 The value is zero until the actual value is known.
676 Zero is otherwise not a valid section offset. */
677 sect_offset type_offset_in_section;
0186c6a7
DE
678
679 /* Type units are grouped by their DW_AT_stmt_list entry so that they
680 can share them. This points to the containing symtab. */
681 struct type_unit_group *type_unit_group;
ac9ec31b
DE
682
683 /* The type.
684 The first time we encounter this type we fully read it in and install it
685 in the symbol tables. Subsequent times we only need the type. */
686 struct type *type;
a2ce51a0
DE
687
688 /* Containing DWO unit.
689 This field is valid iff per_cu.reading_dwo_directly. */
690 struct dwo_unit *dwo_unit;
348e048f
DE
691};
692
0186c6a7
DE
693typedef struct signatured_type *sig_type_ptr;
694DEF_VEC_P (sig_type_ptr);
695
094b34ac
DE
696/* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
697 This includes type_unit_group and quick_file_names. */
698
699struct stmt_list_hash
700{
701 /* The DWO unit this table is from or NULL if there is none. */
702 struct dwo_unit *dwo_unit;
703
704 /* Offset in .debug_line or .debug_line.dwo. */
705 sect_offset line_offset;
706};
707
f4dc4d17
DE
708/* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
709 an object of this type. */
710
711struct type_unit_group
712{
0186c6a7 713 /* dwarf2read.c's main "handle" on a TU symtab.
f4dc4d17
DE
714 To simplify things we create an artificial CU that "includes" all the
715 type units using this stmt_list so that the rest of the code still has
716 a "per_cu" handle on the symtab.
717 This PER_CU is recognized by having no section. */
8a0459fd 718#define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
094b34ac
DE
719 struct dwarf2_per_cu_data per_cu;
720
0186c6a7
DE
721 /* The TUs that share this DW_AT_stmt_list entry.
722 This is added to while parsing type units to build partial symtabs,
723 and is deleted afterwards and not used again. */
724 VEC (sig_type_ptr) *tus;
f4dc4d17 725
43f3e411 726 /* The compunit symtab.
094b34ac 727 Type units in a group needn't all be defined in the same source file,
43f3e411
DE
728 so we create an essentially anonymous symtab as the compunit symtab. */
729 struct compunit_symtab *compunit_symtab;
f4dc4d17 730
094b34ac
DE
731 /* The data used to construct the hash key. */
732 struct stmt_list_hash hash;
f4dc4d17
DE
733
734 /* The number of symtabs from the line header.
735 The value here must match line_header.num_file_names. */
736 unsigned int num_symtabs;
737
738 /* The symbol tables for this TU (obtained from the files listed in
739 DW_AT_stmt_list).
740 WARNING: The order of entries here must match the order of entries
741 in the line header. After the first TU using this type_unit_group, the
742 line header for the subsequent TUs is recreated from this. This is done
743 because we need to use the same symtabs for each TU using the same
744 DW_AT_stmt_list value. Also note that symtabs may be repeated here,
745 there's no guarantee the line header doesn't have duplicate entries. */
746 struct symtab **symtabs;
747};
748
73869dc2 749/* These sections are what may appear in a (real or virtual) DWO file. */
3019eac3
DE
750
751struct dwo_sections
752{
753 struct dwarf2_section_info abbrev;
3019eac3
DE
754 struct dwarf2_section_info line;
755 struct dwarf2_section_info loc;
09262596
DE
756 struct dwarf2_section_info macinfo;
757 struct dwarf2_section_info macro;
3019eac3
DE
758 struct dwarf2_section_info str;
759 struct dwarf2_section_info str_offsets;
80626a55
DE
760 /* In the case of a virtual DWO file, these two are unused. */
761 struct dwarf2_section_info info;
3019eac3
DE
762 VEC (dwarf2_section_info_def) *types;
763};
764
c88ee1f0 765/* CUs/TUs in DWP/DWO files. */
3019eac3
DE
766
767struct dwo_unit
768{
769 /* Backlink to the containing struct dwo_file. */
770 struct dwo_file *dwo_file;
771
772 /* The "id" that distinguishes this CU/TU.
773 .debug_info calls this "dwo_id", .debug_types calls this "signature".
774 Since signatures came first, we stick with it for consistency. */
775 ULONGEST signature;
776
777 /* The section this CU/TU lives in, in the DWO file. */
8a0459fd 778 struct dwarf2_section_info *section;
3019eac3 779
19ac8c2e 780 /* Same as dwarf2_per_cu_data:{offset,length} but in the DWO section. */
3019eac3
DE
781 sect_offset offset;
782 unsigned int length;
783
784 /* For types, offset in the type's DIE of the type defined by this TU. */
785 cu_offset type_offset_in_tu;
786};
787
73869dc2
DE
788/* include/dwarf2.h defines the DWP section codes.
789 It defines a max value but it doesn't define a min value, which we
790 use for error checking, so provide one. */
791
792enum dwp_v2_section_ids
793{
794 DW_SECT_MIN = 1
795};
796
80626a55 797/* Data for one DWO file.
57d63ce2
DE
798
799 This includes virtual DWO files (a virtual DWO file is a DWO file as it
800 appears in a DWP file). DWP files don't really have DWO files per se -
801 comdat folding of types "loses" the DWO file they came from, and from
802 a high level view DWP files appear to contain a mass of random types.
803 However, to maintain consistency with the non-DWP case we pretend DWP
804 files contain virtual DWO files, and we assign each TU with one virtual
805 DWO file (generally based on the line and abbrev section offsets -
806 a heuristic that seems to work in practice). */
3019eac3
DE
807
808struct dwo_file
809{
0ac5b59e 810 /* The DW_AT_GNU_dwo_name attribute.
80626a55
DE
811 For virtual DWO files the name is constructed from the section offsets
812 of abbrev,line,loc,str_offsets so that we combine virtual DWO files
813 from related CU+TUs. */
0ac5b59e
DE
814 const char *dwo_name;
815
816 /* The DW_AT_comp_dir attribute. */
817 const char *comp_dir;
3019eac3 818
80626a55
DE
819 /* The bfd, when the file is open. Otherwise this is NULL.
820 This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd. */
821 bfd *dbfd;
3019eac3 822
73869dc2
DE
823 /* The sections that make up this DWO file.
824 Remember that for virtual DWO files in DWP V2, these are virtual
825 sections (for lack of a better name). */
3019eac3
DE
826 struct dwo_sections sections;
827
19c3d4c9
DE
828 /* The CU in the file.
829 We only support one because having more than one requires hacking the
830 dwo_name of each to match, which is highly unlikely to happen.
831 Doing this means all TUs can share comp_dir: We also assume that
832 DW_AT_comp_dir across all TUs in a DWO file will be identical. */
833 struct dwo_unit *cu;
3019eac3
DE
834
835 /* Table of TUs in the file.
836 Each element is a struct dwo_unit. */
837 htab_t tus;
838};
839
80626a55
DE
840/* These sections are what may appear in a DWP file. */
841
842struct dwp_sections
843{
73869dc2 844 /* These are used by both DWP version 1 and 2. */
80626a55
DE
845 struct dwarf2_section_info str;
846 struct dwarf2_section_info cu_index;
847 struct dwarf2_section_info tu_index;
73869dc2
DE
848
849 /* These are only used by DWP version 2 files.
850 In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
851 sections are referenced by section number, and are not recorded here.
852 In DWP version 2 there is at most one copy of all these sections, each
853 section being (effectively) comprised of the concatenation of all of the
854 individual sections that exist in the version 1 format.
855 To keep the code simple we treat each of these concatenated pieces as a
856 section itself (a virtual section?). */
857 struct dwarf2_section_info abbrev;
858 struct dwarf2_section_info info;
859 struct dwarf2_section_info line;
860 struct dwarf2_section_info loc;
861 struct dwarf2_section_info macinfo;
862 struct dwarf2_section_info macro;
863 struct dwarf2_section_info str_offsets;
864 struct dwarf2_section_info types;
80626a55
DE
865};
866
73869dc2
DE
867/* These sections are what may appear in a virtual DWO file in DWP version 1.
868 A virtual DWO file is a DWO file as it appears in a DWP file. */
80626a55 869
73869dc2 870struct virtual_v1_dwo_sections
80626a55
DE
871{
872 struct dwarf2_section_info abbrev;
873 struct dwarf2_section_info line;
874 struct dwarf2_section_info loc;
875 struct dwarf2_section_info macinfo;
876 struct dwarf2_section_info macro;
877 struct dwarf2_section_info str_offsets;
878 /* Each DWP hash table entry records one CU or one TU.
8a0459fd 879 That is recorded here, and copied to dwo_unit.section. */
80626a55
DE
880 struct dwarf2_section_info info_or_types;
881};
882
73869dc2
DE
883/* Similar to virtual_v1_dwo_sections, but for DWP version 2.
884 In version 2, the sections of the DWO files are concatenated together
885 and stored in one section of that name. Thus each ELF section contains
886 several "virtual" sections. */
887
888struct virtual_v2_dwo_sections
889{
890 bfd_size_type abbrev_offset;
891 bfd_size_type abbrev_size;
892
893 bfd_size_type line_offset;
894 bfd_size_type line_size;
895
896 bfd_size_type loc_offset;
897 bfd_size_type loc_size;
898
899 bfd_size_type macinfo_offset;
900 bfd_size_type macinfo_size;
901
902 bfd_size_type macro_offset;
903 bfd_size_type macro_size;
904
905 bfd_size_type str_offsets_offset;
906 bfd_size_type str_offsets_size;
907
908 /* Each DWP hash table entry records one CU or one TU.
909 That is recorded here, and copied to dwo_unit.section. */
910 bfd_size_type info_or_types_offset;
911 bfd_size_type info_or_types_size;
912};
913
80626a55
DE
914/* Contents of DWP hash tables. */
915
916struct dwp_hash_table
917{
73869dc2 918 uint32_t version, nr_columns;
80626a55 919 uint32_t nr_units, nr_slots;
73869dc2
DE
920 const gdb_byte *hash_table, *unit_table;
921 union
922 {
923 struct
924 {
925 const gdb_byte *indices;
926 } v1;
927 struct
928 {
929 /* This is indexed by column number and gives the id of the section
930 in that column. */
931#define MAX_NR_V2_DWO_SECTIONS \
932 (1 /* .debug_info or .debug_types */ \
933 + 1 /* .debug_abbrev */ \
934 + 1 /* .debug_line */ \
935 + 1 /* .debug_loc */ \
936 + 1 /* .debug_str_offsets */ \
937 + 1 /* .debug_macro or .debug_macinfo */)
938 int section_ids[MAX_NR_V2_DWO_SECTIONS];
939 const gdb_byte *offsets;
940 const gdb_byte *sizes;
941 } v2;
942 } section_pool;
80626a55
DE
943};
944
945/* Data for one DWP file. */
946
947struct dwp_file
948{
949 /* Name of the file. */
950 const char *name;
951
73869dc2
DE
952 /* File format version. */
953 int version;
954
93417882 955 /* The bfd. */
80626a55
DE
956 bfd *dbfd;
957
958 /* Section info for this file. */
959 struct dwp_sections sections;
960
57d63ce2 961 /* Table of CUs in the file. */
80626a55
DE
962 const struct dwp_hash_table *cus;
963
964 /* Table of TUs in the file. */
965 const struct dwp_hash_table *tus;
966
19ac8c2e
DE
967 /* Tables of loaded CUs/TUs. Each entry is a struct dwo_unit *. */
968 htab_t loaded_cus;
969 htab_t loaded_tus;
80626a55 970
73869dc2
DE
971 /* Table to map ELF section numbers to their sections.
972 This is only needed for the DWP V1 file format. */
80626a55
DE
973 unsigned int num_sections;
974 asection **elf_sections;
975};
976
36586728
TT
977/* This represents a '.dwz' file. */
978
979struct dwz_file
980{
981 /* A dwz file can only contain a few sections. */
982 struct dwarf2_section_info abbrev;
983 struct dwarf2_section_info info;
984 struct dwarf2_section_info str;
985 struct dwarf2_section_info line;
986 struct dwarf2_section_info macro;
2ec9a5e0 987 struct dwarf2_section_info gdb_index;
36586728
TT
988
989 /* The dwz's BFD. */
990 bfd *dwz_bfd;
991};
992
0963b4bd
MS
993/* Struct used to pass misc. parameters to read_die_and_children, et
994 al. which are used for both .debug_info and .debug_types dies.
995 All parameters here are unchanging for the life of the call. This
dee91e82 996 struct exists to abstract away the constant parameters of die reading. */
93311388
DE
997
998struct die_reader_specs
999{
a32a8923 1000 /* The bfd of die_section. */
93311388
DE
1001 bfd* abfd;
1002
1003 /* The CU of the DIE we are parsing. */
1004 struct dwarf2_cu *cu;
1005
80626a55 1006 /* Non-NULL if reading a DWO file (including one packaged into a DWP). */
3019eac3
DE
1007 struct dwo_file *dwo_file;
1008
dee91e82 1009 /* The section the die comes from.
3019eac3 1010 This is either .debug_info or .debug_types, or the .dwo variants. */
dee91e82
DE
1011 struct dwarf2_section_info *die_section;
1012
1013 /* die_section->buffer. */
d521ce57 1014 const gdb_byte *buffer;
f664829e
DE
1015
1016 /* The end of the buffer. */
1017 const gdb_byte *buffer_end;
a2ce51a0
DE
1018
1019 /* The value of the DW_AT_comp_dir attribute. */
1020 const char *comp_dir;
93311388
DE
1021};
1022
fd820528 1023/* Type of function passed to init_cutu_and_read_dies, et.al. */
dee91e82 1024typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
d521ce57 1025 const gdb_byte *info_ptr,
dee91e82
DE
1026 struct die_info *comp_unit_die,
1027 int has_children,
1028 void *data);
1029
52059ffd
TT
1030struct file_entry
1031{
1032 const char *name;
1033 unsigned int dir_index;
1034 unsigned int mod_time;
1035 unsigned int length;
83769d0b
DE
1036 /* Non-zero if referenced by the Line Number Program. */
1037 int included_p;
1038 /* The associated symbol table, if any. */
1039 struct symtab *symtab;
52059ffd
TT
1040};
1041
debd256d
JB
1042/* The line number information for a compilation unit (found in the
1043 .debug_line section) begins with a "statement program header",
1044 which contains the following information. */
1045struct line_header
1046{
527f3840
JK
1047 /* Offset of line number information in .debug_line section. */
1048 sect_offset offset;
1049
1050 /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile. */
1051 unsigned offset_in_dwz : 1;
1052
debd256d
JB
1053 unsigned int total_length;
1054 unsigned short version;
1055 unsigned int header_length;
1056 unsigned char minimum_instruction_length;
2dc7f7b3 1057 unsigned char maximum_ops_per_instruction;
debd256d
JB
1058 unsigned char default_is_stmt;
1059 int line_base;
1060 unsigned char line_range;
1061 unsigned char opcode_base;
1062
1063 /* standard_opcode_lengths[i] is the number of operands for the
1064 standard opcode whose value is i. This means that
1065 standard_opcode_lengths[0] is unused, and the last meaningful
1066 element is standard_opcode_lengths[opcode_base - 1]. */
1067 unsigned char *standard_opcode_lengths;
1068
1069 /* The include_directories table. NOTE! These strings are not
1070 allocated with xmalloc; instead, they are pointers into
1071 debug_line_buffer. If you try to free them, `free' will get
1072 indigestion. */
1073 unsigned int num_include_dirs, include_dirs_size;
d521ce57 1074 const char **include_dirs;
debd256d
JB
1075
1076 /* The file_names table. NOTE! These strings are not allocated
1077 with xmalloc; instead, they are pointers into debug_line_buffer.
1078 Don't try to free them directly. */
1079 unsigned int num_file_names, file_names_size;
52059ffd 1080 struct file_entry *file_names;
debd256d
JB
1081
1082 /* The start and end of the statement program following this
6502dd73 1083 header. These point into dwarf2_per_objfile->line_buffer. */
d521ce57 1084 const gdb_byte *statement_program_start, *statement_program_end;
debd256d 1085};
c906108c
SS
1086
1087/* When we construct a partial symbol table entry we only
0963b4bd 1088 need this much information. */
c906108c
SS
1089struct partial_die_info
1090 {
72bf9492 1091 /* Offset of this DIE. */
b64f50a1 1092 sect_offset offset;
72bf9492
DJ
1093
1094 /* DWARF-2 tag for this DIE. */
1095 ENUM_BITFIELD(dwarf_tag) tag : 16;
1096
72bf9492
DJ
1097 /* Assorted flags describing the data found in this DIE. */
1098 unsigned int has_children : 1;
1099 unsigned int is_external : 1;
1100 unsigned int is_declaration : 1;
1101 unsigned int has_type : 1;
1102 unsigned int has_specification : 1;
1103 unsigned int has_pc_info : 1;
481860b3 1104 unsigned int may_be_inlined : 1;
72bf9492
DJ
1105
1106 /* Flag set if the SCOPE field of this structure has been
1107 computed. */
1108 unsigned int scope_set : 1;
1109
fa4028e9
JB
1110 /* Flag set if the DIE has a byte_size attribute. */
1111 unsigned int has_byte_size : 1;
1112
ff908ebf
AW
1113 /* Flag set if the DIE has a DW_AT_const_value attribute. */
1114 unsigned int has_const_value : 1;
1115
98bfdba5
PA
1116 /* Flag set if any of the DIE's children are template arguments. */
1117 unsigned int has_template_arguments : 1;
1118
abc72ce4
DE
1119 /* Flag set if fixup_partial_die has been called on this die. */
1120 unsigned int fixup_called : 1;
1121
36586728
TT
1122 /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt. */
1123 unsigned int is_dwz : 1;
1124
1125 /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt. */
1126 unsigned int spec_is_dwz : 1;
1127
72bf9492 1128 /* The name of this DIE. Normally the value of DW_AT_name, but
94af9270 1129 sometimes a default name for unnamed DIEs. */
15d034d0 1130 const char *name;
72bf9492 1131
abc72ce4
DE
1132 /* The linkage name, if present. */
1133 const char *linkage_name;
1134
72bf9492
DJ
1135 /* The scope to prepend to our children. This is generally
1136 allocated on the comp_unit_obstack, so will disappear
1137 when this compilation unit leaves the cache. */
15d034d0 1138 const char *scope;
72bf9492 1139
95554aad
TT
1140 /* Some data associated with the partial DIE. The tag determines
1141 which field is live. */
1142 union
1143 {
1144 /* The location description associated with this DIE, if any. */
1145 struct dwarf_block *locdesc;
1146 /* The offset of an import, for DW_TAG_imported_unit. */
1147 sect_offset offset;
1148 } d;
72bf9492
DJ
1149
1150 /* If HAS_PC_INFO, the PC range associated with this DIE. */
c906108c
SS
1151 CORE_ADDR lowpc;
1152 CORE_ADDR highpc;
72bf9492 1153
93311388 1154 /* Pointer into the info_buffer (or types_buffer) pointing at the target of
72bf9492 1155 DW_AT_sibling, if any. */
abc72ce4
DE
1156 /* NOTE: This member isn't strictly necessary, read_partial_die could
1157 return DW_AT_sibling values to its caller load_partial_dies. */
d521ce57 1158 const gdb_byte *sibling;
72bf9492
DJ
1159
1160 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1161 DW_AT_specification (or DW_AT_abstract_origin or
1162 DW_AT_extension). */
b64f50a1 1163 sect_offset spec_offset;
72bf9492
DJ
1164
1165 /* Pointers to this DIE's parent, first child, and next sibling,
1166 if any. */
1167 struct partial_die_info *die_parent, *die_child, *die_sibling;
c906108c
SS
1168 };
1169
0963b4bd 1170/* This data structure holds the information of an abbrev. */
c906108c
SS
1171struct abbrev_info
1172 {
1173 unsigned int number; /* number identifying abbrev */
1174 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
1175 unsigned short has_children; /* boolean */
1176 unsigned short num_attrs; /* number of attributes */
c906108c
SS
1177 struct attr_abbrev *attrs; /* an array of attribute descriptions */
1178 struct abbrev_info *next; /* next in chain */
1179 };
1180
1181struct attr_abbrev
1182 {
9d25dd43
DE
1183 ENUM_BITFIELD(dwarf_attribute) name : 16;
1184 ENUM_BITFIELD(dwarf_form) form : 16;
c906108c
SS
1185 };
1186
433df2d4
DE
1187/* Size of abbrev_table.abbrev_hash_table. */
1188#define ABBREV_HASH_SIZE 121
1189
1190/* Top level data structure to contain an abbreviation table. */
1191
1192struct abbrev_table
1193{
f4dc4d17
DE
1194 /* Where the abbrev table came from.
1195 This is used as a sanity check when the table is used. */
433df2d4
DE
1196 sect_offset offset;
1197
1198 /* Storage for the abbrev table. */
1199 struct obstack abbrev_obstack;
1200
1201 /* Hash table of abbrevs.
1202 This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1203 It could be statically allocated, but the previous code didn't so we
1204 don't either. */
1205 struct abbrev_info **abbrevs;
1206};
1207
0963b4bd 1208/* Attributes have a name and a value. */
b60c80d6
DJ
1209struct attribute
1210 {
9d25dd43 1211 ENUM_BITFIELD(dwarf_attribute) name : 16;
8285870a
JK
1212 ENUM_BITFIELD(dwarf_form) form : 15;
1213
1214 /* Has DW_STRING already been updated by dwarf2_canonicalize_name? This
1215 field should be in u.str (existing only for DW_STRING) but it is kept
1216 here for better struct attribute alignment. */
1217 unsigned int string_is_canonical : 1;
1218
b60c80d6
DJ
1219 union
1220 {
15d034d0 1221 const char *str;
b60c80d6 1222 struct dwarf_block *blk;
43bbcdc2
PH
1223 ULONGEST unsnd;
1224 LONGEST snd;
b60c80d6 1225 CORE_ADDR addr;
ac9ec31b 1226 ULONGEST signature;
b60c80d6
DJ
1227 }
1228 u;
1229 };
1230
0963b4bd 1231/* This data structure holds a complete die structure. */
c906108c
SS
1232struct die_info
1233 {
76815b17
DE
1234 /* DWARF-2 tag for this DIE. */
1235 ENUM_BITFIELD(dwarf_tag) tag : 16;
1236
1237 /* Number of attributes */
98bfdba5
PA
1238 unsigned char num_attrs;
1239
1240 /* True if we're presently building the full type name for the
1241 type derived from this DIE. */
1242 unsigned char building_fullname : 1;
76815b17 1243
adde2bff
DE
1244 /* True if this die is in process. PR 16581. */
1245 unsigned char in_process : 1;
1246
76815b17
DE
1247 /* Abbrev number */
1248 unsigned int abbrev;
1249
93311388 1250 /* Offset in .debug_info or .debug_types section. */
b64f50a1 1251 sect_offset offset;
78ba4af6
JB
1252
1253 /* The dies in a compilation unit form an n-ary tree. PARENT
1254 points to this die's parent; CHILD points to the first child of
1255 this node; and all the children of a given node are chained
4950bc1c 1256 together via their SIBLING fields. */
639d11d3
DC
1257 struct die_info *child; /* Its first child, if any. */
1258 struct die_info *sibling; /* Its next sibling, if any. */
1259 struct die_info *parent; /* Its parent, if any. */
c906108c 1260
b60c80d6
DJ
1261 /* An array of attributes, with NUM_ATTRS elements. There may be
1262 zero, but it's not common and zero-sized arrays are not
1263 sufficiently portable C. */
1264 struct attribute attrs[1];
c906108c
SS
1265 };
1266
0963b4bd 1267/* Get at parts of an attribute structure. */
c906108c
SS
1268
1269#define DW_STRING(attr) ((attr)->u.str)
8285870a 1270#define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
c906108c
SS
1271#define DW_UNSND(attr) ((attr)->u.unsnd)
1272#define DW_BLOCK(attr) ((attr)->u.blk)
1273#define DW_SND(attr) ((attr)->u.snd)
1274#define DW_ADDR(attr) ((attr)->u.addr)
ac9ec31b 1275#define DW_SIGNATURE(attr) ((attr)->u.signature)
c906108c 1276
0963b4bd 1277/* Blocks are a bunch of untyped bytes. */
c906108c
SS
1278struct dwarf_block
1279 {
56eb65bd 1280 size_t size;
1d6edc3c
JK
1281
1282 /* Valid only if SIZE is not zero. */
d521ce57 1283 const gdb_byte *data;
c906108c
SS
1284 };
1285
c906108c
SS
1286#ifndef ATTR_ALLOC_CHUNK
1287#define ATTR_ALLOC_CHUNK 4
1288#endif
1289
c906108c
SS
1290/* Allocate fields for structs, unions and enums in this size. */
1291#ifndef DW_FIELD_ALLOC_CHUNK
1292#define DW_FIELD_ALLOC_CHUNK 4
1293#endif
1294
c906108c
SS
1295/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1296 but this would require a corresponding change in unpack_field_as_long
1297 and friends. */
1298static int bits_per_byte = 8;
1299
52059ffd
TT
1300struct nextfield
1301{
1302 struct nextfield *next;
1303 int accessibility;
1304 int virtuality;
1305 struct field field;
1306};
1307
1308struct nextfnfield
1309{
1310 struct nextfnfield *next;
1311 struct fn_field fnfield;
1312};
1313
1314struct fnfieldlist
1315{
1316 const char *name;
1317 int length;
1318 struct nextfnfield *head;
1319};
1320
1321struct typedef_field_list
1322{
1323 struct typedef_field field;
1324 struct typedef_field_list *next;
1325};
1326
c906108c
SS
1327/* The routines that read and process dies for a C struct or C++ class
1328 pass lists of data member fields and lists of member function fields
1329 in an instance of a field_info structure, as defined below. */
1330struct field_info
c5aa993b 1331 {
0963b4bd 1332 /* List of data member and baseclasses fields. */
52059ffd 1333 struct nextfield *fields, *baseclasses;
c906108c 1334
7d0ccb61 1335 /* Number of fields (including baseclasses). */
c5aa993b 1336 int nfields;
c906108c 1337
c5aa993b
JM
1338 /* Number of baseclasses. */
1339 int nbaseclasses;
c906108c 1340
c5aa993b
JM
1341 /* Set if the accesibility of one of the fields is not public. */
1342 int non_public_fields;
c906108c 1343
c5aa993b
JM
1344 /* Member function fields array, entries are allocated in the order they
1345 are encountered in the object file. */
52059ffd 1346 struct nextfnfield *fnfields;
c906108c 1347
c5aa993b
JM
1348 /* Member function fieldlist array, contains name of possibly overloaded
1349 member function, number of overloaded member functions and a pointer
1350 to the head of the member function field chain. */
52059ffd 1351 struct fnfieldlist *fnfieldlists;
c906108c 1352
c5aa993b
JM
1353 /* Number of entries in the fnfieldlists array. */
1354 int nfnfields;
98751a41
JK
1355
1356 /* typedefs defined inside this class. TYPEDEF_FIELD_LIST contains head of
1357 a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements. */
52059ffd 1358 struct typedef_field_list *typedef_field_list;
98751a41 1359 unsigned typedef_field_list_count;
c5aa993b 1360 };
c906108c 1361
10b3939b
DJ
1362/* One item on the queue of compilation units to read in full symbols
1363 for. */
1364struct dwarf2_queue_item
1365{
1366 struct dwarf2_per_cu_data *per_cu;
95554aad 1367 enum language pretend_language;
10b3939b
DJ
1368 struct dwarf2_queue_item *next;
1369};
1370
1371/* The current queue. */
1372static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1373
ae038cb0
DJ
1374/* Loaded secondary compilation units are kept in memory until they
1375 have not been referenced for the processing of this many
1376 compilation units. Set this to zero to disable caching. Cache
1377 sizes of up to at least twenty will improve startup time for
1378 typical inter-CU-reference binaries, at an obvious memory cost. */
b4f54984 1379static int dwarf_max_cache_age = 5;
920d2a44 1380static void
b4f54984
DE
1381show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1382 struct cmd_list_element *c, const char *value)
920d2a44 1383{
3e43a32a 1384 fprintf_filtered (file, _("The upper bound on the age of cached "
b4f54984 1385 "DWARF compilation units is %s.\n"),
920d2a44
AC
1386 value);
1387}
4390d890 1388\f
c906108c
SS
1389/* local function prototypes */
1390
a32a8923
DE
1391static const char *get_section_name (const struct dwarf2_section_info *);
1392
1393static const char *get_section_file_name (const struct dwarf2_section_info *);
1394
4efb68b1 1395static void dwarf2_locate_sections (bfd *, asection *, void *);
c906108c 1396
918dd910
JK
1397static void dwarf2_find_base_address (struct die_info *die,
1398 struct dwarf2_cu *cu);
1399
0018ea6f
DE
1400static struct partial_symtab *create_partial_symtab
1401 (struct dwarf2_per_cu_data *per_cu, const char *name);
1402
c67a9c90 1403static void dwarf2_build_psymtabs_hard (struct objfile *);
c906108c 1404
72bf9492
DJ
1405static void scan_partial_symbols (struct partial_die_info *,
1406 CORE_ADDR *, CORE_ADDR *,
5734ee8b 1407 int, struct dwarf2_cu *);
c906108c 1408
72bf9492
DJ
1409static void add_partial_symbol (struct partial_die_info *,
1410 struct dwarf2_cu *);
63d06c5c 1411
72bf9492
DJ
1412static void add_partial_namespace (struct partial_die_info *pdi,
1413 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 1414 int set_addrmap, struct dwarf2_cu *cu);
63d06c5c 1415
5d7cb8df 1416static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 1417 CORE_ADDR *highpc, int set_addrmap,
5d7cb8df
JK
1418 struct dwarf2_cu *cu);
1419
72bf9492
DJ
1420static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1421 struct dwarf2_cu *cu);
91c24f0a 1422
bc30ff58
JB
1423static void add_partial_subprogram (struct partial_die_info *pdi,
1424 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 1425 int need_pc, struct dwarf2_cu *cu);
bc30ff58 1426
257e7a09
YQ
1427static void dwarf2_read_symtab (struct partial_symtab *,
1428 struct objfile *);
c906108c 1429
a14ed312 1430static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 1431
433df2d4
DE
1432static struct abbrev_info *abbrev_table_lookup_abbrev
1433 (const struct abbrev_table *, unsigned int);
1434
1435static struct abbrev_table *abbrev_table_read_table
1436 (struct dwarf2_section_info *, sect_offset);
1437
1438static void abbrev_table_free (struct abbrev_table *);
1439
f4dc4d17
DE
1440static void abbrev_table_free_cleanup (void *);
1441
dee91e82
DE
1442static void dwarf2_read_abbrevs (struct dwarf2_cu *,
1443 struct dwarf2_section_info *);
c906108c 1444
f3dd6933 1445static void dwarf2_free_abbrev_table (void *);
c906108c 1446
d521ce57 1447static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
6caca83c 1448
dee91e82 1449static struct partial_die_info *load_partial_dies
d521ce57 1450 (const struct die_reader_specs *, const gdb_byte *, int);
72bf9492 1451
d521ce57
TT
1452static const gdb_byte *read_partial_die (const struct die_reader_specs *,
1453 struct partial_die_info *,
1454 struct abbrev_info *,
1455 unsigned int,
1456 const gdb_byte *);
c906108c 1457
36586728 1458static struct partial_die_info *find_partial_die (sect_offset, int,
10b3939b 1459 struct dwarf2_cu *);
72bf9492
DJ
1460
1461static void fixup_partial_die (struct partial_die_info *,
1462 struct dwarf2_cu *);
1463
d521ce57
TT
1464static const gdb_byte *read_attribute (const struct die_reader_specs *,
1465 struct attribute *, struct attr_abbrev *,
1466 const gdb_byte *);
a8329558 1467
a1855c1d 1468static unsigned int read_1_byte (bfd *, const gdb_byte *);
c906108c 1469
a1855c1d 1470static int read_1_signed_byte (bfd *, const gdb_byte *);
c906108c 1471
a1855c1d 1472static unsigned int read_2_bytes (bfd *, const gdb_byte *);
c906108c 1473
a1855c1d 1474static unsigned int read_4_bytes (bfd *, const gdb_byte *);
c906108c 1475
a1855c1d 1476static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
c906108c 1477
d521ce57 1478static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 1479 unsigned int *);
c906108c 1480
d521ce57 1481static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
c764a876
DE
1482
1483static LONGEST read_checked_initial_length_and_offset
d521ce57 1484 (bfd *, const gdb_byte *, const struct comp_unit_head *,
c764a876 1485 unsigned int *, unsigned int *);
613e1657 1486
d521ce57
TT
1487static LONGEST read_offset (bfd *, const gdb_byte *,
1488 const struct comp_unit_head *,
c764a876
DE
1489 unsigned int *);
1490
d521ce57 1491static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
613e1657 1492
f4dc4d17
DE
1493static sect_offset read_abbrev_offset (struct dwarf2_section_info *,
1494 sect_offset);
1495
d521ce57 1496static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
c906108c 1497
d521ce57 1498static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
c906108c 1499
d521ce57
TT
1500static const char *read_indirect_string (bfd *, const gdb_byte *,
1501 const struct comp_unit_head *,
1502 unsigned int *);
4bdf3d34 1503
d521ce57 1504static const char *read_indirect_string_from_dwz (struct dwz_file *, LONGEST);
36586728 1505
d521ce57 1506static ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1507
d521ce57 1508static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
c906108c 1509
d521ce57
TT
1510static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1511 const gdb_byte *,
3019eac3
DE
1512 unsigned int *);
1513
d521ce57 1514static const char *read_str_index (const struct die_reader_specs *reader,
342587c4 1515 ULONGEST str_index);
3019eac3 1516
e142c38c 1517static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 1518
e142c38c
DJ
1519static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1520 struct dwarf2_cu *);
c906108c 1521
348e048f 1522static struct attribute *dwarf2_attr_no_follow (struct die_info *,
45e58e77 1523 unsigned int);
348e048f 1524
05cf31d1
JB
1525static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1526 struct dwarf2_cu *cu);
1527
e142c38c 1528static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 1529
e142c38c 1530static struct die_info *die_specification (struct die_info *die,
f2f0e013 1531 struct dwarf2_cu **);
63d06c5c 1532
debd256d
JB
1533static void free_line_header (struct line_header *lh);
1534
3019eac3
DE
1535static struct line_header *dwarf_decode_line_header (unsigned int offset,
1536 struct dwarf2_cu *cu);
debd256d 1537
f3f5162e 1538static void dwarf_decode_lines (struct line_header *, const char *,
c3b7b696 1539 struct dwarf2_cu *, struct partial_symtab *,
527f3840 1540 CORE_ADDR, int decode_mapping);
c906108c 1541
4d663531 1542static void dwarf2_start_subfile (const char *, const char *);
c906108c 1543
43f3e411
DE
1544static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1545 const char *, const char *,
1546 CORE_ADDR);
f4dc4d17 1547
a14ed312 1548static struct symbol *new_symbol (struct die_info *, struct type *,
e7c27a73 1549 struct dwarf2_cu *);
c906108c 1550
34eaf542
TT
1551static struct symbol *new_symbol_full (struct die_info *, struct type *,
1552 struct dwarf2_cu *, struct symbol *);
1553
ff39bb5e 1554static void dwarf2_const_value (const struct attribute *, struct symbol *,
e7c27a73 1555 struct dwarf2_cu *);
c906108c 1556
ff39bb5e 1557static void dwarf2_const_value_attr (const struct attribute *attr,
98bfdba5
PA
1558 struct type *type,
1559 const char *name,
1560 struct obstack *obstack,
12df843f 1561 struct dwarf2_cu *cu, LONGEST *value,
d521ce57 1562 const gdb_byte **bytes,
98bfdba5 1563 struct dwarf2_locexpr_baton **baton);
2df3850c 1564
e7c27a73 1565static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 1566
b4ba55a1
JB
1567static int need_gnat_info (struct dwarf2_cu *);
1568
3e43a32a
MS
1569static struct type *die_descriptive_type (struct die_info *,
1570 struct dwarf2_cu *);
b4ba55a1
JB
1571
1572static void set_descriptive_type (struct type *, struct die_info *,
1573 struct dwarf2_cu *);
1574
e7c27a73
DJ
1575static struct type *die_containing_type (struct die_info *,
1576 struct dwarf2_cu *);
c906108c 1577
ff39bb5e 1578static struct type *lookup_die_type (struct die_info *, const struct attribute *,
673bfd45 1579 struct dwarf2_cu *);
c906108c 1580
f792889a 1581static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 1582
673bfd45
DE
1583static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1584
0d5cff50 1585static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 1586
6e70227d 1587static char *typename_concat (struct obstack *obs, const char *prefix,
f55ee35c
JK
1588 const char *suffix, int physname,
1589 struct dwarf2_cu *cu);
63d06c5c 1590
e7c27a73 1591static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1592
348e048f
DE
1593static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1594
e7c27a73 1595static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1596
e7c27a73 1597static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1598
96408a79
SA
1599static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1600
ff013f42
JK
1601static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1602 struct dwarf2_cu *, struct partial_symtab *);
1603
a14ed312 1604static int dwarf2_get_pc_bounds (struct die_info *,
d85a05f0
DJ
1605 CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *,
1606 struct partial_symtab *);
c906108c 1607
fae299cd
DC
1608static void get_scope_pc_bounds (struct die_info *,
1609 CORE_ADDR *, CORE_ADDR *,
1610 struct dwarf2_cu *);
1611
801e3a5b
JB
1612static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1613 CORE_ADDR, struct dwarf2_cu *);
1614
a14ed312 1615static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 1616 struct dwarf2_cu *);
c906108c 1617
a14ed312 1618static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 1619 struct type *, struct dwarf2_cu *);
c906108c 1620
a14ed312 1621static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 1622 struct die_info *, struct type *,
e7c27a73 1623 struct dwarf2_cu *);
c906108c 1624
a14ed312 1625static void dwarf2_attach_fn_fields_to_type (struct field_info *,
3e43a32a
MS
1626 struct type *,
1627 struct dwarf2_cu *);
c906108c 1628
134d01f1 1629static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1630
e7c27a73 1631static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 1632
e7c27a73 1633static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 1634
5d7cb8df
JK
1635static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1636
27aa8d6a
SW
1637static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1638
74921315
KS
1639static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1640
f55ee35c
JK
1641static struct type *read_module_type (struct die_info *die,
1642 struct dwarf2_cu *cu);
1643
38d518c9 1644static const char *namespace_name (struct die_info *die,
e142c38c 1645 int *is_anonymous, struct dwarf2_cu *);
38d518c9 1646
134d01f1 1647static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 1648
e7c27a73 1649static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 1650
6e70227d 1651static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
7ca2d3a3
DL
1652 struct dwarf2_cu *);
1653
bf6af496 1654static struct die_info *read_die_and_siblings_1
d521ce57 1655 (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
bf6af496 1656 struct die_info *);
639d11d3 1657
dee91e82 1658static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
d521ce57
TT
1659 const gdb_byte *info_ptr,
1660 const gdb_byte **new_info_ptr,
639d11d3
DC
1661 struct die_info *parent);
1662
d521ce57
TT
1663static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1664 struct die_info **, const gdb_byte *,
1665 int *, int);
3019eac3 1666
d521ce57
TT
1667static const gdb_byte *read_full_die (const struct die_reader_specs *,
1668 struct die_info **, const gdb_byte *,
1669 int *);
93311388 1670
e7c27a73 1671static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 1672
15d034d0
TT
1673static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1674 struct obstack *);
71c25dea 1675
15d034d0 1676static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 1677
15d034d0 1678static const char *dwarf2_full_name (const char *name,
98bfdba5
PA
1679 struct die_info *die,
1680 struct dwarf2_cu *cu);
1681
ca69b9e6
DE
1682static const char *dwarf2_physname (const char *name, struct die_info *die,
1683 struct dwarf2_cu *cu);
1684
e142c38c 1685static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 1686 struct dwarf2_cu **);
9219021c 1687
f39c6ffd 1688static const char *dwarf_tag_name (unsigned int);
c906108c 1689
f39c6ffd 1690static const char *dwarf_attr_name (unsigned int);
c906108c 1691
f39c6ffd 1692static const char *dwarf_form_name (unsigned int);
c906108c 1693
a14ed312 1694static char *dwarf_bool_name (unsigned int);
c906108c 1695
f39c6ffd 1696static const char *dwarf_type_encoding_name (unsigned int);
c906108c 1697
f9aca02d 1698static struct die_info *sibling_die (struct die_info *);
c906108c 1699
d97bc12b
DE
1700static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1701
1702static void dump_die_for_error (struct die_info *);
1703
1704static void dump_die_1 (struct ui_file *, int level, int max_level,
1705 struct die_info *);
c906108c 1706
d97bc12b 1707/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1708
51545339 1709static void store_in_ref_table (struct die_info *,
10b3939b 1710 struct dwarf2_cu *);
c906108c 1711
ff39bb5e 1712static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
c906108c 1713
ff39bb5e 1714static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
a02abb62 1715
348e048f 1716static struct die_info *follow_die_ref_or_sig (struct die_info *,
ff39bb5e 1717 const struct attribute *,
348e048f
DE
1718 struct dwarf2_cu **);
1719
10b3939b 1720static struct die_info *follow_die_ref (struct die_info *,
ff39bb5e 1721 const struct attribute *,
f2f0e013 1722 struct dwarf2_cu **);
c906108c 1723
348e048f 1724static struct die_info *follow_die_sig (struct die_info *,
ff39bb5e 1725 const struct attribute *,
348e048f
DE
1726 struct dwarf2_cu **);
1727
ac9ec31b
DE
1728static struct type *get_signatured_type (struct die_info *, ULONGEST,
1729 struct dwarf2_cu *);
1730
1731static struct type *get_DW_AT_signature_type (struct die_info *,
ff39bb5e 1732 const struct attribute *,
ac9ec31b
DE
1733 struct dwarf2_cu *);
1734
e5fe5e75 1735static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
348e048f 1736
52dc124a 1737static void read_signatured_type (struct signatured_type *);
348e048f 1738
c906108c
SS
1739/* memory allocation interface */
1740
7b5a2f43 1741static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1742
b60c80d6 1743static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1744
43f3e411 1745static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
2e276125 1746
6e5a29e1 1747static int attr_form_is_block (const struct attribute *);
8e19ed76 1748
6e5a29e1 1749static int attr_form_is_section_offset (const struct attribute *);
3690dd37 1750
6e5a29e1 1751static int attr_form_is_constant (const struct attribute *);
3690dd37 1752
6e5a29e1 1753static int attr_form_is_ref (const struct attribute *);
7771576e 1754
8cf6f0b1
TT
1755static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1756 struct dwarf2_loclist_baton *baton,
ff39bb5e 1757 const struct attribute *attr);
8cf6f0b1 1758
ff39bb5e 1759static void dwarf2_symbol_mark_computed (const struct attribute *attr,
93e7bd98 1760 struct symbol *sym,
f1e6e072
TT
1761 struct dwarf2_cu *cu,
1762 int is_block);
4c2df51b 1763
d521ce57
TT
1764static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1765 const gdb_byte *info_ptr,
1766 struct abbrev_info *abbrev);
4bb7a0a7 1767
72bf9492
DJ
1768static void free_stack_comp_unit (void *);
1769
72bf9492
DJ
1770static hashval_t partial_die_hash (const void *item);
1771
1772static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1773
ae038cb0 1774static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
36586728 1775 (sect_offset offset, unsigned int offset_in_dwz, struct objfile *objfile);
ae038cb0 1776
9816fde3 1777static void init_one_comp_unit (struct dwarf2_cu *cu,
23745b47 1778 struct dwarf2_per_cu_data *per_cu);
9816fde3
JK
1779
1780static void prepare_one_comp_unit (struct dwarf2_cu *cu,
95554aad
TT
1781 struct die_info *comp_unit_die,
1782 enum language pretend_language);
93311388 1783
68dc6402 1784static void free_heap_comp_unit (void *);
ae038cb0
DJ
1785
1786static void free_cached_comp_units (void *);
1787
1788static void age_cached_comp_units (void);
1789
dee91e82 1790static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
ae038cb0 1791
f792889a
DJ
1792static struct type *set_die_type (struct die_info *, struct type *,
1793 struct dwarf2_cu *);
1c379e20 1794
ae038cb0
DJ
1795static void create_all_comp_units (struct objfile *);
1796
0e50663e 1797static int create_all_type_units (struct objfile *);
1fd400ff 1798
95554aad
TT
1799static void load_full_comp_unit (struct dwarf2_per_cu_data *,
1800 enum language);
10b3939b 1801
95554aad
TT
1802static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1803 enum language);
10b3939b 1804
f4dc4d17
DE
1805static void process_full_type_unit (struct dwarf2_per_cu_data *,
1806 enum language);
1807
10b3939b
DJ
1808static void dwarf2_add_dependence (struct dwarf2_cu *,
1809 struct dwarf2_per_cu_data *);
1810
ae038cb0
DJ
1811static void dwarf2_mark (struct dwarf2_cu *);
1812
1813static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1814
b64f50a1 1815static struct type *get_die_type_at_offset (sect_offset,
ac9ec31b 1816 struct dwarf2_per_cu_data *);
673bfd45 1817
f792889a 1818static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1819
9291a0cd
TT
1820static void dwarf2_release_queue (void *dummy);
1821
95554aad
TT
1822static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1823 enum language pretend_language);
1824
a0f42c21 1825static void process_queue (void);
9291a0cd
TT
1826
1827static void find_file_and_directory (struct die_info *die,
1828 struct dwarf2_cu *cu,
15d034d0 1829 const char **name, const char **comp_dir);
9291a0cd
TT
1830
1831static char *file_full_name (int file, struct line_header *lh,
1832 const char *comp_dir);
1833
d521ce57 1834static const gdb_byte *read_and_check_comp_unit_head
36586728
TT
1835 (struct comp_unit_head *header,
1836 struct dwarf2_section_info *section,
d521ce57 1837 struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
36586728
TT
1838 int is_debug_types_section);
1839
fd820528 1840static void init_cutu_and_read_dies
f4dc4d17
DE
1841 (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1842 int use_existing_cu, int keep,
3019eac3
DE
1843 die_reader_func_ftype *die_reader_func, void *data);
1844
dee91e82
DE
1845static void init_cutu_and_read_dies_simple
1846 (struct dwarf2_per_cu_data *this_cu,
1847 die_reader_func_ftype *die_reader_func, void *data);
9291a0cd 1848
673bfd45 1849static htab_t allocate_signatured_type_table (struct objfile *objfile);
1fd400ff 1850
3019eac3
DE
1851static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1852
57d63ce2
DE
1853static struct dwo_unit *lookup_dwo_unit_in_dwp
1854 (struct dwp_file *dwp_file, const char *comp_dir,
1855 ULONGEST signature, int is_debug_types);
a2ce51a0
DE
1856
1857static struct dwp_file *get_dwp_file (void);
1858
3019eac3 1859static struct dwo_unit *lookup_dwo_comp_unit
a1855c1d 1860 (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
3019eac3
DE
1861
1862static struct dwo_unit *lookup_dwo_type_unit
a1855c1d 1863 (struct signatured_type *, const char *, const char *);
3019eac3 1864
89e63ee4
DE
1865static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1866
3019eac3
DE
1867static void free_dwo_file_cleanup (void *);
1868
95554aad
TT
1869static void process_cu_includes (void);
1870
1b80a9fa 1871static void check_producer (struct dwarf2_cu *cu);
527f3840
JK
1872
1873static void free_line_header_voidp (void *arg);
4390d890
DE
1874\f
1875/* Various complaints about symbol reading that don't abort the process. */
1876
1877static void
1878dwarf2_statement_list_fits_in_line_number_section_complaint (void)
1879{
1880 complaint (&symfile_complaints,
1881 _("statement list doesn't fit in .debug_line section"));
1882}
1883
1884static void
1885dwarf2_debug_line_missing_file_complaint (void)
1886{
1887 complaint (&symfile_complaints,
1888 _(".debug_line section has line data without a file"));
1889}
1890
1891static void
1892dwarf2_debug_line_missing_end_sequence_complaint (void)
1893{
1894 complaint (&symfile_complaints,
1895 _(".debug_line section has line "
1896 "program sequence without an end"));
1897}
1898
1899static void
1900dwarf2_complex_location_expr_complaint (void)
1901{
1902 complaint (&symfile_complaints, _("location expression too complex"));
1903}
1904
1905static void
1906dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
1907 int arg3)
1908{
1909 complaint (&symfile_complaints,
1910 _("const value length mismatch for '%s', got %d, expected %d"),
1911 arg1, arg2, arg3);
1912}
1913
1914static void
1915dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
1916{
1917 complaint (&symfile_complaints,
1918 _("debug info runs off end of %s section"
1919 " [in module %s]"),
a32a8923
DE
1920 get_section_name (section),
1921 get_section_file_name (section));
4390d890 1922}
1b80a9fa 1923
4390d890
DE
1924static void
1925dwarf2_macro_malformed_definition_complaint (const char *arg1)
1926{
1927 complaint (&symfile_complaints,
1928 _("macro debug info contains a "
1929 "malformed macro definition:\n`%s'"),
1930 arg1);
1931}
1932
1933static void
1934dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
1935{
1936 complaint (&symfile_complaints,
1937 _("invalid attribute class or form for '%s' in '%s'"),
1938 arg1, arg2);
1939}
527f3840
JK
1940
1941/* Hash function for line_header_hash. */
1942
1943static hashval_t
1944line_header_hash (const struct line_header *ofs)
1945{
1946 return ofs->offset.sect_off ^ ofs->offset_in_dwz;
1947}
1948
1949/* Hash function for htab_create_alloc_ex for line_header_hash. */
1950
1951static hashval_t
1952line_header_hash_voidp (const void *item)
1953{
1954 const struct line_header *ofs = item;
1955
1956 return line_header_hash (ofs);
1957}
1958
1959/* Equality function for line_header_hash. */
1960
1961static int
1962line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
1963{
1964 const struct line_header *ofs_lhs = item_lhs;
1965 const struct line_header *ofs_rhs = item_rhs;
1966
1967 return (ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off
1968 && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
1969}
1970
4390d890 1971\f
9291a0cd
TT
1972#if WORDS_BIGENDIAN
1973
1974/* Convert VALUE between big- and little-endian. */
1975static offset_type
1976byte_swap (offset_type value)
1977{
1978 offset_type result;
1979
1980 result = (value & 0xff) << 24;
1981 result |= (value & 0xff00) << 8;
1982 result |= (value & 0xff0000) >> 8;
1983 result |= (value & 0xff000000) >> 24;
1984 return result;
1985}
1986
1987#define MAYBE_SWAP(V) byte_swap (V)
1988
1989#else
1990#define MAYBE_SWAP(V) (V)
1991#endif /* WORDS_BIGENDIAN */
1992
31aa7e4e
JB
1993/* Read the given attribute value as an address, taking the attribute's
1994 form into account. */
1995
1996static CORE_ADDR
1997attr_value_as_address (struct attribute *attr)
1998{
1999 CORE_ADDR addr;
2000
2001 if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2002 {
2003 /* Aside from a few clearly defined exceptions, attributes that
2004 contain an address must always be in DW_FORM_addr form.
2005 Unfortunately, some compilers happen to be violating this
2006 requirement by encoding addresses using other forms, such
2007 as DW_FORM_data4 for example. For those broken compilers,
2008 we try to do our best, without any guarantee of success,
2009 to interpret the address correctly. It would also be nice
2010 to generate a complaint, but that would require us to maintain
2011 a list of legitimate cases where a non-address form is allowed,
2012 as well as update callers to pass in at least the CU's DWARF
2013 version. This is more overhead than what we're willing to
2014 expand for a pretty rare case. */
2015 addr = DW_UNSND (attr);
2016 }
2017 else
2018 addr = DW_ADDR (attr);
2019
2020 return addr;
2021}
2022
9291a0cd
TT
2023/* The suffix for an index file. */
2024#define INDEX_SUFFIX ".gdb-index"
2025
c906108c 2026/* Try to locate the sections we need for DWARF 2 debugging
251d32d9
TG
2027 information and return true if we have enough to do something.
2028 NAMES points to the dwarf2 section names, or is NULL if the standard
2029 ELF names are used. */
c906108c
SS
2030
2031int
251d32d9
TG
2032dwarf2_has_info (struct objfile *objfile,
2033 const struct dwarf2_debug_sections *names)
c906108c 2034{
be391dca
TT
2035 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
2036 if (!dwarf2_per_objfile)
2037 {
2038 /* Initialize per-objfile state. */
2039 struct dwarf2_per_objfile *data
2040 = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
9a619af0 2041
be391dca
TT
2042 memset (data, 0, sizeof (*data));
2043 set_objfile_data (objfile, dwarf2_objfile_data_key, data);
2044 dwarf2_per_objfile = data;
6502dd73 2045
251d32d9
TG
2046 bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections,
2047 (void *) names);
be391dca
TT
2048 dwarf2_per_objfile->objfile = objfile;
2049 }
73869dc2
DE
2050 return (!dwarf2_per_objfile->info.is_virtual
2051 && dwarf2_per_objfile->info.s.asection != NULL
2052 && !dwarf2_per_objfile->abbrev.is_virtual
2053 && dwarf2_per_objfile->abbrev.s.asection != NULL);
2054}
2055
2056/* Return the containing section of virtual section SECTION. */
2057
2058static struct dwarf2_section_info *
2059get_containing_section (const struct dwarf2_section_info *section)
2060{
2061 gdb_assert (section->is_virtual);
2062 return section->s.containing_section;
c906108c
SS
2063}
2064
a32a8923
DE
2065/* Return the bfd owner of SECTION. */
2066
2067static struct bfd *
2068get_section_bfd_owner (const struct dwarf2_section_info *section)
2069{
73869dc2
DE
2070 if (section->is_virtual)
2071 {
2072 section = get_containing_section (section);
2073 gdb_assert (!section->is_virtual);
2074 }
2075 return section->s.asection->owner;
a32a8923
DE
2076}
2077
2078/* Return the bfd section of SECTION.
2079 Returns NULL if the section is not present. */
2080
2081static asection *
2082get_section_bfd_section (const struct dwarf2_section_info *section)
2083{
73869dc2
DE
2084 if (section->is_virtual)
2085 {
2086 section = get_containing_section (section);
2087 gdb_assert (!section->is_virtual);
2088 }
2089 return section->s.asection;
a32a8923
DE
2090}
2091
2092/* Return the name of SECTION. */
2093
2094static const char *
2095get_section_name (const struct dwarf2_section_info *section)
2096{
2097 asection *sectp = get_section_bfd_section (section);
2098
2099 gdb_assert (sectp != NULL);
2100 return bfd_section_name (get_section_bfd_owner (section), sectp);
2101}
2102
2103/* Return the name of the file SECTION is in. */
2104
2105static const char *
2106get_section_file_name (const struct dwarf2_section_info *section)
2107{
2108 bfd *abfd = get_section_bfd_owner (section);
2109
2110 return bfd_get_filename (abfd);
2111}
2112
2113/* Return the id of SECTION.
2114 Returns 0 if SECTION doesn't exist. */
2115
2116static int
2117get_section_id (const struct dwarf2_section_info *section)
2118{
2119 asection *sectp = get_section_bfd_section (section);
2120
2121 if (sectp == NULL)
2122 return 0;
2123 return sectp->id;
2124}
2125
2126/* Return the flags of SECTION.
73869dc2 2127 SECTION (or containing section if this is a virtual section) must exist. */
a32a8923
DE
2128
2129static int
2130get_section_flags (const struct dwarf2_section_info *section)
2131{
2132 asection *sectp = get_section_bfd_section (section);
2133
2134 gdb_assert (sectp != NULL);
2135 return bfd_get_section_flags (sectp->owner, sectp);
2136}
2137
251d32d9
TG
2138/* When loading sections, we look either for uncompressed section or for
2139 compressed section names. */
233a11ab
CS
2140
2141static int
251d32d9
TG
2142section_is_p (const char *section_name,
2143 const struct dwarf2_section_names *names)
233a11ab 2144{
251d32d9
TG
2145 if (names->normal != NULL
2146 && strcmp (section_name, names->normal) == 0)
2147 return 1;
2148 if (names->compressed != NULL
2149 && strcmp (section_name, names->compressed) == 0)
2150 return 1;
2151 return 0;
233a11ab
CS
2152}
2153
c906108c
SS
2154/* This function is mapped across the sections and remembers the
2155 offset and size of each of the debugging sections we are interested
2156 in. */
2157
2158static void
251d32d9 2159dwarf2_locate_sections (bfd *abfd, asection *sectp, void *vnames)
c906108c 2160{
251d32d9 2161 const struct dwarf2_debug_sections *names;
dc7650b8 2162 flagword aflag = bfd_get_section_flags (abfd, sectp);
251d32d9
TG
2163
2164 if (vnames == NULL)
2165 names = &dwarf2_elf_names;
2166 else
2167 names = (const struct dwarf2_debug_sections *) vnames;
2168
dc7650b8
JK
2169 if ((aflag & SEC_HAS_CONTENTS) == 0)
2170 {
2171 }
2172 else if (section_is_p (sectp->name, &names->info))
c906108c 2173 {
73869dc2 2174 dwarf2_per_objfile->info.s.asection = sectp;
dce234bc 2175 dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
c906108c 2176 }
251d32d9 2177 else if (section_is_p (sectp->name, &names->abbrev))
c906108c 2178 {
73869dc2 2179 dwarf2_per_objfile->abbrev.s.asection = sectp;
dce234bc 2180 dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
c906108c 2181 }
251d32d9 2182 else if (section_is_p (sectp->name, &names->line))
c906108c 2183 {
73869dc2 2184 dwarf2_per_objfile->line.s.asection = sectp;
dce234bc 2185 dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
c906108c 2186 }
251d32d9 2187 else if (section_is_p (sectp->name, &names->loc))
c906108c 2188 {
73869dc2 2189 dwarf2_per_objfile->loc.s.asection = sectp;
dce234bc 2190 dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
c906108c 2191 }
251d32d9 2192 else if (section_is_p (sectp->name, &names->macinfo))
c906108c 2193 {
73869dc2 2194 dwarf2_per_objfile->macinfo.s.asection = sectp;
dce234bc 2195 dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
c906108c 2196 }
cf2c3c16
TT
2197 else if (section_is_p (sectp->name, &names->macro))
2198 {
73869dc2 2199 dwarf2_per_objfile->macro.s.asection = sectp;
cf2c3c16
TT
2200 dwarf2_per_objfile->macro.size = bfd_get_section_size (sectp);
2201 }
251d32d9 2202 else if (section_is_p (sectp->name, &names->str))
c906108c 2203 {
73869dc2 2204 dwarf2_per_objfile->str.s.asection = sectp;
dce234bc 2205 dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
c906108c 2206 }
3019eac3
DE
2207 else if (section_is_p (sectp->name, &names->addr))
2208 {
73869dc2 2209 dwarf2_per_objfile->addr.s.asection = sectp;
3019eac3
DE
2210 dwarf2_per_objfile->addr.size = bfd_get_section_size (sectp);
2211 }
251d32d9 2212 else if (section_is_p (sectp->name, &names->frame))
b6af0555 2213 {
73869dc2 2214 dwarf2_per_objfile->frame.s.asection = sectp;
dce234bc 2215 dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
b6af0555 2216 }
251d32d9 2217 else if (section_is_p (sectp->name, &names->eh_frame))
b6af0555 2218 {
73869dc2 2219 dwarf2_per_objfile->eh_frame.s.asection = sectp;
dc7650b8 2220 dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
b6af0555 2221 }
251d32d9 2222 else if (section_is_p (sectp->name, &names->ranges))
af34e669 2223 {
73869dc2 2224 dwarf2_per_objfile->ranges.s.asection = sectp;
dce234bc 2225 dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
af34e669 2226 }
251d32d9 2227 else if (section_is_p (sectp->name, &names->types))
348e048f 2228 {
8b70b953
TT
2229 struct dwarf2_section_info type_section;
2230
2231 memset (&type_section, 0, sizeof (type_section));
73869dc2 2232 type_section.s.asection = sectp;
8b70b953
TT
2233 type_section.size = bfd_get_section_size (sectp);
2234
2235 VEC_safe_push (dwarf2_section_info_def, dwarf2_per_objfile->types,
2236 &type_section);
348e048f 2237 }
251d32d9 2238 else if (section_is_p (sectp->name, &names->gdb_index))
9291a0cd 2239 {
73869dc2 2240 dwarf2_per_objfile->gdb_index.s.asection = sectp;
9291a0cd
TT
2241 dwarf2_per_objfile->gdb_index.size = bfd_get_section_size (sectp);
2242 }
dce234bc 2243
72dca2f5
FR
2244 if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
2245 && bfd_section_vma (abfd, sectp) == 0)
2246 dwarf2_per_objfile->has_section_at_zero = 1;
c906108c
SS
2247}
2248
fceca515
DE
2249/* A helper function that decides whether a section is empty,
2250 or not present. */
9e0ac564
TT
2251
2252static int
19ac8c2e 2253dwarf2_section_empty_p (const struct dwarf2_section_info *section)
9e0ac564 2254{
73869dc2
DE
2255 if (section->is_virtual)
2256 return section->size == 0;
2257 return section->s.asection == NULL || section->size == 0;
9e0ac564
TT
2258}
2259
3019eac3
DE
2260/* Read the contents of the section INFO.
2261 OBJFILE is the main object file, but not necessarily the file where
a32a8923
DE
2262 the section comes from. E.g., for DWO files the bfd of INFO is the bfd
2263 of the DWO file.
dce234bc 2264 If the section is compressed, uncompress it before returning. */
c906108c 2265
dce234bc
PP
2266static void
2267dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
c906108c 2268{
a32a8923 2269 asection *sectp;
3019eac3 2270 bfd *abfd;
dce234bc 2271 gdb_byte *buf, *retbuf;
c906108c 2272
be391dca
TT
2273 if (info->readin)
2274 return;
dce234bc 2275 info->buffer = NULL;
be391dca 2276 info->readin = 1;
188dd5d6 2277
9e0ac564 2278 if (dwarf2_section_empty_p (info))
dce234bc 2279 return;
c906108c 2280
a32a8923 2281 sectp = get_section_bfd_section (info);
3019eac3 2282
73869dc2
DE
2283 /* If this is a virtual section we need to read in the real one first. */
2284 if (info->is_virtual)
2285 {
2286 struct dwarf2_section_info *containing_section =
2287 get_containing_section (info);
2288
2289 gdb_assert (sectp != NULL);
2290 if ((sectp->flags & SEC_RELOC) != 0)
2291 {
2292 error (_("Dwarf Error: DWP format V2 with relocations is not"
2293 " supported in section %s [in module %s]"),
2294 get_section_name (info), get_section_file_name (info));
2295 }
2296 dwarf2_read_section (objfile, containing_section);
2297 /* Other code should have already caught virtual sections that don't
2298 fit. */
2299 gdb_assert (info->virtual_offset + info->size
2300 <= containing_section->size);
2301 /* If the real section is empty or there was a problem reading the
2302 section we shouldn't get here. */
2303 gdb_assert (containing_section->buffer != NULL);
2304 info->buffer = containing_section->buffer + info->virtual_offset;
2305 return;
2306 }
2307
4bf44c1c
TT
2308 /* If the section has relocations, we must read it ourselves.
2309 Otherwise we attach it to the BFD. */
2310 if ((sectp->flags & SEC_RELOC) == 0)
dce234bc 2311 {
d521ce57 2312 info->buffer = gdb_bfd_map_section (sectp, &info->size);
4bf44c1c 2313 return;
dce234bc 2314 }
dce234bc 2315
4bf44c1c
TT
2316 buf = obstack_alloc (&objfile->objfile_obstack, info->size);
2317 info->buffer = buf;
dce234bc
PP
2318
2319 /* When debugging .o files, we may need to apply relocations; see
2320 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2321 We never compress sections in .o files, so we only need to
2322 try this when the section is not compressed. */
ac8035ab 2323 retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
dce234bc
PP
2324 if (retbuf != NULL)
2325 {
2326 info->buffer = retbuf;
2327 return;
2328 }
2329
a32a8923
DE
2330 abfd = get_section_bfd_owner (info);
2331 gdb_assert (abfd != NULL);
2332
dce234bc
PP
2333 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2334 || bfd_bread (buf, info->size, abfd) != info->size)
19ac8c2e
DE
2335 {
2336 error (_("Dwarf Error: Can't read DWARF data"
2337 " in section %s [in module %s]"),
2338 bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2339 }
dce234bc
PP
2340}
2341
9e0ac564
TT
2342/* A helper function that returns the size of a section in a safe way.
2343 If you are positive that the section has been read before using the
2344 size, then it is safe to refer to the dwarf2_section_info object's
2345 "size" field directly. In other cases, you must call this
2346 function, because for compressed sections the size field is not set
2347 correctly until the section has been read. */
2348
2349static bfd_size_type
2350dwarf2_section_size (struct objfile *objfile,
2351 struct dwarf2_section_info *info)
2352{
2353 if (!info->readin)
2354 dwarf2_read_section (objfile, info);
2355 return info->size;
2356}
2357
dce234bc 2358/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
0963b4bd 2359 SECTION_NAME. */
af34e669 2360
dce234bc 2361void
3017a003
TG
2362dwarf2_get_section_info (struct objfile *objfile,
2363 enum dwarf2_section_enum sect,
d521ce57 2364 asection **sectp, const gdb_byte **bufp,
dce234bc
PP
2365 bfd_size_type *sizep)
2366{
2367 struct dwarf2_per_objfile *data
2368 = objfile_data (objfile, dwarf2_objfile_data_key);
2369 struct dwarf2_section_info *info;
a3b2a86b
TT
2370
2371 /* We may see an objfile without any DWARF, in which case we just
2372 return nothing. */
2373 if (data == NULL)
2374 {
2375 *sectp = NULL;
2376 *bufp = NULL;
2377 *sizep = 0;
2378 return;
2379 }
3017a003
TG
2380 switch (sect)
2381 {
2382 case DWARF2_DEBUG_FRAME:
2383 info = &data->frame;
2384 break;
2385 case DWARF2_EH_FRAME:
2386 info = &data->eh_frame;
2387 break;
2388 default:
2389 gdb_assert_not_reached ("unexpected section");
2390 }
dce234bc 2391
9e0ac564 2392 dwarf2_read_section (objfile, info);
dce234bc 2393
a32a8923 2394 *sectp = get_section_bfd_section (info);
dce234bc
PP
2395 *bufp = info->buffer;
2396 *sizep = info->size;
2397}
2398
36586728
TT
2399/* A helper function to find the sections for a .dwz file. */
2400
2401static void
2402locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2403{
2404 struct dwz_file *dwz_file = arg;
2405
2406 /* Note that we only support the standard ELF names, because .dwz
2407 is ELF-only (at the time of writing). */
2408 if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2409 {
73869dc2 2410 dwz_file->abbrev.s.asection = sectp;
36586728
TT
2411 dwz_file->abbrev.size = bfd_get_section_size (sectp);
2412 }
2413 else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2414 {
73869dc2 2415 dwz_file->info.s.asection = sectp;
36586728
TT
2416 dwz_file->info.size = bfd_get_section_size (sectp);
2417 }
2418 else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2419 {
73869dc2 2420 dwz_file->str.s.asection = sectp;
36586728
TT
2421 dwz_file->str.size = bfd_get_section_size (sectp);
2422 }
2423 else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2424 {
73869dc2 2425 dwz_file->line.s.asection = sectp;
36586728
TT
2426 dwz_file->line.size = bfd_get_section_size (sectp);
2427 }
2428 else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2429 {
73869dc2 2430 dwz_file->macro.s.asection = sectp;
36586728
TT
2431 dwz_file->macro.size = bfd_get_section_size (sectp);
2432 }
2ec9a5e0
TT
2433 else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2434 {
73869dc2 2435 dwz_file->gdb_index.s.asection = sectp;
2ec9a5e0
TT
2436 dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2437 }
36586728
TT
2438}
2439
4db1a1dc
TT
2440/* Open the separate '.dwz' debug file, if needed. Return NULL if
2441 there is no .gnu_debugaltlink section in the file. Error if there
2442 is such a section but the file cannot be found. */
36586728
TT
2443
2444static struct dwz_file *
2445dwarf2_get_dwz_file (void)
2446{
4db1a1dc
TT
2447 bfd *dwz_bfd;
2448 char *data;
36586728
TT
2449 struct cleanup *cleanup;
2450 const char *filename;
2451 struct dwz_file *result;
acd13123 2452 bfd_size_type buildid_len_arg;
dc294be5
TT
2453 size_t buildid_len;
2454 bfd_byte *buildid;
36586728
TT
2455
2456 if (dwarf2_per_objfile->dwz_file != NULL)
2457 return dwarf2_per_objfile->dwz_file;
2458
4db1a1dc
TT
2459 bfd_set_error (bfd_error_no_error);
2460 data = bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
acd13123 2461 &buildid_len_arg, &buildid);
4db1a1dc
TT
2462 if (data == NULL)
2463 {
2464 if (bfd_get_error () == bfd_error_no_error)
2465 return NULL;
2466 error (_("could not read '.gnu_debugaltlink' section: %s"),
2467 bfd_errmsg (bfd_get_error ()));
2468 }
36586728 2469 cleanup = make_cleanup (xfree, data);
dc294be5 2470 make_cleanup (xfree, buildid);
36586728 2471
acd13123
TT
2472 buildid_len = (size_t) buildid_len_arg;
2473
f9d83a0b 2474 filename = (const char *) data;
36586728
TT
2475 if (!IS_ABSOLUTE_PATH (filename))
2476 {
4262abfb 2477 char *abs = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
36586728
TT
2478 char *rel;
2479
2480 make_cleanup (xfree, abs);
2481 abs = ldirname (abs);
2482 make_cleanup (xfree, abs);
2483
2484 rel = concat (abs, SLASH_STRING, filename, (char *) NULL);
2485 make_cleanup (xfree, rel);
2486 filename = rel;
2487 }
2488
dc294be5
TT
2489 /* First try the file name given in the section. If that doesn't
2490 work, try to use the build-id instead. */
36586728 2491 dwz_bfd = gdb_bfd_open (filename, gnutarget, -1);
dc294be5 2492 if (dwz_bfd != NULL)
36586728 2493 {
dc294be5
TT
2494 if (!build_id_verify (dwz_bfd, buildid_len, buildid))
2495 {
2496 gdb_bfd_unref (dwz_bfd);
2497 dwz_bfd = NULL;
2498 }
36586728
TT
2499 }
2500
dc294be5
TT
2501 if (dwz_bfd == NULL)
2502 dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2503
2504 if (dwz_bfd == NULL)
2505 error (_("could not find '.gnu_debugaltlink' file for %s"),
2506 objfile_name (dwarf2_per_objfile->objfile));
2507
36586728
TT
2508 result = OBSTACK_ZALLOC (&dwarf2_per_objfile->objfile->objfile_obstack,
2509 struct dwz_file);
2510 result->dwz_bfd = dwz_bfd;
2511
2512 bfd_map_over_sections (dwz_bfd, locate_dwz_sections, result);
2513
2514 do_cleanups (cleanup);
2515
13aaf454 2516 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, dwz_bfd);
8d2cc612 2517 dwarf2_per_objfile->dwz_file = result;
36586728
TT
2518 return result;
2519}
9291a0cd 2520\f
7b9f3c50
DE
2521/* DWARF quick_symbols_functions support. */
2522
2523/* TUs can share .debug_line entries, and there can be a lot more TUs than
2524 unique line tables, so we maintain a separate table of all .debug_line
2525 derived entries to support the sharing.
2526 All the quick functions need is the list of file names. We discard the
2527 line_header when we're done and don't need to record it here. */
2528struct quick_file_names
2529{
094b34ac
DE
2530 /* The data used to construct the hash key. */
2531 struct stmt_list_hash hash;
7b9f3c50
DE
2532
2533 /* The number of entries in file_names, real_names. */
2534 unsigned int num_file_names;
2535
2536 /* The file names from the line table, after being run through
2537 file_full_name. */
2538 const char **file_names;
2539
2540 /* The file names from the line table after being run through
2541 gdb_realpath. These are computed lazily. */
2542 const char **real_names;
2543};
2544
2545/* When using the index (and thus not using psymtabs), each CU has an
2546 object of this type. This is used to hold information needed by
2547 the various "quick" methods. */
2548struct dwarf2_per_cu_quick_data
2549{
2550 /* The file table. This can be NULL if there was no file table
2551 or it's currently not read in.
2552 NOTE: This points into dwarf2_per_objfile->quick_file_names_table. */
2553 struct quick_file_names *file_names;
2554
2555 /* The corresponding symbol table. This is NULL if symbols for this
2556 CU have not yet been read. */
43f3e411 2557 struct compunit_symtab *compunit_symtab;
7b9f3c50
DE
2558
2559 /* A temporary mark bit used when iterating over all CUs in
2560 expand_symtabs_matching. */
2561 unsigned int mark : 1;
2562
2563 /* True if we've tried to read the file table and found there isn't one.
2564 There will be no point in trying to read it again next time. */
2565 unsigned int no_file_data : 1;
2566};
2567
094b34ac
DE
2568/* Utility hash function for a stmt_list_hash. */
2569
2570static hashval_t
2571hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2572{
2573 hashval_t v = 0;
2574
2575 if (stmt_list_hash->dwo_unit != NULL)
2576 v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2577 v += stmt_list_hash->line_offset.sect_off;
2578 return v;
2579}
2580
2581/* Utility equality function for a stmt_list_hash. */
2582
2583static int
2584eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2585 const struct stmt_list_hash *rhs)
2586{
2587 if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2588 return 0;
2589 if (lhs->dwo_unit != NULL
2590 && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2591 return 0;
2592
2593 return lhs->line_offset.sect_off == rhs->line_offset.sect_off;
2594}
2595
7b9f3c50
DE
2596/* Hash function for a quick_file_names. */
2597
2598static hashval_t
2599hash_file_name_entry (const void *e)
2600{
2601 const struct quick_file_names *file_data = e;
2602
094b34ac 2603 return hash_stmt_list_entry (&file_data->hash);
7b9f3c50
DE
2604}
2605
2606/* Equality function for a quick_file_names. */
2607
2608static int
2609eq_file_name_entry (const void *a, const void *b)
2610{
2611 const struct quick_file_names *ea = a;
2612 const struct quick_file_names *eb = b;
2613
094b34ac 2614 return eq_stmt_list_entry (&ea->hash, &eb->hash);
7b9f3c50
DE
2615}
2616
2617/* Delete function for a quick_file_names. */
2618
2619static void
2620delete_file_name_entry (void *e)
2621{
2622 struct quick_file_names *file_data = e;
2623 int i;
2624
2625 for (i = 0; i < file_data->num_file_names; ++i)
2626 {
2627 xfree ((void*) file_data->file_names[i]);
2628 if (file_data->real_names)
2629 xfree ((void*) file_data->real_names[i]);
2630 }
2631
2632 /* The space for the struct itself lives on objfile_obstack,
2633 so we don't free it here. */
2634}
2635
2636/* Create a quick_file_names hash table. */
2637
2638static htab_t
2639create_quick_file_names_table (unsigned int nr_initial_entries)
2640{
2641 return htab_create_alloc (nr_initial_entries,
2642 hash_file_name_entry, eq_file_name_entry,
2643 delete_file_name_entry, xcalloc, xfree);
2644}
9291a0cd 2645
918dd910
JK
2646/* Read in PER_CU->CU. This function is unrelated to symtabs, symtab would
2647 have to be created afterwards. You should call age_cached_comp_units after
2648 processing PER_CU->CU. dw2_setup must have been already called. */
2649
2650static void
2651load_cu (struct dwarf2_per_cu_data *per_cu)
2652{
3019eac3 2653 if (per_cu->is_debug_types)
e5fe5e75 2654 load_full_type_unit (per_cu);
918dd910 2655 else
95554aad 2656 load_full_comp_unit (per_cu, language_minimal);
918dd910 2657
918dd910 2658 gdb_assert (per_cu->cu != NULL);
2dc860c0
DE
2659
2660 dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
918dd910
JK
2661}
2662
a0f42c21 2663/* Read in the symbols for PER_CU. */
2fdf6df6 2664
9291a0cd 2665static void
a0f42c21 2666dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd
TT
2667{
2668 struct cleanup *back_to;
2669
f4dc4d17
DE
2670 /* Skip type_unit_groups, reading the type units they contain
2671 is handled elsewhere. */
2672 if (IS_TYPE_UNIT_GROUP (per_cu))
2673 return;
2674
9291a0cd
TT
2675 back_to = make_cleanup (dwarf2_release_queue, NULL);
2676
95554aad 2677 if (dwarf2_per_objfile->using_index
43f3e411 2678 ? per_cu->v.quick->compunit_symtab == NULL
95554aad
TT
2679 : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2680 {
2681 queue_comp_unit (per_cu, language_minimal);
2682 load_cu (per_cu);
89e63ee4
DE
2683
2684 /* If we just loaded a CU from a DWO, and we're working with an index
2685 that may badly handle TUs, load all the TUs in that DWO as well.
2686 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
2687 if (!per_cu->is_debug_types
2688 && per_cu->cu->dwo_unit != NULL
2689 && dwarf2_per_objfile->index_table != NULL
2690 && dwarf2_per_objfile->index_table->version <= 7
2691 /* DWP files aren't supported yet. */
2692 && get_dwp_file () == NULL)
2693 queue_and_load_all_dwo_tus (per_cu);
95554aad 2694 }
9291a0cd 2695
a0f42c21 2696 process_queue ();
9291a0cd
TT
2697
2698 /* Age the cache, releasing compilation units that have not
2699 been used recently. */
2700 age_cached_comp_units ();
2701
2702 do_cleanups (back_to);
2703}
2704
2705/* Ensure that the symbols for PER_CU have been read in. OBJFILE is
2706 the objfile from which this CU came. Returns the resulting symbol
2707 table. */
2fdf6df6 2708
43f3e411 2709static struct compunit_symtab *
a0f42c21 2710dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu)
9291a0cd 2711{
95554aad 2712 gdb_assert (dwarf2_per_objfile->using_index);
43f3e411 2713 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
2714 {
2715 struct cleanup *back_to = make_cleanup (free_cached_comp_units, NULL);
2716 increment_reading_symtab ();
a0f42c21 2717 dw2_do_instantiate_symtab (per_cu);
95554aad 2718 process_cu_includes ();
9291a0cd
TT
2719 do_cleanups (back_to);
2720 }
f194fefb 2721
43f3e411 2722 return per_cu->v.quick->compunit_symtab;
9291a0cd
TT
2723}
2724
8832e7e3 2725/* Return the CU/TU given its index.
f4dc4d17
DE
2726
2727 This is intended for loops like:
2728
2729 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
2730 + dwarf2_per_objfile->n_type_units); ++i)
2731 {
8832e7e3 2732 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
f4dc4d17
DE
2733
2734 ...;
2735 }
2736*/
2fdf6df6 2737
1fd400ff 2738static struct dwarf2_per_cu_data *
8832e7e3 2739dw2_get_cutu (int index)
1fd400ff
TT
2740{
2741 if (index >= dwarf2_per_objfile->n_comp_units)
2742 {
f4dc4d17 2743 index -= dwarf2_per_objfile->n_comp_units;
094b34ac
DE
2744 gdb_assert (index < dwarf2_per_objfile->n_type_units);
2745 return &dwarf2_per_objfile->all_type_units[index]->per_cu;
f4dc4d17
DE
2746 }
2747
2748 return dwarf2_per_objfile->all_comp_units[index];
2749}
2750
8832e7e3
DE
2751/* Return the CU given its index.
2752 This differs from dw2_get_cutu in that it's for when you know INDEX
2753 refers to a CU. */
f4dc4d17
DE
2754
2755static struct dwarf2_per_cu_data *
8832e7e3 2756dw2_get_cu (int index)
f4dc4d17 2757{
8832e7e3 2758 gdb_assert (index >= 0 && index < dwarf2_per_objfile->n_comp_units);
f4dc4d17 2759
1fd400ff
TT
2760 return dwarf2_per_objfile->all_comp_units[index];
2761}
2762
2ec9a5e0
TT
2763/* A helper for create_cus_from_index that handles a given list of
2764 CUs. */
2fdf6df6 2765
74a0d9f6 2766static void
2ec9a5e0
TT
2767create_cus_from_index_list (struct objfile *objfile,
2768 const gdb_byte *cu_list, offset_type n_elements,
2769 struct dwarf2_section_info *section,
2770 int is_dwz,
2771 int base_offset)
9291a0cd
TT
2772{
2773 offset_type i;
9291a0cd 2774
2ec9a5e0 2775 for (i = 0; i < n_elements; i += 2)
9291a0cd
TT
2776 {
2777 struct dwarf2_per_cu_data *the_cu;
2778 ULONGEST offset, length;
2779
74a0d9f6
JK
2780 gdb_static_assert (sizeof (ULONGEST) >= 8);
2781 offset = extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2782 length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
9291a0cd
TT
2783 cu_list += 2 * 8;
2784
2785 the_cu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2786 struct dwarf2_per_cu_data);
b64f50a1 2787 the_cu->offset.sect_off = offset;
9291a0cd
TT
2788 the_cu->length = length;
2789 the_cu->objfile = objfile;
8a0459fd 2790 the_cu->section = section;
9291a0cd
TT
2791 the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2792 struct dwarf2_per_cu_quick_data);
2ec9a5e0
TT
2793 the_cu->is_dwz = is_dwz;
2794 dwarf2_per_objfile->all_comp_units[base_offset + i / 2] = the_cu;
9291a0cd 2795 }
9291a0cd
TT
2796}
2797
2ec9a5e0 2798/* Read the CU list from the mapped index, and use it to create all
74a0d9f6 2799 the CU objects for this objfile. */
2ec9a5e0 2800
74a0d9f6 2801static void
2ec9a5e0
TT
2802create_cus_from_index (struct objfile *objfile,
2803 const gdb_byte *cu_list, offset_type cu_list_elements,
2804 const gdb_byte *dwz_list, offset_type dwz_elements)
2805{
2806 struct dwz_file *dwz;
2807
2808 dwarf2_per_objfile->n_comp_units = (cu_list_elements + dwz_elements) / 2;
2809 dwarf2_per_objfile->all_comp_units
2810 = obstack_alloc (&objfile->objfile_obstack,
2811 dwarf2_per_objfile->n_comp_units
2812 * sizeof (struct dwarf2_per_cu_data *));
2813
74a0d9f6
JK
2814 create_cus_from_index_list (objfile, cu_list, cu_list_elements,
2815 &dwarf2_per_objfile->info, 0, 0);
2ec9a5e0
TT
2816
2817 if (dwz_elements == 0)
74a0d9f6 2818 return;
2ec9a5e0
TT
2819
2820 dwz = dwarf2_get_dwz_file ();
74a0d9f6
JK
2821 create_cus_from_index_list (objfile, dwz_list, dwz_elements, &dwz->info, 1,
2822 cu_list_elements / 2);
2ec9a5e0
TT
2823}
2824
1fd400ff 2825/* Create the signatured type hash table from the index. */
673bfd45 2826
74a0d9f6 2827static void
673bfd45 2828create_signatured_type_table_from_index (struct objfile *objfile,
8b70b953 2829 struct dwarf2_section_info *section,
673bfd45
DE
2830 const gdb_byte *bytes,
2831 offset_type elements)
1fd400ff
TT
2832{
2833 offset_type i;
673bfd45 2834 htab_t sig_types_hash;
1fd400ff 2835
6aa5f3a6
DE
2836 dwarf2_per_objfile->n_type_units
2837 = dwarf2_per_objfile->n_allocated_type_units
2838 = elements / 3;
d467dd73 2839 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
2840 = xmalloc (dwarf2_per_objfile->n_type_units
2841 * sizeof (struct signatured_type *));
1fd400ff 2842
673bfd45 2843 sig_types_hash = allocate_signatured_type_table (objfile);
1fd400ff
TT
2844
2845 for (i = 0; i < elements; i += 3)
2846 {
52dc124a
DE
2847 struct signatured_type *sig_type;
2848 ULONGEST offset, type_offset_in_tu, signature;
1fd400ff
TT
2849 void **slot;
2850
74a0d9f6
JK
2851 gdb_static_assert (sizeof (ULONGEST) >= 8);
2852 offset = extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
2853 type_offset_in_tu = extract_unsigned_integer (bytes + 8, 8,
2854 BFD_ENDIAN_LITTLE);
1fd400ff
TT
2855 signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
2856 bytes += 3 * 8;
2857
52dc124a 2858 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
1fd400ff 2859 struct signatured_type);
52dc124a 2860 sig_type->signature = signature;
3019eac3
DE
2861 sig_type->type_offset_in_tu.cu_off = type_offset_in_tu;
2862 sig_type->per_cu.is_debug_types = 1;
8a0459fd 2863 sig_type->per_cu.section = section;
52dc124a
DE
2864 sig_type->per_cu.offset.sect_off = offset;
2865 sig_type->per_cu.objfile = objfile;
2866 sig_type->per_cu.v.quick
1fd400ff
TT
2867 = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2868 struct dwarf2_per_cu_quick_data);
2869
52dc124a
DE
2870 slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
2871 *slot = sig_type;
1fd400ff 2872
b4dd5633 2873 dwarf2_per_objfile->all_type_units[i / 3] = sig_type;
1fd400ff
TT
2874 }
2875
673bfd45 2876 dwarf2_per_objfile->signatured_types = sig_types_hash;
1fd400ff
TT
2877}
2878
9291a0cd
TT
2879/* Read the address map data from the mapped index, and use it to
2880 populate the objfile's psymtabs_addrmap. */
2fdf6df6 2881
9291a0cd
TT
2882static void
2883create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index)
2884{
3e29f34a 2885 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9291a0cd
TT
2886 const gdb_byte *iter, *end;
2887 struct obstack temp_obstack;
2888 struct addrmap *mutable_map;
2889 struct cleanup *cleanup;
2890 CORE_ADDR baseaddr;
2891
2892 obstack_init (&temp_obstack);
2893 cleanup = make_cleanup_obstack_free (&temp_obstack);
2894 mutable_map = addrmap_create_mutable (&temp_obstack);
2895
2896 iter = index->address_table;
2897 end = iter + index->address_table_size;
2898
2899 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2900
2901 while (iter < end)
2902 {
2903 ULONGEST hi, lo, cu_index;
2904 lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2905 iter += 8;
2906 hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
2907 iter += 8;
2908 cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
2909 iter += 4;
f652bce2 2910
24a55014 2911 if (lo > hi)
f652bce2 2912 {
24a55014
DE
2913 complaint (&symfile_complaints,
2914 _(".gdb_index address table has invalid range (%s - %s)"),
c0cd8254 2915 hex_string (lo), hex_string (hi));
24a55014 2916 continue;
f652bce2 2917 }
24a55014
DE
2918
2919 if (cu_index >= dwarf2_per_objfile->n_comp_units)
f652bce2
DE
2920 {
2921 complaint (&symfile_complaints,
2922 _(".gdb_index address table has invalid CU number %u"),
2923 (unsigned) cu_index);
24a55014 2924 continue;
f652bce2 2925 }
24a55014 2926
3e29f34a
MR
2927 lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr);
2928 hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr);
2929 addrmap_set_empty (mutable_map, lo, hi - 1, dw2_get_cutu (cu_index));
9291a0cd
TT
2930 }
2931
2932 objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
2933 &objfile->objfile_obstack);
2934 do_cleanups (cleanup);
2935}
2936
59d7bcaf
JK
2937/* The hash function for strings in the mapped index. This is the same as
2938 SYMBOL_HASH_NEXT, but we keep a separate copy to maintain control over the
2939 implementation. This is necessary because the hash function is tied to the
2940 format of the mapped index file. The hash values do not have to match with
559a7a62
JK
2941 SYMBOL_HASH_NEXT.
2942
2943 Use INT_MAX for INDEX_VERSION if you generate the current index format. */
2fdf6df6 2944
9291a0cd 2945static hashval_t
559a7a62 2946mapped_index_string_hash (int index_version, const void *p)
9291a0cd
TT
2947{
2948 const unsigned char *str = (const unsigned char *) p;
2949 hashval_t r = 0;
2950 unsigned char c;
2951
2952 while ((c = *str++) != 0)
559a7a62
JK
2953 {
2954 if (index_version >= 5)
2955 c = tolower (c);
2956 r = r * 67 + c - 113;
2957 }
9291a0cd
TT
2958
2959 return r;
2960}
2961
2962/* Find a slot in the mapped index INDEX for the object named NAME.
2963 If NAME is found, set *VEC_OUT to point to the CU vector in the
2964 constant pool and return 1. If NAME cannot be found, return 0. */
2fdf6df6 2965
9291a0cd
TT
2966static int
2967find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
2968 offset_type **vec_out)
2969{
0cf03b49
JK
2970 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2971 offset_type hash;
9291a0cd 2972 offset_type slot, step;
559a7a62 2973 int (*cmp) (const char *, const char *);
9291a0cd 2974
0cf03b49
JK
2975 if (current_language->la_language == language_cplus
2976 || current_language->la_language == language_java
2977 || current_language->la_language == language_fortran)
2978 {
2979 /* NAME is already canonical. Drop any qualifiers as .gdb_index does
2980 not contain any. */
a8719064 2981
72998fb3 2982 if (strchr (name, '(') != NULL)
0cf03b49 2983 {
72998fb3 2984 char *without_params = cp_remove_params (name);
0cf03b49 2985
72998fb3
DE
2986 if (without_params != NULL)
2987 {
2988 make_cleanup (xfree, without_params);
2989 name = without_params;
2990 }
0cf03b49
JK
2991 }
2992 }
2993
559a7a62 2994 /* Index version 4 did not support case insensitive searches. But the
feea76c2 2995 indices for case insensitive languages are built in lowercase, therefore
559a7a62
JK
2996 simulate our NAME being searched is also lowercased. */
2997 hash = mapped_index_string_hash ((index->version == 4
2998 && case_sensitivity == case_sensitive_off
2999 ? 5 : index->version),
3000 name);
3001
3876f04e
DE
3002 slot = hash & (index->symbol_table_slots - 1);
3003 step = ((hash * 17) & (index->symbol_table_slots - 1)) | 1;
559a7a62 3004 cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
9291a0cd
TT
3005
3006 for (;;)
3007 {
3008 /* Convert a slot number to an offset into the table. */
3009 offset_type i = 2 * slot;
3010 const char *str;
3876f04e 3011 if (index->symbol_table[i] == 0 && index->symbol_table[i + 1] == 0)
0cf03b49
JK
3012 {
3013 do_cleanups (back_to);
3014 return 0;
3015 }
9291a0cd 3016
3876f04e 3017 str = index->constant_pool + MAYBE_SWAP (index->symbol_table[i]);
559a7a62 3018 if (!cmp (name, str))
9291a0cd
TT
3019 {
3020 *vec_out = (offset_type *) (index->constant_pool
3876f04e 3021 + MAYBE_SWAP (index->symbol_table[i + 1]));
0cf03b49 3022 do_cleanups (back_to);
9291a0cd
TT
3023 return 1;
3024 }
3025
3876f04e 3026 slot = (slot + step) & (index->symbol_table_slots - 1);
9291a0cd
TT
3027 }
3028}
3029
2ec9a5e0
TT
3030/* A helper function that reads the .gdb_index from SECTION and fills
3031 in MAP. FILENAME is the name of the file containing the section;
3032 it is used for error reporting. DEPRECATED_OK is nonzero if it is
3033 ok to use deprecated sections.
3034
3035 CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3036 out parameters that are filled in with information about the CU and
3037 TU lists in the section.
3038
3039 Returns 1 if all went well, 0 otherwise. */
2fdf6df6 3040
9291a0cd 3041static int
2ec9a5e0
TT
3042read_index_from_section (struct objfile *objfile,
3043 const char *filename,
3044 int deprecated_ok,
3045 struct dwarf2_section_info *section,
3046 struct mapped_index *map,
3047 const gdb_byte **cu_list,
3048 offset_type *cu_list_elements,
3049 const gdb_byte **types_list,
3050 offset_type *types_list_elements)
9291a0cd 3051{
948f8e3d 3052 const gdb_byte *addr;
2ec9a5e0 3053 offset_type version;
b3b272e1 3054 offset_type *metadata;
1fd400ff 3055 int i;
9291a0cd 3056
2ec9a5e0 3057 if (dwarf2_section_empty_p (section))
9291a0cd 3058 return 0;
82430852
JK
3059
3060 /* Older elfutils strip versions could keep the section in the main
3061 executable while splitting it for the separate debug info file. */
a32a8923 3062 if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
82430852
JK
3063 return 0;
3064
2ec9a5e0 3065 dwarf2_read_section (objfile, section);
9291a0cd 3066
2ec9a5e0 3067 addr = section->buffer;
9291a0cd 3068 /* Version check. */
1fd400ff 3069 version = MAYBE_SWAP (*(offset_type *) addr);
987d643c 3070 /* Versions earlier than 3 emitted every copy of a psymbol. This
a6e293d1 3071 causes the index to behave very poorly for certain requests. Version 3
831adc1f 3072 contained incomplete addrmap. So, it seems better to just ignore such
481860b3 3073 indices. */
831adc1f 3074 if (version < 4)
481860b3
GB
3075 {
3076 static int warning_printed = 0;
3077 if (!warning_printed)
3078 {
3079 warning (_("Skipping obsolete .gdb_index section in %s."),
2ec9a5e0 3080 filename);
481860b3
GB
3081 warning_printed = 1;
3082 }
3083 return 0;
3084 }
3085 /* Index version 4 uses a different hash function than index version
3086 5 and later.
3087
3088 Versions earlier than 6 did not emit psymbols for inlined
3089 functions. Using these files will cause GDB not to be able to
3090 set breakpoints on inlined functions by name, so we ignore these
e615022a
DE
3091 indices unless the user has done
3092 "set use-deprecated-index-sections on". */
2ec9a5e0 3093 if (version < 6 && !deprecated_ok)
481860b3
GB
3094 {
3095 static int warning_printed = 0;
3096 if (!warning_printed)
3097 {
e615022a
DE
3098 warning (_("\
3099Skipping deprecated .gdb_index section in %s.\n\
3100Do \"set use-deprecated-index-sections on\" before the file is read\n\
3101to use the section anyway."),
2ec9a5e0 3102 filename);
481860b3
GB
3103 warning_printed = 1;
3104 }
3105 return 0;
3106 }
796a7ff8 3107 /* Version 7 indices generated by gold refer to the CU for a symbol instead
8943b874
DE
3108 of the TU (for symbols coming from TUs),
3109 http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3110 Plus gold-generated indices can have duplicate entries for global symbols,
3111 http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3112 These are just performance bugs, and we can't distinguish gdb-generated
3113 indices from gold-generated ones, so issue no warning here. */
796a7ff8 3114
481860b3 3115 /* Indexes with higher version than the one supported by GDB may be no
594e8718 3116 longer backward compatible. */
796a7ff8 3117 if (version > 8)
594e8718 3118 return 0;
9291a0cd 3119
559a7a62 3120 map->version = version;
2ec9a5e0 3121 map->total_size = section->size;
9291a0cd
TT
3122
3123 metadata = (offset_type *) (addr + sizeof (offset_type));
1fd400ff
TT
3124
3125 i = 0;
2ec9a5e0
TT
3126 *cu_list = addr + MAYBE_SWAP (metadata[i]);
3127 *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3128 / 8);
1fd400ff
TT
3129 ++i;
3130
2ec9a5e0
TT
3131 *types_list = addr + MAYBE_SWAP (metadata[i]);
3132 *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3133 - MAYBE_SWAP (metadata[i]))
3134 / 8);
987d643c 3135 ++i;
1fd400ff
TT
3136
3137 map->address_table = addr + MAYBE_SWAP (metadata[i]);
3138 map->address_table_size = (MAYBE_SWAP (metadata[i + 1])
3139 - MAYBE_SWAP (metadata[i]));
3140 ++i;
3141
3876f04e
DE
3142 map->symbol_table = (offset_type *) (addr + MAYBE_SWAP (metadata[i]));
3143 map->symbol_table_slots = ((MAYBE_SWAP (metadata[i + 1])
3144 - MAYBE_SWAP (metadata[i]))
3145 / (2 * sizeof (offset_type)));
1fd400ff 3146 ++i;
9291a0cd 3147
f9d83a0b 3148 map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
1fd400ff 3149
2ec9a5e0
TT
3150 return 1;
3151}
3152
3153
3154/* Read the index file. If everything went ok, initialize the "quick"
3155 elements of all the CUs and return 1. Otherwise, return 0. */
3156
3157static int
3158dwarf2_read_index (struct objfile *objfile)
3159{
3160 struct mapped_index local_map, *map;
3161 const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3162 offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
4db1a1dc 3163 struct dwz_file *dwz;
2ec9a5e0 3164
4262abfb 3165 if (!read_index_from_section (objfile, objfile_name (objfile),
2ec9a5e0
TT
3166 use_deprecated_index_sections,
3167 &dwarf2_per_objfile->gdb_index, &local_map,
3168 &cu_list, &cu_list_elements,
3169 &types_list, &types_list_elements))
3170 return 0;
3171
0fefef59 3172 /* Don't use the index if it's empty. */
2ec9a5e0 3173 if (local_map.symbol_table_slots == 0)
0fefef59
DE
3174 return 0;
3175
2ec9a5e0
TT
3176 /* If there is a .dwz file, read it so we can get its CU list as
3177 well. */
4db1a1dc
TT
3178 dwz = dwarf2_get_dwz_file ();
3179 if (dwz != NULL)
2ec9a5e0 3180 {
2ec9a5e0
TT
3181 struct mapped_index dwz_map;
3182 const gdb_byte *dwz_types_ignore;
3183 offset_type dwz_types_elements_ignore;
3184
3185 if (!read_index_from_section (objfile, bfd_get_filename (dwz->dwz_bfd),
3186 1,
3187 &dwz->gdb_index, &dwz_map,
3188 &dwz_list, &dwz_list_elements,
3189 &dwz_types_ignore,
3190 &dwz_types_elements_ignore))
3191 {
3192 warning (_("could not read '.gdb_index' section from %s; skipping"),
3193 bfd_get_filename (dwz->dwz_bfd));
3194 return 0;
3195 }
3196 }
3197
74a0d9f6
JK
3198 create_cus_from_index (objfile, cu_list, cu_list_elements, dwz_list,
3199 dwz_list_elements);
1fd400ff 3200
8b70b953
TT
3201 if (types_list_elements)
3202 {
3203 struct dwarf2_section_info *section;
3204
3205 /* We can only handle a single .debug_types when we have an
3206 index. */
3207 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3208 return 0;
3209
3210 section = VEC_index (dwarf2_section_info_def,
3211 dwarf2_per_objfile->types, 0);
3212
74a0d9f6
JK
3213 create_signatured_type_table_from_index (objfile, section, types_list,
3214 types_list_elements);
8b70b953 3215 }
9291a0cd 3216
2ec9a5e0
TT
3217 create_addrmap_from_index (objfile, &local_map);
3218
3219 map = obstack_alloc (&objfile->objfile_obstack, sizeof (struct mapped_index));
3220 *map = local_map;
9291a0cd
TT
3221
3222 dwarf2_per_objfile->index_table = map;
3223 dwarf2_per_objfile->using_index = 1;
7b9f3c50
DE
3224 dwarf2_per_objfile->quick_file_names_table =
3225 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd
TT
3226
3227 return 1;
3228}
3229
3230/* A helper for the "quick" functions which sets the global
3231 dwarf2_per_objfile according to OBJFILE. */
2fdf6df6 3232
9291a0cd
TT
3233static void
3234dw2_setup (struct objfile *objfile)
3235{
3236 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
3237 gdb_assert (dwarf2_per_objfile);
3238}
3239
dee91e82 3240/* die_reader_func for dw2_get_file_names. */
2fdf6df6 3241
dee91e82
DE
3242static void
3243dw2_get_file_names_reader (const struct die_reader_specs *reader,
d521ce57 3244 const gdb_byte *info_ptr,
dee91e82
DE
3245 struct die_info *comp_unit_die,
3246 int has_children,
3247 void *data)
9291a0cd 3248{
dee91e82
DE
3249 struct dwarf2_cu *cu = reader->cu;
3250 struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3251 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 3252 struct dwarf2_per_cu_data *lh_cu;
7b9f3c50 3253 struct line_header *lh;
9291a0cd 3254 struct attribute *attr;
dee91e82 3255 int i;
15d034d0 3256 const char *name, *comp_dir;
7b9f3c50
DE
3257 void **slot;
3258 struct quick_file_names *qfn;
3259 unsigned int line_offset;
9291a0cd 3260
0186c6a7
DE
3261 gdb_assert (! this_cu->is_debug_types);
3262
07261596
TT
3263 /* Our callers never want to match partial units -- instead they
3264 will match the enclosing full CU. */
3265 if (comp_unit_die->tag == DW_TAG_partial_unit)
3266 {
3267 this_cu->v.quick->no_file_data = 1;
3268 return;
3269 }
3270
0186c6a7 3271 lh_cu = this_cu;
7b9f3c50
DE
3272 lh = NULL;
3273 slot = NULL;
3274 line_offset = 0;
dee91e82
DE
3275
3276 attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
9291a0cd
TT
3277 if (attr)
3278 {
7b9f3c50
DE
3279 struct quick_file_names find_entry;
3280
3281 line_offset = DW_UNSND (attr);
3282
3283 /* We may have already read in this line header (TU line header sharing).
3284 If we have we're done. */
094b34ac
DE
3285 find_entry.hash.dwo_unit = cu->dwo_unit;
3286 find_entry.hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3287 slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3288 &find_entry, INSERT);
3289 if (*slot != NULL)
3290 {
094b34ac 3291 lh_cu->v.quick->file_names = *slot;
dee91e82 3292 return;
7b9f3c50
DE
3293 }
3294
3019eac3 3295 lh = dwarf_decode_line_header (line_offset, cu);
9291a0cd
TT
3296 }
3297 if (lh == NULL)
3298 {
094b34ac 3299 lh_cu->v.quick->no_file_data = 1;
dee91e82 3300 return;
9291a0cd
TT
3301 }
3302
7b9f3c50 3303 qfn = obstack_alloc (&objfile->objfile_obstack, sizeof (*qfn));
094b34ac
DE
3304 qfn->hash.dwo_unit = cu->dwo_unit;
3305 qfn->hash.line_offset.sect_off = line_offset;
7b9f3c50
DE
3306 gdb_assert (slot != NULL);
3307 *slot = qfn;
9291a0cd 3308
dee91e82 3309 find_file_and_directory (comp_unit_die, cu, &name, &comp_dir);
9291a0cd 3310
7b9f3c50
DE
3311 qfn->num_file_names = lh->num_file_names;
3312 qfn->file_names = obstack_alloc (&objfile->objfile_obstack,
3313 lh->num_file_names * sizeof (char *));
9291a0cd 3314 for (i = 0; i < lh->num_file_names; ++i)
7b9f3c50
DE
3315 qfn->file_names[i] = file_full_name (i + 1, lh, comp_dir);
3316 qfn->real_names = NULL;
9291a0cd 3317
7b9f3c50 3318 free_line_header (lh);
7b9f3c50 3319
094b34ac 3320 lh_cu->v.quick->file_names = qfn;
dee91e82
DE
3321}
3322
3323/* A helper for the "quick" functions which attempts to read the line
3324 table for THIS_CU. */
3325
3326static struct quick_file_names *
e4a48d9d 3327dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
dee91e82 3328{
0186c6a7
DE
3329 /* This should never be called for TUs. */
3330 gdb_assert (! this_cu->is_debug_types);
3331 /* Nor type unit groups. */
3332 gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
f4dc4d17 3333
dee91e82
DE
3334 if (this_cu->v.quick->file_names != NULL)
3335 return this_cu->v.quick->file_names;
3336 /* If we know there is no line data, no point in looking again. */
3337 if (this_cu->v.quick->no_file_data)
3338 return NULL;
3339
0186c6a7 3340 init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
dee91e82
DE
3341
3342 if (this_cu->v.quick->no_file_data)
3343 return NULL;
3344 return this_cu->v.quick->file_names;
9291a0cd
TT
3345}
3346
3347/* A helper for the "quick" functions which computes and caches the
7b9f3c50 3348 real path for a given file name from the line table. */
2fdf6df6 3349
9291a0cd 3350static const char *
7b9f3c50
DE
3351dw2_get_real_path (struct objfile *objfile,
3352 struct quick_file_names *qfn, int index)
9291a0cd 3353{
7b9f3c50
DE
3354 if (qfn->real_names == NULL)
3355 qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
26f2dc30 3356 qfn->num_file_names, const char *);
9291a0cd 3357
7b9f3c50
DE
3358 if (qfn->real_names[index] == NULL)
3359 qfn->real_names[index] = gdb_realpath (qfn->file_names[index]);
9291a0cd 3360
7b9f3c50 3361 return qfn->real_names[index];
9291a0cd
TT
3362}
3363
3364static struct symtab *
3365dw2_find_last_source_symtab (struct objfile *objfile)
3366{
43f3e411 3367 struct compunit_symtab *cust;
9291a0cd 3368 int index;
ae2de4f8 3369
9291a0cd
TT
3370 dw2_setup (objfile);
3371 index = dwarf2_per_objfile->n_comp_units - 1;
43f3e411
DE
3372 cust = dw2_instantiate_symtab (dw2_get_cutu (index));
3373 if (cust == NULL)
3374 return NULL;
3375 return compunit_primary_filetab (cust);
9291a0cd
TT
3376}
3377
7b9f3c50
DE
3378/* Traversal function for dw2_forget_cached_source_info. */
3379
3380static int
3381dw2_free_cached_file_names (void **slot, void *info)
9291a0cd 3382{
7b9f3c50 3383 struct quick_file_names *file_data = (struct quick_file_names *) *slot;
9291a0cd 3384
7b9f3c50 3385 if (file_data->real_names)
9291a0cd 3386 {
7b9f3c50 3387 int i;
9291a0cd 3388
7b9f3c50 3389 for (i = 0; i < file_data->num_file_names; ++i)
9291a0cd 3390 {
7b9f3c50
DE
3391 xfree ((void*) file_data->real_names[i]);
3392 file_data->real_names[i] = NULL;
9291a0cd
TT
3393 }
3394 }
7b9f3c50
DE
3395
3396 return 1;
3397}
3398
3399static void
3400dw2_forget_cached_source_info (struct objfile *objfile)
3401{
3402 dw2_setup (objfile);
3403
3404 htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3405 dw2_free_cached_file_names, NULL);
9291a0cd
TT
3406}
3407
f8eba3c6
TT
3408/* Helper function for dw2_map_symtabs_matching_filename that expands
3409 the symtabs and calls the iterator. */
3410
3411static int
3412dw2_map_expand_apply (struct objfile *objfile,
3413 struct dwarf2_per_cu_data *per_cu,
f5b95b50 3414 const char *name, const char *real_path,
f8eba3c6
TT
3415 int (*callback) (struct symtab *, void *),
3416 void *data)
3417{
43f3e411 3418 struct compunit_symtab *last_made = objfile->compunit_symtabs;
f8eba3c6
TT
3419
3420 /* Don't visit already-expanded CUs. */
43f3e411 3421 if (per_cu->v.quick->compunit_symtab)
f8eba3c6
TT
3422 return 0;
3423
3424 /* This may expand more than one symtab, and we want to iterate over
3425 all of them. */
a0f42c21 3426 dw2_instantiate_symtab (per_cu);
f8eba3c6 3427
f5b95b50 3428 return iterate_over_some_symtabs (name, real_path, callback, data,
43f3e411 3429 objfile->compunit_symtabs, last_made);
f8eba3c6
TT
3430}
3431
3432/* Implementation of the map_symtabs_matching_filename method. */
3433
9291a0cd 3434static int
f8eba3c6 3435dw2_map_symtabs_matching_filename (struct objfile *objfile, const char *name,
f5b95b50 3436 const char *real_path,
f8eba3c6
TT
3437 int (*callback) (struct symtab *, void *),
3438 void *data)
9291a0cd
TT
3439{
3440 int i;
c011a4f4 3441 const char *name_basename = lbasename (name);
9291a0cd
TT
3442
3443 dw2_setup (objfile);
ae2de4f8 3444
848e3e78
DE
3445 /* The rule is CUs specify all the files, including those used by
3446 any TU, so there's no need to scan TUs here. */
f4dc4d17 3447
848e3e78 3448 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3449 {
3450 int j;
8832e7e3 3451 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 3452 struct quick_file_names *file_data;
9291a0cd 3453
3d7bb9d9 3454 /* We only need to look at symtabs not already expanded. */
43f3e411 3455 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3456 continue;
3457
e4a48d9d 3458 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3459 if (file_data == NULL)
9291a0cd
TT
3460 continue;
3461
7b9f3c50 3462 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3463 {
7b9f3c50 3464 const char *this_name = file_data->file_names[j];
da235a7c 3465 const char *this_real_name;
9291a0cd 3466
af529f8f 3467 if (compare_filenames_for_search (this_name, name))
9291a0cd 3468 {
f5b95b50 3469 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3470 callback, data))
3471 return 1;
288e77a7 3472 continue;
4aac40c8 3473 }
9291a0cd 3474
c011a4f4
DE
3475 /* Before we invoke realpath, which can get expensive when many
3476 files are involved, do a quick comparison of the basenames. */
3477 if (! basenames_may_differ
3478 && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3479 continue;
3480
da235a7c
JK
3481 this_real_name = dw2_get_real_path (objfile, file_data, j);
3482 if (compare_filenames_for_search (this_real_name, name))
9291a0cd 3483 {
da235a7c
JK
3484 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3485 callback, data))
3486 return 1;
288e77a7 3487 continue;
da235a7c 3488 }
9291a0cd 3489
da235a7c
JK
3490 if (real_path != NULL)
3491 {
af529f8f
JK
3492 gdb_assert (IS_ABSOLUTE_PATH (real_path));
3493 gdb_assert (IS_ABSOLUTE_PATH (name));
7b9f3c50 3494 if (this_real_name != NULL
af529f8f 3495 && FILENAME_CMP (real_path, this_real_name) == 0)
9291a0cd 3496 {
f5b95b50 3497 if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
f8eba3c6
TT
3498 callback, data))
3499 return 1;
288e77a7 3500 continue;
9291a0cd
TT
3501 }
3502 }
3503 }
3504 }
3505
9291a0cd
TT
3506 return 0;
3507}
3508
da51c347
DE
3509/* Struct used to manage iterating over all CUs looking for a symbol. */
3510
3511struct dw2_symtab_iterator
9291a0cd 3512{
da51c347
DE
3513 /* The internalized form of .gdb_index. */
3514 struct mapped_index *index;
3515 /* If non-zero, only look for symbols that match BLOCK_INDEX. */
3516 int want_specific_block;
3517 /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3518 Unused if !WANT_SPECIFIC_BLOCK. */
3519 int block_index;
3520 /* The kind of symbol we're looking for. */
3521 domain_enum domain;
3522 /* The list of CUs from the index entry of the symbol,
3523 or NULL if not found. */
3524 offset_type *vec;
3525 /* The next element in VEC to look at. */
3526 int next;
3527 /* The number of elements in VEC, or zero if there is no match. */
3528 int length;
8943b874
DE
3529 /* Have we seen a global version of the symbol?
3530 If so we can ignore all further global instances.
3531 This is to work around gold/15646, inefficient gold-generated
3532 indices. */
3533 int global_seen;
da51c347 3534};
9291a0cd 3535
da51c347
DE
3536/* Initialize the index symtab iterator ITER.
3537 If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3538 in block BLOCK_INDEX. Otherwise BLOCK_INDEX is ignored. */
2fdf6df6 3539
9291a0cd 3540static void
da51c347
DE
3541dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3542 struct mapped_index *index,
3543 int want_specific_block,
3544 int block_index,
3545 domain_enum domain,
3546 const char *name)
3547{
3548 iter->index = index;
3549 iter->want_specific_block = want_specific_block;
3550 iter->block_index = block_index;
3551 iter->domain = domain;
3552 iter->next = 0;
8943b874 3553 iter->global_seen = 0;
da51c347
DE
3554
3555 if (find_slot_in_mapped_hash (index, name, &iter->vec))
3556 iter->length = MAYBE_SWAP (*iter->vec);
3557 else
3558 {
3559 iter->vec = NULL;
3560 iter->length = 0;
3561 }
3562}
3563
3564/* Return the next matching CU or NULL if there are no more. */
3565
3566static struct dwarf2_per_cu_data *
3567dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3568{
3569 for ( ; iter->next < iter->length; ++iter->next)
3570 {
3571 offset_type cu_index_and_attrs =
3572 MAYBE_SWAP (iter->vec[iter->next + 1]);
3573 offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6 3574 struct dwarf2_per_cu_data *per_cu;
da51c347
DE
3575 int want_static = iter->block_index != GLOBAL_BLOCK;
3576 /* This value is only valid for index versions >= 7. */
3577 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3578 gdb_index_symbol_kind symbol_kind =
3579 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3580 /* Only check the symbol attributes if they're present.
3581 Indices prior to version 7 don't record them,
3582 and indices >= 7 may elide them for certain symbols
3583 (gold does this). */
3584 int attrs_valid =
3585 (iter->index->version >= 7
3586 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3587
3190f0c6
DE
3588 /* Don't crash on bad data. */
3589 if (cu_index >= (dwarf2_per_objfile->n_comp_units
3590 + dwarf2_per_objfile->n_type_units))
3591 {
3592 complaint (&symfile_complaints,
3593 _(".gdb_index entry has bad CU index"
4262abfb
JK
3594 " [in module %s]"),
3595 objfile_name (dwarf2_per_objfile->objfile));
3190f0c6
DE
3596 continue;
3597 }
3598
8832e7e3 3599 per_cu = dw2_get_cutu (cu_index);
3190f0c6 3600
da51c347 3601 /* Skip if already read in. */
43f3e411 3602 if (per_cu->v.quick->compunit_symtab)
da51c347
DE
3603 continue;
3604
8943b874
DE
3605 /* Check static vs global. */
3606 if (attrs_valid)
3607 {
3608 if (iter->want_specific_block
3609 && want_static != is_static)
3610 continue;
3611 /* Work around gold/15646. */
3612 if (!is_static && iter->global_seen)
3613 continue;
3614 if (!is_static)
3615 iter->global_seen = 1;
3616 }
da51c347
DE
3617
3618 /* Only check the symbol's kind if it has one. */
3619 if (attrs_valid)
3620 {
3621 switch (iter->domain)
3622 {
3623 case VAR_DOMAIN:
3624 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
3625 && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
3626 /* Some types are also in VAR_DOMAIN. */
3627 && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3628 continue;
3629 break;
3630 case STRUCT_DOMAIN:
3631 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
3632 continue;
3633 break;
3634 case LABEL_DOMAIN:
3635 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
3636 continue;
3637 break;
3638 default:
3639 break;
3640 }
3641 }
3642
3643 ++iter->next;
3644 return per_cu;
3645 }
3646
3647 return NULL;
3648}
3649
43f3e411 3650static struct compunit_symtab *
da51c347
DE
3651dw2_lookup_symbol (struct objfile *objfile, int block_index,
3652 const char *name, domain_enum domain)
9291a0cd 3653{
43f3e411 3654 struct compunit_symtab *stab_best = NULL;
156942c7
DE
3655 struct mapped_index *index;
3656
9291a0cd
TT
3657 dw2_setup (objfile);
3658
156942c7
DE
3659 index = dwarf2_per_objfile->index_table;
3660
da51c347 3661 /* index is NULL if OBJF_READNOW. */
156942c7 3662 if (index)
9291a0cd 3663 {
da51c347
DE
3664 struct dw2_symtab_iterator iter;
3665 struct dwarf2_per_cu_data *per_cu;
3666
3667 dw2_symtab_iter_init (&iter, index, 1, block_index, domain, name);
9291a0cd 3668
da51c347 3669 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
9291a0cd 3670 {
b2e2f908 3671 struct symbol *sym, *with_opaque = NULL;
43f3e411
DE
3672 struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu);
3673 const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
f194fefb 3674 struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
da51c347 3675
b2e2f908
DE
3676 sym = block_find_symbol (block, name, domain,
3677 block_find_non_opaque_type_preferred,
3678 &with_opaque);
3679
da51c347
DE
3680 /* Some caution must be observed with overloaded functions
3681 and methods, since the index will not contain any overload
3682 information (but NAME might contain it). */
da51c347 3683
b2e2f908
DE
3684 if (sym != NULL
3685 && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
3686 return stab;
3687 if (with_opaque != NULL
3688 && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
3689 stab_best = stab;
da51c347
DE
3690
3691 /* Keep looking through other CUs. */
9291a0cd
TT
3692 }
3693 }
9291a0cd 3694
da51c347 3695 return stab_best;
9291a0cd
TT
3696}
3697
3698static void
3699dw2_print_stats (struct objfile *objfile)
3700{
e4a48d9d 3701 int i, total, count;
9291a0cd
TT
3702
3703 dw2_setup (objfile);
e4a48d9d 3704 total = dwarf2_per_objfile->n_comp_units + dwarf2_per_objfile->n_type_units;
9291a0cd 3705 count = 0;
e4a48d9d 3706 for (i = 0; i < total; ++i)
9291a0cd 3707 {
8832e7e3 3708 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3709
43f3e411 3710 if (!per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3711 ++count;
3712 }
e4a48d9d 3713 printf_filtered (_(" Number of read CUs: %d\n"), total - count);
9291a0cd
TT
3714 printf_filtered (_(" Number of unread CUs: %d\n"), count);
3715}
3716
779bd270
DE
3717/* This dumps minimal information about the index.
3718 It is called via "mt print objfiles".
3719 One use is to verify .gdb_index has been loaded by the
3720 gdb.dwarf2/gdb-index.exp testcase. */
3721
9291a0cd
TT
3722static void
3723dw2_dump (struct objfile *objfile)
3724{
779bd270
DE
3725 dw2_setup (objfile);
3726 gdb_assert (dwarf2_per_objfile->using_index);
3727 printf_filtered (".gdb_index:");
3728 if (dwarf2_per_objfile->index_table != NULL)
3729 {
3730 printf_filtered (" version %d\n",
3731 dwarf2_per_objfile->index_table->version);
3732 }
3733 else
3734 printf_filtered (" faked for \"readnow\"\n");
3735 printf_filtered ("\n");
9291a0cd
TT
3736}
3737
3738static void
3189cb12
DE
3739dw2_relocate (struct objfile *objfile,
3740 const struct section_offsets *new_offsets,
3741 const struct section_offsets *delta)
9291a0cd
TT
3742{
3743 /* There's nothing to relocate here. */
3744}
3745
3746static void
3747dw2_expand_symtabs_for_function (struct objfile *objfile,
3748 const char *func_name)
3749{
da51c347
DE
3750 struct mapped_index *index;
3751
3752 dw2_setup (objfile);
3753
3754 index = dwarf2_per_objfile->index_table;
3755
3756 /* index is NULL if OBJF_READNOW. */
3757 if (index)
3758 {
3759 struct dw2_symtab_iterator iter;
3760 struct dwarf2_per_cu_data *per_cu;
3761
3762 /* Note: It doesn't matter what we pass for block_index here. */
3763 dw2_symtab_iter_init (&iter, index, 0, GLOBAL_BLOCK, VAR_DOMAIN,
3764 func_name);
3765
3766 while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
3767 dw2_instantiate_symtab (per_cu);
3768 }
9291a0cd
TT
3769}
3770
3771static void
3772dw2_expand_all_symtabs (struct objfile *objfile)
3773{
3774 int i;
3775
3776 dw2_setup (objfile);
1fd400ff
TT
3777
3778 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 3779 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 3780 {
8832e7e3 3781 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 3782
a0f42c21 3783 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3784 }
3785}
3786
3787static void
652a8996
JK
3788dw2_expand_symtabs_with_fullname (struct objfile *objfile,
3789 const char *fullname)
9291a0cd
TT
3790{
3791 int i;
3792
3793 dw2_setup (objfile);
d4637a04
DE
3794
3795 /* We don't need to consider type units here.
3796 This is only called for examining code, e.g. expand_line_sal.
3797 There can be an order of magnitude (or more) more type units
3798 than comp units, and we avoid them if we can. */
3799
3800 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
3801 {
3802 int j;
8832e7e3 3803 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
7b9f3c50 3804 struct quick_file_names *file_data;
9291a0cd 3805
3d7bb9d9 3806 /* We only need to look at symtabs not already expanded. */
43f3e411 3807 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
3808 continue;
3809
e4a48d9d 3810 file_data = dw2_get_file_names (per_cu);
7b9f3c50 3811 if (file_data == NULL)
9291a0cd
TT
3812 continue;
3813
7b9f3c50 3814 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 3815 {
652a8996
JK
3816 const char *this_fullname = file_data->file_names[j];
3817
3818 if (filename_cmp (this_fullname, fullname) == 0)
9291a0cd 3819 {
a0f42c21 3820 dw2_instantiate_symtab (per_cu);
9291a0cd
TT
3821 break;
3822 }
3823 }
3824 }
3825}
3826
9291a0cd 3827static void
ade7ed9e 3828dw2_map_matching_symbols (struct objfile *objfile,
fe978cb0 3829 const char * name, domain_enum domain,
ade7ed9e 3830 int global,
40658b94
PH
3831 int (*callback) (struct block *,
3832 struct symbol *, void *),
2edb89d3
JK
3833 void *data, symbol_compare_ftype *match,
3834 symbol_compare_ftype *ordered_compare)
9291a0cd 3835{
40658b94 3836 /* Currently unimplemented; used for Ada. The function can be called if the
a9e6a4bb
JK
3837 current language is Ada for a non-Ada objfile using GNU index. As Ada
3838 does not look for non-Ada symbols this function should just return. */
9291a0cd
TT
3839}
3840
3841static void
f8eba3c6
TT
3842dw2_expand_symtabs_matching
3843 (struct objfile *objfile,
206f2a57
DE
3844 expand_symtabs_file_matcher_ftype *file_matcher,
3845 expand_symtabs_symbol_matcher_ftype *symbol_matcher,
276d885b 3846 expand_symtabs_exp_notify_ftype *expansion_notify,
f8eba3c6
TT
3847 enum search_domain kind,
3848 void *data)
9291a0cd
TT
3849{
3850 int i;
3851 offset_type iter;
4b5246aa 3852 struct mapped_index *index;
9291a0cd
TT
3853
3854 dw2_setup (objfile);
ae2de4f8
DE
3855
3856 /* index_table is NULL if OBJF_READNOW. */
9291a0cd
TT
3857 if (!dwarf2_per_objfile->index_table)
3858 return;
4b5246aa 3859 index = dwarf2_per_objfile->index_table;
9291a0cd 3860
7b08b9eb 3861 if (file_matcher != NULL)
24c79950
TT
3862 {
3863 struct cleanup *cleanup;
3864 htab_t visited_found, visited_not_found;
3865
3866 visited_found = htab_create_alloc (10,
3867 htab_hash_pointer, htab_eq_pointer,
3868 NULL, xcalloc, xfree);
3869 cleanup = make_cleanup_htab_delete (visited_found);
3870 visited_not_found = htab_create_alloc (10,
3871 htab_hash_pointer, htab_eq_pointer,
3872 NULL, xcalloc, xfree);
3873 make_cleanup_htab_delete (visited_not_found);
3874
848e3e78
DE
3875 /* The rule is CUs specify all the files, including those used by
3876 any TU, so there's no need to scan TUs here. */
3877
3878 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950
TT
3879 {
3880 int j;
8832e7e3 3881 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
24c79950
TT
3882 struct quick_file_names *file_data;
3883 void **slot;
7b08b9eb 3884
61d96d7e
DE
3885 QUIT;
3886
24c79950 3887 per_cu->v.quick->mark = 0;
3d7bb9d9 3888
24c79950 3889 /* We only need to look at symtabs not already expanded. */
43f3e411 3890 if (per_cu->v.quick->compunit_symtab)
24c79950 3891 continue;
7b08b9eb 3892
e4a48d9d 3893 file_data = dw2_get_file_names (per_cu);
24c79950
TT
3894 if (file_data == NULL)
3895 continue;
7b08b9eb 3896
24c79950
TT
3897 if (htab_find (visited_not_found, file_data) != NULL)
3898 continue;
3899 else if (htab_find (visited_found, file_data) != NULL)
3900 {
3901 per_cu->v.quick->mark = 1;
3902 continue;
3903 }
3904
3905 for (j = 0; j < file_data->num_file_names; ++j)
3906 {
da235a7c
JK
3907 const char *this_real_name;
3908
fbd9ab74 3909 if (file_matcher (file_data->file_names[j], data, 0))
24c79950
TT
3910 {
3911 per_cu->v.quick->mark = 1;
3912 break;
3913 }
da235a7c
JK
3914
3915 /* Before we invoke realpath, which can get expensive when many
3916 files are involved, do a quick comparison of the basenames. */
3917 if (!basenames_may_differ
3918 && !file_matcher (lbasename (file_data->file_names[j]),
3919 data, 1))
3920 continue;
3921
3922 this_real_name = dw2_get_real_path (objfile, file_data, j);
3923 if (file_matcher (this_real_name, data, 0))
3924 {
3925 per_cu->v.quick->mark = 1;
3926 break;
3927 }
24c79950
TT
3928 }
3929
3930 slot = htab_find_slot (per_cu->v.quick->mark
3931 ? visited_found
3932 : visited_not_found,
3933 file_data, INSERT);
3934 *slot = file_data;
3935 }
3936
3937 do_cleanups (cleanup);
3938 }
9291a0cd 3939
3876f04e 3940 for (iter = 0; iter < index->symbol_table_slots; ++iter)
9291a0cd
TT
3941 {
3942 offset_type idx = 2 * iter;
3943 const char *name;
3944 offset_type *vec, vec_len, vec_idx;
8943b874 3945 int global_seen = 0;
9291a0cd 3946
61d96d7e
DE
3947 QUIT;
3948
3876f04e 3949 if (index->symbol_table[idx] == 0 && index->symbol_table[idx + 1] == 0)
9291a0cd
TT
3950 continue;
3951
3876f04e 3952 name = index->constant_pool + MAYBE_SWAP (index->symbol_table[idx]);
9291a0cd 3953
206f2a57 3954 if (! (*symbol_matcher) (name, data))
9291a0cd
TT
3955 continue;
3956
3957 /* The name was matched, now expand corresponding CUs that were
3958 marked. */
4b5246aa 3959 vec = (offset_type *) (index->constant_pool
3876f04e 3960 + MAYBE_SWAP (index->symbol_table[idx + 1]));
9291a0cd
TT
3961 vec_len = MAYBE_SWAP (vec[0]);
3962 for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
3963 {
e254ef6a 3964 struct dwarf2_per_cu_data *per_cu;
156942c7 3965 offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
8943b874
DE
3966 /* This value is only valid for index versions >= 7. */
3967 int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
156942c7
DE
3968 gdb_index_symbol_kind symbol_kind =
3969 GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3970 int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3190f0c6
DE
3971 /* Only check the symbol attributes if they're present.
3972 Indices prior to version 7 don't record them,
3973 and indices >= 7 may elide them for certain symbols
3974 (gold does this). */
3975 int attrs_valid =
3976 (index->version >= 7
3977 && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3978
8943b874
DE
3979 /* Work around gold/15646. */
3980 if (attrs_valid)
3981 {
3982 if (!is_static && global_seen)
3983 continue;
3984 if (!is_static)
3985 global_seen = 1;
3986 }
3987
3190f0c6
DE
3988 /* Only check the symbol's kind if it has one. */
3989 if (attrs_valid)
156942c7
DE
3990 {
3991 switch (kind)
3992 {
3993 case VARIABLES_DOMAIN:
3994 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
3995 continue;
3996 break;
3997 case FUNCTIONS_DOMAIN:
3998 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
3999 continue;
4000 break;
4001 case TYPES_DOMAIN:
4002 if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4003 continue;
4004 break;
4005 default:
4006 break;
4007 }
4008 }
4009
3190f0c6
DE
4010 /* Don't crash on bad data. */
4011 if (cu_index >= (dwarf2_per_objfile->n_comp_units
4012 + dwarf2_per_objfile->n_type_units))
4013 {
4014 complaint (&symfile_complaints,
4015 _(".gdb_index entry has bad CU index"
4262abfb 4016 " [in module %s]"), objfile_name (objfile));
3190f0c6
DE
4017 continue;
4018 }
4019
8832e7e3 4020 per_cu = dw2_get_cutu (cu_index);
7b08b9eb 4021 if (file_matcher == NULL || per_cu->v.quick->mark)
276d885b
GB
4022 {
4023 int symtab_was_null =
4024 (per_cu->v.quick->compunit_symtab == NULL);
4025
4026 dw2_instantiate_symtab (per_cu);
4027
4028 if (expansion_notify != NULL
4029 && symtab_was_null
4030 && per_cu->v.quick->compunit_symtab != NULL)
4031 {
4032 expansion_notify (per_cu->v.quick->compunit_symtab,
4033 data);
4034 }
4035 }
9291a0cd
TT
4036 }
4037 }
4038}
4039
43f3e411 4040/* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
9703b513
TT
4041 symtab. */
4042
43f3e411
DE
4043static struct compunit_symtab *
4044recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
4045 CORE_ADDR pc)
9703b513
TT
4046{
4047 int i;
4048
43f3e411
DE
4049 if (COMPUNIT_BLOCKVECTOR (cust) != NULL
4050 && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
4051 return cust;
9703b513 4052
43f3e411 4053 if (cust->includes == NULL)
a3ec0bb1
DE
4054 return NULL;
4055
43f3e411 4056 for (i = 0; cust->includes[i]; ++i)
9703b513 4057 {
43f3e411 4058 struct compunit_symtab *s = cust->includes[i];
9703b513 4059
43f3e411 4060 s = recursively_find_pc_sect_compunit_symtab (s, pc);
9703b513
TT
4061 if (s != NULL)
4062 return s;
4063 }
4064
4065 return NULL;
4066}
4067
43f3e411
DE
4068static struct compunit_symtab *
4069dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
4070 struct bound_minimal_symbol msymbol,
4071 CORE_ADDR pc,
4072 struct obj_section *section,
4073 int warn_if_readin)
9291a0cd
TT
4074{
4075 struct dwarf2_per_cu_data *data;
43f3e411 4076 struct compunit_symtab *result;
9291a0cd
TT
4077
4078 dw2_setup (objfile);
4079
4080 if (!objfile->psymtabs_addrmap)
4081 return NULL;
4082
4083 data = addrmap_find (objfile->psymtabs_addrmap, pc);
4084 if (!data)
4085 return NULL;
4086
43f3e411 4087 if (warn_if_readin && data->v.quick->compunit_symtab)
abebb8b0 4088 warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
9291a0cd
TT
4089 paddress (get_objfile_arch (objfile), pc));
4090
43f3e411
DE
4091 result
4092 = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data),
4093 pc);
9703b513
TT
4094 gdb_assert (result != NULL);
4095 return result;
9291a0cd
TT
4096}
4097
9291a0cd 4098static void
44b13c5a 4099dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
74e2f255 4100 void *data, int need_fullname)
9291a0cd
TT
4101{
4102 int i;
24c79950
TT
4103 struct cleanup *cleanup;
4104 htab_t visited = htab_create_alloc (10, htab_hash_pointer, htab_eq_pointer,
4105 NULL, xcalloc, xfree);
9291a0cd 4106
24c79950 4107 cleanup = make_cleanup_htab_delete (visited);
9291a0cd 4108 dw2_setup (objfile);
ae2de4f8 4109
848e3e78
DE
4110 /* The rule is CUs specify all the files, including those used by
4111 any TU, so there's no need to scan TUs here.
4112 We can ignore file names coming from already-expanded CUs. */
f4dc4d17 4113
848e3e78 4114 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
24c79950 4115 {
8832e7e3 4116 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
24c79950 4117
43f3e411 4118 if (per_cu->v.quick->compunit_symtab)
24c79950
TT
4119 {
4120 void **slot = htab_find_slot (visited, per_cu->v.quick->file_names,
4121 INSERT);
4122
4123 *slot = per_cu->v.quick->file_names;
4124 }
4125 }
4126
848e3e78 4127 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
9291a0cd
TT
4128 {
4129 int j;
8832e7e3 4130 struct dwarf2_per_cu_data *per_cu = dw2_get_cu (i);
7b9f3c50 4131 struct quick_file_names *file_data;
24c79950 4132 void **slot;
9291a0cd 4133
3d7bb9d9 4134 /* We only need to look at symtabs not already expanded. */
43f3e411 4135 if (per_cu->v.quick->compunit_symtab)
9291a0cd
TT
4136 continue;
4137
e4a48d9d 4138 file_data = dw2_get_file_names (per_cu);
7b9f3c50 4139 if (file_data == NULL)
9291a0cd
TT
4140 continue;
4141
24c79950
TT
4142 slot = htab_find_slot (visited, file_data, INSERT);
4143 if (*slot)
4144 {
4145 /* Already visited. */
4146 continue;
4147 }
4148 *slot = file_data;
4149
7b9f3c50 4150 for (j = 0; j < file_data->num_file_names; ++j)
9291a0cd 4151 {
74e2f255
DE
4152 const char *this_real_name;
4153
4154 if (need_fullname)
4155 this_real_name = dw2_get_real_path (objfile, file_data, j);
4156 else
4157 this_real_name = NULL;
7b9f3c50 4158 (*fun) (file_data->file_names[j], this_real_name, data);
9291a0cd
TT
4159 }
4160 }
24c79950
TT
4161
4162 do_cleanups (cleanup);
9291a0cd
TT
4163}
4164
4165static int
4166dw2_has_symbols (struct objfile *objfile)
4167{
4168 return 1;
4169}
4170
4171const struct quick_symbol_functions dwarf2_gdb_index_functions =
4172{
4173 dw2_has_symbols,
4174 dw2_find_last_source_symtab,
4175 dw2_forget_cached_source_info,
f8eba3c6 4176 dw2_map_symtabs_matching_filename,
9291a0cd 4177 dw2_lookup_symbol,
9291a0cd
TT
4178 dw2_print_stats,
4179 dw2_dump,
4180 dw2_relocate,
4181 dw2_expand_symtabs_for_function,
4182 dw2_expand_all_symtabs,
652a8996 4183 dw2_expand_symtabs_with_fullname,
40658b94 4184 dw2_map_matching_symbols,
9291a0cd 4185 dw2_expand_symtabs_matching,
43f3e411 4186 dw2_find_pc_sect_compunit_symtab,
9291a0cd
TT
4187 dw2_map_symbol_filenames
4188};
4189
4190/* Initialize for reading DWARF for this objfile. Return 0 if this
4191 file will use psymtabs, or 1 if using the GNU index. */
4192
4193int
4194dwarf2_initialize_objfile (struct objfile *objfile)
4195{
4196 /* If we're about to read full symbols, don't bother with the
4197 indices. In this case we also don't care if some other debug
4198 format is making psymtabs, because they are all about to be
4199 expanded anyway. */
4200 if ((objfile->flags & OBJF_READNOW))
4201 {
4202 int i;
4203
4204 dwarf2_per_objfile->using_index = 1;
4205 create_all_comp_units (objfile);
0e50663e 4206 create_all_type_units (objfile);
7b9f3c50
DE
4207 dwarf2_per_objfile->quick_file_names_table =
4208 create_quick_file_names_table (dwarf2_per_objfile->n_comp_units);
9291a0cd 4209
1fd400ff 4210 for (i = 0; i < (dwarf2_per_objfile->n_comp_units
d467dd73 4211 + dwarf2_per_objfile->n_type_units); ++i)
9291a0cd 4212 {
8832e7e3 4213 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
9291a0cd 4214
e254ef6a
DE
4215 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4216 struct dwarf2_per_cu_quick_data);
9291a0cd
TT
4217 }
4218
4219 /* Return 1 so that gdb sees the "quick" functions. However,
4220 these functions will be no-ops because we will have expanded
4221 all symtabs. */
4222 return 1;
4223 }
4224
4225 if (dwarf2_read_index (objfile))
4226 return 1;
4227
9291a0cd
TT
4228 return 0;
4229}
4230
4231\f
4232
dce234bc
PP
4233/* Build a partial symbol table. */
4234
4235void
f29dff0a 4236dwarf2_build_psymtabs (struct objfile *objfile)
dce234bc 4237{
c9bf0622 4238
f29dff0a 4239 if (objfile->global_psymbols.size == 0 && objfile->static_psymbols.size == 0)
c906108c
SS
4240 {
4241 init_psymbol_list (objfile, 1024);
4242 }
4243
492d29ea 4244 TRY
c9bf0622
TT
4245 {
4246 /* This isn't really ideal: all the data we allocate on the
4247 objfile's obstack is still uselessly kept around. However,
4248 freeing it seems unsafe. */
4249 struct cleanup *cleanups = make_cleanup_discard_psymtabs (objfile);
4250
4251 dwarf2_build_psymtabs_hard (objfile);
4252 discard_cleanups (cleanups);
4253 }
492d29ea
PA
4254 CATCH (except, RETURN_MASK_ERROR)
4255 {
4256 exception_print (gdb_stderr, except);
4257 }
4258 END_CATCH
c906108c 4259}
c906108c 4260
1ce1cefd
DE
4261/* Return the total length of the CU described by HEADER. */
4262
4263static unsigned int
4264get_cu_length (const struct comp_unit_head *header)
4265{
4266 return header->initial_length_size + header->length;
4267}
4268
45452591
DE
4269/* Return TRUE if OFFSET is within CU_HEADER. */
4270
4271static inline int
b64f50a1 4272offset_in_cu_p (const struct comp_unit_head *cu_header, sect_offset offset)
45452591 4273{
b64f50a1 4274 sect_offset bottom = { cu_header->offset.sect_off };
1ce1cefd 4275 sect_offset top = { cu_header->offset.sect_off + get_cu_length (cu_header) };
9a619af0 4276
b64f50a1 4277 return (offset.sect_off >= bottom.sect_off && offset.sect_off < top.sect_off);
45452591
DE
4278}
4279
3b80fe9b
DE
4280/* Find the base address of the compilation unit for range lists and
4281 location lists. It will normally be specified by DW_AT_low_pc.
4282 In DWARF-3 draft 4, the base address could be overridden by
4283 DW_AT_entry_pc. It's been removed, but GCC still uses this for
4284 compilation units with discontinuous ranges. */
4285
4286static void
4287dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
4288{
4289 struct attribute *attr;
4290
4291 cu->base_known = 0;
4292 cu->base_address = 0;
4293
4294 attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
4295 if (attr)
4296 {
31aa7e4e 4297 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4298 cu->base_known = 1;
4299 }
4300 else
4301 {
4302 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
4303 if (attr)
4304 {
31aa7e4e 4305 cu->base_address = attr_value_as_address (attr);
3b80fe9b
DE
4306 cu->base_known = 1;
4307 }
4308 }
4309}
4310
93311388
DE
4311/* Read in the comp unit header information from the debug_info at info_ptr.
4312 NOTE: This leaves members offset, first_die_offset to be filled in
4313 by the caller. */
107d2387 4314
d521ce57 4315static const gdb_byte *
107d2387 4316read_comp_unit_head (struct comp_unit_head *cu_header,
d521ce57 4317 const gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
4318{
4319 int signed_addr;
891d2f0b 4320 unsigned int bytes_read;
c764a876
DE
4321
4322 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
4323 cu_header->initial_length_size = bytes_read;
4324 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 4325 info_ptr += bytes_read;
107d2387
AC
4326 cu_header->version = read_2_bytes (abfd, info_ptr);
4327 info_ptr += 2;
b64f50a1
JK
4328 cu_header->abbrev_offset.sect_off = read_offset (abfd, info_ptr, cu_header,
4329 &bytes_read);
613e1657 4330 info_ptr += bytes_read;
107d2387
AC
4331 cu_header->addr_size = read_1_byte (abfd, info_ptr);
4332 info_ptr += 1;
4333 signed_addr = bfd_get_sign_extend_vma (abfd);
4334 if (signed_addr < 0)
8e65ff28 4335 internal_error (__FILE__, __LINE__,
e2e0b3e5 4336 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 4337 cu_header->signed_addr_p = signed_addr;
c764a876 4338
107d2387
AC
4339 return info_ptr;
4340}
4341
36586728
TT
4342/* Helper function that returns the proper abbrev section for
4343 THIS_CU. */
4344
4345static struct dwarf2_section_info *
4346get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
4347{
4348 struct dwarf2_section_info *abbrev;
4349
4350 if (this_cu->is_dwz)
4351 abbrev = &dwarf2_get_dwz_file ()->abbrev;
4352 else
4353 abbrev = &dwarf2_per_objfile->abbrev;
4354
4355 return abbrev;
4356}
4357
9ff913ba
DE
4358/* Subroutine of read_and_check_comp_unit_head and
4359 read_and_check_type_unit_head to simplify them.
4360 Perform various error checking on the header. */
4361
4362static void
4363error_check_comp_unit_head (struct comp_unit_head *header,
4bdcc0c1
DE
4364 struct dwarf2_section_info *section,
4365 struct dwarf2_section_info *abbrev_section)
9ff913ba 4366{
a32a8923
DE
4367 bfd *abfd = get_section_bfd_owner (section);
4368 const char *filename = get_section_file_name (section);
9ff913ba
DE
4369
4370 if (header->version != 2 && header->version != 3 && header->version != 4)
4371 error (_("Dwarf Error: wrong version in compilation unit header "
4372 "(is %d, should be 2, 3, or 4) [in module %s]"), header->version,
4373 filename);
4374
b64f50a1 4375 if (header->abbrev_offset.sect_off
36586728 4376 >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
9ff913ba
DE
4377 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
4378 "(offset 0x%lx + 6) [in module %s]"),
b64f50a1 4379 (long) header->abbrev_offset.sect_off, (long) header->offset.sect_off,
9ff913ba
DE
4380 filename);
4381
4382 /* Cast to unsigned long to use 64-bit arithmetic when possible to
4383 avoid potential 32-bit overflow. */
1ce1cefd 4384 if (((unsigned long) header->offset.sect_off + get_cu_length (header))
9ff913ba
DE
4385 > section->size)
4386 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
4387 "(offset 0x%lx + 0) [in module %s]"),
b64f50a1 4388 (long) header->length, (long) header->offset.sect_off,
9ff913ba
DE
4389 filename);
4390}
4391
4392/* Read in a CU/TU header and perform some basic error checking.
4393 The contents of the header are stored in HEADER.
4394 The result is a pointer to the start of the first DIE. */
adabb602 4395
d521ce57 4396static const gdb_byte *
9ff913ba
DE
4397read_and_check_comp_unit_head (struct comp_unit_head *header,
4398 struct dwarf2_section_info *section,
4bdcc0c1 4399 struct dwarf2_section_info *abbrev_section,
d521ce57 4400 const gdb_byte *info_ptr,
9ff913ba 4401 int is_debug_types_section)
72bf9492 4402{
d521ce57 4403 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4404 bfd *abfd = get_section_bfd_owner (section);
72bf9492 4405
b64f50a1 4406 header->offset.sect_off = beg_of_comp_unit - section->buffer;
adabb602 4407
72bf9492
DJ
4408 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
4409
460c1c54
CC
4410 /* If we're reading a type unit, skip over the signature and
4411 type_offset fields. */
b0df02fd 4412 if (is_debug_types_section)
460c1c54
CC
4413 info_ptr += 8 /*signature*/ + header->offset_size;
4414
b64f50a1 4415 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
adabb602 4416
4bdcc0c1 4417 error_check_comp_unit_head (header, section, abbrev_section);
72bf9492
DJ
4418
4419 return info_ptr;
4420}
4421
348e048f
DE
4422/* Read in the types comp unit header information from .debug_types entry at
4423 types_ptr. The result is a pointer to one past the end of the header. */
4424
d521ce57 4425static const gdb_byte *
9ff913ba
DE
4426read_and_check_type_unit_head (struct comp_unit_head *header,
4427 struct dwarf2_section_info *section,
4bdcc0c1 4428 struct dwarf2_section_info *abbrev_section,
d521ce57 4429 const gdb_byte *info_ptr,
dee91e82
DE
4430 ULONGEST *signature,
4431 cu_offset *type_offset_in_tu)
348e048f 4432{
d521ce57 4433 const gdb_byte *beg_of_comp_unit = info_ptr;
a32a8923 4434 bfd *abfd = get_section_bfd_owner (section);
348e048f 4435
b64f50a1 4436 header->offset.sect_off = beg_of_comp_unit - section->buffer;
348e048f 4437
9ff913ba 4438 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
348e048f 4439
9ff913ba
DE
4440 /* If we're reading a type unit, skip over the signature and
4441 type_offset fields. */
4442 if (signature != NULL)
4443 *signature = read_8_bytes (abfd, info_ptr);
4444 info_ptr += 8;
dee91e82
DE
4445 if (type_offset_in_tu != NULL)
4446 type_offset_in_tu->cu_off = read_offset_1 (abfd, info_ptr,
4447 header->offset_size);
9ff913ba
DE
4448 info_ptr += header->offset_size;
4449
b64f50a1 4450 header->first_die_offset.cu_off = info_ptr - beg_of_comp_unit;
348e048f 4451
4bdcc0c1 4452 error_check_comp_unit_head (header, section, abbrev_section);
9ff913ba
DE
4453
4454 return info_ptr;
348e048f
DE
4455}
4456
f4dc4d17
DE
4457/* Fetch the abbreviation table offset from a comp or type unit header. */
4458
4459static sect_offset
4460read_abbrev_offset (struct dwarf2_section_info *section,
4461 sect_offset offset)
4462{
a32a8923 4463 bfd *abfd = get_section_bfd_owner (section);
d521ce57 4464 const gdb_byte *info_ptr;
f4dc4d17
DE
4465 unsigned int length, initial_length_size, offset_size;
4466 sect_offset abbrev_offset;
4467
4468 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
4469 info_ptr = section->buffer + offset.sect_off;
4470 length = read_initial_length (abfd, info_ptr, &initial_length_size);
4471 offset_size = initial_length_size == 4 ? 4 : 8;
4472 info_ptr += initial_length_size + 2 /*version*/;
4473 abbrev_offset.sect_off = read_offset_1 (abfd, info_ptr, offset_size);
4474 return abbrev_offset;
4475}
4476
aaa75496
JB
4477/* Allocate a new partial symtab for file named NAME and mark this new
4478 partial symtab as being an include of PST. */
4479
4480static void
d521ce57 4481dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
aaa75496
JB
4482 struct objfile *objfile)
4483{
4484 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
4485
fbd9ab74
JK
4486 if (!IS_ABSOLUTE_PATH (subpst->filename))
4487 {
4488 /* It shares objfile->objfile_obstack. */
4489 subpst->dirname = pst->dirname;
4490 }
4491
aaa75496
JB
4492 subpst->textlow = 0;
4493 subpst->texthigh = 0;
4494
4495 subpst->dependencies = (struct partial_symtab **)
4496 obstack_alloc (&objfile->objfile_obstack,
4497 sizeof (struct partial_symtab *));
4498 subpst->dependencies[0] = pst;
4499 subpst->number_of_dependencies = 1;
4500
4501 subpst->globals_offset = 0;
4502 subpst->n_global_syms = 0;
4503 subpst->statics_offset = 0;
4504 subpst->n_static_syms = 0;
43f3e411 4505 subpst->compunit_symtab = NULL;
aaa75496
JB
4506 subpst->read_symtab = pst->read_symtab;
4507 subpst->readin = 0;
4508
4509 /* No private part is necessary for include psymtabs. This property
4510 can be used to differentiate between such include psymtabs and
10b3939b 4511 the regular ones. */
58a9656e 4512 subpst->read_symtab_private = NULL;
aaa75496
JB
4513}
4514
4515/* Read the Line Number Program data and extract the list of files
4516 included by the source file represented by PST. Build an include
d85a05f0 4517 partial symtab for each of these included files. */
aaa75496
JB
4518
4519static void
4520dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
dee91e82
DE
4521 struct die_info *die,
4522 struct partial_symtab *pst)
aaa75496 4523{
d85a05f0
DJ
4524 struct line_header *lh = NULL;
4525 struct attribute *attr;
aaa75496 4526
d85a05f0
DJ
4527 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
4528 if (attr)
3019eac3 4529 lh = dwarf_decode_line_header (DW_UNSND (attr), cu);
aaa75496
JB
4530 if (lh == NULL)
4531 return; /* No linetable, so no includes. */
4532
c6da4cef 4533 /* NOTE: pst->dirname is DW_AT_comp_dir (if present). */
527f3840 4534 dwarf_decode_lines (lh, pst->dirname, cu, pst, pst->textlow, 1);
aaa75496
JB
4535
4536 free_line_header (lh);
4537}
4538
348e048f 4539static hashval_t
52dc124a 4540hash_signatured_type (const void *item)
348e048f 4541{
52dc124a 4542 const struct signatured_type *sig_type = item;
9a619af0 4543
348e048f 4544 /* This drops the top 32 bits of the signature, but is ok for a hash. */
52dc124a 4545 return sig_type->signature;
348e048f
DE
4546}
4547
4548static int
52dc124a 4549eq_signatured_type (const void *item_lhs, const void *item_rhs)
348e048f
DE
4550{
4551 const struct signatured_type *lhs = item_lhs;
4552 const struct signatured_type *rhs = item_rhs;
9a619af0 4553
348e048f
DE
4554 return lhs->signature == rhs->signature;
4555}
4556
1fd400ff
TT
4557/* Allocate a hash table for signatured types. */
4558
4559static htab_t
673bfd45 4560allocate_signatured_type_table (struct objfile *objfile)
1fd400ff
TT
4561{
4562 return htab_create_alloc_ex (41,
52dc124a
DE
4563 hash_signatured_type,
4564 eq_signatured_type,
1fd400ff
TT
4565 NULL,
4566 &objfile->objfile_obstack,
4567 hashtab_obstack_allocate,
4568 dummy_obstack_deallocate);
4569}
4570
d467dd73 4571/* A helper function to add a signatured type CU to a table. */
1fd400ff
TT
4572
4573static int
d467dd73 4574add_signatured_type_cu_to_table (void **slot, void *datum)
1fd400ff
TT
4575{
4576 struct signatured_type *sigt = *slot;
b4dd5633 4577 struct signatured_type ***datap = datum;
1fd400ff 4578
b4dd5633 4579 **datap = sigt;
1fd400ff
TT
4580 ++*datap;
4581
4582 return 1;
4583}
4584
c88ee1f0
DE
4585/* Create the hash table of all entries in the .debug_types
4586 (or .debug_types.dwo) section(s).
4587 If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
4588 otherwise it is NULL.
4589
4590 The result is a pointer to the hash table or NULL if there are no types.
4591
4592 Note: This function processes DWO files only, not DWP files. */
348e048f 4593
3019eac3
DE
4594static htab_t
4595create_debug_types_hash_table (struct dwo_file *dwo_file,
4596 VEC (dwarf2_section_info_def) *types)
348e048f 4597{
3019eac3 4598 struct objfile *objfile = dwarf2_per_objfile->objfile;
8b70b953 4599 htab_t types_htab = NULL;
8b70b953
TT
4600 int ix;
4601 struct dwarf2_section_info *section;
4bdcc0c1 4602 struct dwarf2_section_info *abbrev_section;
348e048f 4603
3019eac3
DE
4604 if (VEC_empty (dwarf2_section_info_def, types))
4605 return NULL;
348e048f 4606
4bdcc0c1
DE
4607 abbrev_section = (dwo_file != NULL
4608 ? &dwo_file->sections.abbrev
4609 : &dwarf2_per_objfile->abbrev);
4610
b4f54984 4611 if (dwarf_read_debug)
09406207
DE
4612 fprintf_unfiltered (gdb_stdlog, "Reading .debug_types%s for %s:\n",
4613 dwo_file ? ".dwo" : "",
a32a8923 4614 get_section_file_name (abbrev_section));
09406207 4615
8b70b953 4616 for (ix = 0;
3019eac3 4617 VEC_iterate (dwarf2_section_info_def, types, ix, section);
8b70b953
TT
4618 ++ix)
4619 {
3019eac3 4620 bfd *abfd;
d521ce57 4621 const gdb_byte *info_ptr, *end_ptr;
348e048f 4622
8b70b953
TT
4623 dwarf2_read_section (objfile, section);
4624 info_ptr = section->buffer;
348e048f 4625
8b70b953
TT
4626 if (info_ptr == NULL)
4627 continue;
348e048f 4628
3019eac3 4629 /* We can't set abfd until now because the section may be empty or
a32a8923
DE
4630 not present, in which case the bfd is unknown. */
4631 abfd = get_section_bfd_owner (section);
3019eac3 4632
dee91e82
DE
4633 /* We don't use init_cutu_and_read_dies_simple, or some such, here
4634 because we don't need to read any dies: the signature is in the
4635 header. */
8b70b953
TT
4636
4637 end_ptr = info_ptr + section->size;
4638 while (info_ptr < end_ptr)
4639 {
b64f50a1 4640 sect_offset offset;
3019eac3 4641 cu_offset type_offset_in_tu;
8b70b953 4642 ULONGEST signature;
52dc124a 4643 struct signatured_type *sig_type;
3019eac3 4644 struct dwo_unit *dwo_tu;
8b70b953 4645 void **slot;
d521ce57 4646 const gdb_byte *ptr = info_ptr;
9ff913ba 4647 struct comp_unit_head header;
dee91e82 4648 unsigned int length;
348e048f 4649
b64f50a1 4650 offset.sect_off = ptr - section->buffer;
348e048f 4651
8b70b953 4652 /* We need to read the type's signature in order to build the hash
9ff913ba 4653 table, but we don't need anything else just yet. */
348e048f 4654
4bdcc0c1
DE
4655 ptr = read_and_check_type_unit_head (&header, section,
4656 abbrev_section, ptr,
3019eac3 4657 &signature, &type_offset_in_tu);
6caca83c 4658
1ce1cefd 4659 length = get_cu_length (&header);
dee91e82 4660
6caca83c 4661 /* Skip dummy type units. */
dee91e82
DE
4662 if (ptr >= info_ptr + length
4663 || peek_abbrev_code (abfd, ptr) == 0)
6caca83c 4664 {
1ce1cefd 4665 info_ptr += length;
6caca83c
CC
4666 continue;
4667 }
8b70b953 4668
0349ea22
DE
4669 if (types_htab == NULL)
4670 {
4671 if (dwo_file)
4672 types_htab = allocate_dwo_unit_table (objfile);
4673 else
4674 types_htab = allocate_signatured_type_table (objfile);
4675 }
4676
3019eac3
DE
4677 if (dwo_file)
4678 {
4679 sig_type = NULL;
4680 dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4681 struct dwo_unit);
4682 dwo_tu->dwo_file = dwo_file;
4683 dwo_tu->signature = signature;
4684 dwo_tu->type_offset_in_tu = type_offset_in_tu;
8a0459fd 4685 dwo_tu->section = section;
3019eac3
DE
4686 dwo_tu->offset = offset;
4687 dwo_tu->length = length;
4688 }
4689 else
4690 {
4691 /* N.B.: type_offset is not usable if this type uses a DWO file.
4692 The real type_offset is in the DWO file. */
4693 dwo_tu = NULL;
4694 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4695 struct signatured_type);
4696 sig_type->signature = signature;
4697 sig_type->type_offset_in_tu = type_offset_in_tu;
4698 sig_type->per_cu.objfile = objfile;
4699 sig_type->per_cu.is_debug_types = 1;
8a0459fd 4700 sig_type->per_cu.section = section;
3019eac3
DE
4701 sig_type->per_cu.offset = offset;
4702 sig_type->per_cu.length = length;
4703 }
8b70b953 4704
3019eac3
DE
4705 slot = htab_find_slot (types_htab,
4706 dwo_file ? (void*) dwo_tu : (void *) sig_type,
4707 INSERT);
8b70b953
TT
4708 gdb_assert (slot != NULL);
4709 if (*slot != NULL)
4710 {
3019eac3
DE
4711 sect_offset dup_offset;
4712
4713 if (dwo_file)
4714 {
4715 const struct dwo_unit *dup_tu = *slot;
4716
4717 dup_offset = dup_tu->offset;
4718 }
4719 else
4720 {
4721 const struct signatured_type *dup_tu = *slot;
4722
4723 dup_offset = dup_tu->per_cu.offset;
4724 }
b3c8eb43 4725
8b70b953 4726 complaint (&symfile_complaints,
c88ee1f0 4727 _("debug type entry at offset 0x%x is duplicate to"
4031ecc5 4728 " the entry at offset 0x%x, signature %s"),
3019eac3 4729 offset.sect_off, dup_offset.sect_off,
4031ecc5 4730 hex_string (signature));
8b70b953 4731 }
3019eac3 4732 *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
348e048f 4733
b4f54984 4734 if (dwarf_read_debug > 1)
4031ecc5 4735 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, signature %s\n",
b64f50a1 4736 offset.sect_off,
4031ecc5 4737 hex_string (signature));
348e048f 4738
dee91e82 4739 info_ptr += length;
8b70b953 4740 }
348e048f
DE
4741 }
4742
3019eac3
DE
4743 return types_htab;
4744}
4745
4746/* Create the hash table of all entries in the .debug_types section,
4747 and initialize all_type_units.
4748 The result is zero if there is an error (e.g. missing .debug_types section),
4749 otherwise non-zero. */
4750
4751static int
4752create_all_type_units (struct objfile *objfile)
4753{
4754 htab_t types_htab;
b4dd5633 4755 struct signatured_type **iter;
3019eac3
DE
4756
4757 types_htab = create_debug_types_hash_table (NULL, dwarf2_per_objfile->types);
4758 if (types_htab == NULL)
4759 {
4760 dwarf2_per_objfile->signatured_types = NULL;
4761 return 0;
4762 }
4763
348e048f
DE
4764 dwarf2_per_objfile->signatured_types = types_htab;
4765
6aa5f3a6
DE
4766 dwarf2_per_objfile->n_type_units
4767 = dwarf2_per_objfile->n_allocated_type_units
4768 = htab_elements (types_htab);
d467dd73 4769 dwarf2_per_objfile->all_type_units
a2ce51a0
DE
4770 = xmalloc (dwarf2_per_objfile->n_type_units
4771 * sizeof (struct signatured_type *));
d467dd73
DE
4772 iter = &dwarf2_per_objfile->all_type_units[0];
4773 htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table, &iter);
4774 gdb_assert (iter - &dwarf2_per_objfile->all_type_units[0]
4775 == dwarf2_per_objfile->n_type_units);
1fd400ff 4776
348e048f
DE
4777 return 1;
4778}
4779
6aa5f3a6
DE
4780/* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
4781 If SLOT is non-NULL, it is the entry to use in the hash table.
4782 Otherwise we find one. */
4783
4784static struct signatured_type *
4785add_type_unit (ULONGEST sig, void **slot)
4786{
4787 struct objfile *objfile = dwarf2_per_objfile->objfile;
4788 int n_type_units = dwarf2_per_objfile->n_type_units;
4789 struct signatured_type *sig_type;
4790
4791 gdb_assert (n_type_units <= dwarf2_per_objfile->n_allocated_type_units);
4792 ++n_type_units;
4793 if (n_type_units > dwarf2_per_objfile->n_allocated_type_units)
4794 {
4795 if (dwarf2_per_objfile->n_allocated_type_units == 0)
4796 dwarf2_per_objfile->n_allocated_type_units = 1;
4797 dwarf2_per_objfile->n_allocated_type_units *= 2;
4798 dwarf2_per_objfile->all_type_units
4799 = xrealloc (dwarf2_per_objfile->all_type_units,
4800 dwarf2_per_objfile->n_allocated_type_units
4801 * sizeof (struct signatured_type *));
4802 ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
4803 }
4804 dwarf2_per_objfile->n_type_units = n_type_units;
4805
4806 sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
4807 struct signatured_type);
4808 dwarf2_per_objfile->all_type_units[n_type_units - 1] = sig_type;
4809 sig_type->signature = sig;
4810 sig_type->per_cu.is_debug_types = 1;
4811 if (dwarf2_per_objfile->using_index)
4812 {
4813 sig_type->per_cu.v.quick =
4814 OBSTACK_ZALLOC (&objfile->objfile_obstack,
4815 struct dwarf2_per_cu_quick_data);
4816 }
4817
4818 if (slot == NULL)
4819 {
4820 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4821 sig_type, INSERT);
4822 }
4823 gdb_assert (*slot == NULL);
4824 *slot = sig_type;
4825 /* The rest of sig_type must be filled in by the caller. */
4826 return sig_type;
4827}
4828
a2ce51a0
DE
4829/* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
4830 Fill in SIG_ENTRY with DWO_ENTRY. */
4831
4832static void
4833fill_in_sig_entry_from_dwo_entry (struct objfile *objfile,
4834 struct signatured_type *sig_entry,
4835 struct dwo_unit *dwo_entry)
4836{
7ee85ab1 4837 /* Make sure we're not clobbering something we don't expect to. */
a2ce51a0
DE
4838 gdb_assert (! sig_entry->per_cu.queued);
4839 gdb_assert (sig_entry->per_cu.cu == NULL);
6aa5f3a6
DE
4840 if (dwarf2_per_objfile->using_index)
4841 {
4842 gdb_assert (sig_entry->per_cu.v.quick != NULL);
43f3e411 4843 gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6aa5f3a6
DE
4844 }
4845 else
4846 gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
a2ce51a0
DE
4847 gdb_assert (sig_entry->signature == dwo_entry->signature);
4848 gdb_assert (sig_entry->type_offset_in_section.sect_off == 0);
4849 gdb_assert (sig_entry->type_unit_group == NULL);
7ee85ab1
DE
4850 gdb_assert (sig_entry->dwo_unit == NULL);
4851
4852 sig_entry->per_cu.section = dwo_entry->section;
4853 sig_entry->per_cu.offset = dwo_entry->offset;
4854 sig_entry->per_cu.length = dwo_entry->length;
4855 sig_entry->per_cu.reading_dwo_directly = 1;
4856 sig_entry->per_cu.objfile = objfile;
a2ce51a0
DE
4857 sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
4858 sig_entry->dwo_unit = dwo_entry;
4859}
4860
4861/* Subroutine of lookup_signatured_type.
7ee85ab1
DE
4862 If we haven't read the TU yet, create the signatured_type data structure
4863 for a TU to be read in directly from a DWO file, bypassing the stub.
4864 This is the "Stay in DWO Optimization": When there is no DWP file and we're
4865 using .gdb_index, then when reading a CU we want to stay in the DWO file
4866 containing that CU. Otherwise we could end up reading several other DWO
4867 files (due to comdat folding) to process the transitive closure of all the
4868 mentioned TUs, and that can be slow. The current DWO file will have every
4869 type signature that it needs.
a2ce51a0
DE
4870 We only do this for .gdb_index because in the psymtab case we already have
4871 to read all the DWOs to build the type unit groups. */
4872
4873static struct signatured_type *
4874lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4875{
4876 struct objfile *objfile = dwarf2_per_objfile->objfile;
4877 struct dwo_file *dwo_file;
4878 struct dwo_unit find_dwo_entry, *dwo_entry;
4879 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4880 void **slot;
a2ce51a0
DE
4881
4882 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4883
6aa5f3a6
DE
4884 /* If TU skeletons have been removed then we may not have read in any
4885 TUs yet. */
4886 if (dwarf2_per_objfile->signatured_types == NULL)
4887 {
4888 dwarf2_per_objfile->signatured_types
4889 = allocate_signatured_type_table (objfile);
4890 }
a2ce51a0
DE
4891
4892 /* We only ever need to read in one copy of a signatured type.
6aa5f3a6
DE
4893 Use the global signatured_types array to do our own comdat-folding
4894 of types. If this is the first time we're reading this TU, and
4895 the TU has an entry in .gdb_index, replace the recorded data from
4896 .gdb_index with this TU. */
a2ce51a0 4897
a2ce51a0 4898 find_sig_entry.signature = sig;
6aa5f3a6
DE
4899 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4900 &find_sig_entry, INSERT);
4901 sig_entry = *slot;
7ee85ab1
DE
4902
4903 /* We can get here with the TU already read, *or* in the process of being
6aa5f3a6
DE
4904 read. Don't reassign the global entry to point to this DWO if that's
4905 the case. Also note that if the TU is already being read, it may not
4906 have come from a DWO, the program may be a mix of Fission-compiled
4907 code and non-Fission-compiled code. */
4908
4909 /* Have we already tried to read this TU?
4910 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4911 needn't exist in the global table yet). */
4912 if (sig_entry != NULL && sig_entry->per_cu.tu_read)
a2ce51a0
DE
4913 return sig_entry;
4914
6aa5f3a6
DE
4915 /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
4916 dwo_unit of the TU itself. */
4917 dwo_file = cu->dwo_unit->dwo_file;
4918
a2ce51a0
DE
4919 /* Ok, this is the first time we're reading this TU. */
4920 if (dwo_file->tus == NULL)
4921 return NULL;
4922 find_dwo_entry.signature = sig;
4923 dwo_entry = htab_find (dwo_file->tus, &find_dwo_entry);
4924 if (dwo_entry == NULL)
4925 return NULL;
4926
6aa5f3a6
DE
4927 /* If the global table doesn't have an entry for this TU, add one. */
4928 if (sig_entry == NULL)
4929 sig_entry = add_type_unit (sig, slot);
4930
a2ce51a0 4931 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
89e63ee4 4932 sig_entry->per_cu.tu_read = 1;
a2ce51a0
DE
4933 return sig_entry;
4934}
4935
a2ce51a0
DE
4936/* Subroutine of lookup_signatured_type.
4937 Look up the type for signature SIG, and if we can't find SIG in .gdb_index
6aa5f3a6
DE
4938 then try the DWP file. If the TU stub (skeleton) has been removed then
4939 it won't be in .gdb_index. */
a2ce51a0
DE
4940
4941static struct signatured_type *
4942lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
4943{
4944 struct objfile *objfile = dwarf2_per_objfile->objfile;
4945 struct dwp_file *dwp_file = get_dwp_file ();
4946 struct dwo_unit *dwo_entry;
4947 struct signatured_type find_sig_entry, *sig_entry;
6aa5f3a6 4948 void **slot;
a2ce51a0
DE
4949
4950 gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
4951 gdb_assert (dwp_file != NULL);
4952
6aa5f3a6
DE
4953 /* If TU skeletons have been removed then we may not have read in any
4954 TUs yet. */
4955 if (dwarf2_per_objfile->signatured_types == NULL)
a2ce51a0 4956 {
6aa5f3a6
DE
4957 dwarf2_per_objfile->signatured_types
4958 = allocate_signatured_type_table (objfile);
a2ce51a0
DE
4959 }
4960
6aa5f3a6
DE
4961 find_sig_entry.signature = sig;
4962 slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
4963 &find_sig_entry, INSERT);
4964 sig_entry = *slot;
4965
4966 /* Have we already tried to read this TU?
4967 Note: sig_entry can be NULL if the skeleton TU was removed (thus it
4968 needn't exist in the global table yet). */
4969 if (sig_entry != NULL)
4970 return sig_entry;
4971
a2ce51a0
DE
4972 if (dwp_file->tus == NULL)
4973 return NULL;
57d63ce2
DE
4974 dwo_entry = lookup_dwo_unit_in_dwp (dwp_file, NULL,
4975 sig, 1 /* is_debug_types */);
a2ce51a0
DE
4976 if (dwo_entry == NULL)
4977 return NULL;
4978
6aa5f3a6 4979 sig_entry = add_type_unit (sig, slot);
a2ce51a0
DE
4980 fill_in_sig_entry_from_dwo_entry (objfile, sig_entry, dwo_entry);
4981
a2ce51a0
DE
4982 return sig_entry;
4983}
4984
380bca97 4985/* Lookup a signature based type for DW_FORM_ref_sig8.
5a8b3f62
DE
4986 Returns NULL if signature SIG is not present in the table.
4987 It is up to the caller to complain about this. */
348e048f
DE
4988
4989static struct signatured_type *
a2ce51a0 4990lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
348e048f 4991{
a2ce51a0
DE
4992 if (cu->dwo_unit
4993 && dwarf2_per_objfile->using_index)
4994 {
4995 /* We're in a DWO/DWP file, and we're using .gdb_index.
4996 These cases require special processing. */
4997 if (get_dwp_file () == NULL)
4998 return lookup_dwo_signatured_type (cu, sig);
4999 else
5000 return lookup_dwp_signatured_type (cu, sig);
5001 }
5002 else
5003 {
5004 struct signatured_type find_entry, *entry;
348e048f 5005
a2ce51a0
DE
5006 if (dwarf2_per_objfile->signatured_types == NULL)
5007 return NULL;
5008 find_entry.signature = sig;
5009 entry = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
5010 return entry;
5011 }
348e048f 5012}
42e7ad6c
DE
5013\f
5014/* Low level DIE reading support. */
348e048f 5015
d85a05f0
DJ
5016/* Initialize a die_reader_specs struct from a dwarf2_cu struct. */
5017
5018static void
5019init_cu_die_reader (struct die_reader_specs *reader,
dee91e82 5020 struct dwarf2_cu *cu,
3019eac3
DE
5021 struct dwarf2_section_info *section,
5022 struct dwo_file *dwo_file)
d85a05f0 5023{
fceca515 5024 gdb_assert (section->readin && section->buffer != NULL);
a32a8923 5025 reader->abfd = get_section_bfd_owner (section);
d85a05f0 5026 reader->cu = cu;
3019eac3 5027 reader->dwo_file = dwo_file;
dee91e82
DE
5028 reader->die_section = section;
5029 reader->buffer = section->buffer;
f664829e 5030 reader->buffer_end = section->buffer + section->size;
a2ce51a0 5031 reader->comp_dir = NULL;
d85a05f0
DJ
5032}
5033
b0c7bfa9
DE
5034/* Subroutine of init_cutu_and_read_dies to simplify it.
5035 Read in the rest of a CU/TU top level DIE from DWO_UNIT.
5036 There's just a lot of work to do, and init_cutu_and_read_dies is big enough
5037 already.
5038
5039 STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
5040 from it to the DIE in the DWO. If NULL we are skipping the stub.
a2ce51a0
DE
5041 STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
5042 from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
c54a1dd8
DE
5043 attribute of the referencing CU. At most one of STUB_COMP_UNIT_DIE and
5044 STUB_COMP_DIR may be non-NULL.
b0c7bfa9
DE
5045 *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
5046 are filled in with the info of the DIE from the DWO file.
5047 ABBREV_TABLE_PROVIDED is non-zero if the caller of init_cutu_and_read_dies
5048 provided an abbrev table to use.
5049 The result is non-zero if a valid (non-dummy) DIE was found. */
5050
5051static int
5052read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
5053 struct dwo_unit *dwo_unit,
5054 int abbrev_table_provided,
5055 struct die_info *stub_comp_unit_die,
a2ce51a0 5056 const char *stub_comp_dir,
b0c7bfa9 5057 struct die_reader_specs *result_reader,
d521ce57 5058 const gdb_byte **result_info_ptr,
b0c7bfa9
DE
5059 struct die_info **result_comp_unit_die,
5060 int *result_has_children)
5061{
5062 struct objfile *objfile = dwarf2_per_objfile->objfile;
5063 struct dwarf2_cu *cu = this_cu->cu;
5064 struct dwarf2_section_info *section;
5065 bfd *abfd;
d521ce57 5066 const gdb_byte *begin_info_ptr, *info_ptr;
b0c7bfa9
DE
5067 ULONGEST signature; /* Or dwo_id. */
5068 struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
5069 int i,num_extra_attrs;
5070 struct dwarf2_section_info *dwo_abbrev_section;
5071 struct attribute *attr;
5072 struct die_info *comp_unit_die;
5073
b0aeadb3
DE
5074 /* At most one of these may be provided. */
5075 gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
a2ce51a0 5076
b0c7bfa9
DE
5077 /* These attributes aren't processed until later:
5078 DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
0d60c288
DE
5079 DW_AT_comp_dir is used now, to find the DWO file, but it is also
5080 referenced later. However, these attributes are found in the stub
5081 which we won't have later. In order to not impose this complication
5082 on the rest of the code, we read them here and copy them to the
5083 DWO CU/TU die. */
b0c7bfa9
DE
5084
5085 stmt_list = NULL;
5086 low_pc = NULL;
5087 high_pc = NULL;
5088 ranges = NULL;
5089 comp_dir = NULL;
5090
5091 if (stub_comp_unit_die != NULL)
5092 {
5093 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
5094 DWO file. */
5095 if (! this_cu->is_debug_types)
5096 stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
5097 low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
5098 high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
5099 ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
5100 comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
5101
5102 /* There should be a DW_AT_addr_base attribute here (if needed).
5103 We need the value before we can process DW_FORM_GNU_addr_index. */
5104 cu->addr_base = 0;
5105 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
5106 if (attr)
5107 cu->addr_base = DW_UNSND (attr);
5108
5109 /* There should be a DW_AT_ranges_base attribute here (if needed).
5110 We need the value before we can process DW_AT_ranges. */
5111 cu->ranges_base = 0;
5112 attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
5113 if (attr)
5114 cu->ranges_base = DW_UNSND (attr);
5115 }
a2ce51a0
DE
5116 else if (stub_comp_dir != NULL)
5117 {
5118 /* Reconstruct the comp_dir attribute to simplify the code below. */
5119 comp_dir = (struct attribute *)
5120 obstack_alloc (&cu->comp_unit_obstack, sizeof (*comp_dir));
5121 comp_dir->name = DW_AT_comp_dir;
5122 comp_dir->form = DW_FORM_string;
5123 DW_STRING_IS_CANONICAL (comp_dir) = 0;
5124 DW_STRING (comp_dir) = stub_comp_dir;
5125 }
b0c7bfa9
DE
5126
5127 /* Set up for reading the DWO CU/TU. */
5128 cu->dwo_unit = dwo_unit;
5129 section = dwo_unit->section;
5130 dwarf2_read_section (objfile, section);
a32a8923 5131 abfd = get_section_bfd_owner (section);
b0c7bfa9
DE
5132 begin_info_ptr = info_ptr = section->buffer + dwo_unit->offset.sect_off;
5133 dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
5134 init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file);
5135
5136 if (this_cu->is_debug_types)
5137 {
5138 ULONGEST header_signature;
5139 cu_offset type_offset_in_tu;
5140 struct signatured_type *sig_type = (struct signatured_type *) this_cu;
5141
5142 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5143 dwo_abbrev_section,
5144 info_ptr,
5145 &header_signature,
5146 &type_offset_in_tu);
a2ce51a0
DE
5147 /* This is not an assert because it can be caused by bad debug info. */
5148 if (sig_type->signature != header_signature)
5149 {
5150 error (_("Dwarf Error: signature mismatch %s vs %s while reading"
5151 " TU at offset 0x%x [in module %s]"),
5152 hex_string (sig_type->signature),
5153 hex_string (header_signature),
5154 dwo_unit->offset.sect_off,
5155 bfd_get_filename (abfd));
5156 }
b0c7bfa9
DE
5157 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5158 /* For DWOs coming from DWP files, we don't know the CU length
5159 nor the type's offset in the TU until now. */
5160 dwo_unit->length = get_cu_length (&cu->header);
5161 dwo_unit->type_offset_in_tu = type_offset_in_tu;
5162
5163 /* Establish the type offset that can be used to lookup the type.
5164 For DWO files, we don't know it until now. */
5165 sig_type->type_offset_in_section.sect_off =
5166 dwo_unit->offset.sect_off + dwo_unit->type_offset_in_tu.cu_off;
5167 }
5168 else
5169 {
5170 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5171 dwo_abbrev_section,
5172 info_ptr, 0);
5173 gdb_assert (dwo_unit->offset.sect_off == cu->header.offset.sect_off);
5174 /* For DWOs coming from DWP files, we don't know the CU length
5175 until now. */
5176 dwo_unit->length = get_cu_length (&cu->header);
5177 }
5178
02142a6c
DE
5179 /* Replace the CU's original abbrev table with the DWO's.
5180 Reminder: We can't read the abbrev table until we've read the header. */
b0c7bfa9
DE
5181 if (abbrev_table_provided)
5182 {
5183 /* Don't free the provided abbrev table, the caller of
5184 init_cutu_and_read_dies owns it. */
5185 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5186 /* Ensure the DWO abbrev table gets freed. */
b0c7bfa9
DE
5187 make_cleanup (dwarf2_free_abbrev_table, cu);
5188 }
5189 else
5190 {
5191 dwarf2_free_abbrev_table (cu);
5192 dwarf2_read_abbrevs (cu, dwo_abbrev_section);
02142a6c 5193 /* Leave any existing abbrev table cleanup as is. */
b0c7bfa9
DE
5194 }
5195
5196 /* Read in the die, but leave space to copy over the attributes
5197 from the stub. This has the benefit of simplifying the rest of
5198 the code - all the work to maintain the illusion of a single
5199 DW_TAG_{compile,type}_unit DIE is done here. */
5200 num_extra_attrs = ((stmt_list != NULL)
5201 + (low_pc != NULL)
5202 + (high_pc != NULL)
5203 + (ranges != NULL)
5204 + (comp_dir != NULL));
5205 info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
5206 result_has_children, num_extra_attrs);
5207
5208 /* Copy over the attributes from the stub to the DIE we just read in. */
5209 comp_unit_die = *result_comp_unit_die;
5210 i = comp_unit_die->num_attrs;
5211 if (stmt_list != NULL)
5212 comp_unit_die->attrs[i++] = *stmt_list;
5213 if (low_pc != NULL)
5214 comp_unit_die->attrs[i++] = *low_pc;
5215 if (high_pc != NULL)
5216 comp_unit_die->attrs[i++] = *high_pc;
5217 if (ranges != NULL)
5218 comp_unit_die->attrs[i++] = *ranges;
5219 if (comp_dir != NULL)
5220 comp_unit_die->attrs[i++] = *comp_dir;
5221 comp_unit_die->num_attrs += num_extra_attrs;
5222
b4f54984 5223 if (dwarf_die_debug)
bf6af496
DE
5224 {
5225 fprintf_unfiltered (gdb_stdlog,
5226 "Read die from %s@0x%x of %s:\n",
a32a8923 5227 get_section_name (section),
bf6af496
DE
5228 (unsigned) (begin_info_ptr - section->buffer),
5229 bfd_get_filename (abfd));
b4f54984 5230 dump_die (comp_unit_die, dwarf_die_debug);
bf6af496
DE
5231 }
5232
a2ce51a0
DE
5233 /* Save the comp_dir attribute. If there is no DWP file then we'll read
5234 TUs by skipping the stub and going directly to the entry in the DWO file.
5235 However, skipping the stub means we won't get DW_AT_comp_dir, so we have
5236 to get it via circuitous means. Blech. */
5237 if (comp_dir != NULL)
5238 result_reader->comp_dir = DW_STRING (comp_dir);
5239
b0c7bfa9
DE
5240 /* Skip dummy compilation units. */
5241 if (info_ptr >= begin_info_ptr + dwo_unit->length
5242 || peek_abbrev_code (abfd, info_ptr) == 0)
5243 return 0;
5244
5245 *result_info_ptr = info_ptr;
5246 return 1;
5247}
5248
5249/* Subroutine of init_cutu_and_read_dies to simplify it.
5250 Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
6a506a2d 5251 Returns NULL if the specified DWO unit cannot be found. */
b0c7bfa9
DE
5252
5253static struct dwo_unit *
5254lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
5255 struct die_info *comp_unit_die)
5256{
5257 struct dwarf2_cu *cu = this_cu->cu;
5258 struct attribute *attr;
5259 ULONGEST signature;
5260 struct dwo_unit *dwo_unit;
5261 const char *comp_dir, *dwo_name;
5262
a2ce51a0
DE
5263 gdb_assert (cu != NULL);
5264
b0c7bfa9
DE
5265 /* Yeah, we look dwo_name up again, but it simplifies the code. */
5266 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5267 gdb_assert (attr != NULL);
5268 dwo_name = DW_STRING (attr);
5269 comp_dir = NULL;
5270 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5271 if (attr)
5272 comp_dir = DW_STRING (attr);
5273
5274 if (this_cu->is_debug_types)
5275 {
5276 struct signatured_type *sig_type;
5277
5278 /* Since this_cu is the first member of struct signatured_type,
5279 we can go from a pointer to one to a pointer to the other. */
5280 sig_type = (struct signatured_type *) this_cu;
5281 signature = sig_type->signature;
5282 dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
5283 }
5284 else
5285 {
5286 struct attribute *attr;
5287
5288 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
5289 if (! attr)
5290 error (_("Dwarf Error: missing dwo_id for dwo_name %s"
5291 " [in module %s]"),
4262abfb 5292 dwo_name, objfile_name (this_cu->objfile));
b0c7bfa9
DE
5293 signature = DW_UNSND (attr);
5294 dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
5295 signature);
5296 }
5297
b0c7bfa9
DE
5298 return dwo_unit;
5299}
5300
a2ce51a0 5301/* Subroutine of init_cutu_and_read_dies to simplify it.
6aa5f3a6
DE
5302 See it for a description of the parameters.
5303 Read a TU directly from a DWO file, bypassing the stub.
5304
5305 Note: This function could be a little bit simpler if we shared cleanups
5306 with our caller, init_cutu_and_read_dies. That's generally a fragile thing
5307 to do, so we keep this function self-contained. Or we could move this
5308 into our caller, but it's complex enough already. */
a2ce51a0
DE
5309
5310static void
6aa5f3a6
DE
5311init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
5312 int use_existing_cu, int keep,
a2ce51a0
DE
5313 die_reader_func_ftype *die_reader_func,
5314 void *data)
5315{
5316 struct dwarf2_cu *cu;
5317 struct signatured_type *sig_type;
6aa5f3a6 5318 struct cleanup *cleanups, *free_cu_cleanup = NULL;
a2ce51a0
DE
5319 struct die_reader_specs reader;
5320 const gdb_byte *info_ptr;
5321 struct die_info *comp_unit_die;
5322 int has_children;
5323
5324 /* Verify we can do the following downcast, and that we have the
5325 data we need. */
5326 gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
5327 sig_type = (struct signatured_type *) this_cu;
5328 gdb_assert (sig_type->dwo_unit != NULL);
5329
5330 cleanups = make_cleanup (null_cleanup, NULL);
5331
6aa5f3a6
DE
5332 if (use_existing_cu && this_cu->cu != NULL)
5333 {
5334 gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
5335 cu = this_cu->cu;
5336 /* There's no need to do the rereading_dwo_cu handling that
5337 init_cutu_and_read_dies does since we don't read the stub. */
5338 }
5339 else
5340 {
5341 /* If !use_existing_cu, this_cu->cu must be NULL. */
5342 gdb_assert (this_cu->cu == NULL);
5343 cu = xmalloc (sizeof (*cu));
5344 init_one_comp_unit (cu, this_cu);
5345 /* If an error occurs while loading, release our storage. */
5346 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
5347 }
5348
5349 /* A future optimization, if needed, would be to use an existing
5350 abbrev table. When reading DWOs with skeletonless TUs, all the TUs
5351 could share abbrev tables. */
a2ce51a0
DE
5352
5353 if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
5354 0 /* abbrev_table_provided */,
5355 NULL /* stub_comp_unit_die */,
5356 sig_type->dwo_unit->dwo_file->comp_dir,
5357 &reader, &info_ptr,
5358 &comp_unit_die, &has_children) == 0)
5359 {
5360 /* Dummy die. */
5361 do_cleanups (cleanups);
5362 return;
5363 }
5364
5365 /* All the "real" work is done here. */
5366 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5367
6aa5f3a6 5368 /* This duplicates the code in init_cutu_and_read_dies,
a2ce51a0
DE
5369 but the alternative is making the latter more complex.
5370 This function is only for the special case of using DWO files directly:
5371 no point in overly complicating the general case just to handle this. */
6aa5f3a6 5372 if (free_cu_cleanup != NULL)
a2ce51a0 5373 {
6aa5f3a6
DE
5374 if (keep)
5375 {
5376 /* We've successfully allocated this compilation unit. Let our
5377 caller clean it up when finished with it. */
5378 discard_cleanups (free_cu_cleanup);
a2ce51a0 5379
6aa5f3a6
DE
5380 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5381 So we have to manually free the abbrev table. */
5382 dwarf2_free_abbrev_table (cu);
a2ce51a0 5383
6aa5f3a6
DE
5384 /* Link this CU into read_in_chain. */
5385 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5386 dwarf2_per_objfile->read_in_chain = this_cu;
5387 }
5388 else
5389 do_cleanups (free_cu_cleanup);
a2ce51a0 5390 }
a2ce51a0
DE
5391
5392 do_cleanups (cleanups);
5393}
5394
fd820528 5395/* Initialize a CU (or TU) and read its DIEs.
3019eac3 5396 If the CU defers to a DWO file, read the DWO file as well.
dee91e82 5397
f4dc4d17
DE
5398 ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
5399 Otherwise the table specified in the comp unit header is read in and used.
5400 This is an optimization for when we already have the abbrev table.
5401
dee91e82
DE
5402 If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
5403 Otherwise, a new CU is allocated with xmalloc.
5404
5405 If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
5406 read_in_chain. Otherwise the dwarf2_cu data is freed at the end.
5407
5408 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
fd820528 5409 linker) then DIE_READER_FUNC will not get called. */
aaa75496 5410
70221824 5411static void
fd820528 5412init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
f4dc4d17 5413 struct abbrev_table *abbrev_table,
fd820528
DE
5414 int use_existing_cu, int keep,
5415 die_reader_func_ftype *die_reader_func,
5416 void *data)
c906108c 5417{
dee91e82 5418 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5419 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5420 bfd *abfd = get_section_bfd_owner (section);
dee91e82 5421 struct dwarf2_cu *cu;
d521ce57 5422 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82 5423 struct die_reader_specs reader;
d85a05f0 5424 struct die_info *comp_unit_die;
dee91e82 5425 int has_children;
d85a05f0 5426 struct attribute *attr;
365156ad 5427 struct cleanup *cleanups, *free_cu_cleanup = NULL;
dee91e82 5428 struct signatured_type *sig_type = NULL;
4bdcc0c1 5429 struct dwarf2_section_info *abbrev_section;
42e7ad6c
DE
5430 /* Non-zero if CU currently points to a DWO file and we need to
5431 reread it. When this happens we need to reread the skeleton die
a2ce51a0 5432 before we can reread the DWO file (this only applies to CUs, not TUs). */
42e7ad6c 5433 int rereading_dwo_cu = 0;
c906108c 5434
b4f54984 5435 if (dwarf_die_debug)
09406207
DE
5436 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5437 this_cu->is_debug_types ? "type" : "comp",
5438 this_cu->offset.sect_off);
5439
dee91e82
DE
5440 if (use_existing_cu)
5441 gdb_assert (keep);
23745b47 5442
a2ce51a0
DE
5443 /* If we're reading a TU directly from a DWO file, including a virtual DWO
5444 file (instead of going through the stub), short-circuit all of this. */
5445 if (this_cu->reading_dwo_directly)
5446 {
5447 /* Narrow down the scope of possibilities to have to understand. */
5448 gdb_assert (this_cu->is_debug_types);
5449 gdb_assert (abbrev_table == NULL);
6aa5f3a6
DE
5450 init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
5451 die_reader_func, data);
a2ce51a0
DE
5452 return;
5453 }
5454
dee91e82
DE
5455 cleanups = make_cleanup (null_cleanup, NULL);
5456
5457 /* This is cheap if the section is already read in. */
5458 dwarf2_read_section (objfile, section);
5459
5460 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
36586728
TT
5461
5462 abbrev_section = get_abbrev_section_for_cu (this_cu);
dee91e82
DE
5463
5464 if (use_existing_cu && this_cu->cu != NULL)
5465 {
5466 cu = this_cu->cu;
42e7ad6c
DE
5467 /* If this CU is from a DWO file we need to start over, we need to
5468 refetch the attributes from the skeleton CU.
5469 This could be optimized by retrieving those attributes from when we
5470 were here the first time: the previous comp_unit_die was stored in
5471 comp_unit_obstack. But there's no data yet that we need this
5472 optimization. */
5473 if (cu->dwo_unit != NULL)
5474 rereading_dwo_cu = 1;
dee91e82
DE
5475 }
5476 else
5477 {
5478 /* If !use_existing_cu, this_cu->cu must be NULL. */
5479 gdb_assert (this_cu->cu == NULL);
dee91e82
DE
5480 cu = xmalloc (sizeof (*cu));
5481 init_one_comp_unit (cu, this_cu);
dee91e82 5482 /* If an error occurs while loading, release our storage. */
365156ad 5483 free_cu_cleanup = make_cleanup (free_heap_comp_unit, cu);
42e7ad6c 5484 }
dee91e82 5485
b0c7bfa9 5486 /* Get the header. */
42e7ad6c
DE
5487 if (cu->header.first_die_offset.cu_off != 0 && ! rereading_dwo_cu)
5488 {
5489 /* We already have the header, there's no need to read it in again. */
5490 info_ptr += cu->header.first_die_offset.cu_off;
5491 }
5492 else
5493 {
3019eac3 5494 if (this_cu->is_debug_types)
dee91e82
DE
5495 {
5496 ULONGEST signature;
42e7ad6c 5497 cu_offset type_offset_in_tu;
dee91e82 5498
4bdcc0c1
DE
5499 info_ptr = read_and_check_type_unit_head (&cu->header, section,
5500 abbrev_section, info_ptr,
42e7ad6c
DE
5501 &signature,
5502 &type_offset_in_tu);
dee91e82 5503
42e7ad6c
DE
5504 /* Since per_cu is the first member of struct signatured_type,
5505 we can go from a pointer to one to a pointer to the other. */
5506 sig_type = (struct signatured_type *) this_cu;
5507 gdb_assert (sig_type->signature == signature);
5508 gdb_assert (sig_type->type_offset_in_tu.cu_off
5509 == type_offset_in_tu.cu_off);
dee91e82
DE
5510 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
5511
42e7ad6c
DE
5512 /* LENGTH has not been set yet for type units if we're
5513 using .gdb_index. */
1ce1cefd 5514 this_cu->length = get_cu_length (&cu->header);
3019eac3
DE
5515
5516 /* Establish the type offset that can be used to lookup the type. */
5517 sig_type->type_offset_in_section.sect_off =
5518 this_cu->offset.sect_off + sig_type->type_offset_in_tu.cu_off;
dee91e82
DE
5519 }
5520 else
5521 {
4bdcc0c1
DE
5522 info_ptr = read_and_check_comp_unit_head (&cu->header, section,
5523 abbrev_section,
5524 info_ptr, 0);
dee91e82
DE
5525
5526 gdb_assert (this_cu->offset.sect_off == cu->header.offset.sect_off);
1ce1cefd 5527 gdb_assert (this_cu->length == get_cu_length (&cu->header));
dee91e82
DE
5528 }
5529 }
10b3939b 5530
6caca83c 5531 /* Skip dummy compilation units. */
dee91e82 5532 if (info_ptr >= begin_info_ptr + this_cu->length
6caca83c
CC
5533 || peek_abbrev_code (abfd, info_ptr) == 0)
5534 {
dee91e82 5535 do_cleanups (cleanups);
21b2bd31 5536 return;
6caca83c
CC
5537 }
5538
433df2d4
DE
5539 /* If we don't have them yet, read the abbrevs for this compilation unit.
5540 And if we need to read them now, make sure they're freed when we're
42e7ad6c
DE
5541 done. Note that it's important that if the CU had an abbrev table
5542 on entry we don't free it when we're done: Somewhere up the call stack
5543 it may be in use. */
f4dc4d17
DE
5544 if (abbrev_table != NULL)
5545 {
5546 gdb_assert (cu->abbrev_table == NULL);
5547 gdb_assert (cu->header.abbrev_offset.sect_off
5548 == abbrev_table->offset.sect_off);
5549 cu->abbrev_table = abbrev_table;
5550 }
5551 else if (cu->abbrev_table == NULL)
dee91e82 5552 {
4bdcc0c1 5553 dwarf2_read_abbrevs (cu, abbrev_section);
dee91e82
DE
5554 make_cleanup (dwarf2_free_abbrev_table, cu);
5555 }
42e7ad6c
DE
5556 else if (rereading_dwo_cu)
5557 {
5558 dwarf2_free_abbrev_table (cu);
5559 dwarf2_read_abbrevs (cu, abbrev_section);
5560 }
af703f96 5561
dee91e82 5562 /* Read the top level CU/TU die. */
3019eac3 5563 init_cu_die_reader (&reader, cu, section, NULL);
dee91e82 5564 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
93311388 5565
b0c7bfa9
DE
5566 /* If we are in a DWO stub, process it and then read in the "real" CU/TU
5567 from the DWO file.
5568 Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
5569 DWO CU, that this test will fail (the attribute will not be present). */
3019eac3
DE
5570 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
5571 if (attr)
5572 {
3019eac3 5573 struct dwo_unit *dwo_unit;
b0c7bfa9 5574 struct die_info *dwo_comp_unit_die;
3019eac3
DE
5575
5576 if (has_children)
6a506a2d
DE
5577 {
5578 complaint (&symfile_complaints,
5579 _("compilation unit with DW_AT_GNU_dwo_name"
5580 " has children (offset 0x%x) [in module %s]"),
5581 this_cu->offset.sect_off, bfd_get_filename (abfd));
5582 }
b0c7bfa9 5583 dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
6a506a2d 5584 if (dwo_unit != NULL)
3019eac3 5585 {
6a506a2d
DE
5586 if (read_cutu_die_from_dwo (this_cu, dwo_unit,
5587 abbrev_table != NULL,
a2ce51a0 5588 comp_unit_die, NULL,
6a506a2d
DE
5589 &reader, &info_ptr,
5590 &dwo_comp_unit_die, &has_children) == 0)
5591 {
5592 /* Dummy die. */
5593 do_cleanups (cleanups);
5594 return;
5595 }
5596 comp_unit_die = dwo_comp_unit_die;
5597 }
5598 else
5599 {
5600 /* Yikes, we couldn't find the rest of the DIE, we only have
5601 the stub. A complaint has already been logged. There's
5602 not much more we can do except pass on the stub DIE to
5603 die_reader_func. We don't want to throw an error on bad
5604 debug info. */
3019eac3
DE
5605 }
5606 }
5607
b0c7bfa9 5608 /* All of the above is setup for this call. Yikes. */
dee91e82
DE
5609 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5610
b0c7bfa9 5611 /* Done, clean up. */
365156ad 5612 if (free_cu_cleanup != NULL)
348e048f 5613 {
365156ad
TT
5614 if (keep)
5615 {
5616 /* We've successfully allocated this compilation unit. Let our
5617 caller clean it up when finished with it. */
5618 discard_cleanups (free_cu_cleanup);
dee91e82 5619
365156ad
TT
5620 /* We can only discard free_cu_cleanup and all subsequent cleanups.
5621 So we have to manually free the abbrev table. */
5622 dwarf2_free_abbrev_table (cu);
dee91e82 5623
365156ad
TT
5624 /* Link this CU into read_in_chain. */
5625 this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
5626 dwarf2_per_objfile->read_in_chain = this_cu;
5627 }
5628 else
5629 do_cleanups (free_cu_cleanup);
348e048f 5630 }
365156ad
TT
5631
5632 do_cleanups (cleanups);
dee91e82
DE
5633}
5634
33e80786
DE
5635/* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
5636 DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
5637 to have already done the lookup to find the DWO file).
dee91e82
DE
5638
5639 The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
3019eac3 5640 THIS_CU->is_debug_types, but nothing else.
dee91e82
DE
5641
5642 We fill in THIS_CU->length.
5643
5644 WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
5645 linker) then DIE_READER_FUNC will not get called.
5646
5647 THIS_CU->cu is always freed when done.
3019eac3
DE
5648 This is done in order to not leave THIS_CU->cu in a state where we have
5649 to care whether it refers to the "main" CU or the DWO CU. */
dee91e82
DE
5650
5651static void
5652init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
3019eac3 5653 struct dwo_file *dwo_file,
dee91e82
DE
5654 die_reader_func_ftype *die_reader_func,
5655 void *data)
5656{
5657 struct objfile *objfile = dwarf2_per_objfile->objfile;
8a0459fd 5658 struct dwarf2_section_info *section = this_cu->section;
a32a8923 5659 bfd *abfd = get_section_bfd_owner (section);
33e80786 5660 struct dwarf2_section_info *abbrev_section;
dee91e82 5661 struct dwarf2_cu cu;
d521ce57 5662 const gdb_byte *begin_info_ptr, *info_ptr;
dee91e82
DE
5663 struct die_reader_specs reader;
5664 struct cleanup *cleanups;
5665 struct die_info *comp_unit_die;
5666 int has_children;
5667
b4f54984 5668 if (dwarf_die_debug)
09406207
DE
5669 fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset 0x%x\n",
5670 this_cu->is_debug_types ? "type" : "comp",
5671 this_cu->offset.sect_off);
5672
dee91e82
DE
5673 gdb_assert (this_cu->cu == NULL);
5674
33e80786
DE
5675 abbrev_section = (dwo_file != NULL
5676 ? &dwo_file->sections.abbrev
5677 : get_abbrev_section_for_cu (this_cu));
5678
dee91e82
DE
5679 /* This is cheap if the section is already read in. */
5680 dwarf2_read_section (objfile, section);
5681
5682 init_one_comp_unit (&cu, this_cu);
5683
5684 cleanups = make_cleanup (free_stack_comp_unit, &cu);
5685
5686 begin_info_ptr = info_ptr = section->buffer + this_cu->offset.sect_off;
4bdcc0c1
DE
5687 info_ptr = read_and_check_comp_unit_head (&cu.header, section,
5688 abbrev_section, info_ptr,
3019eac3 5689 this_cu->is_debug_types);
dee91e82 5690
1ce1cefd 5691 this_cu->length = get_cu_length (&cu.header);
dee91e82
DE
5692
5693 /* Skip dummy compilation units. */
5694 if (info_ptr >= begin_info_ptr + this_cu->length
5695 || peek_abbrev_code (abfd, info_ptr) == 0)
c906108c 5696 {
dee91e82 5697 do_cleanups (cleanups);
21b2bd31 5698 return;
93311388 5699 }
72bf9492 5700
dee91e82
DE
5701 dwarf2_read_abbrevs (&cu, abbrev_section);
5702 make_cleanup (dwarf2_free_abbrev_table, &cu);
5703
3019eac3 5704 init_cu_die_reader (&reader, &cu, section, dwo_file);
dee91e82
DE
5705 info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
5706
5707 die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
5708
5709 do_cleanups (cleanups);
5710}
5711
3019eac3
DE
5712/* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
5713 does not lookup the specified DWO file.
5714 This cannot be used to read DWO files.
dee91e82
DE
5715
5716 THIS_CU->cu is always freed when done.
3019eac3
DE
5717 This is done in order to not leave THIS_CU->cu in a state where we have
5718 to care whether it refers to the "main" CU or the DWO CU.
5719 We can revisit this if the data shows there's a performance issue. */
dee91e82
DE
5720
5721static void
5722init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
5723 die_reader_func_ftype *die_reader_func,
5724 void *data)
5725{
33e80786 5726 init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
dee91e82 5727}
0018ea6f
DE
5728\f
5729/* Type Unit Groups.
dee91e82 5730
0018ea6f
DE
5731 Type Unit Groups are a way to collapse the set of all TUs (type units) into
5732 a more manageable set. The grouping is done by DW_AT_stmt_list entry
5733 so that all types coming from the same compilation (.o file) are grouped
5734 together. A future step could be to put the types in the same symtab as
5735 the CU the types ultimately came from. */
ff013f42 5736
f4dc4d17
DE
5737static hashval_t
5738hash_type_unit_group (const void *item)
5739{
094b34ac 5740 const struct type_unit_group *tu_group = item;
f4dc4d17 5741
094b34ac 5742 return hash_stmt_list_entry (&tu_group->hash);
f4dc4d17 5743}
348e048f
DE
5744
5745static int
f4dc4d17 5746eq_type_unit_group (const void *item_lhs, const void *item_rhs)
348e048f 5747{
f4dc4d17
DE
5748 const struct type_unit_group *lhs = item_lhs;
5749 const struct type_unit_group *rhs = item_rhs;
348e048f 5750
094b34ac 5751 return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
f4dc4d17 5752}
348e048f 5753
f4dc4d17
DE
5754/* Allocate a hash table for type unit groups. */
5755
5756static htab_t
5757allocate_type_unit_groups_table (void)
5758{
5759 return htab_create_alloc_ex (3,
5760 hash_type_unit_group,
5761 eq_type_unit_group,
5762 NULL,
5763 &dwarf2_per_objfile->objfile->objfile_obstack,
5764 hashtab_obstack_allocate,
5765 dummy_obstack_deallocate);
5766}
dee91e82 5767
f4dc4d17
DE
5768/* Type units that don't have DW_AT_stmt_list are grouped into their own
5769 partial symtabs. We combine several TUs per psymtab to not let the size
5770 of any one psymtab grow too big. */
5771#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
5772#define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
dee91e82 5773
094b34ac 5774/* Helper routine for get_type_unit_group.
f4dc4d17
DE
5775 Create the type_unit_group object used to hold one or more TUs. */
5776
5777static struct type_unit_group *
094b34ac 5778create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
f4dc4d17
DE
5779{
5780 struct objfile *objfile = dwarf2_per_objfile->objfile;
094b34ac 5781 struct dwarf2_per_cu_data *per_cu;
f4dc4d17 5782 struct type_unit_group *tu_group;
f4dc4d17
DE
5783
5784 tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5785 struct type_unit_group);
094b34ac 5786 per_cu = &tu_group->per_cu;
f4dc4d17 5787 per_cu->objfile = objfile;
f4dc4d17 5788
094b34ac
DE
5789 if (dwarf2_per_objfile->using_index)
5790 {
5791 per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
5792 struct dwarf2_per_cu_quick_data);
094b34ac
DE
5793 }
5794 else
5795 {
5796 unsigned int line_offset = line_offset_struct.sect_off;
5797 struct partial_symtab *pst;
5798 char *name;
5799
5800 /* Give the symtab a useful name for debug purposes. */
5801 if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
5802 name = xstrprintf ("<type_units_%d>",
5803 (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
5804 else
5805 name = xstrprintf ("<type_units_at_0x%x>", line_offset);
5806
5807 pst = create_partial_symtab (per_cu, name);
5808 pst->anonymous = 1;
f4dc4d17 5809
094b34ac
DE
5810 xfree (name);
5811 }
f4dc4d17 5812
094b34ac
DE
5813 tu_group->hash.dwo_unit = cu->dwo_unit;
5814 tu_group->hash.line_offset = line_offset_struct;
f4dc4d17
DE
5815
5816 return tu_group;
5817}
5818
094b34ac
DE
5819/* Look up the type_unit_group for type unit CU, and create it if necessary.
5820 STMT_LIST is a DW_AT_stmt_list attribute. */
f4dc4d17
DE
5821
5822static struct type_unit_group *
ff39bb5e 5823get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
f4dc4d17
DE
5824{
5825 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
5826 struct type_unit_group *tu_group;
5827 void **slot;
5828 unsigned int line_offset;
5829 struct type_unit_group type_unit_group_for_lookup;
5830
5831 if (dwarf2_per_objfile->type_unit_groups == NULL)
5832 {
5833 dwarf2_per_objfile->type_unit_groups =
5834 allocate_type_unit_groups_table ();
5835 }
5836
5837 /* Do we need to create a new group, or can we use an existing one? */
5838
5839 if (stmt_list)
5840 {
5841 line_offset = DW_UNSND (stmt_list);
5842 ++tu_stats->nr_symtab_sharers;
5843 }
5844 else
5845 {
5846 /* Ugh, no stmt_list. Rare, but we have to handle it.
5847 We can do various things here like create one group per TU or
5848 spread them over multiple groups to split up the expansion work.
5849 To avoid worst case scenarios (too many groups or too large groups)
5850 we, umm, group them in bunches. */
5851 line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
5852 | (tu_stats->nr_stmt_less_type_units
5853 / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
5854 ++tu_stats->nr_stmt_less_type_units;
5855 }
5856
094b34ac
DE
5857 type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
5858 type_unit_group_for_lookup.hash.line_offset.sect_off = line_offset;
f4dc4d17
DE
5859 slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
5860 &type_unit_group_for_lookup, INSERT);
5861 if (*slot != NULL)
5862 {
5863 tu_group = *slot;
5864 gdb_assert (tu_group != NULL);
5865 }
5866 else
5867 {
5868 sect_offset line_offset_struct;
5869
5870 line_offset_struct.sect_off = line_offset;
094b34ac 5871 tu_group = create_type_unit_group (cu, line_offset_struct);
f4dc4d17
DE
5872 *slot = tu_group;
5873 ++tu_stats->nr_symtabs;
5874 }
5875
5876 return tu_group;
5877}
0018ea6f
DE
5878\f
5879/* Partial symbol tables. */
5880
5881/* Create a psymtab named NAME and assign it to PER_CU.
5882
5883 The caller must fill in the following details:
5884 dirname, textlow, texthigh. */
5885
5886static struct partial_symtab *
5887create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
5888{
5889 struct objfile *objfile = per_cu->objfile;
5890 struct partial_symtab *pst;
5891
18a94d75 5892 pst = start_psymtab_common (objfile, name, 0,
0018ea6f
DE
5893 objfile->global_psymbols.next,
5894 objfile->static_psymbols.next);
5895
5896 pst->psymtabs_addrmap_supported = 1;
5897
5898 /* This is the glue that links PST into GDB's symbol API. */
5899 pst->read_symtab_private = per_cu;
5900 pst->read_symtab = dwarf2_read_symtab;
5901 per_cu->v.psymtab = pst;
5902
5903 return pst;
5904}
5905
b93601f3
TT
5906/* The DATA object passed to process_psymtab_comp_unit_reader has this
5907 type. */
5908
5909struct process_psymtab_comp_unit_data
5910{
5911 /* True if we are reading a DW_TAG_partial_unit. */
5912
5913 int want_partial_unit;
5914
5915 /* The "pretend" language that is used if the CU doesn't declare a
5916 language. */
5917
5918 enum language pretend_language;
5919};
5920
0018ea6f
DE
5921/* die_reader_func for process_psymtab_comp_unit. */
5922
5923static void
5924process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 5925 const gdb_byte *info_ptr,
0018ea6f
DE
5926 struct die_info *comp_unit_die,
5927 int has_children,
5928 void *data)
5929{
5930 struct dwarf2_cu *cu = reader->cu;
5931 struct objfile *objfile = cu->objfile;
3e29f34a 5932 struct gdbarch *gdbarch = get_objfile_arch (objfile);
0018ea6f
DE
5933 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
5934 struct attribute *attr;
5935 CORE_ADDR baseaddr;
5936 CORE_ADDR best_lowpc = 0, best_highpc = 0;
5937 struct partial_symtab *pst;
5938 int has_pc_info;
5939 const char *filename;
b93601f3 5940 struct process_psymtab_comp_unit_data *info = data;
0018ea6f 5941
b93601f3 5942 if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
0018ea6f
DE
5943 return;
5944
5945 gdb_assert (! per_cu->is_debug_types);
5946
b93601f3 5947 prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
0018ea6f
DE
5948
5949 cu->list_in_scope = &file_symbols;
5950
5951 /* Allocate a new partial symbol table structure. */
5952 attr = dwarf2_attr (comp_unit_die, DW_AT_name, cu);
5953 if (attr == NULL || !DW_STRING (attr))
5954 filename = "";
5955 else
5956 filename = DW_STRING (attr);
5957
5958 pst = create_partial_symtab (per_cu, filename);
5959
5960 /* This must be done before calling dwarf2_build_include_psymtabs. */
5961 attr = dwarf2_attr (comp_unit_die, DW_AT_comp_dir, cu);
5962 if (attr != NULL)
5963 pst->dirname = DW_STRING (attr);
5964
5965 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
5966
5967 dwarf2_find_base_address (comp_unit_die, cu);
5968
5969 /* Possibly set the default values of LOWPC and HIGHPC from
5970 `DW_AT_ranges'. */
5971 has_pc_info = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
5972 &best_highpc, cu, pst);
5973 if (has_pc_info == 1 && best_lowpc < best_highpc)
5974 /* Store the contiguous range if it is not empty; it can be empty for
5975 CUs with no code. */
5976 addrmap_set_empty (objfile->psymtabs_addrmap,
3e29f34a
MR
5977 gdbarch_adjust_dwarf2_addr (gdbarch,
5978 best_lowpc + baseaddr),
5979 gdbarch_adjust_dwarf2_addr (gdbarch,
5980 best_highpc + baseaddr) - 1,
5981 pst);
0018ea6f
DE
5982
5983 /* Check if comp unit has_children.
5984 If so, read the rest of the partial symbols from this comp unit.
5985 If not, there's no more debug_info for this comp unit. */
5986 if (has_children)
5987 {
5988 struct partial_die_info *first_die;
5989 CORE_ADDR lowpc, highpc;
5990
5991 lowpc = ((CORE_ADDR) -1);
5992 highpc = ((CORE_ADDR) 0);
5993
5994 first_die = load_partial_dies (reader, info_ptr, 1);
5995
5996 scan_partial_symbols (first_die, &lowpc, &highpc,
5997 ! has_pc_info, cu);
5998
5999 /* If we didn't find a lowpc, set it to highpc to avoid
6000 complaints from `maint check'. */
6001 if (lowpc == ((CORE_ADDR) -1))
6002 lowpc = highpc;
6003
6004 /* If the compilation unit didn't have an explicit address range,
6005 then use the information extracted from its child dies. */
6006 if (! has_pc_info)
6007 {
6008 best_lowpc = lowpc;
6009 best_highpc = highpc;
6010 }
6011 }
3e29f34a
MR
6012 pst->textlow = gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr);
6013 pst->texthigh = gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr);
0018ea6f
DE
6014
6015 pst->n_global_syms = objfile->global_psymbols.next -
6016 (objfile->global_psymbols.list + pst->globals_offset);
6017 pst->n_static_syms = objfile->static_psymbols.next -
6018 (objfile->static_psymbols.list + pst->statics_offset);
6019 sort_pst_symbols (objfile, pst);
6020
6021 if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
6022 {
6023 int i;
6024 int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6025 struct dwarf2_per_cu_data *iter;
6026
6027 /* Fill in 'dependencies' here; we fill in 'users' in a
6028 post-pass. */
6029 pst->number_of_dependencies = len;
6030 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6031 len * sizeof (struct symtab *));
6032 for (i = 0;
6033 VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
6034 i, iter);
6035 ++i)
6036 pst->dependencies[i] = iter->v.psymtab;
6037
6038 VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
6039 }
6040
6041 /* Get the list of files included in the current compilation unit,
6042 and build a psymtab for each of them. */
6043 dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
6044
b4f54984 6045 if (dwarf_read_debug)
0018ea6f
DE
6046 {
6047 struct gdbarch *gdbarch = get_objfile_arch (objfile);
6048
6049 fprintf_unfiltered (gdb_stdlog,
6050 "Psymtab for %s unit @0x%x: %s - %s"
6051 ", %d global, %d static syms\n",
6052 per_cu->is_debug_types ? "type" : "comp",
6053 per_cu->offset.sect_off,
6054 paddress (gdbarch, pst->textlow),
6055 paddress (gdbarch, pst->texthigh),
6056 pst->n_global_syms, pst->n_static_syms);
6057 }
6058}
6059
6060/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6061 Process compilation unit THIS_CU for a psymtab. */
6062
6063static void
6064process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
b93601f3
TT
6065 int want_partial_unit,
6066 enum language pretend_language)
0018ea6f 6067{
b93601f3
TT
6068 struct process_psymtab_comp_unit_data info;
6069
0018ea6f
DE
6070 /* If this compilation unit was already read in, free the
6071 cached copy in order to read it in again. This is
6072 necessary because we skipped some symbols when we first
6073 read in the compilation unit (see load_partial_dies).
6074 This problem could be avoided, but the benefit is unclear. */
6075 if (this_cu->cu != NULL)
6076 free_one_cached_comp_unit (this_cu);
6077
6078 gdb_assert (! this_cu->is_debug_types);
b93601f3
TT
6079 info.want_partial_unit = want_partial_unit;
6080 info.pretend_language = pretend_language;
0018ea6f
DE
6081 init_cutu_and_read_dies (this_cu, NULL, 0, 0,
6082 process_psymtab_comp_unit_reader,
b93601f3 6083 &info);
0018ea6f
DE
6084
6085 /* Age out any secondary CUs. */
6086 age_cached_comp_units ();
6087}
f4dc4d17
DE
6088
6089/* Reader function for build_type_psymtabs. */
6090
6091static void
6092build_type_psymtabs_reader (const struct die_reader_specs *reader,
d521ce57 6093 const gdb_byte *info_ptr,
f4dc4d17
DE
6094 struct die_info *type_unit_die,
6095 int has_children,
6096 void *data)
6097{
6098 struct objfile *objfile = dwarf2_per_objfile->objfile;
6099 struct dwarf2_cu *cu = reader->cu;
6100 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
0186c6a7 6101 struct signatured_type *sig_type;
f4dc4d17
DE
6102 struct type_unit_group *tu_group;
6103 struct attribute *attr;
6104 struct partial_die_info *first_die;
6105 CORE_ADDR lowpc, highpc;
6106 struct partial_symtab *pst;
6107
6108 gdb_assert (data == NULL);
0186c6a7
DE
6109 gdb_assert (per_cu->is_debug_types);
6110 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
6111
6112 if (! has_children)
6113 return;
6114
6115 attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
094b34ac 6116 tu_group = get_type_unit_group (cu, attr);
f4dc4d17 6117
0186c6a7 6118 VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
f4dc4d17
DE
6119
6120 prepare_one_comp_unit (cu, type_unit_die, language_minimal);
6121 cu->list_in_scope = &file_symbols;
6122 pst = create_partial_symtab (per_cu, "");
6123 pst->anonymous = 1;
6124
6125 first_die = load_partial_dies (reader, info_ptr, 1);
6126
6127 lowpc = (CORE_ADDR) -1;
6128 highpc = (CORE_ADDR) 0;
6129 scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
6130
6131 pst->n_global_syms = objfile->global_psymbols.next -
6132 (objfile->global_psymbols.list + pst->globals_offset);
6133 pst->n_static_syms = objfile->static_psymbols.next -
6134 (objfile->static_psymbols.list + pst->statics_offset);
5c80ed9d 6135 sort_pst_symbols (objfile, pst);
f4dc4d17
DE
6136}
6137
73051182
DE
6138/* Struct used to sort TUs by their abbreviation table offset. */
6139
6140struct tu_abbrev_offset
6141{
6142 struct signatured_type *sig_type;
6143 sect_offset abbrev_offset;
6144};
6145
6146/* Helper routine for build_type_psymtabs_1, passed to qsort. */
6147
6148static int
6149sort_tu_by_abbrev_offset (const void *ap, const void *bp)
6150{
6151 const struct tu_abbrev_offset * const *a = ap;
6152 const struct tu_abbrev_offset * const *b = bp;
6153 unsigned int aoff = (*a)->abbrev_offset.sect_off;
6154 unsigned int boff = (*b)->abbrev_offset.sect_off;
6155
6156 return (aoff > boff) - (aoff < boff);
6157}
6158
6159/* Efficiently read all the type units.
6160 This does the bulk of the work for build_type_psymtabs.
6161
6162 The efficiency is because we sort TUs by the abbrev table they use and
6163 only read each abbrev table once. In one program there are 200K TUs
6164 sharing 8K abbrev tables.
6165
6166 The main purpose of this function is to support building the
6167 dwarf2_per_objfile->type_unit_groups table.
6168 TUs typically share the DW_AT_stmt_list of the CU they came from, so we
6169 can collapse the search space by grouping them by stmt_list.
6170 The savings can be significant, in the same program from above the 200K TUs
6171 share 8K stmt_list tables.
6172
6173 FUNC is expected to call get_type_unit_group, which will create the
6174 struct type_unit_group if necessary and add it to
6175 dwarf2_per_objfile->type_unit_groups. */
6176
6177static void
6178build_type_psymtabs_1 (void)
6179{
6180 struct objfile *objfile = dwarf2_per_objfile->objfile;
6181 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6182 struct cleanup *cleanups;
6183 struct abbrev_table *abbrev_table;
6184 sect_offset abbrev_offset;
6185 struct tu_abbrev_offset *sorted_by_abbrev;
6186 struct type_unit_group **iter;
6187 int i;
6188
6189 /* It's up to the caller to not call us multiple times. */
6190 gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
6191
6192 if (dwarf2_per_objfile->n_type_units == 0)
6193 return;
6194
6195 /* TUs typically share abbrev tables, and there can be way more TUs than
6196 abbrev tables. Sort by abbrev table to reduce the number of times we
6197 read each abbrev table in.
6198 Alternatives are to punt or to maintain a cache of abbrev tables.
6199 This is simpler and efficient enough for now.
6200
6201 Later we group TUs by their DW_AT_stmt_list value (as this defines the
6202 symtab to use). Typically TUs with the same abbrev offset have the same
6203 stmt_list value too so in practice this should work well.
6204
6205 The basic algorithm here is:
6206
6207 sort TUs by abbrev table
6208 for each TU with same abbrev table:
6209 read abbrev table if first user
6210 read TU top level DIE
6211 [IWBN if DWO skeletons had DW_AT_stmt_list]
6212 call FUNC */
6213
b4f54984 6214 if (dwarf_read_debug)
73051182
DE
6215 fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
6216
6217 /* Sort in a separate table to maintain the order of all_type_units
6218 for .gdb_index: TU indices directly index all_type_units. */
6219 sorted_by_abbrev = XNEWVEC (struct tu_abbrev_offset,
6220 dwarf2_per_objfile->n_type_units);
6221 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6222 {
6223 struct signatured_type *sig_type = dwarf2_per_objfile->all_type_units[i];
6224
6225 sorted_by_abbrev[i].sig_type = sig_type;
6226 sorted_by_abbrev[i].abbrev_offset =
6227 read_abbrev_offset (sig_type->per_cu.section,
6228 sig_type->per_cu.offset);
6229 }
6230 cleanups = make_cleanup (xfree, sorted_by_abbrev);
6231 qsort (sorted_by_abbrev, dwarf2_per_objfile->n_type_units,
6232 sizeof (struct tu_abbrev_offset), sort_tu_by_abbrev_offset);
6233
6234 abbrev_offset.sect_off = ~(unsigned) 0;
6235 abbrev_table = NULL;
6236 make_cleanup (abbrev_table_free_cleanup, &abbrev_table);
6237
6238 for (i = 0; i < dwarf2_per_objfile->n_type_units; ++i)
6239 {
6240 const struct tu_abbrev_offset *tu = &sorted_by_abbrev[i];
6241
6242 /* Switch to the next abbrev table if necessary. */
6243 if (abbrev_table == NULL
6244 || tu->abbrev_offset.sect_off != abbrev_offset.sect_off)
6245 {
6246 if (abbrev_table != NULL)
6247 {
6248 abbrev_table_free (abbrev_table);
6249 /* Reset to NULL in case abbrev_table_read_table throws
6250 an error: abbrev_table_free_cleanup will get called. */
6251 abbrev_table = NULL;
6252 }
6253 abbrev_offset = tu->abbrev_offset;
6254 abbrev_table =
6255 abbrev_table_read_table (&dwarf2_per_objfile->abbrev,
6256 abbrev_offset);
6257 ++tu_stats->nr_uniq_abbrev_tables;
6258 }
6259
6260 init_cutu_and_read_dies (&tu->sig_type->per_cu, abbrev_table, 0, 0,
6261 build_type_psymtabs_reader, NULL);
6262 }
6263
73051182 6264 do_cleanups (cleanups);
6aa5f3a6 6265}
73051182 6266
6aa5f3a6
DE
6267/* Print collected type unit statistics. */
6268
6269static void
6270print_tu_stats (void)
6271{
6272 struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
6273
6274 fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
6275 fprintf_unfiltered (gdb_stdlog, " %d TUs\n",
6276 dwarf2_per_objfile->n_type_units);
6277 fprintf_unfiltered (gdb_stdlog, " %d uniq abbrev tables\n",
6278 tu_stats->nr_uniq_abbrev_tables);
6279 fprintf_unfiltered (gdb_stdlog, " %d symtabs from stmt_list entries\n",
6280 tu_stats->nr_symtabs);
6281 fprintf_unfiltered (gdb_stdlog, " %d symtab sharers\n",
6282 tu_stats->nr_symtab_sharers);
6283 fprintf_unfiltered (gdb_stdlog, " %d type units without a stmt_list\n",
6284 tu_stats->nr_stmt_less_type_units);
6285 fprintf_unfiltered (gdb_stdlog, " %d all_type_units reallocs\n",
6286 tu_stats->nr_all_type_units_reallocs);
73051182
DE
6287}
6288
f4dc4d17
DE
6289/* Traversal function for build_type_psymtabs. */
6290
6291static int
6292build_type_psymtab_dependencies (void **slot, void *info)
6293{
6294 struct objfile *objfile = dwarf2_per_objfile->objfile;
6295 struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
094b34ac 6296 struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
f4dc4d17 6297 struct partial_symtab *pst = per_cu->v.psymtab;
0186c6a7
DE
6298 int len = VEC_length (sig_type_ptr, tu_group->tus);
6299 struct signatured_type *iter;
f4dc4d17
DE
6300 int i;
6301
6302 gdb_assert (len > 0);
0186c6a7 6303 gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
f4dc4d17
DE
6304
6305 pst->number_of_dependencies = len;
6306 pst->dependencies = obstack_alloc (&objfile->objfile_obstack,
6307 len * sizeof (struct psymtab *));
6308 for (i = 0;
0186c6a7 6309 VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
f4dc4d17
DE
6310 ++i)
6311 {
0186c6a7
DE
6312 gdb_assert (iter->per_cu.is_debug_types);
6313 pst->dependencies[i] = iter->per_cu.v.psymtab;
796a7ff8 6314 iter->type_unit_group = tu_group;
f4dc4d17
DE
6315 }
6316
0186c6a7 6317 VEC_free (sig_type_ptr, tu_group->tus);
348e048f
DE
6318
6319 return 1;
6320}
6321
6322/* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
6323 Build partial symbol tables for the .debug_types comp-units. */
6324
6325static void
6326build_type_psymtabs (struct objfile *objfile)
6327{
0e50663e 6328 if (! create_all_type_units (objfile))
348e048f
DE
6329 return;
6330
73051182 6331 build_type_psymtabs_1 ();
6aa5f3a6 6332}
f4dc4d17 6333
6aa5f3a6
DE
6334/* Traversal function for process_skeletonless_type_unit.
6335 Read a TU in a DWO file and build partial symbols for it. */
6336
6337static int
6338process_skeletonless_type_unit (void **slot, void *info)
6339{
6340 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
6341 struct objfile *objfile = info;
6342 struct signatured_type find_entry, *entry;
6343
6344 /* If this TU doesn't exist in the global table, add it and read it in. */
6345
6346 if (dwarf2_per_objfile->signatured_types == NULL)
6347 {
6348 dwarf2_per_objfile->signatured_types
6349 = allocate_signatured_type_table (objfile);
6350 }
6351
6352 find_entry.signature = dwo_unit->signature;
6353 slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
6354 INSERT);
6355 /* If we've already seen this type there's nothing to do. What's happening
6356 is we're doing our own version of comdat-folding here. */
6357 if (*slot != NULL)
6358 return 1;
6359
6360 /* This does the job that create_all_type_units would have done for
6361 this TU. */
6362 entry = add_type_unit (dwo_unit->signature, slot);
6363 fill_in_sig_entry_from_dwo_entry (objfile, entry, dwo_unit);
6364 *slot = entry;
6365
6366 /* This does the job that build_type_psymtabs_1 would have done. */
6367 init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0,
6368 build_type_psymtabs_reader, NULL);
6369
6370 return 1;
6371}
6372
6373/* Traversal function for process_skeletonless_type_units. */
6374
6375static int
6376process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
6377{
6378 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
6379
6380 if (dwo_file->tus != NULL)
6381 {
6382 htab_traverse_noresize (dwo_file->tus,
6383 process_skeletonless_type_unit, info);
6384 }
6385
6386 return 1;
6387}
6388
6389/* Scan all TUs of DWO files, verifying we've processed them.
6390 This is needed in case a TU was emitted without its skeleton.
6391 Note: This can't be done until we know what all the DWO files are. */
6392
6393static void
6394process_skeletonless_type_units (struct objfile *objfile)
6395{
6396 /* Skeletonless TUs in DWP files without .gdb_index is not supported yet. */
6397 if (get_dwp_file () == NULL
6398 && dwarf2_per_objfile->dwo_files != NULL)
6399 {
6400 htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
6401 process_dwo_file_for_skeletonless_type_units,
6402 objfile);
6403 }
348e048f
DE
6404}
6405
60606b2c
TT
6406/* A cleanup function that clears objfile's psymtabs_addrmap field. */
6407
6408static void
6409psymtabs_addrmap_cleanup (void *o)
6410{
6411 struct objfile *objfile = o;
ec61707d 6412
60606b2c
TT
6413 objfile->psymtabs_addrmap = NULL;
6414}
6415
95554aad
TT
6416/* Compute the 'user' field for each psymtab in OBJFILE. */
6417
6418static void
6419set_partial_user (struct objfile *objfile)
6420{
6421 int i;
6422
6423 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
6424 {
8832e7e3 6425 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
95554aad
TT
6426 struct partial_symtab *pst = per_cu->v.psymtab;
6427 int j;
6428
36586728
TT
6429 if (pst == NULL)
6430 continue;
6431
95554aad
TT
6432 for (j = 0; j < pst->number_of_dependencies; ++j)
6433 {
6434 /* Set the 'user' field only if it is not already set. */
6435 if (pst->dependencies[j]->user == NULL)
6436 pst->dependencies[j]->user = pst;
6437 }
6438 }
6439}
6440
93311388
DE
6441/* Build the partial symbol table by doing a quick pass through the
6442 .debug_info and .debug_abbrev sections. */
72bf9492 6443
93311388 6444static void
c67a9c90 6445dwarf2_build_psymtabs_hard (struct objfile *objfile)
93311388 6446{
60606b2c
TT
6447 struct cleanup *back_to, *addrmap_cleanup;
6448 struct obstack temp_obstack;
21b2bd31 6449 int i;
93311388 6450
b4f54984 6451 if (dwarf_read_debug)
45cfd468
DE
6452 {
6453 fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
4262abfb 6454 objfile_name (objfile));
45cfd468
DE
6455 }
6456
98bfdba5
PA
6457 dwarf2_per_objfile->reading_partial_symbols = 1;
6458
be391dca 6459 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
91c24f0a 6460
93311388
DE
6461 /* Any cached compilation units will be linked by the per-objfile
6462 read_in_chain. Make sure to free them when we're done. */
6463 back_to = make_cleanup (free_cached_comp_units, NULL);
72bf9492 6464
348e048f
DE
6465 build_type_psymtabs (objfile);
6466
93311388 6467 create_all_comp_units (objfile);
c906108c 6468
60606b2c
TT
6469 /* Create a temporary address map on a temporary obstack. We later
6470 copy this to the final obstack. */
6471 obstack_init (&temp_obstack);
6472 make_cleanup_obstack_free (&temp_obstack);
6473 objfile->psymtabs_addrmap = addrmap_create_mutable (&temp_obstack);
6474 addrmap_cleanup = make_cleanup (psymtabs_addrmap_cleanup, objfile);
72bf9492 6475
21b2bd31 6476 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
93311388 6477 {
8832e7e3 6478 struct dwarf2_per_cu_data *per_cu = dw2_get_cutu (i);
aaa75496 6479
b93601f3 6480 process_psymtab_comp_unit (per_cu, 0, language_minimal);
c906108c 6481 }
ff013f42 6482
6aa5f3a6
DE
6483 /* This has to wait until we read the CUs, we need the list of DWOs. */
6484 process_skeletonless_type_units (objfile);
6485
6486 /* Now that all TUs have been processed we can fill in the dependencies. */
6487 if (dwarf2_per_objfile->type_unit_groups != NULL)
6488 {
6489 htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
6490 build_type_psymtab_dependencies, NULL);
6491 }
6492
b4f54984 6493 if (dwarf_read_debug)
6aa5f3a6
DE
6494 print_tu_stats ();
6495
95554aad
TT
6496 set_partial_user (objfile);
6497
ff013f42
JK
6498 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
6499 &objfile->objfile_obstack);
60606b2c 6500 discard_cleanups (addrmap_cleanup);
ff013f42 6501
ae038cb0 6502 do_cleanups (back_to);
45cfd468 6503
b4f54984 6504 if (dwarf_read_debug)
45cfd468 6505 fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
4262abfb 6506 objfile_name (objfile));
ae038cb0
DJ
6507}
6508
3019eac3 6509/* die_reader_func for load_partial_comp_unit. */
ae038cb0
DJ
6510
6511static void
dee91e82 6512load_partial_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 6513 const gdb_byte *info_ptr,
dee91e82
DE
6514 struct die_info *comp_unit_die,
6515 int has_children,
6516 void *data)
ae038cb0 6517{
dee91e82 6518 struct dwarf2_cu *cu = reader->cu;
ae038cb0 6519
95554aad 6520 prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
ae038cb0 6521
ae038cb0
DJ
6522 /* Check if comp unit has_children.
6523 If so, read the rest of the partial symbols from this comp unit.
0963b4bd 6524 If not, there's no more debug_info for this comp unit. */
d85a05f0 6525 if (has_children)
dee91e82
DE
6526 load_partial_dies (reader, info_ptr, 0);
6527}
98bfdba5 6528
dee91e82
DE
6529/* Load the partial DIEs for a secondary CU into memory.
6530 This is also used when rereading a primary CU with load_all_dies. */
c5b7e1cb 6531
dee91e82
DE
6532static void
6533load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
6534{
f4dc4d17
DE
6535 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
6536 load_partial_comp_unit_reader, NULL);
ae038cb0
DJ
6537}
6538
ae038cb0 6539static void
36586728
TT
6540read_comp_units_from_section (struct objfile *objfile,
6541 struct dwarf2_section_info *section,
6542 unsigned int is_dwz,
6543 int *n_allocated,
6544 int *n_comp_units,
6545 struct dwarf2_per_cu_data ***all_comp_units)
ae038cb0 6546{
d521ce57 6547 const gdb_byte *info_ptr;
a32a8923 6548 bfd *abfd = get_section_bfd_owner (section);
be391dca 6549
b4f54984 6550 if (dwarf_read_debug)
bf6af496 6551 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
a32a8923
DE
6552 get_section_name (section),
6553 get_section_file_name (section));
bf6af496 6554
36586728 6555 dwarf2_read_section (objfile, section);
ae038cb0 6556
36586728 6557 info_ptr = section->buffer;
6e70227d 6558
36586728 6559 while (info_ptr < section->buffer + section->size)
ae038cb0 6560 {
c764a876 6561 unsigned int length, initial_length_size;
ae038cb0 6562 struct dwarf2_per_cu_data *this_cu;
b64f50a1 6563 sect_offset offset;
ae038cb0 6564
36586728 6565 offset.sect_off = info_ptr - section->buffer;
ae038cb0
DJ
6566
6567 /* Read just enough information to find out where the next
6568 compilation unit is. */
36586728 6569 length = read_initial_length (abfd, info_ptr, &initial_length_size);
ae038cb0
DJ
6570
6571 /* Save the compilation unit for later lookup. */
6572 this_cu = obstack_alloc (&objfile->objfile_obstack,
6573 sizeof (struct dwarf2_per_cu_data));
6574 memset (this_cu, 0, sizeof (*this_cu));
6575 this_cu->offset = offset;
c764a876 6576 this_cu->length = length + initial_length_size;
36586728 6577 this_cu->is_dwz = is_dwz;
9291a0cd 6578 this_cu->objfile = objfile;
8a0459fd 6579 this_cu->section = section;
ae038cb0 6580
36586728 6581 if (*n_comp_units == *n_allocated)
ae038cb0 6582 {
36586728
TT
6583 *n_allocated *= 2;
6584 *all_comp_units = xrealloc (*all_comp_units,
6585 *n_allocated
6586 * sizeof (struct dwarf2_per_cu_data *));
ae038cb0 6587 }
36586728
TT
6588 (*all_comp_units)[*n_comp_units] = this_cu;
6589 ++*n_comp_units;
ae038cb0
DJ
6590
6591 info_ptr = info_ptr + this_cu->length;
6592 }
36586728
TT
6593}
6594
6595/* Create a list of all compilation units in OBJFILE.
6596 This is only done for -readnow and building partial symtabs. */
6597
6598static void
6599create_all_comp_units (struct objfile *objfile)
6600{
6601 int n_allocated;
6602 int n_comp_units;
6603 struct dwarf2_per_cu_data **all_comp_units;
4db1a1dc 6604 struct dwz_file *dwz;
36586728
TT
6605
6606 n_comp_units = 0;
6607 n_allocated = 10;
6608 all_comp_units = xmalloc (n_allocated
6609 * sizeof (struct dwarf2_per_cu_data *));
6610
6611 read_comp_units_from_section (objfile, &dwarf2_per_objfile->info, 0,
6612 &n_allocated, &n_comp_units, &all_comp_units);
6613
4db1a1dc
TT
6614 dwz = dwarf2_get_dwz_file ();
6615 if (dwz != NULL)
6616 read_comp_units_from_section (objfile, &dwz->info, 1,
6617 &n_allocated, &n_comp_units,
6618 &all_comp_units);
ae038cb0
DJ
6619
6620 dwarf2_per_objfile->all_comp_units
6621 = obstack_alloc (&objfile->objfile_obstack,
6622 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6623 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
6624 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
6625 xfree (all_comp_units);
6626 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
6627}
6628
5734ee8b 6629/* Process all loaded DIEs for compilation unit CU, starting at
cdc07690 6630 FIRST_DIE. The caller should pass SET_ADDRMAP == 1 if the compilation
5734ee8b 6631 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
cdc07690
YQ
6632 DW_AT_ranges). See the comments of add_partial_subprogram on how
6633 SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated. */
c906108c 6634
72bf9492
DJ
6635static void
6636scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
cdc07690
YQ
6637 CORE_ADDR *highpc, int set_addrmap,
6638 struct dwarf2_cu *cu)
c906108c 6639{
72bf9492 6640 struct partial_die_info *pdi;
c906108c 6641
91c24f0a
DC
6642 /* Now, march along the PDI's, descending into ones which have
6643 interesting children but skipping the children of the other ones,
6644 until we reach the end of the compilation unit. */
c906108c 6645
72bf9492 6646 pdi = first_die;
91c24f0a 6647
72bf9492
DJ
6648 while (pdi != NULL)
6649 {
6650 fixup_partial_die (pdi, cu);
c906108c 6651
f55ee35c 6652 /* Anonymous namespaces or modules have no name but have interesting
91c24f0a
DC
6653 children, so we need to look at them. Ditto for anonymous
6654 enums. */
933c6fe4 6655
72bf9492 6656 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
95554aad
TT
6657 || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
6658 || pdi->tag == DW_TAG_imported_unit)
c906108c 6659 {
72bf9492 6660 switch (pdi->tag)
c906108c
SS
6661 {
6662 case DW_TAG_subprogram:
cdc07690 6663 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
c906108c 6664 break;
72929c62 6665 case DW_TAG_constant:
c906108c
SS
6666 case DW_TAG_variable:
6667 case DW_TAG_typedef:
91c24f0a 6668 case DW_TAG_union_type:
72bf9492 6669 if (!pdi->is_declaration)
63d06c5c 6670 {
72bf9492 6671 add_partial_symbol (pdi, cu);
63d06c5c
DC
6672 }
6673 break;
c906108c 6674 case DW_TAG_class_type:
680b30c7 6675 case DW_TAG_interface_type:
c906108c 6676 case DW_TAG_structure_type:
72bf9492 6677 if (!pdi->is_declaration)
c906108c 6678 {
72bf9492 6679 add_partial_symbol (pdi, cu);
c906108c
SS
6680 }
6681 break;
91c24f0a 6682 case DW_TAG_enumeration_type:
72bf9492
DJ
6683 if (!pdi->is_declaration)
6684 add_partial_enumeration (pdi, cu);
c906108c
SS
6685 break;
6686 case DW_TAG_base_type:
a02abb62 6687 case DW_TAG_subrange_type:
c906108c 6688 /* File scope base type definitions are added to the partial
c5aa993b 6689 symbol table. */
72bf9492 6690 add_partial_symbol (pdi, cu);
c906108c 6691 break;
d9fa45fe 6692 case DW_TAG_namespace:
cdc07690 6693 add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
91c24f0a 6694 break;
5d7cb8df 6695 case DW_TAG_module:
cdc07690 6696 add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
5d7cb8df 6697 break;
95554aad
TT
6698 case DW_TAG_imported_unit:
6699 {
6700 struct dwarf2_per_cu_data *per_cu;
6701
f4dc4d17
DE
6702 /* For now we don't handle imported units in type units. */
6703 if (cu->per_cu->is_debug_types)
6704 {
6705 error (_("Dwarf Error: DW_TAG_imported_unit is not"
6706 " supported in type units [in module %s]"),
4262abfb 6707 objfile_name (cu->objfile));
f4dc4d17
DE
6708 }
6709
95554aad 6710 per_cu = dwarf2_find_containing_comp_unit (pdi->d.offset,
36586728 6711 pdi->is_dwz,
95554aad
TT
6712 cu->objfile);
6713
6714 /* Go read the partial unit, if needed. */
6715 if (per_cu->v.psymtab == NULL)
b93601f3 6716 process_psymtab_comp_unit (per_cu, 1, cu->language);
95554aad 6717
f4dc4d17 6718 VEC_safe_push (dwarf2_per_cu_ptr,
796a7ff8 6719 cu->per_cu->imported_symtabs, per_cu);
95554aad
TT
6720 }
6721 break;
74921315
KS
6722 case DW_TAG_imported_declaration:
6723 add_partial_symbol (pdi, cu);
6724 break;
c906108c
SS
6725 default:
6726 break;
6727 }
6728 }
6729
72bf9492
DJ
6730 /* If the die has a sibling, skip to the sibling. */
6731
6732 pdi = pdi->die_sibling;
6733 }
6734}
6735
6736/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 6737
72bf9492 6738 Normally, this is simple. For C++, the parent DIE's fully scoped
987504bb
JJ
6739 name is concatenated with "::" and the partial DIE's name. For
6740 Java, the same thing occurs except that "." is used instead of "::".
72bf9492
DJ
6741 Enumerators are an exception; they use the scope of their parent
6742 enumeration type, i.e. the name of the enumeration type is not
6743 prepended to the enumerator.
91c24f0a 6744
72bf9492
DJ
6745 There are two complexities. One is DW_AT_specification; in this
6746 case "parent" means the parent of the target of the specification,
6747 instead of the direct parent of the DIE. The other is compilers
6748 which do not emit DW_TAG_namespace; in this case we try to guess
6749 the fully qualified name of structure types from their members'
6750 linkage names. This must be done using the DIE's children rather
6751 than the children of any DW_AT_specification target. We only need
6752 to do this for structures at the top level, i.e. if the target of
6753 any DW_AT_specification (if any; otherwise the DIE itself) does not
6754 have a parent. */
6755
6756/* Compute the scope prefix associated with PDI's parent, in
6757 compilation unit CU. The result will be allocated on CU's
6758 comp_unit_obstack, or a copy of the already allocated PDI->NAME
6759 field. NULL is returned if no prefix is necessary. */
15d034d0 6760static const char *
72bf9492
DJ
6761partial_die_parent_scope (struct partial_die_info *pdi,
6762 struct dwarf2_cu *cu)
6763{
15d034d0 6764 const char *grandparent_scope;
72bf9492 6765 struct partial_die_info *parent, *real_pdi;
91c24f0a 6766
72bf9492
DJ
6767 /* We need to look at our parent DIE; if we have a DW_AT_specification,
6768 then this means the parent of the specification DIE. */
6769
6770 real_pdi = pdi;
72bf9492 6771 while (real_pdi->has_specification)
36586728
TT
6772 real_pdi = find_partial_die (real_pdi->spec_offset,
6773 real_pdi->spec_is_dwz, cu);
72bf9492
DJ
6774
6775 parent = real_pdi->die_parent;
6776 if (parent == NULL)
6777 return NULL;
6778
6779 if (parent->scope_set)
6780 return parent->scope;
6781
6782 fixup_partial_die (parent, cu);
6783
10b3939b 6784 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492 6785
acebe513
UW
6786 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
6787 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
6788 Work around this problem here. */
6789 if (cu->language == language_cplus
6e70227d 6790 && parent->tag == DW_TAG_namespace
acebe513
UW
6791 && strcmp (parent->name, "::") == 0
6792 && grandparent_scope == NULL)
6793 {
6794 parent->scope = NULL;
6795 parent->scope_set = 1;
6796 return NULL;
6797 }
6798
9c6c53f7
SA
6799 if (pdi->tag == DW_TAG_enumerator)
6800 /* Enumerators should not get the name of the enumeration as a prefix. */
6801 parent->scope = grandparent_scope;
6802 else if (parent->tag == DW_TAG_namespace
f55ee35c 6803 || parent->tag == DW_TAG_module
72bf9492
DJ
6804 || parent->tag == DW_TAG_structure_type
6805 || parent->tag == DW_TAG_class_type
680b30c7 6806 || parent->tag == DW_TAG_interface_type
ceeb3d5a
TT
6807 || parent->tag == DW_TAG_union_type
6808 || parent->tag == DW_TAG_enumeration_type)
72bf9492
DJ
6809 {
6810 if (grandparent_scope == NULL)
6811 parent->scope = parent->name;
6812 else
3e43a32a
MS
6813 parent->scope = typename_concat (&cu->comp_unit_obstack,
6814 grandparent_scope,
f55ee35c 6815 parent->name, 0, cu);
72bf9492 6816 }
72bf9492
DJ
6817 else
6818 {
6819 /* FIXME drow/2004-04-01: What should we be doing with
6820 function-local names? For partial symbols, we should probably be
6821 ignoring them. */
6822 complaint (&symfile_complaints,
e2e0b3e5 6823 _("unhandled containing DIE tag %d for DIE at %d"),
b64f50a1 6824 parent->tag, pdi->offset.sect_off);
72bf9492 6825 parent->scope = grandparent_scope;
c906108c
SS
6826 }
6827
72bf9492
DJ
6828 parent->scope_set = 1;
6829 return parent->scope;
6830}
6831
6832/* Return the fully scoped name associated with PDI, from compilation unit
6833 CU. The result will be allocated with malloc. */
4568ecf9 6834
72bf9492
DJ
6835static char *
6836partial_die_full_name (struct partial_die_info *pdi,
6837 struct dwarf2_cu *cu)
6838{
15d034d0 6839 const char *parent_scope;
72bf9492 6840
98bfdba5
PA
6841 /* If this is a template instantiation, we can not work out the
6842 template arguments from partial DIEs. So, unfortunately, we have
6843 to go through the full DIEs. At least any work we do building
6844 types here will be reused if full symbols are loaded later. */
6845 if (pdi->has_template_arguments)
6846 {
6847 fixup_partial_die (pdi, cu);
6848
6849 if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
6850 {
6851 struct die_info *die;
6852 struct attribute attr;
6853 struct dwarf2_cu *ref_cu = cu;
6854
b64f50a1 6855 /* DW_FORM_ref_addr is using section offset. */
98bfdba5
PA
6856 attr.name = 0;
6857 attr.form = DW_FORM_ref_addr;
4568ecf9 6858 attr.u.unsnd = pdi->offset.sect_off;
98bfdba5
PA
6859 die = follow_die_ref (NULL, &attr, &ref_cu);
6860
6861 return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
6862 }
6863 }
6864
72bf9492
DJ
6865 parent_scope = partial_die_parent_scope (pdi, cu);
6866 if (parent_scope == NULL)
6867 return NULL;
6868 else
f55ee35c 6869 return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
c906108c
SS
6870}
6871
6872static void
72bf9492 6873add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 6874{
e7c27a73 6875 struct objfile *objfile = cu->objfile;
3e29f34a 6876 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 6877 CORE_ADDR addr = 0;
15d034d0 6878 const char *actual_name = NULL;
e142c38c 6879 CORE_ADDR baseaddr;
15d034d0 6880 char *built_actual_name;
e142c38c
DJ
6881
6882 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 6883
15d034d0
TT
6884 built_actual_name = partial_die_full_name (pdi, cu);
6885 if (built_actual_name != NULL)
6886 actual_name = built_actual_name;
63d06c5c 6887
72bf9492
DJ
6888 if (actual_name == NULL)
6889 actual_name = pdi->name;
6890
c906108c
SS
6891 switch (pdi->tag)
6892 {
6893 case DW_TAG_subprogram:
3e29f34a 6894 addr = gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr);
2cfa0c8d 6895 if (pdi->is_external || cu->language == language_ada)
c906108c 6896 {
2cfa0c8d
JB
6897 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
6898 of the global scope. But in Ada, we want to be able to access
6899 nested procedures globally. So all Ada subprograms are stored
6900 in the global scope. */
3e29f34a
MR
6901 /* prim_record_minimal_symbol (actual_name, addr, mst_text,
6902 objfile); */
f47fb265 6903 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6904 built_actual_name != NULL,
f47fb265
MS
6905 VAR_DOMAIN, LOC_BLOCK,
6906 &objfile->global_psymbols,
3e29f34a 6907 0, addr, cu->language, objfile);
c906108c
SS
6908 }
6909 else
6910 {
3e29f34a
MR
6911 /* prim_record_minimal_symbol (actual_name, addr, mst_file_text,
6912 objfile); */
f47fb265 6913 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6914 built_actual_name != NULL,
f47fb265
MS
6915 VAR_DOMAIN, LOC_BLOCK,
6916 &objfile->static_psymbols,
3e29f34a 6917 0, addr, cu->language, objfile);
c906108c
SS
6918 }
6919 break;
72929c62
JB
6920 case DW_TAG_constant:
6921 {
6922 struct psymbol_allocation_list *list;
6923
6924 if (pdi->is_external)
6925 list = &objfile->global_psymbols;
6926 else
6927 list = &objfile->static_psymbols;
f47fb265 6928 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6929 built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
f47fb265 6930 list, 0, 0, cu->language, objfile);
72929c62
JB
6931 }
6932 break;
c906108c 6933 case DW_TAG_variable:
95554aad
TT
6934 if (pdi->d.locdesc)
6935 addr = decode_locdesc (pdi->d.locdesc, cu);
caac4577 6936
95554aad 6937 if (pdi->d.locdesc
caac4577
JG
6938 && addr == 0
6939 && !dwarf2_per_objfile->has_section_at_zero)
6940 {
6941 /* A global or static variable may also have been stripped
6942 out by the linker if unused, in which case its address
6943 will be nullified; do not add such variables into partial
6944 symbol table then. */
6945 }
6946 else if (pdi->is_external)
c906108c
SS
6947 {
6948 /* Global Variable.
6949 Don't enter into the minimal symbol tables as there is
6950 a minimal symbol table entry from the ELF symbols already.
6951 Enter into partial symbol table if it has a location
6952 descriptor or a type.
6953 If the location descriptor is missing, new_symbol will create
6954 a LOC_UNRESOLVED symbol, the address of the variable will then
6955 be determined from the minimal symbol table whenever the variable
6956 is referenced.
6957 The address for the partial symbol table entry is not
6958 used by GDB, but it comes in handy for debugging partial symbol
6959 table building. */
6960
95554aad 6961 if (pdi->d.locdesc || pdi->has_type)
f47fb265 6962 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6963 built_actual_name != NULL,
f47fb265
MS
6964 VAR_DOMAIN, LOC_STATIC,
6965 &objfile->global_psymbols,
6966 0, addr + baseaddr,
6967 cu->language, objfile);
c906108c
SS
6968 }
6969 else
6970 {
ff908ebf
AW
6971 int has_loc = pdi->d.locdesc != NULL;
6972
6973 /* Static Variable. Skip symbols whose value we cannot know (those
6974 without location descriptors or constant values). */
6975 if (!has_loc && !pdi->has_const_value)
decbce07 6976 {
15d034d0 6977 xfree (built_actual_name);
decbce07
MS
6978 return;
6979 }
ff908ebf 6980
f47fb265 6981 /* prim_record_minimal_symbol (actual_name, addr + baseaddr,
c5aa993b 6982 mst_file_data, objfile); */
f47fb265 6983 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6984 built_actual_name != NULL,
f47fb265
MS
6985 VAR_DOMAIN, LOC_STATIC,
6986 &objfile->static_psymbols,
ff908ebf
AW
6987 0,
6988 has_loc ? addr + baseaddr : (CORE_ADDR) 0,
f47fb265 6989 cu->language, objfile);
c906108c
SS
6990 }
6991 break;
6992 case DW_TAG_typedef:
6993 case DW_TAG_base_type:
a02abb62 6994 case DW_TAG_subrange_type:
38d518c9 6995 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 6996 built_actual_name != NULL,
176620f1 6997 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 6998 &objfile->static_psymbols,
e142c38c 6999 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7000 break;
74921315 7001 case DW_TAG_imported_declaration:
72bf9492
DJ
7002 case DW_TAG_namespace:
7003 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7004 built_actual_name != NULL,
72bf9492
DJ
7005 VAR_DOMAIN, LOC_TYPEDEF,
7006 &objfile->global_psymbols,
7007 0, (CORE_ADDR) 0, cu->language, objfile);
7008 break;
530e8392
KB
7009 case DW_TAG_module:
7010 add_psymbol_to_list (actual_name, strlen (actual_name),
7011 built_actual_name != NULL,
7012 MODULE_DOMAIN, LOC_TYPEDEF,
7013 &objfile->global_psymbols,
7014 0, (CORE_ADDR) 0, cu->language, objfile);
7015 break;
c906108c 7016 case DW_TAG_class_type:
680b30c7 7017 case DW_TAG_interface_type:
c906108c
SS
7018 case DW_TAG_structure_type:
7019 case DW_TAG_union_type:
7020 case DW_TAG_enumeration_type:
fa4028e9
JB
7021 /* Skip external references. The DWARF standard says in the section
7022 about "Structure, Union, and Class Type Entries": "An incomplete
7023 structure, union or class type is represented by a structure,
7024 union or class entry that does not have a byte size attribute
7025 and that has a DW_AT_declaration attribute." */
7026 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07 7027 {
15d034d0 7028 xfree (built_actual_name);
decbce07
MS
7029 return;
7030 }
fa4028e9 7031
63d06c5c
DC
7032 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
7033 static vs. global. */
38d518c9 7034 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7035 built_actual_name != NULL,
176620f1 7036 STRUCT_DOMAIN, LOC_TYPEDEF,
987504bb
JJ
7037 (cu->language == language_cplus
7038 || cu->language == language_java)
63d06c5c
DC
7039 ? &objfile->global_psymbols
7040 : &objfile->static_psymbols,
e142c38c 7041 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 7042
c906108c
SS
7043 break;
7044 case DW_TAG_enumerator:
38d518c9 7045 add_psymbol_to_list (actual_name, strlen (actual_name),
15d034d0 7046 built_actual_name != NULL,
176620f1 7047 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
7048 (cu->language == language_cplus
7049 || cu->language == language_java)
f6fe98ef
DJ
7050 ? &objfile->global_psymbols
7051 : &objfile->static_psymbols,
e142c38c 7052 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c
SS
7053 break;
7054 default:
7055 break;
7056 }
5c4e30ca 7057
15d034d0 7058 xfree (built_actual_name);
c906108c
SS
7059}
7060
5c4e30ca
DC
7061/* Read a partial die corresponding to a namespace; also, add a symbol
7062 corresponding to that namespace to the symbol table. NAMESPACE is
7063 the name of the enclosing namespace. */
91c24f0a 7064
72bf9492
DJ
7065static void
7066add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 7067 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7068 int set_addrmap, struct dwarf2_cu *cu)
91c24f0a 7069{
72bf9492 7070 /* Add a symbol for the namespace. */
e7c27a73 7071
72bf9492 7072 add_partial_symbol (pdi, cu);
5c4e30ca
DC
7073
7074 /* Now scan partial symbols in that namespace. */
7075
91c24f0a 7076 if (pdi->has_children)
cdc07690 7077 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
91c24f0a
DC
7078}
7079
5d7cb8df
JK
7080/* Read a partial die corresponding to a Fortran module. */
7081
7082static void
7083add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
cdc07690 7084 CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
5d7cb8df 7085{
530e8392
KB
7086 /* Add a symbol for the namespace. */
7087
7088 add_partial_symbol (pdi, cu);
7089
f55ee35c 7090 /* Now scan partial symbols in that module. */
5d7cb8df
JK
7091
7092 if (pdi->has_children)
cdc07690 7093 scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
5d7cb8df
JK
7094}
7095
bc30ff58
JB
7096/* Read a partial die corresponding to a subprogram and create a partial
7097 symbol for that subprogram. When the CU language allows it, this
7098 routine also defines a partial symbol for each nested subprogram
cdc07690 7099 that this subprogram contains. If SET_ADDRMAP is true, record the
428fc5fc
YQ
7100 covered ranges in the addrmap. Set *LOWPC and *HIGHPC to the lowest
7101 and highest PC values found in PDI.
6e70227d 7102
cdc07690
YQ
7103 PDI may also be a lexical block, in which case we simply search
7104 recursively for subprograms defined inside that lexical block.
bc30ff58
JB
7105 Again, this is only performed when the CU language allows this
7106 type of definitions. */
7107
7108static void
7109add_partial_subprogram (struct partial_die_info *pdi,
7110 CORE_ADDR *lowpc, CORE_ADDR *highpc,
cdc07690 7111 int set_addrmap, struct dwarf2_cu *cu)
bc30ff58
JB
7112{
7113 if (pdi->tag == DW_TAG_subprogram)
7114 {
7115 if (pdi->has_pc_info)
7116 {
7117 if (pdi->lowpc < *lowpc)
7118 *lowpc = pdi->lowpc;
7119 if (pdi->highpc > *highpc)
7120 *highpc = pdi->highpc;
cdc07690 7121 if (set_addrmap)
5734ee8b 7122 {
5734ee8b 7123 struct objfile *objfile = cu->objfile;
3e29f34a
MR
7124 struct gdbarch *gdbarch = get_objfile_arch (objfile);
7125 CORE_ADDR baseaddr;
7126 CORE_ADDR highpc;
7127 CORE_ADDR lowpc;
5734ee8b
DJ
7128
7129 baseaddr = ANOFFSET (objfile->section_offsets,
7130 SECT_OFF_TEXT (objfile));
3e29f34a
MR
7131 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7132 pdi->lowpc + baseaddr);
7133 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
7134 pdi->highpc + baseaddr);
7135 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9291a0cd 7136 cu->per_cu->v.psymtab);
5734ee8b 7137 }
481860b3
GB
7138 }
7139
7140 if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
7141 {
bc30ff58 7142 if (!pdi->is_declaration)
e8d05480
JB
7143 /* Ignore subprogram DIEs that do not have a name, they are
7144 illegal. Do not emit a complaint at this point, we will
7145 do so when we convert this psymtab into a symtab. */
7146 if (pdi->name)
7147 add_partial_symbol (pdi, cu);
bc30ff58
JB
7148 }
7149 }
6e70227d 7150
bc30ff58
JB
7151 if (! pdi->has_children)
7152 return;
7153
7154 if (cu->language == language_ada)
7155 {
7156 pdi = pdi->die_child;
7157 while (pdi != NULL)
7158 {
7159 fixup_partial_die (pdi, cu);
7160 if (pdi->tag == DW_TAG_subprogram
7161 || pdi->tag == DW_TAG_lexical_block)
cdc07690 7162 add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
bc30ff58
JB
7163 pdi = pdi->die_sibling;
7164 }
7165 }
7166}
7167
91c24f0a
DC
7168/* Read a partial die corresponding to an enumeration type. */
7169
72bf9492
DJ
7170static void
7171add_partial_enumeration (struct partial_die_info *enum_pdi,
7172 struct dwarf2_cu *cu)
91c24f0a 7173{
72bf9492 7174 struct partial_die_info *pdi;
91c24f0a
DC
7175
7176 if (enum_pdi->name != NULL)
72bf9492
DJ
7177 add_partial_symbol (enum_pdi, cu);
7178
7179 pdi = enum_pdi->die_child;
7180 while (pdi)
91c24f0a 7181 {
72bf9492 7182 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 7183 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 7184 else
72bf9492
DJ
7185 add_partial_symbol (pdi, cu);
7186 pdi = pdi->die_sibling;
91c24f0a 7187 }
91c24f0a
DC
7188}
7189
6caca83c
CC
7190/* Return the initial uleb128 in the die at INFO_PTR. */
7191
7192static unsigned int
d521ce57 7193peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
6caca83c
CC
7194{
7195 unsigned int bytes_read;
7196
7197 return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7198}
7199
4bb7a0a7
DJ
7200/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
7201 Return the corresponding abbrev, or NULL if the number is zero (indicating
7202 an empty DIE). In either case *BYTES_READ will be set to the length of
7203 the initial number. */
7204
7205static struct abbrev_info *
d521ce57 7206peek_die_abbrev (const gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 7207 struct dwarf2_cu *cu)
4bb7a0a7
DJ
7208{
7209 bfd *abfd = cu->objfile->obfd;
7210 unsigned int abbrev_number;
7211 struct abbrev_info *abbrev;
7212
7213 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
7214
7215 if (abbrev_number == 0)
7216 return NULL;
7217
433df2d4 7218 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
4bb7a0a7
DJ
7219 if (!abbrev)
7220 {
422b9917
DE
7221 error (_("Dwarf Error: Could not find abbrev number %d in %s"
7222 " at offset 0x%x [in module %s]"),
7223 abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
7224 cu->header.offset.sect_off, bfd_get_filename (abfd));
4bb7a0a7
DJ
7225 }
7226
7227 return abbrev;
7228}
7229
93311388
DE
7230/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7231 Returns a pointer to the end of a series of DIEs, terminated by an empty
4bb7a0a7
DJ
7232 DIE. Any children of the skipped DIEs will also be skipped. */
7233
d521ce57
TT
7234static const gdb_byte *
7235skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
4bb7a0a7 7236{
dee91e82 7237 struct dwarf2_cu *cu = reader->cu;
4bb7a0a7
DJ
7238 struct abbrev_info *abbrev;
7239 unsigned int bytes_read;
7240
7241 while (1)
7242 {
7243 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
7244 if (abbrev == NULL)
7245 return info_ptr + bytes_read;
7246 else
dee91e82 7247 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
4bb7a0a7
DJ
7248 }
7249}
7250
93311388
DE
7251/* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
7252 INFO_PTR should point just after the initial uleb128 of a DIE, and the
4bb7a0a7
DJ
7253 abbrev corresponding to that skipped uleb128 should be passed in
7254 ABBREV. Returns a pointer to this DIE's sibling, skipping any
7255 children. */
7256
d521ce57
TT
7257static const gdb_byte *
7258skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
dee91e82 7259 struct abbrev_info *abbrev)
4bb7a0a7
DJ
7260{
7261 unsigned int bytes_read;
7262 struct attribute attr;
dee91e82
DE
7263 bfd *abfd = reader->abfd;
7264 struct dwarf2_cu *cu = reader->cu;
d521ce57 7265 const gdb_byte *buffer = reader->buffer;
f664829e 7266 const gdb_byte *buffer_end = reader->buffer_end;
d521ce57 7267 const gdb_byte *start_info_ptr = info_ptr;
4bb7a0a7
DJ
7268 unsigned int form, i;
7269
7270 for (i = 0; i < abbrev->num_attrs; i++)
7271 {
7272 /* The only abbrev we care about is DW_AT_sibling. */
7273 if (abbrev->attrs[i].name == DW_AT_sibling)
7274 {
dee91e82 7275 read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
4bb7a0a7 7276 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
7277 complaint (&symfile_complaints,
7278 _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 7279 else
b9502d3f
WN
7280 {
7281 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
7282 const gdb_byte *sibling_ptr = buffer + off;
7283
7284 if (sibling_ptr < info_ptr)
7285 complaint (&symfile_complaints,
7286 _("DW_AT_sibling points backwards"));
22869d73
KS
7287 else if (sibling_ptr > reader->buffer_end)
7288 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
7289 else
7290 return sibling_ptr;
7291 }
4bb7a0a7
DJ
7292 }
7293
7294 /* If it isn't DW_AT_sibling, skip this attribute. */
7295 form = abbrev->attrs[i].form;
7296 skip_attribute:
7297 switch (form)
7298 {
4bb7a0a7 7299 case DW_FORM_ref_addr:
ae411497
TT
7300 /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
7301 and later it is offset sized. */
7302 if (cu->header.version == 2)
7303 info_ptr += cu->header.addr_size;
7304 else
7305 info_ptr += cu->header.offset_size;
7306 break;
36586728
TT
7307 case DW_FORM_GNU_ref_alt:
7308 info_ptr += cu->header.offset_size;
7309 break;
ae411497 7310 case DW_FORM_addr:
4bb7a0a7
DJ
7311 info_ptr += cu->header.addr_size;
7312 break;
7313 case DW_FORM_data1:
7314 case DW_FORM_ref1:
7315 case DW_FORM_flag:
7316 info_ptr += 1;
7317 break;
2dc7f7b3
TT
7318 case DW_FORM_flag_present:
7319 break;
4bb7a0a7
DJ
7320 case DW_FORM_data2:
7321 case DW_FORM_ref2:
7322 info_ptr += 2;
7323 break;
7324 case DW_FORM_data4:
7325 case DW_FORM_ref4:
7326 info_ptr += 4;
7327 break;
7328 case DW_FORM_data8:
7329 case DW_FORM_ref8:
55f1336d 7330 case DW_FORM_ref_sig8:
4bb7a0a7
DJ
7331 info_ptr += 8;
7332 break;
7333 case DW_FORM_string:
9b1c24c8 7334 read_direct_string (abfd, info_ptr, &bytes_read);
4bb7a0a7
DJ
7335 info_ptr += bytes_read;
7336 break;
2dc7f7b3 7337 case DW_FORM_sec_offset:
4bb7a0a7 7338 case DW_FORM_strp:
36586728 7339 case DW_FORM_GNU_strp_alt:
4bb7a0a7
DJ
7340 info_ptr += cu->header.offset_size;
7341 break;
2dc7f7b3 7342 case DW_FORM_exprloc:
4bb7a0a7
DJ
7343 case DW_FORM_block:
7344 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7345 info_ptr += bytes_read;
7346 break;
7347 case DW_FORM_block1:
7348 info_ptr += 1 + read_1_byte (abfd, info_ptr);
7349 break;
7350 case DW_FORM_block2:
7351 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
7352 break;
7353 case DW_FORM_block4:
7354 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
7355 break;
7356 case DW_FORM_sdata:
7357 case DW_FORM_udata:
7358 case DW_FORM_ref_udata:
3019eac3
DE
7359 case DW_FORM_GNU_addr_index:
7360 case DW_FORM_GNU_str_index:
d521ce57 7361 info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
4bb7a0a7
DJ
7362 break;
7363 case DW_FORM_indirect:
7364 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7365 info_ptr += bytes_read;
7366 /* We need to continue parsing from here, so just go back to
7367 the top. */
7368 goto skip_attribute;
7369
7370 default:
3e43a32a
MS
7371 error (_("Dwarf Error: Cannot handle %s "
7372 "in DWARF reader [in module %s]"),
4bb7a0a7
DJ
7373 dwarf_form_name (form),
7374 bfd_get_filename (abfd));
7375 }
7376 }
7377
7378 if (abbrev->has_children)
dee91e82 7379 return skip_children (reader, info_ptr);
4bb7a0a7
DJ
7380 else
7381 return info_ptr;
7382}
7383
93311388 7384/* Locate ORIG_PDI's sibling.
dee91e82 7385 INFO_PTR should point to the start of the next DIE after ORIG_PDI. */
91c24f0a 7386
d521ce57 7387static const gdb_byte *
dee91e82
DE
7388locate_pdi_sibling (const struct die_reader_specs *reader,
7389 struct partial_die_info *orig_pdi,
d521ce57 7390 const gdb_byte *info_ptr)
91c24f0a
DC
7391{
7392 /* Do we know the sibling already? */
72bf9492 7393
91c24f0a
DC
7394 if (orig_pdi->sibling)
7395 return orig_pdi->sibling;
7396
7397 /* Are there any children to deal with? */
7398
7399 if (!orig_pdi->has_children)
7400 return info_ptr;
7401
4bb7a0a7 7402 /* Skip the children the long way. */
91c24f0a 7403
dee91e82 7404 return skip_children (reader, info_ptr);
91c24f0a
DC
7405}
7406
257e7a09 7407/* Expand this partial symbol table into a full symbol table. SELF is
442e4d9c 7408 not NULL. */
c906108c
SS
7409
7410static void
257e7a09
YQ
7411dwarf2_read_symtab (struct partial_symtab *self,
7412 struct objfile *objfile)
c906108c 7413{
257e7a09 7414 if (self->readin)
c906108c 7415 {
442e4d9c 7416 warning (_("bug: psymtab for %s is already read in."),
257e7a09 7417 self->filename);
442e4d9c
YQ
7418 }
7419 else
7420 {
7421 if (info_verbose)
c906108c 7422 {
442e4d9c 7423 printf_filtered (_("Reading in symbols for %s..."),
257e7a09 7424 self->filename);
442e4d9c 7425 gdb_flush (gdb_stdout);
c906108c 7426 }
c906108c 7427
442e4d9c
YQ
7428 /* Restore our global data. */
7429 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10b3939b 7430
442e4d9c
YQ
7431 /* If this psymtab is constructed from a debug-only objfile, the
7432 has_section_at_zero flag will not necessarily be correct. We
7433 can get the correct value for this flag by looking at the data
7434 associated with the (presumably stripped) associated objfile. */
7435 if (objfile->separate_debug_objfile_backlink)
7436 {
7437 struct dwarf2_per_objfile *dpo_backlink
7438 = objfile_data (objfile->separate_debug_objfile_backlink,
7439 dwarf2_objfile_data_key);
9a619af0 7440
442e4d9c
YQ
7441 dwarf2_per_objfile->has_section_at_zero
7442 = dpo_backlink->has_section_at_zero;
7443 }
b2ab525c 7444
442e4d9c 7445 dwarf2_per_objfile->reading_partial_symbols = 0;
98bfdba5 7446
257e7a09 7447 psymtab_to_symtab_1 (self);
c906108c 7448
442e4d9c
YQ
7449 /* Finish up the debug error message. */
7450 if (info_verbose)
7451 printf_filtered (_("done.\n"));
c906108c 7452 }
95554aad
TT
7453
7454 process_cu_includes ();
c906108c 7455}
9cdd5dbd
DE
7456\f
7457/* Reading in full CUs. */
c906108c 7458
10b3939b
DJ
7459/* Add PER_CU to the queue. */
7460
7461static void
95554aad
TT
7462queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
7463 enum language pretend_language)
10b3939b
DJ
7464{
7465 struct dwarf2_queue_item *item;
7466
7467 per_cu->queued = 1;
7468 item = xmalloc (sizeof (*item));
7469 item->per_cu = per_cu;
95554aad 7470 item->pretend_language = pretend_language;
10b3939b
DJ
7471 item->next = NULL;
7472
7473 if (dwarf2_queue == NULL)
7474 dwarf2_queue = item;
7475 else
7476 dwarf2_queue_tail->next = item;
7477
7478 dwarf2_queue_tail = item;
7479}
7480
89e63ee4
DE
7481/* If PER_CU is not yet queued, add it to the queue.
7482 If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
7483 dependency.
0907af0c 7484 The result is non-zero if PER_CU was queued, otherwise the result is zero
69d751e3
DE
7485 meaning either PER_CU is already queued or it is already loaded.
7486
7487 N.B. There is an invariant here that if a CU is queued then it is loaded.
7488 The caller is required to load PER_CU if we return non-zero. */
0907af0c
DE
7489
7490static int
89e63ee4 7491maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
0907af0c
DE
7492 struct dwarf2_per_cu_data *per_cu,
7493 enum language pretend_language)
7494{
7495 /* We may arrive here during partial symbol reading, if we need full
7496 DIEs to process an unusual case (e.g. template arguments). Do
7497 not queue PER_CU, just tell our caller to load its DIEs. */
7498 if (dwarf2_per_objfile->reading_partial_symbols)
7499 {
7500 if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
7501 return 1;
7502 return 0;
7503 }
7504
7505 /* Mark the dependence relation so that we don't flush PER_CU
7506 too early. */
89e63ee4
DE
7507 if (dependent_cu != NULL)
7508 dwarf2_add_dependence (dependent_cu, per_cu);
0907af0c
DE
7509
7510 /* If it's already on the queue, we have nothing to do. */
7511 if (per_cu->queued)
7512 return 0;
7513
7514 /* If the compilation unit is already loaded, just mark it as
7515 used. */
7516 if (per_cu->cu != NULL)
7517 {
7518 per_cu->cu->last_used = 0;
7519 return 0;
7520 }
7521
7522 /* Add it to the queue. */
7523 queue_comp_unit (per_cu, pretend_language);
7524
7525 return 1;
7526}
7527
10b3939b
DJ
7528/* Process the queue. */
7529
7530static void
a0f42c21 7531process_queue (void)
10b3939b
DJ
7532{
7533 struct dwarf2_queue_item *item, *next_item;
7534
b4f54984 7535 if (dwarf_read_debug)
45cfd468
DE
7536 {
7537 fprintf_unfiltered (gdb_stdlog,
7538 "Expanding one or more symtabs of objfile %s ...\n",
4262abfb 7539 objfile_name (dwarf2_per_objfile->objfile));
45cfd468
DE
7540 }
7541
03dd20cc
DJ
7542 /* The queue starts out with one item, but following a DIE reference
7543 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
7544 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
7545 {
9291a0cd 7546 if (dwarf2_per_objfile->using_index
43f3e411 7547 ? !item->per_cu->v.quick->compunit_symtab
9291a0cd 7548 : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
f4dc4d17
DE
7549 {
7550 struct dwarf2_per_cu_data *per_cu = item->per_cu;
73be47f5 7551 unsigned int debug_print_threshold;
247f5c4f 7552 char buf[100];
f4dc4d17 7553
247f5c4f 7554 if (per_cu->is_debug_types)
f4dc4d17 7555 {
247f5c4f
DE
7556 struct signatured_type *sig_type =
7557 (struct signatured_type *) per_cu;
7558
7559 sprintf (buf, "TU %s at offset 0x%x",
73be47f5
DE
7560 hex_string (sig_type->signature),
7561 per_cu->offset.sect_off);
7562 /* There can be 100s of TUs.
7563 Only print them in verbose mode. */
7564 debug_print_threshold = 2;
f4dc4d17 7565 }
247f5c4f 7566 else
73be47f5
DE
7567 {
7568 sprintf (buf, "CU at offset 0x%x", per_cu->offset.sect_off);
7569 debug_print_threshold = 1;
7570 }
247f5c4f 7571
b4f54984 7572 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7573 fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
f4dc4d17
DE
7574
7575 if (per_cu->is_debug_types)
7576 process_full_type_unit (per_cu, item->pretend_language);
7577 else
7578 process_full_comp_unit (per_cu, item->pretend_language);
7579
b4f54984 7580 if (dwarf_read_debug >= debug_print_threshold)
247f5c4f 7581 fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
f4dc4d17 7582 }
10b3939b
DJ
7583
7584 item->per_cu->queued = 0;
7585 next_item = item->next;
7586 xfree (item);
7587 }
7588
7589 dwarf2_queue_tail = NULL;
45cfd468 7590
b4f54984 7591 if (dwarf_read_debug)
45cfd468
DE
7592 {
7593 fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
4262abfb 7594 objfile_name (dwarf2_per_objfile->objfile));
45cfd468 7595 }
10b3939b
DJ
7596}
7597
7598/* Free all allocated queue entries. This function only releases anything if
7599 an error was thrown; if the queue was processed then it would have been
7600 freed as we went along. */
7601
7602static void
7603dwarf2_release_queue (void *dummy)
7604{
7605 struct dwarf2_queue_item *item, *last;
7606
7607 item = dwarf2_queue;
7608 while (item)
7609 {
7610 /* Anything still marked queued is likely to be in an
7611 inconsistent state, so discard it. */
7612 if (item->per_cu->queued)
7613 {
7614 if (item->per_cu->cu != NULL)
dee91e82 7615 free_one_cached_comp_unit (item->per_cu);
10b3939b
DJ
7616 item->per_cu->queued = 0;
7617 }
7618
7619 last = item;
7620 item = item->next;
7621 xfree (last);
7622 }
7623
7624 dwarf2_queue = dwarf2_queue_tail = NULL;
7625}
7626
7627/* Read in full symbols for PST, and anything it depends on. */
7628
c906108c 7629static void
fba45db2 7630psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 7631{
10b3939b 7632 struct dwarf2_per_cu_data *per_cu;
aaa75496
JB
7633 int i;
7634
95554aad
TT
7635 if (pst->readin)
7636 return;
7637
aaa75496 7638 for (i = 0; i < pst->number_of_dependencies; i++)
95554aad
TT
7639 if (!pst->dependencies[i]->readin
7640 && pst->dependencies[i]->user == NULL)
aaa75496
JB
7641 {
7642 /* Inform about additional files that need to be read in. */
7643 if (info_verbose)
7644 {
a3f17187 7645 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
7646 fputs_filtered (" ", gdb_stdout);
7647 wrap_here ("");
7648 fputs_filtered ("and ", gdb_stdout);
7649 wrap_here ("");
7650 printf_filtered ("%s...", pst->dependencies[i]->filename);
0963b4bd 7651 wrap_here (""); /* Flush output. */
aaa75496
JB
7652 gdb_flush (gdb_stdout);
7653 }
7654 psymtab_to_symtab_1 (pst->dependencies[i]);
7655 }
7656
e38df1d0 7657 per_cu = pst->read_symtab_private;
10b3939b
DJ
7658
7659 if (per_cu == NULL)
aaa75496
JB
7660 {
7661 /* It's an include file, no symbols to read for it.
7662 Everything is in the parent symtab. */
7663 pst->readin = 1;
7664 return;
7665 }
c906108c 7666
a0f42c21 7667 dw2_do_instantiate_symtab (per_cu);
10b3939b
DJ
7668}
7669
dee91e82
DE
7670/* Trivial hash function for die_info: the hash value of a DIE
7671 is its offset in .debug_info for this objfile. */
10b3939b 7672
dee91e82
DE
7673static hashval_t
7674die_hash (const void *item)
10b3939b 7675{
dee91e82 7676 const struct die_info *die = item;
6502dd73 7677
dee91e82
DE
7678 return die->offset.sect_off;
7679}
63d06c5c 7680
dee91e82
DE
7681/* Trivial comparison function for die_info structures: two DIEs
7682 are equal if they have the same offset. */
98bfdba5 7683
dee91e82
DE
7684static int
7685die_eq (const void *item_lhs, const void *item_rhs)
7686{
7687 const struct die_info *die_lhs = item_lhs;
7688 const struct die_info *die_rhs = item_rhs;
c906108c 7689
dee91e82
DE
7690 return die_lhs->offset.sect_off == die_rhs->offset.sect_off;
7691}
c906108c 7692
dee91e82
DE
7693/* die_reader_func for load_full_comp_unit.
7694 This is identical to read_signatured_type_reader,
7695 but is kept separate for now. */
c906108c 7696
dee91e82
DE
7697static void
7698load_full_comp_unit_reader (const struct die_reader_specs *reader,
d521ce57 7699 const gdb_byte *info_ptr,
dee91e82
DE
7700 struct die_info *comp_unit_die,
7701 int has_children,
7702 void *data)
7703{
7704 struct dwarf2_cu *cu = reader->cu;
95554aad 7705 enum language *language_ptr = data;
6caca83c 7706
dee91e82
DE
7707 gdb_assert (cu->die_hash == NULL);
7708 cu->die_hash =
7709 htab_create_alloc_ex (cu->header.length / 12,
7710 die_hash,
7711 die_eq,
7712 NULL,
7713 &cu->comp_unit_obstack,
7714 hashtab_obstack_allocate,
7715 dummy_obstack_deallocate);
e142c38c 7716
dee91e82
DE
7717 if (has_children)
7718 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
7719 &info_ptr, comp_unit_die);
7720 cu->dies = comp_unit_die;
7721 /* comp_unit_die is not stored in die_hash, no need. */
10b3939b
DJ
7722
7723 /* We try not to read any attributes in this function, because not
9cdd5dbd 7724 all CUs needed for references have been loaded yet, and symbol
10b3939b 7725 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
7726 or we won't be able to build types correctly.
7727 Similarly, if we do not read the producer, we can not apply
7728 producer-specific interpretation. */
95554aad 7729 prepare_one_comp_unit (cu, cu->dies, *language_ptr);
dee91e82 7730}
10b3939b 7731
dee91e82 7732/* Load the DIEs associated with PER_CU into memory. */
a6c727b2 7733
dee91e82 7734static void
95554aad
TT
7735load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
7736 enum language pretend_language)
dee91e82 7737{
3019eac3 7738 gdb_assert (! this_cu->is_debug_types);
c5b7e1cb 7739
f4dc4d17
DE
7740 init_cutu_and_read_dies (this_cu, NULL, 1, 1,
7741 load_full_comp_unit_reader, &pretend_language);
10b3939b
DJ
7742}
7743
3da10d80
KS
7744/* Add a DIE to the delayed physname list. */
7745
7746static void
7747add_to_method_list (struct type *type, int fnfield_index, int index,
7748 const char *name, struct die_info *die,
7749 struct dwarf2_cu *cu)
7750{
7751 struct delayed_method_info mi;
7752 mi.type = type;
7753 mi.fnfield_index = fnfield_index;
7754 mi.index = index;
7755 mi.name = name;
7756 mi.die = die;
7757 VEC_safe_push (delayed_method_info, cu->method_list, &mi);
7758}
7759
7760/* A cleanup for freeing the delayed method list. */
7761
7762static void
7763free_delayed_list (void *ptr)
7764{
7765 struct dwarf2_cu *cu = (struct dwarf2_cu *) ptr;
7766 if (cu->method_list != NULL)
7767 {
7768 VEC_free (delayed_method_info, cu->method_list);
7769 cu->method_list = NULL;
7770 }
7771}
7772
7773/* Compute the physnames of any methods on the CU's method list.
7774
7775 The computation of method physnames is delayed in order to avoid the
7776 (bad) condition that one of the method's formal parameters is of an as yet
7777 incomplete type. */
7778
7779static void
7780compute_delayed_physnames (struct dwarf2_cu *cu)
7781{
7782 int i;
7783 struct delayed_method_info *mi;
7784 for (i = 0; VEC_iterate (delayed_method_info, cu->method_list, i, mi) ; ++i)
7785 {
1d06ead6 7786 const char *physname;
3da10d80
KS
7787 struct fn_fieldlist *fn_flp
7788 = &TYPE_FN_FIELDLIST (mi->type, mi->fnfield_index);
7d455152 7789 physname = dwarf2_physname (mi->name, mi->die, cu);
005e54bb
DE
7790 TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi->index)
7791 = physname ? physname : "";
3da10d80
KS
7792 }
7793}
7794
a766d390
DE
7795/* Go objects should be embedded in a DW_TAG_module DIE,
7796 and it's not clear if/how imported objects will appear.
7797 To keep Go support simple until that's worked out,
7798 go back through what we've read and create something usable.
7799 We could do this while processing each DIE, and feels kinda cleaner,
7800 but that way is more invasive.
7801 This is to, for example, allow the user to type "p var" or "b main"
7802 without having to specify the package name, and allow lookups
7803 of module.object to work in contexts that use the expression
7804 parser. */
7805
7806static void
7807fixup_go_packaging (struct dwarf2_cu *cu)
7808{
7809 char *package_name = NULL;
7810 struct pending *list;
7811 int i;
7812
7813 for (list = global_symbols; list != NULL; list = list->next)
7814 {
7815 for (i = 0; i < list->nsyms; ++i)
7816 {
7817 struct symbol *sym = list->symbol[i];
7818
7819 if (SYMBOL_LANGUAGE (sym) == language_go
7820 && SYMBOL_CLASS (sym) == LOC_BLOCK)
7821 {
7822 char *this_package_name = go_symbol_package_name (sym);
7823
7824 if (this_package_name == NULL)
7825 continue;
7826 if (package_name == NULL)
7827 package_name = this_package_name;
7828 else
7829 {
7830 if (strcmp (package_name, this_package_name) != 0)
7831 complaint (&symfile_complaints,
7832 _("Symtab %s has objects from two different Go packages: %s and %s"),
08be3fe3
DE
7833 (symbol_symtab (sym) != NULL
7834 ? symtab_to_filename_for_display
7835 (symbol_symtab (sym))
4262abfb 7836 : objfile_name (cu->objfile)),
a766d390
DE
7837 this_package_name, package_name);
7838 xfree (this_package_name);
7839 }
7840 }
7841 }
7842 }
7843
7844 if (package_name != NULL)
7845 {
7846 struct objfile *objfile = cu->objfile;
34a68019
TT
7847 const char *saved_package_name
7848 = obstack_copy0 (&objfile->per_bfd->storage_obstack,
7849 package_name,
7850 strlen (package_name));
a766d390 7851 struct type *type = init_type (TYPE_CODE_MODULE, 0, 0,
86f62fd7 7852 saved_package_name, objfile);
a766d390
DE
7853 struct symbol *sym;
7854
7855 TYPE_TAG_NAME (type) = TYPE_NAME (type);
7856
e623cf5d 7857 sym = allocate_symbol (objfile);
f85f34ed 7858 SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
86f62fd7
TT
7859 SYMBOL_SET_NAMES (sym, saved_package_name,
7860 strlen (saved_package_name), 0, objfile);
a766d390
DE
7861 /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
7862 e.g., "main" finds the "main" module and not C's main(). */
7863 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
f1e6e072 7864 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
a766d390
DE
7865 SYMBOL_TYPE (sym) = type;
7866
7867 add_symbol_to_list (sym, &global_symbols);
7868
7869 xfree (package_name);
7870 }
7871}
7872
95554aad
TT
7873/* Return the symtab for PER_CU. This works properly regardless of
7874 whether we're using the index or psymtabs. */
7875
43f3e411
DE
7876static struct compunit_symtab *
7877get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
95554aad
TT
7878{
7879 return (dwarf2_per_objfile->using_index
43f3e411
DE
7880 ? per_cu->v.quick->compunit_symtab
7881 : per_cu->v.psymtab->compunit_symtab);
95554aad
TT
7882}
7883
7884/* A helper function for computing the list of all symbol tables
7885 included by PER_CU. */
7886
7887static void
43f3e411 7888recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
ec94af83 7889 htab_t all_children, htab_t all_type_symtabs,
f9125b6c 7890 struct dwarf2_per_cu_data *per_cu,
43f3e411 7891 struct compunit_symtab *immediate_parent)
95554aad
TT
7892{
7893 void **slot;
7894 int ix;
43f3e411 7895 struct compunit_symtab *cust;
95554aad
TT
7896 struct dwarf2_per_cu_data *iter;
7897
7898 slot = htab_find_slot (all_children, per_cu, INSERT);
7899 if (*slot != NULL)
7900 {
7901 /* This inclusion and its children have been processed. */
7902 return;
7903 }
7904
7905 *slot = per_cu;
7906 /* Only add a CU if it has a symbol table. */
43f3e411
DE
7907 cust = get_compunit_symtab (per_cu);
7908 if (cust != NULL)
ec94af83
DE
7909 {
7910 /* If this is a type unit only add its symbol table if we haven't
7911 seen it yet (type unit per_cu's can share symtabs). */
7912 if (per_cu->is_debug_types)
7913 {
43f3e411 7914 slot = htab_find_slot (all_type_symtabs, cust, INSERT);
ec94af83
DE
7915 if (*slot == NULL)
7916 {
43f3e411
DE
7917 *slot = cust;
7918 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7919 if (cust->user == NULL)
7920 cust->user = immediate_parent;
ec94af83
DE
7921 }
7922 }
7923 else
f9125b6c 7924 {
43f3e411
DE
7925 VEC_safe_push (compunit_symtab_ptr, *result, cust);
7926 if (cust->user == NULL)
7927 cust->user = immediate_parent;
f9125b6c 7928 }
ec94af83 7929 }
95554aad
TT
7930
7931 for (ix = 0;
796a7ff8 7932 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
95554aad 7933 ++ix)
ec94af83
DE
7934 {
7935 recursively_compute_inclusions (result, all_children,
43f3e411 7936 all_type_symtabs, iter, cust);
ec94af83 7937 }
95554aad
TT
7938}
7939
43f3e411 7940/* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
95554aad
TT
7941 PER_CU. */
7942
7943static void
43f3e411 7944compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
95554aad 7945{
f4dc4d17
DE
7946 gdb_assert (! per_cu->is_debug_types);
7947
796a7ff8 7948 if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
95554aad
TT
7949 {
7950 int ix, len;
ec94af83 7951 struct dwarf2_per_cu_data *per_cu_iter;
43f3e411
DE
7952 struct compunit_symtab *compunit_symtab_iter;
7953 VEC (compunit_symtab_ptr) *result_symtabs = NULL;
ec94af83 7954 htab_t all_children, all_type_symtabs;
43f3e411 7955 struct compunit_symtab *cust = get_compunit_symtab (per_cu);
95554aad
TT
7956
7957 /* If we don't have a symtab, we can just skip this case. */
43f3e411 7958 if (cust == NULL)
95554aad
TT
7959 return;
7960
7961 all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7962 NULL, xcalloc, xfree);
ec94af83
DE
7963 all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
7964 NULL, xcalloc, xfree);
95554aad
TT
7965
7966 for (ix = 0;
796a7ff8 7967 VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
ec94af83 7968 ix, per_cu_iter);
95554aad 7969 ++ix)
ec94af83
DE
7970 {
7971 recursively_compute_inclusions (&result_symtabs, all_children,
f9125b6c 7972 all_type_symtabs, per_cu_iter,
43f3e411 7973 cust);
ec94af83 7974 }
95554aad 7975
ec94af83 7976 /* Now we have a transitive closure of all the included symtabs. */
43f3e411
DE
7977 len = VEC_length (compunit_symtab_ptr, result_symtabs);
7978 cust->includes
95554aad
TT
7979 = obstack_alloc (&dwarf2_per_objfile->objfile->objfile_obstack,
7980 (len + 1) * sizeof (struct symtab *));
7981 for (ix = 0;
43f3e411
DE
7982 VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
7983 compunit_symtab_iter);
95554aad 7984 ++ix)
43f3e411
DE
7985 cust->includes[ix] = compunit_symtab_iter;
7986 cust->includes[len] = NULL;
95554aad 7987
43f3e411 7988 VEC_free (compunit_symtab_ptr, result_symtabs);
95554aad 7989 htab_delete (all_children);
ec94af83 7990 htab_delete (all_type_symtabs);
95554aad
TT
7991 }
7992}
7993
7994/* Compute the 'includes' field for the symtabs of all the CUs we just
7995 read. */
7996
7997static void
7998process_cu_includes (void)
7999{
8000 int ix;
8001 struct dwarf2_per_cu_data *iter;
8002
8003 for (ix = 0;
8004 VEC_iterate (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus,
8005 ix, iter);
8006 ++ix)
f4dc4d17
DE
8007 {
8008 if (! iter->is_debug_types)
43f3e411 8009 compute_compunit_symtab_includes (iter);
f4dc4d17 8010 }
95554aad
TT
8011
8012 VEC_free (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus);
8013}
8014
9cdd5dbd 8015/* Generate full symbol information for PER_CU, whose DIEs have
10b3939b
DJ
8016 already been loaded into memory. */
8017
8018static void
95554aad
TT
8019process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
8020 enum language pretend_language)
10b3939b 8021{
10b3939b 8022 struct dwarf2_cu *cu = per_cu->cu;
9291a0cd 8023 struct objfile *objfile = per_cu->objfile;
3e29f34a 8024 struct gdbarch *gdbarch = get_objfile_arch (objfile);
10b3939b 8025 CORE_ADDR lowpc, highpc;
43f3e411 8026 struct compunit_symtab *cust;
3da10d80 8027 struct cleanup *back_to, *delayed_list_cleanup;
10b3939b 8028 CORE_ADDR baseaddr;
4359dff1 8029 struct block *static_block;
3e29f34a 8030 CORE_ADDR addr;
10b3939b
DJ
8031
8032 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8033
10b3939b
DJ
8034 buildsym_init ();
8035 back_to = make_cleanup (really_free_pendings, NULL);
3da10d80 8036 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
10b3939b
DJ
8037
8038 cu->list_in_scope = &file_symbols;
c906108c 8039
95554aad
TT
8040 cu->language = pretend_language;
8041 cu->language_defn = language_def (cu->language);
8042
c906108c 8043 /* Do line number decoding in read_file_scope () */
10b3939b 8044 process_die (cu->dies, cu);
c906108c 8045
a766d390
DE
8046 /* For now fudge the Go package. */
8047 if (cu->language == language_go)
8048 fixup_go_packaging (cu);
8049
3da10d80
KS
8050 /* Now that we have processed all the DIEs in the CU, all the types
8051 should be complete, and it should now be safe to compute all of the
8052 physnames. */
8053 compute_delayed_physnames (cu);
8054 do_cleanups (delayed_list_cleanup);
8055
fae299cd
DC
8056 /* Some compilers don't define a DW_AT_high_pc attribute for the
8057 compilation unit. If the DW_AT_high_pc is missing, synthesize
8058 it, by scanning the DIE's below the compilation unit. */
10b3939b 8059 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 8060
3e29f34a
MR
8061 addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
8062 static_block = end_symtab_get_static_block (addr, 0, 1);
4359dff1
JK
8063
8064 /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
8065 Also, DW_AT_ranges may record ranges not belonging to any child DIEs
8066 (such as virtual method tables). Record the ranges in STATIC_BLOCK's
8067 addrmap to help ensure it has an accurate map of pc values belonging to
8068 this comp unit. */
8069 dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
8070
43f3e411
DE
8071 cust = end_symtab_from_static_block (static_block,
8072 SECT_OFF_TEXT (objfile), 0);
c906108c 8073
43f3e411 8074 if (cust != NULL)
c906108c 8075 {
df15bd07 8076 int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
4632c0d0 8077
8be455d7
JK
8078 /* Set symtab language to language from DW_AT_language. If the
8079 compilation is from a C file generated by language preprocessors, do
8080 not set the language if it was already deduced by start_subfile. */
43f3e411
DE
8081 if (!(cu->language == language_c
8082 && COMPUNIT_FILETABS (cust)->language != language_c))
8083 COMPUNIT_FILETABS (cust)->language = cu->language;
8be455d7
JK
8084
8085 /* GCC-4.0 has started to support -fvar-tracking. GCC-3.x still can
8086 produce DW_AT_location with location lists but it can be possibly
ab260dad
JK
8087 invalid without -fvar-tracking. Still up to GCC-4.4.x incl. 4.4.0
8088 there were bugs in prologue debug info, fixed later in GCC-4.5
8089 by "unwind info for epilogues" patch (which is not directly related).
8be455d7
JK
8090
8091 For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
8092 needed, it would be wrong due to missing DW_AT_producer there.
8093
8094 Still one can confuse GDB by using non-standard GCC compilation
8095 options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
8096 */
ab260dad 8097 if (cu->has_loclist && gcc_4_minor >= 5)
43f3e411 8098 cust->locations_valid = 1;
e0d00bc7
JK
8099
8100 if (gcc_4_minor >= 5)
43f3e411 8101 cust->epilogue_unwind_valid = 1;
96408a79 8102
43f3e411 8103 cust->call_site_htab = cu->call_site_htab;
c906108c 8104 }
9291a0cd
TT
8105
8106 if (dwarf2_per_objfile->using_index)
43f3e411 8107 per_cu->v.quick->compunit_symtab = cust;
9291a0cd
TT
8108 else
8109 {
8110 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8111 pst->compunit_symtab = cust;
9291a0cd
TT
8112 pst->readin = 1;
8113 }
c906108c 8114
95554aad
TT
8115 /* Push it for inclusion processing later. */
8116 VEC_safe_push (dwarf2_per_cu_ptr, dwarf2_per_objfile->just_read_cus, per_cu);
8117
c906108c 8118 do_cleanups (back_to);
f4dc4d17 8119}
45cfd468 8120
f4dc4d17
DE
8121/* Generate full symbol information for type unit PER_CU, whose DIEs have
8122 already been loaded into memory. */
8123
8124static void
8125process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
8126 enum language pretend_language)
8127{
8128 struct dwarf2_cu *cu = per_cu->cu;
8129 struct objfile *objfile = per_cu->objfile;
43f3e411 8130 struct compunit_symtab *cust;
f4dc4d17 8131 struct cleanup *back_to, *delayed_list_cleanup;
0186c6a7
DE
8132 struct signatured_type *sig_type;
8133
8134 gdb_assert (per_cu->is_debug_types);
8135 sig_type = (struct signatured_type *) per_cu;
f4dc4d17
DE
8136
8137 buildsym_init ();
8138 back_to = make_cleanup (really_free_pendings, NULL);
8139 delayed_list_cleanup = make_cleanup (free_delayed_list, cu);
8140
8141 cu->list_in_scope = &file_symbols;
8142
8143 cu->language = pretend_language;
8144 cu->language_defn = language_def (cu->language);
8145
8146 /* The symbol tables are set up in read_type_unit_scope. */
8147 process_die (cu->dies, cu);
8148
8149 /* For now fudge the Go package. */
8150 if (cu->language == language_go)
8151 fixup_go_packaging (cu);
8152
8153 /* Now that we have processed all the DIEs in the CU, all the types
8154 should be complete, and it should now be safe to compute all of the
8155 physnames. */
8156 compute_delayed_physnames (cu);
8157 do_cleanups (delayed_list_cleanup);
8158
8159 /* TUs share symbol tables.
8160 If this is the first TU to use this symtab, complete the construction
094b34ac
DE
8161 of it with end_expandable_symtab. Otherwise, complete the addition of
8162 this TU's symbols to the existing symtab. */
43f3e411 8163 if (sig_type->type_unit_group->compunit_symtab == NULL)
45cfd468 8164 {
43f3e411
DE
8165 cust = end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
8166 sig_type->type_unit_group->compunit_symtab = cust;
f4dc4d17 8167
43f3e411 8168 if (cust != NULL)
f4dc4d17
DE
8169 {
8170 /* Set symtab language to language from DW_AT_language. If the
8171 compilation is from a C file generated by language preprocessors,
8172 do not set the language if it was already deduced by
8173 start_subfile. */
43f3e411
DE
8174 if (!(cu->language == language_c
8175 && COMPUNIT_FILETABS (cust)->language != language_c))
8176 COMPUNIT_FILETABS (cust)->language = cu->language;
f4dc4d17
DE
8177 }
8178 }
8179 else
8180 {
0ab9ce85 8181 augment_type_symtab ();
43f3e411 8182 cust = sig_type->type_unit_group->compunit_symtab;
f4dc4d17
DE
8183 }
8184
8185 if (dwarf2_per_objfile->using_index)
43f3e411 8186 per_cu->v.quick->compunit_symtab = cust;
f4dc4d17
DE
8187 else
8188 {
8189 struct partial_symtab *pst = per_cu->v.psymtab;
43f3e411 8190 pst->compunit_symtab = cust;
f4dc4d17 8191 pst->readin = 1;
45cfd468 8192 }
f4dc4d17
DE
8193
8194 do_cleanups (back_to);
c906108c
SS
8195}
8196
95554aad
TT
8197/* Process an imported unit DIE. */
8198
8199static void
8200process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
8201{
8202 struct attribute *attr;
8203
f4dc4d17
DE
8204 /* For now we don't handle imported units in type units. */
8205 if (cu->per_cu->is_debug_types)
8206 {
8207 error (_("Dwarf Error: DW_TAG_imported_unit is not"
8208 " supported in type units [in module %s]"),
4262abfb 8209 objfile_name (cu->objfile));
f4dc4d17
DE
8210 }
8211
95554aad
TT
8212 attr = dwarf2_attr (die, DW_AT_import, cu);
8213 if (attr != NULL)
8214 {
8215 struct dwarf2_per_cu_data *per_cu;
8216 struct symtab *imported_symtab;
8217 sect_offset offset;
36586728 8218 int is_dwz;
95554aad
TT
8219
8220 offset = dwarf2_get_ref_die_offset (attr);
36586728
TT
8221 is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
8222 per_cu = dwarf2_find_containing_comp_unit (offset, is_dwz, cu->objfile);
95554aad 8223
69d751e3 8224 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
8225 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
8226 load_full_comp_unit (per_cu, cu->language);
8227
796a7ff8 8228 VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
95554aad
TT
8229 per_cu);
8230 }
8231}
8232
adde2bff
DE
8233/* Reset the in_process bit of a die. */
8234
8235static void
8236reset_die_in_process (void *arg)
8237{
8238 struct die_info *die = arg;
8c3cb9fa 8239
adde2bff
DE
8240 die->in_process = 0;
8241}
8242
c906108c
SS
8243/* Process a die and its children. */
8244
8245static void
e7c27a73 8246process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8247{
adde2bff
DE
8248 struct cleanup *in_process;
8249
8250 /* We should only be processing those not already in process. */
8251 gdb_assert (!die->in_process);
8252
8253 die->in_process = 1;
8254 in_process = make_cleanup (reset_die_in_process,die);
8255
c906108c
SS
8256 switch (die->tag)
8257 {
8258 case DW_TAG_padding:
8259 break;
8260 case DW_TAG_compile_unit:
95554aad 8261 case DW_TAG_partial_unit:
e7c27a73 8262 read_file_scope (die, cu);
c906108c 8263 break;
348e048f
DE
8264 case DW_TAG_type_unit:
8265 read_type_unit_scope (die, cu);
8266 break;
c906108c 8267 case DW_TAG_subprogram:
c906108c 8268 case DW_TAG_inlined_subroutine:
edb3359d 8269 read_func_scope (die, cu);
c906108c
SS
8270 break;
8271 case DW_TAG_lexical_block:
14898363
L
8272 case DW_TAG_try_block:
8273 case DW_TAG_catch_block:
e7c27a73 8274 read_lexical_block_scope (die, cu);
c906108c 8275 break;
96408a79
SA
8276 case DW_TAG_GNU_call_site:
8277 read_call_site_scope (die, cu);
8278 break;
c906108c 8279 case DW_TAG_class_type:
680b30c7 8280 case DW_TAG_interface_type:
c906108c
SS
8281 case DW_TAG_structure_type:
8282 case DW_TAG_union_type:
134d01f1 8283 process_structure_scope (die, cu);
c906108c
SS
8284 break;
8285 case DW_TAG_enumeration_type:
134d01f1 8286 process_enumeration_scope (die, cu);
c906108c 8287 break;
134d01f1 8288
f792889a
DJ
8289 /* These dies have a type, but processing them does not create
8290 a symbol or recurse to process the children. Therefore we can
8291 read them on-demand through read_type_die. */
c906108c 8292 case DW_TAG_subroutine_type:
72019c9c 8293 case DW_TAG_set_type:
c906108c 8294 case DW_TAG_array_type:
c906108c 8295 case DW_TAG_pointer_type:
c906108c 8296 case DW_TAG_ptr_to_member_type:
c906108c 8297 case DW_TAG_reference_type:
c906108c 8298 case DW_TAG_string_type:
c906108c 8299 break;
134d01f1 8300
c906108c 8301 case DW_TAG_base_type:
a02abb62 8302 case DW_TAG_subrange_type:
cb249c71 8303 case DW_TAG_typedef:
134d01f1
DJ
8304 /* Add a typedef symbol for the type definition, if it has a
8305 DW_AT_name. */
f792889a 8306 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 8307 break;
c906108c 8308 case DW_TAG_common_block:
e7c27a73 8309 read_common_block (die, cu);
c906108c
SS
8310 break;
8311 case DW_TAG_common_inclusion:
8312 break;
d9fa45fe 8313 case DW_TAG_namespace:
4d4ec4e5 8314 cu->processing_has_namespace_info = 1;
e7c27a73 8315 read_namespace (die, cu);
d9fa45fe 8316 break;
5d7cb8df 8317 case DW_TAG_module:
4d4ec4e5 8318 cu->processing_has_namespace_info = 1;
5d7cb8df
JK
8319 read_module (die, cu);
8320 break;
d9fa45fe 8321 case DW_TAG_imported_declaration:
74921315
KS
8322 cu->processing_has_namespace_info = 1;
8323 if (read_namespace_alias (die, cu))
8324 break;
8325 /* The declaration is not a global namespace alias: fall through. */
d9fa45fe 8326 case DW_TAG_imported_module:
4d4ec4e5 8327 cu->processing_has_namespace_info = 1;
27aa8d6a
SW
8328 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
8329 || cu->language != language_fortran))
8330 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
8331 dwarf_tag_name (die->tag));
8332 read_import_statement (die, cu);
d9fa45fe 8333 break;
95554aad
TT
8334
8335 case DW_TAG_imported_unit:
8336 process_imported_unit_die (die, cu);
8337 break;
8338
c906108c 8339 default:
e7c27a73 8340 new_symbol (die, NULL, cu);
c906108c
SS
8341 break;
8342 }
adde2bff
DE
8343
8344 do_cleanups (in_process);
c906108c 8345}
ca69b9e6
DE
8346\f
8347/* DWARF name computation. */
c906108c 8348
94af9270
KS
8349/* A helper function for dwarf2_compute_name which determines whether DIE
8350 needs to have the name of the scope prepended to the name listed in the
8351 die. */
8352
8353static int
8354die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
8355{
1c809c68
TT
8356 struct attribute *attr;
8357
94af9270
KS
8358 switch (die->tag)
8359 {
8360 case DW_TAG_namespace:
8361 case DW_TAG_typedef:
8362 case DW_TAG_class_type:
8363 case DW_TAG_interface_type:
8364 case DW_TAG_structure_type:
8365 case DW_TAG_union_type:
8366 case DW_TAG_enumeration_type:
8367 case DW_TAG_enumerator:
8368 case DW_TAG_subprogram:
08a76f8a 8369 case DW_TAG_inlined_subroutine:
94af9270 8370 case DW_TAG_member:
74921315 8371 case DW_TAG_imported_declaration:
94af9270
KS
8372 return 1;
8373
8374 case DW_TAG_variable:
c2b0a229 8375 case DW_TAG_constant:
94af9270
KS
8376 /* We only need to prefix "globally" visible variables. These include
8377 any variable marked with DW_AT_external or any variable that
8378 lives in a namespace. [Variables in anonymous namespaces
8379 require prefixing, but they are not DW_AT_external.] */
8380
8381 if (dwarf2_attr (die, DW_AT_specification, cu))
8382 {
8383 struct dwarf2_cu *spec_cu = cu;
9a619af0 8384
94af9270
KS
8385 return die_needs_namespace (die_specification (die, &spec_cu),
8386 spec_cu);
8387 }
8388
1c809c68 8389 attr = dwarf2_attr (die, DW_AT_external, cu);
f55ee35c
JK
8390 if (attr == NULL && die->parent->tag != DW_TAG_namespace
8391 && die->parent->tag != DW_TAG_module)
1c809c68
TT
8392 return 0;
8393 /* A variable in a lexical block of some kind does not need a
8394 namespace, even though in C++ such variables may be external
8395 and have a mangled name. */
8396 if (die->parent->tag == DW_TAG_lexical_block
8397 || die->parent->tag == DW_TAG_try_block
1054b214
TT
8398 || die->parent->tag == DW_TAG_catch_block
8399 || die->parent->tag == DW_TAG_subprogram)
1c809c68
TT
8400 return 0;
8401 return 1;
94af9270
KS
8402
8403 default:
8404 return 0;
8405 }
8406}
8407
98bfdba5
PA
8408/* Retrieve the last character from a mem_file. */
8409
8410static void
8411do_ui_file_peek_last (void *object, const char *buffer, long length)
8412{
8413 char *last_char_p = (char *) object;
8414
8415 if (length > 0)
8416 *last_char_p = buffer[length - 1];
8417}
8418
94af9270 8419/* Compute the fully qualified name of DIE in CU. If PHYSNAME is nonzero,
a766d390
DE
8420 compute the physname for the object, which include a method's:
8421 - formal parameters (C++/Java),
8422 - receiver type (Go),
8423 - return type (Java).
8424
8425 The term "physname" is a bit confusing.
8426 For C++, for example, it is the demangled name.
8427 For Go, for example, it's the mangled name.
94af9270 8428
af6b7be1
JB
8429 For Ada, return the DIE's linkage name rather than the fully qualified
8430 name. PHYSNAME is ignored..
8431
94af9270
KS
8432 The result is allocated on the objfile_obstack and canonicalized. */
8433
8434static const char *
15d034d0
TT
8435dwarf2_compute_name (const char *name,
8436 struct die_info *die, struct dwarf2_cu *cu,
94af9270
KS
8437 int physname)
8438{
bb5ed363
DE
8439 struct objfile *objfile = cu->objfile;
8440
94af9270
KS
8441 if (name == NULL)
8442 name = dwarf2_name (die, cu);
8443
f55ee35c
JK
8444 /* For Fortran GDB prefers DW_AT_*linkage_name if present but otherwise
8445 compute it by typename_concat inside GDB. */
8446 if (cu->language == language_ada
8447 || (cu->language == language_fortran && physname))
8448 {
8449 /* For Ada unit, we prefer the linkage name over the name, as
8450 the former contains the exported name, which the user expects
8451 to be able to reference. Ideally, we want the user to be able
8452 to reference this entity using either natural or linkage name,
8453 but we haven't started looking at this enhancement yet. */
8454 struct attribute *attr;
8455
8456 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8457 if (attr == NULL)
8458 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8459 if (attr && DW_STRING (attr))
8460 return DW_STRING (attr);
8461 }
8462
94af9270
KS
8463 /* These are the only languages we know how to qualify names in. */
8464 if (name != NULL
f55ee35c
JK
8465 && (cu->language == language_cplus || cu->language == language_java
8466 || cu->language == language_fortran))
94af9270
KS
8467 {
8468 if (die_needs_namespace (die, cu))
8469 {
8470 long length;
0d5cff50 8471 const char *prefix;
94af9270 8472 struct ui_file *buf;
34a68019
TT
8473 char *intermediate_name;
8474 const char *canonical_name = NULL;
94af9270
KS
8475
8476 prefix = determine_prefix (die, cu);
8477 buf = mem_fileopen ();
8478 if (*prefix != '\0')
8479 {
f55ee35c
JK
8480 char *prefixed_name = typename_concat (NULL, prefix, name,
8481 physname, cu);
9a619af0 8482
94af9270
KS
8483 fputs_unfiltered (prefixed_name, buf);
8484 xfree (prefixed_name);
8485 }
8486 else
62d5b8da 8487 fputs_unfiltered (name, buf);
94af9270 8488
98bfdba5
PA
8489 /* Template parameters may be specified in the DIE's DW_AT_name, or
8490 as children with DW_TAG_template_type_param or
8491 DW_TAG_value_type_param. If the latter, add them to the name
8492 here. If the name already has template parameters, then
8493 skip this step; some versions of GCC emit both, and
8494 it is more efficient to use the pre-computed name.
8495
8496 Something to keep in mind about this process: it is very
8497 unlikely, or in some cases downright impossible, to produce
8498 something that will match the mangled name of a function.
8499 If the definition of the function has the same debug info,
8500 we should be able to match up with it anyway. But fallbacks
8501 using the minimal symbol, for instance to find a method
8502 implemented in a stripped copy of libstdc++, will not work.
8503 If we do not have debug info for the definition, we will have to
8504 match them up some other way.
8505
8506 When we do name matching there is a related problem with function
8507 templates; two instantiated function templates are allowed to
8508 differ only by their return types, which we do not add here. */
8509
8510 if (cu->language == language_cplus && strchr (name, '<') == NULL)
8511 {
8512 struct attribute *attr;
8513 struct die_info *child;
8514 int first = 1;
8515
8516 die->building_fullname = 1;
8517
8518 for (child = die->child; child != NULL; child = child->sibling)
8519 {
8520 struct type *type;
12df843f 8521 LONGEST value;
d521ce57 8522 const gdb_byte *bytes;
98bfdba5
PA
8523 struct dwarf2_locexpr_baton *baton;
8524 struct value *v;
8525
8526 if (child->tag != DW_TAG_template_type_param
8527 && child->tag != DW_TAG_template_value_param)
8528 continue;
8529
8530 if (first)
8531 {
8532 fputs_unfiltered ("<", buf);
8533 first = 0;
8534 }
8535 else
8536 fputs_unfiltered (", ", buf);
8537
8538 attr = dwarf2_attr (child, DW_AT_type, cu);
8539 if (attr == NULL)
8540 {
8541 complaint (&symfile_complaints,
8542 _("template parameter missing DW_AT_type"));
8543 fputs_unfiltered ("UNKNOWN_TYPE", buf);
8544 continue;
8545 }
8546 type = die_type (child, cu);
8547
8548 if (child->tag == DW_TAG_template_type_param)
8549 {
79d43c61 8550 c_print_type (type, "", buf, -1, 0, &type_print_raw_options);
98bfdba5
PA
8551 continue;
8552 }
8553
8554 attr = dwarf2_attr (child, DW_AT_const_value, cu);
8555 if (attr == NULL)
8556 {
8557 complaint (&symfile_complaints,
3e43a32a
MS
8558 _("template parameter missing "
8559 "DW_AT_const_value"));
98bfdba5
PA
8560 fputs_unfiltered ("UNKNOWN_VALUE", buf);
8561 continue;
8562 }
8563
8564 dwarf2_const_value_attr (attr, type, name,
8565 &cu->comp_unit_obstack, cu,
8566 &value, &bytes, &baton);
8567
8568 if (TYPE_NOSIGN (type))
8569 /* GDB prints characters as NUMBER 'CHAR'. If that's
8570 changed, this can use value_print instead. */
8571 c_printchar (value, type, buf);
8572 else
8573 {
8574 struct value_print_options opts;
8575
8576 if (baton != NULL)
8577 v = dwarf2_evaluate_loc_desc (type, NULL,
8578 baton->data,
8579 baton->size,
8580 baton->per_cu);
8581 else if (bytes != NULL)
8582 {
8583 v = allocate_value (type);
8584 memcpy (value_contents_writeable (v), bytes,
8585 TYPE_LENGTH (type));
8586 }
8587 else
8588 v = value_from_longest (type, value);
8589
3e43a32a
MS
8590 /* Specify decimal so that we do not depend on
8591 the radix. */
98bfdba5
PA
8592 get_formatted_print_options (&opts, 'd');
8593 opts.raw = 1;
8594 value_print (v, buf, &opts);
8595 release_value (v);
8596 value_free (v);
8597 }
8598 }
8599
8600 die->building_fullname = 0;
8601
8602 if (!first)
8603 {
8604 /* Close the argument list, with a space if necessary
8605 (nested templates). */
8606 char last_char = '\0';
8607 ui_file_put (buf, do_ui_file_peek_last, &last_char);
8608 if (last_char == '>')
8609 fputs_unfiltered (" >", buf);
8610 else
8611 fputs_unfiltered (">", buf);
8612 }
8613 }
8614
94af9270
KS
8615 /* For Java and C++ methods, append formal parameter type
8616 information, if PHYSNAME. */
6e70227d 8617
94af9270
KS
8618 if (physname && die->tag == DW_TAG_subprogram
8619 && (cu->language == language_cplus
8620 || cu->language == language_java))
8621 {
8622 struct type *type = read_type_die (die, cu);
8623
79d43c61
TT
8624 c_type_print_args (type, buf, 1, cu->language,
8625 &type_print_raw_options);
94af9270
KS
8626
8627 if (cu->language == language_java)
8628 {
8629 /* For java, we must append the return type to method
0963b4bd 8630 names. */
94af9270
KS
8631 if (die->tag == DW_TAG_subprogram)
8632 java_print_type (TYPE_TARGET_TYPE (type), "", buf,
79d43c61 8633 0, 0, &type_print_raw_options);
94af9270
KS
8634 }
8635 else if (cu->language == language_cplus)
8636 {
60430eff
DJ
8637 /* Assume that an artificial first parameter is
8638 "this", but do not crash if it is not. RealView
8639 marks unnamed (and thus unused) parameters as
8640 artificial; there is no way to differentiate
8641 the two cases. */
94af9270
KS
8642 if (TYPE_NFIELDS (type) > 0
8643 && TYPE_FIELD_ARTIFICIAL (type, 0)
60430eff 8644 && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
3e43a32a
MS
8645 && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
8646 0))))
94af9270
KS
8647 fputs_unfiltered (" const", buf);
8648 }
8649 }
8650
34a68019 8651 intermediate_name = ui_file_xstrdup (buf, &length);
94af9270
KS
8652 ui_file_delete (buf);
8653
8654 if (cu->language == language_cplus)
34a68019
TT
8655 canonical_name
8656 = dwarf2_canonicalize_name (intermediate_name, cu,
8657 &objfile->per_bfd->storage_obstack);
8658
8659 /* If we only computed INTERMEDIATE_NAME, or if
8660 INTERMEDIATE_NAME is already canonical, then we need to
8661 copy it to the appropriate obstack. */
8662 if (canonical_name == NULL || canonical_name == intermediate_name)
8663 name = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8664 intermediate_name,
8665 strlen (intermediate_name));
8666 else
8667 name = canonical_name;
9a619af0 8668
34a68019 8669 xfree (intermediate_name);
94af9270
KS
8670 }
8671 }
8672
8673 return name;
8674}
8675
0114d602
DJ
8676/* Return the fully qualified name of DIE, based on its DW_AT_name.
8677 If scope qualifiers are appropriate they will be added. The result
34a68019 8678 will be allocated on the storage_obstack, or NULL if the DIE does
94af9270
KS
8679 not have a name. NAME may either be from a previous call to
8680 dwarf2_name or NULL.
8681
0963b4bd 8682 The output string will be canonicalized (if C++/Java). */
0114d602
DJ
8683
8684static const char *
15d034d0 8685dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
0114d602 8686{
94af9270
KS
8687 return dwarf2_compute_name (name, die, cu, 0);
8688}
0114d602 8689
94af9270
KS
8690/* Construct a physname for the given DIE in CU. NAME may either be
8691 from a previous call to dwarf2_name or NULL. The result will be
8692 allocated on the objfile_objstack or NULL if the DIE does not have a
8693 name.
0114d602 8694
94af9270 8695 The output string will be canonicalized (if C++/Java). */
0114d602 8696
94af9270 8697static const char *
15d034d0 8698dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
94af9270 8699{
bb5ed363 8700 struct objfile *objfile = cu->objfile;
900e11f9
JK
8701 struct attribute *attr;
8702 const char *retval, *mangled = NULL, *canon = NULL;
8703 struct cleanup *back_to;
8704 int need_copy = 1;
8705
8706 /* In this case dwarf2_compute_name is just a shortcut not building anything
8707 on its own. */
8708 if (!die_needs_namespace (die, cu))
8709 return dwarf2_compute_name (name, die, cu, 1);
8710
8711 back_to = make_cleanup (null_cleanup, NULL);
8712
8713 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
8714 if (!attr)
8715 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
8716
8717 /* DW_AT_linkage_name is missing in some cases - depend on what GDB
8718 has computed. */
8719 if (attr && DW_STRING (attr))
8720 {
8721 char *demangled;
8722
8723 mangled = DW_STRING (attr);
8724
8725 /* Use DMGL_RET_DROP for C++ template functions to suppress their return
8726 type. It is easier for GDB users to search for such functions as
8727 `name(params)' than `long name(params)'. In such case the minimal
8728 symbol names do not match the full symbol names but for template
8729 functions there is never a need to look up their definition from their
8730 declaration so the only disadvantage remains the minimal symbol
8731 variant `long name(params)' does not have the proper inferior type.
8732 */
8733
a766d390
DE
8734 if (cu->language == language_go)
8735 {
8736 /* This is a lie, but we already lie to the caller new_symbol_full.
8737 new_symbol_full assumes we return the mangled name.
8738 This just undoes that lie until things are cleaned up. */
8739 demangled = NULL;
8740 }
8741 else
8742 {
8de20a37
TT
8743 demangled = gdb_demangle (mangled,
8744 (DMGL_PARAMS | DMGL_ANSI
8745 | (cu->language == language_java
8746 ? DMGL_JAVA | DMGL_RET_POSTFIX
8747 : DMGL_RET_DROP)));
a766d390 8748 }
900e11f9
JK
8749 if (demangled)
8750 {
8751 make_cleanup (xfree, demangled);
8752 canon = demangled;
8753 }
8754 else
8755 {
8756 canon = mangled;
8757 need_copy = 0;
8758 }
8759 }
8760
8761 if (canon == NULL || check_physname)
8762 {
8763 const char *physname = dwarf2_compute_name (name, die, cu, 1);
8764
8765 if (canon != NULL && strcmp (physname, canon) != 0)
8766 {
8767 /* It may not mean a bug in GDB. The compiler could also
8768 compute DW_AT_linkage_name incorrectly. But in such case
8769 GDB would need to be bug-to-bug compatible. */
8770
8771 complaint (&symfile_complaints,
8772 _("Computed physname <%s> does not match demangled <%s> "
8773 "(from linkage <%s>) - DIE at 0x%x [in module %s]"),
4262abfb
JK
8774 physname, canon, mangled, die->offset.sect_off,
8775 objfile_name (objfile));
900e11f9
JK
8776
8777 /* Prefer DW_AT_linkage_name (in the CANON form) - when it
8778 is available here - over computed PHYSNAME. It is safer
8779 against both buggy GDB and buggy compilers. */
8780
8781 retval = canon;
8782 }
8783 else
8784 {
8785 retval = physname;
8786 need_copy = 0;
8787 }
8788 }
8789 else
8790 retval = canon;
8791
8792 if (need_copy)
34a68019
TT
8793 retval = obstack_copy0 (&objfile->per_bfd->storage_obstack,
8794 retval, strlen (retval));
900e11f9
JK
8795
8796 do_cleanups (back_to);
8797 return retval;
0114d602
DJ
8798}
8799
74921315
KS
8800/* Inspect DIE in CU for a namespace alias. If one exists, record
8801 a new symbol for it.
8802
8803 Returns 1 if a namespace alias was recorded, 0 otherwise. */
8804
8805static int
8806read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
8807{
8808 struct attribute *attr;
8809
8810 /* If the die does not have a name, this is not a namespace
8811 alias. */
8812 attr = dwarf2_attr (die, DW_AT_name, cu);
8813 if (attr != NULL)
8814 {
8815 int num;
8816 struct die_info *d = die;
8817 struct dwarf2_cu *imported_cu = cu;
8818
8819 /* If the compiler has nested DW_AT_imported_declaration DIEs,
8820 keep inspecting DIEs until we hit the underlying import. */
8821#define MAX_NESTED_IMPORTED_DECLARATIONS 100
8822 for (num = 0; num < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
8823 {
8824 attr = dwarf2_attr (d, DW_AT_import, cu);
8825 if (attr == NULL)
8826 break;
8827
8828 d = follow_die_ref (d, attr, &imported_cu);
8829 if (d->tag != DW_TAG_imported_declaration)
8830 break;
8831 }
8832
8833 if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
8834 {
8835 complaint (&symfile_complaints,
8836 _("DIE at 0x%x has too many recursively imported "
8837 "declarations"), d->offset.sect_off);
8838 return 0;
8839 }
8840
8841 if (attr != NULL)
8842 {
8843 struct type *type;
8844 sect_offset offset = dwarf2_get_ref_die_offset (attr);
8845
8846 type = get_die_type_at_offset (offset, cu->per_cu);
8847 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
8848 {
8849 /* This declaration is a global namespace alias. Add
8850 a symbol for it whose type is the aliased namespace. */
8851 new_symbol (die, type, cu);
8852 return 1;
8853 }
8854 }
8855 }
8856
8857 return 0;
8858}
8859
27aa8d6a
SW
8860/* Read the import statement specified by the given die and record it. */
8861
8862static void
8863read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
8864{
bb5ed363 8865 struct objfile *objfile = cu->objfile;
27aa8d6a 8866 struct attribute *import_attr;
32019081 8867 struct die_info *imported_die, *child_die;
de4affc9 8868 struct dwarf2_cu *imported_cu;
27aa8d6a 8869 const char *imported_name;
794684b6 8870 const char *imported_name_prefix;
13387711
SW
8871 const char *canonical_name;
8872 const char *import_alias;
8873 const char *imported_declaration = NULL;
794684b6 8874 const char *import_prefix;
32019081
JK
8875 VEC (const_char_ptr) *excludes = NULL;
8876 struct cleanup *cleanups;
13387711 8877
27aa8d6a
SW
8878 import_attr = dwarf2_attr (die, DW_AT_import, cu);
8879 if (import_attr == NULL)
8880 {
8881 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8882 dwarf_tag_name (die->tag));
8883 return;
8884 }
8885
de4affc9
CC
8886 imported_cu = cu;
8887 imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
8888 imported_name = dwarf2_name (imported_die, imported_cu);
27aa8d6a
SW
8889 if (imported_name == NULL)
8890 {
8891 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
8892
8893 The import in the following code:
8894 namespace A
8895 {
8896 typedef int B;
8897 }
8898
8899 int main ()
8900 {
8901 using A::B;
8902 B b;
8903 return b;
8904 }
8905
8906 ...
8907 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
8908 <52> DW_AT_decl_file : 1
8909 <53> DW_AT_decl_line : 6
8910 <54> DW_AT_import : <0x75>
8911 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
8912 <59> DW_AT_name : B
8913 <5b> DW_AT_decl_file : 1
8914 <5c> DW_AT_decl_line : 2
8915 <5d> DW_AT_type : <0x6e>
8916 ...
8917 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
8918 <76> DW_AT_byte_size : 4
8919 <77> DW_AT_encoding : 5 (signed)
8920
8921 imports the wrong die ( 0x75 instead of 0x58 ).
8922 This case will be ignored until the gcc bug is fixed. */
8923 return;
8924 }
8925
82856980
SW
8926 /* Figure out the local name after import. */
8927 import_alias = dwarf2_name (die, cu);
27aa8d6a 8928
794684b6
SW
8929 /* Figure out where the statement is being imported to. */
8930 import_prefix = determine_prefix (die, cu);
8931
8932 /* Figure out what the scope of the imported die is and prepend it
8933 to the name of the imported die. */
de4affc9 8934 imported_name_prefix = determine_prefix (imported_die, imported_cu);
794684b6 8935
f55ee35c
JK
8936 if (imported_die->tag != DW_TAG_namespace
8937 && imported_die->tag != DW_TAG_module)
794684b6 8938 {
13387711
SW
8939 imported_declaration = imported_name;
8940 canonical_name = imported_name_prefix;
794684b6 8941 }
13387711 8942 else if (strlen (imported_name_prefix) > 0)
12aaed36
TT
8943 canonical_name = obconcat (&objfile->objfile_obstack,
8944 imported_name_prefix, "::", imported_name,
8945 (char *) NULL);
13387711
SW
8946 else
8947 canonical_name = imported_name;
794684b6 8948
32019081
JK
8949 cleanups = make_cleanup (VEC_cleanup (const_char_ptr), &excludes);
8950
8951 if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
8952 for (child_die = die->child; child_die && child_die->tag;
8953 child_die = sibling_die (child_die))
8954 {
8955 /* DWARF-4: A Fortran use statement with a “rename list” may be
8956 represented by an imported module entry with an import attribute
8957 referring to the module and owned entries corresponding to those
8958 entities that are renamed as part of being imported. */
8959
8960 if (child_die->tag != DW_TAG_imported_declaration)
8961 {
8962 complaint (&symfile_complaints,
8963 _("child DW_TAG_imported_declaration expected "
8964 "- DIE at 0x%x [in module %s]"),
4262abfb 8965 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8966 continue;
8967 }
8968
8969 import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
8970 if (import_attr == NULL)
8971 {
8972 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
8973 dwarf_tag_name (child_die->tag));
8974 continue;
8975 }
8976
8977 imported_cu = cu;
8978 imported_die = follow_die_ref_or_sig (child_die, import_attr,
8979 &imported_cu);
8980 imported_name = dwarf2_name (imported_die, imported_cu);
8981 if (imported_name == NULL)
8982 {
8983 complaint (&symfile_complaints,
8984 _("child DW_TAG_imported_declaration has unknown "
8985 "imported name - DIE at 0x%x [in module %s]"),
4262abfb 8986 child_die->offset.sect_off, objfile_name (objfile));
32019081
JK
8987 continue;
8988 }
8989
8990 VEC_safe_push (const_char_ptr, excludes, imported_name);
8991
8992 process_die (child_die, cu);
8993 }
8994
c0cc3a76
SW
8995 cp_add_using_directive (import_prefix,
8996 canonical_name,
8997 import_alias,
13387711 8998 imported_declaration,
32019081 8999 excludes,
12aaed36 9000 0,
bb5ed363 9001 &objfile->objfile_obstack);
32019081
JK
9002
9003 do_cleanups (cleanups);
27aa8d6a
SW
9004}
9005
f4dc4d17 9006/* Cleanup function for handle_DW_AT_stmt_list. */
ae2de4f8 9007
cb1df416
DJ
9008static void
9009free_cu_line_header (void *arg)
9010{
9011 struct dwarf2_cu *cu = arg;
9012
9013 free_line_header (cu->line_header);
9014 cu->line_header = NULL;
9015}
9016
1b80a9fa
JK
9017/* Check for possibly missing DW_AT_comp_dir with relative .debug_line
9018 directory paths. GCC SVN r127613 (new option -fdebug-prefix-map) fixed
9019 this, it was first present in GCC release 4.3.0. */
9020
9021static int
9022producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
9023{
9024 if (!cu->checked_producer)
9025 check_producer (cu);
9026
9027 return cu->producer_is_gcc_lt_4_3;
9028}
9029
9291a0cd
TT
9030static void
9031find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu,
15d034d0 9032 const char **name, const char **comp_dir)
9291a0cd
TT
9033{
9034 struct attribute *attr;
9035
9036 *name = NULL;
9037 *comp_dir = NULL;
9038
9039 /* Find the filename. Do not use dwarf2_name here, since the filename
9040 is not a source language identifier. */
9041 attr = dwarf2_attr (die, DW_AT_name, cu);
9042 if (attr)
9043 {
9044 *name = DW_STRING (attr);
9045 }
9046
9047 attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
9048 if (attr)
9049 *comp_dir = DW_STRING (attr);
1b80a9fa
JK
9050 else if (producer_is_gcc_lt_4_3 (cu) && *name != NULL
9051 && IS_ABSOLUTE_PATH (*name))
9291a0cd 9052 {
15d034d0
TT
9053 char *d = ldirname (*name);
9054
9055 *comp_dir = d;
9056 if (d != NULL)
9057 make_cleanup (xfree, d);
9291a0cd
TT
9058 }
9059 if (*comp_dir != NULL)
9060 {
9061 /* Irix 6.2 native cc prepends <machine>.: to the compilation
9062 directory, get rid of it. */
9063 char *cp = strchr (*comp_dir, ':');
9064
9065 if (cp && cp != *comp_dir && cp[-1] == '.' && cp[1] == '/')
9066 *comp_dir = cp + 1;
9067 }
9068
9069 if (*name == NULL)
9070 *name = "<unknown>";
9071}
9072
f4dc4d17
DE
9073/* Handle DW_AT_stmt_list for a compilation unit.
9074 DIE is the DW_TAG_compile_unit die for CU.
c3b7b696
YQ
9075 COMP_DIR is the compilation directory. LOWPC is passed to
9076 dwarf_decode_lines. See dwarf_decode_lines comments about it. */
2ab95328
TT
9077
9078static void
9079handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
c3b7b696 9080 const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
2ab95328 9081{
527f3840 9082 struct objfile *objfile = dwarf2_per_objfile->objfile;
2ab95328 9083 struct attribute *attr;
527f3840
JK
9084 unsigned int line_offset;
9085 struct line_header line_header_local;
9086 hashval_t line_header_local_hash;
9087 unsigned u;
9088 void **slot;
9089 int decode_mapping;
2ab95328 9090
f4dc4d17
DE
9091 gdb_assert (! cu->per_cu->is_debug_types);
9092
2ab95328 9093 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
527f3840
JK
9094 if (attr == NULL)
9095 return;
9096
9097 line_offset = DW_UNSND (attr);
9098
9099 /* The line header hash table is only created if needed (it exists to
9100 prevent redundant reading of the line table for partial_units).
9101 If we're given a partial_unit, we'll need it. If we're given a
9102 compile_unit, then use the line header hash table if it's already
9103 created, but don't create one just yet. */
9104
9105 if (dwarf2_per_objfile->line_header_hash == NULL
9106 && die->tag == DW_TAG_partial_unit)
2ab95328 9107 {
527f3840
JK
9108 dwarf2_per_objfile->line_header_hash
9109 = htab_create_alloc_ex (127, line_header_hash_voidp,
9110 line_header_eq_voidp,
9111 free_line_header_voidp,
9112 &objfile->objfile_obstack,
9113 hashtab_obstack_allocate,
9114 dummy_obstack_deallocate);
9115 }
2ab95328 9116
527f3840
JK
9117 line_header_local.offset.sect_off = line_offset;
9118 line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
9119 line_header_local_hash = line_header_hash (&line_header_local);
9120 if (dwarf2_per_objfile->line_header_hash != NULL)
9121 {
9122 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9123 &line_header_local,
9124 line_header_local_hash, NO_INSERT);
9125
9126 /* For DW_TAG_compile_unit we need info like symtab::linetable which
9127 is not present in *SLOT (since if there is something in *SLOT then
9128 it will be for a partial_unit). */
9129 if (die->tag == DW_TAG_partial_unit && slot != NULL)
dee91e82 9130 {
527f3840
JK
9131 gdb_assert (*slot != NULL);
9132 cu->line_header = *slot;
9133 return;
dee91e82 9134 }
2ab95328 9135 }
527f3840
JK
9136
9137 /* dwarf_decode_line_header does not yet provide sufficient information.
9138 We always have to call also dwarf_decode_lines for it. */
9139 cu->line_header = dwarf_decode_line_header (line_offset, cu);
9140 if (cu->line_header == NULL)
9141 return;
9142
9143 if (dwarf2_per_objfile->line_header_hash == NULL)
9144 slot = NULL;
9145 else
9146 {
9147 slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
9148 &line_header_local,
9149 line_header_local_hash, INSERT);
9150 gdb_assert (slot != NULL);
9151 }
9152 if (slot != NULL && *slot == NULL)
9153 {
9154 /* This newly decoded line number information unit will be owned
9155 by line_header_hash hash table. */
9156 *slot = cu->line_header;
9157 }
9158 else
9159 {
9160 /* We cannot free any current entry in (*slot) as that struct line_header
9161 may be already used by multiple CUs. Create only temporary decoded
9162 line_header for this CU - it may happen at most once for each line
9163 number information unit. And if we're not using line_header_hash
9164 then this is what we want as well. */
9165 gdb_assert (die->tag != DW_TAG_partial_unit);
9166 make_cleanup (free_cu_line_header, cu);
9167 }
9168 decode_mapping = (die->tag != DW_TAG_partial_unit);
9169 dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
9170 decode_mapping);
2ab95328
TT
9171}
9172
95554aad 9173/* Process DW_TAG_compile_unit or DW_TAG_partial_unit. */
ae2de4f8 9174
c906108c 9175static void
e7c27a73 9176read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 9177{
dee91e82 9178 struct objfile *objfile = dwarf2_per_objfile->objfile;
3e29f34a 9179 struct gdbarch *gdbarch = get_objfile_arch (objfile);
debd256d 9180 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2acceee2 9181 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
9182 CORE_ADDR highpc = ((CORE_ADDR) 0);
9183 struct attribute *attr;
15d034d0
TT
9184 const char *name = NULL;
9185 const char *comp_dir = NULL;
c906108c
SS
9186 struct die_info *child_die;
9187 bfd *abfd = objfile->obfd;
e142c38c 9188 CORE_ADDR baseaddr;
6e70227d 9189
e142c38c 9190 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 9191
fae299cd 9192 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
9193
9194 /* If we didn't find a lowpc, set it to highpc to avoid complaints
9195 from finish_block. */
2acceee2 9196 if (lowpc == ((CORE_ADDR) -1))
c906108c 9197 lowpc = highpc;
3e29f34a 9198 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
c906108c 9199
9291a0cd 9200 find_file_and_directory (die, cu, &name, &comp_dir);
e1024ff1 9201
95554aad 9202 prepare_one_comp_unit (cu, die, cu->language);
303b6f5d 9203
f4b8a18d
KW
9204 /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
9205 standardised yet. As a workaround for the language detection we fall
9206 back to the DW_AT_producer string. */
9207 if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
9208 cu->language = language_opencl;
9209
3019eac3
DE
9210 /* Similar hack for Go. */
9211 if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
9212 set_cu_language (DW_LANG_Go, cu);
9213
f4dc4d17 9214 dwarf2_start_symtab (cu, name, comp_dir, lowpc);
3019eac3
DE
9215
9216 /* Decode line number information if present. We do this before
9217 processing child DIEs, so that the line header table is available
9218 for DW_AT_decl_file. */
c3b7b696 9219 handle_DW_AT_stmt_list (die, cu, comp_dir, lowpc);
3019eac3
DE
9220
9221 /* Process all dies in compilation unit. */
9222 if (die->child != NULL)
9223 {
9224 child_die = die->child;
9225 while (child_die && child_die->tag)
9226 {
9227 process_die (child_die, cu);
9228 child_die = sibling_die (child_die);
9229 }
9230 }
9231
9232 /* Decode macro information, if present. Dwarf 2 macro information
9233 refers to information in the line number info statement program
9234 header, so we can only read it if we've read the header
9235 successfully. */
9236 attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
9237 if (attr && cu->line_header)
9238 {
9239 if (dwarf2_attr (die, DW_AT_macro_info, cu))
9240 complaint (&symfile_complaints,
9241 _("CU refers to both DW_AT_GNU_macros and DW_AT_macro_info"));
9242
43f3e411 9243 dwarf_decode_macros (cu, DW_UNSND (attr), 1);
3019eac3
DE
9244 }
9245 else
9246 {
9247 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
9248 if (attr && cu->line_header)
9249 {
9250 unsigned int macro_offset = DW_UNSND (attr);
9251
43f3e411 9252 dwarf_decode_macros (cu, macro_offset, 0);
3019eac3
DE
9253 }
9254 }
9255
9256 do_cleanups (back_to);
9257}
9258
f4dc4d17
DE
9259/* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
9260 Create the set of symtabs used by this TU, or if this TU is sharing
9261 symtabs with another TU and the symtabs have already been created
9262 then restore those symtabs in the line header.
9263 We don't need the pc/line-number mapping for type units. */
3019eac3
DE
9264
9265static void
f4dc4d17 9266setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
3019eac3 9267{
f4dc4d17
DE
9268 struct objfile *objfile = dwarf2_per_objfile->objfile;
9269 struct dwarf2_per_cu_data *per_cu = cu->per_cu;
9270 struct type_unit_group *tu_group;
9271 int first_time;
9272 struct line_header *lh;
3019eac3 9273 struct attribute *attr;
f4dc4d17 9274 unsigned int i, line_offset;
0186c6a7 9275 struct signatured_type *sig_type;
3019eac3 9276
f4dc4d17 9277 gdb_assert (per_cu->is_debug_types);
0186c6a7 9278 sig_type = (struct signatured_type *) per_cu;
3019eac3 9279
f4dc4d17 9280 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
3019eac3 9281
f4dc4d17 9282 /* If we're using .gdb_index (includes -readnow) then
74e04d1c 9283 per_cu->type_unit_group may not have been set up yet. */
0186c6a7
DE
9284 if (sig_type->type_unit_group == NULL)
9285 sig_type->type_unit_group = get_type_unit_group (cu, attr);
9286 tu_group = sig_type->type_unit_group;
f4dc4d17
DE
9287
9288 /* If we've already processed this stmt_list there's no real need to
9289 do it again, we could fake it and just recreate the part we need
9290 (file name,index -> symtab mapping). If data shows this optimization
9291 is useful we can do it then. */
43f3e411 9292 first_time = tu_group->compunit_symtab == NULL;
f4dc4d17
DE
9293
9294 /* We have to handle the case of both a missing DW_AT_stmt_list or bad
9295 debug info. */
9296 lh = NULL;
9297 if (attr != NULL)
3019eac3 9298 {
f4dc4d17
DE
9299 line_offset = DW_UNSND (attr);
9300 lh = dwarf_decode_line_header (line_offset, cu);
9301 }
9302 if (lh == NULL)
9303 {
9304 if (first_time)
9305 dwarf2_start_symtab (cu, "", NULL, 0);
9306 else
9307 {
9308 gdb_assert (tu_group->symtabs == NULL);
0ab9ce85 9309 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17 9310 }
f4dc4d17 9311 return;
3019eac3
DE
9312 }
9313
f4dc4d17
DE
9314 cu->line_header = lh;
9315 make_cleanup (free_cu_line_header, cu);
3019eac3 9316
f4dc4d17
DE
9317 if (first_time)
9318 {
43f3e411 9319 struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
3019eac3 9320
f4dc4d17
DE
9321 tu_group->num_symtabs = lh->num_file_names;
9322 tu_group->symtabs = XNEWVEC (struct symtab *, lh->num_file_names);
3019eac3 9323
f4dc4d17
DE
9324 for (i = 0; i < lh->num_file_names; ++i)
9325 {
d521ce57 9326 const char *dir = NULL;
f4dc4d17 9327 struct file_entry *fe = &lh->file_names[i];
3019eac3 9328
afa6c9ab 9329 if (fe->dir_index && lh->include_dirs != NULL)
f4dc4d17 9330 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 9331 dwarf2_start_subfile (fe->name, dir);
3019eac3 9332
f4dc4d17
DE
9333 if (current_subfile->symtab == NULL)
9334 {
9335 /* NOTE: start_subfile will recognize when it's been passed
9336 a file it has already seen. So we can't assume there's a
43f3e411 9337 simple mapping from lh->file_names to subfiles, plus
f4dc4d17 9338 lh->file_names may contain dups. */
43f3e411
DE
9339 current_subfile->symtab
9340 = allocate_symtab (cust, current_subfile->name);
f4dc4d17
DE
9341 }
9342
9343 fe->symtab = current_subfile->symtab;
9344 tu_group->symtabs[i] = fe->symtab;
9345 }
9346 }
9347 else
3019eac3 9348 {
0ab9ce85 9349 restart_symtab (tu_group->compunit_symtab, "", 0);
f4dc4d17
DE
9350
9351 for (i = 0; i < lh->num_file_names; ++i)
9352 {
9353 struct file_entry *fe = &lh->file_names[i];
9354
9355 fe->symtab = tu_group->symtabs[i];
9356 }
3019eac3
DE
9357 }
9358
f4dc4d17
DE
9359 /* The main symtab is allocated last. Type units don't have DW_AT_name
9360 so they don't have a "real" (so to speak) symtab anyway.
9361 There is later code that will assign the main symtab to all symbols
9362 that don't have one. We need to handle the case of a symbol with a
9363 missing symtab (DW_AT_decl_file) anyway. */
9364}
3019eac3 9365
f4dc4d17
DE
9366/* Process DW_TAG_type_unit.
9367 For TUs we want to skip the first top level sibling if it's not the
9368 actual type being defined by this TU. In this case the first top
9369 level sibling is there to provide context only. */
3019eac3 9370
f4dc4d17
DE
9371static void
9372read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
9373{
9374 struct die_info *child_die;
3019eac3 9375
f4dc4d17
DE
9376 prepare_one_comp_unit (cu, die, language_minimal);
9377
9378 /* Initialize (or reinitialize) the machinery for building symtabs.
9379 We do this before processing child DIEs, so that the line header table
9380 is available for DW_AT_decl_file. */
9381 setup_type_unit_groups (die, cu);
9382
9383 if (die->child != NULL)
9384 {
9385 child_die = die->child;
9386 while (child_die && child_die->tag)
9387 {
9388 process_die (child_die, cu);
9389 child_die = sibling_die (child_die);
9390 }
9391 }
3019eac3
DE
9392}
9393\f
80626a55
DE
9394/* DWO/DWP files.
9395
9396 http://gcc.gnu.org/wiki/DebugFission
9397 http://gcc.gnu.org/wiki/DebugFissionDWP
9398
9399 To simplify handling of both DWO files ("object" files with the DWARF info)
9400 and DWP files (a file with the DWOs packaged up into one file), we treat
9401 DWP files as having a collection of virtual DWO files. */
3019eac3
DE
9402
9403static hashval_t
9404hash_dwo_file (const void *item)
9405{
9406 const struct dwo_file *dwo_file = item;
a2ce51a0 9407 hashval_t hash;
3019eac3 9408
a2ce51a0
DE
9409 hash = htab_hash_string (dwo_file->dwo_name);
9410 if (dwo_file->comp_dir != NULL)
9411 hash += htab_hash_string (dwo_file->comp_dir);
9412 return hash;
3019eac3
DE
9413}
9414
9415static int
9416eq_dwo_file (const void *item_lhs, const void *item_rhs)
9417{
9418 const struct dwo_file *lhs = item_lhs;
9419 const struct dwo_file *rhs = item_rhs;
9420
a2ce51a0
DE
9421 if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
9422 return 0;
9423 if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
9424 return lhs->comp_dir == rhs->comp_dir;
9425 return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
3019eac3
DE
9426}
9427
9428/* Allocate a hash table for DWO files. */
9429
9430static htab_t
9431allocate_dwo_file_hash_table (void)
9432{
9433 struct objfile *objfile = dwarf2_per_objfile->objfile;
9434
9435 return htab_create_alloc_ex (41,
9436 hash_dwo_file,
9437 eq_dwo_file,
9438 NULL,
9439 &objfile->objfile_obstack,
9440 hashtab_obstack_allocate,
9441 dummy_obstack_deallocate);
9442}
9443
80626a55
DE
9444/* Lookup DWO file DWO_NAME. */
9445
9446static void **
0ac5b59e 9447lookup_dwo_file_slot (const char *dwo_name, const char *comp_dir)
80626a55
DE
9448{
9449 struct dwo_file find_entry;
9450 void **slot;
9451
9452 if (dwarf2_per_objfile->dwo_files == NULL)
9453 dwarf2_per_objfile->dwo_files = allocate_dwo_file_hash_table ();
9454
9455 memset (&find_entry, 0, sizeof (find_entry));
0ac5b59e
DE
9456 find_entry.dwo_name = dwo_name;
9457 find_entry.comp_dir = comp_dir;
80626a55
DE
9458 slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
9459
9460 return slot;
9461}
9462
3019eac3
DE
9463static hashval_t
9464hash_dwo_unit (const void *item)
9465{
9466 const struct dwo_unit *dwo_unit = item;
9467
9468 /* This drops the top 32 bits of the id, but is ok for a hash. */
9469 return dwo_unit->signature;
9470}
9471
9472static int
9473eq_dwo_unit (const void *item_lhs, const void *item_rhs)
9474{
9475 const struct dwo_unit *lhs = item_lhs;
9476 const struct dwo_unit *rhs = item_rhs;
9477
9478 /* The signature is assumed to be unique within the DWO file.
9479 So while object file CU dwo_id's always have the value zero,
9480 that's OK, assuming each object file DWO file has only one CU,
9481 and that's the rule for now. */
9482 return lhs->signature == rhs->signature;
9483}
9484
9485/* Allocate a hash table for DWO CUs,TUs.
9486 There is one of these tables for each of CUs,TUs for each DWO file. */
9487
9488static htab_t
9489allocate_dwo_unit_table (struct objfile *objfile)
9490{
9491 /* Start out with a pretty small number.
9492 Generally DWO files contain only one CU and maybe some TUs. */
9493 return htab_create_alloc_ex (3,
9494 hash_dwo_unit,
9495 eq_dwo_unit,
9496 NULL,
9497 &objfile->objfile_obstack,
9498 hashtab_obstack_allocate,
9499 dummy_obstack_deallocate);
9500}
9501
80626a55 9502/* Structure used to pass data to create_dwo_debug_info_hash_table_reader. */
3019eac3 9503
19c3d4c9 9504struct create_dwo_cu_data
3019eac3
DE
9505{
9506 struct dwo_file *dwo_file;
19c3d4c9 9507 struct dwo_unit dwo_unit;
3019eac3
DE
9508};
9509
19c3d4c9 9510/* die_reader_func for create_dwo_cu. */
3019eac3
DE
9511
9512static void
19c3d4c9
DE
9513create_dwo_cu_reader (const struct die_reader_specs *reader,
9514 const gdb_byte *info_ptr,
9515 struct die_info *comp_unit_die,
9516 int has_children,
9517 void *datap)
3019eac3
DE
9518{
9519 struct dwarf2_cu *cu = reader->cu;
9520 struct objfile *objfile = dwarf2_per_objfile->objfile;
9521 sect_offset offset = cu->per_cu->offset;
8a0459fd 9522 struct dwarf2_section_info *section = cu->per_cu->section;
19c3d4c9 9523 struct create_dwo_cu_data *data = datap;
3019eac3 9524 struct dwo_file *dwo_file = data->dwo_file;
19c3d4c9 9525 struct dwo_unit *dwo_unit = &data->dwo_unit;
3019eac3 9526 struct attribute *attr;
3019eac3
DE
9527
9528 attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
9529 if (attr == NULL)
9530 {
19c3d4c9
DE
9531 complaint (&symfile_complaints,
9532 _("Dwarf Error: debug entry at offset 0x%x is missing"
9533 " its dwo_id [in module %s]"),
9534 offset.sect_off, dwo_file->dwo_name);
3019eac3
DE
9535 return;
9536 }
9537
3019eac3
DE
9538 dwo_unit->dwo_file = dwo_file;
9539 dwo_unit->signature = DW_UNSND (attr);
8a0459fd 9540 dwo_unit->section = section;
3019eac3
DE
9541 dwo_unit->offset = offset;
9542 dwo_unit->length = cu->per_cu->length;
9543
b4f54984 9544 if (dwarf_read_debug)
4031ecc5
DE
9545 fprintf_unfiltered (gdb_stdlog, " offset 0x%x, dwo_id %s\n",
9546 offset.sect_off, hex_string (dwo_unit->signature));
3019eac3
DE
9547}
9548
19c3d4c9
DE
9549/* Create the dwo_unit for the lone CU in DWO_FILE.
9550 Note: This function processes DWO files only, not DWP files. */
3019eac3 9551
19c3d4c9
DE
9552static struct dwo_unit *
9553create_dwo_cu (struct dwo_file *dwo_file)
3019eac3
DE
9554{
9555 struct objfile *objfile = dwarf2_per_objfile->objfile;
9556 struct dwarf2_section_info *section = &dwo_file->sections.info;
9557 bfd *abfd;
9558 htab_t cu_htab;
d521ce57 9559 const gdb_byte *info_ptr, *end_ptr;
19c3d4c9
DE
9560 struct create_dwo_cu_data create_dwo_cu_data;
9561 struct dwo_unit *dwo_unit;
3019eac3
DE
9562
9563 dwarf2_read_section (objfile, section);
9564 info_ptr = section->buffer;
9565
9566 if (info_ptr == NULL)
9567 return NULL;
9568
9569 /* We can't set abfd until now because the section may be empty or
9570 not present, in which case section->asection will be NULL. */
a32a8923 9571 abfd = get_section_bfd_owner (section);
3019eac3 9572
b4f54984 9573 if (dwarf_read_debug)
19c3d4c9
DE
9574 {
9575 fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
a32a8923
DE
9576 get_section_name (section),
9577 get_section_file_name (section));
19c3d4c9 9578 }
3019eac3 9579
19c3d4c9
DE
9580 create_dwo_cu_data.dwo_file = dwo_file;
9581 dwo_unit = NULL;
3019eac3
DE
9582
9583 end_ptr = info_ptr + section->size;
9584 while (info_ptr < end_ptr)
9585 {
9586 struct dwarf2_per_cu_data per_cu;
9587
19c3d4c9
DE
9588 memset (&create_dwo_cu_data.dwo_unit, 0,
9589 sizeof (create_dwo_cu_data.dwo_unit));
3019eac3
DE
9590 memset (&per_cu, 0, sizeof (per_cu));
9591 per_cu.objfile = objfile;
9592 per_cu.is_debug_types = 0;
9593 per_cu.offset.sect_off = info_ptr - section->buffer;
8a0459fd 9594 per_cu.section = section;
3019eac3 9595
33e80786 9596 init_cutu_and_read_dies_no_follow (&per_cu, dwo_file,
19c3d4c9
DE
9597 create_dwo_cu_reader,
9598 &create_dwo_cu_data);
9599
9600 if (create_dwo_cu_data.dwo_unit.dwo_file != NULL)
9601 {
9602 /* If we've already found one, complain. We only support one
9603 because having more than one requires hacking the dwo_name of
9604 each to match, which is highly unlikely to happen. */
9605 if (dwo_unit != NULL)
9606 {
9607 complaint (&symfile_complaints,
9608 _("Multiple CUs in DWO file %s [in module %s]"),
4262abfb 9609 dwo_file->dwo_name, objfile_name (objfile));
19c3d4c9
DE
9610 break;
9611 }
9612
9613 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
9614 *dwo_unit = create_dwo_cu_data.dwo_unit;
9615 }
3019eac3
DE
9616
9617 info_ptr += per_cu.length;
9618 }
9619
19c3d4c9 9620 return dwo_unit;
3019eac3
DE
9621}
9622
80626a55
DE
9623/* DWP file .debug_{cu,tu}_index section format:
9624 [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
9625
d2415c6c
DE
9626 DWP Version 1:
9627
80626a55
DE
9628 Both index sections have the same format, and serve to map a 64-bit
9629 signature to a set of section numbers. Each section begins with a header,
9630 followed by a hash table of 64-bit signatures, a parallel table of 32-bit
9631 indexes, and a pool of 32-bit section numbers. The index sections will be
9632 aligned at 8-byte boundaries in the file.
9633
d2415c6c
DE
9634 The index section header consists of:
9635
9636 V, 32 bit version number
9637 -, 32 bits unused
9638 N, 32 bit number of compilation units or type units in the index
9639 M, 32 bit number of slots in the hash table
80626a55 9640
d2415c6c 9641 Numbers are recorded using the byte order of the application binary.
80626a55 9642
d2415c6c
DE
9643 The hash table begins at offset 16 in the section, and consists of an array
9644 of M 64-bit slots. Each slot contains a 64-bit signature (using the byte
9645 order of the application binary). Unused slots in the hash table are 0.
9646 (We rely on the extreme unlikeliness of a signature being exactly 0.)
80626a55 9647
d2415c6c
DE
9648 The parallel table begins immediately after the hash table
9649 (at offset 16 + 8 * M from the beginning of the section), and consists of an
9650 array of 32-bit indexes (using the byte order of the application binary),
9651 corresponding 1-1 with slots in the hash table. Each entry in the parallel
9652 table contains a 32-bit index into the pool of section numbers. For unused
9653 hash table slots, the corresponding entry in the parallel table will be 0.
80626a55 9654
73869dc2
DE
9655 The pool of section numbers begins immediately following the hash table
9656 (at offset 16 + 12 * M from the beginning of the section). The pool of
9657 section numbers consists of an array of 32-bit words (using the byte order
9658 of the application binary). Each item in the array is indexed starting
9659 from 0. The hash table entry provides the index of the first section
9660 number in the set. Additional section numbers in the set follow, and the
9661 set is terminated by a 0 entry (section number 0 is not used in ELF).
9662
9663 In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
9664 section must be the first entry in the set, and the .debug_abbrev.dwo must
9665 be the second entry. Other members of the set may follow in any order.
9666
9667 ---
9668
9669 DWP Version 2:
9670
9671 DWP Version 2 combines all the .debug_info, etc. sections into one,
9672 and the entries in the index tables are now offsets into these sections.
9673 CU offsets begin at 0. TU offsets begin at the size of the .debug_info
9674 section.
9675
9676 Index Section Contents:
9677 Header
9678 Hash Table of Signatures dwp_hash_table.hash_table
9679 Parallel Table of Indices dwp_hash_table.unit_table
9680 Table of Section Offsets dwp_hash_table.v2.{section_ids,offsets}
9681 Table of Section Sizes dwp_hash_table.v2.sizes
9682
9683 The index section header consists of:
9684
9685 V, 32 bit version number
9686 L, 32 bit number of columns in the table of section offsets
9687 N, 32 bit number of compilation units or type units in the index
9688 M, 32 bit number of slots in the hash table
9689
9690 Numbers are recorded using the byte order of the application binary.
9691
9692 The hash table has the same format as version 1.
9693 The parallel table of indices has the same format as version 1,
9694 except that the entries are origin-1 indices into the table of sections
9695 offsets and the table of section sizes.
9696
9697 The table of offsets begins immediately following the parallel table
9698 (at offset 16 + 12 * M from the beginning of the section). The table is
9699 a two-dimensional array of 32-bit words (using the byte order of the
9700 application binary), with L columns and N+1 rows, in row-major order.
9701 Each row in the array is indexed starting from 0. The first row provides
9702 a key to the remaining rows: each column in this row provides an identifier
9703 for a debug section, and the offsets in the same column of subsequent rows
9704 refer to that section. The section identifiers are:
9705
9706 DW_SECT_INFO 1 .debug_info.dwo
9707 DW_SECT_TYPES 2 .debug_types.dwo
9708 DW_SECT_ABBREV 3 .debug_abbrev.dwo
9709 DW_SECT_LINE 4 .debug_line.dwo
9710 DW_SECT_LOC 5 .debug_loc.dwo
9711 DW_SECT_STR_OFFSETS 6 .debug_str_offsets.dwo
9712 DW_SECT_MACINFO 7 .debug_macinfo.dwo
9713 DW_SECT_MACRO 8 .debug_macro.dwo
9714
9715 The offsets provided by the CU and TU index sections are the base offsets
9716 for the contributions made by each CU or TU to the corresponding section
9717 in the package file. Each CU and TU header contains an abbrev_offset
9718 field, used to find the abbreviations table for that CU or TU within the
9719 contribution to the .debug_abbrev.dwo section for that CU or TU, and should
9720 be interpreted as relative to the base offset given in the index section.
9721 Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
9722 should be interpreted as relative to the base offset for .debug_line.dwo,
9723 and offsets into other debug sections obtained from DWARF attributes should
9724 also be interpreted as relative to the corresponding base offset.
9725
9726 The table of sizes begins immediately following the table of offsets.
9727 Like the table of offsets, it is a two-dimensional array of 32-bit words,
9728 with L columns and N rows, in row-major order. Each row in the array is
9729 indexed starting from 1 (row 0 is shared by the two tables).
9730
9731 ---
9732
9733 Hash table lookup is handled the same in version 1 and 2:
9734
9735 We assume that N and M will not exceed 2^32 - 1.
9736 The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
9737
d2415c6c
DE
9738 Given a 64-bit compilation unit signature or a type signature S, an entry
9739 in the hash table is located as follows:
80626a55 9740
d2415c6c
DE
9741 1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
9742 the low-order k bits all set to 1.
80626a55 9743
d2415c6c 9744 2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
80626a55 9745
d2415c6c
DE
9746 3) If the hash table entry at index H matches the signature, use that
9747 entry. If the hash table entry at index H is unused (all zeroes),
9748 terminate the search: the signature is not present in the table.
80626a55 9749
d2415c6c 9750 4) Let H = (H + H') modulo M. Repeat at Step 3.
80626a55 9751
d2415c6c 9752 Because M > N and H' and M are relatively prime, the search is guaranteed
73869dc2 9753 to stop at an unused slot or find the match. */
80626a55
DE
9754
9755/* Create a hash table to map DWO IDs to their CU/TU entry in
9756 .debug_{info,types}.dwo in DWP_FILE.
9757 Returns NULL if there isn't one.
9758 Note: This function processes DWP files only, not DWO files. */
9759
9760static struct dwp_hash_table *
9761create_dwp_hash_table (struct dwp_file *dwp_file, int is_debug_types)
9762{
9763 struct objfile *objfile = dwarf2_per_objfile->objfile;
9764 bfd *dbfd = dwp_file->dbfd;
948f8e3d 9765 const gdb_byte *index_ptr, *index_end;
80626a55 9766 struct dwarf2_section_info *index;
73869dc2 9767 uint32_t version, nr_columns, nr_units, nr_slots;
80626a55
DE
9768 struct dwp_hash_table *htab;
9769
9770 if (is_debug_types)
9771 index = &dwp_file->sections.tu_index;
9772 else
9773 index = &dwp_file->sections.cu_index;
9774
9775 if (dwarf2_section_empty_p (index))
9776 return NULL;
9777 dwarf2_read_section (objfile, index);
9778
9779 index_ptr = index->buffer;
9780 index_end = index_ptr + index->size;
9781
9782 version = read_4_bytes (dbfd, index_ptr);
73869dc2
DE
9783 index_ptr += 4;
9784 if (version == 2)
9785 nr_columns = read_4_bytes (dbfd, index_ptr);
9786 else
9787 nr_columns = 0;
9788 index_ptr += 4;
80626a55
DE
9789 nr_units = read_4_bytes (dbfd, index_ptr);
9790 index_ptr += 4;
9791 nr_slots = read_4_bytes (dbfd, index_ptr);
9792 index_ptr += 4;
9793
73869dc2 9794 if (version != 1 && version != 2)
80626a55 9795 {
21aa081e 9796 error (_("Dwarf Error: unsupported DWP file version (%s)"
80626a55 9797 " [in module %s]"),
21aa081e 9798 pulongest (version), dwp_file->name);
80626a55
DE
9799 }
9800 if (nr_slots != (nr_slots & -nr_slots))
9801 {
21aa081e 9802 error (_("Dwarf Error: number of slots in DWP hash table (%s)"
80626a55 9803 " is not power of 2 [in module %s]"),
21aa081e 9804 pulongest (nr_slots), dwp_file->name);
80626a55
DE
9805 }
9806
9807 htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
73869dc2
DE
9808 htab->version = version;
9809 htab->nr_columns = nr_columns;
80626a55
DE
9810 htab->nr_units = nr_units;
9811 htab->nr_slots = nr_slots;
9812 htab->hash_table = index_ptr;
9813 htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
73869dc2
DE
9814
9815 /* Exit early if the table is empty. */
9816 if (nr_slots == 0 || nr_units == 0
9817 || (version == 2 && nr_columns == 0))
9818 {
9819 /* All must be zero. */
9820 if (nr_slots != 0 || nr_units != 0
9821 || (version == 2 && nr_columns != 0))
9822 {
9823 complaint (&symfile_complaints,
9824 _("Empty DWP but nr_slots,nr_units,nr_columns not"
9825 " all zero [in modules %s]"),
9826 dwp_file->name);
9827 }
9828 return htab;
9829 }
9830
9831 if (version == 1)
9832 {
9833 htab->section_pool.v1.indices =
9834 htab->unit_table + sizeof (uint32_t) * nr_slots;
9835 /* It's harder to decide whether the section is too small in v1.
9836 V1 is deprecated anyway so we punt. */
9837 }
9838 else
9839 {
9840 const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
9841 int *ids = htab->section_pool.v2.section_ids;
9842 /* Reverse map for error checking. */
9843 int ids_seen[DW_SECT_MAX + 1];
9844 int i;
9845
9846 if (nr_columns < 2)
9847 {
9848 error (_("Dwarf Error: bad DWP hash table, too few columns"
9849 " in section table [in module %s]"),
9850 dwp_file->name);
9851 }
9852 if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
9853 {
9854 error (_("Dwarf Error: bad DWP hash table, too many columns"
9855 " in section table [in module %s]"),
9856 dwp_file->name);
9857 }
9858 memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9859 memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
9860 for (i = 0; i < nr_columns; ++i)
9861 {
9862 int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
9863
9864 if (id < DW_SECT_MIN || id > DW_SECT_MAX)
9865 {
9866 error (_("Dwarf Error: bad DWP hash table, bad section id %d"
9867 " in section table [in module %s]"),
9868 id, dwp_file->name);
9869 }
9870 if (ids_seen[id] != -1)
9871 {
9872 error (_("Dwarf Error: bad DWP hash table, duplicate section"
9873 " id %d in section table [in module %s]"),
9874 id, dwp_file->name);
9875 }
9876 ids_seen[id] = i;
9877 ids[i] = id;
9878 }
9879 /* Must have exactly one info or types section. */
9880 if (((ids_seen[DW_SECT_INFO] != -1)
9881 + (ids_seen[DW_SECT_TYPES] != -1))
9882 != 1)
9883 {
9884 error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
9885 " DWO info/types section [in module %s]"),
9886 dwp_file->name);
9887 }
9888 /* Must have an abbrev section. */
9889 if (ids_seen[DW_SECT_ABBREV] == -1)
9890 {
9891 error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
9892 " section [in module %s]"),
9893 dwp_file->name);
9894 }
9895 htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
9896 htab->section_pool.v2.sizes =
9897 htab->section_pool.v2.offsets + (sizeof (uint32_t)
9898 * nr_units * nr_columns);
9899 if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
9900 * nr_units * nr_columns))
9901 > index_end)
9902 {
9903 error (_("Dwarf Error: DWP index section is corrupt (too small)"
9904 " [in module %s]"),
9905 dwp_file->name);
9906 }
9907 }
80626a55
DE
9908
9909 return htab;
9910}
9911
9912/* Update SECTIONS with the data from SECTP.
9913
9914 This function is like the other "locate" section routines that are
9915 passed to bfd_map_over_sections, but in this context the sections to
73869dc2 9916 read comes from the DWP V1 hash table, not the full ELF section table.
80626a55
DE
9917
9918 The result is non-zero for success, or zero if an error was found. */
9919
9920static int
73869dc2
DE
9921locate_v1_virtual_dwo_sections (asection *sectp,
9922 struct virtual_v1_dwo_sections *sections)
80626a55
DE
9923{
9924 const struct dwop_section_names *names = &dwop_section_names;
9925
9926 if (section_is_p (sectp->name, &names->abbrev_dwo))
9927 {
9928 /* There can be only one. */
73869dc2 9929 if (sections->abbrev.s.asection != NULL)
80626a55 9930 return 0;
73869dc2 9931 sections->abbrev.s.asection = sectp;
80626a55
DE
9932 sections->abbrev.size = bfd_get_section_size (sectp);
9933 }
9934 else if (section_is_p (sectp->name, &names->info_dwo)
9935 || section_is_p (sectp->name, &names->types_dwo))
9936 {
9937 /* There can be only one. */
73869dc2 9938 if (sections->info_or_types.s.asection != NULL)
80626a55 9939 return 0;
73869dc2 9940 sections->info_or_types.s.asection = sectp;
80626a55
DE
9941 sections->info_or_types.size = bfd_get_section_size (sectp);
9942 }
9943 else if (section_is_p (sectp->name, &names->line_dwo))
9944 {
9945 /* There can be only one. */
73869dc2 9946 if (sections->line.s.asection != NULL)
80626a55 9947 return 0;
73869dc2 9948 sections->line.s.asection = sectp;
80626a55
DE
9949 sections->line.size = bfd_get_section_size (sectp);
9950 }
9951 else if (section_is_p (sectp->name, &names->loc_dwo))
9952 {
9953 /* There can be only one. */
73869dc2 9954 if (sections->loc.s.asection != NULL)
80626a55 9955 return 0;
73869dc2 9956 sections->loc.s.asection = sectp;
80626a55
DE
9957 sections->loc.size = bfd_get_section_size (sectp);
9958 }
9959 else if (section_is_p (sectp->name, &names->macinfo_dwo))
9960 {
9961 /* There can be only one. */
73869dc2 9962 if (sections->macinfo.s.asection != NULL)
80626a55 9963 return 0;
73869dc2 9964 sections->macinfo.s.asection = sectp;
80626a55
DE
9965 sections->macinfo.size = bfd_get_section_size (sectp);
9966 }
9967 else if (section_is_p (sectp->name, &names->macro_dwo))
9968 {
9969 /* There can be only one. */
73869dc2 9970 if (sections->macro.s.asection != NULL)
80626a55 9971 return 0;
73869dc2 9972 sections->macro.s.asection = sectp;
80626a55
DE
9973 sections->macro.size = bfd_get_section_size (sectp);
9974 }
9975 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
9976 {
9977 /* There can be only one. */
73869dc2 9978 if (sections->str_offsets.s.asection != NULL)
80626a55 9979 return 0;
73869dc2 9980 sections->str_offsets.s.asection = sectp;
80626a55
DE
9981 sections->str_offsets.size = bfd_get_section_size (sectp);
9982 }
9983 else
9984 {
9985 /* No other kind of section is valid. */
9986 return 0;
9987 }
9988
9989 return 1;
9990}
9991
73869dc2
DE
9992/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
9993 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
9994 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
9995 This is for DWP version 1 files. */
80626a55
DE
9996
9997static struct dwo_unit *
73869dc2
DE
9998create_dwo_unit_in_dwp_v1 (struct dwp_file *dwp_file,
9999 uint32_t unit_index,
10000 const char *comp_dir,
10001 ULONGEST signature, int is_debug_types)
80626a55
DE
10002{
10003 struct objfile *objfile = dwarf2_per_objfile->objfile;
73869dc2
DE
10004 const struct dwp_hash_table *dwp_htab =
10005 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55
DE
10006 bfd *dbfd = dwp_file->dbfd;
10007 const char *kind = is_debug_types ? "TU" : "CU";
10008 struct dwo_file *dwo_file;
10009 struct dwo_unit *dwo_unit;
73869dc2 10010 struct virtual_v1_dwo_sections sections;
80626a55
DE
10011 void **dwo_file_slot;
10012 char *virtual_dwo_name;
10013 struct dwarf2_section_info *cutu;
10014 struct cleanup *cleanups;
10015 int i;
10016
73869dc2
DE
10017 gdb_assert (dwp_file->version == 1);
10018
b4f54984 10019 if (dwarf_read_debug)
80626a55 10020 {
73869dc2 10021 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
80626a55 10022 kind,
73869dc2 10023 pulongest (unit_index), hex_string (signature),
80626a55
DE
10024 dwp_file->name);
10025 }
10026
19ac8c2e 10027 /* Fetch the sections of this DWO unit.
80626a55
DE
10028 Put a limit on the number of sections we look for so that bad data
10029 doesn't cause us to loop forever. */
10030
73869dc2 10031#define MAX_NR_V1_DWO_SECTIONS \
80626a55
DE
10032 (1 /* .debug_info or .debug_types */ \
10033 + 1 /* .debug_abbrev */ \
10034 + 1 /* .debug_line */ \
10035 + 1 /* .debug_loc */ \
10036 + 1 /* .debug_str_offsets */ \
19ac8c2e 10037 + 1 /* .debug_macro or .debug_macinfo */ \
80626a55
DE
10038 + 1 /* trailing zero */)
10039
10040 memset (&sections, 0, sizeof (sections));
10041 cleanups = make_cleanup (null_cleanup, 0);
10042
73869dc2 10043 for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
80626a55
DE
10044 {
10045 asection *sectp;
10046 uint32_t section_nr =
10047 read_4_bytes (dbfd,
73869dc2
DE
10048 dwp_htab->section_pool.v1.indices
10049 + (unit_index + i) * sizeof (uint32_t));
80626a55
DE
10050
10051 if (section_nr == 0)
10052 break;
10053 if (section_nr >= dwp_file->num_sections)
10054 {
10055 error (_("Dwarf Error: bad DWP hash table, section number too large"
10056 " [in module %s]"),
10057 dwp_file->name);
10058 }
10059
10060 sectp = dwp_file->elf_sections[section_nr];
73869dc2 10061 if (! locate_v1_virtual_dwo_sections (sectp, &sections))
80626a55
DE
10062 {
10063 error (_("Dwarf Error: bad DWP hash table, invalid section found"
10064 " [in module %s]"),
10065 dwp_file->name);
10066 }
10067 }
10068
10069 if (i < 2
a32a8923
DE
10070 || dwarf2_section_empty_p (&sections.info_or_types)
10071 || dwarf2_section_empty_p (&sections.abbrev))
80626a55
DE
10072 {
10073 error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
10074 " [in module %s]"),
10075 dwp_file->name);
10076 }
73869dc2 10077 if (i == MAX_NR_V1_DWO_SECTIONS)
80626a55
DE
10078 {
10079 error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
10080 " [in module %s]"),
10081 dwp_file->name);
10082 }
10083
10084 /* It's easier for the rest of the code if we fake a struct dwo_file and
10085 have dwo_unit "live" in that. At least for now.
10086
10087 The DWP file can be made up of a random collection of CUs and TUs.
c766f7ec 10088 However, for each CU + set of TUs that came from the same original DWO
57d63ce2
DE
10089 file, we can combine them back into a virtual DWO file to save space
10090 (fewer struct dwo_file objects to allocate). Remember that for really
80626a55
DE
10091 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10092
2792b94d
PM
10093 virtual_dwo_name =
10094 xstrprintf ("virtual-dwo/%d-%d-%d-%d",
a32a8923
DE
10095 get_section_id (&sections.abbrev),
10096 get_section_id (&sections.line),
10097 get_section_id (&sections.loc),
10098 get_section_id (&sections.str_offsets));
80626a55
DE
10099 make_cleanup (xfree, virtual_dwo_name);
10100 /* Can we use an existing virtual DWO file? */
0ac5b59e 10101 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
80626a55
DE
10102 /* Create one if necessary. */
10103 if (*dwo_file_slot == NULL)
10104 {
b4f54984 10105 if (dwarf_read_debug)
80626a55
DE
10106 {
10107 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10108 virtual_dwo_name);
10109 }
10110 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10111 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10112 virtual_dwo_name,
10113 strlen (virtual_dwo_name));
10114 dwo_file->comp_dir = comp_dir;
80626a55
DE
10115 dwo_file->sections.abbrev = sections.abbrev;
10116 dwo_file->sections.line = sections.line;
10117 dwo_file->sections.loc = sections.loc;
10118 dwo_file->sections.macinfo = sections.macinfo;
10119 dwo_file->sections.macro = sections.macro;
10120 dwo_file->sections.str_offsets = sections.str_offsets;
10121 /* The "str" section is global to the entire DWP file. */
10122 dwo_file->sections.str = dwp_file->sections.str;
57d63ce2 10123 /* The info or types section is assigned below to dwo_unit,
80626a55
DE
10124 there's no need to record it in dwo_file.
10125 Also, we can't simply record type sections in dwo_file because
10126 we record a pointer into the vector in dwo_unit. As we collect more
10127 types we'll grow the vector and eventually have to reallocate space
57d63ce2
DE
10128 for it, invalidating all copies of pointers into the previous
10129 contents. */
80626a55
DE
10130 *dwo_file_slot = dwo_file;
10131 }
10132 else
10133 {
b4f54984 10134 if (dwarf_read_debug)
80626a55
DE
10135 {
10136 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10137 virtual_dwo_name);
10138 }
10139 dwo_file = *dwo_file_slot;
10140 }
10141 do_cleanups (cleanups);
10142
10143 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10144 dwo_unit->dwo_file = dwo_file;
10145 dwo_unit->signature = signature;
8a0459fd
DE
10146 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10147 sizeof (struct dwarf2_section_info));
10148 *dwo_unit->section = sections.info_or_types;
57d63ce2 10149 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
80626a55
DE
10150
10151 return dwo_unit;
10152}
10153
73869dc2
DE
10154/* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
10155 Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
10156 piece within that section used by a TU/CU, return a virtual section
10157 of just that piece. */
10158
10159static struct dwarf2_section_info
10160create_dwp_v2_section (struct dwarf2_section_info *section,
10161 bfd_size_type offset, bfd_size_type size)
10162{
10163 struct dwarf2_section_info result;
10164 asection *sectp;
10165
10166 gdb_assert (section != NULL);
10167 gdb_assert (!section->is_virtual);
10168
10169 memset (&result, 0, sizeof (result));
10170 result.s.containing_section = section;
10171 result.is_virtual = 1;
10172
10173 if (size == 0)
10174 return result;
10175
10176 sectp = get_section_bfd_section (section);
10177
10178 /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
10179 bounds of the real section. This is a pretty-rare event, so just
10180 flag an error (easier) instead of a warning and trying to cope. */
10181 if (sectp == NULL
10182 || offset + size > bfd_get_section_size (sectp))
10183 {
10184 bfd *abfd = sectp->owner;
10185
10186 error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
10187 " in section %s [in module %s]"),
10188 sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
10189 objfile_name (dwarf2_per_objfile->objfile));
10190 }
10191
10192 result.virtual_offset = offset;
10193 result.size = size;
10194 return result;
10195}
10196
10197/* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
10198 UNIT_INDEX is the index of the DWO unit in the DWP hash table.
10199 COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
10200 This is for DWP version 2 files. */
10201
10202static struct dwo_unit *
10203create_dwo_unit_in_dwp_v2 (struct dwp_file *dwp_file,
10204 uint32_t unit_index,
10205 const char *comp_dir,
10206 ULONGEST signature, int is_debug_types)
10207{
10208 struct objfile *objfile = dwarf2_per_objfile->objfile;
10209 const struct dwp_hash_table *dwp_htab =
10210 is_debug_types ? dwp_file->tus : dwp_file->cus;
10211 bfd *dbfd = dwp_file->dbfd;
10212 const char *kind = is_debug_types ? "TU" : "CU";
10213 struct dwo_file *dwo_file;
10214 struct dwo_unit *dwo_unit;
10215 struct virtual_v2_dwo_sections sections;
10216 void **dwo_file_slot;
10217 char *virtual_dwo_name;
10218 struct dwarf2_section_info *cutu;
10219 struct cleanup *cleanups;
10220 int i;
10221
10222 gdb_assert (dwp_file->version == 2);
10223
b4f54984 10224 if (dwarf_read_debug)
73869dc2
DE
10225 {
10226 fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
10227 kind,
10228 pulongest (unit_index), hex_string (signature),
10229 dwp_file->name);
10230 }
10231
10232 /* Fetch the section offsets of this DWO unit. */
10233
10234 memset (&sections, 0, sizeof (sections));
10235 cleanups = make_cleanup (null_cleanup, 0);
10236
10237 for (i = 0; i < dwp_htab->nr_columns; ++i)
10238 {
10239 uint32_t offset = read_4_bytes (dbfd,
10240 dwp_htab->section_pool.v2.offsets
10241 + (((unit_index - 1) * dwp_htab->nr_columns
10242 + i)
10243 * sizeof (uint32_t)));
10244 uint32_t size = read_4_bytes (dbfd,
10245 dwp_htab->section_pool.v2.sizes
10246 + (((unit_index - 1) * dwp_htab->nr_columns
10247 + i)
10248 * sizeof (uint32_t)));
10249
10250 switch (dwp_htab->section_pool.v2.section_ids[i])
10251 {
10252 case DW_SECT_INFO:
10253 case DW_SECT_TYPES:
10254 sections.info_or_types_offset = offset;
10255 sections.info_or_types_size = size;
10256 break;
10257 case DW_SECT_ABBREV:
10258 sections.abbrev_offset = offset;
10259 sections.abbrev_size = size;
10260 break;
10261 case DW_SECT_LINE:
10262 sections.line_offset = offset;
10263 sections.line_size = size;
10264 break;
10265 case DW_SECT_LOC:
10266 sections.loc_offset = offset;
10267 sections.loc_size = size;
10268 break;
10269 case DW_SECT_STR_OFFSETS:
10270 sections.str_offsets_offset = offset;
10271 sections.str_offsets_size = size;
10272 break;
10273 case DW_SECT_MACINFO:
10274 sections.macinfo_offset = offset;
10275 sections.macinfo_size = size;
10276 break;
10277 case DW_SECT_MACRO:
10278 sections.macro_offset = offset;
10279 sections.macro_size = size;
10280 break;
10281 }
10282 }
10283
10284 /* It's easier for the rest of the code if we fake a struct dwo_file and
10285 have dwo_unit "live" in that. At least for now.
10286
10287 The DWP file can be made up of a random collection of CUs and TUs.
10288 However, for each CU + set of TUs that came from the same original DWO
10289 file, we can combine them back into a virtual DWO file to save space
10290 (fewer struct dwo_file objects to allocate). Remember that for really
10291 large apps there can be on the order of 8K CUs and 200K TUs, or more. */
10292
10293 virtual_dwo_name =
10294 xstrprintf ("virtual-dwo/%ld-%ld-%ld-%ld",
10295 (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
10296 (long) (sections.line_size ? sections.line_offset : 0),
10297 (long) (sections.loc_size ? sections.loc_offset : 0),
10298 (long) (sections.str_offsets_size
10299 ? sections.str_offsets_offset : 0));
10300 make_cleanup (xfree, virtual_dwo_name);
10301 /* Can we use an existing virtual DWO file? */
10302 dwo_file_slot = lookup_dwo_file_slot (virtual_dwo_name, comp_dir);
10303 /* Create one if necessary. */
10304 if (*dwo_file_slot == NULL)
10305 {
b4f54984 10306 if (dwarf_read_debug)
73869dc2
DE
10307 {
10308 fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
10309 virtual_dwo_name);
10310 }
10311 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
10312 dwo_file->dwo_name = obstack_copy0 (&objfile->objfile_obstack,
10313 virtual_dwo_name,
10314 strlen (virtual_dwo_name));
10315 dwo_file->comp_dir = comp_dir;
10316 dwo_file->sections.abbrev =
10317 create_dwp_v2_section (&dwp_file->sections.abbrev,
10318 sections.abbrev_offset, sections.abbrev_size);
10319 dwo_file->sections.line =
10320 create_dwp_v2_section (&dwp_file->sections.line,
10321 sections.line_offset, sections.line_size);
10322 dwo_file->sections.loc =
10323 create_dwp_v2_section (&dwp_file->sections.loc,
10324 sections.loc_offset, sections.loc_size);
10325 dwo_file->sections.macinfo =
10326 create_dwp_v2_section (&dwp_file->sections.macinfo,
10327 sections.macinfo_offset, sections.macinfo_size);
10328 dwo_file->sections.macro =
10329 create_dwp_v2_section (&dwp_file->sections.macro,
10330 sections.macro_offset, sections.macro_size);
10331 dwo_file->sections.str_offsets =
10332 create_dwp_v2_section (&dwp_file->sections.str_offsets,
10333 sections.str_offsets_offset,
10334 sections.str_offsets_size);
10335 /* The "str" section is global to the entire DWP file. */
10336 dwo_file->sections.str = dwp_file->sections.str;
10337 /* The info or types section is assigned below to dwo_unit,
10338 there's no need to record it in dwo_file.
10339 Also, we can't simply record type sections in dwo_file because
10340 we record a pointer into the vector in dwo_unit. As we collect more
10341 types we'll grow the vector and eventually have to reallocate space
10342 for it, invalidating all copies of pointers into the previous
10343 contents. */
10344 *dwo_file_slot = dwo_file;
10345 }
10346 else
10347 {
b4f54984 10348 if (dwarf_read_debug)
73869dc2
DE
10349 {
10350 fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
10351 virtual_dwo_name);
10352 }
10353 dwo_file = *dwo_file_slot;
10354 }
10355 do_cleanups (cleanups);
10356
10357 dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
10358 dwo_unit->dwo_file = dwo_file;
10359 dwo_unit->signature = signature;
10360 dwo_unit->section = obstack_alloc (&objfile->objfile_obstack,
10361 sizeof (struct dwarf2_section_info));
10362 *dwo_unit->section = create_dwp_v2_section (is_debug_types
10363 ? &dwp_file->sections.types
10364 : &dwp_file->sections.info,
10365 sections.info_or_types_offset,
10366 sections.info_or_types_size);
10367 /* dwo_unit->{offset,length,type_offset_in_tu} are set later. */
10368
10369 return dwo_unit;
10370}
10371
57d63ce2
DE
10372/* Lookup the DWO unit with SIGNATURE in DWP_FILE.
10373 Returns NULL if the signature isn't found. */
80626a55
DE
10374
10375static struct dwo_unit *
57d63ce2
DE
10376lookup_dwo_unit_in_dwp (struct dwp_file *dwp_file, const char *comp_dir,
10377 ULONGEST signature, int is_debug_types)
80626a55 10378{
57d63ce2
DE
10379 const struct dwp_hash_table *dwp_htab =
10380 is_debug_types ? dwp_file->tus : dwp_file->cus;
80626a55 10381 bfd *dbfd = dwp_file->dbfd;
57d63ce2 10382 uint32_t mask = dwp_htab->nr_slots - 1;
80626a55
DE
10383 uint32_t hash = signature & mask;
10384 uint32_t hash2 = ((signature >> 32) & mask) | 1;
10385 unsigned int i;
10386 void **slot;
10387 struct dwo_unit find_dwo_cu, *dwo_cu;
10388
10389 memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
10390 find_dwo_cu.signature = signature;
19ac8c2e
DE
10391 slot = htab_find_slot (is_debug_types
10392 ? dwp_file->loaded_tus
10393 : dwp_file->loaded_cus,
10394 &find_dwo_cu, INSERT);
80626a55
DE
10395
10396 if (*slot != NULL)
10397 return *slot;
10398
10399 /* Use a for loop so that we don't loop forever on bad debug info. */
57d63ce2 10400 for (i = 0; i < dwp_htab->nr_slots; ++i)
80626a55
DE
10401 {
10402 ULONGEST signature_in_table;
10403
10404 signature_in_table =
57d63ce2 10405 read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
80626a55
DE
10406 if (signature_in_table == signature)
10407 {
57d63ce2
DE
10408 uint32_t unit_index =
10409 read_4_bytes (dbfd,
10410 dwp_htab->unit_table + hash * sizeof (uint32_t));
80626a55 10411
73869dc2
DE
10412 if (dwp_file->version == 1)
10413 {
10414 *slot = create_dwo_unit_in_dwp_v1 (dwp_file, unit_index,
10415 comp_dir, signature,
10416 is_debug_types);
10417 }
10418 else
10419 {
10420 *slot = create_dwo_unit_in_dwp_v2 (dwp_file, unit_index,
10421 comp_dir, signature,
10422 is_debug_types);
10423 }
80626a55
DE
10424 return *slot;
10425 }
10426 if (signature_in_table == 0)
10427 return NULL;
10428 hash = (hash + hash2) & mask;
10429 }
10430
10431 error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
10432 " [in module %s]"),
10433 dwp_file->name);
10434}
10435
ab5088bf 10436/* Subroutine of open_dwo_file,open_dwp_file to simplify them.
3019eac3
DE
10437 Open the file specified by FILE_NAME and hand it off to BFD for
10438 preliminary analysis. Return a newly initialized bfd *, which
10439 includes a canonicalized copy of FILE_NAME.
80626a55 10440 If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
6ac97d4c
DE
10441 SEARCH_CWD is true if the current directory is to be searched.
10442 It will be searched before debug-file-directory.
13aaf454
DE
10443 If successful, the file is added to the bfd include table of the
10444 objfile's bfd (see gdb_bfd_record_inclusion).
6ac97d4c 10445 If unable to find/open the file, return NULL.
3019eac3
DE
10446 NOTE: This function is derived from symfile_bfd_open. */
10447
10448static bfd *
6ac97d4c 10449try_open_dwop_file (const char *file_name, int is_dwp, int search_cwd)
3019eac3
DE
10450{
10451 bfd *sym_bfd;
80626a55 10452 int desc, flags;
3019eac3 10453 char *absolute_name;
9c02c129
DE
10454 /* Blech. OPF_TRY_CWD_FIRST also disables searching the path list if
10455 FILE_NAME contains a '/'. So we can't use it. Instead prepend "."
10456 to debug_file_directory. */
10457 char *search_path;
10458 static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
10459
6ac97d4c
DE
10460 if (search_cwd)
10461 {
10462 if (*debug_file_directory != '\0')
10463 search_path = concat (".", dirname_separator_string,
10464 debug_file_directory, NULL);
10465 else
10466 search_path = xstrdup (".");
10467 }
9c02c129 10468 else
6ac97d4c 10469 search_path = xstrdup (debug_file_directory);
3019eac3 10470
492c0ab7 10471 flags = OPF_RETURN_REALPATH;
80626a55
DE
10472 if (is_dwp)
10473 flags |= OPF_SEARCH_IN_PATH;
9c02c129 10474 desc = openp (search_path, flags, file_name,
3019eac3 10475 O_RDONLY | O_BINARY, &absolute_name);
9c02c129 10476 xfree (search_path);
3019eac3
DE
10477 if (desc < 0)
10478 return NULL;
10479
bb397797 10480 sym_bfd = gdb_bfd_open (absolute_name, gnutarget, desc);
a4453b7e 10481 xfree (absolute_name);
9c02c129
DE
10482 if (sym_bfd == NULL)
10483 return NULL;
3019eac3
DE
10484 bfd_set_cacheable (sym_bfd, 1);
10485
10486 if (!bfd_check_format (sym_bfd, bfd_object))
10487 {
cbb099e8 10488 gdb_bfd_unref (sym_bfd); /* This also closes desc. */
3019eac3
DE
10489 return NULL;
10490 }
10491
13aaf454
DE
10492 /* Success. Record the bfd as having been included by the objfile's bfd.
10493 This is important because things like demangled_names_hash lives in the
10494 objfile's per_bfd space and may have references to things like symbol
10495 names that live in the DWO/DWP file's per_bfd space. PR 16426. */
10496 gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd);
10497
3019eac3
DE
10498 return sym_bfd;
10499}
10500
ab5088bf 10501/* Try to open DWO file FILE_NAME.
3019eac3
DE
10502 COMP_DIR is the DW_AT_comp_dir attribute.
10503 The result is the bfd handle of the file.
10504 If there is a problem finding or opening the file, return NULL.
10505 Upon success, the canonicalized path of the file is stored in the bfd,
10506 same as symfile_bfd_open. */
10507
10508static bfd *
ab5088bf 10509open_dwo_file (const char *file_name, const char *comp_dir)
3019eac3
DE
10510{
10511 bfd *abfd;
3019eac3 10512
80626a55 10513 if (IS_ABSOLUTE_PATH (file_name))
6ac97d4c 10514 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 0 /*search_cwd*/);
3019eac3
DE
10515
10516 /* Before trying the search path, try DWO_NAME in COMP_DIR. */
10517
10518 if (comp_dir != NULL)
10519 {
80626a55 10520 char *path_to_try = concat (comp_dir, SLASH_STRING, file_name, NULL);
3019eac3
DE
10521
10522 /* NOTE: If comp_dir is a relative path, this will also try the
10523 search path, which seems useful. */
6ac97d4c 10524 abfd = try_open_dwop_file (path_to_try, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10525 xfree (path_to_try);
10526 if (abfd != NULL)
10527 return abfd;
10528 }
10529
10530 /* That didn't work, try debug-file-directory, which, despite its name,
10531 is a list of paths. */
10532
10533 if (*debug_file_directory == '\0')
10534 return NULL;
10535
6ac97d4c 10536 return try_open_dwop_file (file_name, 0 /*is_dwp*/, 1 /*search_cwd*/);
3019eac3
DE
10537}
10538
80626a55
DE
10539/* This function is mapped across the sections and remembers the offset and
10540 size of each of the DWO debugging sections we are interested in. */
10541
10542static void
10543dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
10544{
10545 struct dwo_sections *dwo_sections = dwo_sections_ptr;
10546 const struct dwop_section_names *names = &dwop_section_names;
10547
10548 if (section_is_p (sectp->name, &names->abbrev_dwo))
10549 {
73869dc2 10550 dwo_sections->abbrev.s.asection = sectp;
80626a55
DE
10551 dwo_sections->abbrev.size = bfd_get_section_size (sectp);
10552 }
10553 else if (section_is_p (sectp->name, &names->info_dwo))
10554 {
73869dc2 10555 dwo_sections->info.s.asection = sectp;
80626a55
DE
10556 dwo_sections->info.size = bfd_get_section_size (sectp);
10557 }
10558 else if (section_is_p (sectp->name, &names->line_dwo))
10559 {
73869dc2 10560 dwo_sections->line.s.asection = sectp;
80626a55
DE
10561 dwo_sections->line.size = bfd_get_section_size (sectp);
10562 }
10563 else if (section_is_p (sectp->name, &names->loc_dwo))
10564 {
73869dc2 10565 dwo_sections->loc.s.asection = sectp;
80626a55
DE
10566 dwo_sections->loc.size = bfd_get_section_size (sectp);
10567 }
10568 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10569 {
73869dc2 10570 dwo_sections->macinfo.s.asection = sectp;
80626a55
DE
10571 dwo_sections->macinfo.size = bfd_get_section_size (sectp);
10572 }
10573 else if (section_is_p (sectp->name, &names->macro_dwo))
10574 {
73869dc2 10575 dwo_sections->macro.s.asection = sectp;
80626a55
DE
10576 dwo_sections->macro.size = bfd_get_section_size (sectp);
10577 }
10578 else if (section_is_p (sectp->name, &names->str_dwo))
10579 {
73869dc2 10580 dwo_sections->str.s.asection = sectp;
80626a55
DE
10581 dwo_sections->str.size = bfd_get_section_size (sectp);
10582 }
10583 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10584 {
73869dc2 10585 dwo_sections->str_offsets.s.asection = sectp;
80626a55
DE
10586 dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
10587 }
10588 else if (section_is_p (sectp->name, &names->types_dwo))
10589 {
10590 struct dwarf2_section_info type_section;
10591
10592 memset (&type_section, 0, sizeof (type_section));
73869dc2 10593 type_section.s.asection = sectp;
80626a55
DE
10594 type_section.size = bfd_get_section_size (sectp);
10595 VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
10596 &type_section);
10597 }
10598}
10599
ab5088bf 10600/* Initialize the use of the DWO file specified by DWO_NAME and referenced
19c3d4c9 10601 by PER_CU. This is for the non-DWP case.
80626a55 10602 The result is NULL if DWO_NAME can't be found. */
3019eac3
DE
10603
10604static struct dwo_file *
0ac5b59e
DE
10605open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
10606 const char *dwo_name, const char *comp_dir)
3019eac3
DE
10607{
10608 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10609 struct dwo_file *dwo_file;
10610 bfd *dbfd;
3019eac3
DE
10611 struct cleanup *cleanups;
10612
ab5088bf 10613 dbfd = open_dwo_file (dwo_name, comp_dir);
80626a55
DE
10614 if (dbfd == NULL)
10615 {
b4f54984 10616 if (dwarf_read_debug)
80626a55
DE
10617 fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
10618 return NULL;
10619 }
10620 dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
0ac5b59e
DE
10621 dwo_file->dwo_name = dwo_name;
10622 dwo_file->comp_dir = comp_dir;
80626a55 10623 dwo_file->dbfd = dbfd;
3019eac3
DE
10624
10625 cleanups = make_cleanup (free_dwo_file_cleanup, dwo_file);
10626
80626a55 10627 bfd_map_over_sections (dbfd, dwarf2_locate_dwo_sections, &dwo_file->sections);
3019eac3 10628
19c3d4c9 10629 dwo_file->cu = create_dwo_cu (dwo_file);
3019eac3
DE
10630
10631 dwo_file->tus = create_debug_types_hash_table (dwo_file,
10632 dwo_file->sections.types);
10633
10634 discard_cleanups (cleanups);
10635
b4f54984 10636 if (dwarf_read_debug)
80626a55
DE
10637 fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
10638
3019eac3
DE
10639 return dwo_file;
10640}
10641
80626a55 10642/* This function is mapped across the sections and remembers the offset and
73869dc2
DE
10643 size of each of the DWP debugging sections common to version 1 and 2 that
10644 we are interested in. */
3019eac3 10645
80626a55 10646static void
73869dc2
DE
10647dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
10648 void *dwp_file_ptr)
3019eac3 10649{
80626a55
DE
10650 struct dwp_file *dwp_file = dwp_file_ptr;
10651 const struct dwop_section_names *names = &dwop_section_names;
10652 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
3019eac3 10653
80626a55 10654 /* Record the ELF section number for later lookup: this is what the
73869dc2 10655 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
80626a55
DE
10656 gdb_assert (elf_section_nr < dwp_file->num_sections);
10657 dwp_file->elf_sections[elf_section_nr] = sectp;
3019eac3 10658
80626a55
DE
10659 /* Look for specific sections that we need. */
10660 if (section_is_p (sectp->name, &names->str_dwo))
10661 {
73869dc2 10662 dwp_file->sections.str.s.asection = sectp;
80626a55
DE
10663 dwp_file->sections.str.size = bfd_get_section_size (sectp);
10664 }
10665 else if (section_is_p (sectp->name, &names->cu_index))
10666 {
73869dc2 10667 dwp_file->sections.cu_index.s.asection = sectp;
80626a55
DE
10668 dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
10669 }
10670 else if (section_is_p (sectp->name, &names->tu_index))
10671 {
73869dc2 10672 dwp_file->sections.tu_index.s.asection = sectp;
80626a55
DE
10673 dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
10674 }
10675}
3019eac3 10676
73869dc2
DE
10677/* This function is mapped across the sections and remembers the offset and
10678 size of each of the DWP version 2 debugging sections that we are interested
10679 in. This is split into a separate function because we don't know if we
10680 have version 1 or 2 until we parse the cu_index/tu_index sections. */
10681
10682static void
10683dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
10684{
10685 struct dwp_file *dwp_file = dwp_file_ptr;
10686 const struct dwop_section_names *names = &dwop_section_names;
10687 unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
10688
10689 /* Record the ELF section number for later lookup: this is what the
10690 .debug_cu_index,.debug_tu_index tables use in DWP V1. */
10691 gdb_assert (elf_section_nr < dwp_file->num_sections);
10692 dwp_file->elf_sections[elf_section_nr] = sectp;
10693
10694 /* Look for specific sections that we need. */
10695 if (section_is_p (sectp->name, &names->abbrev_dwo))
10696 {
10697 dwp_file->sections.abbrev.s.asection = sectp;
10698 dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
10699 }
10700 else if (section_is_p (sectp->name, &names->info_dwo))
10701 {
10702 dwp_file->sections.info.s.asection = sectp;
10703 dwp_file->sections.info.size = bfd_get_section_size (sectp);
10704 }
10705 else if (section_is_p (sectp->name, &names->line_dwo))
10706 {
10707 dwp_file->sections.line.s.asection = sectp;
10708 dwp_file->sections.line.size = bfd_get_section_size (sectp);
10709 }
10710 else if (section_is_p (sectp->name, &names->loc_dwo))
10711 {
10712 dwp_file->sections.loc.s.asection = sectp;
10713 dwp_file->sections.loc.size = bfd_get_section_size (sectp);
10714 }
10715 else if (section_is_p (sectp->name, &names->macinfo_dwo))
10716 {
10717 dwp_file->sections.macinfo.s.asection = sectp;
10718 dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
10719 }
10720 else if (section_is_p (sectp->name, &names->macro_dwo))
10721 {
10722 dwp_file->sections.macro.s.asection = sectp;
10723 dwp_file->sections.macro.size = bfd_get_section_size (sectp);
10724 }
10725 else if (section_is_p (sectp->name, &names->str_offsets_dwo))
10726 {
10727 dwp_file->sections.str_offsets.s.asection = sectp;
10728 dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
10729 }
10730 else if (section_is_p (sectp->name, &names->types_dwo))
10731 {
10732 dwp_file->sections.types.s.asection = sectp;
10733 dwp_file->sections.types.size = bfd_get_section_size (sectp);
10734 }
10735}
10736
80626a55 10737/* Hash function for dwp_file loaded CUs/TUs. */
3019eac3 10738
80626a55
DE
10739static hashval_t
10740hash_dwp_loaded_cutus (const void *item)
10741{
10742 const struct dwo_unit *dwo_unit = item;
3019eac3 10743
80626a55
DE
10744 /* This drops the top 32 bits of the signature, but is ok for a hash. */
10745 return dwo_unit->signature;
3019eac3
DE
10746}
10747
80626a55 10748/* Equality function for dwp_file loaded CUs/TUs. */
3019eac3 10749
80626a55
DE
10750static int
10751eq_dwp_loaded_cutus (const void *a, const void *b)
3019eac3 10752{
80626a55
DE
10753 const struct dwo_unit *dua = a;
10754 const struct dwo_unit *dub = b;
3019eac3 10755
80626a55
DE
10756 return dua->signature == dub->signature;
10757}
3019eac3 10758
80626a55 10759/* Allocate a hash table for dwp_file loaded CUs/TUs. */
3019eac3 10760
80626a55
DE
10761static htab_t
10762allocate_dwp_loaded_cutus_table (struct objfile *objfile)
10763{
10764 return htab_create_alloc_ex (3,
10765 hash_dwp_loaded_cutus,
10766 eq_dwp_loaded_cutus,
10767 NULL,
10768 &objfile->objfile_obstack,
10769 hashtab_obstack_allocate,
10770 dummy_obstack_deallocate);
10771}
3019eac3 10772
ab5088bf
DE
10773/* Try to open DWP file FILE_NAME.
10774 The result is the bfd handle of the file.
10775 If there is a problem finding or opening the file, return NULL.
10776 Upon success, the canonicalized path of the file is stored in the bfd,
10777 same as symfile_bfd_open. */
10778
10779static bfd *
10780open_dwp_file (const char *file_name)
10781{
6ac97d4c
DE
10782 bfd *abfd;
10783
10784 abfd = try_open_dwop_file (file_name, 1 /*is_dwp*/, 1 /*search_cwd*/);
10785 if (abfd != NULL)
10786 return abfd;
10787
10788 /* Work around upstream bug 15652.
10789 http://sourceware.org/bugzilla/show_bug.cgi?id=15652
10790 [Whether that's a "bug" is debatable, but it is getting in our way.]
10791 We have no real idea where the dwp file is, because gdb's realpath-ing
10792 of the executable's path may have discarded the needed info.
10793 [IWBN if the dwp file name was recorded in the executable, akin to
10794 .gnu_debuglink, but that doesn't exist yet.]
10795 Strip the directory from FILE_NAME and search again. */
10796 if (*debug_file_directory != '\0')
10797 {
10798 /* Don't implicitly search the current directory here.
10799 If the user wants to search "." to handle this case,
10800 it must be added to debug-file-directory. */
10801 return try_open_dwop_file (lbasename (file_name), 1 /*is_dwp*/,
10802 0 /*search_cwd*/);
10803 }
10804
10805 return NULL;
ab5088bf
DE
10806}
10807
80626a55
DE
10808/* Initialize the use of the DWP file for the current objfile.
10809 By convention the name of the DWP file is ${objfile}.dwp.
10810 The result is NULL if it can't be found. */
a766d390 10811
80626a55 10812static struct dwp_file *
ab5088bf 10813open_and_init_dwp_file (void)
80626a55
DE
10814{
10815 struct objfile *objfile = dwarf2_per_objfile->objfile;
10816 struct dwp_file *dwp_file;
10817 char *dwp_name;
10818 bfd *dbfd;
10819 struct cleanup *cleanups;
10820
82bf32bc
JK
10821 /* Try to find first .dwp for the binary file before any symbolic links
10822 resolving. */
10823 dwp_name = xstrprintf ("%s.dwp", objfile->original_name);
80626a55
DE
10824 cleanups = make_cleanup (xfree, dwp_name);
10825
ab5088bf 10826 dbfd = open_dwp_file (dwp_name);
82bf32bc
JK
10827 if (dbfd == NULL
10828 && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
10829 {
10830 /* Try to find .dwp for the binary file after gdb_realpath resolving. */
10831 dwp_name = xstrprintf ("%s.dwp", objfile_name (objfile));
10832 make_cleanup (xfree, dwp_name);
10833 dbfd = open_dwp_file (dwp_name);
10834 }
10835
80626a55
DE
10836 if (dbfd == NULL)
10837 {
b4f54984 10838 if (dwarf_read_debug)
80626a55
DE
10839 fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name);
10840 do_cleanups (cleanups);
10841 return NULL;
3019eac3 10842 }
80626a55 10843 dwp_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_file);
93417882 10844 dwp_file->name = bfd_get_filename (dbfd);
80626a55
DE
10845 dwp_file->dbfd = dbfd;
10846 do_cleanups (cleanups);
c906108c 10847
80626a55
DE
10848 /* +1: section 0 is unused */
10849 dwp_file->num_sections = bfd_count_sections (dbfd) + 1;
10850 dwp_file->elf_sections =
10851 OBSTACK_CALLOC (&objfile->objfile_obstack,
10852 dwp_file->num_sections, asection *);
10853
73869dc2 10854 bfd_map_over_sections (dbfd, dwarf2_locate_common_dwp_sections, dwp_file);
80626a55
DE
10855
10856 dwp_file->cus = create_dwp_hash_table (dwp_file, 0);
10857
10858 dwp_file->tus = create_dwp_hash_table (dwp_file, 1);
10859
73869dc2
DE
10860 /* The DWP file version is stored in the hash table. Oh well. */
10861 if (dwp_file->cus->version != dwp_file->tus->version)
10862 {
10863 /* Technically speaking, we should try to limp along, but this is
fbcbc3fd 10864 pretty bizarre. We use pulongest here because that's the established
4d65956b 10865 portability solution (e.g, we cannot use %u for uint32_t). */
fbcbc3fd
DE
10866 error (_("Dwarf Error: DWP file CU version %s doesn't match"
10867 " TU version %s [in DWP file %s]"),
10868 pulongest (dwp_file->cus->version),
10869 pulongest (dwp_file->tus->version), dwp_name);
73869dc2
DE
10870 }
10871 dwp_file->version = dwp_file->cus->version;
10872
10873 if (dwp_file->version == 2)
10874 bfd_map_over_sections (dbfd, dwarf2_locate_v2_dwp_sections, dwp_file);
10875
19ac8c2e
DE
10876 dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
10877 dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
80626a55 10878
b4f54984 10879 if (dwarf_read_debug)
80626a55
DE
10880 {
10881 fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
10882 fprintf_unfiltered (gdb_stdlog,
21aa081e
PA
10883 " %s CUs, %s TUs\n",
10884 pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
10885 pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
80626a55
DE
10886 }
10887
10888 return dwp_file;
3019eac3 10889}
c906108c 10890
ab5088bf
DE
10891/* Wrapper around open_and_init_dwp_file, only open it once. */
10892
10893static struct dwp_file *
10894get_dwp_file (void)
10895{
10896 if (! dwarf2_per_objfile->dwp_checked)
10897 {
10898 dwarf2_per_objfile->dwp_file = open_and_init_dwp_file ();
10899 dwarf2_per_objfile->dwp_checked = 1;
10900 }
10901 return dwarf2_per_objfile->dwp_file;
10902}
10903
80626a55
DE
10904/* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
10905 Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
10906 or in the DWP file for the objfile, referenced by THIS_UNIT.
3019eac3 10907 If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
80626a55
DE
10908 IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
10909
10910 This is called, for example, when wanting to read a variable with a
10911 complex location. Therefore we don't want to do file i/o for every call.
10912 Therefore we don't want to look for a DWO file on every call.
10913 Therefore we first see if we've already seen SIGNATURE in a DWP file,
10914 then we check if we've already seen DWO_NAME, and only THEN do we check
10915 for a DWO file.
10916
1c658ad5 10917 The result is a pointer to the dwo_unit object or NULL if we didn't find it
80626a55 10918 (dwo_id mismatch or couldn't find the DWO/DWP file). */
debd256d 10919
3019eac3 10920static struct dwo_unit *
80626a55
DE
10921lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
10922 const char *dwo_name, const char *comp_dir,
10923 ULONGEST signature, int is_debug_types)
3019eac3
DE
10924{
10925 struct objfile *objfile = dwarf2_per_objfile->objfile;
80626a55
DE
10926 const char *kind = is_debug_types ? "TU" : "CU";
10927 void **dwo_file_slot;
3019eac3 10928 struct dwo_file *dwo_file;
80626a55 10929 struct dwp_file *dwp_file;
cb1df416 10930
6a506a2d
DE
10931 /* First see if there's a DWP file.
10932 If we have a DWP file but didn't find the DWO inside it, don't
10933 look for the original DWO file. It makes gdb behave differently
10934 depending on whether one is debugging in the build tree. */
cf2c3c16 10935
ab5088bf 10936 dwp_file = get_dwp_file ();
80626a55 10937 if (dwp_file != NULL)
cf2c3c16 10938 {
80626a55
DE
10939 const struct dwp_hash_table *dwp_htab =
10940 is_debug_types ? dwp_file->tus : dwp_file->cus;
10941
10942 if (dwp_htab != NULL)
10943 {
10944 struct dwo_unit *dwo_cutu =
57d63ce2
DE
10945 lookup_dwo_unit_in_dwp (dwp_file, comp_dir,
10946 signature, is_debug_types);
80626a55
DE
10947
10948 if (dwo_cutu != NULL)
10949 {
b4f54984 10950 if (dwarf_read_debug)
80626a55
DE
10951 {
10952 fprintf_unfiltered (gdb_stdlog,
10953 "Virtual DWO %s %s found: @%s\n",
10954 kind, hex_string (signature),
10955 host_address_to_string (dwo_cutu));
10956 }
10957 return dwo_cutu;
10958 }
10959 }
10960 }
6a506a2d 10961 else
80626a55 10962 {
6a506a2d 10963 /* No DWP file, look for the DWO file. */
80626a55 10964
6a506a2d
DE
10965 dwo_file_slot = lookup_dwo_file_slot (dwo_name, comp_dir);
10966 if (*dwo_file_slot == NULL)
80626a55 10967 {
6a506a2d
DE
10968 /* Read in the file and build a table of the CUs/TUs it contains. */
10969 *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
19c3d4c9 10970 }
6a506a2d
DE
10971 /* NOTE: This will be NULL if unable to open the file. */
10972 dwo_file = *dwo_file_slot;
3019eac3 10973
6a506a2d 10974 if (dwo_file != NULL)
19c3d4c9 10975 {
6a506a2d
DE
10976 struct dwo_unit *dwo_cutu = NULL;
10977
10978 if (is_debug_types && dwo_file->tus)
10979 {
10980 struct dwo_unit find_dwo_cutu;
10981
10982 memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
10983 find_dwo_cutu.signature = signature;
10984 dwo_cutu = htab_find (dwo_file->tus, &find_dwo_cutu);
10985 }
10986 else if (!is_debug_types && dwo_file->cu)
80626a55 10987 {
6a506a2d
DE
10988 if (signature == dwo_file->cu->signature)
10989 dwo_cutu = dwo_file->cu;
10990 }
10991
10992 if (dwo_cutu != NULL)
10993 {
b4f54984 10994 if (dwarf_read_debug)
6a506a2d
DE
10995 {
10996 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
10997 kind, dwo_name, hex_string (signature),
10998 host_address_to_string (dwo_cutu));
10999 }
11000 return dwo_cutu;
80626a55
DE
11001 }
11002 }
2e276125 11003 }
9cdd5dbd 11004
80626a55
DE
11005 /* We didn't find it. This could mean a dwo_id mismatch, or
11006 someone deleted the DWO/DWP file, or the search path isn't set up
11007 correctly to find the file. */
11008
b4f54984 11009 if (dwarf_read_debug)
80626a55
DE
11010 {
11011 fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
11012 kind, dwo_name, hex_string (signature));
11013 }
3019eac3 11014
6656a72d
DE
11015 /* This is a warning and not a complaint because it can be caused by
11016 pilot error (e.g., user accidentally deleting the DWO). */
43942612
DE
11017 {
11018 /* Print the name of the DWP file if we looked there, helps the user
11019 better diagnose the problem. */
11020 char *dwp_text = NULL;
11021 struct cleanup *cleanups;
11022
11023 if (dwp_file != NULL)
11024 dwp_text = xstrprintf (" [in DWP file %s]", lbasename (dwp_file->name));
11025 cleanups = make_cleanup (xfree, dwp_text);
11026
11027 warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset 0x%x"
11028 " [in module %s]"),
11029 kind, dwo_name, hex_string (signature),
11030 dwp_text != NULL ? dwp_text : "",
11031 this_unit->is_debug_types ? "TU" : "CU",
11032 this_unit->offset.sect_off, objfile_name (objfile));
11033
11034 do_cleanups (cleanups);
11035 }
3019eac3 11036 return NULL;
5fb290d7
DJ
11037}
11038
80626a55
DE
11039/* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
11040 See lookup_dwo_cutu_unit for details. */
11041
11042static struct dwo_unit *
11043lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
11044 const char *dwo_name, const char *comp_dir,
11045 ULONGEST signature)
11046{
11047 return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
11048}
11049
11050/* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
11051 See lookup_dwo_cutu_unit for details. */
11052
11053static struct dwo_unit *
11054lookup_dwo_type_unit (struct signatured_type *this_tu,
11055 const char *dwo_name, const char *comp_dir)
11056{
11057 return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
11058}
11059
89e63ee4
DE
11060/* Traversal function for queue_and_load_all_dwo_tus. */
11061
11062static int
11063queue_and_load_dwo_tu (void **slot, void *info)
11064{
11065 struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
11066 struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
11067 ULONGEST signature = dwo_unit->signature;
11068 struct signatured_type *sig_type =
11069 lookup_dwo_signatured_type (per_cu->cu, signature);
11070
11071 if (sig_type != NULL)
11072 {
11073 struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
11074
11075 /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
11076 a real dependency of PER_CU on SIG_TYPE. That is detected later
11077 while processing PER_CU. */
11078 if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
11079 load_full_type_unit (sig_cu);
11080 VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
11081 }
11082
11083 return 1;
11084}
11085
11086/* Queue all TUs contained in the DWO of PER_CU to be read in.
11087 The DWO may have the only definition of the type, though it may not be
11088 referenced anywhere in PER_CU. Thus we have to load *all* its TUs.
11089 http://sourceware.org/bugzilla/show_bug.cgi?id=15021 */
11090
11091static void
11092queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
11093{
11094 struct dwo_unit *dwo_unit;
11095 struct dwo_file *dwo_file;
11096
11097 gdb_assert (!per_cu->is_debug_types);
11098 gdb_assert (get_dwp_file () == NULL);
11099 gdb_assert (per_cu->cu != NULL);
11100
11101 dwo_unit = per_cu->cu->dwo_unit;
11102 gdb_assert (dwo_unit != NULL);
11103
11104 dwo_file = dwo_unit->dwo_file;
11105 if (dwo_file->tus != NULL)
11106 htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
11107}
11108
3019eac3
DE
11109/* Free all resources associated with DWO_FILE.
11110 Close the DWO file and munmap the sections.
11111 All memory should be on the objfile obstack. */
348e048f
DE
11112
11113static void
3019eac3 11114free_dwo_file (struct dwo_file *dwo_file, struct objfile *objfile)
348e048f 11115{
3019eac3
DE
11116 int ix;
11117 struct dwarf2_section_info *section;
348e048f 11118
5c6fa7ab 11119 /* Note: dbfd is NULL for virtual DWO files. */
80626a55 11120 gdb_bfd_unref (dwo_file->dbfd);
348e048f 11121
3019eac3
DE
11122 VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
11123}
348e048f 11124
3019eac3 11125/* Wrapper for free_dwo_file for use in cleanups. */
348e048f 11126
3019eac3
DE
11127static void
11128free_dwo_file_cleanup (void *arg)
11129{
11130 struct dwo_file *dwo_file = (struct dwo_file *) arg;
11131 struct objfile *objfile = dwarf2_per_objfile->objfile;
348e048f 11132
3019eac3
DE
11133 free_dwo_file (dwo_file, objfile);
11134}
348e048f 11135
3019eac3 11136/* Traversal function for free_dwo_files. */
2ab95328 11137
3019eac3
DE
11138static int
11139free_dwo_file_from_slot (void **slot, void *info)
11140{
11141 struct dwo_file *dwo_file = (struct dwo_file *) *slot;
11142 struct objfile *objfile = (struct objfile *) info;
348e048f 11143
3019eac3 11144 free_dwo_file (dwo_file, objfile);
348e048f 11145
3019eac3
DE
11146 return 1;
11147}
348e048f 11148
3019eac3 11149/* Free all resources associated with DWO_FILES. */
348e048f 11150
3019eac3
DE
11151static void
11152free_dwo_files (htab_t dwo_files, struct objfile *objfile)
11153{
11154 htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
348e048f 11155}
3019eac3
DE
11156\f
11157/* Read in various DIEs. */
348e048f 11158
d389af10
JK
11159/* qsort helper for inherit_abstract_dies. */
11160
11161static int
11162unsigned_int_compar (const void *ap, const void *bp)
11163{
11164 unsigned int a = *(unsigned int *) ap;
11165 unsigned int b = *(unsigned int *) bp;
11166
11167 return (a > b) - (b > a);
11168}
11169
11170/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3e43a32a
MS
11171 Inherit only the children of the DW_AT_abstract_origin DIE not being
11172 already referenced by DW_AT_abstract_origin from the children of the
11173 current DIE. */
d389af10
JK
11174
11175static void
11176inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
11177{
11178 struct die_info *child_die;
11179 unsigned die_children_count;
11180 /* CU offsets which were referenced by children of the current DIE. */
b64f50a1
JK
11181 sect_offset *offsets;
11182 sect_offset *offsets_end, *offsetp;
d389af10
JK
11183 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
11184 struct die_info *origin_die;
11185 /* Iterator of the ORIGIN_DIE children. */
11186 struct die_info *origin_child_die;
11187 struct cleanup *cleanups;
11188 struct attribute *attr;
cd02d79d
PA
11189 struct dwarf2_cu *origin_cu;
11190 struct pending **origin_previous_list_in_scope;
d389af10
JK
11191
11192 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11193 if (!attr)
11194 return;
11195
cd02d79d
PA
11196 /* Note that following die references may follow to a die in a
11197 different cu. */
11198
11199 origin_cu = cu;
11200 origin_die = follow_die_ref (die, attr, &origin_cu);
11201
11202 /* We're inheriting ORIGIN's children into the scope we'd put DIE's
11203 symbols in. */
11204 origin_previous_list_in_scope = origin_cu->list_in_scope;
11205 origin_cu->list_in_scope = cu->list_in_scope;
11206
edb3359d
DJ
11207 if (die->tag != origin_die->tag
11208 && !(die->tag == DW_TAG_inlined_subroutine
11209 && origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11210 complaint (&symfile_complaints,
11211 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
b64f50a1 11212 die->offset.sect_off, origin_die->offset.sect_off);
d389af10
JK
11213
11214 child_die = die->child;
11215 die_children_count = 0;
11216 while (child_die && child_die->tag)
11217 {
11218 child_die = sibling_die (child_die);
11219 die_children_count++;
11220 }
11221 offsets = xmalloc (sizeof (*offsets) * die_children_count);
11222 cleanups = make_cleanup (xfree, offsets);
11223
11224 offsets_end = offsets;
3ea89b92
PMR
11225 for (child_die = die->child;
11226 child_die && child_die->tag;
11227 child_die = sibling_die (child_die))
11228 {
11229 struct die_info *child_origin_die;
11230 struct dwarf2_cu *child_origin_cu;
11231
11232 /* We are trying to process concrete instance entries:
11233 DW_TAG_GNU_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
11234 it's not relevant to our analysis here. i.e. detecting DIEs that are
11235 present in the abstract instance but not referenced in the concrete
11236 one. */
11237 if (child_die->tag == DW_TAG_GNU_call_site)
11238 continue;
11239
c38f313d
DJ
11240 /* For each CHILD_DIE, find the corresponding child of
11241 ORIGIN_DIE. If there is more than one layer of
11242 DW_AT_abstract_origin, follow them all; there shouldn't be,
11243 but GCC versions at least through 4.4 generate this (GCC PR
11244 40573). */
3ea89b92
PMR
11245 child_origin_die = child_die;
11246 child_origin_cu = cu;
c38f313d
DJ
11247 while (1)
11248 {
cd02d79d
PA
11249 attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
11250 child_origin_cu);
c38f313d
DJ
11251 if (attr == NULL)
11252 break;
cd02d79d
PA
11253 child_origin_die = follow_die_ref (child_origin_die, attr,
11254 &child_origin_cu);
c38f313d
DJ
11255 }
11256
d389af10
JK
11257 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
11258 counterpart may exist. */
c38f313d 11259 if (child_origin_die != child_die)
d389af10 11260 {
edb3359d
DJ
11261 if (child_die->tag != child_origin_die->tag
11262 && !(child_die->tag == DW_TAG_inlined_subroutine
11263 && child_origin_die->tag == DW_TAG_subprogram))
d389af10
JK
11264 complaint (&symfile_complaints,
11265 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11266 "different tags"), child_die->offset.sect_off,
11267 child_origin_die->offset.sect_off);
c38f313d
DJ
11268 if (child_origin_die->parent != origin_die)
11269 complaint (&symfile_complaints,
11270 _("Child DIE 0x%x and its abstract origin 0x%x have "
b64f50a1
JK
11271 "different parents"), child_die->offset.sect_off,
11272 child_origin_die->offset.sect_off);
c38f313d
DJ
11273 else
11274 *offsets_end++ = child_origin_die->offset;
d389af10 11275 }
d389af10
JK
11276 }
11277 qsort (offsets, offsets_end - offsets, sizeof (*offsets),
11278 unsigned_int_compar);
11279 for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
b64f50a1 11280 if (offsetp[-1].sect_off == offsetp->sect_off)
3e43a32a
MS
11281 complaint (&symfile_complaints,
11282 _("Multiple children of DIE 0x%x refer "
11283 "to DIE 0x%x as their abstract origin"),
b64f50a1 11284 die->offset.sect_off, offsetp->sect_off);
d389af10
JK
11285
11286 offsetp = offsets;
11287 origin_child_die = origin_die->child;
11288 while (origin_child_die && origin_child_die->tag)
11289 {
11290 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
b64f50a1
JK
11291 while (offsetp < offsets_end
11292 && offsetp->sect_off < origin_child_die->offset.sect_off)
d389af10 11293 offsetp++;
b64f50a1
JK
11294 if (offsetp >= offsets_end
11295 || offsetp->sect_off > origin_child_die->offset.sect_off)
d389af10 11296 {
adde2bff
DE
11297 /* Found that ORIGIN_CHILD_DIE is really not referenced.
11298 Check whether we're already processing ORIGIN_CHILD_DIE.
11299 This can happen with mutually referenced abstract_origins.
11300 PR 16581. */
11301 if (!origin_child_die->in_process)
11302 process_die (origin_child_die, origin_cu);
d389af10
JK
11303 }
11304 origin_child_die = sibling_die (origin_child_die);
11305 }
cd02d79d 11306 origin_cu->list_in_scope = origin_previous_list_in_scope;
d389af10
JK
11307
11308 do_cleanups (cleanups);
11309}
11310
c906108c 11311static void
e7c27a73 11312read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11313{
e7c27a73 11314 struct objfile *objfile = cu->objfile;
3e29f34a 11315 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11316 struct context_stack *newobj;
c906108c
SS
11317 CORE_ADDR lowpc;
11318 CORE_ADDR highpc;
11319 struct die_info *child_die;
edb3359d 11320 struct attribute *attr, *call_line, *call_file;
15d034d0 11321 const char *name;
e142c38c 11322 CORE_ADDR baseaddr;
801e3a5b 11323 struct block *block;
edb3359d 11324 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
34eaf542
TT
11325 VEC (symbolp) *template_args = NULL;
11326 struct template_symbol *templ_func = NULL;
edb3359d
DJ
11327
11328 if (inlined_func)
11329 {
11330 /* If we do not have call site information, we can't show the
11331 caller of this inlined function. That's too confusing, so
11332 only use the scope for local variables. */
11333 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
11334 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
11335 if (call_line == NULL || call_file == NULL)
11336 {
11337 read_lexical_block_scope (die, cu);
11338 return;
11339 }
11340 }
c906108c 11341
e142c38c
DJ
11342 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11343
94af9270 11344 name = dwarf2_name (die, cu);
c906108c 11345
e8d05480
JB
11346 /* Ignore functions with missing or empty names. These are actually
11347 illegal according to the DWARF standard. */
11348 if (name == NULL)
11349 {
11350 complaint (&symfile_complaints,
b64f50a1
JK
11351 _("missing name for subprogram DIE at %d"),
11352 die->offset.sect_off);
e8d05480
JB
11353 return;
11354 }
11355
11356 /* Ignore functions with missing or invalid low and high pc attributes. */
11357 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
11358 {
ae4d0c03
PM
11359 attr = dwarf2_attr (die, DW_AT_external, cu);
11360 if (!attr || !DW_UNSND (attr))
11361 complaint (&symfile_complaints,
3e43a32a
MS
11362 _("cannot get low and high bounds "
11363 "for subprogram DIE at %d"),
b64f50a1 11364 die->offset.sect_off);
e8d05480
JB
11365 return;
11366 }
c906108c 11367
3e29f34a
MR
11368 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11369 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c 11370
34eaf542
TT
11371 /* If we have any template arguments, then we must allocate a
11372 different sort of symbol. */
11373 for (child_die = die->child; child_die; child_die = sibling_die (child_die))
11374 {
11375 if (child_die->tag == DW_TAG_template_type_param
11376 || child_die->tag == DW_TAG_template_value_param)
11377 {
e623cf5d 11378 templ_func = allocate_template_symbol (objfile);
34eaf542
TT
11379 templ_func->base.is_cplus_template_function = 1;
11380 break;
11381 }
11382 }
11383
fe978cb0
PA
11384 newobj = push_context (0, lowpc);
11385 newobj->name = new_symbol_full (die, read_type_die (die, cu), cu,
34eaf542 11386 (struct symbol *) templ_func);
4c2df51b 11387
4cecd739
DJ
11388 /* If there is a location expression for DW_AT_frame_base, record
11389 it. */
e142c38c 11390 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 11391 if (attr)
fe978cb0 11392 dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
4c2df51b 11393
e142c38c 11394 cu->list_in_scope = &local_symbols;
c906108c 11395
639d11d3 11396 if (die->child != NULL)
c906108c 11397 {
639d11d3 11398 child_die = die->child;
c906108c
SS
11399 while (child_die && child_die->tag)
11400 {
34eaf542
TT
11401 if (child_die->tag == DW_TAG_template_type_param
11402 || child_die->tag == DW_TAG_template_value_param)
11403 {
11404 struct symbol *arg = new_symbol (child_die, NULL, cu);
11405
f1078f66
DJ
11406 if (arg != NULL)
11407 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
11408 }
11409 else
11410 process_die (child_die, cu);
c906108c
SS
11411 child_die = sibling_die (child_die);
11412 }
11413 }
11414
d389af10
JK
11415 inherit_abstract_dies (die, cu);
11416
4a811a97
UW
11417 /* If we have a DW_AT_specification, we might need to import using
11418 directives from the context of the specification DIE. See the
11419 comment in determine_prefix. */
11420 if (cu->language == language_cplus
11421 && dwarf2_attr (die, DW_AT_specification, cu))
11422 {
11423 struct dwarf2_cu *spec_cu = cu;
11424 struct die_info *spec_die = die_specification (die, &spec_cu);
11425
11426 while (spec_die)
11427 {
11428 child_die = spec_die->child;
11429 while (child_die && child_die->tag)
11430 {
11431 if (child_die->tag == DW_TAG_imported_module)
11432 process_die (child_die, spec_cu);
11433 child_die = sibling_die (child_die);
11434 }
11435
11436 /* In some cases, GCC generates specification DIEs that
11437 themselves contain DW_AT_specification attributes. */
11438 spec_die = die_specification (spec_die, &spec_cu);
11439 }
11440 }
11441
fe978cb0 11442 newobj = pop_context ();
c906108c 11443 /* Make a block for the local symbols within. */
fe978cb0 11444 block = finish_block (newobj->name, &local_symbols, newobj->old_blocks,
4d663531 11445 lowpc, highpc);
801e3a5b 11446
df8a16a1 11447 /* For C++, set the block's scope. */
195a3f6c 11448 if ((cu->language == language_cplus || cu->language == language_fortran)
4d4ec4e5 11449 && cu->processing_has_namespace_info)
195a3f6c
TT
11450 block_set_scope (block, determine_prefix (die, cu),
11451 &objfile->objfile_obstack);
df8a16a1 11452
801e3a5b
JB
11453 /* If we have address ranges, record them. */
11454 dwarf2_record_block_ranges (die, block, baseaddr, cu);
6e70227d 11455
fe978cb0 11456 gdbarch_make_symbol_special (gdbarch, newobj->name, objfile);
3e29f34a 11457
34eaf542
TT
11458 /* Attach template arguments to function. */
11459 if (! VEC_empty (symbolp, template_args))
11460 {
11461 gdb_assert (templ_func != NULL);
11462
11463 templ_func->n_template_arguments = VEC_length (symbolp, template_args);
11464 templ_func->template_arguments
11465 = obstack_alloc (&objfile->objfile_obstack,
11466 (templ_func->n_template_arguments
11467 * sizeof (struct symbol *)));
11468 memcpy (templ_func->template_arguments,
11469 VEC_address (symbolp, template_args),
11470 (templ_func->n_template_arguments * sizeof (struct symbol *)));
11471 VEC_free (symbolp, template_args);
11472 }
11473
208d8187
JB
11474 /* In C++, we can have functions nested inside functions (e.g., when
11475 a function declares a class that has methods). This means that
11476 when we finish processing a function scope, we may need to go
11477 back to building a containing block's symbol lists. */
fe978cb0
PA
11478 local_symbols = newobj->locals;
11479 using_directives = newobj->using_directives;
208d8187 11480
921e78cf
JB
11481 /* If we've finished processing a top-level function, subsequent
11482 symbols go in the file symbol list. */
11483 if (outermost_context_p ())
e142c38c 11484 cu->list_in_scope = &file_symbols;
c906108c
SS
11485}
11486
11487/* Process all the DIES contained within a lexical block scope. Start
11488 a new scope, process the dies, and then close the scope. */
11489
11490static void
e7c27a73 11491read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 11492{
e7c27a73 11493 struct objfile *objfile = cu->objfile;
3e29f34a 11494 struct gdbarch *gdbarch = get_objfile_arch (objfile);
fe978cb0 11495 struct context_stack *newobj;
c906108c
SS
11496 CORE_ADDR lowpc, highpc;
11497 struct die_info *child_die;
e142c38c
DJ
11498 CORE_ADDR baseaddr;
11499
11500 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
11501
11502 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
11503 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
11504 as multiple lexical blocks? Handling children in a sane way would
6e70227d 11505 be nasty. Might be easier to properly extend generic blocks to
af34e669 11506 describe ranges. */
d85a05f0 11507 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
c906108c 11508 return;
3e29f34a
MR
11509 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11510 highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
c906108c
SS
11511
11512 push_context (0, lowpc);
639d11d3 11513 if (die->child != NULL)
c906108c 11514 {
639d11d3 11515 child_die = die->child;
c906108c
SS
11516 while (child_die && child_die->tag)
11517 {
e7c27a73 11518 process_die (child_die, cu);
c906108c
SS
11519 child_die = sibling_die (child_die);
11520 }
11521 }
3ea89b92 11522 inherit_abstract_dies (die, cu);
fe978cb0 11523 newobj = pop_context ();
c906108c 11524
8540c487 11525 if (local_symbols != NULL || using_directives != NULL)
c906108c 11526 {
801e3a5b 11527 struct block *block
fe978cb0
PA
11528 = finish_block (0, &local_symbols, newobj->old_blocks,
11529 newobj->start_addr, highpc);
801e3a5b
JB
11530
11531 /* Note that recording ranges after traversing children, as we
11532 do here, means that recording a parent's ranges entails
11533 walking across all its children's ranges as they appear in
11534 the address map, which is quadratic behavior.
11535
11536 It would be nicer to record the parent's ranges before
11537 traversing its children, simply overriding whatever you find
11538 there. But since we don't even decide whether to create a
11539 block until after we've traversed its children, that's hard
11540 to do. */
11541 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c 11542 }
fe978cb0
PA
11543 local_symbols = newobj->locals;
11544 using_directives = newobj->using_directives;
c906108c
SS
11545}
11546
96408a79
SA
11547/* Read in DW_TAG_GNU_call_site and insert it to CU->call_site_htab. */
11548
11549static void
11550read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
11551{
11552 struct objfile *objfile = cu->objfile;
11553 struct gdbarch *gdbarch = get_objfile_arch (objfile);
11554 CORE_ADDR pc, baseaddr;
11555 struct attribute *attr;
11556 struct call_site *call_site, call_site_local;
11557 void **slot;
11558 int nparams;
11559 struct die_info *child_die;
11560
11561 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11562
11563 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
11564 if (!attr)
11565 {
11566 complaint (&symfile_complaints,
11567 _("missing DW_AT_low_pc for DW_TAG_GNU_call_site "
11568 "DIE 0x%x [in module %s]"),
4262abfb 11569 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11570 return;
11571 }
31aa7e4e 11572 pc = attr_value_as_address (attr) + baseaddr;
3e29f34a 11573 pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
96408a79
SA
11574
11575 if (cu->call_site_htab == NULL)
11576 cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
11577 NULL, &objfile->objfile_obstack,
11578 hashtab_obstack_allocate, NULL);
11579 call_site_local.pc = pc;
11580 slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
11581 if (*slot != NULL)
11582 {
11583 complaint (&symfile_complaints,
11584 _("Duplicate PC %s for DW_TAG_GNU_call_site "
11585 "DIE 0x%x [in module %s]"),
4262abfb
JK
11586 paddress (gdbarch, pc), die->offset.sect_off,
11587 objfile_name (objfile));
96408a79
SA
11588 return;
11589 }
11590
11591 /* Count parameters at the caller. */
11592
11593 nparams = 0;
11594 for (child_die = die->child; child_die && child_die->tag;
11595 child_die = sibling_die (child_die))
11596 {
11597 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11598 {
11599 complaint (&symfile_complaints,
11600 _("Tag %d is not DW_TAG_GNU_call_site_parameter in "
11601 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb
JK
11602 child_die->tag, child_die->offset.sect_off,
11603 objfile_name (objfile));
96408a79
SA
11604 continue;
11605 }
11606
11607 nparams++;
11608 }
11609
11610 call_site = obstack_alloc (&objfile->objfile_obstack,
11611 (sizeof (*call_site)
11612 + (sizeof (*call_site->parameter)
11613 * (nparams - 1))));
11614 *slot = call_site;
11615 memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
11616 call_site->pc = pc;
11617
11618 if (dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
11619 {
11620 struct die_info *func_die;
11621
11622 /* Skip also over DW_TAG_inlined_subroutine. */
11623 for (func_die = die->parent;
11624 func_die && func_die->tag != DW_TAG_subprogram
11625 && func_die->tag != DW_TAG_subroutine_type;
11626 func_die = func_die->parent);
11627
11628 /* DW_AT_GNU_all_call_sites is a superset
11629 of DW_AT_GNU_all_tail_call_sites. */
11630 if (func_die
11631 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
11632 && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
11633 {
11634 /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
11635 not complete. But keep CALL_SITE for look ups via call_site_htab,
11636 both the initial caller containing the real return address PC and
11637 the final callee containing the current PC of a chain of tail
11638 calls do not need to have the tail call list complete. But any
11639 function candidate for a virtual tail call frame searched via
11640 TYPE_TAIL_CALL_LIST must have the tail call list complete to be
11641 determined unambiguously. */
11642 }
11643 else
11644 {
11645 struct type *func_type = NULL;
11646
11647 if (func_die)
11648 func_type = get_die_type (func_die, cu);
11649 if (func_type != NULL)
11650 {
11651 gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
11652
11653 /* Enlist this call site to the function. */
11654 call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
11655 TYPE_TAIL_CALL_LIST (func_type) = call_site;
11656 }
11657 else
11658 complaint (&symfile_complaints,
11659 _("Cannot find function owning DW_TAG_GNU_call_site "
11660 "DIE 0x%x [in module %s]"),
4262abfb 11661 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11662 }
11663 }
11664
11665 attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
11666 if (attr == NULL)
11667 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
11668 SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
11669 if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
11670 /* Keep NULL DWARF_BLOCK. */;
11671 else if (attr_form_is_block (attr))
11672 {
11673 struct dwarf2_locexpr_baton *dlbaton;
11674
11675 dlbaton = obstack_alloc (&objfile->objfile_obstack, sizeof (*dlbaton));
11676 dlbaton->data = DW_BLOCK (attr)->data;
11677 dlbaton->size = DW_BLOCK (attr)->size;
11678 dlbaton->per_cu = cu->per_cu;
11679
11680 SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
11681 }
7771576e 11682 else if (attr_form_is_ref (attr))
96408a79 11683 {
96408a79
SA
11684 struct dwarf2_cu *target_cu = cu;
11685 struct die_info *target_die;
11686
ac9ec31b 11687 target_die = follow_die_ref (die, attr, &target_cu);
96408a79
SA
11688 gdb_assert (target_cu->objfile == objfile);
11689 if (die_is_declaration (target_die, target_cu))
11690 {
9112db09
JK
11691 const char *target_physname = NULL;
11692 struct attribute *target_attr;
11693
11694 /* Prefer the mangled name; otherwise compute the demangled one. */
11695 target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
11696 if (target_attr == NULL)
11697 target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
11698 target_cu);
11699 if (target_attr != NULL && DW_STRING (target_attr) != NULL)
11700 target_physname = DW_STRING (target_attr);
11701 else
11702 target_physname = dwarf2_physname (NULL, target_die, target_cu);
96408a79
SA
11703 if (target_physname == NULL)
11704 complaint (&symfile_complaints,
11705 _("DW_AT_GNU_call_site_target target DIE has invalid "
11706 "physname, for referencing DIE 0x%x [in module %s]"),
4262abfb 11707 die->offset.sect_off, objfile_name (objfile));
96408a79 11708 else
7d455152 11709 SET_FIELD_PHYSNAME (call_site->target, target_physname);
96408a79
SA
11710 }
11711 else
11712 {
11713 CORE_ADDR lowpc;
11714
11715 /* DW_AT_entry_pc should be preferred. */
11716 if (!dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL))
11717 complaint (&symfile_complaints,
11718 _("DW_AT_GNU_call_site_target target DIE has invalid "
11719 "low pc, for referencing DIE 0x%x [in module %s]"),
4262abfb 11720 die->offset.sect_off, objfile_name (objfile));
96408a79 11721 else
3e29f34a
MR
11722 {
11723 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11724 SET_FIELD_PHYSADDR (call_site->target, lowpc);
11725 }
96408a79
SA
11726 }
11727 }
11728 else
11729 complaint (&symfile_complaints,
11730 _("DW_TAG_GNU_call_site DW_AT_GNU_call_site_target is neither "
11731 "block nor reference, for DIE 0x%x [in module %s]"),
4262abfb 11732 die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11733
11734 call_site->per_cu = cu->per_cu;
11735
11736 for (child_die = die->child;
11737 child_die && child_die->tag;
11738 child_die = sibling_die (child_die))
11739 {
96408a79 11740 struct call_site_parameter *parameter;
1788b2d3 11741 struct attribute *loc, *origin;
96408a79
SA
11742
11743 if (child_die->tag != DW_TAG_GNU_call_site_parameter)
11744 {
11745 /* Already printed the complaint above. */
11746 continue;
11747 }
11748
11749 gdb_assert (call_site->parameter_count < nparams);
11750 parameter = &call_site->parameter[call_site->parameter_count];
11751
1788b2d3
JK
11752 /* DW_AT_location specifies the register number or DW_AT_abstract_origin
11753 specifies DW_TAG_formal_parameter. Value of the data assumed for the
11754 register is contained in DW_AT_GNU_call_site_value. */
96408a79 11755
24c5c679 11756 loc = dwarf2_attr (child_die, DW_AT_location, cu);
1788b2d3 11757 origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
7771576e 11758 if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
1788b2d3
JK
11759 {
11760 sect_offset offset;
11761
11762 parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
11763 offset = dwarf2_get_ref_die_offset (origin);
d76b7dbc
JK
11764 if (!offset_in_cu_p (&cu->header, offset))
11765 {
11766 /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
11767 binding can be done only inside one CU. Such referenced DIE
11768 therefore cannot be even moved to DW_TAG_partial_unit. */
11769 complaint (&symfile_complaints,
11770 _("DW_AT_abstract_origin offset is not in CU for "
11771 "DW_TAG_GNU_call_site child DIE 0x%x "
11772 "[in module %s]"),
4262abfb 11773 child_die->offset.sect_off, objfile_name (objfile));
d76b7dbc
JK
11774 continue;
11775 }
1788b2d3
JK
11776 parameter->u.param_offset.cu_off = (offset.sect_off
11777 - cu->header.offset.sect_off);
11778 }
11779 else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
96408a79
SA
11780 {
11781 complaint (&symfile_complaints,
11782 _("No DW_FORM_block* DW_AT_location for "
11783 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11784 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11785 continue;
11786 }
24c5c679 11787 else
96408a79 11788 {
24c5c679
JK
11789 parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
11790 (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
11791 if (parameter->u.dwarf_reg != -1)
11792 parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
11793 else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
11794 &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
11795 &parameter->u.fb_offset))
11796 parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
11797 else
11798 {
11799 complaint (&symfile_complaints,
11800 _("Only single DW_OP_reg or DW_OP_fbreg is supported "
11801 "for DW_FORM_block* DW_AT_location is supported for "
11802 "DW_TAG_GNU_call_site child DIE 0x%x "
11803 "[in module %s]"),
4262abfb 11804 child_die->offset.sect_off, objfile_name (objfile));
24c5c679
JK
11805 continue;
11806 }
96408a79
SA
11807 }
11808
11809 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
11810 if (!attr_form_is_block (attr))
11811 {
11812 complaint (&symfile_complaints,
11813 _("No DW_FORM_block* DW_AT_GNU_call_site_value for "
11814 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11815 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11816 continue;
11817 }
11818 parameter->value = DW_BLOCK (attr)->data;
11819 parameter->value_size = DW_BLOCK (attr)->size;
11820
11821 /* Parameters are not pre-cleared by memset above. */
11822 parameter->data_value = NULL;
11823 parameter->data_value_size = 0;
11824 call_site->parameter_count++;
11825
11826 attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
11827 if (attr)
11828 {
11829 if (!attr_form_is_block (attr))
11830 complaint (&symfile_complaints,
11831 _("No DW_FORM_block* DW_AT_GNU_call_site_data_value for "
11832 "DW_TAG_GNU_call_site child DIE 0x%x [in module %s]"),
4262abfb 11833 child_die->offset.sect_off, objfile_name (objfile));
96408a79
SA
11834 else
11835 {
11836 parameter->data_value = DW_BLOCK (attr)->data;
11837 parameter->data_value_size = DW_BLOCK (attr)->size;
11838 }
11839 }
11840 }
11841}
11842
43039443 11843/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
11844 Return 1 if the attributes are present and valid, otherwise, return 0.
11845 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
11846
11847static int
11848dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
11849 CORE_ADDR *high_return, struct dwarf2_cu *cu,
11850 struct partial_symtab *ranges_pst)
43039443
JK
11851{
11852 struct objfile *objfile = cu->objfile;
3e29f34a 11853 struct gdbarch *gdbarch = get_objfile_arch (objfile);
43039443
JK
11854 struct comp_unit_head *cu_header = &cu->header;
11855 bfd *obfd = objfile->obfd;
11856 unsigned int addr_size = cu_header->addr_size;
11857 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
11858 /* Base address selection entry. */
11859 CORE_ADDR base;
11860 int found_base;
11861 unsigned int dummy;
d521ce57 11862 const gdb_byte *buffer;
43039443
JK
11863 CORE_ADDR marker;
11864 int low_set;
11865 CORE_ADDR low = 0;
11866 CORE_ADDR high = 0;
ff013f42 11867 CORE_ADDR baseaddr;
43039443 11868
d00adf39
DE
11869 found_base = cu->base_known;
11870 base = cu->base_address;
43039443 11871
be391dca 11872 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 11873 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
11874 {
11875 complaint (&symfile_complaints,
11876 _("Offset %d out of bounds for DW_AT_ranges attribute"),
11877 offset);
11878 return 0;
11879 }
dce234bc 11880 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443
JK
11881
11882 /* Read in the largest possible address. */
11883 marker = read_address (obfd, buffer, cu, &dummy);
11884 if ((marker & mask) == mask)
11885 {
11886 /* If we found the largest possible address, then
11887 read the base address. */
11888 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11889 buffer += 2 * addr_size;
11890 offset += 2 * addr_size;
11891 found_base = 1;
11892 }
11893
11894 low_set = 0;
11895
e7030f15 11896 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 11897
43039443
JK
11898 while (1)
11899 {
11900 CORE_ADDR range_beginning, range_end;
11901
11902 range_beginning = read_address (obfd, buffer, cu, &dummy);
11903 buffer += addr_size;
11904 range_end = read_address (obfd, buffer, cu, &dummy);
11905 buffer += addr_size;
11906 offset += 2 * addr_size;
11907
11908 /* An end of list marker is a pair of zero addresses. */
11909 if (range_beginning == 0 && range_end == 0)
11910 /* Found the end of list entry. */
11911 break;
11912
11913 /* Each base address selection entry is a pair of 2 values.
11914 The first is the largest possible address, the second is
11915 the base address. Check for a base address here. */
11916 if ((range_beginning & mask) == mask)
11917 {
11918 /* If we found the largest possible address, then
11919 read the base address. */
11920 base = read_address (obfd, buffer + addr_size, cu, &dummy);
11921 found_base = 1;
11922 continue;
11923 }
11924
11925 if (!found_base)
11926 {
11927 /* We have no valid base address for the ranges
11928 data. */
11929 complaint (&symfile_complaints,
11930 _("Invalid .debug_ranges data (no base address)"));
11931 return 0;
11932 }
11933
9277c30c
UW
11934 if (range_beginning > range_end)
11935 {
11936 /* Inverted range entries are invalid. */
11937 complaint (&symfile_complaints,
11938 _("Invalid .debug_ranges data (inverted range)"));
11939 return 0;
11940 }
11941
11942 /* Empty range entries have no effect. */
11943 if (range_beginning == range_end)
11944 continue;
11945
43039443
JK
11946 range_beginning += base;
11947 range_end += base;
11948
01093045
DE
11949 /* A not-uncommon case of bad debug info.
11950 Don't pollute the addrmap with bad data. */
11951 if (range_beginning + baseaddr == 0
11952 && !dwarf2_per_objfile->has_section_at_zero)
11953 {
11954 complaint (&symfile_complaints,
11955 _(".debug_ranges entry has start address of zero"
4262abfb 11956 " [in module %s]"), objfile_name (objfile));
01093045
DE
11957 continue;
11958 }
11959
9277c30c 11960 if (ranges_pst != NULL)
3e29f34a
MR
11961 {
11962 CORE_ADDR lowpc;
11963 CORE_ADDR highpc;
11964
11965 lowpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11966 range_beginning + baseaddr);
11967 highpc = gdbarch_adjust_dwarf2_addr (gdbarch,
11968 range_end + baseaddr);
11969 addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
11970 ranges_pst);
11971 }
ff013f42 11972
43039443
JK
11973 /* FIXME: This is recording everything as a low-high
11974 segment of consecutive addresses. We should have a
11975 data structure for discontiguous block ranges
11976 instead. */
11977 if (! low_set)
11978 {
11979 low = range_beginning;
11980 high = range_end;
11981 low_set = 1;
11982 }
11983 else
11984 {
11985 if (range_beginning < low)
11986 low = range_beginning;
11987 if (range_end > high)
11988 high = range_end;
11989 }
11990 }
11991
11992 if (! low_set)
11993 /* If the first entry is an end-of-list marker, the range
11994 describes an empty scope, i.e. no instructions. */
11995 return 0;
11996
11997 if (low_return)
11998 *low_return = low;
11999 if (high_return)
12000 *high_return = high;
12001 return 1;
12002}
12003
af34e669
DJ
12004/* Get low and high pc attributes from a die. Return 1 if the attributes
12005 are present and valid, otherwise, return 0. Return -1 if the range is
12006 discontinuous, i.e. derived from DW_AT_ranges information. */
380bca97 12007
c906108c 12008static int
af34e669 12009dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
d85a05f0
DJ
12010 CORE_ADDR *highpc, struct dwarf2_cu *cu,
12011 struct partial_symtab *pst)
c906108c
SS
12012{
12013 struct attribute *attr;
91da1414 12014 struct attribute *attr_high;
af34e669
DJ
12015 CORE_ADDR low = 0;
12016 CORE_ADDR high = 0;
12017 int ret = 0;
c906108c 12018
91da1414
MW
12019 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12020 if (attr_high)
af34e669 12021 {
e142c38c 12022 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669 12023 if (attr)
91da1414 12024 {
31aa7e4e
JB
12025 low = attr_value_as_address (attr);
12026 high = attr_value_as_address (attr_high);
12027 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12028 high += low;
91da1414 12029 }
af34e669
DJ
12030 else
12031 /* Found high w/o low attribute. */
12032 return 0;
12033
12034 /* Found consecutive range of addresses. */
12035 ret = 1;
12036 }
c906108c 12037 else
af34e669 12038 {
e142c38c 12039 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
12040 if (attr != NULL)
12041 {
ab435259
DE
12042 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12043 We take advantage of the fact that DW_AT_ranges does not appear
12044 in DW_TAG_compile_unit of DWO files. */
12045 int need_ranges_base = die->tag != DW_TAG_compile_unit;
12046 unsigned int ranges_offset = (DW_UNSND (attr)
12047 + (need_ranges_base
12048 ? cu->ranges_base
12049 : 0));
2e3cf129 12050
af34e669 12051 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 12052 .debug_ranges section. */
2e3cf129 12053 if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
af34e669 12054 return 0;
43039443 12055 /* Found discontinuous range of addresses. */
af34e669
DJ
12056 ret = -1;
12057 }
12058 }
c906108c 12059
9373cf26
JK
12060 /* read_partial_die has also the strict LOW < HIGH requirement. */
12061 if (high <= low)
c906108c
SS
12062 return 0;
12063
12064 /* When using the GNU linker, .gnu.linkonce. sections are used to
12065 eliminate duplicate copies of functions and vtables and such.
12066 The linker will arbitrarily choose one and discard the others.
12067 The AT_*_pc values for such functions refer to local labels in
12068 these sections. If the section from that file was discarded, the
12069 labels are not in the output, so the relocs get a value of 0.
12070 If this is a discarded function, mark the pc bounds as invalid,
12071 so that GDB will ignore it. */
72dca2f5 12072 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
c906108c
SS
12073 return 0;
12074
12075 *lowpc = low;
96408a79
SA
12076 if (highpc)
12077 *highpc = high;
af34e669 12078 return ret;
c906108c
SS
12079}
12080
b084d499
JB
12081/* Assuming that DIE represents a subprogram DIE or a lexical block, get
12082 its low and high PC addresses. Do nothing if these addresses could not
12083 be determined. Otherwise, set LOWPC to the low address if it is smaller,
12084 and HIGHPC to the high address if greater than HIGHPC. */
12085
12086static void
12087dwarf2_get_subprogram_pc_bounds (struct die_info *die,
12088 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12089 struct dwarf2_cu *cu)
12090{
12091 CORE_ADDR low, high;
12092 struct die_info *child = die->child;
12093
d85a05f0 12094 if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL))
b084d499
JB
12095 {
12096 *lowpc = min (*lowpc, low);
12097 *highpc = max (*highpc, high);
12098 }
12099
12100 /* If the language does not allow nested subprograms (either inside
12101 subprograms or lexical blocks), we're done. */
12102 if (cu->language != language_ada)
12103 return;
6e70227d 12104
b084d499
JB
12105 /* Check all the children of the given DIE. If it contains nested
12106 subprograms, then check their pc bounds. Likewise, we need to
12107 check lexical blocks as well, as they may also contain subprogram
12108 definitions. */
12109 while (child && child->tag)
12110 {
12111 if (child->tag == DW_TAG_subprogram
12112 || child->tag == DW_TAG_lexical_block)
12113 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
12114 child = sibling_die (child);
12115 }
12116}
12117
fae299cd
DC
12118/* Get the low and high pc's represented by the scope DIE, and store
12119 them in *LOWPC and *HIGHPC. If the correct values can't be
12120 determined, set *LOWPC to -1 and *HIGHPC to 0. */
12121
12122static void
12123get_scope_pc_bounds (struct die_info *die,
12124 CORE_ADDR *lowpc, CORE_ADDR *highpc,
12125 struct dwarf2_cu *cu)
12126{
12127 CORE_ADDR best_low = (CORE_ADDR) -1;
12128 CORE_ADDR best_high = (CORE_ADDR) 0;
12129 CORE_ADDR current_low, current_high;
12130
d85a05f0 12131 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL))
fae299cd
DC
12132 {
12133 best_low = current_low;
12134 best_high = current_high;
12135 }
12136 else
12137 {
12138 struct die_info *child = die->child;
12139
12140 while (child && child->tag)
12141 {
12142 switch (child->tag) {
12143 case DW_TAG_subprogram:
b084d499 12144 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
12145 break;
12146 case DW_TAG_namespace:
f55ee35c 12147 case DW_TAG_module:
fae299cd
DC
12148 /* FIXME: carlton/2004-01-16: Should we do this for
12149 DW_TAG_class_type/DW_TAG_structure_type, too? I think
12150 that current GCC's always emit the DIEs corresponding
12151 to definitions of methods of classes as children of a
12152 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
12153 the DIEs giving the declarations, which could be
12154 anywhere). But I don't see any reason why the
12155 standards says that they have to be there. */
12156 get_scope_pc_bounds (child, &current_low, &current_high, cu);
12157
12158 if (current_low != ((CORE_ADDR) -1))
12159 {
12160 best_low = min (best_low, current_low);
12161 best_high = max (best_high, current_high);
12162 }
12163 break;
12164 default:
0963b4bd 12165 /* Ignore. */
fae299cd
DC
12166 break;
12167 }
12168
12169 child = sibling_die (child);
12170 }
12171 }
12172
12173 *lowpc = best_low;
12174 *highpc = best_high;
12175}
12176
801e3a5b
JB
12177/* Record the address ranges for BLOCK, offset by BASEADDR, as given
12178 in DIE. */
380bca97 12179
801e3a5b
JB
12180static void
12181dwarf2_record_block_ranges (struct die_info *die, struct block *block,
12182 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
12183{
bb5ed363 12184 struct objfile *objfile = cu->objfile;
3e29f34a 12185 struct gdbarch *gdbarch = get_objfile_arch (objfile);
801e3a5b 12186 struct attribute *attr;
91da1414 12187 struct attribute *attr_high;
801e3a5b 12188
91da1414
MW
12189 attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
12190 if (attr_high)
801e3a5b 12191 {
801e3a5b
JB
12192 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
12193 if (attr)
12194 {
31aa7e4e
JB
12195 CORE_ADDR low = attr_value_as_address (attr);
12196 CORE_ADDR high = attr_value_as_address (attr_high);
12197
12198 if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
12199 high += low;
9a619af0 12200
3e29f34a
MR
12201 low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
12202 high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
12203 record_block_range (block, low, high - 1);
801e3a5b
JB
12204 }
12205 }
12206
12207 attr = dwarf2_attr (die, DW_AT_ranges, cu);
12208 if (attr)
12209 {
bb5ed363 12210 bfd *obfd = objfile->obfd;
ab435259
DE
12211 /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
12212 We take advantage of the fact that DW_AT_ranges does not appear
12213 in DW_TAG_compile_unit of DWO files. */
12214 int need_ranges_base = die->tag != DW_TAG_compile_unit;
801e3a5b
JB
12215
12216 /* The value of the DW_AT_ranges attribute is the offset of the
12217 address range list in the .debug_ranges section. */
ab435259
DE
12218 unsigned long offset = (DW_UNSND (attr)
12219 + (need_ranges_base ? cu->ranges_base : 0));
d62bfeaf 12220 const gdb_byte *buffer;
801e3a5b
JB
12221
12222 /* For some target architectures, but not others, the
12223 read_address function sign-extends the addresses it returns.
12224 To recognize base address selection entries, we need a
12225 mask. */
12226 unsigned int addr_size = cu->header.addr_size;
12227 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
12228
12229 /* The base address, to which the next pair is relative. Note
12230 that this 'base' is a DWARF concept: most entries in a range
12231 list are relative, to reduce the number of relocs against the
12232 debugging information. This is separate from this function's
12233 'baseaddr' argument, which GDB uses to relocate debugging
12234 information from a shared library based on the address at
12235 which the library was loaded. */
d00adf39
DE
12236 CORE_ADDR base = cu->base_address;
12237 int base_known = cu->base_known;
801e3a5b 12238
d62bfeaf 12239 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
dce234bc 12240 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
12241 {
12242 complaint (&symfile_complaints,
12243 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
12244 offset);
12245 return;
12246 }
d62bfeaf 12247 buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
12248
12249 for (;;)
12250 {
12251 unsigned int bytes_read;
12252 CORE_ADDR start, end;
12253
12254 start = read_address (obfd, buffer, cu, &bytes_read);
12255 buffer += bytes_read;
12256 end = read_address (obfd, buffer, cu, &bytes_read);
12257 buffer += bytes_read;
12258
12259 /* Did we find the end of the range list? */
12260 if (start == 0 && end == 0)
12261 break;
12262
12263 /* Did we find a base address selection entry? */
12264 else if ((start & base_select_mask) == base_select_mask)
12265 {
12266 base = end;
12267 base_known = 1;
12268 }
12269
12270 /* We found an ordinary address range. */
12271 else
12272 {
12273 if (!base_known)
12274 {
12275 complaint (&symfile_complaints,
3e43a32a
MS
12276 _("Invalid .debug_ranges data "
12277 "(no base address)"));
801e3a5b
JB
12278 return;
12279 }
12280
9277c30c
UW
12281 if (start > end)
12282 {
12283 /* Inverted range entries are invalid. */
12284 complaint (&symfile_complaints,
12285 _("Invalid .debug_ranges data "
12286 "(inverted range)"));
12287 return;
12288 }
12289
12290 /* Empty range entries have no effect. */
12291 if (start == end)
12292 continue;
12293
01093045
DE
12294 start += base + baseaddr;
12295 end += base + baseaddr;
12296
12297 /* A not-uncommon case of bad debug info.
12298 Don't pollute the addrmap with bad data. */
12299 if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
12300 {
12301 complaint (&symfile_complaints,
12302 _(".debug_ranges entry has start address of zero"
4262abfb 12303 " [in module %s]"), objfile_name (objfile));
01093045
DE
12304 continue;
12305 }
12306
3e29f34a
MR
12307 start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
12308 end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
01093045 12309 record_block_range (block, start, end - 1);
801e3a5b
JB
12310 }
12311 }
12312 }
12313}
12314
685b1105
JK
12315/* Check whether the producer field indicates either of GCC < 4.6, or the
12316 Intel C/C++ compiler, and cache the result in CU. */
60d5a603 12317
685b1105
JK
12318static void
12319check_producer (struct dwarf2_cu *cu)
60d5a603
JK
12320{
12321 const char *cs;
38360086 12322 int major, minor;
60d5a603
JK
12323
12324 if (cu->producer == NULL)
12325 {
12326 /* For unknown compilers expect their behavior is DWARF version
12327 compliant.
12328
12329 GCC started to support .debug_types sections by -gdwarf-4 since
12330 gcc-4.5.x. As the .debug_types sections are missing DW_AT_producer
12331 for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
12332 combination. gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
12333 interpreted incorrectly by GDB now - GCC PR debug/48229. */
60d5a603 12334 }
b1ffba5a 12335 else if (producer_is_gcc (cu->producer, &major, &minor))
60d5a603 12336 {
38360086
MW
12337 cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
12338 cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
685b1105 12339 }
61012eef 12340 else if (startswith (cu->producer, "Intel(R) C"))
685b1105
JK
12341 cu->producer_is_icc = 1;
12342 else
12343 {
12344 /* For other non-GCC compilers, expect their behavior is DWARF version
12345 compliant. */
60d5a603
JK
12346 }
12347
ba919b58 12348 cu->checked_producer = 1;
685b1105 12349}
ba919b58 12350
685b1105
JK
12351/* Check for GCC PR debug/45124 fix which is not present in any G++ version up
12352 to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
12353 during 4.6.0 experimental. */
12354
12355static int
12356producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
12357{
12358 if (!cu->checked_producer)
12359 check_producer (cu);
12360
12361 return cu->producer_is_gxx_lt_4_6;
60d5a603
JK
12362}
12363
12364/* Return the default accessibility type if it is not overriden by
12365 DW_AT_accessibility. */
12366
12367static enum dwarf_access_attribute
12368dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
12369{
12370 if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
12371 {
12372 /* The default DWARF 2 accessibility for members is public, the default
12373 accessibility for inheritance is private. */
12374
12375 if (die->tag != DW_TAG_inheritance)
12376 return DW_ACCESS_public;
12377 else
12378 return DW_ACCESS_private;
12379 }
12380 else
12381 {
12382 /* DWARF 3+ defines the default accessibility a different way. The same
12383 rules apply now for DW_TAG_inheritance as for the members and it only
12384 depends on the container kind. */
12385
12386 if (die->parent->tag == DW_TAG_class_type)
12387 return DW_ACCESS_private;
12388 else
12389 return DW_ACCESS_public;
12390 }
12391}
12392
74ac6d43
TT
12393/* Look for DW_AT_data_member_location. Set *OFFSET to the byte
12394 offset. If the attribute was not found return 0, otherwise return
12395 1. If it was found but could not properly be handled, set *OFFSET
12396 to 0. */
12397
12398static int
12399handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
12400 LONGEST *offset)
12401{
12402 struct attribute *attr;
12403
12404 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
12405 if (attr != NULL)
12406 {
12407 *offset = 0;
12408
12409 /* Note that we do not check for a section offset first here.
12410 This is because DW_AT_data_member_location is new in DWARF 4,
12411 so if we see it, we can assume that a constant form is really
12412 a constant and not a section offset. */
12413 if (attr_form_is_constant (attr))
12414 *offset = dwarf2_get_attr_constant_value (attr, 0);
12415 else if (attr_form_is_section_offset (attr))
12416 dwarf2_complex_location_expr_complaint ();
12417 else if (attr_form_is_block (attr))
12418 *offset = decode_locdesc (DW_BLOCK (attr), cu);
12419 else
12420 dwarf2_complex_location_expr_complaint ();
12421
12422 return 1;
12423 }
12424
12425 return 0;
12426}
12427
c906108c
SS
12428/* Add an aggregate field to the field list. */
12429
12430static void
107d2387 12431dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73 12432 struct dwarf2_cu *cu)
6e70227d 12433{
e7c27a73 12434 struct objfile *objfile = cu->objfile;
5e2b427d 12435 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
12436 struct nextfield *new_field;
12437 struct attribute *attr;
12438 struct field *fp;
15d034d0 12439 const char *fieldname = "";
c906108c
SS
12440
12441 /* Allocate a new field list entry and link it in. */
12442 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
b8c9b27d 12443 make_cleanup (xfree, new_field);
c906108c 12444 memset (new_field, 0, sizeof (struct nextfield));
7d0ccb61
DJ
12445
12446 if (die->tag == DW_TAG_inheritance)
12447 {
12448 new_field->next = fip->baseclasses;
12449 fip->baseclasses = new_field;
12450 }
12451 else
12452 {
12453 new_field->next = fip->fields;
12454 fip->fields = new_field;
12455 }
c906108c
SS
12456 fip->nfields++;
12457
e142c38c 12458 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
12459 if (attr)
12460 new_field->accessibility = DW_UNSND (attr);
60d5a603
JK
12461 else
12462 new_field->accessibility = dwarf2_default_access_attribute (die, cu);
c906108c
SS
12463 if (new_field->accessibility != DW_ACCESS_public)
12464 fip->non_public_fields = 1;
60d5a603 12465
e142c38c 12466 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
12467 if (attr)
12468 new_field->virtuality = DW_UNSND (attr);
60d5a603
JK
12469 else
12470 new_field->virtuality = DW_VIRTUALITY_none;
c906108c
SS
12471
12472 fp = &new_field->field;
a9a9bd0f 12473
e142c38c 12474 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 12475 {
74ac6d43
TT
12476 LONGEST offset;
12477
a9a9bd0f 12478 /* Data member other than a C++ static data member. */
6e70227d 12479
c906108c 12480 /* Get type of field. */
e7c27a73 12481 fp->type = die_type (die, cu);
c906108c 12482
d6a843b5 12483 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 12484
c906108c 12485 /* Get bit size of field (zero if none). */
e142c38c 12486 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
12487 if (attr)
12488 {
12489 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
12490 }
12491 else
12492 {
12493 FIELD_BITSIZE (*fp) = 0;
12494 }
12495
12496 /* Get bit offset of field. */
74ac6d43
TT
12497 if (handle_data_member_location (die, cu, &offset))
12498 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
e142c38c 12499 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
12500 if (attr)
12501 {
5e2b427d 12502 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
12503 {
12504 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
12505 additional bit offset from the MSB of the containing
12506 anonymous object to the MSB of the field. We don't
12507 have to do anything special since we don't need to
12508 know the size of the anonymous object. */
f41f5e61 12509 SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
c906108c
SS
12510 }
12511 else
12512 {
12513 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
12514 MSB of the anonymous object, subtract off the number of
12515 bits from the MSB of the field to the MSB of the
12516 object, and then subtract off the number of bits of
12517 the field itself. The result is the bit offset of
12518 the LSB of the field. */
c906108c
SS
12519 int anonymous_size;
12520 int bit_offset = DW_UNSND (attr);
12521
e142c38c 12522 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
12523 if (attr)
12524 {
12525 /* The size of the anonymous object containing
12526 the bit field is explicit, so use the
12527 indicated size (in bytes). */
12528 anonymous_size = DW_UNSND (attr);
12529 }
12530 else
12531 {
12532 /* The size of the anonymous object containing
12533 the bit field must be inferred from the type
12534 attribute of the data member containing the
12535 bit field. */
12536 anonymous_size = TYPE_LENGTH (fp->type);
12537 }
f41f5e61
PA
12538 SET_FIELD_BITPOS (*fp,
12539 (FIELD_BITPOS (*fp)
12540 + anonymous_size * bits_per_byte
12541 - bit_offset - FIELD_BITSIZE (*fp)));
c906108c
SS
12542 }
12543 }
12544
12545 /* Get name of field. */
39cbfefa
DJ
12546 fieldname = dwarf2_name (die, cu);
12547 if (fieldname == NULL)
12548 fieldname = "";
d8151005
DJ
12549
12550 /* The name is already allocated along with this objfile, so we don't
12551 need to duplicate it for the type. */
12552 fp->name = fieldname;
c906108c
SS
12553
12554 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 12555 pointer or virtual base class pointer) to private. */
e142c38c 12556 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c 12557 {
d48cc9dd 12558 FIELD_ARTIFICIAL (*fp) = 1;
c906108c
SS
12559 new_field->accessibility = DW_ACCESS_private;
12560 fip->non_public_fields = 1;
12561 }
12562 }
a9a9bd0f 12563 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 12564 {
a9a9bd0f
DC
12565 /* C++ static member. */
12566
12567 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
12568 is a declaration, but all versions of G++ as of this writing
12569 (so through at least 3.2.1) incorrectly generate
12570 DW_TAG_variable tags. */
6e70227d 12571
ff355380 12572 const char *physname;
c906108c 12573
a9a9bd0f 12574 /* Get name of field. */
39cbfefa
DJ
12575 fieldname = dwarf2_name (die, cu);
12576 if (fieldname == NULL)
c906108c
SS
12577 return;
12578
254e6b9e 12579 attr = dwarf2_attr (die, DW_AT_const_value, cu);
3863f96c
DE
12580 if (attr
12581 /* Only create a symbol if this is an external value.
12582 new_symbol checks this and puts the value in the global symbol
12583 table, which we want. If it is not external, new_symbol
12584 will try to put the value in cu->list_in_scope which is wrong. */
12585 && dwarf2_flag_true_p (die, DW_AT_external, cu))
254e6b9e
DE
12586 {
12587 /* A static const member, not much different than an enum as far as
12588 we're concerned, except that we can support more types. */
12589 new_symbol (die, NULL, cu);
12590 }
12591
2df3850c 12592 /* Get physical name. */
ff355380 12593 physname = dwarf2_physname (fieldname, die, cu);
c906108c 12594
d8151005
DJ
12595 /* The name is already allocated along with this objfile, so we don't
12596 need to duplicate it for the type. */
12597 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 12598 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 12599 FIELD_NAME (*fp) = fieldname;
c906108c
SS
12600 }
12601 else if (die->tag == DW_TAG_inheritance)
12602 {
74ac6d43 12603 LONGEST offset;
d4b96c9a 12604
74ac6d43
TT
12605 /* C++ base class field. */
12606 if (handle_data_member_location (die, cu, &offset))
12607 SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
c906108c 12608 FIELD_BITSIZE (*fp) = 0;
e7c27a73 12609 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
12610 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
12611 fip->nbaseclasses++;
12612 }
12613}
12614
98751a41
JK
12615/* Add a typedef defined in the scope of the FIP's class. */
12616
12617static void
12618dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
12619 struct dwarf2_cu *cu)
6e70227d 12620{
98751a41 12621 struct objfile *objfile = cu->objfile;
98751a41
JK
12622 struct typedef_field_list *new_field;
12623 struct attribute *attr;
12624 struct typedef_field *fp;
12625 char *fieldname = "";
12626
12627 /* Allocate a new field list entry and link it in. */
12628 new_field = xzalloc (sizeof (*new_field));
12629 make_cleanup (xfree, new_field);
12630
12631 gdb_assert (die->tag == DW_TAG_typedef);
12632
12633 fp = &new_field->field;
12634
12635 /* Get name of field. */
12636 fp->name = dwarf2_name (die, cu);
12637 if (fp->name == NULL)
12638 return;
12639
12640 fp->type = read_type_die (die, cu);
12641
12642 new_field->next = fip->typedef_field_list;
12643 fip->typedef_field_list = new_field;
12644 fip->typedef_field_list_count++;
12645}
12646
c906108c
SS
12647/* Create the vector of fields, and attach it to the type. */
12648
12649static void
fba45db2 12650dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12651 struct dwarf2_cu *cu)
c906108c
SS
12652{
12653 int nfields = fip->nfields;
12654
12655 /* Record the field count, allocate space for the array of fields,
12656 and create blank accessibility bitfields if necessary. */
12657 TYPE_NFIELDS (type) = nfields;
12658 TYPE_FIELDS (type) = (struct field *)
12659 TYPE_ALLOC (type, sizeof (struct field) * nfields);
12660 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
12661
b4ba55a1 12662 if (fip->non_public_fields && cu->language != language_ada)
c906108c
SS
12663 {
12664 ALLOCATE_CPLUS_STRUCT_TYPE (type);
12665
12666 TYPE_FIELD_PRIVATE_BITS (type) =
12667 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12668 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
12669
12670 TYPE_FIELD_PROTECTED_BITS (type) =
12671 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12672 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
12673
774b6a14
TT
12674 TYPE_FIELD_IGNORE_BITS (type) =
12675 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
12676 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
c906108c
SS
12677 }
12678
12679 /* If the type has baseclasses, allocate and clear a bit vector for
12680 TYPE_FIELD_VIRTUAL_BITS. */
b4ba55a1 12681 if (fip->nbaseclasses && cu->language != language_ada)
c906108c
SS
12682 {
12683 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 12684 unsigned char *pointer;
c906108c
SS
12685
12686 ALLOCATE_CPLUS_STRUCT_TYPE (type);
fe1b8b76
JB
12687 pointer = TYPE_ALLOC (type, num_bytes);
12688 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
12689 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
12690 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
12691 }
12692
3e43a32a
MS
12693 /* Copy the saved-up fields into the field vector. Start from the head of
12694 the list, adding to the tail of the field array, so that they end up in
12695 the same order in the array in which they were added to the list. */
c906108c
SS
12696 while (nfields-- > 0)
12697 {
7d0ccb61
DJ
12698 struct nextfield *fieldp;
12699
12700 if (fip->fields)
12701 {
12702 fieldp = fip->fields;
12703 fip->fields = fieldp->next;
12704 }
12705 else
12706 {
12707 fieldp = fip->baseclasses;
12708 fip->baseclasses = fieldp->next;
12709 }
12710
12711 TYPE_FIELD (type, nfields) = fieldp->field;
12712 switch (fieldp->accessibility)
c906108c 12713 {
c5aa993b 12714 case DW_ACCESS_private:
b4ba55a1
JB
12715 if (cu->language != language_ada)
12716 SET_TYPE_FIELD_PRIVATE (type, nfields);
c5aa993b 12717 break;
c906108c 12718
c5aa993b 12719 case DW_ACCESS_protected:
b4ba55a1
JB
12720 if (cu->language != language_ada)
12721 SET_TYPE_FIELD_PROTECTED (type, nfields);
c5aa993b 12722 break;
c906108c 12723
c5aa993b
JM
12724 case DW_ACCESS_public:
12725 break;
c906108c 12726
c5aa993b
JM
12727 default:
12728 /* Unknown accessibility. Complain and treat it as public. */
12729 {
e2e0b3e5 12730 complaint (&symfile_complaints, _("unsupported accessibility %d"),
7d0ccb61 12731 fieldp->accessibility);
c5aa993b
JM
12732 }
12733 break;
c906108c
SS
12734 }
12735 if (nfields < fip->nbaseclasses)
12736 {
7d0ccb61 12737 switch (fieldp->virtuality)
c906108c 12738 {
c5aa993b
JM
12739 case DW_VIRTUALITY_virtual:
12740 case DW_VIRTUALITY_pure_virtual:
b4ba55a1 12741 if (cu->language == language_ada)
a73c6dcd 12742 error (_("unexpected virtuality in component of Ada type"));
c5aa993b
JM
12743 SET_TYPE_FIELD_VIRTUAL (type, nfields);
12744 break;
c906108c
SS
12745 }
12746 }
c906108c
SS
12747 }
12748}
12749
7d27a96d
TT
12750/* Return true if this member function is a constructor, false
12751 otherwise. */
12752
12753static int
12754dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
12755{
12756 const char *fieldname;
fe978cb0 12757 const char *type_name;
7d27a96d
TT
12758 int len;
12759
12760 if (die->parent == NULL)
12761 return 0;
12762
12763 if (die->parent->tag != DW_TAG_structure_type
12764 && die->parent->tag != DW_TAG_union_type
12765 && die->parent->tag != DW_TAG_class_type)
12766 return 0;
12767
12768 fieldname = dwarf2_name (die, cu);
fe978cb0
PA
12769 type_name = dwarf2_name (die->parent, cu);
12770 if (fieldname == NULL || type_name == NULL)
7d27a96d
TT
12771 return 0;
12772
12773 len = strlen (fieldname);
fe978cb0
PA
12774 return (strncmp (fieldname, type_name, len) == 0
12775 && (type_name[len] == '\0' || type_name[len] == '<'));
7d27a96d
TT
12776}
12777
c906108c
SS
12778/* Add a member function to the proper fieldlist. */
12779
12780static void
107d2387 12781dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 12782 struct type *type, struct dwarf2_cu *cu)
c906108c 12783{
e7c27a73 12784 struct objfile *objfile = cu->objfile;
c906108c
SS
12785 struct attribute *attr;
12786 struct fnfieldlist *flp;
12787 int i;
12788 struct fn_field *fnp;
15d034d0 12789 const char *fieldname;
c906108c 12790 struct nextfnfield *new_fnfield;
f792889a 12791 struct type *this_type;
60d5a603 12792 enum dwarf_access_attribute accessibility;
c906108c 12793
b4ba55a1 12794 if (cu->language == language_ada)
a73c6dcd 12795 error (_("unexpected member function in Ada type"));
b4ba55a1 12796
2df3850c 12797 /* Get name of member function. */
39cbfefa
DJ
12798 fieldname = dwarf2_name (die, cu);
12799 if (fieldname == NULL)
2df3850c 12800 return;
c906108c 12801
c906108c
SS
12802 /* Look up member function name in fieldlist. */
12803 for (i = 0; i < fip->nfnfields; i++)
12804 {
27bfe10e 12805 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
12806 break;
12807 }
12808
12809 /* Create new list element if necessary. */
12810 if (i < fip->nfnfields)
12811 flp = &fip->fnfieldlists[i];
12812 else
12813 {
12814 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
12815 {
12816 fip->fnfieldlists = (struct fnfieldlist *)
12817 xrealloc (fip->fnfieldlists,
12818 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 12819 * sizeof (struct fnfieldlist));
c906108c 12820 if (fip->nfnfields == 0)
c13c43fd 12821 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
12822 }
12823 flp = &fip->fnfieldlists[fip->nfnfields];
12824 flp->name = fieldname;
12825 flp->length = 0;
12826 flp->head = NULL;
3da10d80 12827 i = fip->nfnfields++;
c906108c
SS
12828 }
12829
12830 /* Create a new member function field and chain it to the field list
0963b4bd 12831 entry. */
c906108c 12832 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
b8c9b27d 12833 make_cleanup (xfree, new_fnfield);
c906108c
SS
12834 memset (new_fnfield, 0, sizeof (struct nextfnfield));
12835 new_fnfield->next = flp->head;
12836 flp->head = new_fnfield;
12837 flp->length++;
12838
12839 /* Fill in the member function field info. */
12840 fnp = &new_fnfield->fnfield;
3da10d80
KS
12841
12842 /* Delay processing of the physname until later. */
12843 if (cu->language == language_cplus || cu->language == language_java)
12844 {
12845 add_to_method_list (type, i, flp->length - 1, fieldname,
12846 die, cu);
12847 }
12848 else
12849 {
1d06ead6 12850 const char *physname = dwarf2_physname (fieldname, die, cu);
3da10d80
KS
12851 fnp->physname = physname ? physname : "";
12852 }
12853
c906108c 12854 fnp->type = alloc_type (objfile);
f792889a
DJ
12855 this_type = read_type_die (die, cu);
12856 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 12857 {
f792889a 12858 int nparams = TYPE_NFIELDS (this_type);
c906108c 12859
f792889a 12860 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
12861 of the method itself (TYPE_CODE_METHOD). */
12862 smash_to_method_type (fnp->type, type,
f792889a
DJ
12863 TYPE_TARGET_TYPE (this_type),
12864 TYPE_FIELDS (this_type),
12865 TYPE_NFIELDS (this_type),
12866 TYPE_VARARGS (this_type));
c906108c
SS
12867
12868 /* Handle static member functions.
c5aa993b 12869 Dwarf2 has no clean way to discern C++ static and non-static
0963b4bd
MS
12870 member functions. G++ helps GDB by marking the first
12871 parameter for non-static member functions (which is the this
12872 pointer) as artificial. We obtain this information from
12873 read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 12874 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
12875 fnp->voffset = VOFFSET_STATIC;
12876 }
12877 else
e2e0b3e5 12878 complaint (&symfile_complaints, _("member function type missing for '%s'"),
3da10d80 12879 dwarf2_full_name (fieldname, die, cu));
c906108c
SS
12880
12881 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 12882 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 12883 fnp->fcontext = die_containing_type (die, cu);
c906108c 12884
3e43a32a
MS
12885 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
12886 is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
c906108c
SS
12887
12888 /* Get accessibility. */
e142c38c 12889 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c 12890 if (attr)
60d5a603
JK
12891 accessibility = DW_UNSND (attr);
12892 else
12893 accessibility = dwarf2_default_access_attribute (die, cu);
12894 switch (accessibility)
c906108c 12895 {
60d5a603
JK
12896 case DW_ACCESS_private:
12897 fnp->is_private = 1;
12898 break;
12899 case DW_ACCESS_protected:
12900 fnp->is_protected = 1;
12901 break;
c906108c
SS
12902 }
12903
b02dede2 12904 /* Check for artificial methods. */
e142c38c 12905 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
12906 if (attr && DW_UNSND (attr) != 0)
12907 fnp->is_artificial = 1;
12908
7d27a96d
TT
12909 fnp->is_constructor = dwarf2_is_constructor (die, cu);
12910
0d564a31 12911 /* Get index in virtual function table if it is a virtual member
aec5aa8b
TT
12912 function. For older versions of GCC, this is an offset in the
12913 appropriate virtual table, as specified by DW_AT_containing_type.
12914 For everyone else, it is an expression to be evaluated relative
0d564a31
DJ
12915 to the object address. */
12916
e142c38c 12917 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
aec5aa8b 12918 if (attr)
8e19ed76 12919 {
aec5aa8b 12920 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
8e19ed76 12921 {
aec5aa8b
TT
12922 if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
12923 {
12924 /* Old-style GCC. */
12925 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
12926 }
12927 else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
12928 || (DW_BLOCK (attr)->size > 1
12929 && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
12930 && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
12931 {
12932 struct dwarf_block blk;
12933 int offset;
12934
12935 offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
12936 ? 1 : 2);
12937 blk.size = DW_BLOCK (attr)->size - offset;
12938 blk.data = DW_BLOCK (attr)->data + offset;
12939 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
12940 if ((fnp->voffset % cu->header.addr_size) != 0)
12941 dwarf2_complex_location_expr_complaint ();
12942 else
12943 fnp->voffset /= cu->header.addr_size;
12944 fnp->voffset += 2;
12945 }
12946 else
12947 dwarf2_complex_location_expr_complaint ();
12948
12949 if (!fnp->fcontext)
7e993ebf
KS
12950 {
12951 /* If there is no `this' field and no DW_AT_containing_type,
12952 we cannot actually find a base class context for the
12953 vtable! */
12954 if (TYPE_NFIELDS (this_type) == 0
12955 || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
12956 {
12957 complaint (&symfile_complaints,
12958 _("cannot determine context for virtual member "
12959 "function \"%s\" (offset %d)"),
12960 fieldname, die->offset.sect_off);
12961 }
12962 else
12963 {
12964 fnp->fcontext
12965 = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
12966 }
12967 }
aec5aa8b 12968 }
3690dd37 12969 else if (attr_form_is_section_offset (attr))
8e19ed76 12970 {
4d3c2250 12971 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
12972 }
12973 else
12974 {
4d3c2250
KB
12975 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
12976 fieldname);
8e19ed76 12977 }
0d564a31 12978 }
d48cc9dd
DJ
12979 else
12980 {
12981 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
12982 if (attr && DW_UNSND (attr))
12983 {
12984 /* GCC does this, as of 2008-08-25; PR debug/37237. */
12985 complaint (&symfile_complaints,
3e43a32a
MS
12986 _("Member function \"%s\" (offset %d) is virtual "
12987 "but the vtable offset is not specified"),
b64f50a1 12988 fieldname, die->offset.sect_off);
9655fd1a 12989 ALLOCATE_CPLUS_STRUCT_TYPE (type);
d48cc9dd
DJ
12990 TYPE_CPLUS_DYNAMIC (type) = 1;
12991 }
12992 }
c906108c
SS
12993}
12994
12995/* Create the vector of member function fields, and attach it to the type. */
12996
12997static void
fba45db2 12998dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 12999 struct dwarf2_cu *cu)
c906108c
SS
13000{
13001 struct fnfieldlist *flp;
c906108c
SS
13002 int i;
13003
b4ba55a1 13004 if (cu->language == language_ada)
a73c6dcd 13005 error (_("unexpected member functions in Ada type"));
b4ba55a1 13006
c906108c
SS
13007 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13008 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
13009 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
13010
13011 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
13012 {
13013 struct nextfnfield *nfp = flp->head;
13014 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
13015 int k;
13016
13017 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
13018 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
13019 fn_flp->fn_fields = (struct fn_field *)
13020 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
13021 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 13022 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
13023 }
13024
13025 TYPE_NFN_FIELDS (type) = fip->nfnfields;
c906108c
SS
13026}
13027
1168df01
JB
13028/* Returns non-zero if NAME is the name of a vtable member in CU's
13029 language, zero otherwise. */
13030static int
13031is_vtable_name (const char *name, struct dwarf2_cu *cu)
13032{
13033 static const char vptr[] = "_vptr";
987504bb 13034 static const char vtable[] = "vtable";
1168df01 13035
987504bb
JJ
13036 /* Look for the C++ and Java forms of the vtable. */
13037 if ((cu->language == language_java
61012eef
GB
13038 && startswith (name, vtable))
13039 || (startswith (name, vptr)
987504bb 13040 && is_cplus_marker (name[sizeof (vptr) - 1])))
1168df01
JB
13041 return 1;
13042
13043 return 0;
13044}
13045
c0dd20ea 13046/* GCC outputs unnamed structures that are really pointers to member
0b92b5bb
TT
13047 functions, with the ABI-specified layout. If TYPE describes
13048 such a structure, smash it into a member function type.
61049d3b
DJ
13049
13050 GCC shouldn't do this; it should just output pointer to member DIEs.
13051 This is GCC PR debug/28767. */
c0dd20ea 13052
0b92b5bb
TT
13053static void
13054quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
c0dd20ea 13055{
09e2d7c7 13056 struct type *pfn_type, *self_type, *new_type;
c0dd20ea
DJ
13057
13058 /* Check for a structure with no name and two children. */
0b92b5bb
TT
13059 if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
13060 return;
c0dd20ea
DJ
13061
13062 /* Check for __pfn and __delta members. */
0b92b5bb
TT
13063 if (TYPE_FIELD_NAME (type, 0) == NULL
13064 || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
13065 || TYPE_FIELD_NAME (type, 1) == NULL
13066 || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
13067 return;
c0dd20ea
DJ
13068
13069 /* Find the type of the method. */
0b92b5bb 13070 pfn_type = TYPE_FIELD_TYPE (type, 0);
c0dd20ea
DJ
13071 if (pfn_type == NULL
13072 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
13073 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
0b92b5bb 13074 return;
c0dd20ea
DJ
13075
13076 /* Look for the "this" argument. */
13077 pfn_type = TYPE_TARGET_TYPE (pfn_type);
13078 if (TYPE_NFIELDS (pfn_type) == 0
0b92b5bb 13079 /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
c0dd20ea 13080 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
0b92b5bb 13081 return;
c0dd20ea 13082
09e2d7c7 13083 self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
0b92b5bb 13084 new_type = alloc_type (objfile);
09e2d7c7 13085 smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
c0dd20ea
DJ
13086 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
13087 TYPE_VARARGS (pfn_type));
0b92b5bb 13088 smash_to_methodptr_type (type, new_type);
c0dd20ea 13089}
1168df01 13090
685b1105
JK
13091/* Return non-zero if the CU's PRODUCER string matches the Intel C/C++ compiler
13092 (icc). */
13093
13094static int
13095producer_is_icc (struct dwarf2_cu *cu)
13096{
13097 if (!cu->checked_producer)
13098 check_producer (cu);
13099
13100 return cu->producer_is_icc;
13101}
13102
c906108c 13103/* Called when we find the DIE that starts a structure or union scope
c767944b
DJ
13104 (definition) to create a type for the structure or union. Fill in
13105 the type's name and general properties; the members will not be
83655187
DE
13106 processed until process_structure_scope. A symbol table entry for
13107 the type will also not be done until process_structure_scope (assuming
13108 the type has a name).
c906108c 13109
c767944b
DJ
13110 NOTE: we need to call these functions regardless of whether or not the
13111 DIE has a DW_AT_name attribute, since it might be an anonymous
c906108c 13112 structure or union. This gets the type entered into our set of
83655187 13113 user defined types. */
c906108c 13114
f792889a 13115static struct type *
134d01f1 13116read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13117{
e7c27a73 13118 struct objfile *objfile = cu->objfile;
c906108c
SS
13119 struct type *type;
13120 struct attribute *attr;
15d034d0 13121 const char *name;
c906108c 13122
348e048f
DE
13123 /* If the definition of this type lives in .debug_types, read that type.
13124 Don't follow DW_AT_specification though, that will take us back up
13125 the chain and we want to go down. */
45e58e77 13126 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13127 if (attr)
13128 {
ac9ec31b 13129 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13130
ac9ec31b 13131 /* The type's CU may not be the same as CU.
02142a6c 13132 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13133 return set_die_type (die, type, cu);
13134 }
13135
c0dd20ea 13136 type = alloc_type (objfile);
c906108c 13137 INIT_CPLUS_SPECIFIC (type);
93311388 13138
39cbfefa
DJ
13139 name = dwarf2_name (die, cu);
13140 if (name != NULL)
c906108c 13141 {
987504bb
JJ
13142 if (cu->language == language_cplus
13143 || cu->language == language_java)
63d06c5c 13144 {
15d034d0 13145 const char *full_name = dwarf2_full_name (name, die, cu);
3da10d80
KS
13146
13147 /* dwarf2_full_name might have already finished building the DIE's
13148 type. If so, there is no need to continue. */
13149 if (get_die_type (die, cu) != NULL)
13150 return get_die_type (die, cu);
13151
13152 TYPE_TAG_NAME (type) = full_name;
94af9270
KS
13153 if (die->tag == DW_TAG_structure_type
13154 || die->tag == DW_TAG_class_type)
13155 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c
DC
13156 }
13157 else
13158 {
d8151005
DJ
13159 /* The name is already allocated along with this objfile, so
13160 we don't need to duplicate it for the type. */
7d455152 13161 TYPE_TAG_NAME (type) = name;
94af9270
KS
13162 if (die->tag == DW_TAG_class_type)
13163 TYPE_NAME (type) = TYPE_TAG_NAME (type);
63d06c5c 13164 }
c906108c
SS
13165 }
13166
13167 if (die->tag == DW_TAG_structure_type)
13168 {
13169 TYPE_CODE (type) = TYPE_CODE_STRUCT;
13170 }
13171 else if (die->tag == DW_TAG_union_type)
13172 {
13173 TYPE_CODE (type) = TYPE_CODE_UNION;
13174 }
13175 else
13176 {
4753d33b 13177 TYPE_CODE (type) = TYPE_CODE_STRUCT;
c906108c
SS
13178 }
13179
0cc2414c
TT
13180 if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
13181 TYPE_DECLARED_CLASS (type) = 1;
13182
e142c38c 13183 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13184 if (attr)
13185 {
13186 TYPE_LENGTH (type) = DW_UNSND (attr);
13187 }
13188 else
13189 {
13190 TYPE_LENGTH (type) = 0;
13191 }
13192
422b1cb0 13193 if (producer_is_icc (cu) && (TYPE_LENGTH (type) == 0))
685b1105
JK
13194 {
13195 /* ICC does not output the required DW_AT_declaration
13196 on incomplete types, but gives them a size of zero. */
422b1cb0 13197 TYPE_STUB (type) = 1;
685b1105
JK
13198 }
13199 else
13200 TYPE_STUB_SUPPORTED (type) = 1;
13201
dc718098 13202 if (die_is_declaration (die, cu))
876cecd0 13203 TYPE_STUB (type) = 1;
a6c727b2
DJ
13204 else if (attr == NULL && die->child == NULL
13205 && producer_is_realview (cu->producer))
13206 /* RealView does not output the required DW_AT_declaration
13207 on incomplete types. */
13208 TYPE_STUB (type) = 1;
dc718098 13209
c906108c
SS
13210 /* We need to add the type field to the die immediately so we don't
13211 infinitely recurse when dealing with pointers to the structure
0963b4bd 13212 type within the structure itself. */
1c379e20 13213 set_die_type (die, type, cu);
c906108c 13214
7e314c57
JK
13215 /* set_die_type should be already done. */
13216 set_descriptive_type (type, die, cu);
13217
c767944b
DJ
13218 return type;
13219}
13220
13221/* Finish creating a structure or union type, including filling in
13222 its members and creating a symbol for it. */
13223
13224static void
13225process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
13226{
13227 struct objfile *objfile = cu->objfile;
ca040673 13228 struct die_info *child_die;
c767944b
DJ
13229 struct type *type;
13230
13231 type = get_die_type (die, cu);
13232 if (type == NULL)
13233 type = read_structure_type (die, cu);
13234
e142c38c 13235 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
13236 {
13237 struct field_info fi;
34eaf542 13238 VEC (symbolp) *template_args = NULL;
c767944b 13239 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c
SS
13240
13241 memset (&fi, 0, sizeof (struct field_info));
13242
639d11d3 13243 child_die = die->child;
c906108c
SS
13244
13245 while (child_die && child_die->tag)
13246 {
a9a9bd0f
DC
13247 if (child_die->tag == DW_TAG_member
13248 || child_die->tag == DW_TAG_variable)
c906108c 13249 {
a9a9bd0f
DC
13250 /* NOTE: carlton/2002-11-05: A C++ static data member
13251 should be a DW_TAG_member that is a declaration, but
13252 all versions of G++ as of this writing (so through at
13253 least 3.2.1) incorrectly generate DW_TAG_variable
13254 tags for them instead. */
e7c27a73 13255 dwarf2_add_field (&fi, child_die, cu);
c906108c 13256 }
8713b1b1 13257 else if (child_die->tag == DW_TAG_subprogram)
c906108c 13258 {
0963b4bd 13259 /* C++ member function. */
e7c27a73 13260 dwarf2_add_member_fn (&fi, child_die, type, cu);
c906108c
SS
13261 }
13262 else if (child_die->tag == DW_TAG_inheritance)
13263 {
13264 /* C++ base class field. */
e7c27a73 13265 dwarf2_add_field (&fi, child_die, cu);
c906108c 13266 }
98751a41
JK
13267 else if (child_die->tag == DW_TAG_typedef)
13268 dwarf2_add_typedef (&fi, child_die, cu);
34eaf542
TT
13269 else if (child_die->tag == DW_TAG_template_type_param
13270 || child_die->tag == DW_TAG_template_value_param)
13271 {
13272 struct symbol *arg = new_symbol (child_die, NULL, cu);
13273
f1078f66
DJ
13274 if (arg != NULL)
13275 VEC_safe_push (symbolp, template_args, arg);
34eaf542
TT
13276 }
13277
c906108c
SS
13278 child_die = sibling_die (child_die);
13279 }
13280
34eaf542
TT
13281 /* Attach template arguments to type. */
13282 if (! VEC_empty (symbolp, template_args))
13283 {
13284 ALLOCATE_CPLUS_STRUCT_TYPE (type);
13285 TYPE_N_TEMPLATE_ARGUMENTS (type)
13286 = VEC_length (symbolp, template_args);
13287 TYPE_TEMPLATE_ARGUMENTS (type)
13288 = obstack_alloc (&objfile->objfile_obstack,
13289 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13290 * sizeof (struct symbol *)));
13291 memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
13292 VEC_address (symbolp, template_args),
13293 (TYPE_N_TEMPLATE_ARGUMENTS (type)
13294 * sizeof (struct symbol *)));
13295 VEC_free (symbolp, template_args);
13296 }
13297
c906108c
SS
13298 /* Attach fields and member functions to the type. */
13299 if (fi.nfields)
e7c27a73 13300 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
13301 if (fi.nfnfields)
13302 {
e7c27a73 13303 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 13304
c5aa993b 13305 /* Get the type which refers to the base class (possibly this
c906108c 13306 class itself) which contains the vtable pointer for the current
0d564a31
DJ
13307 class from the DW_AT_containing_type attribute. This use of
13308 DW_AT_containing_type is a GNU extension. */
c906108c 13309
e142c38c 13310 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 13311 {
e7c27a73 13312 struct type *t = die_containing_type (die, cu);
c906108c 13313
ae6ae975 13314 set_type_vptr_basetype (type, t);
c906108c
SS
13315 if (type == t)
13316 {
c906108c
SS
13317 int i;
13318
13319 /* Our own class provides vtbl ptr. */
13320 for (i = TYPE_NFIELDS (t) - 1;
13321 i >= TYPE_N_BASECLASSES (t);
13322 --i)
13323 {
0d5cff50 13324 const char *fieldname = TYPE_FIELD_NAME (t, i);
c906108c 13325
1168df01 13326 if (is_vtable_name (fieldname, cu))
c906108c 13327 {
ae6ae975 13328 set_type_vptr_fieldno (type, i);
c906108c
SS
13329 break;
13330 }
13331 }
13332
13333 /* Complain if virtual function table field not found. */
13334 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 13335 complaint (&symfile_complaints,
3e43a32a
MS
13336 _("virtual function table pointer "
13337 "not found when defining class '%s'"),
4d3c2250
KB
13338 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
13339 "");
c906108c
SS
13340 }
13341 else
13342 {
ae6ae975 13343 set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
c906108c
SS
13344 }
13345 }
f6235d4c 13346 else if (cu->producer
61012eef 13347 && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
f6235d4c
EZ
13348 {
13349 /* The IBM XLC compiler does not provide direct indication
13350 of the containing type, but the vtable pointer is
13351 always named __vfp. */
13352
13353 int i;
13354
13355 for (i = TYPE_NFIELDS (type) - 1;
13356 i >= TYPE_N_BASECLASSES (type);
13357 --i)
13358 {
13359 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
13360 {
ae6ae975
DE
13361 set_type_vptr_fieldno (type, i);
13362 set_type_vptr_basetype (type, type);
f6235d4c
EZ
13363 break;
13364 }
13365 }
13366 }
c906108c 13367 }
98751a41
JK
13368
13369 /* Copy fi.typedef_field_list linked list elements content into the
13370 allocated array TYPE_TYPEDEF_FIELD_ARRAY (type). */
13371 if (fi.typedef_field_list)
13372 {
13373 int i = fi.typedef_field_list_count;
13374
a0d7a4ff 13375 ALLOCATE_CPLUS_STRUCT_TYPE (type);
98751a41
JK
13376 TYPE_TYPEDEF_FIELD_ARRAY (type)
13377 = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
13378 TYPE_TYPEDEF_FIELD_COUNT (type) = i;
13379
13380 /* Reverse the list order to keep the debug info elements order. */
13381 while (--i >= 0)
13382 {
13383 struct typedef_field *dest, *src;
6e70227d 13384
98751a41
JK
13385 dest = &TYPE_TYPEDEF_FIELD (type, i);
13386 src = &fi.typedef_field_list->field;
13387 fi.typedef_field_list = fi.typedef_field_list->next;
13388 *dest = *src;
13389 }
13390 }
c767944b
DJ
13391
13392 do_cleanups (back_to);
eb2a6f42
TT
13393
13394 if (HAVE_CPLUS_STRUCT (type))
13395 TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java;
c906108c 13396 }
63d06c5c 13397
bb5ed363 13398 quirk_gcc_member_function_pointer (type, objfile);
0b92b5bb 13399
90aeadfc
DC
13400 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
13401 snapshots) has been known to create a die giving a declaration
13402 for a class that has, as a child, a die giving a definition for a
13403 nested class. So we have to process our children even if the
13404 current die is a declaration. Normally, of course, a declaration
13405 won't have any children at all. */
134d01f1 13406
ca040673
DE
13407 child_die = die->child;
13408
90aeadfc
DC
13409 while (child_die != NULL && child_die->tag)
13410 {
13411 if (child_die->tag == DW_TAG_member
13412 || child_die->tag == DW_TAG_variable
34eaf542
TT
13413 || child_die->tag == DW_TAG_inheritance
13414 || child_die->tag == DW_TAG_template_value_param
13415 || child_die->tag == DW_TAG_template_type_param)
134d01f1 13416 {
90aeadfc 13417 /* Do nothing. */
134d01f1 13418 }
90aeadfc
DC
13419 else
13420 process_die (child_die, cu);
134d01f1 13421
90aeadfc 13422 child_die = sibling_die (child_die);
134d01f1
DJ
13423 }
13424
fa4028e9
JB
13425 /* Do not consider external references. According to the DWARF standard,
13426 these DIEs are identified by the fact that they have no byte_size
13427 attribute, and a declaration attribute. */
13428 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
13429 || !die_is_declaration (die, cu))
c767944b 13430 new_symbol (die, type, cu);
134d01f1
DJ
13431}
13432
55426c9d
JB
13433/* Assuming DIE is an enumeration type, and TYPE is its associated type,
13434 update TYPE using some information only available in DIE's children. */
13435
13436static void
13437update_enumeration_type_from_children (struct die_info *die,
13438 struct type *type,
13439 struct dwarf2_cu *cu)
13440{
13441 struct obstack obstack;
60f7655a 13442 struct die_info *child_die;
55426c9d
JB
13443 int unsigned_enum = 1;
13444 int flag_enum = 1;
13445 ULONGEST mask = 0;
13446 struct cleanup *old_chain;
13447
13448 obstack_init (&obstack);
13449 old_chain = make_cleanup_obstack_free (&obstack);
13450
60f7655a
DE
13451 for (child_die = die->child;
13452 child_die != NULL && child_die->tag;
13453 child_die = sibling_die (child_die))
55426c9d
JB
13454 {
13455 struct attribute *attr;
13456 LONGEST value;
13457 const gdb_byte *bytes;
13458 struct dwarf2_locexpr_baton *baton;
13459 const char *name;
60f7655a 13460
55426c9d
JB
13461 if (child_die->tag != DW_TAG_enumerator)
13462 continue;
13463
13464 attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
13465 if (attr == NULL)
13466 continue;
13467
13468 name = dwarf2_name (child_die, cu);
13469 if (name == NULL)
13470 name = "<anonymous enumerator>";
13471
13472 dwarf2_const_value_attr (attr, type, name, &obstack, cu,
13473 &value, &bytes, &baton);
13474 if (value < 0)
13475 {
13476 unsigned_enum = 0;
13477 flag_enum = 0;
13478 }
13479 else if ((mask & value) != 0)
13480 flag_enum = 0;
13481 else
13482 mask |= value;
13483
13484 /* If we already know that the enum type is neither unsigned, nor
13485 a flag type, no need to look at the rest of the enumerates. */
13486 if (!unsigned_enum && !flag_enum)
13487 break;
55426c9d
JB
13488 }
13489
13490 if (unsigned_enum)
13491 TYPE_UNSIGNED (type) = 1;
13492 if (flag_enum)
13493 TYPE_FLAG_ENUM (type) = 1;
13494
13495 do_cleanups (old_chain);
13496}
13497
134d01f1
DJ
13498/* Given a DW_AT_enumeration_type die, set its type. We do not
13499 complete the type's fields yet, or create any symbols. */
c906108c 13500
f792889a 13501static struct type *
134d01f1 13502read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13503{
e7c27a73 13504 struct objfile *objfile = cu->objfile;
c906108c 13505 struct type *type;
c906108c 13506 struct attribute *attr;
0114d602 13507 const char *name;
134d01f1 13508
348e048f
DE
13509 /* If the definition of this type lives in .debug_types, read that type.
13510 Don't follow DW_AT_specification though, that will take us back up
13511 the chain and we want to go down. */
45e58e77 13512 attr = dwarf2_attr_no_follow (die, DW_AT_signature);
348e048f
DE
13513 if (attr)
13514 {
ac9ec31b 13515 type = get_DW_AT_signature_type (die, attr, cu);
9dc481d3 13516
ac9ec31b 13517 /* The type's CU may not be the same as CU.
02142a6c 13518 Ensure TYPE is recorded with CU in die_type_hash. */
348e048f
DE
13519 return set_die_type (die, type, cu);
13520 }
13521
c906108c
SS
13522 type = alloc_type (objfile);
13523
13524 TYPE_CODE (type) = TYPE_CODE_ENUM;
94af9270 13525 name = dwarf2_full_name (NULL, die, cu);
39cbfefa 13526 if (name != NULL)
7d455152 13527 TYPE_TAG_NAME (type) = name;
c906108c 13528
0626fc76
TT
13529 attr = dwarf2_attr (die, DW_AT_type, cu);
13530 if (attr != NULL)
13531 {
13532 struct type *underlying_type = die_type (die, cu);
13533
13534 TYPE_TARGET_TYPE (type) = underlying_type;
13535 }
13536
e142c38c 13537 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
13538 if (attr)
13539 {
13540 TYPE_LENGTH (type) = DW_UNSND (attr);
13541 }
13542 else
13543 {
13544 TYPE_LENGTH (type) = 0;
13545 }
13546
137033e9
JB
13547 /* The enumeration DIE can be incomplete. In Ada, any type can be
13548 declared as private in the package spec, and then defined only
13549 inside the package body. Such types are known as Taft Amendment
13550 Types. When another package uses such a type, an incomplete DIE
13551 may be generated by the compiler. */
02eb380e 13552 if (die_is_declaration (die, cu))
876cecd0 13553 TYPE_STUB (type) = 1;
02eb380e 13554
0626fc76
TT
13555 /* Finish the creation of this type by using the enum's children.
13556 We must call this even when the underlying type has been provided
13557 so that we can determine if we're looking at a "flag" enum. */
55426c9d
JB
13558 update_enumeration_type_from_children (die, type, cu);
13559
0626fc76
TT
13560 /* If this type has an underlying type that is not a stub, then we
13561 may use its attributes. We always use the "unsigned" attribute
13562 in this situation, because ordinarily we guess whether the type
13563 is unsigned -- but the guess can be wrong and the underlying type
13564 can tell us the reality. However, we defer to a local size
13565 attribute if one exists, because this lets the compiler override
13566 the underlying type if needed. */
13567 if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
13568 {
13569 TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
13570 if (TYPE_LENGTH (type) == 0)
13571 TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
13572 }
13573
3d567982
TT
13574 TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
13575
f792889a 13576 return set_die_type (die, type, cu);
134d01f1
DJ
13577}
13578
13579/* Given a pointer to a die which begins an enumeration, process all
13580 the dies that define the members of the enumeration, and create the
13581 symbol for the enumeration type.
13582
13583 NOTE: We reverse the order of the element list. */
13584
13585static void
13586process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
13587{
f792889a 13588 struct type *this_type;
134d01f1 13589
f792889a
DJ
13590 this_type = get_die_type (die, cu);
13591 if (this_type == NULL)
13592 this_type = read_enumeration_type (die, cu);
9dc481d3 13593
639d11d3 13594 if (die->child != NULL)
c906108c 13595 {
9dc481d3
DE
13596 struct die_info *child_die;
13597 struct symbol *sym;
13598 struct field *fields = NULL;
13599 int num_fields = 0;
15d034d0 13600 const char *name;
9dc481d3 13601
639d11d3 13602 child_die = die->child;
c906108c
SS
13603 while (child_die && child_die->tag)
13604 {
13605 if (child_die->tag != DW_TAG_enumerator)
13606 {
e7c27a73 13607 process_die (child_die, cu);
c906108c
SS
13608 }
13609 else
13610 {
39cbfefa
DJ
13611 name = dwarf2_name (child_die, cu);
13612 if (name)
c906108c 13613 {
f792889a 13614 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
13615
13616 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
13617 {
13618 fields = (struct field *)
13619 xrealloc (fields,
13620 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 13621 * sizeof (struct field));
c906108c
SS
13622 }
13623
3567439c 13624 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 13625 FIELD_TYPE (fields[num_fields]) = NULL;
14e75d8e 13626 SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
13627 FIELD_BITSIZE (fields[num_fields]) = 0;
13628
13629 num_fields++;
13630 }
13631 }
13632
13633 child_die = sibling_die (child_die);
13634 }
13635
13636 if (num_fields)
13637 {
f792889a
DJ
13638 TYPE_NFIELDS (this_type) = num_fields;
13639 TYPE_FIELDS (this_type) = (struct field *)
13640 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
13641 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 13642 sizeof (struct field) * num_fields);
b8c9b27d 13643 xfree (fields);
c906108c 13644 }
c906108c 13645 }
134d01f1 13646
6c83ed52
TT
13647 /* If we are reading an enum from a .debug_types unit, and the enum
13648 is a declaration, and the enum is not the signatured type in the
13649 unit, then we do not want to add a symbol for it. Adding a
13650 symbol would in some cases obscure the true definition of the
13651 enum, giving users an incomplete type when the definition is
13652 actually available. Note that we do not want to do this for all
13653 enums which are just declarations, because C++0x allows forward
13654 enum declarations. */
3019eac3 13655 if (cu->per_cu->is_debug_types
6c83ed52
TT
13656 && die_is_declaration (die, cu))
13657 {
52dc124a 13658 struct signatured_type *sig_type;
6c83ed52 13659
c0f78cd4 13660 sig_type = (struct signatured_type *) cu->per_cu;
3019eac3
DE
13661 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
13662 if (sig_type->type_offset_in_section.sect_off != die->offset.sect_off)
6c83ed52
TT
13663 return;
13664 }
13665
f792889a 13666 new_symbol (die, this_type, cu);
c906108c
SS
13667}
13668
13669/* Extract all information from a DW_TAG_array_type DIE and put it in
13670 the DIE's type field. For now, this only handles one dimensional
13671 arrays. */
13672
f792889a 13673static struct type *
e7c27a73 13674read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13675{
e7c27a73 13676 struct objfile *objfile = cu->objfile;
c906108c 13677 struct die_info *child_die;
7e314c57 13678 struct type *type;
c906108c
SS
13679 struct type *element_type, *range_type, *index_type;
13680 struct type **range_types = NULL;
13681 struct attribute *attr;
13682 int ndim = 0;
13683 struct cleanup *back_to;
15d034d0 13684 const char *name;
dc53a7ad 13685 unsigned int bit_stride = 0;
c906108c 13686
e7c27a73 13687 element_type = die_type (die, cu);
c906108c 13688
7e314c57
JK
13689 /* The die_type call above may have already set the type for this DIE. */
13690 type = get_die_type (die, cu);
13691 if (type)
13692 return type;
13693
dc53a7ad
JB
13694 attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
13695 if (attr != NULL)
13696 bit_stride = DW_UNSND (attr) * 8;
13697
13698 attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
13699 if (attr != NULL)
13700 bit_stride = DW_UNSND (attr);
13701
c906108c
SS
13702 /* Irix 6.2 native cc creates array types without children for
13703 arrays with unspecified length. */
639d11d3 13704 if (die->child == NULL)
c906108c 13705 {
46bf5051 13706 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 13707 range_type = create_static_range_type (NULL, index_type, 0, -1);
dc53a7ad
JB
13708 type = create_array_type_with_stride (NULL, element_type, range_type,
13709 bit_stride);
f792889a 13710 return set_die_type (die, type, cu);
c906108c
SS
13711 }
13712
13713 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 13714 child_die = die->child;
c906108c
SS
13715 while (child_die && child_die->tag)
13716 {
13717 if (child_die->tag == DW_TAG_subrange_type)
13718 {
f792889a 13719 struct type *child_type = read_type_die (child_die, cu);
9a619af0 13720
f792889a 13721 if (child_type != NULL)
a02abb62 13722 {
0963b4bd
MS
13723 /* The range type was succesfully read. Save it for the
13724 array type creation. */
a02abb62
JB
13725 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
13726 {
13727 range_types = (struct type **)
13728 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
13729 * sizeof (struct type *));
13730 if (ndim == 0)
13731 make_cleanup (free_current_contents, &range_types);
13732 }
f792889a 13733 range_types[ndim++] = child_type;
a02abb62 13734 }
c906108c
SS
13735 }
13736 child_die = sibling_die (child_die);
13737 }
13738
13739 /* Dwarf2 dimensions are output from left to right, create the
13740 necessary array types in backwards order. */
7ca2d3a3 13741
c906108c 13742 type = element_type;
7ca2d3a3
DL
13743
13744 if (read_array_order (die, cu) == DW_ORD_col_major)
13745 {
13746 int i = 0;
9a619af0 13747
7ca2d3a3 13748 while (i < ndim)
dc53a7ad
JB
13749 type = create_array_type_with_stride (NULL, type, range_types[i++],
13750 bit_stride);
7ca2d3a3
DL
13751 }
13752 else
13753 {
13754 while (ndim-- > 0)
dc53a7ad
JB
13755 type = create_array_type_with_stride (NULL, type, range_types[ndim],
13756 bit_stride);
7ca2d3a3 13757 }
c906108c 13758
f5f8a009
EZ
13759 /* Understand Dwarf2 support for vector types (like they occur on
13760 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
13761 array type. This is not part of the Dwarf2/3 standard yet, but a
13762 custom vendor extension. The main difference between a regular
13763 array and the vector variant is that vectors are passed by value
13764 to functions. */
e142c38c 13765 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 13766 if (attr)
ea37ba09 13767 make_vector_type (type);
f5f8a009 13768
dbc98a8b
KW
13769 /* The DIE may have DW_AT_byte_size set. For example an OpenCL
13770 implementation may choose to implement triple vectors using this
13771 attribute. */
13772 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
13773 if (attr)
13774 {
13775 if (DW_UNSND (attr) >= TYPE_LENGTH (type))
13776 TYPE_LENGTH (type) = DW_UNSND (attr);
13777 else
3e43a32a
MS
13778 complaint (&symfile_complaints,
13779 _("DW_AT_byte_size for array type smaller "
13780 "than the total size of elements"));
dbc98a8b
KW
13781 }
13782
39cbfefa
DJ
13783 name = dwarf2_name (die, cu);
13784 if (name)
13785 TYPE_NAME (type) = name;
6e70227d 13786
0963b4bd 13787 /* Install the type in the die. */
7e314c57
JK
13788 set_die_type (die, type, cu);
13789
13790 /* set_die_type should be already done. */
b4ba55a1
JB
13791 set_descriptive_type (type, die, cu);
13792
c906108c
SS
13793 do_cleanups (back_to);
13794
7e314c57 13795 return type;
c906108c
SS
13796}
13797
7ca2d3a3 13798static enum dwarf_array_dim_ordering
6e70227d 13799read_array_order (struct die_info *die, struct dwarf2_cu *cu)
7ca2d3a3
DL
13800{
13801 struct attribute *attr;
13802
13803 attr = dwarf2_attr (die, DW_AT_ordering, cu);
13804
13805 if (attr) return DW_SND (attr);
13806
0963b4bd
MS
13807 /* GNU F77 is a special case, as at 08/2004 array type info is the
13808 opposite order to the dwarf2 specification, but data is still
13809 laid out as per normal fortran.
7ca2d3a3 13810
0963b4bd
MS
13811 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
13812 version checking. */
7ca2d3a3 13813
905e0470
PM
13814 if (cu->language == language_fortran
13815 && cu->producer && strstr (cu->producer, "GNU F77"))
7ca2d3a3
DL
13816 {
13817 return DW_ORD_row_major;
13818 }
13819
6e70227d 13820 switch (cu->language_defn->la_array_ordering)
7ca2d3a3
DL
13821 {
13822 case array_column_major:
13823 return DW_ORD_col_major;
13824 case array_row_major:
13825 default:
13826 return DW_ORD_row_major;
13827 };
13828}
13829
72019c9c 13830/* Extract all information from a DW_TAG_set_type DIE and put it in
0963b4bd 13831 the DIE's type field. */
72019c9c 13832
f792889a 13833static struct type *
72019c9c
GM
13834read_set_type (struct die_info *die, struct dwarf2_cu *cu)
13835{
7e314c57
JK
13836 struct type *domain_type, *set_type;
13837 struct attribute *attr;
f792889a 13838
7e314c57
JK
13839 domain_type = die_type (die, cu);
13840
13841 /* The die_type call above may have already set the type for this DIE. */
13842 set_type = get_die_type (die, cu);
13843 if (set_type)
13844 return set_type;
13845
13846 set_type = create_set_type (NULL, domain_type);
13847
13848 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
d09039dd
PM
13849 if (attr)
13850 TYPE_LENGTH (set_type) = DW_UNSND (attr);
7e314c57 13851
f792889a 13852 return set_die_type (die, set_type, cu);
72019c9c 13853}
7ca2d3a3 13854
0971de02
TT
13855/* A helper for read_common_block that creates a locexpr baton.
13856 SYM is the symbol which we are marking as computed.
13857 COMMON_DIE is the DIE for the common block.
13858 COMMON_LOC is the location expression attribute for the common
13859 block itself.
13860 MEMBER_LOC is the location expression attribute for the particular
13861 member of the common block that we are processing.
13862 CU is the CU from which the above come. */
13863
13864static void
13865mark_common_block_symbol_computed (struct symbol *sym,
13866 struct die_info *common_die,
13867 struct attribute *common_loc,
13868 struct attribute *member_loc,
13869 struct dwarf2_cu *cu)
13870{
13871 struct objfile *objfile = dwarf2_per_objfile->objfile;
13872 struct dwarf2_locexpr_baton *baton;
13873 gdb_byte *ptr;
13874 unsigned int cu_off;
13875 enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
13876 LONGEST offset = 0;
13877
13878 gdb_assert (common_loc && member_loc);
13879 gdb_assert (attr_form_is_block (common_loc));
13880 gdb_assert (attr_form_is_block (member_loc)
13881 || attr_form_is_constant (member_loc));
13882
13883 baton = obstack_alloc (&objfile->objfile_obstack,
13884 sizeof (struct dwarf2_locexpr_baton));
13885 baton->per_cu = cu->per_cu;
13886 gdb_assert (baton->per_cu);
13887
13888 baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
13889
13890 if (attr_form_is_constant (member_loc))
13891 {
13892 offset = dwarf2_get_attr_constant_value (member_loc, 0);
13893 baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
13894 }
13895 else
13896 baton->size += DW_BLOCK (member_loc)->size;
13897
13898 ptr = obstack_alloc (&objfile->objfile_obstack, baton->size);
13899 baton->data = ptr;
13900
13901 *ptr++ = DW_OP_call4;
13902 cu_off = common_die->offset.sect_off - cu->per_cu->offset.sect_off;
13903 store_unsigned_integer (ptr, 4, byte_order, cu_off);
13904 ptr += 4;
13905
13906 if (attr_form_is_constant (member_loc))
13907 {
13908 *ptr++ = DW_OP_addr;
13909 store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
13910 ptr += cu->header.addr_size;
13911 }
13912 else
13913 {
13914 /* We have to copy the data here, because DW_OP_call4 will only
13915 use a DW_AT_location attribute. */
13916 memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
13917 ptr += DW_BLOCK (member_loc)->size;
13918 }
13919
13920 *ptr++ = DW_OP_plus;
13921 gdb_assert (ptr - baton->data == baton->size);
13922
0971de02 13923 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 13924 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
0971de02
TT
13925}
13926
4357ac6c
TT
13927/* Create appropriate locally-scoped variables for all the
13928 DW_TAG_common_block entries. Also create a struct common_block
13929 listing all such variables for `info common'. COMMON_BLOCK_DOMAIN
13930 is used to sepate the common blocks name namespace from regular
13931 variable names. */
c906108c
SS
13932
13933static void
e7c27a73 13934read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c 13935{
0971de02
TT
13936 struct attribute *attr;
13937
13938 attr = dwarf2_attr (die, DW_AT_location, cu);
13939 if (attr)
13940 {
13941 /* Support the .debug_loc offsets. */
13942 if (attr_form_is_block (attr))
13943 {
13944 /* Ok. */
13945 }
13946 else if (attr_form_is_section_offset (attr))
13947 {
13948 dwarf2_complex_location_expr_complaint ();
13949 attr = NULL;
13950 }
13951 else
13952 {
13953 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
13954 "common block member");
13955 attr = NULL;
13956 }
13957 }
13958
639d11d3 13959 if (die->child != NULL)
c906108c 13960 {
4357ac6c
TT
13961 struct objfile *objfile = cu->objfile;
13962 struct die_info *child_die;
13963 size_t n_entries = 0, size;
13964 struct common_block *common_block;
13965 struct symbol *sym;
74ac6d43 13966
4357ac6c
TT
13967 for (child_die = die->child;
13968 child_die && child_die->tag;
13969 child_die = sibling_die (child_die))
13970 ++n_entries;
13971
13972 size = (sizeof (struct common_block)
13973 + (n_entries - 1) * sizeof (struct symbol *));
13974 common_block = obstack_alloc (&objfile->objfile_obstack, size);
13975 memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
13976 common_block->n_entries = 0;
13977
13978 for (child_die = die->child;
13979 child_die && child_die->tag;
13980 child_die = sibling_die (child_die))
13981 {
13982 /* Create the symbol in the DW_TAG_common_block block in the current
13983 symbol scope. */
e7c27a73 13984 sym = new_symbol (child_die, NULL, cu);
0971de02
TT
13985 if (sym != NULL)
13986 {
13987 struct attribute *member_loc;
13988
13989 common_block->contents[common_block->n_entries++] = sym;
13990
13991 member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
13992 cu);
13993 if (member_loc)
13994 {
13995 /* GDB has handled this for a long time, but it is
13996 not specified by DWARF. It seems to have been
13997 emitted by gfortran at least as recently as:
13998 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057. */
13999 complaint (&symfile_complaints,
14000 _("Variable in common block has "
14001 "DW_AT_data_member_location "
14002 "- DIE at 0x%x [in module %s]"),
4262abfb
JK
14003 child_die->offset.sect_off,
14004 objfile_name (cu->objfile));
0971de02
TT
14005
14006 if (attr_form_is_section_offset (member_loc))
14007 dwarf2_complex_location_expr_complaint ();
14008 else if (attr_form_is_constant (member_loc)
14009 || attr_form_is_block (member_loc))
14010 {
14011 if (attr)
14012 mark_common_block_symbol_computed (sym, die, attr,
14013 member_loc, cu);
14014 }
14015 else
14016 dwarf2_complex_location_expr_complaint ();
14017 }
14018 }
c906108c 14019 }
4357ac6c
TT
14020
14021 sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
14022 SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
c906108c
SS
14023 }
14024}
14025
0114d602 14026/* Create a type for a C++ namespace. */
d9fa45fe 14027
0114d602
DJ
14028static struct type *
14029read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 14030{
e7c27a73 14031 struct objfile *objfile = cu->objfile;
0114d602 14032 const char *previous_prefix, *name;
9219021c 14033 int is_anonymous;
0114d602
DJ
14034 struct type *type;
14035
14036 /* For extensions, reuse the type of the original namespace. */
14037 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
14038 {
14039 struct die_info *ext_die;
14040 struct dwarf2_cu *ext_cu = cu;
9a619af0 14041
0114d602
DJ
14042 ext_die = dwarf2_extension (die, &ext_cu);
14043 type = read_type_die (ext_die, ext_cu);
9dc481d3
DE
14044
14045 /* EXT_CU may not be the same as CU.
02142a6c 14046 Ensure TYPE is recorded with CU in die_type_hash. */
0114d602
DJ
14047 return set_die_type (die, type, cu);
14048 }
9219021c 14049
e142c38c 14050 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
14051
14052 /* Now build the name of the current namespace. */
14053
0114d602
DJ
14054 previous_prefix = determine_prefix (die, cu);
14055 if (previous_prefix[0] != '\0')
14056 name = typename_concat (&objfile->objfile_obstack,
f55ee35c 14057 previous_prefix, name, 0, cu);
0114d602
DJ
14058
14059 /* Create the type. */
14060 type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
14061 objfile);
abee88f2 14062 TYPE_NAME (type) = name;
0114d602
DJ
14063 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14064
60531b24 14065 return set_die_type (die, type, cu);
0114d602
DJ
14066}
14067
14068/* Read a C++ namespace. */
14069
14070static void
14071read_namespace (struct die_info *die, struct dwarf2_cu *cu)
14072{
14073 struct objfile *objfile = cu->objfile;
0114d602 14074 int is_anonymous;
9219021c 14075
5c4e30ca
DC
14076 /* Add a symbol associated to this if we haven't seen the namespace
14077 before. Also, add a using directive if it's an anonymous
14078 namespace. */
9219021c 14079
f2f0e013 14080 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
14081 {
14082 struct type *type;
14083
0114d602 14084 type = read_type_die (die, cu);
e7c27a73 14085 new_symbol (die, type, cu);
5c4e30ca 14086
e8e80198 14087 namespace_name (die, &is_anonymous, cu);
5c4e30ca 14088 if (is_anonymous)
0114d602
DJ
14089 {
14090 const char *previous_prefix = determine_prefix (die, cu);
9a619af0 14091
c0cc3a76 14092 cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
12aaed36 14093 NULL, NULL, 0, &objfile->objfile_obstack);
0114d602 14094 }
5c4e30ca 14095 }
9219021c 14096
639d11d3 14097 if (die->child != NULL)
d9fa45fe 14098 {
639d11d3 14099 struct die_info *child_die = die->child;
6e70227d 14100
d9fa45fe
DC
14101 while (child_die && child_die->tag)
14102 {
e7c27a73 14103 process_die (child_die, cu);
d9fa45fe
DC
14104 child_die = sibling_die (child_die);
14105 }
14106 }
38d518c9
EZ
14107}
14108
f55ee35c
JK
14109/* Read a Fortran module as type. This DIE can be only a declaration used for
14110 imported module. Still we need that type as local Fortran "use ... only"
14111 declaration imports depend on the created type in determine_prefix. */
14112
14113static struct type *
14114read_module_type (struct die_info *die, struct dwarf2_cu *cu)
14115{
14116 struct objfile *objfile = cu->objfile;
15d034d0 14117 const char *module_name;
f55ee35c
JK
14118 struct type *type;
14119
14120 module_name = dwarf2_name (die, cu);
14121 if (!module_name)
3e43a32a
MS
14122 complaint (&symfile_complaints,
14123 _("DW_TAG_module has no name, offset 0x%x"),
b64f50a1 14124 die->offset.sect_off);
f55ee35c
JK
14125 type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
14126
14127 /* determine_prefix uses TYPE_TAG_NAME. */
14128 TYPE_TAG_NAME (type) = TYPE_NAME (type);
14129
14130 return set_die_type (die, type, cu);
14131}
14132
5d7cb8df
JK
14133/* Read a Fortran module. */
14134
14135static void
14136read_module (struct die_info *die, struct dwarf2_cu *cu)
14137{
14138 struct die_info *child_die = die->child;
530e8392
KB
14139 struct type *type;
14140
14141 type = read_type_die (die, cu);
14142 new_symbol (die, type, cu);
5d7cb8df 14143
5d7cb8df
JK
14144 while (child_die && child_die->tag)
14145 {
14146 process_die (child_die, cu);
14147 child_die = sibling_die (child_die);
14148 }
14149}
14150
38d518c9
EZ
14151/* Return the name of the namespace represented by DIE. Set
14152 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
14153 namespace. */
14154
14155static const char *
e142c38c 14156namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
14157{
14158 struct die_info *current_die;
14159 const char *name = NULL;
14160
14161 /* Loop through the extensions until we find a name. */
14162
14163 for (current_die = die;
14164 current_die != NULL;
f2f0e013 14165 current_die = dwarf2_extension (die, &cu))
38d518c9 14166 {
96553a0c
DE
14167 /* We don't use dwarf2_name here so that we can detect the absence
14168 of a name -> anonymous namespace. */
14169 struct attribute *attr = dwarf2_attr (die, DW_AT_name, cu);
14170
14171 if (attr != NULL)
14172 name = DW_STRING (attr);
38d518c9
EZ
14173 if (name != NULL)
14174 break;
14175 }
14176
14177 /* Is it an anonymous namespace? */
14178
14179 *is_anonymous = (name == NULL);
14180 if (*is_anonymous)
2b1dbab0 14181 name = CP_ANONYMOUS_NAMESPACE_STR;
38d518c9
EZ
14182
14183 return name;
d9fa45fe
DC
14184}
14185
c906108c
SS
14186/* Extract all information from a DW_TAG_pointer_type DIE and add to
14187 the user defined type vector. */
14188
f792889a 14189static struct type *
e7c27a73 14190read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14191{
5e2b427d 14192 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 14193 struct comp_unit_head *cu_header = &cu->header;
c906108c 14194 struct type *type;
8b2dbe47
KB
14195 struct attribute *attr_byte_size;
14196 struct attribute *attr_address_class;
14197 int byte_size, addr_class;
7e314c57
JK
14198 struct type *target_type;
14199
14200 target_type = die_type (die, cu);
c906108c 14201
7e314c57
JK
14202 /* The die_type call above may have already set the type for this DIE. */
14203 type = get_die_type (die, cu);
14204 if (type)
14205 return type;
14206
14207 type = lookup_pointer_type (target_type);
8b2dbe47 14208
e142c38c 14209 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
14210 if (attr_byte_size)
14211 byte_size = DW_UNSND (attr_byte_size);
c906108c 14212 else
8b2dbe47
KB
14213 byte_size = cu_header->addr_size;
14214
e142c38c 14215 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
14216 if (attr_address_class)
14217 addr_class = DW_UNSND (attr_address_class);
14218 else
14219 addr_class = DW_ADDR_none;
14220
14221 /* If the pointer size or address class is different than the
14222 default, create a type variant marked as such and set the
14223 length accordingly. */
14224 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 14225 {
5e2b427d 14226 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
14227 {
14228 int type_flags;
14229
849957d9 14230 type_flags = gdbarch_address_class_type_flags
5e2b427d 14231 (gdbarch, byte_size, addr_class);
876cecd0
TT
14232 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
14233 == 0);
8b2dbe47
KB
14234 type = make_type_with_address_space (type, type_flags);
14235 }
14236 else if (TYPE_LENGTH (type) != byte_size)
14237 {
3e43a32a
MS
14238 complaint (&symfile_complaints,
14239 _("invalid pointer size %d"), byte_size);
8b2dbe47 14240 }
6e70227d 14241 else
9a619af0
MS
14242 {
14243 /* Should we also complain about unhandled address classes? */
14244 }
c906108c 14245 }
8b2dbe47
KB
14246
14247 TYPE_LENGTH (type) = byte_size;
f792889a 14248 return set_die_type (die, type, cu);
c906108c
SS
14249}
14250
14251/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
14252 the user defined type vector. */
14253
f792889a 14254static struct type *
e7c27a73 14255read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
14256{
14257 struct type *type;
14258 struct type *to_type;
14259 struct type *domain;
14260
e7c27a73
DJ
14261 to_type = die_type (die, cu);
14262 domain = die_containing_type (die, cu);
0d5de010 14263
7e314c57
JK
14264 /* The calls above may have already set the type for this DIE. */
14265 type = get_die_type (die, cu);
14266 if (type)
14267 return type;
14268
0d5de010
DJ
14269 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
14270 type = lookup_methodptr_type (to_type);
7078baeb
TT
14271 else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
14272 {
14273 struct type *new_type = alloc_type (cu->objfile);
14274
14275 smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
14276 TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
14277 TYPE_VARARGS (to_type));
14278 type = lookup_methodptr_type (new_type);
14279 }
0d5de010
DJ
14280 else
14281 type = lookup_memberptr_type (to_type, domain);
c906108c 14282
f792889a 14283 return set_die_type (die, type, cu);
c906108c
SS
14284}
14285
14286/* Extract all information from a DW_TAG_reference_type DIE and add to
14287 the user defined type vector. */
14288
f792889a 14289static struct type *
e7c27a73 14290read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14291{
e7c27a73 14292 struct comp_unit_head *cu_header = &cu->header;
7e314c57 14293 struct type *type, *target_type;
c906108c
SS
14294 struct attribute *attr;
14295
7e314c57
JK
14296 target_type = die_type (die, cu);
14297
14298 /* The die_type call above may have already set the type for this DIE. */
14299 type = get_die_type (die, cu);
14300 if (type)
14301 return type;
14302
14303 type = lookup_reference_type (target_type);
e142c38c 14304 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14305 if (attr)
14306 {
14307 TYPE_LENGTH (type) = DW_UNSND (attr);
14308 }
14309 else
14310 {
107d2387 14311 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 14312 }
f792889a 14313 return set_die_type (die, type, cu);
c906108c
SS
14314}
14315
cf363f18
MW
14316/* Add the given cv-qualifiers to the element type of the array. GCC
14317 outputs DWARF type qualifiers that apply to an array, not the
14318 element type. But GDB relies on the array element type to carry
14319 the cv-qualifiers. This mimics section 6.7.3 of the C99
14320 specification. */
14321
14322static struct type *
14323add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
14324 struct type *base_type, int cnst, int voltl)
14325{
14326 struct type *el_type, *inner_array;
14327
14328 base_type = copy_type (base_type);
14329 inner_array = base_type;
14330
14331 while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
14332 {
14333 TYPE_TARGET_TYPE (inner_array) =
14334 copy_type (TYPE_TARGET_TYPE (inner_array));
14335 inner_array = TYPE_TARGET_TYPE (inner_array);
14336 }
14337
14338 el_type = TYPE_TARGET_TYPE (inner_array);
14339 cnst |= TYPE_CONST (el_type);
14340 voltl |= TYPE_VOLATILE (el_type);
14341 TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
14342
14343 return set_die_type (die, base_type, cu);
14344}
14345
f792889a 14346static struct type *
e7c27a73 14347read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14348{
f792889a 14349 struct type *base_type, *cv_type;
c906108c 14350
e7c27a73 14351 base_type = die_type (die, cu);
7e314c57
JK
14352
14353 /* The die_type call above may have already set the type for this DIE. */
14354 cv_type = get_die_type (die, cu);
14355 if (cv_type)
14356 return cv_type;
14357
2f608a3a
KW
14358 /* In case the const qualifier is applied to an array type, the element type
14359 is so qualified, not the array type (section 6.7.3 of C99). */
14360 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
cf363f18 14361 return add_array_cv_type (die, cu, base_type, 1, 0);
2f608a3a 14362
f792889a
DJ
14363 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
14364 return set_die_type (die, cv_type, cu);
c906108c
SS
14365}
14366
f792889a 14367static struct type *
e7c27a73 14368read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14369{
f792889a 14370 struct type *base_type, *cv_type;
c906108c 14371
e7c27a73 14372 base_type = die_type (die, cu);
7e314c57
JK
14373
14374 /* The die_type call above may have already set the type for this DIE. */
14375 cv_type = get_die_type (die, cu);
14376 if (cv_type)
14377 return cv_type;
14378
cf363f18
MW
14379 /* In case the volatile qualifier is applied to an array type, the
14380 element type is so qualified, not the array type (section 6.7.3
14381 of C99). */
14382 if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
14383 return add_array_cv_type (die, cu, base_type, 0, 1);
14384
f792889a
DJ
14385 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
14386 return set_die_type (die, cv_type, cu);
c906108c
SS
14387}
14388
06d66ee9
TT
14389/* Handle DW_TAG_restrict_type. */
14390
14391static struct type *
14392read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
14393{
14394 struct type *base_type, *cv_type;
14395
14396 base_type = die_type (die, cu);
14397
14398 /* The die_type call above may have already set the type for this DIE. */
14399 cv_type = get_die_type (die, cu);
14400 if (cv_type)
14401 return cv_type;
14402
14403 cv_type = make_restrict_type (base_type);
14404 return set_die_type (die, cv_type, cu);
14405}
14406
a2c2acaf
MW
14407/* Handle DW_TAG_atomic_type. */
14408
14409static struct type *
14410read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
14411{
14412 struct type *base_type, *cv_type;
14413
14414 base_type = die_type (die, cu);
14415
14416 /* The die_type call above may have already set the type for this DIE. */
14417 cv_type = get_die_type (die, cu);
14418 if (cv_type)
14419 return cv_type;
14420
14421 cv_type = make_atomic_type (base_type);
14422 return set_die_type (die, cv_type, cu);
14423}
14424
c906108c
SS
14425/* Extract all information from a DW_TAG_string_type DIE and add to
14426 the user defined type vector. It isn't really a user defined type,
14427 but it behaves like one, with other DIE's using an AT_user_def_type
14428 attribute to reference it. */
14429
f792889a 14430static struct type *
e7c27a73 14431read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14432{
e7c27a73 14433 struct objfile *objfile = cu->objfile;
3b7538c0 14434 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
14435 struct type *type, *range_type, *index_type, *char_type;
14436 struct attribute *attr;
14437 unsigned int length;
14438
e142c38c 14439 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
14440 if (attr)
14441 {
14442 length = DW_UNSND (attr);
14443 }
14444 else
14445 {
0963b4bd 14446 /* Check for the DW_AT_byte_size attribute. */
e142c38c 14447 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
14448 if (attr)
14449 {
14450 length = DW_UNSND (attr);
14451 }
14452 else
14453 {
14454 length = 1;
14455 }
c906108c 14456 }
6ccb9162 14457
46bf5051 14458 index_type = objfile_type (objfile)->builtin_int;
0c9c3474 14459 range_type = create_static_range_type (NULL, index_type, 1, length);
3b7538c0
UW
14460 char_type = language_string_char_type (cu->language_defn, gdbarch);
14461 type = create_string_type (NULL, char_type, range_type);
6ccb9162 14462
f792889a 14463 return set_die_type (die, type, cu);
c906108c
SS
14464}
14465
4d804846
JB
14466/* Assuming that DIE corresponds to a function, returns nonzero
14467 if the function is prototyped. */
14468
14469static int
14470prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
14471{
14472 struct attribute *attr;
14473
14474 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
14475 if (attr && (DW_UNSND (attr) != 0))
14476 return 1;
14477
14478 /* The DWARF standard implies that the DW_AT_prototyped attribute
14479 is only meaninful for C, but the concept also extends to other
14480 languages that allow unprototyped functions (Eg: Objective C).
14481 For all other languages, assume that functions are always
14482 prototyped. */
14483 if (cu->language != language_c
14484 && cu->language != language_objc
14485 && cu->language != language_opencl)
14486 return 1;
14487
14488 /* RealView does not emit DW_AT_prototyped. We can not distinguish
14489 prototyped and unprototyped functions; default to prototyped,
14490 since that is more common in modern code (and RealView warns
14491 about unprototyped functions). */
14492 if (producer_is_realview (cu->producer))
14493 return 1;
14494
14495 return 0;
14496}
14497
c906108c
SS
14498/* Handle DIES due to C code like:
14499
14500 struct foo
c5aa993b
JM
14501 {
14502 int (*funcp)(int a, long l);
14503 int b;
14504 };
c906108c 14505
0963b4bd 14506 ('funcp' generates a DW_TAG_subroutine_type DIE). */
c906108c 14507
f792889a 14508static struct type *
e7c27a73 14509read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14510{
bb5ed363 14511 struct objfile *objfile = cu->objfile;
0963b4bd
MS
14512 struct type *type; /* Type that this function returns. */
14513 struct type *ftype; /* Function that returns above type. */
c906108c
SS
14514 struct attribute *attr;
14515
e7c27a73 14516 type = die_type (die, cu);
7e314c57
JK
14517
14518 /* The die_type call above may have already set the type for this DIE. */
14519 ftype = get_die_type (die, cu);
14520 if (ftype)
14521 return ftype;
14522
0c8b41f1 14523 ftype = lookup_function_type (type);
c906108c 14524
4d804846 14525 if (prototyped_function_p (die, cu))
a6c727b2 14526 TYPE_PROTOTYPED (ftype) = 1;
c906108c 14527
c055b101
CV
14528 /* Store the calling convention in the type if it's available in
14529 the subroutine die. Otherwise set the calling convention to
14530 the default value DW_CC_normal. */
14531 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
54fcddd0
UW
14532 if (attr)
14533 TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
14534 else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
14535 TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
14536 else
14537 TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
76c10ea2 14538
743649fd
MW
14539 /* Record whether the function returns normally to its caller or not
14540 if the DWARF producer set that information. */
14541 attr = dwarf2_attr (die, DW_AT_noreturn, cu);
14542 if (attr && (DW_UNSND (attr) != 0))
14543 TYPE_NO_RETURN (ftype) = 1;
14544
76c10ea2
GM
14545 /* We need to add the subroutine type to the die immediately so
14546 we don't infinitely recurse when dealing with parameters
0963b4bd 14547 declared as the same subroutine type. */
76c10ea2 14548 set_die_type (die, ftype, cu);
6e70227d 14549
639d11d3 14550 if (die->child != NULL)
c906108c 14551 {
bb5ed363 14552 struct type *void_type = objfile_type (objfile)->builtin_void;
c906108c 14553 struct die_info *child_die;
8072405b 14554 int nparams, iparams;
c906108c
SS
14555
14556 /* Count the number of parameters.
14557 FIXME: GDB currently ignores vararg functions, but knows about
14558 vararg member functions. */
8072405b 14559 nparams = 0;
639d11d3 14560 child_die = die->child;
c906108c
SS
14561 while (child_die && child_die->tag)
14562 {
14563 if (child_die->tag == DW_TAG_formal_parameter)
14564 nparams++;
14565 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 14566 TYPE_VARARGS (ftype) = 1;
c906108c
SS
14567 child_die = sibling_die (child_die);
14568 }
14569
14570 /* Allocate storage for parameters and fill them in. */
14571 TYPE_NFIELDS (ftype) = nparams;
14572 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 14573 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 14574
8072405b
JK
14575 /* TYPE_FIELD_TYPE must never be NULL. Pre-fill the array to ensure it
14576 even if we error out during the parameters reading below. */
14577 for (iparams = 0; iparams < nparams; iparams++)
14578 TYPE_FIELD_TYPE (ftype, iparams) = void_type;
14579
14580 iparams = 0;
639d11d3 14581 child_die = die->child;
c906108c
SS
14582 while (child_die && child_die->tag)
14583 {
14584 if (child_die->tag == DW_TAG_formal_parameter)
14585 {
3ce3b1ba
PA
14586 struct type *arg_type;
14587
14588 /* DWARF version 2 has no clean way to discern C++
14589 static and non-static member functions. G++ helps
14590 GDB by marking the first parameter for non-static
14591 member functions (which is the this pointer) as
14592 artificial. We pass this information to
14593 dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
14594
14595 DWARF version 3 added DW_AT_object_pointer, which GCC
14596 4.5 does not yet generate. */
e142c38c 14597 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
14598 if (attr)
14599 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
14600 else
418835cc
KS
14601 {
14602 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
14603
14604 /* GCC/43521: In java, the formal parameter
14605 "this" is sometimes not marked with DW_AT_artificial. */
14606 if (cu->language == language_java)
14607 {
14608 const char *name = dwarf2_name (child_die, cu);
9a619af0 14609
418835cc
KS
14610 if (name && !strcmp (name, "this"))
14611 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
14612 }
14613 }
3ce3b1ba
PA
14614 arg_type = die_type (child_die, cu);
14615
14616 /* RealView does not mark THIS as const, which the testsuite
14617 expects. GCC marks THIS as const in method definitions,
14618 but not in the class specifications (GCC PR 43053). */
14619 if (cu->language == language_cplus && !TYPE_CONST (arg_type)
14620 && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
14621 {
14622 int is_this = 0;
14623 struct dwarf2_cu *arg_cu = cu;
14624 const char *name = dwarf2_name (child_die, cu);
14625
14626 attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
14627 if (attr)
14628 {
14629 /* If the compiler emits this, use it. */
14630 if (follow_die_ref (die, attr, &arg_cu) == child_die)
14631 is_this = 1;
14632 }
14633 else if (name && strcmp (name, "this") == 0)
14634 /* Function definitions will have the argument names. */
14635 is_this = 1;
14636 else if (name == NULL && iparams == 0)
14637 /* Declarations may not have the names, so like
14638 elsewhere in GDB, assume an artificial first
14639 argument is "this". */
14640 is_this = 1;
14641
14642 if (is_this)
14643 arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
14644 arg_type, 0);
14645 }
14646
14647 TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
c906108c
SS
14648 iparams++;
14649 }
14650 child_die = sibling_die (child_die);
14651 }
14652 }
14653
76c10ea2 14654 return ftype;
c906108c
SS
14655}
14656
f792889a 14657static struct type *
e7c27a73 14658read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14659{
e7c27a73 14660 struct objfile *objfile = cu->objfile;
0114d602 14661 const char *name = NULL;
3c8e0968 14662 struct type *this_type, *target_type;
c906108c 14663
94af9270 14664 name = dwarf2_full_name (NULL, die, cu);
f792889a 14665 this_type = init_type (TYPE_CODE_TYPEDEF, 0,
0114d602 14666 TYPE_FLAG_TARGET_STUB, NULL, objfile);
abee88f2 14667 TYPE_NAME (this_type) = name;
f792889a 14668 set_die_type (die, this_type, cu);
3c8e0968
DE
14669 target_type = die_type (die, cu);
14670 if (target_type != this_type)
14671 TYPE_TARGET_TYPE (this_type) = target_type;
14672 else
14673 {
14674 /* Self-referential typedefs are, it seems, not allowed by the DWARF
14675 spec and cause infinite loops in GDB. */
14676 complaint (&symfile_complaints,
14677 _("Self-referential DW_TAG_typedef "
14678 "- DIE at 0x%x [in module %s]"),
4262abfb 14679 die->offset.sect_off, objfile_name (objfile));
3c8e0968
DE
14680 TYPE_TARGET_TYPE (this_type) = NULL;
14681 }
f792889a 14682 return this_type;
c906108c
SS
14683}
14684
14685/* Find a representation of a given base type and install
14686 it in the TYPE field of the die. */
14687
f792889a 14688static struct type *
e7c27a73 14689read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 14690{
e7c27a73 14691 struct objfile *objfile = cu->objfile;
c906108c
SS
14692 struct type *type;
14693 struct attribute *attr;
14694 int encoding = 0, size = 0;
15d034d0 14695 const char *name;
6ccb9162
UW
14696 enum type_code code = TYPE_CODE_INT;
14697 int type_flags = 0;
14698 struct type *target_type = NULL;
c906108c 14699
e142c38c 14700 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
14701 if (attr)
14702 {
14703 encoding = DW_UNSND (attr);
14704 }
e142c38c 14705 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
14706 if (attr)
14707 {
14708 size = DW_UNSND (attr);
14709 }
39cbfefa 14710 name = dwarf2_name (die, cu);
6ccb9162 14711 if (!name)
c906108c 14712 {
6ccb9162
UW
14713 complaint (&symfile_complaints,
14714 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 14715 }
6ccb9162
UW
14716
14717 switch (encoding)
c906108c 14718 {
6ccb9162
UW
14719 case DW_ATE_address:
14720 /* Turn DW_ATE_address into a void * pointer. */
14721 code = TYPE_CODE_PTR;
14722 type_flags |= TYPE_FLAG_UNSIGNED;
14723 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
14724 break;
14725 case DW_ATE_boolean:
14726 code = TYPE_CODE_BOOL;
14727 type_flags |= TYPE_FLAG_UNSIGNED;
14728 break;
14729 case DW_ATE_complex_float:
14730 code = TYPE_CODE_COMPLEX;
14731 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
14732 break;
14733 case DW_ATE_decimal_float:
14734 code = TYPE_CODE_DECFLOAT;
14735 break;
14736 case DW_ATE_float:
14737 code = TYPE_CODE_FLT;
14738 break;
14739 case DW_ATE_signed:
14740 break;
14741 case DW_ATE_unsigned:
14742 type_flags |= TYPE_FLAG_UNSIGNED;
3b2b8fea
TT
14743 if (cu->language == language_fortran
14744 && name
61012eef 14745 && startswith (name, "character("))
3b2b8fea 14746 code = TYPE_CODE_CHAR;
6ccb9162
UW
14747 break;
14748 case DW_ATE_signed_char:
6e70227d 14749 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14750 || cu->language == language_pascal
14751 || cu->language == language_fortran)
6ccb9162
UW
14752 code = TYPE_CODE_CHAR;
14753 break;
14754 case DW_ATE_unsigned_char:
868a0084 14755 if (cu->language == language_ada || cu->language == language_m2
3b2b8fea
TT
14756 || cu->language == language_pascal
14757 || cu->language == language_fortran)
6ccb9162
UW
14758 code = TYPE_CODE_CHAR;
14759 type_flags |= TYPE_FLAG_UNSIGNED;
14760 break;
75079b2b
TT
14761 case DW_ATE_UTF:
14762 /* We just treat this as an integer and then recognize the
14763 type by name elsewhere. */
14764 break;
14765
6ccb9162
UW
14766 default:
14767 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
14768 dwarf_type_encoding_name (encoding));
14769 break;
c906108c 14770 }
6ccb9162 14771
0114d602
DJ
14772 type = init_type (code, size, type_flags, NULL, objfile);
14773 TYPE_NAME (type) = name;
6ccb9162
UW
14774 TYPE_TARGET_TYPE (type) = target_type;
14775
0114d602 14776 if (name && strcmp (name, "char") == 0)
876cecd0 14777 TYPE_NOSIGN (type) = 1;
0114d602 14778
f792889a 14779 return set_die_type (die, type, cu);
c906108c
SS
14780}
14781
80180f79
SA
14782/* Parse dwarf attribute if it's a block, reference or constant and put the
14783 resulting value of the attribute into struct bound_prop.
14784 Returns 1 if ATTR could be resolved into PROP, 0 otherwise. */
14785
14786static int
14787attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
14788 struct dwarf2_cu *cu, struct dynamic_prop *prop)
14789{
14790 struct dwarf2_property_baton *baton;
14791 struct obstack *obstack = &cu->objfile->objfile_obstack;
14792
14793 if (attr == NULL || prop == NULL)
14794 return 0;
14795
14796 if (attr_form_is_block (attr))
14797 {
14798 baton = obstack_alloc (obstack, sizeof (*baton));
14799 baton->referenced_type = NULL;
14800 baton->locexpr.per_cu = cu->per_cu;
14801 baton->locexpr.size = DW_BLOCK (attr)->size;
14802 baton->locexpr.data = DW_BLOCK (attr)->data;
14803 prop->data.baton = baton;
14804 prop->kind = PROP_LOCEXPR;
14805 gdb_assert (prop->data.baton != NULL);
14806 }
14807 else if (attr_form_is_ref (attr))
14808 {
14809 struct dwarf2_cu *target_cu = cu;
14810 struct die_info *target_die;
14811 struct attribute *target_attr;
14812
14813 target_die = follow_die_ref (die, attr, &target_cu);
14814 target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
df25ebbd
JB
14815 if (target_attr == NULL)
14816 target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
14817 target_cu);
80180f79
SA
14818 if (target_attr == NULL)
14819 return 0;
14820
df25ebbd 14821 switch (target_attr->name)
80180f79 14822 {
df25ebbd
JB
14823 case DW_AT_location:
14824 if (attr_form_is_section_offset (target_attr))
14825 {
14826 baton = obstack_alloc (obstack, sizeof (*baton));
14827 baton->referenced_type = die_type (target_die, target_cu);
14828 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
14829 prop->data.baton = baton;
14830 prop->kind = PROP_LOCLIST;
14831 gdb_assert (prop->data.baton != NULL);
14832 }
14833 else if (attr_form_is_block (target_attr))
14834 {
14835 baton = obstack_alloc (obstack, sizeof (*baton));
14836 baton->referenced_type = die_type (target_die, target_cu);
14837 baton->locexpr.per_cu = cu->per_cu;
14838 baton->locexpr.size = DW_BLOCK (target_attr)->size;
14839 baton->locexpr.data = DW_BLOCK (target_attr)->data;
14840 prop->data.baton = baton;
14841 prop->kind = PROP_LOCEXPR;
14842 gdb_assert (prop->data.baton != NULL);
14843 }
14844 else
14845 {
14846 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
14847 "dynamic property");
14848 return 0;
14849 }
14850 break;
14851 case DW_AT_data_member_location:
14852 {
14853 LONGEST offset;
14854
14855 if (!handle_data_member_location (target_die, target_cu,
14856 &offset))
14857 return 0;
14858
14859 baton = obstack_alloc (obstack, sizeof (*baton));
6ad395a7
JB
14860 baton->referenced_type = read_type_die (target_die->parent,
14861 target_cu);
df25ebbd
JB
14862 baton->offset_info.offset = offset;
14863 baton->offset_info.type = die_type (target_die, target_cu);
14864 prop->data.baton = baton;
14865 prop->kind = PROP_ADDR_OFFSET;
14866 break;
14867 }
80180f79
SA
14868 }
14869 }
14870 else if (attr_form_is_constant (attr))
14871 {
14872 prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
14873 prop->kind = PROP_CONST;
14874 }
14875 else
14876 {
14877 dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
14878 dwarf2_name (die, cu));
14879 return 0;
14880 }
14881
14882 return 1;
14883}
14884
a02abb62
JB
14885/* Read the given DW_AT_subrange DIE. */
14886
f792889a 14887static struct type *
a02abb62
JB
14888read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
14889{
4c9ad8c2 14890 struct type *base_type, *orig_base_type;
a02abb62
JB
14891 struct type *range_type;
14892 struct attribute *attr;
729efb13 14893 struct dynamic_prop low, high;
4fae6e18 14894 int low_default_is_valid;
c451ebe5 14895 int high_bound_is_count = 0;
15d034d0 14896 const char *name;
43bbcdc2 14897 LONGEST negative_mask;
e77813c8 14898
4c9ad8c2
TT
14899 orig_base_type = die_type (die, cu);
14900 /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
14901 whereas the real type might be. So, we use ORIG_BASE_TYPE when
14902 creating the range type, but we use the result of check_typedef
14903 when examining properties of the type. */
14904 base_type = check_typedef (orig_base_type);
a02abb62 14905
7e314c57
JK
14906 /* The die_type call above may have already set the type for this DIE. */
14907 range_type = get_die_type (die, cu);
14908 if (range_type)
14909 return range_type;
14910
729efb13
SA
14911 low.kind = PROP_CONST;
14912 high.kind = PROP_CONST;
14913 high.data.const_val = 0;
14914
4fae6e18
JK
14915 /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
14916 omitting DW_AT_lower_bound. */
14917 switch (cu->language)
6e70227d 14918 {
4fae6e18
JK
14919 case language_c:
14920 case language_cplus:
729efb13 14921 low.data.const_val = 0;
4fae6e18
JK
14922 low_default_is_valid = 1;
14923 break;
14924 case language_fortran:
729efb13 14925 low.data.const_val = 1;
4fae6e18
JK
14926 low_default_is_valid = 1;
14927 break;
14928 case language_d:
14929 case language_java:
14930 case language_objc:
729efb13 14931 low.data.const_val = 0;
4fae6e18
JK
14932 low_default_is_valid = (cu->header.version >= 4);
14933 break;
14934 case language_ada:
14935 case language_m2:
14936 case language_pascal:
729efb13 14937 low.data.const_val = 1;
4fae6e18
JK
14938 low_default_is_valid = (cu->header.version >= 4);
14939 break;
14940 default:
729efb13 14941 low.data.const_val = 0;
4fae6e18
JK
14942 low_default_is_valid = 0;
14943 break;
a02abb62
JB
14944 }
14945
e142c38c 14946 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62 14947 if (attr)
11c1ba78 14948 attr_to_dynamic_prop (attr, die, cu, &low);
4fae6e18
JK
14949 else if (!low_default_is_valid)
14950 complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
14951 "- DIE at 0x%x [in module %s]"),
4262abfb 14952 die->offset.sect_off, objfile_name (cu->objfile));
a02abb62 14953
e142c38c 14954 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
80180f79 14955 if (!attr_to_dynamic_prop (attr, die, cu, &high))
e77813c8
PM
14956 {
14957 attr = dwarf2_attr (die, DW_AT_count, cu);
c451ebe5 14958 if (attr_to_dynamic_prop (attr, die, cu, &high))
6b662e19 14959 {
c451ebe5
SA
14960 /* If bounds are constant do the final calculation here. */
14961 if (low.kind == PROP_CONST && high.kind == PROP_CONST)
14962 high.data.const_val = low.data.const_val + high.data.const_val - 1;
14963 else
14964 high_bound_is_count = 1;
c2ff108b 14965 }
e77813c8
PM
14966 }
14967
14968 /* Dwarf-2 specifications explicitly allows to create subrange types
14969 without specifying a base type.
14970 In that case, the base type must be set to the type of
14971 the lower bound, upper bound or count, in that order, if any of these
14972 three attributes references an object that has a type.
14973 If no base type is found, the Dwarf-2 specifications say that
14974 a signed integer type of size equal to the size of an address should
14975 be used.
14976 For the following C code: `extern char gdb_int [];'
14977 GCC produces an empty range DIE.
14978 FIXME: muller/2010-05-28: Possible references to object for low bound,
0963b4bd 14979 high bound or count are not yet handled by this code. */
e77813c8
PM
14980 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
14981 {
14982 struct objfile *objfile = cu->objfile;
14983 struct gdbarch *gdbarch = get_objfile_arch (objfile);
14984 int addr_size = gdbarch_addr_bit (gdbarch) /8;
14985 struct type *int_type = objfile_type (objfile)->builtin_int;
14986
14987 /* Test "int", "long int", and "long long int" objfile types,
14988 and select the first one having a size above or equal to the
14989 architecture address size. */
14990 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14991 base_type = int_type;
14992 else
14993 {
14994 int_type = objfile_type (objfile)->builtin_long;
14995 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
14996 base_type = int_type;
14997 else
14998 {
14999 int_type = objfile_type (objfile)->builtin_long_long;
15000 if (int_type && TYPE_LENGTH (int_type) >= addr_size)
15001 base_type = int_type;
15002 }
15003 }
15004 }
a02abb62 15005
dbb9c2b1
JB
15006 /* Normally, the DWARF producers are expected to use a signed
15007 constant form (Eg. DW_FORM_sdata) to express negative bounds.
15008 But this is unfortunately not always the case, as witnessed
15009 with GCC, for instance, where the ambiguous DW_FORM_dataN form
15010 is used instead. To work around that ambiguity, we treat
15011 the bounds as signed, and thus sign-extend their values, when
15012 the base type is signed. */
6e70227d 15013 negative_mask =
43bbcdc2 15014 (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
729efb13
SA
15015 if (low.kind == PROP_CONST
15016 && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
15017 low.data.const_val |= negative_mask;
15018 if (high.kind == PROP_CONST
15019 && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
15020 high.data.const_val |= negative_mask;
43bbcdc2 15021
729efb13 15022 range_type = create_range_type (NULL, orig_base_type, &low, &high);
a02abb62 15023
c451ebe5
SA
15024 if (high_bound_is_count)
15025 TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
15026
c2ff108b
JK
15027 /* Ada expects an empty array on no boundary attributes. */
15028 if (attr == NULL && cu->language != language_ada)
729efb13 15029 TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
c2ff108b 15030
39cbfefa
DJ
15031 name = dwarf2_name (die, cu);
15032 if (name)
15033 TYPE_NAME (range_type) = name;
6e70227d 15034
e142c38c 15035 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
15036 if (attr)
15037 TYPE_LENGTH (range_type) = DW_UNSND (attr);
15038
7e314c57
JK
15039 set_die_type (die, range_type, cu);
15040
15041 /* set_die_type should be already done. */
b4ba55a1
JB
15042 set_descriptive_type (range_type, die, cu);
15043
7e314c57 15044 return range_type;
a02abb62 15045}
6e70227d 15046
f792889a 15047static struct type *
81a17f79
JB
15048read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
15049{
15050 struct type *type;
81a17f79 15051
81a17f79
JB
15052 /* For now, we only support the C meaning of an unspecified type: void. */
15053
0114d602
DJ
15054 type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
15055 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 15056
f792889a 15057 return set_die_type (die, type, cu);
81a17f79 15058}
a02abb62 15059
639d11d3
DC
15060/* Read a single die and all its descendents. Set the die's sibling
15061 field to NULL; set other fields in the die correctly, and set all
15062 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
15063 location of the info_ptr after reading all of those dies. PARENT
15064 is the parent of the die in question. */
15065
15066static struct die_info *
dee91e82 15067read_die_and_children (const struct die_reader_specs *reader,
d521ce57
TT
15068 const gdb_byte *info_ptr,
15069 const gdb_byte **new_info_ptr,
dee91e82 15070 struct die_info *parent)
639d11d3
DC
15071{
15072 struct die_info *die;
d521ce57 15073 const gdb_byte *cur_ptr;
639d11d3
DC
15074 int has_children;
15075
bf6af496 15076 cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
1d325ec1
DJ
15077 if (die == NULL)
15078 {
15079 *new_info_ptr = cur_ptr;
15080 return NULL;
15081 }
93311388 15082 store_in_ref_table (die, reader->cu);
639d11d3
DC
15083
15084 if (has_children)
bf6af496 15085 die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
639d11d3
DC
15086 else
15087 {
15088 die->child = NULL;
15089 *new_info_ptr = cur_ptr;
15090 }
15091
15092 die->sibling = NULL;
15093 die->parent = parent;
15094 return die;
15095}
15096
15097/* Read a die, all of its descendents, and all of its siblings; set
15098 all of the fields of all of the dies correctly. Arguments are as
15099 in read_die_and_children. */
15100
15101static struct die_info *
bf6af496 15102read_die_and_siblings_1 (const struct die_reader_specs *reader,
d521ce57
TT
15103 const gdb_byte *info_ptr,
15104 const gdb_byte **new_info_ptr,
bf6af496 15105 struct die_info *parent)
639d11d3
DC
15106{
15107 struct die_info *first_die, *last_sibling;
d521ce57 15108 const gdb_byte *cur_ptr;
639d11d3 15109
c906108c 15110 cur_ptr = info_ptr;
639d11d3
DC
15111 first_die = last_sibling = NULL;
15112
15113 while (1)
c906108c 15114 {
639d11d3 15115 struct die_info *die
dee91e82 15116 = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
639d11d3 15117
1d325ec1 15118 if (die == NULL)
c906108c 15119 {
639d11d3
DC
15120 *new_info_ptr = cur_ptr;
15121 return first_die;
c906108c 15122 }
1d325ec1
DJ
15123
15124 if (!first_die)
15125 first_die = die;
c906108c 15126 else
1d325ec1
DJ
15127 last_sibling->sibling = die;
15128
15129 last_sibling = die;
c906108c 15130 }
c906108c
SS
15131}
15132
bf6af496
DE
15133/* Read a die, all of its descendents, and all of its siblings; set
15134 all of the fields of all of the dies correctly. Arguments are as
15135 in read_die_and_children.
15136 This the main entry point for reading a DIE and all its children. */
15137
15138static struct die_info *
15139read_die_and_siblings (const struct die_reader_specs *reader,
d521ce57
TT
15140 const gdb_byte *info_ptr,
15141 const gdb_byte **new_info_ptr,
bf6af496
DE
15142 struct die_info *parent)
15143{
15144 struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
15145 new_info_ptr, parent);
15146
b4f54984 15147 if (dwarf_die_debug)
bf6af496
DE
15148 {
15149 fprintf_unfiltered (gdb_stdlog,
15150 "Read die from %s@0x%x of %s:\n",
a32a8923 15151 get_section_name (reader->die_section),
bf6af496
DE
15152 (unsigned) (info_ptr - reader->die_section->buffer),
15153 bfd_get_filename (reader->abfd));
b4f54984 15154 dump_die (die, dwarf_die_debug);
bf6af496
DE
15155 }
15156
15157 return die;
15158}
15159
3019eac3
DE
15160/* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
15161 attributes.
15162 The caller is responsible for filling in the extra attributes
15163 and updating (*DIEP)->num_attrs.
15164 Set DIEP to point to a newly allocated die with its information,
15165 except for its child, sibling, and parent fields.
15166 Set HAS_CHILDREN to tell whether the die has children or not. */
93311388 15167
d521ce57 15168static const gdb_byte *
3019eac3 15169read_full_die_1 (const struct die_reader_specs *reader,
d521ce57 15170 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3 15171 int *has_children, int num_extra_attrs)
93311388 15172{
b64f50a1
JK
15173 unsigned int abbrev_number, bytes_read, i;
15174 sect_offset offset;
93311388
DE
15175 struct abbrev_info *abbrev;
15176 struct die_info *die;
15177 struct dwarf2_cu *cu = reader->cu;
15178 bfd *abfd = reader->abfd;
15179
b64f50a1 15180 offset.sect_off = info_ptr - reader->buffer;
93311388
DE
15181 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
15182 info_ptr += bytes_read;
15183 if (!abbrev_number)
15184 {
15185 *diep = NULL;
15186 *has_children = 0;
15187 return info_ptr;
15188 }
15189
433df2d4 15190 abbrev = abbrev_table_lookup_abbrev (cu->abbrev_table, abbrev_number);
93311388 15191 if (!abbrev)
348e048f
DE
15192 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
15193 abbrev_number,
15194 bfd_get_filename (abfd));
15195
3019eac3 15196 die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
93311388
DE
15197 die->offset = offset;
15198 die->tag = abbrev->tag;
15199 die->abbrev = abbrev_number;
15200
3019eac3
DE
15201 /* Make the result usable.
15202 The caller needs to update num_attrs after adding the extra
15203 attributes. */
93311388
DE
15204 die->num_attrs = abbrev->num_attrs;
15205
15206 for (i = 0; i < abbrev->num_attrs; ++i)
dee91e82
DE
15207 info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
15208 info_ptr);
93311388
DE
15209
15210 *diep = die;
15211 *has_children = abbrev->has_children;
15212 return info_ptr;
15213}
15214
3019eac3
DE
15215/* Read a die and all its attributes.
15216 Set DIEP to point to a newly allocated die with its information,
15217 except for its child, sibling, and parent fields.
15218 Set HAS_CHILDREN to tell whether the die has children or not. */
15219
d521ce57 15220static const gdb_byte *
3019eac3 15221read_full_die (const struct die_reader_specs *reader,
d521ce57 15222 struct die_info **diep, const gdb_byte *info_ptr,
3019eac3
DE
15223 int *has_children)
15224{
d521ce57 15225 const gdb_byte *result;
bf6af496
DE
15226
15227 result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
15228
b4f54984 15229 if (dwarf_die_debug)
bf6af496
DE
15230 {
15231 fprintf_unfiltered (gdb_stdlog,
15232 "Read die from %s@0x%x of %s:\n",
a32a8923 15233 get_section_name (reader->die_section),
bf6af496
DE
15234 (unsigned) (info_ptr - reader->die_section->buffer),
15235 bfd_get_filename (reader->abfd));
b4f54984 15236 dump_die (*diep, dwarf_die_debug);
bf6af496
DE
15237 }
15238
15239 return result;
3019eac3 15240}
433df2d4
DE
15241\f
15242/* Abbreviation tables.
3019eac3 15243
433df2d4 15244 In DWARF version 2, the description of the debugging information is
c906108c
SS
15245 stored in a separate .debug_abbrev section. Before we read any
15246 dies from a section we read in all abbreviations and install them
433df2d4
DE
15247 in a hash table. */
15248
15249/* Allocate space for a struct abbrev_info object in ABBREV_TABLE. */
15250
15251static struct abbrev_info *
15252abbrev_table_alloc_abbrev (struct abbrev_table *abbrev_table)
15253{
15254 struct abbrev_info *abbrev;
15255
15256 abbrev = (struct abbrev_info *)
15257 obstack_alloc (&abbrev_table->abbrev_obstack, sizeof (struct abbrev_info));
15258 memset (abbrev, 0, sizeof (struct abbrev_info));
15259 return abbrev;
15260}
15261
15262/* Add an abbreviation to the table. */
c906108c
SS
15263
15264static void
433df2d4
DE
15265abbrev_table_add_abbrev (struct abbrev_table *abbrev_table,
15266 unsigned int abbrev_number,
15267 struct abbrev_info *abbrev)
15268{
15269 unsigned int hash_number;
15270
15271 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15272 abbrev->next = abbrev_table->abbrevs[hash_number];
15273 abbrev_table->abbrevs[hash_number] = abbrev;
15274}
dee91e82 15275
433df2d4
DE
15276/* Look up an abbrev in the table.
15277 Returns NULL if the abbrev is not found. */
15278
15279static struct abbrev_info *
15280abbrev_table_lookup_abbrev (const struct abbrev_table *abbrev_table,
15281 unsigned int abbrev_number)
c906108c 15282{
433df2d4
DE
15283 unsigned int hash_number;
15284 struct abbrev_info *abbrev;
15285
15286 hash_number = abbrev_number % ABBREV_HASH_SIZE;
15287 abbrev = abbrev_table->abbrevs[hash_number];
15288
15289 while (abbrev)
15290 {
15291 if (abbrev->number == abbrev_number)
15292 return abbrev;
15293 abbrev = abbrev->next;
15294 }
15295 return NULL;
15296}
15297
15298/* Read in an abbrev table. */
15299
15300static struct abbrev_table *
15301abbrev_table_read_table (struct dwarf2_section_info *section,
15302 sect_offset offset)
15303{
15304 struct objfile *objfile = dwarf2_per_objfile->objfile;
a32a8923 15305 bfd *abfd = get_section_bfd_owner (section);
433df2d4 15306 struct abbrev_table *abbrev_table;
d521ce57 15307 const gdb_byte *abbrev_ptr;
c906108c
SS
15308 struct abbrev_info *cur_abbrev;
15309 unsigned int abbrev_number, bytes_read, abbrev_name;
433df2d4 15310 unsigned int abbrev_form;
f3dd6933
DJ
15311 struct attr_abbrev *cur_attrs;
15312 unsigned int allocated_attrs;
c906108c 15313
70ba0933 15314 abbrev_table = XNEW (struct abbrev_table);
f4dc4d17 15315 abbrev_table->offset = offset;
433df2d4
DE
15316 obstack_init (&abbrev_table->abbrev_obstack);
15317 abbrev_table->abbrevs = obstack_alloc (&abbrev_table->abbrev_obstack,
15318 (ABBREV_HASH_SIZE
15319 * sizeof (struct abbrev_info *)));
15320 memset (abbrev_table->abbrevs, 0,
15321 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 15322
433df2d4
DE
15323 dwarf2_read_section (objfile, section);
15324 abbrev_ptr = section->buffer + offset.sect_off;
c906108c
SS
15325 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15326 abbrev_ptr += bytes_read;
15327
f3dd6933
DJ
15328 allocated_attrs = ATTR_ALLOC_CHUNK;
15329 cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
6e70227d 15330
0963b4bd 15331 /* Loop until we reach an abbrev number of 0. */
c906108c
SS
15332 while (abbrev_number)
15333 {
433df2d4 15334 cur_abbrev = abbrev_table_alloc_abbrev (abbrev_table);
c906108c
SS
15335
15336 /* read in abbrev header */
15337 cur_abbrev->number = abbrev_number;
15338 cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15339 abbrev_ptr += bytes_read;
15340 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
15341 abbrev_ptr += 1;
15342
15343 /* now read in declarations */
15344 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15345 abbrev_ptr += bytes_read;
15346 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15347 abbrev_ptr += bytes_read;
15348 while (abbrev_name)
15349 {
f3dd6933 15350 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 15351 {
f3dd6933
DJ
15352 allocated_attrs += ATTR_ALLOC_CHUNK;
15353 cur_attrs
15354 = xrealloc (cur_attrs, (allocated_attrs
15355 * sizeof (struct attr_abbrev)));
c906108c 15356 }
ae038cb0 15357
f3dd6933
DJ
15358 cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
15359 cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
c906108c
SS
15360 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15361 abbrev_ptr += bytes_read;
15362 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15363 abbrev_ptr += bytes_read;
15364 }
15365
433df2d4 15366 cur_abbrev->attrs = obstack_alloc (&abbrev_table->abbrev_obstack,
f3dd6933
DJ
15367 (cur_abbrev->num_attrs
15368 * sizeof (struct attr_abbrev)));
15369 memcpy (cur_abbrev->attrs, cur_attrs,
15370 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
15371
433df2d4 15372 abbrev_table_add_abbrev (abbrev_table, abbrev_number, cur_abbrev);
c906108c
SS
15373
15374 /* Get next abbreviation.
15375 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
15376 always properly terminated with an abbrev number of 0.
15377 Exit loop if we encounter an abbreviation which we have
15378 already read (which means we are about to read the abbreviations
15379 for the next compile unit) or if the end of the abbreviation
15380 table is reached. */
433df2d4 15381 if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
c906108c
SS
15382 break;
15383 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
15384 abbrev_ptr += bytes_read;
433df2d4 15385 if (abbrev_table_lookup_abbrev (abbrev_table, abbrev_number) != NULL)
c906108c
SS
15386 break;
15387 }
f3dd6933
DJ
15388
15389 xfree (cur_attrs);
433df2d4 15390 return abbrev_table;
c906108c
SS
15391}
15392
433df2d4 15393/* Free the resources held by ABBREV_TABLE. */
c906108c 15394
c906108c 15395static void
433df2d4 15396abbrev_table_free (struct abbrev_table *abbrev_table)
c906108c 15397{
433df2d4
DE
15398 obstack_free (&abbrev_table->abbrev_obstack, NULL);
15399 xfree (abbrev_table);
c906108c
SS
15400}
15401
f4dc4d17
DE
15402/* Same as abbrev_table_free but as a cleanup.
15403 We pass in a pointer to the pointer to the table so that we can
15404 set the pointer to NULL when we're done. It also simplifies
73051182 15405 build_type_psymtabs_1. */
f4dc4d17
DE
15406
15407static void
15408abbrev_table_free_cleanup (void *table_ptr)
15409{
15410 struct abbrev_table **abbrev_table_ptr = table_ptr;
15411
15412 if (*abbrev_table_ptr != NULL)
15413 abbrev_table_free (*abbrev_table_ptr);
15414 *abbrev_table_ptr = NULL;
15415}
15416
433df2d4
DE
15417/* Read the abbrev table for CU from ABBREV_SECTION. */
15418
15419static void
15420dwarf2_read_abbrevs (struct dwarf2_cu *cu,
15421 struct dwarf2_section_info *abbrev_section)
c906108c 15422{
433df2d4
DE
15423 cu->abbrev_table =
15424 abbrev_table_read_table (abbrev_section, cu->header.abbrev_offset);
15425}
c906108c 15426
433df2d4 15427/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 15428
433df2d4
DE
15429static void
15430dwarf2_free_abbrev_table (void *ptr_to_cu)
15431{
15432 struct dwarf2_cu *cu = ptr_to_cu;
c906108c 15433
a2ce51a0
DE
15434 if (cu->abbrev_table != NULL)
15435 abbrev_table_free (cu->abbrev_table);
433df2d4
DE
15436 /* Set this to NULL so that we SEGV if we try to read it later,
15437 and also because free_comp_unit verifies this is NULL. */
15438 cu->abbrev_table = NULL;
15439}
15440\f
72bf9492
DJ
15441/* Returns nonzero if TAG represents a type that we might generate a partial
15442 symbol for. */
15443
15444static int
15445is_type_tag_for_partial (int tag)
15446{
15447 switch (tag)
15448 {
15449#if 0
15450 /* Some types that would be reasonable to generate partial symbols for,
15451 that we don't at present. */
15452 case DW_TAG_array_type:
15453 case DW_TAG_file_type:
15454 case DW_TAG_ptr_to_member_type:
15455 case DW_TAG_set_type:
15456 case DW_TAG_string_type:
15457 case DW_TAG_subroutine_type:
15458#endif
15459 case DW_TAG_base_type:
15460 case DW_TAG_class_type:
680b30c7 15461 case DW_TAG_interface_type:
72bf9492
DJ
15462 case DW_TAG_enumeration_type:
15463 case DW_TAG_structure_type:
15464 case DW_TAG_subrange_type:
15465 case DW_TAG_typedef:
15466 case DW_TAG_union_type:
15467 return 1;
15468 default:
15469 return 0;
15470 }
15471}
15472
15473/* Load all DIEs that are interesting for partial symbols into memory. */
15474
15475static struct partial_die_info *
dee91e82 15476load_partial_dies (const struct die_reader_specs *reader,
d521ce57 15477 const gdb_byte *info_ptr, int building_psymtab)
72bf9492 15478{
dee91e82 15479 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15480 struct objfile *objfile = cu->objfile;
72bf9492
DJ
15481 struct partial_die_info *part_die;
15482 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
15483 struct abbrev_info *abbrev;
15484 unsigned int bytes_read;
5afb4e99 15485 unsigned int load_all = 0;
72bf9492
DJ
15486 int nesting_level = 1;
15487
15488 parent_die = NULL;
15489 last_die = NULL;
15490
7adf1e79
DE
15491 gdb_assert (cu->per_cu != NULL);
15492 if (cu->per_cu->load_all_dies)
5afb4e99
DJ
15493 load_all = 1;
15494
72bf9492
DJ
15495 cu->partial_dies
15496 = htab_create_alloc_ex (cu->header.length / 12,
15497 partial_die_hash,
15498 partial_die_eq,
15499 NULL,
15500 &cu->comp_unit_obstack,
15501 hashtab_obstack_allocate,
15502 dummy_obstack_deallocate);
15503
15504 part_die = obstack_alloc (&cu->comp_unit_obstack,
15505 sizeof (struct partial_die_info));
15506
15507 while (1)
15508 {
15509 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
15510
15511 /* A NULL abbrev means the end of a series of children. */
15512 if (abbrev == NULL)
15513 {
15514 if (--nesting_level == 0)
15515 {
15516 /* PART_DIE was probably the last thing allocated on the
15517 comp_unit_obstack, so we could call obstack_free
15518 here. We don't do that because the waste is small,
15519 and will be cleaned up when we're done with this
15520 compilation unit. This way, we're also more robust
15521 against other users of the comp_unit_obstack. */
15522 return first_die;
15523 }
15524 info_ptr += bytes_read;
15525 last_die = parent_die;
15526 parent_die = parent_die->die_parent;
15527 continue;
15528 }
15529
98bfdba5
PA
15530 /* Check for template arguments. We never save these; if
15531 they're seen, we just mark the parent, and go on our way. */
15532 if (parent_die != NULL
15533 && cu->language == language_cplus
15534 && (abbrev->tag == DW_TAG_template_type_param
15535 || abbrev->tag == DW_TAG_template_value_param))
15536 {
15537 parent_die->has_template_arguments = 1;
15538
15539 if (!load_all)
15540 {
15541 /* We don't need a partial DIE for the template argument. */
dee91e82 15542 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15543 continue;
15544 }
15545 }
15546
0d99eb77 15547 /* We only recurse into c++ subprograms looking for template arguments.
98bfdba5
PA
15548 Skip their other children. */
15549 if (!load_all
15550 && cu->language == language_cplus
15551 && parent_die != NULL
15552 && parent_die->tag == DW_TAG_subprogram)
15553 {
dee91e82 15554 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
98bfdba5
PA
15555 continue;
15556 }
15557
5afb4e99
DJ
15558 /* Check whether this DIE is interesting enough to save. Normally
15559 we would not be interested in members here, but there may be
15560 later variables referencing them via DW_AT_specification (for
15561 static members). */
15562 if (!load_all
15563 && !is_type_tag_for_partial (abbrev->tag)
72929c62 15564 && abbrev->tag != DW_TAG_constant
72bf9492
DJ
15565 && abbrev->tag != DW_TAG_enumerator
15566 && abbrev->tag != DW_TAG_subprogram
bc30ff58 15567 && abbrev->tag != DW_TAG_lexical_block
72bf9492 15568 && abbrev->tag != DW_TAG_variable
5afb4e99 15569 && abbrev->tag != DW_TAG_namespace
f55ee35c 15570 && abbrev->tag != DW_TAG_module
95554aad 15571 && abbrev->tag != DW_TAG_member
74921315
KS
15572 && abbrev->tag != DW_TAG_imported_unit
15573 && abbrev->tag != DW_TAG_imported_declaration)
72bf9492
DJ
15574 {
15575 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15576 info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
72bf9492
DJ
15577 continue;
15578 }
15579
dee91e82
DE
15580 info_ptr = read_partial_die (reader, part_die, abbrev, bytes_read,
15581 info_ptr);
72bf9492
DJ
15582
15583 /* This two-pass algorithm for processing partial symbols has a
15584 high cost in cache pressure. Thus, handle some simple cases
15585 here which cover the majority of C partial symbols. DIEs
15586 which neither have specification tags in them, nor could have
15587 specification tags elsewhere pointing at them, can simply be
15588 processed and discarded.
15589
15590 This segment is also optional; scan_partial_symbols and
15591 add_partial_symbol will handle these DIEs if we chain
15592 them in normally. When compilers which do not emit large
15593 quantities of duplicate debug information are more common,
15594 this code can probably be removed. */
15595
15596 /* Any complete simple types at the top level (pretty much all
15597 of them, for a language without namespaces), can be processed
15598 directly. */
15599 if (parent_die == NULL
15600 && part_die->has_specification == 0
15601 && part_die->is_declaration == 0
d8228535 15602 && ((part_die->tag == DW_TAG_typedef && !part_die->has_children)
72bf9492
DJ
15603 || part_die->tag == DW_TAG_base_type
15604 || part_die->tag == DW_TAG_subrange_type))
15605 {
15606 if (building_psymtab && part_die->name != NULL)
04a679b8 15607 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15608 VAR_DOMAIN, LOC_TYPEDEF,
bb5ed363
DE
15609 &objfile->static_psymbols,
15610 0, (CORE_ADDR) 0, cu->language, objfile);
dee91e82 15611 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15612 continue;
15613 }
15614
d8228535
JK
15615 /* The exception for DW_TAG_typedef with has_children above is
15616 a workaround of GCC PR debug/47510. In the case of this complaint
15617 type_name_no_tag_or_error will error on such types later.
15618
15619 GDB skipped children of DW_TAG_typedef by the shortcut above and then
15620 it could not find the child DIEs referenced later, this is checked
15621 above. In correct DWARF DW_TAG_typedef should have no children. */
15622
15623 if (part_die->tag == DW_TAG_typedef && part_die->has_children)
15624 complaint (&symfile_complaints,
15625 _("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
15626 "- DIE at 0x%x [in module %s]"),
4262abfb 15627 part_die->offset.sect_off, objfile_name (objfile));
d8228535 15628
72bf9492
DJ
15629 /* If we're at the second level, and we're an enumerator, and
15630 our parent has no specification (meaning possibly lives in a
15631 namespace elsewhere), then we can add the partial symbol now
15632 instead of queueing it. */
15633 if (part_die->tag == DW_TAG_enumerator
15634 && parent_die != NULL
15635 && parent_die->die_parent == NULL
15636 && parent_die->tag == DW_TAG_enumeration_type
15637 && parent_die->has_specification == 0)
15638 {
15639 if (part_die->name == NULL)
3e43a32a
MS
15640 complaint (&symfile_complaints,
15641 _("malformed enumerator DIE ignored"));
72bf9492 15642 else if (building_psymtab)
04a679b8 15643 add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
72bf9492 15644 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
15645 (cu->language == language_cplus
15646 || cu->language == language_java)
bb5ed363
DE
15647 ? &objfile->global_psymbols
15648 : &objfile->static_psymbols,
15649 0, (CORE_ADDR) 0, cu->language, objfile);
72bf9492 15650
dee91e82 15651 info_ptr = locate_pdi_sibling (reader, part_die, info_ptr);
72bf9492
DJ
15652 continue;
15653 }
15654
15655 /* We'll save this DIE so link it in. */
15656 part_die->die_parent = parent_die;
15657 part_die->die_sibling = NULL;
15658 part_die->die_child = NULL;
15659
15660 if (last_die && last_die == parent_die)
15661 last_die->die_child = part_die;
15662 else if (last_die)
15663 last_die->die_sibling = part_die;
15664
15665 last_die = part_die;
15666
15667 if (first_die == NULL)
15668 first_die = part_die;
15669
15670 /* Maybe add the DIE to the hash table. Not all DIEs that we
15671 find interesting need to be in the hash table, because we
15672 also have the parent/sibling/child chains; only those that we
15673 might refer to by offset later during partial symbol reading.
15674
15675 For now this means things that might have be the target of a
15676 DW_AT_specification, DW_AT_abstract_origin, or
15677 DW_AT_extension. DW_AT_extension will refer only to
15678 namespaces; DW_AT_abstract_origin refers to functions (and
15679 many things under the function DIE, but we do not recurse
15680 into function DIEs during partial symbol reading) and
15681 possibly variables as well; DW_AT_specification refers to
15682 declarations. Declarations ought to have the DW_AT_declaration
15683 flag. It happens that GCC forgets to put it in sometimes, but
15684 only for functions, not for types.
15685
15686 Adding more things than necessary to the hash table is harmless
15687 except for the performance cost. Adding too few will result in
5afb4e99
DJ
15688 wasted time in find_partial_die, when we reread the compilation
15689 unit with load_all_dies set. */
72bf9492 15690
5afb4e99 15691 if (load_all
72929c62 15692 || abbrev->tag == DW_TAG_constant
5afb4e99 15693 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
15694 || abbrev->tag == DW_TAG_variable
15695 || abbrev->tag == DW_TAG_namespace
15696 || part_die->is_declaration)
15697 {
15698 void **slot;
15699
15700 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
b64f50a1 15701 part_die->offset.sect_off, INSERT);
72bf9492
DJ
15702 *slot = part_die;
15703 }
15704
15705 part_die = obstack_alloc (&cu->comp_unit_obstack,
15706 sizeof (struct partial_die_info));
15707
15708 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 15709 we have no reason to follow the children of structures; for other
98bfdba5
PA
15710 languages we have to, so that we can get at method physnames
15711 to infer fully qualified class names, for DW_AT_specification,
15712 and for C++ template arguments. For C++, we also look one level
15713 inside functions to find template arguments (if the name of the
15714 function does not already contain the template arguments).
bc30ff58
JB
15715
15716 For Ada, we need to scan the children of subprograms and lexical
15717 blocks as well because Ada allows the definition of nested
15718 entities that could be interesting for the debugger, such as
15719 nested subprograms for instance. */
72bf9492 15720 if (last_die->has_children
5afb4e99
DJ
15721 && (load_all
15722 || last_die->tag == DW_TAG_namespace
f55ee35c 15723 || last_die->tag == DW_TAG_module
72bf9492 15724 || last_die->tag == DW_TAG_enumeration_type
98bfdba5
PA
15725 || (cu->language == language_cplus
15726 && last_die->tag == DW_TAG_subprogram
15727 && (last_die->name == NULL
15728 || strchr (last_die->name, '<') == NULL))
72bf9492
DJ
15729 || (cu->language != language_c
15730 && (last_die->tag == DW_TAG_class_type
680b30c7 15731 || last_die->tag == DW_TAG_interface_type
72bf9492 15732 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
15733 || last_die->tag == DW_TAG_union_type))
15734 || (cu->language == language_ada
15735 && (last_die->tag == DW_TAG_subprogram
15736 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
15737 {
15738 nesting_level++;
15739 parent_die = last_die;
15740 continue;
15741 }
15742
15743 /* Otherwise we skip to the next sibling, if any. */
dee91e82 15744 info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
72bf9492
DJ
15745
15746 /* Back to the top, do it again. */
15747 }
15748}
15749
c906108c
SS
15750/* Read a minimal amount of information into the minimal die structure. */
15751
d521ce57 15752static const gdb_byte *
dee91e82
DE
15753read_partial_die (const struct die_reader_specs *reader,
15754 struct partial_die_info *part_die,
15755 struct abbrev_info *abbrev, unsigned int abbrev_len,
d521ce57 15756 const gdb_byte *info_ptr)
c906108c 15757{
dee91e82 15758 struct dwarf2_cu *cu = reader->cu;
bb5ed363 15759 struct objfile *objfile = cu->objfile;
d521ce57 15760 const gdb_byte *buffer = reader->buffer;
fa238c03 15761 unsigned int i;
c906108c 15762 struct attribute attr;
c5aa993b 15763 int has_low_pc_attr = 0;
c906108c 15764 int has_high_pc_attr = 0;
91da1414 15765 int high_pc_relative = 0;
c906108c 15766
72bf9492 15767 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 15768
b64f50a1 15769 part_die->offset.sect_off = info_ptr - buffer;
72bf9492
DJ
15770
15771 info_ptr += abbrev_len;
15772
15773 if (abbrev == NULL)
15774 return info_ptr;
15775
c906108c
SS
15776 part_die->tag = abbrev->tag;
15777 part_die->has_children = abbrev->has_children;
c906108c
SS
15778
15779 for (i = 0; i < abbrev->num_attrs; ++i)
15780 {
dee91e82 15781 info_ptr = read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
c906108c
SS
15782
15783 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 15784 partial symbol table. */
c906108c
SS
15785 switch (attr.name)
15786 {
15787 case DW_AT_name:
71c25dea
TT
15788 switch (part_die->tag)
15789 {
15790 case DW_TAG_compile_unit:
95554aad 15791 case DW_TAG_partial_unit:
348e048f 15792 case DW_TAG_type_unit:
71c25dea
TT
15793 /* Compilation units have a DW_AT_name that is a filename, not
15794 a source language identifier. */
15795 case DW_TAG_enumeration_type:
15796 case DW_TAG_enumerator:
15797 /* These tags always have simple identifiers already; no need
15798 to canonicalize them. */
15799 part_die->name = DW_STRING (&attr);
15800 break;
15801 default:
15802 part_die->name
15803 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
34a68019 15804 &objfile->per_bfd->storage_obstack);
71c25dea
TT
15805 break;
15806 }
c906108c 15807 break;
31ef98ae 15808 case DW_AT_linkage_name:
c906108c 15809 case DW_AT_MIPS_linkage_name:
31ef98ae
TT
15810 /* Note that both forms of linkage name might appear. We
15811 assume they will be the same, and we only store the last
15812 one we see. */
94af9270
KS
15813 if (cu->language == language_ada)
15814 part_die->name = DW_STRING (&attr);
abc72ce4 15815 part_die->linkage_name = DW_STRING (&attr);
c906108c
SS
15816 break;
15817 case DW_AT_low_pc:
15818 has_low_pc_attr = 1;
31aa7e4e 15819 part_die->lowpc = attr_value_as_address (&attr);
c906108c
SS
15820 break;
15821 case DW_AT_high_pc:
15822 has_high_pc_attr = 1;
31aa7e4e
JB
15823 part_die->highpc = attr_value_as_address (&attr);
15824 if (cu->header.version >= 4 && attr_form_is_constant (&attr))
15825 high_pc_relative = 1;
c906108c
SS
15826 break;
15827 case DW_AT_location:
0963b4bd 15828 /* Support the .debug_loc offsets. */
8e19ed76
PS
15829 if (attr_form_is_block (&attr))
15830 {
95554aad 15831 part_die->d.locdesc = DW_BLOCK (&attr);
8e19ed76 15832 }
3690dd37 15833 else if (attr_form_is_section_offset (&attr))
8e19ed76 15834 {
4d3c2250 15835 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
15836 }
15837 else
15838 {
4d3c2250
KB
15839 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
15840 "partial symbol information");
8e19ed76 15841 }
c906108c 15842 break;
c906108c
SS
15843 case DW_AT_external:
15844 part_die->is_external = DW_UNSND (&attr);
15845 break;
15846 case DW_AT_declaration:
15847 part_die->is_declaration = DW_UNSND (&attr);
15848 break;
15849 case DW_AT_type:
15850 part_die->has_type = 1;
15851 break;
15852 case DW_AT_abstract_origin:
15853 case DW_AT_specification:
72bf9492
DJ
15854 case DW_AT_extension:
15855 part_die->has_specification = 1;
c764a876 15856 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
36586728
TT
15857 part_die->spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15858 || cu->per_cu->is_dwz);
c906108c
SS
15859 break;
15860 case DW_AT_sibling:
15861 /* Ignore absolute siblings, they might point outside of
15862 the current compile unit. */
15863 if (attr.form == DW_FORM_ref_addr)
3e43a32a
MS
15864 complaint (&symfile_complaints,
15865 _("ignoring absolute DW_AT_sibling"));
c906108c 15866 else
b9502d3f
WN
15867 {
15868 unsigned int off = dwarf2_get_ref_die_offset (&attr).sect_off;
15869 const gdb_byte *sibling_ptr = buffer + off;
15870
15871 if (sibling_ptr < info_ptr)
15872 complaint (&symfile_complaints,
15873 _("DW_AT_sibling points backwards"));
22869d73
KS
15874 else if (sibling_ptr > reader->buffer_end)
15875 dwarf2_section_buffer_overflow_complaint (reader->die_section);
b9502d3f
WN
15876 else
15877 part_die->sibling = sibling_ptr;
15878 }
c906108c 15879 break;
fa4028e9
JB
15880 case DW_AT_byte_size:
15881 part_die->has_byte_size = 1;
15882 break;
ff908ebf
AW
15883 case DW_AT_const_value:
15884 part_die->has_const_value = 1;
15885 break;
68511cec
CES
15886 case DW_AT_calling_convention:
15887 /* DWARF doesn't provide a way to identify a program's source-level
15888 entry point. DW_AT_calling_convention attributes are only meant
15889 to describe functions' calling conventions.
15890
15891 However, because it's a necessary piece of information in
15892 Fortran, and because DW_CC_program is the only piece of debugging
15893 information whose definition refers to a 'main program' at all,
15894 several compilers have begun marking Fortran main programs with
15895 DW_CC_program --- even when those functions use the standard
15896 calling conventions.
15897
15898 So until DWARF specifies a way to provide this information and
15899 compilers pick up the new representation, we'll support this
15900 practice. */
15901 if (DW_UNSND (&attr) == DW_CC_program
15902 && cu->language == language_fortran)
3d548a53 15903 set_objfile_main_name (objfile, part_die->name, language_fortran);
68511cec 15904 break;
481860b3
GB
15905 case DW_AT_inline:
15906 if (DW_UNSND (&attr) == DW_INL_inlined
15907 || DW_UNSND (&attr) == DW_INL_declared_inlined)
15908 part_die->may_be_inlined = 1;
15909 break;
95554aad
TT
15910
15911 case DW_AT_import:
15912 if (part_die->tag == DW_TAG_imported_unit)
36586728
TT
15913 {
15914 part_die->d.offset = dwarf2_get_ref_die_offset (&attr);
15915 part_die->is_dwz = (attr.form == DW_FORM_GNU_ref_alt
15916 || cu->per_cu->is_dwz);
15917 }
95554aad
TT
15918 break;
15919
c906108c
SS
15920 default:
15921 break;
15922 }
15923 }
15924
91da1414
MW
15925 if (high_pc_relative)
15926 part_die->highpc += part_die->lowpc;
15927
9373cf26
JK
15928 if (has_low_pc_attr && has_high_pc_attr)
15929 {
15930 /* When using the GNU linker, .gnu.linkonce. sections are used to
15931 eliminate duplicate copies of functions and vtables and such.
15932 The linker will arbitrarily choose one and discard the others.
15933 The AT_*_pc values for such functions refer to local labels in
15934 these sections. If the section from that file was discarded, the
15935 labels are not in the output, so the relocs get a value of 0.
15936 If this is a discarded function, mark the pc bounds as invalid,
15937 so that GDB will ignore it. */
15938 if (part_die->lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
15939 {
bb5ed363 15940 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15941
15942 complaint (&symfile_complaints,
15943 _("DW_AT_low_pc %s is zero "
15944 "for DIE at 0x%x [in module %s]"),
15945 paddress (gdbarch, part_die->lowpc),
4262abfb 15946 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15947 }
15948 /* dwarf2_get_pc_bounds has also the strict low < high requirement. */
15949 else if (part_die->lowpc >= part_die->highpc)
15950 {
bb5ed363 15951 struct gdbarch *gdbarch = get_objfile_arch (objfile);
9373cf26
JK
15952
15953 complaint (&symfile_complaints,
15954 _("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
15955 "for DIE at 0x%x [in module %s]"),
15956 paddress (gdbarch, part_die->lowpc),
15957 paddress (gdbarch, part_die->highpc),
4262abfb 15958 part_die->offset.sect_off, objfile_name (objfile));
9373cf26
JK
15959 }
15960 else
15961 part_die->has_pc_info = 1;
15962 }
85cbf3d3 15963
c906108c
SS
15964 return info_ptr;
15965}
15966
72bf9492
DJ
15967/* Find a cached partial DIE at OFFSET in CU. */
15968
15969static struct partial_die_info *
b64f50a1 15970find_partial_die_in_comp_unit (sect_offset offset, struct dwarf2_cu *cu)
72bf9492
DJ
15971{
15972 struct partial_die_info *lookup_die = NULL;
15973 struct partial_die_info part_die;
15974
15975 part_die.offset = offset;
b64f50a1
JK
15976 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die,
15977 offset.sect_off);
72bf9492 15978
72bf9492
DJ
15979 return lookup_die;
15980}
15981
348e048f
DE
15982/* Find a partial DIE at OFFSET, which may or may not be in CU,
15983 except in the case of .debug_types DIEs which do not reference
15984 outside their CU (they do however referencing other types via
55f1336d 15985 DW_FORM_ref_sig8). */
72bf9492
DJ
15986
15987static struct partial_die_info *
36586728 15988find_partial_die (sect_offset offset, int offset_in_dwz, struct dwarf2_cu *cu)
72bf9492 15989{
bb5ed363 15990 struct objfile *objfile = cu->objfile;
5afb4e99
DJ
15991 struct dwarf2_per_cu_data *per_cu = NULL;
15992 struct partial_die_info *pd = NULL;
72bf9492 15993
36586728
TT
15994 if (offset_in_dwz == cu->per_cu->is_dwz
15995 && offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
15996 {
15997 pd = find_partial_die_in_comp_unit (offset, cu);
15998 if (pd != NULL)
15999 return pd;
0d99eb77
DE
16000 /* We missed recording what we needed.
16001 Load all dies and try again. */
16002 per_cu = cu->per_cu;
5afb4e99 16003 }
0d99eb77
DE
16004 else
16005 {
16006 /* TUs don't reference other CUs/TUs (except via type signatures). */
3019eac3 16007 if (cu->per_cu->is_debug_types)
0d99eb77
DE
16008 {
16009 error (_("Dwarf Error: Type Unit at offset 0x%lx contains"
16010 " external reference to offset 0x%lx [in module %s].\n"),
16011 (long) cu->header.offset.sect_off, (long) offset.sect_off,
16012 bfd_get_filename (objfile->obfd));
16013 }
36586728
TT
16014 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
16015 objfile);
72bf9492 16016
0d99eb77
DE
16017 if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
16018 load_partial_comp_unit (per_cu);
ae038cb0 16019
0d99eb77
DE
16020 per_cu->cu->last_used = 0;
16021 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16022 }
5afb4e99 16023
dee91e82
DE
16024 /* If we didn't find it, and not all dies have been loaded,
16025 load them all and try again. */
16026
5afb4e99
DJ
16027 if (pd == NULL && per_cu->load_all_dies == 0)
16028 {
5afb4e99 16029 per_cu->load_all_dies = 1;
fd820528
DE
16030
16031 /* This is nasty. When we reread the DIEs, somewhere up the call chain
16032 THIS_CU->cu may already be in use. So we can't just free it and
16033 replace its DIEs with the ones we read in. Instead, we leave those
16034 DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
16035 and clobber THIS_CU->cu->partial_dies with the hash table for the new
16036 set. */
dee91e82 16037 load_partial_comp_unit (per_cu);
5afb4e99
DJ
16038
16039 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
16040 }
16041
16042 if (pd == NULL)
16043 internal_error (__FILE__, __LINE__,
3e43a32a
MS
16044 _("could not find partial DIE 0x%x "
16045 "in cache [from module %s]\n"),
b64f50a1 16046 offset.sect_off, bfd_get_filename (objfile->obfd));
5afb4e99 16047 return pd;
72bf9492
DJ
16048}
16049
abc72ce4
DE
16050/* See if we can figure out if the class lives in a namespace. We do
16051 this by looking for a member function; its demangled name will
16052 contain namespace info, if there is any. */
16053
16054static void
16055guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
16056 struct dwarf2_cu *cu)
16057{
16058 /* NOTE: carlton/2003-10-07: Getting the info this way changes
16059 what template types look like, because the demangler
16060 frequently doesn't give the same name as the debug info. We
16061 could fix this by only using the demangled name to get the
16062 prefix (but see comment in read_structure_type). */
16063
16064 struct partial_die_info *real_pdi;
16065 struct partial_die_info *child_pdi;
16066
16067 /* If this DIE (this DIE's specification, if any) has a parent, then
16068 we should not do this. We'll prepend the parent's fully qualified
16069 name when we create the partial symbol. */
16070
16071 real_pdi = struct_pdi;
16072 while (real_pdi->has_specification)
36586728
TT
16073 real_pdi = find_partial_die (real_pdi->spec_offset,
16074 real_pdi->spec_is_dwz, cu);
abc72ce4
DE
16075
16076 if (real_pdi->die_parent != NULL)
16077 return;
16078
16079 for (child_pdi = struct_pdi->die_child;
16080 child_pdi != NULL;
16081 child_pdi = child_pdi->die_sibling)
16082 {
16083 if (child_pdi->tag == DW_TAG_subprogram
16084 && child_pdi->linkage_name != NULL)
16085 {
16086 char *actual_class_name
16087 = language_class_name_from_physname (cu->language_defn,
16088 child_pdi->linkage_name);
16089 if (actual_class_name != NULL)
16090 {
16091 struct_pdi->name
34a68019 16092 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
16093 actual_class_name,
16094 strlen (actual_class_name));
abc72ce4
DE
16095 xfree (actual_class_name);
16096 }
16097 break;
16098 }
16099 }
16100}
16101
72bf9492
DJ
16102/* Adjust PART_DIE before generating a symbol for it. This function
16103 may set the is_external flag or change the DIE's name. */
16104
16105static void
16106fixup_partial_die (struct partial_die_info *part_die,
16107 struct dwarf2_cu *cu)
16108{
abc72ce4
DE
16109 /* Once we've fixed up a die, there's no point in doing so again.
16110 This also avoids a memory leak if we were to call
16111 guess_partial_die_structure_name multiple times. */
16112 if (part_die->fixup_called)
16113 return;
16114
72bf9492
DJ
16115 /* If we found a reference attribute and the DIE has no name, try
16116 to find a name in the referred to DIE. */
16117
16118 if (part_die->name == NULL && part_die->has_specification)
16119 {
16120 struct partial_die_info *spec_die;
72bf9492 16121
36586728
TT
16122 spec_die = find_partial_die (part_die->spec_offset,
16123 part_die->spec_is_dwz, cu);
72bf9492 16124
10b3939b 16125 fixup_partial_die (spec_die, cu);
72bf9492
DJ
16126
16127 if (spec_die->name)
16128 {
16129 part_die->name = spec_die->name;
16130
16131 /* Copy DW_AT_external attribute if it is set. */
16132 if (spec_die->is_external)
16133 part_die->is_external = spec_die->is_external;
16134 }
16135 }
16136
16137 /* Set default names for some unnamed DIEs. */
72bf9492
DJ
16138
16139 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
2b1dbab0 16140 part_die->name = CP_ANONYMOUS_NAMESPACE_STR;
72bf9492 16141
abc72ce4
DE
16142 /* If there is no parent die to provide a namespace, and there are
16143 children, see if we can determine the namespace from their linkage
122d1940 16144 name. */
abc72ce4 16145 if (cu->language == language_cplus
8b70b953 16146 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
16147 && part_die->die_parent == NULL
16148 && part_die->has_children
16149 && (part_die->tag == DW_TAG_class_type
16150 || part_die->tag == DW_TAG_structure_type
16151 || part_die->tag == DW_TAG_union_type))
16152 guess_partial_die_structure_name (part_die, cu);
16153
53832f31
TT
16154 /* GCC might emit a nameless struct or union that has a linkage
16155 name. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
16156 if (part_die->name == NULL
96408a79
SA
16157 && (part_die->tag == DW_TAG_class_type
16158 || part_die->tag == DW_TAG_interface_type
16159 || part_die->tag == DW_TAG_structure_type
16160 || part_die->tag == DW_TAG_union_type)
53832f31
TT
16161 && part_die->linkage_name != NULL)
16162 {
16163 char *demangled;
16164
8de20a37 16165 demangled = gdb_demangle (part_die->linkage_name, DMGL_TYPES);
53832f31
TT
16166 if (demangled)
16167 {
96408a79
SA
16168 const char *base;
16169
16170 /* Strip any leading namespaces/classes, keep only the base name.
16171 DW_AT_name for named DIEs does not contain the prefixes. */
16172 base = strrchr (demangled, ':');
16173 if (base && base > demangled && base[-1] == ':')
16174 base++;
16175 else
16176 base = demangled;
16177
34a68019
TT
16178 part_die->name
16179 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
16180 base, strlen (base));
53832f31
TT
16181 xfree (demangled);
16182 }
16183 }
16184
abc72ce4 16185 part_die->fixup_called = 1;
72bf9492
DJ
16186}
16187
a8329558 16188/* Read an attribute value described by an attribute form. */
c906108c 16189
d521ce57 16190static const gdb_byte *
dee91e82
DE
16191read_attribute_value (const struct die_reader_specs *reader,
16192 struct attribute *attr, unsigned form,
d521ce57 16193 const gdb_byte *info_ptr)
c906108c 16194{
dee91e82 16195 struct dwarf2_cu *cu = reader->cu;
3e29f34a
MR
16196 struct objfile *objfile = cu->objfile;
16197 struct gdbarch *gdbarch = get_objfile_arch (objfile);
dee91e82 16198 bfd *abfd = reader->abfd;
e7c27a73 16199 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16200 unsigned int bytes_read;
16201 struct dwarf_block *blk;
16202
a8329558
KW
16203 attr->form = form;
16204 switch (form)
c906108c 16205 {
c906108c 16206 case DW_FORM_ref_addr:
ae411497 16207 if (cu->header.version == 2)
4568ecf9 16208 DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
ae411497 16209 else
4568ecf9
DE
16210 DW_UNSND (attr) = read_offset (abfd, info_ptr,
16211 &cu->header, &bytes_read);
ae411497
TT
16212 info_ptr += bytes_read;
16213 break;
36586728
TT
16214 case DW_FORM_GNU_ref_alt:
16215 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16216 info_ptr += bytes_read;
16217 break;
ae411497 16218 case DW_FORM_addr:
e7c27a73 16219 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
3e29f34a 16220 DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
107d2387 16221 info_ptr += bytes_read;
c906108c
SS
16222 break;
16223 case DW_FORM_block2:
7b5a2f43 16224 blk = dwarf_alloc_block (cu);
c906108c
SS
16225 blk->size = read_2_bytes (abfd, info_ptr);
16226 info_ptr += 2;
16227 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16228 info_ptr += blk->size;
16229 DW_BLOCK (attr) = blk;
16230 break;
16231 case DW_FORM_block4:
7b5a2f43 16232 blk = dwarf_alloc_block (cu);
c906108c
SS
16233 blk->size = read_4_bytes (abfd, info_ptr);
16234 info_ptr += 4;
16235 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16236 info_ptr += blk->size;
16237 DW_BLOCK (attr) = blk;
16238 break;
16239 case DW_FORM_data2:
16240 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
16241 info_ptr += 2;
16242 break;
16243 case DW_FORM_data4:
16244 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
16245 info_ptr += 4;
16246 break;
16247 case DW_FORM_data8:
16248 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
16249 info_ptr += 8;
16250 break;
2dc7f7b3
TT
16251 case DW_FORM_sec_offset:
16252 DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
16253 info_ptr += bytes_read;
16254 break;
c906108c 16255 case DW_FORM_string:
9b1c24c8 16256 DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
8285870a 16257 DW_STRING_IS_CANONICAL (attr) = 0;
c906108c
SS
16258 info_ptr += bytes_read;
16259 break;
4bdf3d34 16260 case DW_FORM_strp:
36586728
TT
16261 if (!cu->per_cu->is_dwz)
16262 {
16263 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
16264 &bytes_read);
16265 DW_STRING_IS_CANONICAL (attr) = 0;
16266 info_ptr += bytes_read;
16267 break;
16268 }
16269 /* FALLTHROUGH */
16270 case DW_FORM_GNU_strp_alt:
16271 {
16272 struct dwz_file *dwz = dwarf2_get_dwz_file ();
16273 LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
16274 &bytes_read);
16275
16276 DW_STRING (attr) = read_indirect_string_from_dwz (dwz, str_offset);
16277 DW_STRING_IS_CANONICAL (attr) = 0;
16278 info_ptr += bytes_read;
16279 }
4bdf3d34 16280 break;
2dc7f7b3 16281 case DW_FORM_exprloc:
c906108c 16282 case DW_FORM_block:
7b5a2f43 16283 blk = dwarf_alloc_block (cu);
c906108c
SS
16284 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16285 info_ptr += bytes_read;
16286 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16287 info_ptr += blk->size;
16288 DW_BLOCK (attr) = blk;
16289 break;
16290 case DW_FORM_block1:
7b5a2f43 16291 blk = dwarf_alloc_block (cu);
c906108c
SS
16292 blk->size = read_1_byte (abfd, info_ptr);
16293 info_ptr += 1;
16294 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
16295 info_ptr += blk->size;
16296 DW_BLOCK (attr) = blk;
16297 break;
16298 case DW_FORM_data1:
16299 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16300 info_ptr += 1;
16301 break;
16302 case DW_FORM_flag:
16303 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
16304 info_ptr += 1;
16305 break;
2dc7f7b3
TT
16306 case DW_FORM_flag_present:
16307 DW_UNSND (attr) = 1;
16308 break;
c906108c
SS
16309 case DW_FORM_sdata:
16310 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
16311 info_ptr += bytes_read;
16312 break;
16313 case DW_FORM_udata:
16314 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16315 info_ptr += bytes_read;
16316 break;
16317 case DW_FORM_ref1:
4568ecf9
DE
16318 DW_UNSND (attr) = (cu->header.offset.sect_off
16319 + read_1_byte (abfd, info_ptr));
c906108c
SS
16320 info_ptr += 1;
16321 break;
16322 case DW_FORM_ref2:
4568ecf9
DE
16323 DW_UNSND (attr) = (cu->header.offset.sect_off
16324 + read_2_bytes (abfd, info_ptr));
c906108c
SS
16325 info_ptr += 2;
16326 break;
16327 case DW_FORM_ref4:
4568ecf9
DE
16328 DW_UNSND (attr) = (cu->header.offset.sect_off
16329 + read_4_bytes (abfd, info_ptr));
c906108c
SS
16330 info_ptr += 4;
16331 break;
613e1657 16332 case DW_FORM_ref8:
4568ecf9
DE
16333 DW_UNSND (attr) = (cu->header.offset.sect_off
16334 + read_8_bytes (abfd, info_ptr));
613e1657
KB
16335 info_ptr += 8;
16336 break;
55f1336d 16337 case DW_FORM_ref_sig8:
ac9ec31b 16338 DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
348e048f
DE
16339 info_ptr += 8;
16340 break;
c906108c 16341 case DW_FORM_ref_udata:
4568ecf9
DE
16342 DW_UNSND (attr) = (cu->header.offset.sect_off
16343 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
16344 info_ptr += bytes_read;
16345 break;
c906108c 16346 case DW_FORM_indirect:
a8329558
KW
16347 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16348 info_ptr += bytes_read;
dee91e82 16349 info_ptr = read_attribute_value (reader, attr, form, info_ptr);
a8329558 16350 break;
3019eac3
DE
16351 case DW_FORM_GNU_addr_index:
16352 if (reader->dwo_file == NULL)
16353 {
16354 /* For now flag a hard error.
16355 Later we can turn this into a complaint. */
16356 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16357 dwarf_form_name (form),
16358 bfd_get_filename (abfd));
16359 }
16360 DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
16361 info_ptr += bytes_read;
16362 break;
16363 case DW_FORM_GNU_str_index:
16364 if (reader->dwo_file == NULL)
16365 {
16366 /* For now flag a hard error.
16367 Later we can turn this into a complaint if warranted. */
16368 error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
16369 dwarf_form_name (form),
16370 bfd_get_filename (abfd));
16371 }
16372 {
16373 ULONGEST str_index =
16374 read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
16375
342587c4 16376 DW_STRING (attr) = read_str_index (reader, str_index);
3019eac3
DE
16377 DW_STRING_IS_CANONICAL (attr) = 0;
16378 info_ptr += bytes_read;
16379 }
16380 break;
c906108c 16381 default:
8a3fe4f8 16382 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
16383 dwarf_form_name (form),
16384 bfd_get_filename (abfd));
c906108c 16385 }
28e94949 16386
36586728 16387 /* Super hack. */
7771576e 16388 if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
36586728
TT
16389 attr->form = DW_FORM_GNU_ref_alt;
16390
28e94949
JB
16391 /* We have seen instances where the compiler tried to emit a byte
16392 size attribute of -1 which ended up being encoded as an unsigned
16393 0xffffffff. Although 0xffffffff is technically a valid size value,
16394 an object of this size seems pretty unlikely so we can relatively
16395 safely treat these cases as if the size attribute was invalid and
16396 treat them as zero by default. */
16397 if (attr->name == DW_AT_byte_size
16398 && form == DW_FORM_data4
16399 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
16400 {
16401 complaint
16402 (&symfile_complaints,
43bbcdc2
PH
16403 _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
16404 hex_string (DW_UNSND (attr)));
01c66ae6
JB
16405 DW_UNSND (attr) = 0;
16406 }
28e94949 16407
c906108c
SS
16408 return info_ptr;
16409}
16410
a8329558
KW
16411/* Read an attribute described by an abbreviated attribute. */
16412
d521ce57 16413static const gdb_byte *
dee91e82
DE
16414read_attribute (const struct die_reader_specs *reader,
16415 struct attribute *attr, struct attr_abbrev *abbrev,
d521ce57 16416 const gdb_byte *info_ptr)
a8329558
KW
16417{
16418 attr->name = abbrev->name;
dee91e82 16419 return read_attribute_value (reader, attr, abbrev->form, info_ptr);
a8329558
KW
16420}
16421
0963b4bd 16422/* Read dwarf information from a buffer. */
c906108c
SS
16423
16424static unsigned int
a1855c1d 16425read_1_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16426{
fe1b8b76 16427 return bfd_get_8 (abfd, buf);
c906108c
SS
16428}
16429
16430static int
a1855c1d 16431read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
c906108c 16432{
fe1b8b76 16433 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
16434}
16435
16436static unsigned int
a1855c1d 16437read_2_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16438{
fe1b8b76 16439 return bfd_get_16 (abfd, buf);
c906108c
SS
16440}
16441
21ae7a4d 16442static int
a1855c1d 16443read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16444{
16445 return bfd_get_signed_16 (abfd, buf);
16446}
16447
c906108c 16448static unsigned int
a1855c1d 16449read_4_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16450{
fe1b8b76 16451 return bfd_get_32 (abfd, buf);
c906108c
SS
16452}
16453
21ae7a4d 16454static int
a1855c1d 16455read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
21ae7a4d
JK
16456{
16457 return bfd_get_signed_32 (abfd, buf);
16458}
16459
93311388 16460static ULONGEST
a1855c1d 16461read_8_bytes (bfd *abfd, const gdb_byte *buf)
c906108c 16462{
fe1b8b76 16463 return bfd_get_64 (abfd, buf);
c906108c
SS
16464}
16465
16466static CORE_ADDR
d521ce57 16467read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 16468 unsigned int *bytes_read)
c906108c 16469{
e7c27a73 16470 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
16471 CORE_ADDR retval = 0;
16472
107d2387 16473 if (cu_header->signed_addr_p)
c906108c 16474 {
107d2387
AC
16475 switch (cu_header->addr_size)
16476 {
16477 case 2:
fe1b8b76 16478 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
16479 break;
16480 case 4:
fe1b8b76 16481 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
16482 break;
16483 case 8:
fe1b8b76 16484 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
16485 break;
16486 default:
8e65ff28 16487 internal_error (__FILE__, __LINE__,
e2e0b3e5 16488 _("read_address: bad switch, signed [in module %s]"),
659b0389 16489 bfd_get_filename (abfd));
107d2387
AC
16490 }
16491 }
16492 else
16493 {
16494 switch (cu_header->addr_size)
16495 {
16496 case 2:
fe1b8b76 16497 retval = bfd_get_16 (abfd, buf);
107d2387
AC
16498 break;
16499 case 4:
fe1b8b76 16500 retval = bfd_get_32 (abfd, buf);
107d2387
AC
16501 break;
16502 case 8:
fe1b8b76 16503 retval = bfd_get_64 (abfd, buf);
107d2387
AC
16504 break;
16505 default:
8e65ff28 16506 internal_error (__FILE__, __LINE__,
a73c6dcd
MS
16507 _("read_address: bad switch, "
16508 "unsigned [in module %s]"),
659b0389 16509 bfd_get_filename (abfd));
107d2387 16510 }
c906108c 16511 }
64367e0a 16512
107d2387
AC
16513 *bytes_read = cu_header->addr_size;
16514 return retval;
c906108c
SS
16515}
16516
f7ef9339 16517/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
16518 specification allows the initial length to take up either 4 bytes
16519 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
16520 bytes describe the length and all offsets will be 8 bytes in length
16521 instead of 4.
16522
f7ef9339
KB
16523 An older, non-standard 64-bit format is also handled by this
16524 function. The older format in question stores the initial length
16525 as an 8-byte quantity without an escape value. Lengths greater
16526 than 2^32 aren't very common which means that the initial 4 bytes
16527 is almost always zero. Since a length value of zero doesn't make
16528 sense for the 32-bit format, this initial zero can be considered to
16529 be an escape value which indicates the presence of the older 64-bit
16530 format. As written, the code can't detect (old format) lengths
917c78fc
MK
16531 greater than 4GB. If it becomes necessary to handle lengths
16532 somewhat larger than 4GB, we could allow other small values (such
16533 as the non-sensical values of 1, 2, and 3) to also be used as
16534 escape values indicating the presence of the old format.
f7ef9339 16535
917c78fc
MK
16536 The value returned via bytes_read should be used to increment the
16537 relevant pointer after calling read_initial_length().
c764a876 16538
613e1657
KB
16539 [ Note: read_initial_length() and read_offset() are based on the
16540 document entitled "DWARF Debugging Information Format", revision
f7ef9339 16541 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
16542 from:
16543
f7ef9339 16544 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
6e70227d 16545
613e1657
KB
16546 This document is only a draft and is subject to change. (So beware.)
16547
f7ef9339 16548 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
16549 determined empirically by examining 64-bit ELF files produced by
16550 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
16551
16552 - Kevin, July 16, 2002
613e1657
KB
16553 ] */
16554
16555static LONGEST
d521ce57 16556read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
613e1657 16557{
fe1b8b76 16558 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 16559
dd373385 16560 if (length == 0xffffffff)
613e1657 16561 {
fe1b8b76 16562 length = bfd_get_64 (abfd, buf + 4);
613e1657 16563 *bytes_read = 12;
613e1657 16564 }
dd373385 16565 else if (length == 0)
f7ef9339 16566 {
dd373385 16567 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 16568 length = bfd_get_64 (abfd, buf);
f7ef9339 16569 *bytes_read = 8;
f7ef9339 16570 }
613e1657
KB
16571 else
16572 {
16573 *bytes_read = 4;
613e1657
KB
16574 }
16575
c764a876
DE
16576 return length;
16577}
dd373385 16578
c764a876
DE
16579/* Cover function for read_initial_length.
16580 Returns the length of the object at BUF, and stores the size of the
16581 initial length in *BYTES_READ and stores the size that offsets will be in
16582 *OFFSET_SIZE.
16583 If the initial length size is not equivalent to that specified in
16584 CU_HEADER then issue a complaint.
16585 This is useful when reading non-comp-unit headers. */
dd373385 16586
c764a876 16587static LONGEST
d521ce57 16588read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
c764a876
DE
16589 const struct comp_unit_head *cu_header,
16590 unsigned int *bytes_read,
16591 unsigned int *offset_size)
16592{
16593 LONGEST length = read_initial_length (abfd, buf, bytes_read);
16594
16595 gdb_assert (cu_header->initial_length_size == 4
16596 || cu_header->initial_length_size == 8
16597 || cu_header->initial_length_size == 12);
16598
16599 if (cu_header->initial_length_size != *bytes_read)
16600 complaint (&symfile_complaints,
16601 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 16602
c764a876 16603 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 16604 return length;
613e1657
KB
16605}
16606
16607/* Read an offset from the data stream. The size of the offset is
917c78fc 16608 given by cu_header->offset_size. */
613e1657
KB
16609
16610static LONGEST
d521ce57
TT
16611read_offset (bfd *abfd, const gdb_byte *buf,
16612 const struct comp_unit_head *cu_header,
891d2f0b 16613 unsigned int *bytes_read)
c764a876
DE
16614{
16615 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
9a619af0 16616
c764a876
DE
16617 *bytes_read = cu_header->offset_size;
16618 return offset;
16619}
16620
16621/* Read an offset from the data stream. */
16622
16623static LONGEST
d521ce57 16624read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
613e1657
KB
16625{
16626 LONGEST retval = 0;
16627
c764a876 16628 switch (offset_size)
613e1657
KB
16629 {
16630 case 4:
fe1b8b76 16631 retval = bfd_get_32 (abfd, buf);
613e1657
KB
16632 break;
16633 case 8:
fe1b8b76 16634 retval = bfd_get_64 (abfd, buf);
613e1657
KB
16635 break;
16636 default:
8e65ff28 16637 internal_error (__FILE__, __LINE__,
c764a876 16638 _("read_offset_1: bad switch [in module %s]"),
659b0389 16639 bfd_get_filename (abfd));
613e1657
KB
16640 }
16641
917c78fc 16642 return retval;
613e1657
KB
16643}
16644
d521ce57
TT
16645static const gdb_byte *
16646read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
c906108c
SS
16647{
16648 /* If the size of a host char is 8 bits, we can return a pointer
16649 to the buffer, otherwise we have to copy the data to a buffer
16650 allocated on the temporary obstack. */
4bdf3d34 16651 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 16652 return buf;
c906108c
SS
16653}
16654
d521ce57
TT
16655static const char *
16656read_direct_string (bfd *abfd, const gdb_byte *buf,
16657 unsigned int *bytes_read_ptr)
c906108c
SS
16658{
16659 /* If the size of a host char is 8 bits, we can return a pointer
16660 to the string, otherwise we have to copy the string to a buffer
16661 allocated on the temporary obstack. */
4bdf3d34 16662 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
16663 if (*buf == '\0')
16664 {
16665 *bytes_read_ptr = 1;
16666 return NULL;
16667 }
d521ce57
TT
16668 *bytes_read_ptr = strlen ((const char *) buf) + 1;
16669 return (const char *) buf;
4bdf3d34
JJ
16670}
16671
d521ce57 16672static const char *
cf2c3c16 16673read_indirect_string_at_offset (bfd *abfd, LONGEST str_offset)
4bdf3d34 16674{
be391dca 16675 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
dce234bc 16676 if (dwarf2_per_objfile->str.buffer == NULL)
cf2c3c16
TT
16677 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
16678 bfd_get_filename (abfd));
dce234bc 16679 if (str_offset >= dwarf2_per_objfile->str.size)
cf2c3c16
TT
16680 error (_("DW_FORM_strp pointing outside of "
16681 ".debug_str section [in module %s]"),
16682 bfd_get_filename (abfd));
4bdf3d34 16683 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 16684 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 16685 return NULL;
d521ce57 16686 return (const char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
16687}
16688
36586728
TT
16689/* Read a string at offset STR_OFFSET in the .debug_str section from
16690 the .dwz file DWZ. Throw an error if the offset is too large. If
16691 the string consists of a single NUL byte, return NULL; otherwise
16692 return a pointer to the string. */
16693
d521ce57 16694static const char *
36586728
TT
16695read_indirect_string_from_dwz (struct dwz_file *dwz, LONGEST str_offset)
16696{
16697 dwarf2_read_section (dwarf2_per_objfile->objfile, &dwz->str);
16698
16699 if (dwz->str.buffer == NULL)
16700 error (_("DW_FORM_GNU_strp_alt used without .debug_str "
16701 "section [in module %s]"),
16702 bfd_get_filename (dwz->dwz_bfd));
16703 if (str_offset >= dwz->str.size)
16704 error (_("DW_FORM_GNU_strp_alt pointing outside of "
16705 ".debug_str section [in module %s]"),
16706 bfd_get_filename (dwz->dwz_bfd));
16707 gdb_assert (HOST_CHAR_BIT == 8);
16708 if (dwz->str.buffer[str_offset] == '\0')
16709 return NULL;
d521ce57 16710 return (const char *) (dwz->str.buffer + str_offset);
36586728
TT
16711}
16712
d521ce57
TT
16713static const char *
16714read_indirect_string (bfd *abfd, const gdb_byte *buf,
cf2c3c16
TT
16715 const struct comp_unit_head *cu_header,
16716 unsigned int *bytes_read_ptr)
16717{
16718 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
16719
16720 return read_indirect_string_at_offset (abfd, str_offset);
16721}
16722
12df843f 16723static ULONGEST
d521ce57
TT
16724read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
16725 unsigned int *bytes_read_ptr)
c906108c 16726{
12df843f 16727 ULONGEST result;
ce5d95e1 16728 unsigned int num_read;
c906108c
SS
16729 int i, shift;
16730 unsigned char byte;
16731
16732 result = 0;
16733 shift = 0;
16734 num_read = 0;
16735 i = 0;
16736 while (1)
16737 {
fe1b8b76 16738 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16739 buf++;
16740 num_read++;
12df843f 16741 result |= ((ULONGEST) (byte & 127) << shift);
c906108c
SS
16742 if ((byte & 128) == 0)
16743 {
16744 break;
16745 }
16746 shift += 7;
16747 }
16748 *bytes_read_ptr = num_read;
16749 return result;
16750}
16751
12df843f 16752static LONGEST
d521ce57
TT
16753read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
16754 unsigned int *bytes_read_ptr)
c906108c 16755{
12df843f 16756 LONGEST result;
77e0b926 16757 int i, shift, num_read;
c906108c
SS
16758 unsigned char byte;
16759
16760 result = 0;
16761 shift = 0;
c906108c
SS
16762 num_read = 0;
16763 i = 0;
16764 while (1)
16765 {
fe1b8b76 16766 byte = bfd_get_8 (abfd, buf);
c906108c
SS
16767 buf++;
16768 num_read++;
12df843f 16769 result |= ((LONGEST) (byte & 127) << shift);
c906108c
SS
16770 shift += 7;
16771 if ((byte & 128) == 0)
16772 {
16773 break;
16774 }
16775 }
77e0b926 16776 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
12df843f 16777 result |= -(((LONGEST) 1) << shift);
c906108c
SS
16778 *bytes_read_ptr = num_read;
16779 return result;
16780}
16781
3019eac3
DE
16782/* Given index ADDR_INDEX in .debug_addr, fetch the value.
16783 ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
16784 ADDR_SIZE is the size of addresses from the CU header. */
16785
16786static CORE_ADDR
16787read_addr_index_1 (unsigned int addr_index, ULONGEST addr_base, int addr_size)
16788{
16789 struct objfile *objfile = dwarf2_per_objfile->objfile;
16790 bfd *abfd = objfile->obfd;
16791 const gdb_byte *info_ptr;
16792
16793 dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
16794 if (dwarf2_per_objfile->addr.buffer == NULL)
16795 error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
4262abfb 16796 objfile_name (objfile));
3019eac3
DE
16797 if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
16798 error (_("DW_FORM_addr_index pointing outside of "
16799 ".debug_addr section [in module %s]"),
4262abfb 16800 objfile_name (objfile));
3019eac3
DE
16801 info_ptr = (dwarf2_per_objfile->addr.buffer
16802 + addr_base + addr_index * addr_size);
16803 if (addr_size == 4)
16804 return bfd_get_32 (abfd, info_ptr);
16805 else
16806 return bfd_get_64 (abfd, info_ptr);
16807}
16808
16809/* Given index ADDR_INDEX in .debug_addr, fetch the value. */
16810
16811static CORE_ADDR
16812read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
16813{
16814 return read_addr_index_1 (addr_index, cu->addr_base, cu->header.addr_size);
16815}
16816
16817/* Given a pointer to an leb128 value, fetch the value from .debug_addr. */
16818
16819static CORE_ADDR
d521ce57 16820read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
3019eac3
DE
16821 unsigned int *bytes_read)
16822{
16823 bfd *abfd = cu->objfile->obfd;
16824 unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
16825
16826 return read_addr_index (cu, addr_index);
16827}
16828
16829/* Data structure to pass results from dwarf2_read_addr_index_reader
16830 back to dwarf2_read_addr_index. */
16831
16832struct dwarf2_read_addr_index_data
16833{
16834 ULONGEST addr_base;
16835 int addr_size;
16836};
16837
16838/* die_reader_func for dwarf2_read_addr_index. */
16839
16840static void
16841dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
d521ce57 16842 const gdb_byte *info_ptr,
3019eac3
DE
16843 struct die_info *comp_unit_die,
16844 int has_children,
16845 void *data)
16846{
16847 struct dwarf2_cu *cu = reader->cu;
16848 struct dwarf2_read_addr_index_data *aidata =
16849 (struct dwarf2_read_addr_index_data *) data;
16850
16851 aidata->addr_base = cu->addr_base;
16852 aidata->addr_size = cu->header.addr_size;
16853}
16854
16855/* Given an index in .debug_addr, fetch the value.
16856 NOTE: This can be called during dwarf expression evaluation,
16857 long after the debug information has been read, and thus per_cu->cu
16858 may no longer exist. */
16859
16860CORE_ADDR
16861dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
16862 unsigned int addr_index)
16863{
16864 struct objfile *objfile = per_cu->objfile;
16865 struct dwarf2_cu *cu = per_cu->cu;
16866 ULONGEST addr_base;
16867 int addr_size;
16868
16869 /* This is intended to be called from outside this file. */
16870 dw2_setup (objfile);
16871
16872 /* We need addr_base and addr_size.
16873 If we don't have PER_CU->cu, we have to get it.
16874 Nasty, but the alternative is storing the needed info in PER_CU,
16875 which at this point doesn't seem justified: it's not clear how frequently
16876 it would get used and it would increase the size of every PER_CU.
16877 Entry points like dwarf2_per_cu_addr_size do a similar thing
16878 so we're not in uncharted territory here.
16879 Alas we need to be a bit more complicated as addr_base is contained
16880 in the DIE.
16881
16882 We don't need to read the entire CU(/TU).
16883 We just need the header and top level die.
a1b64ce1 16884
3019eac3 16885 IWBN to use the aging mechanism to let us lazily later discard the CU.
a1b64ce1 16886 For now we skip this optimization. */
3019eac3
DE
16887
16888 if (cu != NULL)
16889 {
16890 addr_base = cu->addr_base;
16891 addr_size = cu->header.addr_size;
16892 }
16893 else
16894 {
16895 struct dwarf2_read_addr_index_data aidata;
16896
a1b64ce1
DE
16897 /* Note: We can't use init_cutu_and_read_dies_simple here,
16898 we need addr_base. */
16899 init_cutu_and_read_dies (per_cu, NULL, 0, 0,
16900 dwarf2_read_addr_index_reader, &aidata);
3019eac3
DE
16901 addr_base = aidata.addr_base;
16902 addr_size = aidata.addr_size;
16903 }
16904
16905 return read_addr_index_1 (addr_index, addr_base, addr_size);
16906}
16907
57d63ce2
DE
16908/* Given a DW_FORM_GNU_str_index, fetch the string.
16909 This is only used by the Fission support. */
3019eac3 16910
d521ce57 16911static const char *
342587c4 16912read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
3019eac3
DE
16913{
16914 struct objfile *objfile = dwarf2_per_objfile->objfile;
c5164cbc 16915 const char *objf_name = objfile_name (objfile);
3019eac3 16916 bfd *abfd = objfile->obfd;
342587c4 16917 struct dwarf2_cu *cu = reader->cu;
73869dc2
DE
16918 struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
16919 struct dwarf2_section_info *str_offsets_section =
16920 &reader->dwo_file->sections.str_offsets;
d521ce57 16921 const gdb_byte *info_ptr;
3019eac3 16922 ULONGEST str_offset;
57d63ce2 16923 static const char form_name[] = "DW_FORM_GNU_str_index";
3019eac3 16924
73869dc2
DE
16925 dwarf2_read_section (objfile, str_section);
16926 dwarf2_read_section (objfile, str_offsets_section);
16927 if (str_section->buffer == NULL)
57d63ce2 16928 error (_("%s used without .debug_str.dwo section"
3019eac3 16929 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16930 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16931 if (str_offsets_section->buffer == NULL)
57d63ce2 16932 error (_("%s used without .debug_str_offsets.dwo section"
3019eac3 16933 " in CU at offset 0x%lx [in module %s]"),
c5164cbc 16934 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16935 if (str_index * cu->header.offset_size >= str_offsets_section->size)
57d63ce2 16936 error (_("%s pointing outside of .debug_str_offsets.dwo"
3019eac3 16937 " section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16938 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16939 info_ptr = (str_offsets_section->buffer
3019eac3
DE
16940 + str_index * cu->header.offset_size);
16941 if (cu->header.offset_size == 4)
16942 str_offset = bfd_get_32 (abfd, info_ptr);
16943 else
16944 str_offset = bfd_get_64 (abfd, info_ptr);
73869dc2 16945 if (str_offset >= str_section->size)
57d63ce2 16946 error (_("Offset from %s pointing outside of"
3019eac3 16947 " .debug_str.dwo section in CU at offset 0x%lx [in module %s]"),
c5164cbc 16948 form_name, (long) cu->header.offset.sect_off, objf_name);
73869dc2 16949 return (const char *) (str_section->buffer + str_offset);
3019eac3
DE
16950}
16951
3019eac3
DE
16952/* Return the length of an LEB128 number in BUF. */
16953
16954static int
16955leb128_size (const gdb_byte *buf)
16956{
16957 const gdb_byte *begin = buf;
16958 gdb_byte byte;
16959
16960 while (1)
16961 {
16962 byte = *buf++;
16963 if ((byte & 128) == 0)
16964 return buf - begin;
16965 }
16966}
16967
c906108c 16968static void
e142c38c 16969set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
16970{
16971 switch (lang)
16972 {
16973 case DW_LANG_C89:
76bee0cc 16974 case DW_LANG_C99:
0cfd832f 16975 case DW_LANG_C11:
c906108c 16976 case DW_LANG_C:
d1be3247 16977 case DW_LANG_UPC:
e142c38c 16978 cu->language = language_c;
c906108c
SS
16979 break;
16980 case DW_LANG_C_plus_plus:
0cfd832f
MW
16981 case DW_LANG_C_plus_plus_11:
16982 case DW_LANG_C_plus_plus_14:
e142c38c 16983 cu->language = language_cplus;
c906108c 16984 break;
6aecb9c2
JB
16985 case DW_LANG_D:
16986 cu->language = language_d;
16987 break;
c906108c
SS
16988 case DW_LANG_Fortran77:
16989 case DW_LANG_Fortran90:
b21b22e0 16990 case DW_LANG_Fortran95:
f7de9aab
MW
16991 case DW_LANG_Fortran03:
16992 case DW_LANG_Fortran08:
e142c38c 16993 cu->language = language_fortran;
c906108c 16994 break;
a766d390
DE
16995 case DW_LANG_Go:
16996 cu->language = language_go;
16997 break;
c906108c 16998 case DW_LANG_Mips_Assembler:
e142c38c 16999 cu->language = language_asm;
c906108c 17000 break;
bebd888e 17001 case DW_LANG_Java:
e142c38c 17002 cu->language = language_java;
bebd888e 17003 break;
c906108c 17004 case DW_LANG_Ada83:
8aaf0b47 17005 case DW_LANG_Ada95:
bc5f45f8
JB
17006 cu->language = language_ada;
17007 break;
72019c9c
GM
17008 case DW_LANG_Modula2:
17009 cu->language = language_m2;
17010 break;
fe8e67fd
PM
17011 case DW_LANG_Pascal83:
17012 cu->language = language_pascal;
17013 break;
22566fbd
DJ
17014 case DW_LANG_ObjC:
17015 cu->language = language_objc;
17016 break;
c906108c
SS
17017 case DW_LANG_Cobol74:
17018 case DW_LANG_Cobol85:
c906108c 17019 default:
e142c38c 17020 cu->language = language_minimal;
c906108c
SS
17021 break;
17022 }
e142c38c 17023 cu->language_defn = language_def (cu->language);
c906108c
SS
17024}
17025
17026/* Return the named attribute or NULL if not there. */
17027
17028static struct attribute *
e142c38c 17029dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c 17030{
a48e046c 17031 for (;;)
c906108c 17032 {
a48e046c
TT
17033 unsigned int i;
17034 struct attribute *spec = NULL;
17035
17036 for (i = 0; i < die->num_attrs; ++i)
17037 {
17038 if (die->attrs[i].name == name)
17039 return &die->attrs[i];
17040 if (die->attrs[i].name == DW_AT_specification
17041 || die->attrs[i].name == DW_AT_abstract_origin)
17042 spec = &die->attrs[i];
17043 }
17044
17045 if (!spec)
17046 break;
c906108c 17047
f2f0e013 17048 die = follow_die_ref (die, spec, &cu);
f2f0e013 17049 }
c5aa993b 17050
c906108c
SS
17051 return NULL;
17052}
17053
348e048f
DE
17054/* Return the named attribute or NULL if not there,
17055 but do not follow DW_AT_specification, etc.
17056 This is for use in contexts where we're reading .debug_types dies.
17057 Following DW_AT_specification, DW_AT_abstract_origin will take us
17058 back up the chain, and we want to go down. */
17059
17060static struct attribute *
45e58e77 17061dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
348e048f
DE
17062{
17063 unsigned int i;
17064
17065 for (i = 0; i < die->num_attrs; ++i)
17066 if (die->attrs[i].name == name)
17067 return &die->attrs[i];
17068
17069 return NULL;
17070}
17071
05cf31d1
JB
17072/* Return non-zero iff the attribute NAME is defined for the given DIE,
17073 and holds a non-zero value. This function should only be used for
2dc7f7b3 17074 DW_FORM_flag or DW_FORM_flag_present attributes. */
05cf31d1
JB
17075
17076static int
17077dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
17078{
17079 struct attribute *attr = dwarf2_attr (die, name, cu);
17080
17081 return (attr && DW_UNSND (attr));
17082}
17083
3ca72b44 17084static int
e142c38c 17085die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 17086{
05cf31d1
JB
17087 /* A DIE is a declaration if it has a DW_AT_declaration attribute
17088 which value is non-zero. However, we have to be careful with
17089 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
17090 (via dwarf2_flag_true_p) follows this attribute. So we may
17091 end up accidently finding a declaration attribute that belongs
17092 to a different DIE referenced by the specification attribute,
17093 even though the given DIE does not have a declaration attribute. */
17094 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
17095 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
17096}
17097
63d06c5c 17098/* Return the die giving the specification for DIE, if there is
f2f0e013 17099 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
17100 containing the return value on output. If there is no
17101 specification, but there is an abstract origin, that is
17102 returned. */
63d06c5c
DC
17103
17104static struct die_info *
f2f0e013 17105die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 17106{
f2f0e013
DJ
17107 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
17108 *spec_cu);
63d06c5c 17109
edb3359d
DJ
17110 if (spec_attr == NULL)
17111 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
17112
63d06c5c
DC
17113 if (spec_attr == NULL)
17114 return NULL;
17115 else
f2f0e013 17116 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 17117}
c906108c 17118
debd256d 17119/* Free the line_header structure *LH, and any arrays and strings it
ae2de4f8
DE
17120 refers to.
17121 NOTE: This is also used as a "cleanup" function. */
17122
debd256d
JB
17123static void
17124free_line_header (struct line_header *lh)
17125{
17126 if (lh->standard_opcode_lengths)
a8bc7b56 17127 xfree (lh->standard_opcode_lengths);
debd256d
JB
17128
17129 /* Remember that all the lh->file_names[i].name pointers are
17130 pointers into debug_line_buffer, and don't need to be freed. */
17131 if (lh->file_names)
a8bc7b56 17132 xfree (lh->file_names);
debd256d
JB
17133
17134 /* Similarly for the include directory names. */
17135 if (lh->include_dirs)
a8bc7b56 17136 xfree (lh->include_dirs);
debd256d 17137
a8bc7b56 17138 xfree (lh);
debd256d
JB
17139}
17140
527f3840
JK
17141/* Stub for free_line_header to match void * callback types. */
17142
17143static void
17144free_line_header_voidp (void *arg)
17145{
17146 struct line_header *lh = arg;
17147
17148 free_line_header (lh);
17149}
17150
debd256d 17151/* Add an entry to LH's include directory table. */
ae2de4f8 17152
debd256d 17153static void
d521ce57 17154add_include_dir (struct line_header *lh, const char *include_dir)
c906108c 17155{
27e0867f
DE
17156 if (dwarf_line_debug >= 2)
17157 fprintf_unfiltered (gdb_stdlog, "Adding dir %u: %s\n",
17158 lh->num_include_dirs + 1, include_dir);
17159
debd256d
JB
17160 /* Grow the array if necessary. */
17161 if (lh->include_dirs_size == 0)
c5aa993b 17162 {
debd256d
JB
17163 lh->include_dirs_size = 1; /* for testing */
17164 lh->include_dirs = xmalloc (lh->include_dirs_size
17165 * sizeof (*lh->include_dirs));
17166 }
17167 else if (lh->num_include_dirs >= lh->include_dirs_size)
17168 {
17169 lh->include_dirs_size *= 2;
17170 lh->include_dirs = xrealloc (lh->include_dirs,
17171 (lh->include_dirs_size
17172 * sizeof (*lh->include_dirs)));
c5aa993b 17173 }
c906108c 17174
debd256d
JB
17175 lh->include_dirs[lh->num_include_dirs++] = include_dir;
17176}
6e70227d 17177
debd256d 17178/* Add an entry to LH's file name table. */
ae2de4f8 17179
debd256d
JB
17180static void
17181add_file_name (struct line_header *lh,
d521ce57 17182 const char *name,
debd256d
JB
17183 unsigned int dir_index,
17184 unsigned int mod_time,
17185 unsigned int length)
17186{
17187 struct file_entry *fe;
17188
27e0867f
DE
17189 if (dwarf_line_debug >= 2)
17190 fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
17191 lh->num_file_names + 1, name);
17192
debd256d
JB
17193 /* Grow the array if necessary. */
17194 if (lh->file_names_size == 0)
17195 {
17196 lh->file_names_size = 1; /* for testing */
17197 lh->file_names = xmalloc (lh->file_names_size
17198 * sizeof (*lh->file_names));
17199 }
17200 else if (lh->num_file_names >= lh->file_names_size)
17201 {
17202 lh->file_names_size *= 2;
17203 lh->file_names = xrealloc (lh->file_names,
17204 (lh->file_names_size
17205 * sizeof (*lh->file_names)));
17206 }
17207
17208 fe = &lh->file_names[lh->num_file_names++];
17209 fe->name = name;
17210 fe->dir_index = dir_index;
17211 fe->mod_time = mod_time;
17212 fe->length = length;
aaa75496 17213 fe->included_p = 0;
cb1df416 17214 fe->symtab = NULL;
debd256d 17215}
6e70227d 17216
83769d0b 17217/* A convenience function to find the proper .debug_line section for a CU. */
36586728
TT
17218
17219static struct dwarf2_section_info *
17220get_debug_line_section (struct dwarf2_cu *cu)
17221{
17222 struct dwarf2_section_info *section;
17223
17224 /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
17225 DWO file. */
17226 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17227 section = &cu->dwo_unit->dwo_file->sections.line;
17228 else if (cu->per_cu->is_dwz)
17229 {
17230 struct dwz_file *dwz = dwarf2_get_dwz_file ();
17231
17232 section = &dwz->line;
17233 }
17234 else
17235 section = &dwarf2_per_objfile->line;
17236
17237 return section;
17238}
17239
debd256d 17240/* Read the statement program header starting at OFFSET in
3019eac3 17241 .debug_line, or .debug_line.dwo. Return a pointer
6502dd73 17242 to a struct line_header, allocated using xmalloc.
cd366ee8
DE
17243 Returns NULL if there is a problem reading the header, e.g., if it
17244 has a version we don't understand.
debd256d
JB
17245
17246 NOTE: the strings in the include directory and file name tables of
3019eac3
DE
17247 the returned object point into the dwarf line section buffer,
17248 and must not be freed. */
ae2de4f8 17249
debd256d 17250static struct line_header *
3019eac3 17251dwarf_decode_line_header (unsigned int offset, struct dwarf2_cu *cu)
debd256d
JB
17252{
17253 struct cleanup *back_to;
17254 struct line_header *lh;
d521ce57 17255 const gdb_byte *line_ptr;
c764a876 17256 unsigned int bytes_read, offset_size;
debd256d 17257 int i;
d521ce57 17258 const char *cur_dir, *cur_file;
3019eac3
DE
17259 struct dwarf2_section_info *section;
17260 bfd *abfd;
17261
36586728 17262 section = get_debug_line_section (cu);
3019eac3
DE
17263 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
17264 if (section->buffer == NULL)
debd256d 17265 {
3019eac3
DE
17266 if (cu->dwo_unit && cu->per_cu->is_debug_types)
17267 complaint (&symfile_complaints, _("missing .debug_line.dwo section"));
17268 else
17269 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
17270 return 0;
17271 }
17272
fceca515
DE
17273 /* We can't do this until we know the section is non-empty.
17274 Only then do we know we have such a section. */
a32a8923 17275 abfd = get_section_bfd_owner (section);
fceca515 17276
a738430d
MK
17277 /* Make sure that at least there's room for the total_length field.
17278 That could be 12 bytes long, but we're just going to fudge that. */
3019eac3 17279 if (offset + 4 >= section->size)
debd256d 17280 {
4d3c2250 17281 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
17282 return 0;
17283 }
17284
17285 lh = xmalloc (sizeof (*lh));
17286 memset (lh, 0, sizeof (*lh));
17287 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
17288 (void *) lh);
17289
527f3840
JK
17290 lh->offset.sect_off = offset;
17291 lh->offset_in_dwz = cu->per_cu->is_dwz;
17292
3019eac3 17293 line_ptr = section->buffer + offset;
debd256d 17294
a738430d 17295 /* Read in the header. */
6e70227d 17296 lh->total_length =
c764a876
DE
17297 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
17298 &bytes_read, &offset_size);
debd256d 17299 line_ptr += bytes_read;
3019eac3 17300 if (line_ptr + lh->total_length > (section->buffer + section->size))
debd256d 17301 {
4d3c2250 17302 dwarf2_statement_list_fits_in_line_number_section_complaint ();
2f324bf6 17303 do_cleanups (back_to);
debd256d
JB
17304 return 0;
17305 }
17306 lh->statement_program_end = line_ptr + lh->total_length;
17307 lh->version = read_2_bytes (abfd, line_ptr);
17308 line_ptr += 2;
cd366ee8
DE
17309 if (lh->version > 4)
17310 {
17311 /* This is a version we don't understand. The format could have
17312 changed in ways we don't handle properly so just punt. */
17313 complaint (&symfile_complaints,
17314 _("unsupported version in .debug_line section"));
17315 return NULL;
17316 }
c764a876
DE
17317 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
17318 line_ptr += offset_size;
debd256d
JB
17319 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
17320 line_ptr += 1;
2dc7f7b3
TT
17321 if (lh->version >= 4)
17322 {
17323 lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
17324 line_ptr += 1;
17325 }
17326 else
17327 lh->maximum_ops_per_instruction = 1;
17328
17329 if (lh->maximum_ops_per_instruction == 0)
17330 {
17331 lh->maximum_ops_per_instruction = 1;
17332 complaint (&symfile_complaints,
3e43a32a
MS
17333 _("invalid maximum_ops_per_instruction "
17334 "in `.debug_line' section"));
2dc7f7b3
TT
17335 }
17336
debd256d
JB
17337 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
17338 line_ptr += 1;
17339 lh->line_base = read_1_signed_byte (abfd, line_ptr);
17340 line_ptr += 1;
17341 lh->line_range = read_1_byte (abfd, line_ptr);
17342 line_ptr += 1;
17343 lh->opcode_base = read_1_byte (abfd, line_ptr);
17344 line_ptr += 1;
17345 lh->standard_opcode_lengths
fe1b8b76 17346 = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
debd256d
JB
17347
17348 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
17349 for (i = 1; i < lh->opcode_base; ++i)
17350 {
17351 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
17352 line_ptr += 1;
17353 }
17354
a738430d 17355 /* Read directory table. */
9b1c24c8 17356 while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17357 {
17358 line_ptr += bytes_read;
17359 add_include_dir (lh, cur_dir);
17360 }
17361 line_ptr += bytes_read;
17362
a738430d 17363 /* Read file name table. */
9b1c24c8 17364 while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
debd256d
JB
17365 {
17366 unsigned int dir_index, mod_time, length;
17367
17368 line_ptr += bytes_read;
17369 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17370 line_ptr += bytes_read;
17371 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17372 line_ptr += bytes_read;
17373 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17374 line_ptr += bytes_read;
17375
17376 add_file_name (lh, cur_file, dir_index, mod_time, length);
17377 }
17378 line_ptr += bytes_read;
6e70227d 17379 lh->statement_program_start = line_ptr;
debd256d 17380
3019eac3 17381 if (line_ptr > (section->buffer + section->size))
4d3c2250 17382 complaint (&symfile_complaints,
3e43a32a
MS
17383 _("line number info header doesn't "
17384 "fit in `.debug_line' section"));
debd256d
JB
17385
17386 discard_cleanups (back_to);
17387 return lh;
17388}
c906108c 17389
c6da4cef
DE
17390/* Subroutine of dwarf_decode_lines to simplify it.
17391 Return the file name of the psymtab for included file FILE_INDEX
17392 in line header LH of PST.
17393 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
17394 If space for the result is malloc'd, it will be freed by a cleanup.
1ed59174
JK
17395 Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.
17396
17397 The function creates dangling cleanup registration. */
c6da4cef 17398
d521ce57 17399static const char *
c6da4cef
DE
17400psymtab_include_file_name (const struct line_header *lh, int file_index,
17401 const struct partial_symtab *pst,
17402 const char *comp_dir)
17403{
17404 const struct file_entry fe = lh->file_names [file_index];
d521ce57
TT
17405 const char *include_name = fe.name;
17406 const char *include_name_to_compare = include_name;
17407 const char *dir_name = NULL;
72b9f47f
TT
17408 const char *pst_filename;
17409 char *copied_name = NULL;
c6da4cef
DE
17410 int file_is_pst;
17411
afa6c9ab 17412 if (fe.dir_index && lh->include_dirs != NULL)
c6da4cef
DE
17413 dir_name = lh->include_dirs[fe.dir_index - 1];
17414
17415 if (!IS_ABSOLUTE_PATH (include_name)
17416 && (dir_name != NULL || comp_dir != NULL))
17417 {
17418 /* Avoid creating a duplicate psymtab for PST.
17419 We do this by comparing INCLUDE_NAME and PST_FILENAME.
17420 Before we do the comparison, however, we need to account
17421 for DIR_NAME and COMP_DIR.
17422 First prepend dir_name (if non-NULL). If we still don't
17423 have an absolute path prepend comp_dir (if non-NULL).
17424 However, the directory we record in the include-file's
17425 psymtab does not contain COMP_DIR (to match the
17426 corresponding symtab(s)).
17427
17428 Example:
17429
17430 bash$ cd /tmp
17431 bash$ gcc -g ./hello.c
17432 include_name = "hello.c"
17433 dir_name = "."
17434 DW_AT_comp_dir = comp_dir = "/tmp"
5f52445b
YQ
17435 DW_AT_name = "./hello.c"
17436
17437 */
c6da4cef
DE
17438
17439 if (dir_name != NULL)
17440 {
d521ce57
TT
17441 char *tem = concat (dir_name, SLASH_STRING,
17442 include_name, (char *)NULL);
17443
17444 make_cleanup (xfree, tem);
17445 include_name = tem;
c6da4cef 17446 include_name_to_compare = include_name;
c6da4cef
DE
17447 }
17448 if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
17449 {
d521ce57
TT
17450 char *tem = concat (comp_dir, SLASH_STRING,
17451 include_name, (char *)NULL);
17452
17453 make_cleanup (xfree, tem);
17454 include_name_to_compare = tem;
c6da4cef
DE
17455 }
17456 }
17457
17458 pst_filename = pst->filename;
17459 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
17460 {
72b9f47f
TT
17461 copied_name = concat (pst->dirname, SLASH_STRING,
17462 pst_filename, (char *)NULL);
17463 pst_filename = copied_name;
c6da4cef
DE
17464 }
17465
1e3fad37 17466 file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
c6da4cef 17467
72b9f47f
TT
17468 if (copied_name != NULL)
17469 xfree (copied_name);
c6da4cef
DE
17470
17471 if (file_is_pst)
17472 return NULL;
17473 return include_name;
17474}
17475
d9b3de22
DE
17476/* State machine to track the state of the line number program. */
17477
17478typedef struct
17479{
17480 /* These are part of the standard DWARF line number state machine. */
17481
17482 unsigned char op_index;
17483 unsigned int file;
17484 unsigned int line;
17485 CORE_ADDR address;
17486 int is_stmt;
17487 unsigned int discriminator;
17488
17489 /* Additional bits of state we need to track. */
17490
17491 /* The last file that we called dwarf2_start_subfile for.
17492 This is only used for TLLs. */
17493 unsigned int last_file;
17494 /* The last file a line number was recorded for. */
17495 struct subfile *last_subfile;
17496
17497 /* The function to call to record a line. */
17498 record_line_ftype *record_line;
17499
17500 /* The last line number that was recorded, used to coalesce
17501 consecutive entries for the same line. This can happen, for
17502 example, when discriminators are present. PR 17276. */
17503 unsigned int last_line;
17504 int line_has_non_zero_discriminator;
17505} lnp_state_machine;
17506
17507/* There's a lot of static state to pass to dwarf_record_line.
17508 This keeps it all together. */
17509
17510typedef struct
17511{
17512 /* The gdbarch. */
17513 struct gdbarch *gdbarch;
17514
17515 /* The line number header. */
17516 struct line_header *line_header;
17517
17518 /* Non-zero if we're recording lines.
17519 Otherwise we're building partial symtabs and are just interested in
17520 finding include files mentioned by the line number program. */
17521 int record_lines_p;
17522} lnp_reader_state;
17523
c91513d8
PP
17524/* Ignore this record_line request. */
17525
17526static void
17527noop_record_line (struct subfile *subfile, int line, CORE_ADDR pc)
17528{
17529 return;
17530}
17531
a05a36a5
DE
17532/* Return non-zero if we should add LINE to the line number table.
17533 LINE is the line to add, LAST_LINE is the last line that was added,
17534 LAST_SUBFILE is the subfile for LAST_LINE.
17535 LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
17536 had a non-zero discriminator.
17537
17538 We have to be careful in the presence of discriminators.
17539 E.g., for this line:
17540
17541 for (i = 0; i < 100000; i++);
17542
17543 clang can emit four line number entries for that one line,
17544 each with a different discriminator.
17545 See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
17546
17547 However, we want gdb to coalesce all four entries into one.
17548 Otherwise the user could stepi into the middle of the line and
17549 gdb would get confused about whether the pc really was in the
17550 middle of the line.
17551
17552 Things are further complicated by the fact that two consecutive
17553 line number entries for the same line is a heuristic used by gcc
17554 to denote the end of the prologue. So we can't just discard duplicate
17555 entries, we have to be selective about it. The heuristic we use is
17556 that we only collapse consecutive entries for the same line if at least
17557 one of those entries has a non-zero discriminator. PR 17276.
17558
17559 Note: Addresses in the line number state machine can never go backwards
17560 within one sequence, thus this coalescing is ok. */
17561
17562static int
17563dwarf_record_line_p (unsigned int line, unsigned int last_line,
17564 int line_has_non_zero_discriminator,
17565 struct subfile *last_subfile)
17566{
17567 if (current_subfile != last_subfile)
17568 return 1;
17569 if (line != last_line)
17570 return 1;
17571 /* Same line for the same file that we've seen already.
17572 As a last check, for pr 17276, only record the line if the line
17573 has never had a non-zero discriminator. */
17574 if (!line_has_non_zero_discriminator)
17575 return 1;
17576 return 0;
17577}
17578
252a6764
DE
17579/* Use P_RECORD_LINE to record line number LINE beginning at address ADDRESS
17580 in the line table of subfile SUBFILE. */
17581
17582static void
d9b3de22
DE
17583dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
17584 unsigned int line, CORE_ADDR address,
17585 record_line_ftype p_record_line)
252a6764
DE
17586{
17587 CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
17588
27e0867f
DE
17589 if (dwarf_line_debug)
17590 {
17591 fprintf_unfiltered (gdb_stdlog,
17592 "Recording line %u, file %s, address %s\n",
17593 line, lbasename (subfile->name),
17594 paddress (gdbarch, address));
17595 }
17596
d5962de5 17597 (*p_record_line) (subfile, line, addr);
252a6764
DE
17598}
17599
17600/* Subroutine of dwarf_decode_lines_1 to simplify it.
17601 Mark the end of a set of line number records.
d9b3de22 17602 The arguments are the same as for dwarf_record_line_1.
252a6764
DE
17603 If SUBFILE is NULL the request is ignored. */
17604
17605static void
17606dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
17607 CORE_ADDR address, record_line_ftype p_record_line)
17608{
27e0867f
DE
17609 if (subfile == NULL)
17610 return;
17611
17612 if (dwarf_line_debug)
17613 {
17614 fprintf_unfiltered (gdb_stdlog,
17615 "Finishing current line, file %s, address %s\n",
17616 lbasename (subfile->name),
17617 paddress (gdbarch, address));
17618 }
17619
d9b3de22
DE
17620 dwarf_record_line_1 (gdbarch, subfile, 0, address, p_record_line);
17621}
17622
17623/* Record the line in STATE.
17624 END_SEQUENCE is non-zero if we're processing the end of a sequence. */
17625
17626static void
17627dwarf_record_line (lnp_reader_state *reader, lnp_state_machine *state,
17628 int end_sequence)
17629{
17630 const struct line_header *lh = reader->line_header;
17631 unsigned int file, line, discriminator;
17632 int is_stmt;
17633
17634 file = state->file;
17635 line = state->line;
17636 is_stmt = state->is_stmt;
17637 discriminator = state->discriminator;
17638
17639 if (dwarf_line_debug)
17640 {
17641 fprintf_unfiltered (gdb_stdlog,
17642 "Processing actual line %u: file %u,"
17643 " address %s, is_stmt %u, discrim %u\n",
17644 line, file,
17645 paddress (reader->gdbarch, state->address),
17646 is_stmt, discriminator);
17647 }
17648
17649 if (file == 0 || file - 1 >= lh->num_file_names)
17650 dwarf2_debug_line_missing_file_complaint ();
17651 /* For now we ignore lines not starting on an instruction boundary.
17652 But not when processing end_sequence for compatibility with the
17653 previous version of the code. */
17654 else if (state->op_index == 0 || end_sequence)
17655 {
17656 lh->file_names[file - 1].included_p = 1;
17657 if (reader->record_lines_p && is_stmt)
17658 {
e815d2d2 17659 if (state->last_subfile != current_subfile || end_sequence)
d9b3de22
DE
17660 {
17661 dwarf_finish_line (reader->gdbarch, state->last_subfile,
17662 state->address, state->record_line);
17663 }
17664
17665 if (!end_sequence)
17666 {
17667 if (dwarf_record_line_p (line, state->last_line,
17668 state->line_has_non_zero_discriminator,
17669 state->last_subfile))
17670 {
17671 dwarf_record_line_1 (reader->gdbarch, current_subfile,
17672 line, state->address,
17673 state->record_line);
17674 }
17675 state->last_subfile = current_subfile;
17676 state->last_line = line;
17677 }
17678 }
17679 }
17680}
17681
17682/* Initialize STATE for the start of a line number program. */
17683
17684static void
17685init_lnp_state_machine (lnp_state_machine *state,
17686 const lnp_reader_state *reader)
17687{
17688 memset (state, 0, sizeof (*state));
17689
17690 /* Just starting, there is no "last file". */
17691 state->last_file = 0;
17692 state->last_subfile = NULL;
17693
17694 state->record_line = record_line;
17695
17696 state->last_line = 0;
17697 state->line_has_non_zero_discriminator = 0;
17698
17699 /* Initialize these according to the DWARF spec. */
17700 state->op_index = 0;
17701 state->file = 1;
17702 state->line = 1;
17703 /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
17704 was a line entry for it so that the backend has a chance to adjust it
17705 and also record it in case it needs it. This is currently used by MIPS
17706 code, cf. `mips_adjust_dwarf2_line'. */
17707 state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0);
17708 state->is_stmt = reader->line_header->default_is_stmt;
17709 state->discriminator = 0;
252a6764
DE
17710}
17711
924c2928
DE
17712/* Check address and if invalid nop-out the rest of the lines in this
17713 sequence. */
17714
17715static void
d9b3de22 17716check_line_address (struct dwarf2_cu *cu, lnp_state_machine *state,
924c2928
DE
17717 const gdb_byte *line_ptr,
17718 CORE_ADDR lowpc, CORE_ADDR address)
17719{
17720 /* If address < lowpc then it's not a usable value, it's outside the
17721 pc range of the CU. However, we restrict the test to only address
17722 values of zero to preserve GDB's previous behaviour which is to
17723 handle the specific case of a function being GC'd by the linker. */
17724
17725 if (address == 0 && address < lowpc)
17726 {
17727 /* This line table is for a function which has been
17728 GCd by the linker. Ignore it. PR gdb/12528 */
17729
17730 struct objfile *objfile = cu->objfile;
17731 long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
17732
17733 complaint (&symfile_complaints,
17734 _(".debug_line address at offset 0x%lx is 0 [in module %s]"),
17735 line_offset, objfile_name (objfile));
d9b3de22
DE
17736 state->record_line = noop_record_line;
17737 /* Note: sm.record_line is left as noop_record_line
924c2928
DE
17738 until we see DW_LNE_end_sequence. */
17739 }
17740}
17741
f3f5162e 17742/* Subroutine of dwarf_decode_lines to simplify it.
d9b3de22
DE
17743 Process the line number information in LH.
17744 If DECODE_FOR_PST_P is non-zero, all we do is process the line number
17745 program in order to set included_p for every referenced header. */
debd256d 17746
c906108c 17747static void
43f3e411
DE
17748dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
17749 const int decode_for_pst_p, CORE_ADDR lowpc)
c906108c 17750{
d521ce57
TT
17751 const gdb_byte *line_ptr, *extended_end;
17752 const gdb_byte *line_end;
a8c50c1f 17753 unsigned int bytes_read, extended_len;
699ca60a 17754 unsigned char op_code, extended_op;
e142c38c
DJ
17755 CORE_ADDR baseaddr;
17756 struct objfile *objfile = cu->objfile;
f3f5162e 17757 bfd *abfd = objfile->obfd;
fbf65064 17758 struct gdbarch *gdbarch = get_objfile_arch (objfile);
d9b3de22
DE
17759 /* Non-zero if we're recording line info (as opposed to building partial
17760 symtabs). */
17761 int record_lines_p = !decode_for_pst_p;
17762 /* A collection of things we need to pass to dwarf_record_line. */
17763 lnp_reader_state reader_state;
e142c38c
DJ
17764
17765 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 17766
debd256d
JB
17767 line_ptr = lh->statement_program_start;
17768 line_end = lh->statement_program_end;
c906108c 17769
d9b3de22
DE
17770 reader_state.gdbarch = gdbarch;
17771 reader_state.line_header = lh;
17772 reader_state.record_lines_p = record_lines_p;
17773
c906108c
SS
17774 /* Read the statement sequences until there's nothing left. */
17775 while (line_ptr < line_end)
17776 {
d9b3de22
DE
17777 /* The DWARF line number program state machine. */
17778 lnp_state_machine state_machine;
c906108c 17779 int end_sequence = 0;
d9b3de22
DE
17780
17781 /* Reset the state machine at the start of each sequence. */
17782 init_lnp_state_machine (&state_machine, &reader_state);
17783
17784 if (record_lines_p && lh->num_file_names >= state_machine.file)
c906108c 17785 {
aaa75496 17786 /* Start a subfile for the current file of the state machine. */
debd256d
JB
17787 /* lh->include_dirs and lh->file_names are 0-based, but the
17788 directory and file name numbers in the statement program
17789 are 1-based. */
d9b3de22 17790 struct file_entry *fe = &lh->file_names[state_machine.file - 1];
d521ce57 17791 const char *dir = NULL;
a738430d 17792
afa6c9ab 17793 if (fe->dir_index && lh->include_dirs != NULL)
debd256d 17794 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb 17795
4d663531 17796 dwarf2_start_subfile (fe->name, dir);
c906108c
SS
17797 }
17798
a738430d 17799 /* Decode the table. */
d9b3de22 17800 while (line_ptr < line_end && !end_sequence)
c906108c
SS
17801 {
17802 op_code = read_1_byte (abfd, line_ptr);
17803 line_ptr += 1;
9aa1fe7e 17804
debd256d 17805 if (op_code >= lh->opcode_base)
6e70227d 17806 {
8e07a239 17807 /* Special opcode. */
699ca60a 17808 unsigned char adj_opcode;
3e29f34a 17809 CORE_ADDR addr_adj;
a05a36a5 17810 int line_delta;
8e07a239 17811
debd256d 17812 adj_opcode = op_code - lh->opcode_base;
d9b3de22
DE
17813 addr_adj = (((state_machine.op_index
17814 + (adj_opcode / lh->line_range))
2dc7f7b3
TT
17815 / lh->maximum_ops_per_instruction)
17816 * lh->minimum_instruction_length);
d9b3de22
DE
17817 state_machine.address
17818 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17819 state_machine.op_index = ((state_machine.op_index
17820 + (adj_opcode / lh->line_range))
17821 % lh->maximum_ops_per_instruction);
a05a36a5 17822 line_delta = lh->line_base + (adj_opcode % lh->line_range);
d9b3de22 17823 state_machine.line += line_delta;
a05a36a5 17824 if (line_delta != 0)
d9b3de22
DE
17825 state_machine.line_has_non_zero_discriminator
17826 = state_machine.discriminator != 0;
17827
17828 dwarf_record_line (&reader_state, &state_machine, 0);
17829 state_machine.discriminator = 0;
9aa1fe7e
GK
17830 }
17831 else switch (op_code)
c906108c
SS
17832 {
17833 case DW_LNS_extended_op:
3e43a32a
MS
17834 extended_len = read_unsigned_leb128 (abfd, line_ptr,
17835 &bytes_read);
473b7be6 17836 line_ptr += bytes_read;
a8c50c1f 17837 extended_end = line_ptr + extended_len;
c906108c
SS
17838 extended_op = read_1_byte (abfd, line_ptr);
17839 line_ptr += 1;
17840 switch (extended_op)
17841 {
17842 case DW_LNE_end_sequence:
d9b3de22 17843 state_machine.record_line = record_line;
c906108c 17844 end_sequence = 1;
c906108c
SS
17845 break;
17846 case DW_LNE_set_address:
d9b3de22
DE
17847 {
17848 CORE_ADDR address
17849 = read_address (abfd, line_ptr, cu, &bytes_read);
17850
17851 line_ptr += bytes_read;
17852 check_line_address (cu, &state_machine, line_ptr,
17853 lowpc, address);
17854 state_machine.op_index = 0;
17855 address += baseaddr;
17856 state_machine.address
17857 = gdbarch_adjust_dwarf2_line (gdbarch, address, 0);
17858 }
c906108c
SS
17859 break;
17860 case DW_LNE_define_file:
debd256d 17861 {
d521ce57 17862 const char *cur_file;
debd256d 17863 unsigned int dir_index, mod_time, length;
6e70227d 17864
3e43a32a
MS
17865 cur_file = read_direct_string (abfd, line_ptr,
17866 &bytes_read);
debd256d
JB
17867 line_ptr += bytes_read;
17868 dir_index =
17869 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17870 line_ptr += bytes_read;
17871 mod_time =
17872 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17873 line_ptr += bytes_read;
17874 length =
17875 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17876 line_ptr += bytes_read;
17877 add_file_name (lh, cur_file, dir_index, mod_time, length);
17878 }
c906108c 17879 break;
d0c6ba3d
CC
17880 case DW_LNE_set_discriminator:
17881 /* The discriminator is not interesting to the debugger;
a05a36a5
DE
17882 just ignore it. We still need to check its value though:
17883 if there are consecutive entries for the same
17884 (non-prologue) line we want to coalesce them.
17885 PR 17276. */
d9b3de22
DE
17886 state_machine.discriminator
17887 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
17888 state_machine.line_has_non_zero_discriminator
17889 |= state_machine.discriminator != 0;
a05a36a5 17890 line_ptr += bytes_read;
d0c6ba3d 17891 break;
c906108c 17892 default:
4d3c2250 17893 complaint (&symfile_complaints,
e2e0b3e5 17894 _("mangled .debug_line section"));
debd256d 17895 return;
c906108c 17896 }
a8c50c1f
DJ
17897 /* Make sure that we parsed the extended op correctly. If e.g.
17898 we expected a different address size than the producer used,
17899 we may have read the wrong number of bytes. */
17900 if (line_ptr != extended_end)
17901 {
17902 complaint (&symfile_complaints,
17903 _("mangled .debug_line section"));
17904 return;
17905 }
c906108c
SS
17906 break;
17907 case DW_LNS_copy:
d9b3de22
DE
17908 dwarf_record_line (&reader_state, &state_machine, 0);
17909 state_machine.discriminator = 0;
c906108c
SS
17910 break;
17911 case DW_LNS_advance_pc:
2dc7f7b3
TT
17912 {
17913 CORE_ADDR adjust
17914 = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
3e29f34a 17915 CORE_ADDR addr_adj;
2dc7f7b3 17916
d9b3de22 17917 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17918 / lh->maximum_ops_per_instruction)
17919 * lh->minimum_instruction_length);
d9b3de22
DE
17920 state_machine.address
17921 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17922 state_machine.op_index = ((state_machine.op_index + adjust)
17923 % lh->maximum_ops_per_instruction);
2dc7f7b3
TT
17924 line_ptr += bytes_read;
17925 }
c906108c
SS
17926 break;
17927 case DW_LNS_advance_line:
a05a36a5
DE
17928 {
17929 int line_delta
17930 = read_signed_leb128 (abfd, line_ptr, &bytes_read);
17931
d9b3de22 17932 state_machine.line += line_delta;
a05a36a5 17933 if (line_delta != 0)
d9b3de22
DE
17934 state_machine.line_has_non_zero_discriminator
17935 = state_machine.discriminator != 0;
a05a36a5
DE
17936 line_ptr += bytes_read;
17937 }
c906108c
SS
17938 break;
17939 case DW_LNS_set_file:
d9b3de22
DE
17940 {
17941 /* The arrays lh->include_dirs and lh->file_names are
17942 0-based, but the directory and file name numbers in
17943 the statement program are 1-based. */
17944 struct file_entry *fe;
17945 const char *dir = NULL;
17946
17947 state_machine.file = read_unsigned_leb128 (abfd, line_ptr,
17948 &bytes_read);
17949 line_ptr += bytes_read;
17950 if (state_machine.file == 0
17951 || state_machine.file - 1 >= lh->num_file_names)
17952 dwarf2_debug_line_missing_file_complaint ();
17953 else
17954 {
17955 fe = &lh->file_names[state_machine.file - 1];
17956 if (fe->dir_index && lh->include_dirs != NULL)
17957 dir = lh->include_dirs[fe->dir_index - 1];
17958 if (record_lines_p)
17959 {
17960 state_machine.last_subfile = current_subfile;
17961 state_machine.line_has_non_zero_discriminator
17962 = state_machine.discriminator != 0;
17963 dwarf2_start_subfile (fe->name, dir);
17964 }
17965 }
17966 }
c906108c
SS
17967 break;
17968 case DW_LNS_set_column:
0ad93d4f 17969 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
c906108c
SS
17970 line_ptr += bytes_read;
17971 break;
17972 case DW_LNS_negate_stmt:
d9b3de22 17973 state_machine.is_stmt = (!state_machine.is_stmt);
c906108c
SS
17974 break;
17975 case DW_LNS_set_basic_block:
c906108c 17976 break;
c2c6d25f
JM
17977 /* Add to the address register of the state machine the
17978 address increment value corresponding to special opcode
a738430d
MK
17979 255. I.e., this value is scaled by the minimum
17980 instruction length since special opcode 255 would have
b021a221 17981 scaled the increment. */
c906108c 17982 case DW_LNS_const_add_pc:
2dc7f7b3
TT
17983 {
17984 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
3e29f34a 17985 CORE_ADDR addr_adj;
2dc7f7b3 17986
d9b3de22 17987 addr_adj = (((state_machine.op_index + adjust)
2dc7f7b3
TT
17988 / lh->maximum_ops_per_instruction)
17989 * lh->minimum_instruction_length);
d9b3de22
DE
17990 state_machine.address
17991 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
17992 state_machine.op_index = ((state_machine.op_index + adjust)
17993 % lh->maximum_ops_per_instruction);
2dc7f7b3 17994 }
c906108c
SS
17995 break;
17996 case DW_LNS_fixed_advance_pc:
3e29f34a
MR
17997 {
17998 CORE_ADDR addr_adj;
17999
18000 addr_adj = read_2_bytes (abfd, line_ptr);
d9b3de22
DE
18001 state_machine.address
18002 += gdbarch_adjust_dwarf2_line (gdbarch, addr_adj, 1);
18003 state_machine.op_index = 0;
3e29f34a
MR
18004 line_ptr += 2;
18005 }
c906108c 18006 break;
9aa1fe7e 18007 default:
a738430d
MK
18008 {
18009 /* Unknown standard opcode, ignore it. */
9aa1fe7e 18010 int i;
a738430d 18011
debd256d 18012 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
18013 {
18014 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
18015 line_ptr += bytes_read;
18016 }
18017 }
c906108c
SS
18018 }
18019 }
d9b3de22
DE
18020
18021 if (!end_sequence)
18022 dwarf2_debug_line_missing_end_sequence_complaint ();
18023
18024 /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
18025 in which case we still finish recording the last line). */
18026 dwarf_record_line (&reader_state, &state_machine, 1);
c906108c 18027 }
f3f5162e
DE
18028}
18029
18030/* Decode the Line Number Program (LNP) for the given line_header
18031 structure and CU. The actual information extracted and the type
18032 of structures created from the LNP depends on the value of PST.
18033
18034 1. If PST is NULL, then this procedure uses the data from the program
18035 to create all necessary symbol tables, and their linetables.
18036
18037 2. If PST is not NULL, this procedure reads the program to determine
18038 the list of files included by the unit represented by PST, and
18039 builds all the associated partial symbol tables.
18040
18041 COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
18042 It is used for relative paths in the line table.
18043 NOTE: When processing partial symtabs (pst != NULL),
18044 comp_dir == pst->dirname.
18045
18046 NOTE: It is important that psymtabs have the same file name (via strcmp)
18047 as the corresponding symtab. Since COMP_DIR is not used in the name of the
18048 symtab we don't use it in the name of the psymtabs we create.
18049 E.g. expand_line_sal requires this when finding psymtabs to expand.
c3b7b696
YQ
18050 A good testcase for this is mb-inline.exp.
18051
527f3840
JK
18052 LOWPC is the lowest address in CU (or 0 if not known).
18053
18054 Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
18055 for its PC<->lines mapping information. Otherwise only the filename
18056 table is read in. */
f3f5162e
DE
18057
18058static void
18059dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
c3b7b696 18060 struct dwarf2_cu *cu, struct partial_symtab *pst,
527f3840 18061 CORE_ADDR lowpc, int decode_mapping)
f3f5162e
DE
18062{
18063 struct objfile *objfile = cu->objfile;
18064 const int decode_for_pst_p = (pst != NULL);
f3f5162e 18065
527f3840
JK
18066 if (decode_mapping)
18067 dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
aaa75496
JB
18068
18069 if (decode_for_pst_p)
18070 {
18071 int file_index;
18072
18073 /* Now that we're done scanning the Line Header Program, we can
18074 create the psymtab of each included file. */
18075 for (file_index = 0; file_index < lh->num_file_names; file_index++)
18076 if (lh->file_names[file_index].included_p == 1)
18077 {
d521ce57 18078 const char *include_name =
c6da4cef
DE
18079 psymtab_include_file_name (lh, file_index, pst, comp_dir);
18080 if (include_name != NULL)
aaa75496
JB
18081 dwarf2_create_include_psymtab (include_name, pst, objfile);
18082 }
18083 }
cb1df416
DJ
18084 else
18085 {
18086 /* Make sure a symtab is created for every file, even files
18087 which contain only variables (i.e. no code with associated
18088 line numbers). */
43f3e411 18089 struct compunit_symtab *cust = buildsym_compunit_symtab ();
cb1df416 18090 int i;
cb1df416
DJ
18091
18092 for (i = 0; i < lh->num_file_names; i++)
18093 {
d521ce57 18094 const char *dir = NULL;
f3f5162e 18095 struct file_entry *fe;
9a619af0 18096
cb1df416 18097 fe = &lh->file_names[i];
afa6c9ab 18098 if (fe->dir_index && lh->include_dirs != NULL)
cb1df416 18099 dir = lh->include_dirs[fe->dir_index - 1];
4d663531 18100 dwarf2_start_subfile (fe->name, dir);
cb1df416 18101
cb1df416 18102 if (current_subfile->symtab == NULL)
43f3e411
DE
18103 {
18104 current_subfile->symtab
18105 = allocate_symtab (cust, current_subfile->name);
18106 }
cb1df416
DJ
18107 fe->symtab = current_subfile->symtab;
18108 }
18109 }
c906108c
SS
18110}
18111
18112/* Start a subfile for DWARF. FILENAME is the name of the file and
18113 DIRNAME the name of the source directory which contains FILENAME
4d663531 18114 or NULL if not known.
c906108c
SS
18115 This routine tries to keep line numbers from identical absolute and
18116 relative file names in a common subfile.
18117
18118 Using the `list' example from the GDB testsuite, which resides in
18119 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
18120 of /srcdir/list0.c yields the following debugging information for list0.c:
18121
c5aa993b 18122 DW_AT_name: /srcdir/list0.c
4d663531 18123 DW_AT_comp_dir: /compdir
357e46e7 18124 files.files[0].name: list0.h
c5aa993b 18125 files.files[0].dir: /srcdir
357e46e7 18126 files.files[1].name: list0.c
c5aa993b 18127 files.files[1].dir: /srcdir
c906108c
SS
18128
18129 The line number information for list0.c has to end up in a single
4f1520fb
FR
18130 subfile, so that `break /srcdir/list0.c:1' works as expected.
18131 start_subfile will ensure that this happens provided that we pass the
18132 concatenation of files.files[1].dir and files.files[1].name as the
18133 subfile's name. */
c906108c
SS
18134
18135static void
4d663531 18136dwarf2_start_subfile (const char *filename, const char *dirname)
c906108c 18137{
d521ce57 18138 char *copy = NULL;
4f1520fb 18139
4d663531 18140 /* In order not to lose the line information directory,
4f1520fb
FR
18141 we concatenate it to the filename when it makes sense.
18142 Note that the Dwarf3 standard says (speaking of filenames in line
18143 information): ``The directory index is ignored for file names
18144 that represent full path names''. Thus ignoring dirname in the
18145 `else' branch below isn't an issue. */
c906108c 18146
d5166ae1 18147 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
d521ce57
TT
18148 {
18149 copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
18150 filename = copy;
18151 }
c906108c 18152
4d663531 18153 start_subfile (filename);
4f1520fb 18154
d521ce57
TT
18155 if (copy != NULL)
18156 xfree (copy);
c906108c
SS
18157}
18158
f4dc4d17
DE
18159/* Start a symtab for DWARF.
18160 NAME, COMP_DIR, LOW_PC are passed to start_symtab. */
18161
43f3e411 18162static struct compunit_symtab *
f4dc4d17 18163dwarf2_start_symtab (struct dwarf2_cu *cu,
15d034d0 18164 const char *name, const char *comp_dir, CORE_ADDR low_pc)
f4dc4d17 18165{
43f3e411
DE
18166 struct compunit_symtab *cust
18167 = start_symtab (cu->objfile, name, comp_dir, low_pc);
18168
f4dc4d17
DE
18169 record_debugformat ("DWARF 2");
18170 record_producer (cu->producer);
18171
18172 /* We assume that we're processing GCC output. */
18173 processing_gcc_compilation = 2;
18174
4d4ec4e5 18175 cu->processing_has_namespace_info = 0;
43f3e411
DE
18176
18177 return cust;
f4dc4d17
DE
18178}
18179
4c2df51b
DJ
18180static void
18181var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 18182 struct dwarf2_cu *cu)
4c2df51b 18183{
e7c27a73
DJ
18184 struct objfile *objfile = cu->objfile;
18185 struct comp_unit_head *cu_header = &cu->header;
18186
4c2df51b
DJ
18187 /* NOTE drow/2003-01-30: There used to be a comment and some special
18188 code here to turn a symbol with DW_AT_external and a
18189 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
18190 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
18191 with some versions of binutils) where shared libraries could have
18192 relocations against symbols in their debug information - the
18193 minimal symbol would have the right address, but the debug info
18194 would not. It's no longer necessary, because we will explicitly
18195 apply relocations when we read in the debug information now. */
18196
18197 /* A DW_AT_location attribute with no contents indicates that a
18198 variable has been optimized away. */
18199 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
18200 {
f1e6e072 18201 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
4c2df51b
DJ
18202 return;
18203 }
18204
18205 /* Handle one degenerate form of location expression specially, to
18206 preserve GDB's previous behavior when section offsets are
3019eac3
DE
18207 specified. If this is just a DW_OP_addr or DW_OP_GNU_addr_index
18208 then mark this symbol as LOC_STATIC. */
4c2df51b
DJ
18209
18210 if (attr_form_is_block (attr)
3019eac3
DE
18211 && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
18212 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
18213 || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
18214 && (DW_BLOCK (attr)->size
18215 == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
4c2df51b 18216 {
891d2f0b 18217 unsigned int dummy;
4c2df51b 18218
3019eac3
DE
18219 if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
18220 SYMBOL_VALUE_ADDRESS (sym) =
18221 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
18222 else
18223 SYMBOL_VALUE_ADDRESS (sym) =
18224 read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
f1e6e072 18225 SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
4c2df51b
DJ
18226 fixup_symbol_section (sym, objfile);
18227 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
18228 SYMBOL_SECTION (sym));
4c2df51b
DJ
18229 return;
18230 }
18231
18232 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
18233 expression evaluator, and use LOC_COMPUTED only when necessary
18234 (i.e. when the value of a register or memory location is
18235 referenced, or a thread-local block, etc.). Then again, it might
18236 not be worthwhile. I'm assuming that it isn't unless performance
18237 or memory numbers show me otherwise. */
18238
f1e6e072 18239 dwarf2_symbol_mark_computed (attr, sym, cu, 0);
8be455d7 18240
f1e6e072 18241 if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
8be455d7 18242 cu->has_loclist = 1;
4c2df51b
DJ
18243}
18244
c906108c
SS
18245/* Given a pointer to a DWARF information entry, figure out if we need
18246 to make a symbol table entry for it, and if so, create a new entry
18247 and return a pointer to it.
18248 If TYPE is NULL, determine symbol type from the die, otherwise
34eaf542
TT
18249 used the passed type.
18250 If SPACE is not NULL, use it to hold the new symbol. If it is
18251 NULL, allocate a new symbol on the objfile's obstack. */
c906108c
SS
18252
18253static struct symbol *
34eaf542
TT
18254new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
18255 struct symbol *space)
c906108c 18256{
e7c27a73 18257 struct objfile *objfile = cu->objfile;
3e29f34a 18258 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c 18259 struct symbol *sym = NULL;
15d034d0 18260 const char *name;
c906108c
SS
18261 struct attribute *attr = NULL;
18262 struct attribute *attr2 = NULL;
e142c38c 18263 CORE_ADDR baseaddr;
e37fd15a
SW
18264 struct pending **list_to_add = NULL;
18265
edb3359d 18266 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
18267
18268 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 18269
94af9270 18270 name = dwarf2_name (die, cu);
c906108c
SS
18271 if (name)
18272 {
94af9270 18273 const char *linkagename;
34eaf542 18274 int suppress_add = 0;
94af9270 18275
34eaf542
TT
18276 if (space)
18277 sym = space;
18278 else
e623cf5d 18279 sym = allocate_symbol (objfile);
c906108c 18280 OBJSTAT (objfile, n_syms++);
2de7ced7
DJ
18281
18282 /* Cache this symbol's name and the name's demangled form (if any). */
f85f34ed 18283 SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
94af9270
KS
18284 linkagename = dwarf2_physname (name, die, cu);
18285 SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
c906108c 18286
f55ee35c
JK
18287 /* Fortran does not have mangling standard and the mangling does differ
18288 between gfortran, iFort etc. */
18289 if (cu->language == language_fortran
b250c185 18290 && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
29df156d 18291 symbol_set_demangled_name (&(sym->ginfo),
cfc594ee 18292 dwarf2_full_name (name, die, cu),
29df156d 18293 NULL);
f55ee35c 18294
c906108c 18295 /* Default assumptions.
c5aa993b 18296 Use the passed type or decode it from the die. */
176620f1 18297 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
f1e6e072 18298 SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
18299 if (type != NULL)
18300 SYMBOL_TYPE (sym) = type;
18301 else
e7c27a73 18302 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
18303 attr = dwarf2_attr (die,
18304 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
18305 cu);
c906108c
SS
18306 if (attr)
18307 {
18308 SYMBOL_LINE (sym) = DW_UNSND (attr);
18309 }
cb1df416 18310
edb3359d
DJ
18311 attr = dwarf2_attr (die,
18312 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
18313 cu);
cb1df416
DJ
18314 if (attr)
18315 {
18316 int file_index = DW_UNSND (attr);
9a619af0 18317
cb1df416
DJ
18318 if (cu->line_header == NULL
18319 || file_index > cu->line_header->num_file_names)
18320 complaint (&symfile_complaints,
18321 _("file index out of range"));
1c3d648d 18322 else if (file_index > 0)
cb1df416
DJ
18323 {
18324 struct file_entry *fe;
9a619af0 18325
cb1df416 18326 fe = &cu->line_header->file_names[file_index - 1];
08be3fe3 18327 symbol_set_symtab (sym, fe->symtab);
cb1df416
DJ
18328 }
18329 }
18330
c906108c
SS
18331 switch (die->tag)
18332 {
18333 case DW_TAG_label:
e142c38c 18334 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c 18335 if (attr)
3e29f34a
MR
18336 {
18337 CORE_ADDR addr;
18338
18339 addr = attr_value_as_address (attr);
18340 addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
18341 SYMBOL_VALUE_ADDRESS (sym) = addr;
18342 }
0f5238ed
TT
18343 SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
18344 SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
f1e6e072 18345 SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
0f5238ed 18346 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
18347 break;
18348 case DW_TAG_subprogram:
18349 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18350 finish_block. */
f1e6e072 18351 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
e142c38c 18352 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
18353 if ((attr2 && (DW_UNSND (attr2) != 0))
18354 || cu->language == language_ada)
c906108c 18355 {
2cfa0c8d
JB
18356 /* Subprograms marked external are stored as a global symbol.
18357 Ada subprograms, whether marked external or not, are always
18358 stored as a global symbol, because we want to be able to
18359 access them globally. For instance, we want to be able
18360 to break on a nested subprogram without having to
18361 specify the context. */
e37fd15a 18362 list_to_add = &global_symbols;
c906108c
SS
18363 }
18364 else
18365 {
e37fd15a 18366 list_to_add = cu->list_in_scope;
c906108c
SS
18367 }
18368 break;
edb3359d
DJ
18369 case DW_TAG_inlined_subroutine:
18370 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
18371 finish_block. */
f1e6e072 18372 SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
edb3359d 18373 SYMBOL_INLINED (sym) = 1;
481860b3 18374 list_to_add = cu->list_in_scope;
edb3359d 18375 break;
34eaf542
TT
18376 case DW_TAG_template_value_param:
18377 suppress_add = 1;
18378 /* Fall through. */
72929c62 18379 case DW_TAG_constant:
c906108c 18380 case DW_TAG_variable:
254e6b9e 18381 case DW_TAG_member:
0963b4bd
MS
18382 /* Compilation with minimal debug info may result in
18383 variables with missing type entries. Change the
18384 misleading `void' type to something sensible. */
c906108c 18385 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 18386 SYMBOL_TYPE (sym)
46bf5051 18387 = objfile_type (objfile)->nodebug_data_symbol;
64c50499 18388
e142c38c 18389 attr = dwarf2_attr (die, DW_AT_const_value, cu);
254e6b9e
DE
18390 /* In the case of DW_TAG_member, we should only be called for
18391 static const members. */
18392 if (die->tag == DW_TAG_member)
18393 {
3863f96c
DE
18394 /* dwarf2_add_field uses die_is_declaration,
18395 so we do the same. */
254e6b9e
DE
18396 gdb_assert (die_is_declaration (die, cu));
18397 gdb_assert (attr);
18398 }
c906108c
SS
18399 if (attr)
18400 {
e7c27a73 18401 dwarf2_const_value (attr, sym, cu);
e142c38c 18402 attr2 = dwarf2_attr (die, DW_AT_external, cu);
e37fd15a 18403 if (!suppress_add)
34eaf542
TT
18404 {
18405 if (attr2 && (DW_UNSND (attr2) != 0))
e37fd15a 18406 list_to_add = &global_symbols;
34eaf542 18407 else
e37fd15a 18408 list_to_add = cu->list_in_scope;
34eaf542 18409 }
c906108c
SS
18410 break;
18411 }
e142c38c 18412 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18413 if (attr)
18414 {
e7c27a73 18415 var_decode_location (attr, sym, cu);
e142c38c 18416 attr2 = dwarf2_attr (die, DW_AT_external, cu);
4357ac6c
TT
18417
18418 /* Fortran explicitly imports any global symbols to the local
18419 scope by DW_TAG_common_block. */
18420 if (cu->language == language_fortran && die->parent
18421 && die->parent->tag == DW_TAG_common_block)
18422 attr2 = NULL;
18423
caac4577
JG
18424 if (SYMBOL_CLASS (sym) == LOC_STATIC
18425 && SYMBOL_VALUE_ADDRESS (sym) == 0
18426 && !dwarf2_per_objfile->has_section_at_zero)
18427 {
18428 /* When a static variable is eliminated by the linker,
18429 the corresponding debug information is not stripped
18430 out, but the variable address is set to null;
18431 do not add such variables into symbol table. */
18432 }
18433 else if (attr2 && (DW_UNSND (attr2) != 0))
1c809c68 18434 {
f55ee35c
JK
18435 /* Workaround gfortran PR debug/40040 - it uses
18436 DW_AT_location for variables in -fPIC libraries which may
18437 get overriden by other libraries/executable and get
18438 a different address. Resolve it by the minimal symbol
18439 which may come from inferior's executable using copy
18440 relocation. Make this workaround only for gfortran as for
18441 other compilers GDB cannot guess the minimal symbol
18442 Fortran mangling kind. */
18443 if (cu->language == language_fortran && die->parent
18444 && die->parent->tag == DW_TAG_module
18445 && cu->producer
61012eef 18446 && startswith (cu->producer, "GNU Fortran "))
f1e6e072 18447 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
f55ee35c 18448
1c809c68
TT
18449 /* A variable with DW_AT_external is never static,
18450 but it may be block-scoped. */
18451 list_to_add = (cu->list_in_scope == &file_symbols
18452 ? &global_symbols : cu->list_in_scope);
1c809c68 18453 }
c906108c 18454 else
e37fd15a 18455 list_to_add = cu->list_in_scope;
c906108c
SS
18456 }
18457 else
18458 {
18459 /* We do not know the address of this symbol.
c5aa993b
JM
18460 If it is an external symbol and we have type information
18461 for it, enter the symbol as a LOC_UNRESOLVED symbol.
18462 The address of the variable will then be determined from
18463 the minimal symbol table whenever the variable is
18464 referenced. */
e142c38c 18465 attr2 = dwarf2_attr (die, DW_AT_external, cu);
0971de02
TT
18466
18467 /* Fortran explicitly imports any global symbols to the local
18468 scope by DW_TAG_common_block. */
18469 if (cu->language == language_fortran && die->parent
18470 && die->parent->tag == DW_TAG_common_block)
18471 {
18472 /* SYMBOL_CLASS doesn't matter here because
18473 read_common_block is going to reset it. */
18474 if (!suppress_add)
18475 list_to_add = cu->list_in_scope;
18476 }
18477 else if (attr2 && (DW_UNSND (attr2) != 0)
18478 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c 18479 {
0fe7935b
DJ
18480 /* A variable with DW_AT_external is never static, but it
18481 may be block-scoped. */
18482 list_to_add = (cu->list_in_scope == &file_symbols
18483 ? &global_symbols : cu->list_in_scope);
18484
f1e6e072 18485 SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
c906108c 18486 }
442ddf59
JK
18487 else if (!die_is_declaration (die, cu))
18488 {
18489 /* Use the default LOC_OPTIMIZED_OUT class. */
18490 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
e37fd15a
SW
18491 if (!suppress_add)
18492 list_to_add = cu->list_in_scope;
442ddf59 18493 }
c906108c
SS
18494 }
18495 break;
18496 case DW_TAG_formal_parameter:
edb3359d
DJ
18497 /* If we are inside a function, mark this as an argument. If
18498 not, we might be looking at an argument to an inlined function
18499 when we do not have enough information to show inlined frames;
18500 pretend it's a local variable in that case so that the user can
18501 still see it. */
18502 if (context_stack_depth > 0
18503 && context_stack[context_stack_depth - 1].name != NULL)
18504 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 18505 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
18506 if (attr)
18507 {
e7c27a73 18508 var_decode_location (attr, sym, cu);
c906108c 18509 }
e142c38c 18510 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18511 if (attr)
18512 {
e7c27a73 18513 dwarf2_const_value (attr, sym, cu);
c906108c 18514 }
f346a30d 18515
e37fd15a 18516 list_to_add = cu->list_in_scope;
c906108c
SS
18517 break;
18518 case DW_TAG_unspecified_parameters:
18519 /* From varargs functions; gdb doesn't seem to have any
18520 interest in this information, so just ignore it for now.
18521 (FIXME?) */
18522 break;
34eaf542
TT
18523 case DW_TAG_template_type_param:
18524 suppress_add = 1;
18525 /* Fall through. */
c906108c 18526 case DW_TAG_class_type:
680b30c7 18527 case DW_TAG_interface_type:
c906108c
SS
18528 case DW_TAG_structure_type:
18529 case DW_TAG_union_type:
72019c9c 18530 case DW_TAG_set_type:
c906108c 18531 case DW_TAG_enumeration_type:
f1e6e072 18532 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18533 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 18534
63d06c5c 18535 {
987504bb 18536 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
63d06c5c
DC
18537 really ever be static objects: otherwise, if you try
18538 to, say, break of a class's method and you're in a file
18539 which doesn't mention that class, it won't work unless
18540 the check for all static symbols in lookup_symbol_aux
18541 saves you. See the OtherFileClass tests in
18542 gdb.c++/namespace.exp. */
18543
e37fd15a 18544 if (!suppress_add)
34eaf542 18545 {
34eaf542
TT
18546 list_to_add = (cu->list_in_scope == &file_symbols
18547 && (cu->language == language_cplus
18548 || cu->language == language_java)
18549 ? &global_symbols : cu->list_in_scope);
63d06c5c 18550
64382290
TT
18551 /* The semantics of C++ state that "struct foo {
18552 ... }" also defines a typedef for "foo". A Java
18553 class declaration also defines a typedef for the
18554 class. */
18555 if (cu->language == language_cplus
18556 || cu->language == language_java
18557 || cu->language == language_ada)
18558 {
18559 /* The symbol's name is already allocated along
18560 with this objfile, so we don't need to
18561 duplicate it for the type. */
18562 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
18563 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
18564 }
63d06c5c
DC
18565 }
18566 }
c906108c
SS
18567 break;
18568 case DW_TAG_typedef:
f1e6e072 18569 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
63d06c5c 18570 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18571 list_to_add = cu->list_in_scope;
63d06c5c 18572 break;
c906108c 18573 case DW_TAG_base_type:
a02abb62 18574 case DW_TAG_subrange_type:
f1e6e072 18575 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
176620f1 18576 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e37fd15a 18577 list_to_add = cu->list_in_scope;
c906108c
SS
18578 break;
18579 case DW_TAG_enumerator:
e142c38c 18580 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
18581 if (attr)
18582 {
e7c27a73 18583 dwarf2_const_value (attr, sym, cu);
c906108c 18584 }
63d06c5c
DC
18585 {
18586 /* NOTE: carlton/2003-11-10: See comment above in the
18587 DW_TAG_class_type, etc. block. */
18588
e142c38c 18589 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
18590 && (cu->language == language_cplus
18591 || cu->language == language_java)
e142c38c 18592 ? &global_symbols : cu->list_in_scope);
63d06c5c 18593 }
c906108c 18594 break;
74921315 18595 case DW_TAG_imported_declaration:
5c4e30ca 18596 case DW_TAG_namespace:
f1e6e072 18597 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
e37fd15a 18598 list_to_add = &global_symbols;
5c4e30ca 18599 break;
530e8392
KB
18600 case DW_TAG_module:
18601 SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
18602 SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
18603 list_to_add = &global_symbols;
18604 break;
4357ac6c 18605 case DW_TAG_common_block:
f1e6e072 18606 SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
4357ac6c
TT
18607 SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
18608 add_symbol_to_list (sym, cu->list_in_scope);
18609 break;
c906108c
SS
18610 default:
18611 /* Not a tag we recognize. Hopefully we aren't processing
18612 trash data, but since we must specifically ignore things
18613 we don't recognize, there is nothing else we should do at
0963b4bd 18614 this point. */
e2e0b3e5 18615 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 18616 dwarf_tag_name (die->tag));
c906108c
SS
18617 break;
18618 }
df8a16a1 18619
e37fd15a
SW
18620 if (suppress_add)
18621 {
18622 sym->hash_next = objfile->template_symbols;
18623 objfile->template_symbols = sym;
18624 list_to_add = NULL;
18625 }
18626
18627 if (list_to_add != NULL)
18628 add_symbol_to_list (sym, list_to_add);
18629
df8a16a1
DJ
18630 /* For the benefit of old versions of GCC, check for anonymous
18631 namespaces based on the demangled name. */
4d4ec4e5 18632 if (!cu->processing_has_namespace_info
94af9270 18633 && cu->language == language_cplus)
a10964d1 18634 cp_scan_for_anonymous_namespaces (sym, objfile);
c906108c
SS
18635 }
18636 return (sym);
18637}
18638
34eaf542
TT
18639/* A wrapper for new_symbol_full that always allocates a new symbol. */
18640
18641static struct symbol *
18642new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
18643{
18644 return new_symbol_full (die, type, cu, NULL);
18645}
18646
98bfdba5
PA
18647/* Given an attr with a DW_FORM_dataN value in host byte order,
18648 zero-extend it as appropriate for the symbol's type. The DWARF
18649 standard (v4) is not entirely clear about the meaning of using
18650 DW_FORM_dataN for a constant with a signed type, where the type is
18651 wider than the data. The conclusion of a discussion on the DWARF
18652 list was that this is unspecified. We choose to always zero-extend
18653 because that is the interpretation long in use by GCC. */
c906108c 18654
98bfdba5 18655static gdb_byte *
ff39bb5e 18656dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
12df843f 18657 struct dwarf2_cu *cu, LONGEST *value, int bits)
c906108c 18658{
e7c27a73 18659 struct objfile *objfile = cu->objfile;
e17a4113
UW
18660 enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
18661 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
98bfdba5
PA
18662 LONGEST l = DW_UNSND (attr);
18663
18664 if (bits < sizeof (*value) * 8)
18665 {
18666 l &= ((LONGEST) 1 << bits) - 1;
18667 *value = l;
18668 }
18669 else if (bits == sizeof (*value) * 8)
18670 *value = l;
18671 else
18672 {
18673 gdb_byte *bytes = obstack_alloc (obstack, bits / 8);
18674 store_unsigned_integer (bytes, bits / 8, byte_order, l);
18675 return bytes;
18676 }
18677
18678 return NULL;
18679}
18680
18681/* Read a constant value from an attribute. Either set *VALUE, or if
18682 the value does not fit in *VALUE, set *BYTES - either already
18683 allocated on the objfile obstack, or newly allocated on OBSTACK,
18684 or, set *BATON, if we translated the constant to a location
18685 expression. */
18686
18687static void
ff39bb5e 18688dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
98bfdba5
PA
18689 const char *name, struct obstack *obstack,
18690 struct dwarf2_cu *cu,
d521ce57 18691 LONGEST *value, const gdb_byte **bytes,
98bfdba5
PA
18692 struct dwarf2_locexpr_baton **baton)
18693{
18694 struct objfile *objfile = cu->objfile;
18695 struct comp_unit_head *cu_header = &cu->header;
c906108c 18696 struct dwarf_block *blk;
98bfdba5
PA
18697 enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
18698 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
18699
18700 *value = 0;
18701 *bytes = NULL;
18702 *baton = NULL;
c906108c
SS
18703
18704 switch (attr->form)
18705 {
18706 case DW_FORM_addr:
3019eac3 18707 case DW_FORM_GNU_addr_index:
ac56253d 18708 {
ac56253d
TT
18709 gdb_byte *data;
18710
98bfdba5
PA
18711 if (TYPE_LENGTH (type) != cu_header->addr_size)
18712 dwarf2_const_value_length_mismatch_complaint (name,
ac56253d 18713 cu_header->addr_size,
98bfdba5 18714 TYPE_LENGTH (type));
ac56253d
TT
18715 /* Symbols of this form are reasonably rare, so we just
18716 piggyback on the existing location code rather than writing
18717 a new implementation of symbol_computed_ops. */
7919a973 18718 *baton = obstack_alloc (obstack, sizeof (struct dwarf2_locexpr_baton));
98bfdba5
PA
18719 (*baton)->per_cu = cu->per_cu;
18720 gdb_assert ((*baton)->per_cu);
ac56253d 18721
98bfdba5 18722 (*baton)->size = 2 + cu_header->addr_size;
7919a973 18723 data = obstack_alloc (obstack, (*baton)->size);
98bfdba5 18724 (*baton)->data = data;
ac56253d
TT
18725
18726 data[0] = DW_OP_addr;
18727 store_unsigned_integer (&data[1], cu_header->addr_size,
18728 byte_order, DW_ADDR (attr));
18729 data[cu_header->addr_size + 1] = DW_OP_stack_value;
ac56253d 18730 }
c906108c 18731 break;
4ac36638 18732 case DW_FORM_string:
93b5768b 18733 case DW_FORM_strp:
3019eac3 18734 case DW_FORM_GNU_str_index:
36586728 18735 case DW_FORM_GNU_strp_alt:
98bfdba5
PA
18736 /* DW_STRING is already allocated on the objfile obstack, point
18737 directly to it. */
d521ce57 18738 *bytes = (const gdb_byte *) DW_STRING (attr);
93b5768b 18739 break;
c906108c
SS
18740 case DW_FORM_block1:
18741 case DW_FORM_block2:
18742 case DW_FORM_block4:
18743 case DW_FORM_block:
2dc7f7b3 18744 case DW_FORM_exprloc:
c906108c 18745 blk = DW_BLOCK (attr);
98bfdba5
PA
18746 if (TYPE_LENGTH (type) != blk->size)
18747 dwarf2_const_value_length_mismatch_complaint (name, blk->size,
18748 TYPE_LENGTH (type));
18749 *bytes = blk->data;
c906108c 18750 break;
2df3850c
JM
18751
18752 /* The DW_AT_const_value attributes are supposed to carry the
18753 symbol's value "represented as it would be on the target
18754 architecture." By the time we get here, it's already been
18755 converted to host endianness, so we just need to sign- or
18756 zero-extend it as appropriate. */
18757 case DW_FORM_data1:
3aef2284 18758 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
2df3850c 18759 break;
c906108c 18760 case DW_FORM_data2:
3aef2284 18761 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
2df3850c 18762 break;
c906108c 18763 case DW_FORM_data4:
3aef2284 18764 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
2df3850c 18765 break;
c906108c 18766 case DW_FORM_data8:
3aef2284 18767 *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
2df3850c
JM
18768 break;
18769
c906108c 18770 case DW_FORM_sdata:
98bfdba5 18771 *value = DW_SND (attr);
2df3850c
JM
18772 break;
18773
c906108c 18774 case DW_FORM_udata:
98bfdba5 18775 *value = DW_UNSND (attr);
c906108c 18776 break;
2df3850c 18777
c906108c 18778 default:
4d3c2250 18779 complaint (&symfile_complaints,
e2e0b3e5 18780 _("unsupported const value attribute form: '%s'"),
4d3c2250 18781 dwarf_form_name (attr->form));
98bfdba5 18782 *value = 0;
c906108c
SS
18783 break;
18784 }
18785}
18786
2df3850c 18787
98bfdba5
PA
18788/* Copy constant value from an attribute to a symbol. */
18789
2df3850c 18790static void
ff39bb5e 18791dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
98bfdba5 18792 struct dwarf2_cu *cu)
2df3850c 18793{
98bfdba5
PA
18794 struct objfile *objfile = cu->objfile;
18795 struct comp_unit_head *cu_header = &cu->header;
12df843f 18796 LONGEST value;
d521ce57 18797 const gdb_byte *bytes;
98bfdba5 18798 struct dwarf2_locexpr_baton *baton;
2df3850c 18799
98bfdba5
PA
18800 dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
18801 SYMBOL_PRINT_NAME (sym),
18802 &objfile->objfile_obstack, cu,
18803 &value, &bytes, &baton);
2df3850c 18804
98bfdba5
PA
18805 if (baton != NULL)
18806 {
98bfdba5 18807 SYMBOL_LOCATION_BATON (sym) = baton;
f1e6e072 18808 SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
98bfdba5
PA
18809 }
18810 else if (bytes != NULL)
18811 {
18812 SYMBOL_VALUE_BYTES (sym) = bytes;
f1e6e072 18813 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
98bfdba5
PA
18814 }
18815 else
18816 {
18817 SYMBOL_VALUE (sym) = value;
f1e6e072 18818 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
98bfdba5 18819 }
2df3850c
JM
18820}
18821
c906108c
SS
18822/* Return the type of the die in question using its DW_AT_type attribute. */
18823
18824static struct type *
e7c27a73 18825die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18826{
c906108c 18827 struct attribute *type_attr;
c906108c 18828
e142c38c 18829 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
18830 if (!type_attr)
18831 {
18832 /* A missing DW_AT_type represents a void type. */
46bf5051 18833 return objfile_type (cu->objfile)->builtin_void;
c906108c 18834 }
348e048f 18835
673bfd45 18836 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18837}
18838
b4ba55a1
JB
18839/* True iff CU's producer generates GNAT Ada auxiliary information
18840 that allows to find parallel types through that information instead
18841 of having to do expensive parallel lookups by type name. */
18842
18843static int
18844need_gnat_info (struct dwarf2_cu *cu)
18845{
18846 /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
18847 of GNAT produces this auxiliary information, without any indication
18848 that it is produced. Part of enhancing the FSF version of GNAT
18849 to produce that information will be to put in place an indicator
18850 that we can use in order to determine whether the descriptive type
18851 info is available or not. One suggestion that has been made is
18852 to use a new attribute, attached to the CU die. For now, assume
18853 that the descriptive type info is not available. */
18854 return 0;
18855}
18856
b4ba55a1
JB
18857/* Return the auxiliary type of the die in question using its
18858 DW_AT_GNAT_descriptive_type attribute. Returns NULL if the
18859 attribute is not present. */
18860
18861static struct type *
18862die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
18863{
b4ba55a1 18864 struct attribute *type_attr;
b4ba55a1
JB
18865
18866 type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
18867 if (!type_attr)
18868 return NULL;
18869
673bfd45 18870 return lookup_die_type (die, type_attr, cu);
b4ba55a1
JB
18871}
18872
18873/* If DIE has a descriptive_type attribute, then set the TYPE's
18874 descriptive type accordingly. */
18875
18876static void
18877set_descriptive_type (struct type *type, struct die_info *die,
18878 struct dwarf2_cu *cu)
18879{
18880 struct type *descriptive_type = die_descriptive_type (die, cu);
18881
18882 if (descriptive_type)
18883 {
18884 ALLOCATE_GNAT_AUX_TYPE (type);
18885 TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
18886 }
18887}
18888
c906108c
SS
18889/* Return the containing type of the die in question using its
18890 DW_AT_containing_type attribute. */
18891
18892static struct type *
e7c27a73 18893die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 18894{
c906108c 18895 struct attribute *type_attr;
c906108c 18896
e142c38c 18897 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
33ac96f0
JK
18898 if (!type_attr)
18899 error (_("Dwarf Error: Problem turning containing type into gdb type "
4262abfb 18900 "[in module %s]"), objfile_name (cu->objfile));
33ac96f0 18901
673bfd45 18902 return lookup_die_type (die, type_attr, cu);
c906108c
SS
18903}
18904
ac9ec31b
DE
18905/* Return an error marker type to use for the ill formed type in DIE/CU. */
18906
18907static struct type *
18908build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
18909{
18910 struct objfile *objfile = dwarf2_per_objfile->objfile;
18911 char *message, *saved;
18912
18913 message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
4262abfb 18914 objfile_name (objfile),
ac9ec31b
DE
18915 cu->header.offset.sect_off,
18916 die->offset.sect_off);
18917 saved = obstack_copy0 (&objfile->objfile_obstack,
18918 message, strlen (message));
18919 xfree (message);
18920
18921 return init_type (TYPE_CODE_ERROR, 0, 0, saved, objfile);
18922}
18923
673bfd45 18924/* Look up the type of DIE in CU using its type attribute ATTR.
ac9ec31b
DE
18925 ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
18926 DW_AT_containing_type.
673bfd45
DE
18927 If there is no type substitute an error marker. */
18928
c906108c 18929static struct type *
ff39bb5e 18930lookup_die_type (struct die_info *die, const struct attribute *attr,
673bfd45 18931 struct dwarf2_cu *cu)
c906108c 18932{
bb5ed363 18933 struct objfile *objfile = cu->objfile;
f792889a
DJ
18934 struct type *this_type;
18935
ac9ec31b
DE
18936 gdb_assert (attr->name == DW_AT_type
18937 || attr->name == DW_AT_GNAT_descriptive_type
18938 || attr->name == DW_AT_containing_type);
18939
673bfd45
DE
18940 /* First see if we have it cached. */
18941
36586728
TT
18942 if (attr->form == DW_FORM_GNU_ref_alt)
18943 {
18944 struct dwarf2_per_cu_data *per_cu;
18945 sect_offset offset = dwarf2_get_ref_die_offset (attr);
18946
18947 per_cu = dwarf2_find_containing_comp_unit (offset, 1, cu->objfile);
18948 this_type = get_die_type_at_offset (offset, per_cu);
18949 }
7771576e 18950 else if (attr_form_is_ref (attr))
673bfd45 18951 {
b64f50a1 18952 sect_offset offset = dwarf2_get_ref_die_offset (attr);
673bfd45
DE
18953
18954 this_type = get_die_type_at_offset (offset, cu->per_cu);
18955 }
55f1336d 18956 else if (attr->form == DW_FORM_ref_sig8)
673bfd45 18957 {
ac9ec31b 18958 ULONGEST signature = DW_SIGNATURE (attr);
673bfd45 18959
ac9ec31b 18960 return get_signatured_type (die, signature, cu);
673bfd45
DE
18961 }
18962 else
18963 {
ac9ec31b
DE
18964 complaint (&symfile_complaints,
18965 _("Dwarf Error: Bad type attribute %s in DIE"
18966 " at 0x%x [in module %s]"),
18967 dwarf_attr_name (attr->name), die->offset.sect_off,
4262abfb 18968 objfile_name (objfile));
ac9ec31b 18969 return build_error_marker_type (cu, die);
673bfd45
DE
18970 }
18971
18972 /* If not cached we need to read it in. */
18973
18974 if (this_type == NULL)
18975 {
ac9ec31b 18976 struct die_info *type_die = NULL;
673bfd45
DE
18977 struct dwarf2_cu *type_cu = cu;
18978
7771576e 18979 if (attr_form_is_ref (attr))
ac9ec31b
DE
18980 type_die = follow_die_ref (die, attr, &type_cu);
18981 if (type_die == NULL)
18982 return build_error_marker_type (cu, die);
18983 /* If we find the type now, it's probably because the type came
3019eac3
DE
18984 from an inter-CU reference and the type's CU got expanded before
18985 ours. */
ac9ec31b 18986 this_type = read_type_die (type_die, type_cu);
673bfd45
DE
18987 }
18988
18989 /* If we still don't have a type use an error marker. */
18990
18991 if (this_type == NULL)
ac9ec31b 18992 return build_error_marker_type (cu, die);
673bfd45 18993
f792889a 18994 return this_type;
c906108c
SS
18995}
18996
673bfd45
DE
18997/* Return the type in DIE, CU.
18998 Returns NULL for invalid types.
18999
02142a6c 19000 This first does a lookup in die_type_hash,
673bfd45
DE
19001 and only reads the die in if necessary.
19002
19003 NOTE: This can be called when reading in partial or full symbols. */
19004
f792889a 19005static struct type *
e7c27a73 19006read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19007{
f792889a
DJ
19008 struct type *this_type;
19009
19010 this_type = get_die_type (die, cu);
19011 if (this_type)
19012 return this_type;
19013
673bfd45
DE
19014 return read_type_die_1 (die, cu);
19015}
19016
19017/* Read the type in DIE, CU.
19018 Returns NULL for invalid types. */
19019
19020static struct type *
19021read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
19022{
19023 struct type *this_type = NULL;
19024
c906108c
SS
19025 switch (die->tag)
19026 {
19027 case DW_TAG_class_type:
680b30c7 19028 case DW_TAG_interface_type:
c906108c
SS
19029 case DW_TAG_structure_type:
19030 case DW_TAG_union_type:
f792889a 19031 this_type = read_structure_type (die, cu);
c906108c
SS
19032 break;
19033 case DW_TAG_enumeration_type:
f792889a 19034 this_type = read_enumeration_type (die, cu);
c906108c
SS
19035 break;
19036 case DW_TAG_subprogram:
19037 case DW_TAG_subroutine_type:
edb3359d 19038 case DW_TAG_inlined_subroutine:
f792889a 19039 this_type = read_subroutine_type (die, cu);
c906108c
SS
19040 break;
19041 case DW_TAG_array_type:
f792889a 19042 this_type = read_array_type (die, cu);
c906108c 19043 break;
72019c9c 19044 case DW_TAG_set_type:
f792889a 19045 this_type = read_set_type (die, cu);
72019c9c 19046 break;
c906108c 19047 case DW_TAG_pointer_type:
f792889a 19048 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
19049 break;
19050 case DW_TAG_ptr_to_member_type:
f792889a 19051 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
19052 break;
19053 case DW_TAG_reference_type:
f792889a 19054 this_type = read_tag_reference_type (die, cu);
c906108c
SS
19055 break;
19056 case DW_TAG_const_type:
f792889a 19057 this_type = read_tag_const_type (die, cu);
c906108c
SS
19058 break;
19059 case DW_TAG_volatile_type:
f792889a 19060 this_type = read_tag_volatile_type (die, cu);
c906108c 19061 break;
06d66ee9
TT
19062 case DW_TAG_restrict_type:
19063 this_type = read_tag_restrict_type (die, cu);
19064 break;
c906108c 19065 case DW_TAG_string_type:
f792889a 19066 this_type = read_tag_string_type (die, cu);
c906108c
SS
19067 break;
19068 case DW_TAG_typedef:
f792889a 19069 this_type = read_typedef (die, cu);
c906108c 19070 break;
a02abb62 19071 case DW_TAG_subrange_type:
f792889a 19072 this_type = read_subrange_type (die, cu);
a02abb62 19073 break;
c906108c 19074 case DW_TAG_base_type:
f792889a 19075 this_type = read_base_type (die, cu);
c906108c 19076 break;
81a17f79 19077 case DW_TAG_unspecified_type:
f792889a 19078 this_type = read_unspecified_type (die, cu);
81a17f79 19079 break;
0114d602
DJ
19080 case DW_TAG_namespace:
19081 this_type = read_namespace_type (die, cu);
19082 break;
f55ee35c
JK
19083 case DW_TAG_module:
19084 this_type = read_module_type (die, cu);
19085 break;
a2c2acaf
MW
19086 case DW_TAG_atomic_type:
19087 this_type = read_tag_atomic_type (die, cu);
19088 break;
c906108c 19089 default:
3e43a32a
MS
19090 complaint (&symfile_complaints,
19091 _("unexpected tag in read_type_die: '%s'"),
4d3c2250 19092 dwarf_tag_name (die->tag));
c906108c
SS
19093 break;
19094 }
63d06c5c 19095
f792889a 19096 return this_type;
63d06c5c
DC
19097}
19098
abc72ce4
DE
19099/* See if we can figure out if the class lives in a namespace. We do
19100 this by looking for a member function; its demangled name will
19101 contain namespace info, if there is any.
19102 Return the computed name or NULL.
19103 Space for the result is allocated on the objfile's obstack.
19104 This is the full-die version of guess_partial_die_structure_name.
19105 In this case we know DIE has no useful parent. */
19106
19107static char *
19108guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
19109{
19110 struct die_info *spec_die;
19111 struct dwarf2_cu *spec_cu;
19112 struct die_info *child;
19113
19114 spec_cu = cu;
19115 spec_die = die_specification (die, &spec_cu);
19116 if (spec_die != NULL)
19117 {
19118 die = spec_die;
19119 cu = spec_cu;
19120 }
19121
19122 for (child = die->child;
19123 child != NULL;
19124 child = child->sibling)
19125 {
19126 if (child->tag == DW_TAG_subprogram)
19127 {
19128 struct attribute *attr;
19129
19130 attr = dwarf2_attr (child, DW_AT_linkage_name, cu);
19131 if (attr == NULL)
19132 attr = dwarf2_attr (child, DW_AT_MIPS_linkage_name, cu);
19133 if (attr != NULL)
19134 {
19135 char *actual_name
19136 = language_class_name_from_physname (cu->language_defn,
19137 DW_STRING (attr));
19138 char *name = NULL;
19139
19140 if (actual_name != NULL)
19141 {
15d034d0 19142 const char *die_name = dwarf2_name (die, cu);
abc72ce4
DE
19143
19144 if (die_name != NULL
19145 && strcmp (die_name, actual_name) != 0)
19146 {
19147 /* Strip off the class name from the full name.
19148 We want the prefix. */
19149 int die_name_len = strlen (die_name);
19150 int actual_name_len = strlen (actual_name);
19151
19152 /* Test for '::' as a sanity check. */
19153 if (actual_name_len > die_name_len + 2
3e43a32a
MS
19154 && actual_name[actual_name_len
19155 - die_name_len - 1] == ':')
abc72ce4 19156 name =
34a68019 19157 obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb
TT
19158 actual_name,
19159 actual_name_len - die_name_len - 2);
abc72ce4
DE
19160 }
19161 }
19162 xfree (actual_name);
19163 return name;
19164 }
19165 }
19166 }
19167
19168 return NULL;
19169}
19170
96408a79
SA
19171/* GCC might emit a nameless typedef that has a linkage name. Determine the
19172 prefix part in such case. See
19173 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19174
19175static char *
19176anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
19177{
19178 struct attribute *attr;
19179 char *base;
19180
19181 if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
19182 && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
19183 return NULL;
19184
19185 attr = dwarf2_attr (die, DW_AT_name, cu);
19186 if (attr != NULL && DW_STRING (attr) != NULL)
19187 return NULL;
19188
19189 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19190 if (attr == NULL)
19191 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19192 if (attr == NULL || DW_STRING (attr) == NULL)
19193 return NULL;
19194
19195 /* dwarf2_name had to be already called. */
19196 gdb_assert (DW_STRING_IS_CANONICAL (attr));
19197
19198 /* Strip the base name, keep any leading namespaces/classes. */
19199 base = strrchr (DW_STRING (attr), ':');
19200 if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
19201 return "";
19202
34a68019 19203 return obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
10f0c4bb 19204 DW_STRING (attr), &base[-1] - DW_STRING (attr));
96408a79
SA
19205}
19206
fdde2d81 19207/* Return the name of the namespace/class that DIE is defined within,
0114d602 19208 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 19209
0114d602
DJ
19210 For example, if we're within the method foo() in the following
19211 code:
19212
19213 namespace N {
19214 class C {
19215 void foo () {
19216 }
19217 };
19218 }
19219
19220 then determine_prefix on foo's die will return "N::C". */
fdde2d81 19221
0d5cff50 19222static const char *
e142c38c 19223determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 19224{
0114d602
DJ
19225 struct die_info *parent, *spec_die;
19226 struct dwarf2_cu *spec_cu;
19227 struct type *parent_type;
96408a79 19228 char *retval;
63d06c5c 19229
f55ee35c
JK
19230 if (cu->language != language_cplus && cu->language != language_java
19231 && cu->language != language_fortran)
0114d602
DJ
19232 return "";
19233
96408a79
SA
19234 retval = anonymous_struct_prefix (die, cu);
19235 if (retval)
19236 return retval;
19237
0114d602
DJ
19238 /* We have to be careful in the presence of DW_AT_specification.
19239 For example, with GCC 3.4, given the code
19240
19241 namespace N {
19242 void foo() {
19243 // Definition of N::foo.
19244 }
19245 }
19246
19247 then we'll have a tree of DIEs like this:
19248
19249 1: DW_TAG_compile_unit
19250 2: DW_TAG_namespace // N
19251 3: DW_TAG_subprogram // declaration of N::foo
19252 4: DW_TAG_subprogram // definition of N::foo
19253 DW_AT_specification // refers to die #3
19254
19255 Thus, when processing die #4, we have to pretend that we're in
19256 the context of its DW_AT_specification, namely the contex of die
19257 #3. */
19258 spec_cu = cu;
19259 spec_die = die_specification (die, &spec_cu);
19260 if (spec_die == NULL)
19261 parent = die->parent;
19262 else
63d06c5c 19263 {
0114d602
DJ
19264 parent = spec_die->parent;
19265 cu = spec_cu;
63d06c5c 19266 }
0114d602
DJ
19267
19268 if (parent == NULL)
19269 return "";
98bfdba5
PA
19270 else if (parent->building_fullname)
19271 {
19272 const char *name;
19273 const char *parent_name;
19274
19275 /* It has been seen on RealView 2.2 built binaries,
19276 DW_TAG_template_type_param types actually _defined_ as
19277 children of the parent class:
19278
19279 enum E {};
19280 template class <class Enum> Class{};
19281 Class<enum E> class_e;
19282
19283 1: DW_TAG_class_type (Class)
19284 2: DW_TAG_enumeration_type (E)
19285 3: DW_TAG_enumerator (enum1:0)
19286 3: DW_TAG_enumerator (enum2:1)
19287 ...
19288 2: DW_TAG_template_type_param
19289 DW_AT_type DW_FORM_ref_udata (E)
19290
19291 Besides being broken debug info, it can put GDB into an
19292 infinite loop. Consider:
19293
19294 When we're building the full name for Class<E>, we'll start
19295 at Class, and go look over its template type parameters,
19296 finding E. We'll then try to build the full name of E, and
19297 reach here. We're now trying to build the full name of E,
19298 and look over the parent DIE for containing scope. In the
19299 broken case, if we followed the parent DIE of E, we'd again
19300 find Class, and once again go look at its template type
19301 arguments, etc., etc. Simply don't consider such parent die
19302 as source-level parent of this die (it can't be, the language
19303 doesn't allow it), and break the loop here. */
19304 name = dwarf2_name (die, cu);
19305 parent_name = dwarf2_name (parent, cu);
19306 complaint (&symfile_complaints,
19307 _("template param type '%s' defined within parent '%s'"),
19308 name ? name : "<unknown>",
19309 parent_name ? parent_name : "<unknown>");
19310 return "";
19311 }
63d06c5c 19312 else
0114d602
DJ
19313 switch (parent->tag)
19314 {
63d06c5c 19315 case DW_TAG_namespace:
0114d602 19316 parent_type = read_type_die (parent, cu);
acebe513
UW
19317 /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
19318 DW_TAG_namespace DIEs with a name of "::" for the global namespace.
19319 Work around this problem here. */
19320 if (cu->language == language_cplus
19321 && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
19322 return "";
0114d602
DJ
19323 /* We give a name to even anonymous namespaces. */
19324 return TYPE_TAG_NAME (parent_type);
63d06c5c 19325 case DW_TAG_class_type:
680b30c7 19326 case DW_TAG_interface_type:
63d06c5c 19327 case DW_TAG_structure_type:
0114d602 19328 case DW_TAG_union_type:
f55ee35c 19329 case DW_TAG_module:
0114d602
DJ
19330 parent_type = read_type_die (parent, cu);
19331 if (TYPE_TAG_NAME (parent_type) != NULL)
19332 return TYPE_TAG_NAME (parent_type);
19333 else
19334 /* An anonymous structure is only allowed non-static data
19335 members; no typedefs, no member functions, et cetera.
19336 So it does not need a prefix. */
19337 return "";
abc72ce4 19338 case DW_TAG_compile_unit:
95554aad 19339 case DW_TAG_partial_unit:
abc72ce4
DE
19340 /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace. Cope. */
19341 if (cu->language == language_cplus
8b70b953 19342 && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
abc72ce4
DE
19343 && die->child != NULL
19344 && (die->tag == DW_TAG_class_type
19345 || die->tag == DW_TAG_structure_type
19346 || die->tag == DW_TAG_union_type))
19347 {
19348 char *name = guess_full_die_structure_name (die, cu);
19349 if (name != NULL)
19350 return name;
19351 }
19352 return "";
3d567982
TT
19353 case DW_TAG_enumeration_type:
19354 parent_type = read_type_die (parent, cu);
19355 if (TYPE_DECLARED_CLASS (parent_type))
19356 {
19357 if (TYPE_TAG_NAME (parent_type) != NULL)
19358 return TYPE_TAG_NAME (parent_type);
19359 return "";
19360 }
19361 /* Fall through. */
63d06c5c 19362 default:
8176b9b8 19363 return determine_prefix (parent, cu);
63d06c5c 19364 }
63d06c5c
DC
19365}
19366
3e43a32a
MS
19367/* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
19368 with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
19369 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null, perform
19370 an obconcat, otherwise allocate storage for the result. The CU argument is
19371 used to determine the language and hence, the appropriate separator. */
987504bb 19372
f55ee35c 19373#define MAX_SEP_LEN 7 /* strlen ("__") + strlen ("_MOD_") */
63d06c5c
DC
19374
19375static char *
f55ee35c
JK
19376typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
19377 int physname, struct dwarf2_cu *cu)
63d06c5c 19378{
f55ee35c 19379 const char *lead = "";
5c315b68 19380 const char *sep;
63d06c5c 19381
3e43a32a
MS
19382 if (suffix == NULL || suffix[0] == '\0'
19383 || prefix == NULL || prefix[0] == '\0')
987504bb
JJ
19384 sep = "";
19385 else if (cu->language == language_java)
19386 sep = ".";
f55ee35c
JK
19387 else if (cu->language == language_fortran && physname)
19388 {
19389 /* This is gfortran specific mangling. Normally DW_AT_linkage_name or
19390 DW_AT_MIPS_linkage_name is preferred and used instead. */
19391
19392 lead = "__";
19393 sep = "_MOD_";
19394 }
987504bb
JJ
19395 else
19396 sep = "::";
63d06c5c 19397
6dd47d34
DE
19398 if (prefix == NULL)
19399 prefix = "";
19400 if (suffix == NULL)
19401 suffix = "";
19402
987504bb
JJ
19403 if (obs == NULL)
19404 {
3e43a32a
MS
19405 char *retval
19406 = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
9a619af0 19407
f55ee35c
JK
19408 strcpy (retval, lead);
19409 strcat (retval, prefix);
6dd47d34
DE
19410 strcat (retval, sep);
19411 strcat (retval, suffix);
63d06c5c
DC
19412 return retval;
19413 }
987504bb
JJ
19414 else
19415 {
19416 /* We have an obstack. */
f55ee35c 19417 return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
987504bb 19418 }
63d06c5c
DC
19419}
19420
c906108c
SS
19421/* Return sibling of die, NULL if no sibling. */
19422
f9aca02d 19423static struct die_info *
fba45db2 19424sibling_die (struct die_info *die)
c906108c 19425{
639d11d3 19426 return die->sibling;
c906108c
SS
19427}
19428
71c25dea
TT
19429/* Get name of a die, return NULL if not found. */
19430
15d034d0
TT
19431static const char *
19432dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
71c25dea
TT
19433 struct obstack *obstack)
19434{
19435 if (name && cu->language == language_cplus)
19436 {
19437 char *canon_name = cp_canonicalize_string (name);
19438
19439 if (canon_name != NULL)
19440 {
19441 if (strcmp (canon_name, name) != 0)
10f0c4bb 19442 name = obstack_copy0 (obstack, canon_name, strlen (canon_name));
71c25dea
TT
19443 xfree (canon_name);
19444 }
19445 }
19446
19447 return name;
c906108c
SS
19448}
19449
96553a0c
DE
19450/* Get name of a die, return NULL if not found.
19451 Anonymous namespaces are converted to their magic string. */
9219021c 19452
15d034d0 19453static const char *
e142c38c 19454dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
19455{
19456 struct attribute *attr;
19457
e142c38c 19458 attr = dwarf2_attr (die, DW_AT_name, cu);
53832f31 19459 if ((!attr || !DW_STRING (attr))
96553a0c 19460 && die->tag != DW_TAG_namespace
53832f31
TT
19461 && die->tag != DW_TAG_class_type
19462 && die->tag != DW_TAG_interface_type
19463 && die->tag != DW_TAG_structure_type
19464 && die->tag != DW_TAG_union_type)
71c25dea
TT
19465 return NULL;
19466
19467 switch (die->tag)
19468 {
19469 case DW_TAG_compile_unit:
95554aad 19470 case DW_TAG_partial_unit:
71c25dea
TT
19471 /* Compilation units have a DW_AT_name that is a filename, not
19472 a source language identifier. */
19473 case DW_TAG_enumeration_type:
19474 case DW_TAG_enumerator:
19475 /* These tags always have simple identifiers already; no need
19476 to canonicalize them. */
19477 return DW_STRING (attr);
907af001 19478
96553a0c
DE
19479 case DW_TAG_namespace:
19480 if (attr != NULL && DW_STRING (attr) != NULL)
19481 return DW_STRING (attr);
19482 return CP_ANONYMOUS_NAMESPACE_STR;
19483
418835cc
KS
19484 case DW_TAG_subprogram:
19485 /* Java constructors will all be named "<init>", so return
19486 the class name when we see this special case. */
19487 if (cu->language == language_java
19488 && DW_STRING (attr) != NULL
19489 && strcmp (DW_STRING (attr), "<init>") == 0)
19490 {
19491 struct dwarf2_cu *spec_cu = cu;
19492 struct die_info *spec_die;
19493
19494 /* GCJ will output '<init>' for Java constructor names.
19495 For this special case, return the name of the parent class. */
19496
cdc07690 19497 /* GCJ may output subprogram DIEs with AT_specification set.
418835cc
KS
19498 If so, use the name of the specified DIE. */
19499 spec_die = die_specification (die, &spec_cu);
19500 if (spec_die != NULL)
19501 return dwarf2_name (spec_die, spec_cu);
19502
19503 do
19504 {
19505 die = die->parent;
19506 if (die->tag == DW_TAG_class_type)
19507 return dwarf2_name (die, cu);
19508 }
95554aad
TT
19509 while (die->tag != DW_TAG_compile_unit
19510 && die->tag != DW_TAG_partial_unit);
418835cc 19511 }
907af001
UW
19512 break;
19513
19514 case DW_TAG_class_type:
19515 case DW_TAG_interface_type:
19516 case DW_TAG_structure_type:
19517 case DW_TAG_union_type:
19518 /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
19519 structures or unions. These were of the form "._%d" in GCC 4.1,
19520 or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
19521 and GCC 4.4. We work around this problem by ignoring these. */
53832f31 19522 if (attr && DW_STRING (attr)
61012eef
GB
19523 && (startswith (DW_STRING (attr), "._")
19524 || startswith (DW_STRING (attr), "<anonymous")))
907af001 19525 return NULL;
53832f31
TT
19526
19527 /* GCC might emit a nameless typedef that has a linkage name. See
19528 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510. */
19529 if (!attr || DW_STRING (attr) == NULL)
19530 {
df5c6c50 19531 char *demangled = NULL;
53832f31
TT
19532
19533 attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
19534 if (attr == NULL)
19535 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
19536
19537 if (attr == NULL || DW_STRING (attr) == NULL)
19538 return NULL;
19539
df5c6c50
JK
19540 /* Avoid demangling DW_STRING (attr) the second time on a second
19541 call for the same DIE. */
19542 if (!DW_STRING_IS_CANONICAL (attr))
8de20a37 19543 demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
53832f31
TT
19544
19545 if (demangled)
19546 {
96408a79
SA
19547 char *base;
19548
53832f31 19549 /* FIXME: we already did this for the partial symbol... */
34a68019
TT
19550 DW_STRING (attr)
19551 = obstack_copy0 (&cu->objfile->per_bfd->storage_obstack,
19552 demangled, strlen (demangled));
53832f31
TT
19553 DW_STRING_IS_CANONICAL (attr) = 1;
19554 xfree (demangled);
96408a79
SA
19555
19556 /* Strip any leading namespaces/classes, keep only the base name.
19557 DW_AT_name for named DIEs does not contain the prefixes. */
19558 base = strrchr (DW_STRING (attr), ':');
19559 if (base && base > DW_STRING (attr) && base[-1] == ':')
19560 return &base[1];
19561 else
19562 return DW_STRING (attr);
53832f31
TT
19563 }
19564 }
907af001
UW
19565 break;
19566
71c25dea 19567 default:
907af001
UW
19568 break;
19569 }
19570
19571 if (!DW_STRING_IS_CANONICAL (attr))
19572 {
19573 DW_STRING (attr)
19574 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
34a68019 19575 &cu->objfile->per_bfd->storage_obstack);
907af001 19576 DW_STRING_IS_CANONICAL (attr) = 1;
71c25dea 19577 }
907af001 19578 return DW_STRING (attr);
9219021c
DC
19579}
19580
19581/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
19582 is none. *EXT_CU is the CU containing DIE on input, and the CU
19583 containing the return value on output. */
9219021c
DC
19584
19585static struct die_info *
f2f0e013 19586dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
19587{
19588 struct attribute *attr;
9219021c 19589
f2f0e013 19590 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
19591 if (attr == NULL)
19592 return NULL;
19593
f2f0e013 19594 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
19595}
19596
c906108c
SS
19597/* Convert a DIE tag into its string name. */
19598
f39c6ffd 19599static const char *
aa1ee363 19600dwarf_tag_name (unsigned tag)
c906108c 19601{
f39c6ffd
TT
19602 const char *name = get_DW_TAG_name (tag);
19603
19604 if (name == NULL)
19605 return "DW_TAG_<unknown>";
19606
19607 return name;
c906108c
SS
19608}
19609
19610/* Convert a DWARF attribute code into its string name. */
19611
f39c6ffd 19612static const char *
aa1ee363 19613dwarf_attr_name (unsigned attr)
c906108c 19614{
f39c6ffd
TT
19615 const char *name;
19616
c764a876 19617#ifdef MIPS /* collides with DW_AT_HP_block_index */
f39c6ffd
TT
19618 if (attr == DW_AT_MIPS_fde)
19619 return "DW_AT_MIPS_fde";
19620#else
19621 if (attr == DW_AT_HP_block_index)
19622 return "DW_AT_HP_block_index";
c764a876 19623#endif
f39c6ffd
TT
19624
19625 name = get_DW_AT_name (attr);
19626
19627 if (name == NULL)
19628 return "DW_AT_<unknown>";
19629
19630 return name;
c906108c
SS
19631}
19632
19633/* Convert a DWARF value form code into its string name. */
19634
f39c6ffd 19635static const char *
aa1ee363 19636dwarf_form_name (unsigned form)
c906108c 19637{
f39c6ffd
TT
19638 const char *name = get_DW_FORM_name (form);
19639
19640 if (name == NULL)
19641 return "DW_FORM_<unknown>";
19642
19643 return name;
c906108c
SS
19644}
19645
19646static char *
fba45db2 19647dwarf_bool_name (unsigned mybool)
c906108c
SS
19648{
19649 if (mybool)
19650 return "TRUE";
19651 else
19652 return "FALSE";
19653}
19654
19655/* Convert a DWARF type code into its string name. */
19656
f39c6ffd 19657static const char *
aa1ee363 19658dwarf_type_encoding_name (unsigned enc)
c906108c 19659{
f39c6ffd 19660 const char *name = get_DW_ATE_name (enc);
c906108c 19661
f39c6ffd
TT
19662 if (name == NULL)
19663 return "DW_ATE_<unknown>";
c906108c 19664
f39c6ffd 19665 return name;
c906108c 19666}
c906108c 19667
f9aca02d 19668static void
d97bc12b 19669dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
19670{
19671 unsigned int i;
19672
d97bc12b
DE
19673 print_spaces (indent, f);
19674 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
b64f50a1 19675 dwarf_tag_name (die->tag), die->abbrev, die->offset.sect_off);
d97bc12b
DE
19676
19677 if (die->parent != NULL)
19678 {
19679 print_spaces (indent, f);
19680 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
b64f50a1 19681 die->parent->offset.sect_off);
d97bc12b
DE
19682 }
19683
19684 print_spaces (indent, f);
19685 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 19686 dwarf_bool_name (die->child != NULL));
c906108c 19687
d97bc12b
DE
19688 print_spaces (indent, f);
19689 fprintf_unfiltered (f, " attributes:\n");
19690
c906108c
SS
19691 for (i = 0; i < die->num_attrs; ++i)
19692 {
d97bc12b
DE
19693 print_spaces (indent, f);
19694 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
19695 dwarf_attr_name (die->attrs[i].name),
19696 dwarf_form_name (die->attrs[i].form));
d97bc12b 19697
c906108c
SS
19698 switch (die->attrs[i].form)
19699 {
c906108c 19700 case DW_FORM_addr:
3019eac3 19701 case DW_FORM_GNU_addr_index:
d97bc12b 19702 fprintf_unfiltered (f, "address: ");
5af949e3 19703 fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
19704 break;
19705 case DW_FORM_block2:
19706 case DW_FORM_block4:
19707 case DW_FORM_block:
19708 case DW_FORM_block1:
56eb65bd
SP
19709 fprintf_unfiltered (f, "block: size %s",
19710 pulongest (DW_BLOCK (&die->attrs[i])->size));
c906108c 19711 break;
2dc7f7b3 19712 case DW_FORM_exprloc:
56eb65bd
SP
19713 fprintf_unfiltered (f, "expression: size %s",
19714 pulongest (DW_BLOCK (&die->attrs[i])->size));
2dc7f7b3 19715 break;
4568ecf9
DE
19716 case DW_FORM_ref_addr:
19717 fprintf_unfiltered (f, "ref address: ");
19718 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19719 break;
36586728
TT
19720 case DW_FORM_GNU_ref_alt:
19721 fprintf_unfiltered (f, "alt ref address: ");
19722 fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
19723 break;
10b3939b
DJ
19724 case DW_FORM_ref1:
19725 case DW_FORM_ref2:
19726 case DW_FORM_ref4:
4568ecf9
DE
19727 case DW_FORM_ref8:
19728 case DW_FORM_ref_udata:
d97bc12b 19729 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
4568ecf9 19730 (long) (DW_UNSND (&die->attrs[i])));
10b3939b 19731 break;
c906108c
SS
19732 case DW_FORM_data1:
19733 case DW_FORM_data2:
19734 case DW_FORM_data4:
ce5d95e1 19735 case DW_FORM_data8:
c906108c
SS
19736 case DW_FORM_udata:
19737 case DW_FORM_sdata:
43bbcdc2
PH
19738 fprintf_unfiltered (f, "constant: %s",
19739 pulongest (DW_UNSND (&die->attrs[i])));
c906108c 19740 break;
2dc7f7b3
TT
19741 case DW_FORM_sec_offset:
19742 fprintf_unfiltered (f, "section offset: %s",
19743 pulongest (DW_UNSND (&die->attrs[i])));
19744 break;
55f1336d 19745 case DW_FORM_ref_sig8:
ac9ec31b
DE
19746 fprintf_unfiltered (f, "signature: %s",
19747 hex_string (DW_SIGNATURE (&die->attrs[i])));
348e048f 19748 break;
c906108c 19749 case DW_FORM_string:
4bdf3d34 19750 case DW_FORM_strp:
3019eac3 19751 case DW_FORM_GNU_str_index:
36586728 19752 case DW_FORM_GNU_strp_alt:
8285870a 19753 fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
c906108c 19754 DW_STRING (&die->attrs[i])
8285870a
JK
19755 ? DW_STRING (&die->attrs[i]) : "",
19756 DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
c906108c
SS
19757 break;
19758 case DW_FORM_flag:
19759 if (DW_UNSND (&die->attrs[i]))
d97bc12b 19760 fprintf_unfiltered (f, "flag: TRUE");
c906108c 19761 else
d97bc12b 19762 fprintf_unfiltered (f, "flag: FALSE");
c906108c 19763 break;
2dc7f7b3
TT
19764 case DW_FORM_flag_present:
19765 fprintf_unfiltered (f, "flag: TRUE");
19766 break;
a8329558 19767 case DW_FORM_indirect:
0963b4bd
MS
19768 /* The reader will have reduced the indirect form to
19769 the "base form" so this form should not occur. */
3e43a32a
MS
19770 fprintf_unfiltered (f,
19771 "unexpected attribute form: DW_FORM_indirect");
a8329558 19772 break;
c906108c 19773 default:
d97bc12b 19774 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 19775 die->attrs[i].form);
d97bc12b 19776 break;
c906108c 19777 }
d97bc12b 19778 fprintf_unfiltered (f, "\n");
c906108c
SS
19779 }
19780}
19781
f9aca02d 19782static void
d97bc12b 19783dump_die_for_error (struct die_info *die)
c906108c 19784{
d97bc12b
DE
19785 dump_die_shallow (gdb_stderr, 0, die);
19786}
19787
19788static void
19789dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
19790{
19791 int indent = level * 4;
19792
19793 gdb_assert (die != NULL);
19794
19795 if (level >= max_level)
19796 return;
19797
19798 dump_die_shallow (f, indent, die);
19799
19800 if (die->child != NULL)
c906108c 19801 {
d97bc12b
DE
19802 print_spaces (indent, f);
19803 fprintf_unfiltered (f, " Children:");
19804 if (level + 1 < max_level)
19805 {
19806 fprintf_unfiltered (f, "\n");
19807 dump_die_1 (f, level + 1, max_level, die->child);
19808 }
19809 else
19810 {
3e43a32a
MS
19811 fprintf_unfiltered (f,
19812 " [not printed, max nesting level reached]\n");
d97bc12b
DE
19813 }
19814 }
19815
19816 if (die->sibling != NULL && level > 0)
19817 {
19818 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
19819 }
19820}
19821
d97bc12b
DE
19822/* This is called from the pdie macro in gdbinit.in.
19823 It's not static so gcc will keep a copy callable from gdb. */
19824
19825void
19826dump_die (struct die_info *die, int max_level)
19827{
19828 dump_die_1 (gdb_stdlog, 0, max_level, die);
19829}
19830
f9aca02d 19831static void
51545339 19832store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 19833{
51545339 19834 void **slot;
c906108c 19835
b64f50a1
JK
19836 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset.sect_off,
19837 INSERT);
51545339
DJ
19838
19839 *slot = die;
c906108c
SS
19840}
19841
b64f50a1
JK
19842/* Return DIE offset of ATTR. Return 0 with complaint if ATTR is not of the
19843 required kind. */
19844
19845static sect_offset
ff39bb5e 19846dwarf2_get_ref_die_offset (const struct attribute *attr)
93311388 19847{
4568ecf9 19848 sect_offset retval = { DW_UNSND (attr) };
b64f50a1 19849
7771576e 19850 if (attr_form_is_ref (attr))
b64f50a1 19851 return retval;
93311388 19852
b64f50a1 19853 retval.sect_off = 0;
93311388
DE
19854 complaint (&symfile_complaints,
19855 _("unsupported die ref attribute form: '%s'"),
19856 dwarf_form_name (attr->form));
b64f50a1 19857 return retval;
c906108c
SS
19858}
19859
43bbcdc2
PH
19860/* Return the constant value held by ATTR. Return DEFAULT_VALUE if
19861 * the value held by the attribute is not constant. */
a02abb62 19862
43bbcdc2 19863static LONGEST
ff39bb5e 19864dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
a02abb62
JB
19865{
19866 if (attr->form == DW_FORM_sdata)
19867 return DW_SND (attr);
19868 else if (attr->form == DW_FORM_udata
19869 || attr->form == DW_FORM_data1
19870 || attr->form == DW_FORM_data2
19871 || attr->form == DW_FORM_data4
19872 || attr->form == DW_FORM_data8)
19873 return DW_UNSND (attr);
19874 else
19875 {
3e43a32a
MS
19876 complaint (&symfile_complaints,
19877 _("Attribute value is not a constant (%s)"),
a02abb62
JB
19878 dwarf_form_name (attr->form));
19879 return default_value;
19880 }
19881}
19882
348e048f
DE
19883/* Follow reference or signature attribute ATTR of SRC_DIE.
19884 On entry *REF_CU is the CU of SRC_DIE.
19885 On exit *REF_CU is the CU of the result. */
19886
19887static struct die_info *
ff39bb5e 19888follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
348e048f
DE
19889 struct dwarf2_cu **ref_cu)
19890{
19891 struct die_info *die;
19892
7771576e 19893 if (attr_form_is_ref (attr))
348e048f 19894 die = follow_die_ref (src_die, attr, ref_cu);
55f1336d 19895 else if (attr->form == DW_FORM_ref_sig8)
348e048f
DE
19896 die = follow_die_sig (src_die, attr, ref_cu);
19897 else
19898 {
19899 dump_die_for_error (src_die);
19900 error (_("Dwarf Error: Expected reference attribute [in module %s]"),
4262abfb 19901 objfile_name ((*ref_cu)->objfile));
348e048f
DE
19902 }
19903
19904 return die;
03dd20cc
DJ
19905}
19906
5c631832 19907/* Follow reference OFFSET.
673bfd45
DE
19908 On entry *REF_CU is the CU of the source die referencing OFFSET.
19909 On exit *REF_CU is the CU of the result.
19910 Returns NULL if OFFSET is invalid. */
f504f079 19911
f9aca02d 19912static struct die_info *
36586728
TT
19913follow_die_offset (sect_offset offset, int offset_in_dwz,
19914 struct dwarf2_cu **ref_cu)
c906108c 19915{
10b3939b 19916 struct die_info temp_die;
f2f0e013 19917 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 19918
348e048f
DE
19919 gdb_assert (cu->per_cu != NULL);
19920
98bfdba5
PA
19921 target_cu = cu;
19922
3019eac3 19923 if (cu->per_cu->is_debug_types)
348e048f
DE
19924 {
19925 /* .debug_types CUs cannot reference anything outside their CU.
19926 If they need to, they have to reference a signatured type via
55f1336d 19927 DW_FORM_ref_sig8. */
348e048f 19928 if (! offset_in_cu_p (&cu->header, offset))
5c631832 19929 return NULL;
348e048f 19930 }
36586728
TT
19931 else if (offset_in_dwz != cu->per_cu->is_dwz
19932 || ! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
19933 {
19934 struct dwarf2_per_cu_data *per_cu;
9a619af0 19935
36586728
TT
19936 per_cu = dwarf2_find_containing_comp_unit (offset, offset_in_dwz,
19937 cu->objfile);
03dd20cc
DJ
19938
19939 /* If necessary, add it to the queue and load its DIEs. */
95554aad
TT
19940 if (maybe_queue_comp_unit (cu, per_cu, cu->language))
19941 load_full_comp_unit (per_cu, cu->language);
03dd20cc 19942
10b3939b
DJ
19943 target_cu = per_cu->cu;
19944 }
98bfdba5
PA
19945 else if (cu->dies == NULL)
19946 {
19947 /* We're loading full DIEs during partial symbol reading. */
19948 gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
95554aad 19949 load_full_comp_unit (cu->per_cu, language_minimal);
98bfdba5 19950 }
c906108c 19951
f2f0e013 19952 *ref_cu = target_cu;
51545339 19953 temp_die.offset = offset;
b64f50a1 19954 return htab_find_with_hash (target_cu->die_hash, &temp_die, offset.sect_off);
5c631832 19955}
10b3939b 19956
5c631832
JK
19957/* Follow reference attribute ATTR of SRC_DIE.
19958 On entry *REF_CU is the CU of SRC_DIE.
19959 On exit *REF_CU is the CU of the result. */
19960
19961static struct die_info *
ff39bb5e 19962follow_die_ref (struct die_info *src_die, const struct attribute *attr,
5c631832
JK
19963 struct dwarf2_cu **ref_cu)
19964{
b64f50a1 19965 sect_offset offset = dwarf2_get_ref_die_offset (attr);
5c631832
JK
19966 struct dwarf2_cu *cu = *ref_cu;
19967 struct die_info *die;
19968
36586728
TT
19969 die = follow_die_offset (offset,
19970 (attr->form == DW_FORM_GNU_ref_alt
19971 || cu->per_cu->is_dwz),
19972 ref_cu);
5c631832
JK
19973 if (!die)
19974 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
19975 "at 0x%x [in module %s]"),
4262abfb
JK
19976 offset.sect_off, src_die->offset.sect_off,
19977 objfile_name (cu->objfile));
348e048f 19978
5c631832
JK
19979 return die;
19980}
19981
d83e736b
JK
19982/* Return DWARF block referenced by DW_AT_location of DIE at OFFSET at PER_CU.
19983 Returned value is intended for DW_OP_call*. Returned
19984 dwarf2_locexpr_baton->data has lifetime of PER_CU->OBJFILE. */
5c631832
JK
19985
19986struct dwarf2_locexpr_baton
8b9737bf
TT
19987dwarf2_fetch_die_loc_sect_off (sect_offset offset,
19988 struct dwarf2_per_cu_data *per_cu,
19989 CORE_ADDR (*get_frame_pc) (void *baton),
19990 void *baton)
5c631832 19991{
918dd910 19992 struct dwarf2_cu *cu;
5c631832
JK
19993 struct die_info *die;
19994 struct attribute *attr;
19995 struct dwarf2_locexpr_baton retval;
19996
8cf6f0b1
TT
19997 dw2_setup (per_cu->objfile);
19998
918dd910
JK
19999 if (per_cu->cu == NULL)
20000 load_cu (per_cu);
20001 cu = per_cu->cu;
20002
36586728 20003 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
5c631832
JK
20004 if (!die)
20005 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20006 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20007
20008 attr = dwarf2_attr (die, DW_AT_location, cu);
20009 if (!attr)
20010 {
e103e986
JK
20011 /* DWARF: "If there is no such attribute, then there is no effect.".
20012 DATA is ignored if SIZE is 0. */
5c631832 20013
e103e986 20014 retval.data = NULL;
5c631832
JK
20015 retval.size = 0;
20016 }
8cf6f0b1
TT
20017 else if (attr_form_is_section_offset (attr))
20018 {
20019 struct dwarf2_loclist_baton loclist_baton;
20020 CORE_ADDR pc = (*get_frame_pc) (baton);
20021 size_t size;
20022
20023 fill_in_loclist_baton (cu, &loclist_baton, attr);
20024
20025 retval.data = dwarf2_find_location_expression (&loclist_baton,
20026 &size, pc);
20027 retval.size = size;
20028 }
5c631832
JK
20029 else
20030 {
20031 if (!attr_form_is_block (attr))
20032 error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
20033 "is neither DW_FORM_block* nor DW_FORM_exprloc"),
4262abfb 20034 offset.sect_off, objfile_name (per_cu->objfile));
5c631832
JK
20035
20036 retval.data = DW_BLOCK (attr)->data;
20037 retval.size = DW_BLOCK (attr)->size;
20038 }
20039 retval.per_cu = cu->per_cu;
918dd910 20040
918dd910
JK
20041 age_cached_comp_units ();
20042
5c631832 20043 return retval;
348e048f
DE
20044}
20045
8b9737bf
TT
20046/* Like dwarf2_fetch_die_loc_sect_off, but take a CU
20047 offset. */
20048
20049struct dwarf2_locexpr_baton
20050dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
20051 struct dwarf2_per_cu_data *per_cu,
20052 CORE_ADDR (*get_frame_pc) (void *baton),
20053 void *baton)
20054{
20055 sect_offset offset = { per_cu->offset.sect_off + offset_in_cu.cu_off };
20056
20057 return dwarf2_fetch_die_loc_sect_off (offset, per_cu, get_frame_pc, baton);
20058}
20059
b6807d98
TT
20060/* Write a constant of a given type as target-ordered bytes into
20061 OBSTACK. */
20062
20063static const gdb_byte *
20064write_constant_as_bytes (struct obstack *obstack,
20065 enum bfd_endian byte_order,
20066 struct type *type,
20067 ULONGEST value,
20068 LONGEST *len)
20069{
20070 gdb_byte *result;
20071
20072 *len = TYPE_LENGTH (type);
20073 result = obstack_alloc (obstack, *len);
20074 store_unsigned_integer (result, *len, byte_order, value);
20075
20076 return result;
20077}
20078
20079/* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
20080 pointer to the constant bytes and set LEN to the length of the
20081 data. If memory is needed, allocate it on OBSTACK. If the DIE
20082 does not have a DW_AT_const_value, return NULL. */
20083
20084const gdb_byte *
20085dwarf2_fetch_constant_bytes (sect_offset offset,
20086 struct dwarf2_per_cu_data *per_cu,
20087 struct obstack *obstack,
20088 LONGEST *len)
20089{
20090 struct dwarf2_cu *cu;
20091 struct die_info *die;
20092 struct attribute *attr;
20093 const gdb_byte *result = NULL;
20094 struct type *type;
20095 LONGEST value;
20096 enum bfd_endian byte_order;
20097
20098 dw2_setup (per_cu->objfile);
20099
20100 if (per_cu->cu == NULL)
20101 load_cu (per_cu);
20102 cu = per_cu->cu;
20103
20104 die = follow_die_offset (offset, per_cu->is_dwz, &cu);
20105 if (!die)
20106 error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
4262abfb 20107 offset.sect_off, objfile_name (per_cu->objfile));
b6807d98
TT
20108
20109
20110 attr = dwarf2_attr (die, DW_AT_const_value, cu);
20111 if (attr == NULL)
20112 return NULL;
20113
20114 byte_order = (bfd_big_endian (per_cu->objfile->obfd)
20115 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
20116
20117 switch (attr->form)
20118 {
20119 case DW_FORM_addr:
20120 case DW_FORM_GNU_addr_index:
20121 {
20122 gdb_byte *tem;
20123
20124 *len = cu->header.addr_size;
20125 tem = obstack_alloc (obstack, *len);
20126 store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
20127 result = tem;
20128 }
20129 break;
20130 case DW_FORM_string:
20131 case DW_FORM_strp:
20132 case DW_FORM_GNU_str_index:
20133 case DW_FORM_GNU_strp_alt:
20134 /* DW_STRING is already allocated on the objfile obstack, point
20135 directly to it. */
20136 result = (const gdb_byte *) DW_STRING (attr);
20137 *len = strlen (DW_STRING (attr));
20138 break;
20139 case DW_FORM_block1:
20140 case DW_FORM_block2:
20141 case DW_FORM_block4:
20142 case DW_FORM_block:
20143 case DW_FORM_exprloc:
20144 result = DW_BLOCK (attr)->data;
20145 *len = DW_BLOCK (attr)->size;
20146 break;
20147
20148 /* The DW_AT_const_value attributes are supposed to carry the
20149 symbol's value "represented as it would be on the target
20150 architecture." By the time we get here, it's already been
20151 converted to host endianness, so we just need to sign- or
20152 zero-extend it as appropriate. */
20153 case DW_FORM_data1:
20154 type = die_type (die, cu);
20155 result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
20156 if (result == NULL)
20157 result = write_constant_as_bytes (obstack, byte_order,
20158 type, value, len);
20159 break;
20160 case DW_FORM_data2:
20161 type = die_type (die, cu);
20162 result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
20163 if (result == NULL)
20164 result = write_constant_as_bytes (obstack, byte_order,
20165 type, value, len);
20166 break;
20167 case DW_FORM_data4:
20168 type = die_type (die, cu);
20169 result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
20170 if (result == NULL)
20171 result = write_constant_as_bytes (obstack, byte_order,
20172 type, value, len);
20173 break;
20174 case DW_FORM_data8:
20175 type = die_type (die, cu);
20176 result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
20177 if (result == NULL)
20178 result = write_constant_as_bytes (obstack, byte_order,
20179 type, value, len);
20180 break;
20181
20182 case DW_FORM_sdata:
20183 type = die_type (die, cu);
20184 result = write_constant_as_bytes (obstack, byte_order,
20185 type, DW_SND (attr), len);
20186 break;
20187
20188 case DW_FORM_udata:
20189 type = die_type (die, cu);
20190 result = write_constant_as_bytes (obstack, byte_order,
20191 type, DW_UNSND (attr), len);
20192 break;
20193
20194 default:
20195 complaint (&symfile_complaints,
20196 _("unsupported const value attribute form: '%s'"),
20197 dwarf_form_name (attr->form));
20198 break;
20199 }
20200
20201 return result;
20202}
20203
8a9b8146
TT
20204/* Return the type of the DIE at DIE_OFFSET in the CU named by
20205 PER_CU. */
20206
20207struct type *
b64f50a1 20208dwarf2_get_die_type (cu_offset die_offset,
8a9b8146
TT
20209 struct dwarf2_per_cu_data *per_cu)
20210{
b64f50a1
JK
20211 sect_offset die_offset_sect;
20212
8a9b8146 20213 dw2_setup (per_cu->objfile);
b64f50a1
JK
20214
20215 die_offset_sect.sect_off = per_cu->offset.sect_off + die_offset.cu_off;
20216 return get_die_type_at_offset (die_offset_sect, per_cu);
8a9b8146
TT
20217}
20218
ac9ec31b 20219/* Follow type unit SIG_TYPE referenced by SRC_DIE.
348e048f 20220 On entry *REF_CU is the CU of SRC_DIE.
ac9ec31b
DE
20221 On exit *REF_CU is the CU of the result.
20222 Returns NULL if the referenced DIE isn't found. */
348e048f
DE
20223
20224static struct die_info *
ac9ec31b
DE
20225follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
20226 struct dwarf2_cu **ref_cu)
348e048f
DE
20227{
20228 struct objfile *objfile = (*ref_cu)->objfile;
20229 struct die_info temp_die;
348e048f
DE
20230 struct dwarf2_cu *sig_cu;
20231 struct die_info *die;
20232
ac9ec31b
DE
20233 /* While it might be nice to assert sig_type->type == NULL here,
20234 we can get here for DW_AT_imported_declaration where we need
20235 the DIE not the type. */
348e048f
DE
20236
20237 /* If necessary, add it to the queue and load its DIEs. */
20238
95554aad 20239 if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
a0f42c21 20240 read_signatured_type (sig_type);
348e048f 20241
348e048f 20242 sig_cu = sig_type->per_cu.cu;
69d751e3 20243 gdb_assert (sig_cu != NULL);
3019eac3
DE
20244 gdb_assert (sig_type->type_offset_in_section.sect_off != 0);
20245 temp_die.offset = sig_type->type_offset_in_section;
b64f50a1
JK
20246 die = htab_find_with_hash (sig_cu->die_hash, &temp_die,
20247 temp_die.offset.sect_off);
348e048f
DE
20248 if (die)
20249 {
796a7ff8
DE
20250 /* For .gdb_index version 7 keep track of included TUs.
20251 http://sourceware.org/bugzilla/show_bug.cgi?id=15021. */
20252 if (dwarf2_per_objfile->index_table != NULL
20253 && dwarf2_per_objfile->index_table->version <= 7)
20254 {
20255 VEC_safe_push (dwarf2_per_cu_ptr,
20256 (*ref_cu)->per_cu->imported_symtabs,
20257 sig_cu->per_cu);
20258 }
20259
348e048f
DE
20260 *ref_cu = sig_cu;
20261 return die;
20262 }
20263
ac9ec31b
DE
20264 return NULL;
20265}
20266
20267/* Follow signatured type referenced by ATTR in SRC_DIE.
20268 On entry *REF_CU is the CU of SRC_DIE.
20269 On exit *REF_CU is the CU of the result.
20270 The result is the DIE of the type.
20271 If the referenced type cannot be found an error is thrown. */
20272
20273static struct die_info *
ff39bb5e 20274follow_die_sig (struct die_info *src_die, const struct attribute *attr,
ac9ec31b
DE
20275 struct dwarf2_cu **ref_cu)
20276{
20277 ULONGEST signature = DW_SIGNATURE (attr);
20278 struct signatured_type *sig_type;
20279 struct die_info *die;
20280
20281 gdb_assert (attr->form == DW_FORM_ref_sig8);
20282
a2ce51a0 20283 sig_type = lookup_signatured_type (*ref_cu, signature);
ac9ec31b
DE
20284 /* sig_type will be NULL if the signatured type is missing from
20285 the debug info. */
20286 if (sig_type == NULL)
20287 {
20288 error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
20289 " from DIE at 0x%x [in module %s]"),
20290 hex_string (signature), src_die->offset.sect_off,
4262abfb 20291 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20292 }
20293
20294 die = follow_die_sig_1 (src_die, sig_type, ref_cu);
20295 if (die == NULL)
20296 {
20297 dump_die_for_error (src_die);
20298 error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
20299 " from DIE at 0x%x [in module %s]"),
20300 hex_string (signature), src_die->offset.sect_off,
4262abfb 20301 objfile_name ((*ref_cu)->objfile));
ac9ec31b
DE
20302 }
20303
20304 return die;
20305}
20306
20307/* Get the type specified by SIGNATURE referenced in DIE/CU,
20308 reading in and processing the type unit if necessary. */
20309
20310static struct type *
20311get_signatured_type (struct die_info *die, ULONGEST signature,
20312 struct dwarf2_cu *cu)
20313{
20314 struct signatured_type *sig_type;
20315 struct dwarf2_cu *type_cu;
20316 struct die_info *type_die;
20317 struct type *type;
20318
a2ce51a0 20319 sig_type = lookup_signatured_type (cu, signature);
ac9ec31b
DE
20320 /* sig_type will be NULL if the signatured type is missing from
20321 the debug info. */
20322 if (sig_type == NULL)
20323 {
20324 complaint (&symfile_complaints,
20325 _("Dwarf Error: Cannot find signatured DIE %s referenced"
20326 " from DIE at 0x%x [in module %s]"),
20327 hex_string (signature), die->offset.sect_off,
4262abfb 20328 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20329 return build_error_marker_type (cu, die);
20330 }
20331
20332 /* If we already know the type we're done. */
20333 if (sig_type->type != NULL)
20334 return sig_type->type;
20335
20336 type_cu = cu;
20337 type_die = follow_die_sig_1 (die, sig_type, &type_cu);
20338 if (type_die != NULL)
20339 {
20340 /* N.B. We need to call get_die_type to ensure only one type for this DIE
20341 is created. This is important, for example, because for c++ classes
20342 we need TYPE_NAME set which is only done by new_symbol. Blech. */
20343 type = read_type_die (type_die, type_cu);
20344 if (type == NULL)
20345 {
20346 complaint (&symfile_complaints,
20347 _("Dwarf Error: Cannot build signatured type %s"
20348 " referenced from DIE at 0x%x [in module %s]"),
20349 hex_string (signature), die->offset.sect_off,
4262abfb 20350 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20351 type = build_error_marker_type (cu, die);
20352 }
20353 }
20354 else
20355 {
20356 complaint (&symfile_complaints,
20357 _("Dwarf Error: Problem reading signatured DIE %s referenced"
20358 " from DIE at 0x%x [in module %s]"),
20359 hex_string (signature), die->offset.sect_off,
4262abfb 20360 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20361 type = build_error_marker_type (cu, die);
20362 }
20363 sig_type->type = type;
20364
20365 return type;
20366}
20367
20368/* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
20369 reading in and processing the type unit if necessary. */
20370
20371static struct type *
ff39bb5e 20372get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
b385a60d 20373 struct dwarf2_cu *cu) /* ARI: editCase function */
ac9ec31b
DE
20374{
20375 /* Yes, DW_AT_signature can use a non-ref_sig8 reference. */
7771576e 20376 if (attr_form_is_ref (attr))
ac9ec31b
DE
20377 {
20378 struct dwarf2_cu *type_cu = cu;
20379 struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
20380
20381 return read_type_die (type_die, type_cu);
20382 }
20383 else if (attr->form == DW_FORM_ref_sig8)
20384 {
20385 return get_signatured_type (die, DW_SIGNATURE (attr), cu);
20386 }
20387 else
20388 {
20389 complaint (&symfile_complaints,
20390 _("Dwarf Error: DW_AT_signature has bad form %s in DIE"
20391 " at 0x%x [in module %s]"),
20392 dwarf_form_name (attr->form), die->offset.sect_off,
4262abfb 20393 objfile_name (dwarf2_per_objfile->objfile));
ac9ec31b
DE
20394 return build_error_marker_type (cu, die);
20395 }
348e048f
DE
20396}
20397
e5fe5e75 20398/* Load the DIEs associated with type unit PER_CU into memory. */
348e048f
DE
20399
20400static void
e5fe5e75 20401load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
348e048f 20402{
52dc124a 20403 struct signatured_type *sig_type;
348e048f 20404
f4dc4d17
DE
20405 /* Caller is responsible for ensuring type_unit_groups don't get here. */
20406 gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
20407
6721b2ec
DE
20408 /* We have the per_cu, but we need the signatured_type.
20409 Fortunately this is an easy translation. */
20410 gdb_assert (per_cu->is_debug_types);
20411 sig_type = (struct signatured_type *) per_cu;
348e048f 20412
6721b2ec 20413 gdb_assert (per_cu->cu == NULL);
348e048f 20414
52dc124a 20415 read_signatured_type (sig_type);
348e048f 20416
6721b2ec 20417 gdb_assert (per_cu->cu != NULL);
348e048f
DE
20418}
20419
dee91e82
DE
20420/* die_reader_func for read_signatured_type.
20421 This is identical to load_full_comp_unit_reader,
20422 but is kept separate for now. */
348e048f
DE
20423
20424static void
dee91e82 20425read_signatured_type_reader (const struct die_reader_specs *reader,
d521ce57 20426 const gdb_byte *info_ptr,
dee91e82
DE
20427 struct die_info *comp_unit_die,
20428 int has_children,
20429 void *data)
348e048f 20430{
dee91e82 20431 struct dwarf2_cu *cu = reader->cu;
348e048f 20432
dee91e82
DE
20433 gdb_assert (cu->die_hash == NULL);
20434 cu->die_hash =
20435 htab_create_alloc_ex (cu->header.length / 12,
20436 die_hash,
20437 die_eq,
20438 NULL,
20439 &cu->comp_unit_obstack,
20440 hashtab_obstack_allocate,
20441 dummy_obstack_deallocate);
348e048f 20442
dee91e82
DE
20443 if (has_children)
20444 comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
20445 &info_ptr, comp_unit_die);
20446 cu->dies = comp_unit_die;
20447 /* comp_unit_die is not stored in die_hash, no need. */
348e048f
DE
20448
20449 /* We try not to read any attributes in this function, because not
9cdd5dbd 20450 all CUs needed for references have been loaded yet, and symbol
348e048f 20451 table processing isn't initialized. But we have to set the CU language,
dee91e82
DE
20452 or we won't be able to build types correctly.
20453 Similarly, if we do not read the producer, we can not apply
20454 producer-specific interpretation. */
95554aad 20455 prepare_one_comp_unit (cu, cu->dies, language_minimal);
dee91e82 20456}
348e048f 20457
3019eac3
DE
20458/* Read in a signatured type and build its CU and DIEs.
20459 If the type is a stub for the real type in a DWO file,
20460 read in the real type from the DWO file as well. */
dee91e82
DE
20461
20462static void
20463read_signatured_type (struct signatured_type *sig_type)
20464{
20465 struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
348e048f 20466
3019eac3 20467 gdb_assert (per_cu->is_debug_types);
dee91e82 20468 gdb_assert (per_cu->cu == NULL);
348e048f 20469
f4dc4d17
DE
20470 init_cutu_and_read_dies (per_cu, NULL, 0, 1,
20471 read_signatured_type_reader, NULL);
7ee85ab1 20472 sig_type->per_cu.tu_read = 1;
c906108c
SS
20473}
20474
c906108c
SS
20475/* Decode simple location descriptions.
20476 Given a pointer to a dwarf block that defines a location, compute
20477 the location and return the value.
20478
4cecd739
DJ
20479 NOTE drow/2003-11-18: This function is called in two situations
20480 now: for the address of static or global variables (partial symbols
20481 only) and for offsets into structures which are expected to be
20482 (more or less) constant. The partial symbol case should go away,
20483 and only the constant case should remain. That will let this
20484 function complain more accurately. A few special modes are allowed
20485 without complaint for global variables (for instance, global
20486 register values and thread-local values).
c906108c
SS
20487
20488 A location description containing no operations indicates that the
4cecd739 20489 object is optimized out. The return value is 0 for that case.
6b992462
DJ
20490 FIXME drow/2003-11-16: No callers check for this case any more; soon all
20491 callers will only want a very basic result and this can become a
21ae7a4d
JK
20492 complaint.
20493
20494 Note that stack[0] is unused except as a default error return. */
c906108c
SS
20495
20496static CORE_ADDR
e7c27a73 20497decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 20498{
e7c27a73 20499 struct objfile *objfile = cu->objfile;
56eb65bd
SP
20500 size_t i;
20501 size_t size = blk->size;
d521ce57 20502 const gdb_byte *data = blk->data;
21ae7a4d
JK
20503 CORE_ADDR stack[64];
20504 int stacki;
20505 unsigned int bytes_read, unsnd;
20506 gdb_byte op;
c906108c 20507
21ae7a4d
JK
20508 i = 0;
20509 stacki = 0;
20510 stack[stacki] = 0;
20511 stack[++stacki] = 0;
20512
20513 while (i < size)
20514 {
20515 op = data[i++];
20516 switch (op)
20517 {
20518 case DW_OP_lit0:
20519 case DW_OP_lit1:
20520 case DW_OP_lit2:
20521 case DW_OP_lit3:
20522 case DW_OP_lit4:
20523 case DW_OP_lit5:
20524 case DW_OP_lit6:
20525 case DW_OP_lit7:
20526 case DW_OP_lit8:
20527 case DW_OP_lit9:
20528 case DW_OP_lit10:
20529 case DW_OP_lit11:
20530 case DW_OP_lit12:
20531 case DW_OP_lit13:
20532 case DW_OP_lit14:
20533 case DW_OP_lit15:
20534 case DW_OP_lit16:
20535 case DW_OP_lit17:
20536 case DW_OP_lit18:
20537 case DW_OP_lit19:
20538 case DW_OP_lit20:
20539 case DW_OP_lit21:
20540 case DW_OP_lit22:
20541 case DW_OP_lit23:
20542 case DW_OP_lit24:
20543 case DW_OP_lit25:
20544 case DW_OP_lit26:
20545 case DW_OP_lit27:
20546 case DW_OP_lit28:
20547 case DW_OP_lit29:
20548 case DW_OP_lit30:
20549 case DW_OP_lit31:
20550 stack[++stacki] = op - DW_OP_lit0;
20551 break;
f1bea926 20552
21ae7a4d
JK
20553 case DW_OP_reg0:
20554 case DW_OP_reg1:
20555 case DW_OP_reg2:
20556 case DW_OP_reg3:
20557 case DW_OP_reg4:
20558 case DW_OP_reg5:
20559 case DW_OP_reg6:
20560 case DW_OP_reg7:
20561 case DW_OP_reg8:
20562 case DW_OP_reg9:
20563 case DW_OP_reg10:
20564 case DW_OP_reg11:
20565 case DW_OP_reg12:
20566 case DW_OP_reg13:
20567 case DW_OP_reg14:
20568 case DW_OP_reg15:
20569 case DW_OP_reg16:
20570 case DW_OP_reg17:
20571 case DW_OP_reg18:
20572 case DW_OP_reg19:
20573 case DW_OP_reg20:
20574 case DW_OP_reg21:
20575 case DW_OP_reg22:
20576 case DW_OP_reg23:
20577 case DW_OP_reg24:
20578 case DW_OP_reg25:
20579 case DW_OP_reg26:
20580 case DW_OP_reg27:
20581 case DW_OP_reg28:
20582 case DW_OP_reg29:
20583 case DW_OP_reg30:
20584 case DW_OP_reg31:
20585 stack[++stacki] = op - DW_OP_reg0;
20586 if (i < size)
20587 dwarf2_complex_location_expr_complaint ();
20588 break;
c906108c 20589
21ae7a4d
JK
20590 case DW_OP_regx:
20591 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
20592 i += bytes_read;
20593 stack[++stacki] = unsnd;
20594 if (i < size)
20595 dwarf2_complex_location_expr_complaint ();
20596 break;
c906108c 20597
21ae7a4d
JK
20598 case DW_OP_addr:
20599 stack[++stacki] = read_address (objfile->obfd, &data[i],
20600 cu, &bytes_read);
20601 i += bytes_read;
20602 break;
d53d4ac5 20603
21ae7a4d
JK
20604 case DW_OP_const1u:
20605 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
20606 i += 1;
20607 break;
20608
20609 case DW_OP_const1s:
20610 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
20611 i += 1;
20612 break;
20613
20614 case DW_OP_const2u:
20615 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
20616 i += 2;
20617 break;
20618
20619 case DW_OP_const2s:
20620 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
20621 i += 2;
20622 break;
d53d4ac5 20623
21ae7a4d
JK
20624 case DW_OP_const4u:
20625 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
20626 i += 4;
20627 break;
20628
20629 case DW_OP_const4s:
20630 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
20631 i += 4;
20632 break;
20633
585861ea
JK
20634 case DW_OP_const8u:
20635 stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
20636 i += 8;
20637 break;
20638
21ae7a4d
JK
20639 case DW_OP_constu:
20640 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
20641 &bytes_read);
20642 i += bytes_read;
20643 break;
20644
20645 case DW_OP_consts:
20646 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
20647 i += bytes_read;
20648 break;
20649
20650 case DW_OP_dup:
20651 stack[stacki + 1] = stack[stacki];
20652 stacki++;
20653 break;
20654
20655 case DW_OP_plus:
20656 stack[stacki - 1] += stack[stacki];
20657 stacki--;
20658 break;
20659
20660 case DW_OP_plus_uconst:
20661 stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
20662 &bytes_read);
20663 i += bytes_read;
20664 break;
20665
20666 case DW_OP_minus:
20667 stack[stacki - 1] -= stack[stacki];
20668 stacki--;
20669 break;
20670
20671 case DW_OP_deref:
20672 /* If we're not the last op, then we definitely can't encode
20673 this using GDB's address_class enum. This is valid for partial
20674 global symbols, although the variable's address will be bogus
20675 in the psymtab. */
20676 if (i < size)
20677 dwarf2_complex_location_expr_complaint ();
20678 break;
20679
20680 case DW_OP_GNU_push_tls_address:
20681 /* The top of the stack has the offset from the beginning
20682 of the thread control block at which the variable is located. */
20683 /* Nothing should follow this operator, so the top of stack would
20684 be returned. */
20685 /* This is valid for partial global symbols, but the variable's
585861ea
JK
20686 address will be bogus in the psymtab. Make it always at least
20687 non-zero to not look as a variable garbage collected by linker
20688 which have DW_OP_addr 0. */
21ae7a4d
JK
20689 if (i < size)
20690 dwarf2_complex_location_expr_complaint ();
585861ea 20691 stack[stacki]++;
21ae7a4d
JK
20692 break;
20693
20694 case DW_OP_GNU_uninit:
20695 break;
20696
3019eac3 20697 case DW_OP_GNU_addr_index:
49f6c839 20698 case DW_OP_GNU_const_index:
3019eac3
DE
20699 stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
20700 &bytes_read);
20701 i += bytes_read;
20702 break;
20703
21ae7a4d
JK
20704 default:
20705 {
f39c6ffd 20706 const char *name = get_DW_OP_name (op);
21ae7a4d
JK
20707
20708 if (name)
20709 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
20710 name);
20711 else
20712 complaint (&symfile_complaints, _("unsupported stack op: '%02x'"),
20713 op);
20714 }
20715
20716 return (stack[stacki]);
d53d4ac5 20717 }
3c6e0cb3 20718
21ae7a4d
JK
20719 /* Enforce maximum stack depth of SIZE-1 to avoid writing
20720 outside of the allocated space. Also enforce minimum>0. */
20721 if (stacki >= ARRAY_SIZE (stack) - 1)
20722 {
20723 complaint (&symfile_complaints,
20724 _("location description stack overflow"));
20725 return 0;
20726 }
20727
20728 if (stacki <= 0)
20729 {
20730 complaint (&symfile_complaints,
20731 _("location description stack underflow"));
20732 return 0;
20733 }
20734 }
20735 return (stack[stacki]);
c906108c
SS
20736}
20737
20738/* memory allocation interface */
20739
c906108c 20740static struct dwarf_block *
7b5a2f43 20741dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c
SS
20742{
20743 struct dwarf_block *blk;
20744
20745 blk = (struct dwarf_block *)
7b5a2f43 20746 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
c906108c
SS
20747 return (blk);
20748}
20749
c906108c 20750static struct die_info *
b60c80d6 20751dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
20752{
20753 struct die_info *die;
b60c80d6
DJ
20754 size_t size = sizeof (struct die_info);
20755
20756 if (num_attrs > 1)
20757 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 20758
b60c80d6 20759 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
20760 memset (die, 0, sizeof (struct die_info));
20761 return (die);
20762}
2e276125
JB
20763
20764\f
20765/* Macro support. */
20766
233d95b5
JK
20767/* Return file name relative to the compilation directory of file number I in
20768 *LH's file name table. The result is allocated using xmalloc; the caller is
2e276125 20769 responsible for freeing it. */
233d95b5 20770
2e276125 20771static char *
233d95b5 20772file_file_name (int file, struct line_header *lh)
2e276125 20773{
6a83a1e6
EZ
20774 /* Is the file number a valid index into the line header's file name
20775 table? Remember that file numbers start with one, not zero. */
20776 if (1 <= file && file <= lh->num_file_names)
20777 {
20778 struct file_entry *fe = &lh->file_names[file - 1];
6e70227d 20779
afa6c9ab
SL
20780 if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0
20781 || lh->include_dirs == NULL)
6a83a1e6 20782 return xstrdup (fe->name);
233d95b5
JK
20783 return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
20784 fe->name, NULL);
6a83a1e6 20785 }
2e276125
JB
20786 else
20787 {
6a83a1e6
EZ
20788 /* The compiler produced a bogus file number. We can at least
20789 record the macro definitions made in the file, even if we
20790 won't be able to find the file by name. */
20791 char fake_name[80];
9a619af0 20792
8c042590
PM
20793 xsnprintf (fake_name, sizeof (fake_name),
20794 "<bad macro file number %d>", file);
2e276125 20795
6e70227d 20796 complaint (&symfile_complaints,
6a83a1e6
EZ
20797 _("bad file number in macro information (%d)"),
20798 file);
2e276125 20799
6a83a1e6 20800 return xstrdup (fake_name);
2e276125
JB
20801 }
20802}
20803
233d95b5
JK
20804/* Return the full name of file number I in *LH's file name table.
20805 Use COMP_DIR as the name of the current directory of the
20806 compilation. The result is allocated using xmalloc; the caller is
20807 responsible for freeing it. */
20808static char *
20809file_full_name (int file, struct line_header *lh, const char *comp_dir)
20810{
20811 /* Is the file number a valid index into the line header's file name
20812 table? Remember that file numbers start with one, not zero. */
20813 if (1 <= file && file <= lh->num_file_names)
20814 {
20815 char *relative = file_file_name (file, lh);
20816
20817 if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
20818 return relative;
20819 return reconcat (relative, comp_dir, SLASH_STRING, relative, NULL);
20820 }
20821 else
20822 return file_file_name (file, lh);
20823}
20824
2e276125
JB
20825
20826static struct macro_source_file *
20827macro_start_file (int file, int line,
20828 struct macro_source_file *current_file,
43f3e411 20829 struct line_header *lh)
2e276125 20830{
233d95b5
JK
20831 /* File name relative to the compilation directory of this source file. */
20832 char *file_name = file_file_name (file, lh);
2e276125 20833
2e276125 20834 if (! current_file)
abc9d0dc 20835 {
fc474241
DE
20836 /* Note: We don't create a macro table for this compilation unit
20837 at all until we actually get a filename. */
43f3e411 20838 struct macro_table *macro_table = get_macro_table ();
fc474241 20839
abc9d0dc
TT
20840 /* If we have no current file, then this must be the start_file
20841 directive for the compilation unit's main source file. */
fc474241
DE
20842 current_file = macro_set_main (macro_table, file_name);
20843 macro_define_special (macro_table);
abc9d0dc 20844 }
2e276125 20845 else
233d95b5 20846 current_file = macro_include (current_file, line, file_name);
2e276125 20847
233d95b5 20848 xfree (file_name);
6e70227d 20849
2e276125
JB
20850 return current_file;
20851}
20852
20853
20854/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
20855 followed by a null byte. */
20856static char *
20857copy_string (const char *buf, int len)
20858{
20859 char *s = xmalloc (len + 1);
9a619af0 20860
2e276125
JB
20861 memcpy (s, buf, len);
20862 s[len] = '\0';
2e276125
JB
20863 return s;
20864}
20865
20866
20867static const char *
20868consume_improper_spaces (const char *p, const char *body)
20869{
20870 if (*p == ' ')
20871 {
4d3c2250 20872 complaint (&symfile_complaints,
3e43a32a
MS
20873 _("macro definition contains spaces "
20874 "in formal argument list:\n`%s'"),
4d3c2250 20875 body);
2e276125
JB
20876
20877 while (*p == ' ')
20878 p++;
20879 }
20880
20881 return p;
20882}
20883
20884
20885static void
20886parse_macro_definition (struct macro_source_file *file, int line,
20887 const char *body)
20888{
20889 const char *p;
20890
20891 /* The body string takes one of two forms. For object-like macro
20892 definitions, it should be:
20893
20894 <macro name> " " <definition>
20895
20896 For function-like macro definitions, it should be:
20897
20898 <macro name> "() " <definition>
20899 or
20900 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
20901
20902 Spaces may appear only where explicitly indicated, and in the
20903 <definition>.
20904
20905 The Dwarf 2 spec says that an object-like macro's name is always
20906 followed by a space, but versions of GCC around March 2002 omit
6e70227d 20907 the space when the macro's definition is the empty string.
2e276125
JB
20908
20909 The Dwarf 2 spec says that there should be no spaces between the
20910 formal arguments in a function-like macro's formal argument list,
20911 but versions of GCC around March 2002 include spaces after the
20912 commas. */
20913
20914
20915 /* Find the extent of the macro name. The macro name is terminated
20916 by either a space or null character (for an object-like macro) or
20917 an opening paren (for a function-like macro). */
20918 for (p = body; *p; p++)
20919 if (*p == ' ' || *p == '(')
20920 break;
20921
20922 if (*p == ' ' || *p == '\0')
20923 {
20924 /* It's an object-like macro. */
20925 int name_len = p - body;
20926 char *name = copy_string (body, name_len);
20927 const char *replacement;
20928
20929 if (*p == ' ')
20930 replacement = body + name_len + 1;
20931 else
20932 {
4d3c2250 20933 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20934 replacement = body + name_len;
20935 }
6e70227d 20936
2e276125
JB
20937 macro_define_object (file, line, name, replacement);
20938
20939 xfree (name);
20940 }
20941 else if (*p == '(')
20942 {
20943 /* It's a function-like macro. */
20944 char *name = copy_string (body, p - body);
20945 int argc = 0;
20946 int argv_size = 1;
20947 char **argv = xmalloc (argv_size * sizeof (*argv));
20948
20949 p++;
20950
20951 p = consume_improper_spaces (p, body);
20952
20953 /* Parse the formal argument list. */
20954 while (*p && *p != ')')
20955 {
20956 /* Find the extent of the current argument name. */
20957 const char *arg_start = p;
20958
20959 while (*p && *p != ',' && *p != ')' && *p != ' ')
20960 p++;
20961
20962 if (! *p || p == arg_start)
4d3c2250 20963 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
20964 else
20965 {
20966 /* Make sure argv has room for the new argument. */
20967 if (argc >= argv_size)
20968 {
20969 argv_size *= 2;
20970 argv = xrealloc (argv, argv_size * sizeof (*argv));
20971 }
20972
20973 argv[argc++] = copy_string (arg_start, p - arg_start);
20974 }
20975
20976 p = consume_improper_spaces (p, body);
20977
20978 /* Consume the comma, if present. */
20979 if (*p == ',')
20980 {
20981 p++;
20982
20983 p = consume_improper_spaces (p, body);
20984 }
20985 }
20986
20987 if (*p == ')')
20988 {
20989 p++;
20990
20991 if (*p == ' ')
20992 /* Perfectly formed definition, no complaints. */
20993 macro_define_function (file, line, name,
6e70227d 20994 argc, (const char **) argv,
2e276125
JB
20995 p + 1);
20996 else if (*p == '\0')
20997 {
20998 /* Complain, but do define it. */
4d3c2250 20999 dwarf2_macro_malformed_definition_complaint (body);
2e276125 21000 macro_define_function (file, line, name,
6e70227d 21001 argc, (const char **) argv,
2e276125
JB
21002 p);
21003 }
21004 else
21005 /* Just complain. */
4d3c2250 21006 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21007 }
21008 else
21009 /* Just complain. */
4d3c2250 21010 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21011
21012 xfree (name);
21013 {
21014 int i;
21015
21016 for (i = 0; i < argc; i++)
21017 xfree (argv[i]);
21018 }
21019 xfree (argv);
21020 }
21021 else
4d3c2250 21022 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
21023}
21024
cf2c3c16
TT
21025/* Skip some bytes from BYTES according to the form given in FORM.
21026 Returns the new pointer. */
2e276125 21027
d521ce57
TT
21028static const gdb_byte *
21029skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
cf2c3c16
TT
21030 enum dwarf_form form,
21031 unsigned int offset_size,
21032 struct dwarf2_section_info *section)
2e276125 21033{
cf2c3c16 21034 unsigned int bytes_read;
2e276125 21035
cf2c3c16 21036 switch (form)
2e276125 21037 {
cf2c3c16
TT
21038 case DW_FORM_data1:
21039 case DW_FORM_flag:
21040 ++bytes;
21041 break;
21042
21043 case DW_FORM_data2:
21044 bytes += 2;
21045 break;
21046
21047 case DW_FORM_data4:
21048 bytes += 4;
21049 break;
21050
21051 case DW_FORM_data8:
21052 bytes += 8;
21053 break;
21054
21055 case DW_FORM_string:
21056 read_direct_string (abfd, bytes, &bytes_read);
21057 bytes += bytes_read;
21058 break;
21059
21060 case DW_FORM_sec_offset:
21061 case DW_FORM_strp:
36586728 21062 case DW_FORM_GNU_strp_alt:
cf2c3c16
TT
21063 bytes += offset_size;
21064 break;
21065
21066 case DW_FORM_block:
21067 bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
21068 bytes += bytes_read;
21069 break;
21070
21071 case DW_FORM_block1:
21072 bytes += 1 + read_1_byte (abfd, bytes);
21073 break;
21074 case DW_FORM_block2:
21075 bytes += 2 + read_2_bytes (abfd, bytes);
21076 break;
21077 case DW_FORM_block4:
21078 bytes += 4 + read_4_bytes (abfd, bytes);
21079 break;
21080
21081 case DW_FORM_sdata:
21082 case DW_FORM_udata:
3019eac3
DE
21083 case DW_FORM_GNU_addr_index:
21084 case DW_FORM_GNU_str_index:
d521ce57 21085 bytes = gdb_skip_leb128 (bytes, buffer_end);
f664829e
DE
21086 if (bytes == NULL)
21087 {
21088 dwarf2_section_buffer_overflow_complaint (section);
21089 return NULL;
21090 }
cf2c3c16
TT
21091 break;
21092
21093 default:
21094 {
21095 complain:
21096 complaint (&symfile_complaints,
21097 _("invalid form 0x%x in `%s'"),
a32a8923 21098 form, get_section_name (section));
cf2c3c16
TT
21099 return NULL;
21100 }
2e276125
JB
21101 }
21102
cf2c3c16
TT
21103 return bytes;
21104}
757a13d0 21105
cf2c3c16
TT
21106/* A helper for dwarf_decode_macros that handles skipping an unknown
21107 opcode. Returns an updated pointer to the macro data buffer; or,
21108 on error, issues a complaint and returns NULL. */
757a13d0 21109
d521ce57 21110static const gdb_byte *
cf2c3c16 21111skip_unknown_opcode (unsigned int opcode,
d521ce57
TT
21112 const gdb_byte **opcode_definitions,
21113 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16
TT
21114 bfd *abfd,
21115 unsigned int offset_size,
21116 struct dwarf2_section_info *section)
21117{
21118 unsigned int bytes_read, i;
21119 unsigned long arg;
d521ce57 21120 const gdb_byte *defn;
2e276125 21121
cf2c3c16 21122 if (opcode_definitions[opcode] == NULL)
2e276125 21123 {
cf2c3c16
TT
21124 complaint (&symfile_complaints,
21125 _("unrecognized DW_MACFINO opcode 0x%x"),
21126 opcode);
21127 return NULL;
21128 }
2e276125 21129
cf2c3c16
TT
21130 defn = opcode_definitions[opcode];
21131 arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
21132 defn += bytes_read;
2e276125 21133
cf2c3c16
TT
21134 for (i = 0; i < arg; ++i)
21135 {
f664829e
DE
21136 mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end, defn[i], offset_size,
21137 section);
cf2c3c16
TT
21138 if (mac_ptr == NULL)
21139 {
21140 /* skip_form_bytes already issued the complaint. */
21141 return NULL;
21142 }
21143 }
757a13d0 21144
cf2c3c16
TT
21145 return mac_ptr;
21146}
757a13d0 21147
cf2c3c16
TT
21148/* A helper function which parses the header of a macro section.
21149 If the macro section is the extended (for now called "GNU") type,
21150 then this updates *OFFSET_SIZE. Returns a pointer to just after
21151 the header, or issues a complaint and returns NULL on error. */
757a13d0 21152
d521ce57
TT
21153static const gdb_byte *
21154dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
cf2c3c16 21155 bfd *abfd,
d521ce57 21156 const gdb_byte *mac_ptr,
cf2c3c16
TT
21157 unsigned int *offset_size,
21158 int section_is_gnu)
21159{
21160 memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
757a13d0 21161
cf2c3c16
TT
21162 if (section_is_gnu)
21163 {
21164 unsigned int version, flags;
757a13d0 21165
cf2c3c16
TT
21166 version = read_2_bytes (abfd, mac_ptr);
21167 if (version != 4)
21168 {
21169 complaint (&symfile_complaints,
21170 _("unrecognized version `%d' in .debug_macro section"),
21171 version);
21172 return NULL;
21173 }
21174 mac_ptr += 2;
757a13d0 21175
cf2c3c16
TT
21176 flags = read_1_byte (abfd, mac_ptr);
21177 ++mac_ptr;
21178 *offset_size = (flags & 1) ? 8 : 4;
757a13d0 21179
cf2c3c16
TT
21180 if ((flags & 2) != 0)
21181 /* We don't need the line table offset. */
21182 mac_ptr += *offset_size;
757a13d0 21183
cf2c3c16
TT
21184 /* Vendor opcode descriptions. */
21185 if ((flags & 4) != 0)
21186 {
21187 unsigned int i, count;
757a13d0 21188
cf2c3c16
TT
21189 count = read_1_byte (abfd, mac_ptr);
21190 ++mac_ptr;
21191 for (i = 0; i < count; ++i)
21192 {
21193 unsigned int opcode, bytes_read;
21194 unsigned long arg;
21195
21196 opcode = read_1_byte (abfd, mac_ptr);
21197 ++mac_ptr;
21198 opcode_definitions[opcode] = mac_ptr;
21199 arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21200 mac_ptr += bytes_read;
21201 mac_ptr += arg;
21202 }
757a13d0 21203 }
cf2c3c16 21204 }
757a13d0 21205
cf2c3c16
TT
21206 return mac_ptr;
21207}
757a13d0 21208
cf2c3c16 21209/* A helper for dwarf_decode_macros that handles the GNU extensions,
8fc3fc34 21210 including DW_MACRO_GNU_transparent_include. */
cf2c3c16
TT
21211
21212static void
d521ce57
TT
21213dwarf_decode_macro_bytes (bfd *abfd,
21214 const gdb_byte *mac_ptr, const gdb_byte *mac_end,
cf2c3c16 21215 struct macro_source_file *current_file,
43f3e411 21216 struct line_header *lh,
cf2c3c16 21217 struct dwarf2_section_info *section,
36586728 21218 int section_is_gnu, int section_is_dwz,
cf2c3c16 21219 unsigned int offset_size,
8fc3fc34 21220 htab_t include_hash)
cf2c3c16 21221{
4d663531 21222 struct objfile *objfile = dwarf2_per_objfile->objfile;
cf2c3c16
TT
21223 enum dwarf_macro_record_type macinfo_type;
21224 int at_commandline;
d521ce57 21225 const gdb_byte *opcode_definitions[256];
757a13d0 21226
cf2c3c16
TT
21227 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21228 &offset_size, section_is_gnu);
21229 if (mac_ptr == NULL)
21230 {
21231 /* We already issued a complaint. */
21232 return;
21233 }
757a13d0
JK
21234
21235 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
21236 GDB is still reading the definitions from command line. First
21237 DW_MACINFO_start_file will need to be ignored as it was already executed
21238 to create CURRENT_FILE for the main source holding also the command line
21239 definitions. On first met DW_MACINFO_start_file this flag is reset to
21240 normally execute all the remaining DW_MACINFO_start_file macinfos. */
21241
21242 at_commandline = 1;
21243
21244 do
21245 {
21246 /* Do we at least have room for a macinfo type byte? */
21247 if (mac_ptr >= mac_end)
21248 {
f664829e 21249 dwarf2_section_buffer_overflow_complaint (section);
757a13d0
JK
21250 break;
21251 }
21252
21253 macinfo_type = read_1_byte (abfd, mac_ptr);
21254 mac_ptr++;
21255
cf2c3c16
TT
21256 /* Note that we rely on the fact that the corresponding GNU and
21257 DWARF constants are the same. */
757a13d0
JK
21258 switch (macinfo_type)
21259 {
21260 /* A zero macinfo type indicates the end of the macro
21261 information. */
21262 case 0:
21263 break;
2e276125 21264
cf2c3c16
TT
21265 case DW_MACRO_GNU_define:
21266 case DW_MACRO_GNU_undef:
21267 case DW_MACRO_GNU_define_indirect:
21268 case DW_MACRO_GNU_undef_indirect:
36586728
TT
21269 case DW_MACRO_GNU_define_indirect_alt:
21270 case DW_MACRO_GNU_undef_indirect_alt:
2e276125 21271 {
891d2f0b 21272 unsigned int bytes_read;
2e276125 21273 int line;
d521ce57 21274 const char *body;
cf2c3c16 21275 int is_define;
2e276125 21276
cf2c3c16
TT
21277 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21278 mac_ptr += bytes_read;
21279
21280 if (macinfo_type == DW_MACRO_GNU_define
21281 || macinfo_type == DW_MACRO_GNU_undef)
21282 {
21283 body = read_direct_string (abfd, mac_ptr, &bytes_read);
21284 mac_ptr += bytes_read;
21285 }
21286 else
21287 {
21288 LONGEST str_offset;
21289
21290 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
21291 mac_ptr += offset_size;
2e276125 21292
36586728 21293 if (macinfo_type == DW_MACRO_GNU_define_indirect_alt
f7a35f02
TT
21294 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt
21295 || section_is_dwz)
36586728
TT
21296 {
21297 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21298
21299 body = read_indirect_string_from_dwz (dwz, str_offset);
21300 }
21301 else
21302 body = read_indirect_string_at_offset (abfd, str_offset);
cf2c3c16
TT
21303 }
21304
21305 is_define = (macinfo_type == DW_MACRO_GNU_define
36586728
TT
21306 || macinfo_type == DW_MACRO_GNU_define_indirect
21307 || macinfo_type == DW_MACRO_GNU_define_indirect_alt);
2e276125 21308 if (! current_file)
757a13d0
JK
21309 {
21310 /* DWARF violation as no main source is present. */
21311 complaint (&symfile_complaints,
21312 _("debug info with no main source gives macro %s "
21313 "on line %d: %s"),
cf2c3c16
TT
21314 is_define ? _("definition") : _("undefinition"),
21315 line, body);
757a13d0
JK
21316 break;
21317 }
3e43a32a
MS
21318 if ((line == 0 && !at_commandline)
21319 || (line != 0 && at_commandline))
4d3c2250 21320 complaint (&symfile_complaints,
757a13d0
JK
21321 _("debug info gives %s macro %s with %s line %d: %s"),
21322 at_commandline ? _("command-line") : _("in-file"),
cf2c3c16 21323 is_define ? _("definition") : _("undefinition"),
757a13d0
JK
21324 line == 0 ? _("zero") : _("non-zero"), line, body);
21325
cf2c3c16 21326 if (is_define)
757a13d0 21327 parse_macro_definition (current_file, line, body);
cf2c3c16
TT
21328 else
21329 {
21330 gdb_assert (macinfo_type == DW_MACRO_GNU_undef
36586728
TT
21331 || macinfo_type == DW_MACRO_GNU_undef_indirect
21332 || macinfo_type == DW_MACRO_GNU_undef_indirect_alt);
cf2c3c16
TT
21333 macro_undef (current_file, line, body);
21334 }
2e276125
JB
21335 }
21336 break;
21337
cf2c3c16 21338 case DW_MACRO_GNU_start_file:
2e276125 21339 {
891d2f0b 21340 unsigned int bytes_read;
2e276125
JB
21341 int line, file;
21342
21343 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21344 mac_ptr += bytes_read;
21345 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21346 mac_ptr += bytes_read;
21347
3e43a32a
MS
21348 if ((line == 0 && !at_commandline)
21349 || (line != 0 && at_commandline))
757a13d0
JK
21350 complaint (&symfile_complaints,
21351 _("debug info gives source %d included "
21352 "from %s at %s line %d"),
21353 file, at_commandline ? _("command-line") : _("file"),
21354 line == 0 ? _("zero") : _("non-zero"), line);
21355
21356 if (at_commandline)
21357 {
cf2c3c16
TT
21358 /* This DW_MACRO_GNU_start_file was executed in the
21359 pass one. */
757a13d0
JK
21360 at_commandline = 0;
21361 }
21362 else
43f3e411 21363 current_file = macro_start_file (file, line, current_file, lh);
2e276125
JB
21364 }
21365 break;
21366
cf2c3c16 21367 case DW_MACRO_GNU_end_file:
2e276125 21368 if (! current_file)
4d3c2250 21369 complaint (&symfile_complaints,
3e43a32a
MS
21370 _("macro debug info has an unmatched "
21371 "`close_file' directive"));
2e276125
JB
21372 else
21373 {
21374 current_file = current_file->included_by;
21375 if (! current_file)
21376 {
cf2c3c16 21377 enum dwarf_macro_record_type next_type;
2e276125
JB
21378
21379 /* GCC circa March 2002 doesn't produce the zero
21380 type byte marking the end of the compilation
21381 unit. Complain if it's not there, but exit no
21382 matter what. */
21383
21384 /* Do we at least have room for a macinfo type byte? */
21385 if (mac_ptr >= mac_end)
21386 {
f664829e 21387 dwarf2_section_buffer_overflow_complaint (section);
2e276125
JB
21388 return;
21389 }
21390
21391 /* We don't increment mac_ptr here, so this is just
21392 a look-ahead. */
21393 next_type = read_1_byte (abfd, mac_ptr);
21394 if (next_type != 0)
4d3c2250 21395 complaint (&symfile_complaints,
3e43a32a
MS
21396 _("no terminating 0-type entry for "
21397 "macros in `.debug_macinfo' section"));
2e276125
JB
21398
21399 return;
21400 }
21401 }
21402 break;
21403
cf2c3c16 21404 case DW_MACRO_GNU_transparent_include:
36586728 21405 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21406 {
21407 LONGEST offset;
8fc3fc34 21408 void **slot;
a036ba48
TT
21409 bfd *include_bfd = abfd;
21410 struct dwarf2_section_info *include_section = section;
21411 struct dwarf2_section_info alt_section;
d521ce57 21412 const gdb_byte *include_mac_end = mac_end;
a036ba48 21413 int is_dwz = section_is_dwz;
d521ce57 21414 const gdb_byte *new_mac_ptr;
cf2c3c16
TT
21415
21416 offset = read_offset_1 (abfd, mac_ptr, offset_size);
21417 mac_ptr += offset_size;
21418
a036ba48
TT
21419 if (macinfo_type == DW_MACRO_GNU_transparent_include_alt)
21420 {
21421 struct dwz_file *dwz = dwarf2_get_dwz_file ();
21422
4d663531 21423 dwarf2_read_section (objfile, &dwz->macro);
a036ba48 21424
a036ba48 21425 include_section = &dwz->macro;
a32a8923 21426 include_bfd = get_section_bfd_owner (include_section);
a036ba48
TT
21427 include_mac_end = dwz->macro.buffer + dwz->macro.size;
21428 is_dwz = 1;
21429 }
21430
21431 new_mac_ptr = include_section->buffer + offset;
21432 slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
21433
8fc3fc34
TT
21434 if (*slot != NULL)
21435 {
21436 /* This has actually happened; see
21437 http://sourceware.org/bugzilla/show_bug.cgi?id=13568. */
21438 complaint (&symfile_complaints,
21439 _("recursive DW_MACRO_GNU_transparent_include in "
21440 ".debug_macro section"));
21441 }
21442 else
21443 {
d521ce57 21444 *slot = (void *) new_mac_ptr;
36586728 21445
a036ba48 21446 dwarf_decode_macro_bytes (include_bfd, new_mac_ptr,
43f3e411 21447 include_mac_end, current_file, lh,
36586728 21448 section, section_is_gnu, is_dwz,
4d663531 21449 offset_size, include_hash);
8fc3fc34 21450
d521ce57 21451 htab_remove_elt (include_hash, (void *) new_mac_ptr);
8fc3fc34 21452 }
cf2c3c16
TT
21453 }
21454 break;
21455
2e276125 21456 case DW_MACINFO_vendor_ext:
cf2c3c16
TT
21457 if (!section_is_gnu)
21458 {
21459 unsigned int bytes_read;
21460 int constant;
2e276125 21461
cf2c3c16
TT
21462 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21463 mac_ptr += bytes_read;
21464 read_direct_string (abfd, mac_ptr, &bytes_read);
21465 mac_ptr += bytes_read;
2e276125 21466
cf2c3c16
TT
21467 /* We don't recognize any vendor extensions. */
21468 break;
21469 }
21470 /* FALLTHROUGH */
21471
21472 default:
21473 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21474 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21475 section);
21476 if (mac_ptr == NULL)
21477 return;
21478 break;
2e276125 21479 }
757a13d0 21480 } while (macinfo_type != 0);
2e276125 21481}
8e19ed76 21482
cf2c3c16 21483static void
09262596 21484dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
43f3e411 21485 int section_is_gnu)
cf2c3c16 21486{
bb5ed363 21487 struct objfile *objfile = dwarf2_per_objfile->objfile;
09262596
DE
21488 struct line_header *lh = cu->line_header;
21489 bfd *abfd;
d521ce57 21490 const gdb_byte *mac_ptr, *mac_end;
cf2c3c16
TT
21491 struct macro_source_file *current_file = 0;
21492 enum dwarf_macro_record_type macinfo_type;
21493 unsigned int offset_size = cu->header.offset_size;
d521ce57 21494 const gdb_byte *opcode_definitions[256];
8fc3fc34
TT
21495 struct cleanup *cleanup;
21496 htab_t include_hash;
21497 void **slot;
09262596
DE
21498 struct dwarf2_section_info *section;
21499 const char *section_name;
21500
21501 if (cu->dwo_unit != NULL)
21502 {
21503 if (section_is_gnu)
21504 {
21505 section = &cu->dwo_unit->dwo_file->sections.macro;
21506 section_name = ".debug_macro.dwo";
21507 }
21508 else
21509 {
21510 section = &cu->dwo_unit->dwo_file->sections.macinfo;
21511 section_name = ".debug_macinfo.dwo";
21512 }
21513 }
21514 else
21515 {
21516 if (section_is_gnu)
21517 {
21518 section = &dwarf2_per_objfile->macro;
21519 section_name = ".debug_macro";
21520 }
21521 else
21522 {
21523 section = &dwarf2_per_objfile->macinfo;
21524 section_name = ".debug_macinfo";
21525 }
21526 }
cf2c3c16 21527
bb5ed363 21528 dwarf2_read_section (objfile, section);
cf2c3c16
TT
21529 if (section->buffer == NULL)
21530 {
fceca515 21531 complaint (&symfile_complaints, _("missing %s section"), section_name);
cf2c3c16
TT
21532 return;
21533 }
a32a8923 21534 abfd = get_section_bfd_owner (section);
cf2c3c16
TT
21535
21536 /* First pass: Find the name of the base filename.
21537 This filename is needed in order to process all macros whose definition
21538 (or undefinition) comes from the command line. These macros are defined
21539 before the first DW_MACINFO_start_file entry, and yet still need to be
21540 associated to the base file.
21541
21542 To determine the base file name, we scan the macro definitions until we
21543 reach the first DW_MACINFO_start_file entry. We then initialize
21544 CURRENT_FILE accordingly so that any macro definition found before the
21545 first DW_MACINFO_start_file can still be associated to the base file. */
21546
21547 mac_ptr = section->buffer + offset;
21548 mac_end = section->buffer + section->size;
21549
21550 mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
21551 &offset_size, section_is_gnu);
21552 if (mac_ptr == NULL)
21553 {
21554 /* We already issued a complaint. */
21555 return;
21556 }
21557
21558 do
21559 {
21560 /* Do we at least have room for a macinfo type byte? */
21561 if (mac_ptr >= mac_end)
21562 {
21563 /* Complaint is printed during the second pass as GDB will probably
21564 stop the first pass earlier upon finding
21565 DW_MACINFO_start_file. */
21566 break;
21567 }
21568
21569 macinfo_type = read_1_byte (abfd, mac_ptr);
21570 mac_ptr++;
21571
21572 /* Note that we rely on the fact that the corresponding GNU and
21573 DWARF constants are the same. */
21574 switch (macinfo_type)
21575 {
21576 /* A zero macinfo type indicates the end of the macro
21577 information. */
21578 case 0:
21579 break;
21580
21581 case DW_MACRO_GNU_define:
21582 case DW_MACRO_GNU_undef:
21583 /* Only skip the data by MAC_PTR. */
21584 {
21585 unsigned int bytes_read;
21586
21587 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21588 mac_ptr += bytes_read;
21589 read_direct_string (abfd, mac_ptr, &bytes_read);
21590 mac_ptr += bytes_read;
21591 }
21592 break;
21593
21594 case DW_MACRO_GNU_start_file:
21595 {
21596 unsigned int bytes_read;
21597 int line, file;
21598
21599 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21600 mac_ptr += bytes_read;
21601 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21602 mac_ptr += bytes_read;
21603
43f3e411 21604 current_file = macro_start_file (file, line, current_file, lh);
cf2c3c16
TT
21605 }
21606 break;
21607
21608 case DW_MACRO_GNU_end_file:
21609 /* No data to skip by MAC_PTR. */
21610 break;
21611
21612 case DW_MACRO_GNU_define_indirect:
21613 case DW_MACRO_GNU_undef_indirect:
f7a35f02
TT
21614 case DW_MACRO_GNU_define_indirect_alt:
21615 case DW_MACRO_GNU_undef_indirect_alt:
cf2c3c16
TT
21616 {
21617 unsigned int bytes_read;
21618
21619 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21620 mac_ptr += bytes_read;
21621 mac_ptr += offset_size;
21622 }
21623 break;
21624
21625 case DW_MACRO_GNU_transparent_include:
f7a35f02 21626 case DW_MACRO_GNU_transparent_include_alt:
cf2c3c16
TT
21627 /* Note that, according to the spec, a transparent include
21628 chain cannot call DW_MACRO_GNU_start_file. So, we can just
21629 skip this opcode. */
21630 mac_ptr += offset_size;
21631 break;
21632
21633 case DW_MACINFO_vendor_ext:
21634 /* Only skip the data by MAC_PTR. */
21635 if (!section_is_gnu)
21636 {
21637 unsigned int bytes_read;
21638
21639 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
21640 mac_ptr += bytes_read;
21641 read_direct_string (abfd, mac_ptr, &bytes_read);
21642 mac_ptr += bytes_read;
21643 }
21644 /* FALLTHROUGH */
21645
21646 default:
21647 mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
f664829e 21648 mac_ptr, mac_end, abfd, offset_size,
cf2c3c16
TT
21649 section);
21650 if (mac_ptr == NULL)
21651 return;
21652 break;
21653 }
21654 } while (macinfo_type != 0 && current_file == NULL);
21655
21656 /* Second pass: Process all entries.
21657
21658 Use the AT_COMMAND_LINE flag to determine whether we are still processing
21659 command-line macro definitions/undefinitions. This flag is unset when we
21660 reach the first DW_MACINFO_start_file entry. */
21661
8fc3fc34
TT
21662 include_hash = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
21663 NULL, xcalloc, xfree);
21664 cleanup = make_cleanup_htab_delete (include_hash);
21665 mac_ptr = section->buffer + offset;
21666 slot = htab_find_slot (include_hash, mac_ptr, INSERT);
d521ce57 21667 *slot = (void *) mac_ptr;
8fc3fc34 21668 dwarf_decode_macro_bytes (abfd, mac_ptr, mac_end,
43f3e411 21669 current_file, lh, section,
4d663531 21670 section_is_gnu, 0, offset_size, include_hash);
8fc3fc34 21671 do_cleanups (cleanup);
cf2c3c16
TT
21672}
21673
8e19ed76 21674/* Check if the attribute's form is a DW_FORM_block*
0963b4bd 21675 if so return true else false. */
380bca97 21676
8e19ed76 21677static int
6e5a29e1 21678attr_form_is_block (const struct attribute *attr)
8e19ed76
PS
21679{
21680 return (attr == NULL ? 0 :
21681 attr->form == DW_FORM_block1
21682 || attr->form == DW_FORM_block2
21683 || attr->form == DW_FORM_block4
2dc7f7b3
TT
21684 || attr->form == DW_FORM_block
21685 || attr->form == DW_FORM_exprloc);
8e19ed76 21686}
4c2df51b 21687
c6a0999f
JB
21688/* Return non-zero if ATTR's value is a section offset --- classes
21689 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
21690 You may use DW_UNSND (attr) to retrieve such offsets.
21691
21692 Section 7.5.4, "Attribute Encodings", explains that no attribute
21693 may have a value that belongs to more than one of these classes; it
21694 would be ambiguous if we did, because we use the same forms for all
21695 of them. */
380bca97 21696
3690dd37 21697static int
6e5a29e1 21698attr_form_is_section_offset (const struct attribute *attr)
3690dd37
JB
21699{
21700 return (attr->form == DW_FORM_data4
2dc7f7b3
TT
21701 || attr->form == DW_FORM_data8
21702 || attr->form == DW_FORM_sec_offset);
3690dd37
JB
21703}
21704
3690dd37
JB
21705/* Return non-zero if ATTR's value falls in the 'constant' class, or
21706 zero otherwise. When this function returns true, you can apply
21707 dwarf2_get_attr_constant_value to it.
21708
21709 However, note that for some attributes you must check
21710 attr_form_is_section_offset before using this test. DW_FORM_data4
21711 and DW_FORM_data8 are members of both the constant class, and of
21712 the classes that contain offsets into other debug sections
21713 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
21714 that, if an attribute's can be either a constant or one of the
21715 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
21716 taken as section offsets, not constants. */
380bca97 21717
3690dd37 21718static int
6e5a29e1 21719attr_form_is_constant (const struct attribute *attr)
3690dd37
JB
21720{
21721 switch (attr->form)
21722 {
21723 case DW_FORM_sdata:
21724 case DW_FORM_udata:
21725 case DW_FORM_data1:
21726 case DW_FORM_data2:
21727 case DW_FORM_data4:
21728 case DW_FORM_data8:
21729 return 1;
21730 default:
21731 return 0;
21732 }
21733}
21734
7771576e
SA
21735
21736/* DW_ADDR is always stored already as sect_offset; despite for the forms
21737 besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file. */
21738
21739static int
6e5a29e1 21740attr_form_is_ref (const struct attribute *attr)
7771576e
SA
21741{
21742 switch (attr->form)
21743 {
21744 case DW_FORM_ref_addr:
21745 case DW_FORM_ref1:
21746 case DW_FORM_ref2:
21747 case DW_FORM_ref4:
21748 case DW_FORM_ref8:
21749 case DW_FORM_ref_udata:
21750 case DW_FORM_GNU_ref_alt:
21751 return 1;
21752 default:
21753 return 0;
21754 }
21755}
21756
3019eac3
DE
21757/* Return the .debug_loc section to use for CU.
21758 For DWO files use .debug_loc.dwo. */
21759
21760static struct dwarf2_section_info *
21761cu_debug_loc_section (struct dwarf2_cu *cu)
21762{
21763 if (cu->dwo_unit)
21764 return &cu->dwo_unit->dwo_file->sections.loc;
21765 return &dwarf2_per_objfile->loc;
21766}
21767
8cf6f0b1
TT
21768/* A helper function that fills in a dwarf2_loclist_baton. */
21769
21770static void
21771fill_in_loclist_baton (struct dwarf2_cu *cu,
21772 struct dwarf2_loclist_baton *baton,
ff39bb5e 21773 const struct attribute *attr)
8cf6f0b1 21774{
3019eac3
DE
21775 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
21776
21777 dwarf2_read_section (dwarf2_per_objfile->objfile, section);
8cf6f0b1
TT
21778
21779 baton->per_cu = cu->per_cu;
21780 gdb_assert (baton->per_cu);
21781 /* We don't know how long the location list is, but make sure we
21782 don't run off the edge of the section. */
3019eac3
DE
21783 baton->size = section->size - DW_UNSND (attr);
21784 baton->data = section->buffer + DW_UNSND (attr);
8cf6f0b1 21785 baton->base_address = cu->base_address;
f664829e 21786 baton->from_dwo = cu->dwo_unit != NULL;
8cf6f0b1
TT
21787}
21788
4c2df51b 21789static void
ff39bb5e 21790dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
f1e6e072 21791 struct dwarf2_cu *cu, int is_block)
4c2df51b 21792{
bb5ed363 21793 struct objfile *objfile = dwarf2_per_objfile->objfile;
3019eac3 21794 struct dwarf2_section_info *section = cu_debug_loc_section (cu);
bb5ed363 21795
3690dd37 21796 if (attr_form_is_section_offset (attr)
3019eac3 21797 /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
99bcc461
DJ
21798 the section. If so, fall through to the complaint in the
21799 other branch. */
3019eac3 21800 && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
4c2df51b 21801 {
0d53c4c4 21802 struct dwarf2_loclist_baton *baton;
4c2df51b 21803
bb5ed363 21804 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21805 sizeof (struct dwarf2_loclist_baton));
4c2df51b 21806
8cf6f0b1 21807 fill_in_loclist_baton (cu, baton, attr);
be391dca 21808
d00adf39 21809 if (cu->base_known == 0)
0d53c4c4 21810 complaint (&symfile_complaints,
3e43a32a
MS
21811 _("Location list used without "
21812 "specifying the CU base address."));
4c2df51b 21813
f1e6e072
TT
21814 SYMBOL_ACLASS_INDEX (sym) = (is_block
21815 ? dwarf2_loclist_block_index
21816 : dwarf2_loclist_index);
0d53c4c4
DJ
21817 SYMBOL_LOCATION_BATON (sym) = baton;
21818 }
21819 else
21820 {
21821 struct dwarf2_locexpr_baton *baton;
21822
bb5ed363 21823 baton = obstack_alloc (&objfile->objfile_obstack,
0d53c4c4 21824 sizeof (struct dwarf2_locexpr_baton));
ae0d2f24
UW
21825 baton->per_cu = cu->per_cu;
21826 gdb_assert (baton->per_cu);
0d53c4c4
DJ
21827
21828 if (attr_form_is_block (attr))
21829 {
21830 /* Note that we're just copying the block's data pointer
21831 here, not the actual data. We're still pointing into the
6502dd73
DJ
21832 info_buffer for SYM's objfile; right now we never release
21833 that buffer, but when we do clean up properly this may
21834 need to change. */
0d53c4c4
DJ
21835 baton->size = DW_BLOCK (attr)->size;
21836 baton->data = DW_BLOCK (attr)->data;
21837 }
21838 else
21839 {
21840 dwarf2_invalid_attrib_class_complaint ("location description",
21841 SYMBOL_NATURAL_NAME (sym));
21842 baton->size = 0;
0d53c4c4 21843 }
6e70227d 21844
f1e6e072
TT
21845 SYMBOL_ACLASS_INDEX (sym) = (is_block
21846 ? dwarf2_locexpr_block_index
21847 : dwarf2_locexpr_index);
0d53c4c4
DJ
21848 SYMBOL_LOCATION_BATON (sym) = baton;
21849 }
4c2df51b 21850}
6502dd73 21851
9aa1f1e3
TT
21852/* Return the OBJFILE associated with the compilation unit CU. If CU
21853 came from a separate debuginfo file, then the master objfile is
21854 returned. */
ae0d2f24
UW
21855
21856struct objfile *
21857dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
21858{
9291a0cd 21859 struct objfile *objfile = per_cu->objfile;
ae0d2f24
UW
21860
21861 /* Return the master objfile, so that we can report and look up the
21862 correct file containing this variable. */
21863 if (objfile->separate_debug_objfile_backlink)
21864 objfile = objfile->separate_debug_objfile_backlink;
21865
21866 return objfile;
21867}
21868
96408a79
SA
21869/* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
21870 (CU_HEADERP is unused in such case) or prepare a temporary copy at
21871 CU_HEADERP first. */
21872
21873static const struct comp_unit_head *
21874per_cu_header_read_in (struct comp_unit_head *cu_headerp,
21875 struct dwarf2_per_cu_data *per_cu)
21876{
d521ce57 21877 const gdb_byte *info_ptr;
96408a79
SA
21878
21879 if (per_cu->cu)
21880 return &per_cu->cu->header;
21881
8a0459fd 21882 info_ptr = per_cu->section->buffer + per_cu->offset.sect_off;
96408a79
SA
21883
21884 memset (cu_headerp, 0, sizeof (*cu_headerp));
0bc3a05c 21885 read_comp_unit_head (cu_headerp, info_ptr, per_cu->objfile->obfd);
96408a79
SA
21886
21887 return cu_headerp;
21888}
21889
ae0d2f24
UW
21890/* Return the address size given in the compilation unit header for CU. */
21891
98714339 21892int
ae0d2f24
UW
21893dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
21894{
96408a79
SA
21895 struct comp_unit_head cu_header_local;
21896 const struct comp_unit_head *cu_headerp;
c471e790 21897
96408a79
SA
21898 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21899
21900 return cu_headerp->addr_size;
ae0d2f24
UW
21901}
21902
9eae7c52
TT
21903/* Return the offset size given in the compilation unit header for CU. */
21904
21905int
21906dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
21907{
96408a79
SA
21908 struct comp_unit_head cu_header_local;
21909 const struct comp_unit_head *cu_headerp;
9c6c53f7 21910
96408a79
SA
21911 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21912
21913 return cu_headerp->offset_size;
21914}
21915
21916/* See its dwarf2loc.h declaration. */
21917
21918int
21919dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
21920{
21921 struct comp_unit_head cu_header_local;
21922 const struct comp_unit_head *cu_headerp;
21923
21924 cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
21925
21926 if (cu_headerp->version == 2)
21927 return cu_headerp->addr_size;
21928 else
21929 return cu_headerp->offset_size;
181cebd4
JK
21930}
21931
9aa1f1e3
TT
21932/* Return the text offset of the CU. The returned offset comes from
21933 this CU's objfile. If this objfile came from a separate debuginfo
21934 file, then the offset may be different from the corresponding
21935 offset in the parent objfile. */
21936
21937CORE_ADDR
21938dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
21939{
bb3fa9d0 21940 struct objfile *objfile = per_cu->objfile;
9aa1f1e3
TT
21941
21942 return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21943}
21944
348e048f
DE
21945/* Locate the .debug_info compilation unit from CU's objfile which contains
21946 the DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
21947
21948static struct dwarf2_per_cu_data *
b64f50a1 21949dwarf2_find_containing_comp_unit (sect_offset offset,
36586728 21950 unsigned int offset_in_dwz,
ae038cb0
DJ
21951 struct objfile *objfile)
21952{
21953 struct dwarf2_per_cu_data *this_cu;
21954 int low, high;
36586728 21955 const sect_offset *cu_off;
ae038cb0 21956
ae038cb0
DJ
21957 low = 0;
21958 high = dwarf2_per_objfile->n_comp_units - 1;
21959 while (high > low)
21960 {
36586728 21961 struct dwarf2_per_cu_data *mid_cu;
ae038cb0 21962 int mid = low + (high - low) / 2;
9a619af0 21963
36586728
TT
21964 mid_cu = dwarf2_per_objfile->all_comp_units[mid];
21965 cu_off = &mid_cu->offset;
21966 if (mid_cu->is_dwz > offset_in_dwz
21967 || (mid_cu->is_dwz == offset_in_dwz
21968 && cu_off->sect_off >= offset.sect_off))
ae038cb0
DJ
21969 high = mid;
21970 else
21971 low = mid + 1;
21972 }
21973 gdb_assert (low == high);
36586728
TT
21974 this_cu = dwarf2_per_objfile->all_comp_units[low];
21975 cu_off = &this_cu->offset;
21976 if (this_cu->is_dwz != offset_in_dwz || cu_off->sect_off > offset.sect_off)
ae038cb0 21977 {
36586728 21978 if (low == 0 || this_cu->is_dwz != offset_in_dwz)
8a3fe4f8
AC
21979 error (_("Dwarf Error: could not find partial DIE containing "
21980 "offset 0x%lx [in module %s]"),
b64f50a1 21981 (long) offset.sect_off, bfd_get_filename (objfile->obfd));
10b3939b 21982
b64f50a1
JK
21983 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset.sect_off
21984 <= offset.sect_off);
ae038cb0
DJ
21985 return dwarf2_per_objfile->all_comp_units[low-1];
21986 }
21987 else
21988 {
21989 this_cu = dwarf2_per_objfile->all_comp_units[low];
21990 if (low == dwarf2_per_objfile->n_comp_units - 1
b64f50a1
JK
21991 && offset.sect_off >= this_cu->offset.sect_off + this_cu->length)
21992 error (_("invalid dwarf2 offset %u"), offset.sect_off);
21993 gdb_assert (offset.sect_off < this_cu->offset.sect_off + this_cu->length);
ae038cb0
DJ
21994 return this_cu;
21995 }
21996}
21997
23745b47 21998/* Initialize dwarf2_cu CU, owned by PER_CU. */
93311388 21999
9816fde3 22000static void
23745b47 22001init_one_comp_unit (struct dwarf2_cu *cu, struct dwarf2_per_cu_data *per_cu)
93311388 22002{
9816fde3 22003 memset (cu, 0, sizeof (*cu));
23745b47
DE
22004 per_cu->cu = cu;
22005 cu->per_cu = per_cu;
22006 cu->objfile = per_cu->objfile;
93311388 22007 obstack_init (&cu->comp_unit_obstack);
9816fde3
JK
22008}
22009
22010/* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE. */
22011
22012static void
95554aad
TT
22013prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
22014 enum language pretend_language)
9816fde3
JK
22015{
22016 struct attribute *attr;
22017
22018 /* Set the language we're debugging. */
22019 attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
22020 if (attr)
22021 set_cu_language (DW_UNSND (attr), cu);
22022 else
9cded63f 22023 {
95554aad 22024 cu->language = pretend_language;
9cded63f
TT
22025 cu->language_defn = language_def (cu->language);
22026 }
dee91e82
DE
22027
22028 attr = dwarf2_attr (comp_unit_die, DW_AT_producer, cu);
22029 if (attr)
22030 cu->producer = DW_STRING (attr);
93311388
DE
22031}
22032
ae038cb0
DJ
22033/* Release one cached compilation unit, CU. We unlink it from the tree
22034 of compilation units, but we don't remove it from the read_in_chain;
93311388
DE
22035 the caller is responsible for that.
22036 NOTE: DATA is a void * because this function is also used as a
22037 cleanup routine. */
ae038cb0
DJ
22038
22039static void
68dc6402 22040free_heap_comp_unit (void *data)
ae038cb0
DJ
22041{
22042 struct dwarf2_cu *cu = data;
22043
23745b47
DE
22044 gdb_assert (cu->per_cu != NULL);
22045 cu->per_cu->cu = NULL;
ae038cb0
DJ
22046 cu->per_cu = NULL;
22047
22048 obstack_free (&cu->comp_unit_obstack, NULL);
22049
22050 xfree (cu);
22051}
22052
72bf9492 22053/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0 22054 when we're finished with it. We can't free the pointer itself, but be
dee91e82 22055 sure to unlink it from the cache. Also release any associated storage. */
72bf9492
DJ
22056
22057static void
22058free_stack_comp_unit (void *data)
22059{
22060 struct dwarf2_cu *cu = data;
22061
23745b47
DE
22062 gdb_assert (cu->per_cu != NULL);
22063 cu->per_cu->cu = NULL;
22064 cu->per_cu = NULL;
22065
72bf9492
DJ
22066 obstack_free (&cu->comp_unit_obstack, NULL);
22067 cu->partial_dies = NULL;
ae038cb0
DJ
22068}
22069
22070/* Free all cached compilation units. */
22071
22072static void
22073free_cached_comp_units (void *data)
22074{
22075 struct dwarf2_per_cu_data *per_cu, **last_chain;
22076
22077 per_cu = dwarf2_per_objfile->read_in_chain;
22078 last_chain = &dwarf2_per_objfile->read_in_chain;
22079 while (per_cu != NULL)
22080 {
22081 struct dwarf2_per_cu_data *next_cu;
22082
22083 next_cu = per_cu->cu->read_in_chain;
22084
68dc6402 22085 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22086 *last_chain = next_cu;
22087
22088 per_cu = next_cu;
22089 }
22090}
22091
22092/* Increase the age counter on each cached compilation unit, and free
22093 any that are too old. */
22094
22095static void
22096age_cached_comp_units (void)
22097{
22098 struct dwarf2_per_cu_data *per_cu, **last_chain;
22099
22100 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
22101 per_cu = dwarf2_per_objfile->read_in_chain;
22102 while (per_cu != NULL)
22103 {
22104 per_cu->cu->last_used ++;
b4f54984 22105 if (per_cu->cu->last_used <= dwarf_max_cache_age)
ae038cb0
DJ
22106 dwarf2_mark (per_cu->cu);
22107 per_cu = per_cu->cu->read_in_chain;
22108 }
22109
22110 per_cu = dwarf2_per_objfile->read_in_chain;
22111 last_chain = &dwarf2_per_objfile->read_in_chain;
22112 while (per_cu != NULL)
22113 {
22114 struct dwarf2_per_cu_data *next_cu;
22115
22116 next_cu = per_cu->cu->read_in_chain;
22117
22118 if (!per_cu->cu->mark)
22119 {
68dc6402 22120 free_heap_comp_unit (per_cu->cu);
ae038cb0
DJ
22121 *last_chain = next_cu;
22122 }
22123 else
22124 last_chain = &per_cu->cu->read_in_chain;
22125
22126 per_cu = next_cu;
22127 }
22128}
22129
22130/* Remove a single compilation unit from the cache. */
22131
22132static void
dee91e82 22133free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
ae038cb0
DJ
22134{
22135 struct dwarf2_per_cu_data *per_cu, **last_chain;
22136
22137 per_cu = dwarf2_per_objfile->read_in_chain;
22138 last_chain = &dwarf2_per_objfile->read_in_chain;
22139 while (per_cu != NULL)
22140 {
22141 struct dwarf2_per_cu_data *next_cu;
22142
22143 next_cu = per_cu->cu->read_in_chain;
22144
dee91e82 22145 if (per_cu == target_per_cu)
ae038cb0 22146 {
68dc6402 22147 free_heap_comp_unit (per_cu->cu);
dee91e82 22148 per_cu->cu = NULL;
ae038cb0
DJ
22149 *last_chain = next_cu;
22150 break;
22151 }
22152 else
22153 last_chain = &per_cu->cu->read_in_chain;
22154
22155 per_cu = next_cu;
22156 }
22157}
22158
fe3e1990
DJ
22159/* Release all extra memory associated with OBJFILE. */
22160
22161void
22162dwarf2_free_objfile (struct objfile *objfile)
22163{
22164 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
22165
22166 if (dwarf2_per_objfile == NULL)
22167 return;
22168
22169 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
22170 free_cached_comp_units (NULL);
22171
7b9f3c50
DE
22172 if (dwarf2_per_objfile->quick_file_names_table)
22173 htab_delete (dwarf2_per_objfile->quick_file_names_table);
9291a0cd 22174
527f3840
JK
22175 if (dwarf2_per_objfile->line_header_hash)
22176 htab_delete (dwarf2_per_objfile->line_header_hash);
22177
fe3e1990
DJ
22178 /* Everything else should be on the objfile obstack. */
22179}
22180
dee91e82
DE
22181/* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
22182 We store these in a hash table separate from the DIEs, and preserve them
22183 when the DIEs are flushed out of cache.
22184
22185 The CU "per_cu" pointer is needed because offset alone is not enough to
3019eac3 22186 uniquely identify the type. A file may have multiple .debug_types sections,
c88ee1f0
DE
22187 or the type may come from a DWO file. Furthermore, while it's more logical
22188 to use per_cu->section+offset, with Fission the section with the data is in
22189 the DWO file but we don't know that section at the point we need it.
22190 We have to use something in dwarf2_per_cu_data (or the pointer to it)
22191 because we can enter the lookup routine, get_die_type_at_offset, from
22192 outside this file, and thus won't necessarily have PER_CU->cu.
22193 Fortunately, PER_CU is stable for the life of the objfile. */
1c379e20 22194
dee91e82 22195struct dwarf2_per_cu_offset_and_type
1c379e20 22196{
dee91e82 22197 const struct dwarf2_per_cu_data *per_cu;
b64f50a1 22198 sect_offset offset;
1c379e20
DJ
22199 struct type *type;
22200};
22201
dee91e82 22202/* Hash function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22203
22204static hashval_t
dee91e82 22205per_cu_offset_and_type_hash (const void *item)
1c379e20 22206{
dee91e82 22207 const struct dwarf2_per_cu_offset_and_type *ofs = item;
9a619af0 22208
dee91e82 22209 return (uintptr_t) ofs->per_cu + ofs->offset.sect_off;
1c379e20
DJ
22210}
22211
dee91e82 22212/* Equality function for a dwarf2_per_cu_offset_and_type. */
1c379e20
DJ
22213
22214static int
dee91e82 22215per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
1c379e20 22216{
dee91e82
DE
22217 const struct dwarf2_per_cu_offset_and_type *ofs_lhs = item_lhs;
22218 const struct dwarf2_per_cu_offset_and_type *ofs_rhs = item_rhs;
9a619af0 22219
dee91e82
DE
22220 return (ofs_lhs->per_cu == ofs_rhs->per_cu
22221 && ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
1c379e20
DJ
22222}
22223
22224/* Set the type associated with DIE to TYPE. Save it in CU's hash
7e314c57
JK
22225 table if necessary. For convenience, return TYPE.
22226
22227 The DIEs reading must have careful ordering to:
22228 * Not cause infite loops trying to read in DIEs as a prerequisite for
22229 reading current DIE.
22230 * Not trying to dereference contents of still incompletely read in types
22231 while reading in other DIEs.
22232 * Enable referencing still incompletely read in types just by a pointer to
22233 the type without accessing its fields.
22234
22235 Therefore caller should follow these rules:
22236 * Try to fetch any prerequisite types we may need to build this DIE type
22237 before building the type and calling set_die_type.
e71ec853 22238 * After building type call set_die_type for current DIE as soon as
7e314c57
JK
22239 possible before fetching more types to complete the current type.
22240 * Make the type as complete as possible before fetching more types. */
1c379e20 22241
f792889a 22242static struct type *
1c379e20
DJ
22243set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
22244{
dee91e82 22245 struct dwarf2_per_cu_offset_and_type **slot, ofs;
673bfd45 22246 struct objfile *objfile = cu->objfile;
3cdcd0ce
JB
22247 struct attribute *attr;
22248 struct dynamic_prop prop;
1c379e20 22249
b4ba55a1
JB
22250 /* For Ada types, make sure that the gnat-specific data is always
22251 initialized (if not already set). There are a few types where
22252 we should not be doing so, because the type-specific area is
22253 already used to hold some other piece of info (eg: TYPE_CODE_FLT
22254 where the type-specific area is used to store the floatformat).
22255 But this is not a problem, because the gnat-specific information
22256 is actually not needed for these types. */
22257 if (need_gnat_info (cu)
22258 && TYPE_CODE (type) != TYPE_CODE_FUNC
22259 && TYPE_CODE (type) != TYPE_CODE_FLT
09e2d7c7
DE
22260 && TYPE_CODE (type) != TYPE_CODE_METHODPTR
22261 && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
22262 && TYPE_CODE (type) != TYPE_CODE_METHOD
b4ba55a1
JB
22263 && !HAVE_GNAT_AUX_INFO (type))
22264 INIT_GNAT_SPECIFIC (type);
22265
3cdcd0ce
JB
22266 /* Read DW_AT_data_location and set in type. */
22267 attr = dwarf2_attr (die, DW_AT_data_location, cu);
22268 if (attr_to_dynamic_prop (attr, die, cu, &prop))
93a8e227 22269 add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
3cdcd0ce 22270
dee91e82 22271 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22272 {
dee91e82
DE
22273 dwarf2_per_objfile->die_type_hash =
22274 htab_create_alloc_ex (127,
22275 per_cu_offset_and_type_hash,
22276 per_cu_offset_and_type_eq,
22277 NULL,
22278 &objfile->objfile_obstack,
22279 hashtab_obstack_allocate,
22280 dummy_obstack_deallocate);
f792889a 22281 }
1c379e20 22282
dee91e82 22283 ofs.per_cu = cu->per_cu;
1c379e20
DJ
22284 ofs.offset = die->offset;
22285 ofs.type = type;
dee91e82
DE
22286 slot = (struct dwarf2_per_cu_offset_and_type **)
22287 htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
7e314c57
JK
22288 if (*slot)
22289 complaint (&symfile_complaints,
22290 _("A problem internal to GDB: DIE 0x%x has type already set"),
b64f50a1 22291 die->offset.sect_off);
673bfd45 22292 *slot = obstack_alloc (&objfile->objfile_obstack, sizeof (**slot));
1c379e20 22293 **slot = ofs;
f792889a 22294 return type;
1c379e20
DJ
22295}
22296
02142a6c
DE
22297/* Look up the type for the die at OFFSET in PER_CU in die_type_hash,
22298 or return NULL if the die does not have a saved type. */
1c379e20
DJ
22299
22300static struct type *
b64f50a1 22301get_die_type_at_offset (sect_offset offset,
673bfd45 22302 struct dwarf2_per_cu_data *per_cu)
1c379e20 22303{
dee91e82 22304 struct dwarf2_per_cu_offset_and_type *slot, ofs;
f792889a 22305
dee91e82 22306 if (dwarf2_per_objfile->die_type_hash == NULL)
f792889a 22307 return NULL;
1c379e20 22308
dee91e82 22309 ofs.per_cu = per_cu;
673bfd45 22310 ofs.offset = offset;
dee91e82 22311 slot = htab_find (dwarf2_per_objfile->die_type_hash, &ofs);
1c379e20
DJ
22312 if (slot)
22313 return slot->type;
22314 else
22315 return NULL;
22316}
22317
02142a6c 22318/* Look up the type for DIE in CU in die_type_hash,
673bfd45
DE
22319 or return NULL if DIE does not have a saved type. */
22320
22321static struct type *
22322get_die_type (struct die_info *die, struct dwarf2_cu *cu)
22323{
22324 return get_die_type_at_offset (die->offset, cu->per_cu);
22325}
22326
10b3939b
DJ
22327/* Add a dependence relationship from CU to REF_PER_CU. */
22328
22329static void
22330dwarf2_add_dependence (struct dwarf2_cu *cu,
22331 struct dwarf2_per_cu_data *ref_per_cu)
22332{
22333 void **slot;
22334
22335 if (cu->dependencies == NULL)
22336 cu->dependencies
22337 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
22338 NULL, &cu->comp_unit_obstack,
22339 hashtab_obstack_allocate,
22340 dummy_obstack_deallocate);
22341
22342 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
22343 if (*slot == NULL)
22344 *slot = ref_per_cu;
22345}
1c379e20 22346
f504f079
DE
22347/* Subroutine of dwarf2_mark to pass to htab_traverse.
22348 Set the mark field in every compilation unit in the
ae038cb0
DJ
22349 cache that we must keep because we are keeping CU. */
22350
10b3939b
DJ
22351static int
22352dwarf2_mark_helper (void **slot, void *data)
22353{
22354 struct dwarf2_per_cu_data *per_cu;
22355
22356 per_cu = (struct dwarf2_per_cu_data *) *slot;
d07ed419
JK
22357
22358 /* cu->dependencies references may not yet have been ever read if QUIT aborts
22359 reading of the chain. As such dependencies remain valid it is not much
22360 useful to track and undo them during QUIT cleanups. */
22361 if (per_cu->cu == NULL)
22362 return 1;
22363
10b3939b
DJ
22364 if (per_cu->cu->mark)
22365 return 1;
22366 per_cu->cu->mark = 1;
22367
22368 if (per_cu->cu->dependencies != NULL)
22369 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
22370
22371 return 1;
22372}
22373
f504f079
DE
22374/* Set the mark field in CU and in every other compilation unit in the
22375 cache that we must keep because we are keeping CU. */
22376
ae038cb0
DJ
22377static void
22378dwarf2_mark (struct dwarf2_cu *cu)
22379{
22380 if (cu->mark)
22381 return;
22382 cu->mark = 1;
10b3939b
DJ
22383 if (cu->dependencies != NULL)
22384 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
22385}
22386
22387static void
22388dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
22389{
22390 while (per_cu)
22391 {
22392 per_cu->cu->mark = 0;
22393 per_cu = per_cu->cu->read_in_chain;
22394 }
72bf9492
DJ
22395}
22396
72bf9492
DJ
22397/* Trivial hash function for partial_die_info: the hash value of a DIE
22398 is its offset in .debug_info for this objfile. */
22399
22400static hashval_t
22401partial_die_hash (const void *item)
22402{
22403 const struct partial_die_info *part_die = item;
9a619af0 22404
b64f50a1 22405 return part_die->offset.sect_off;
72bf9492
DJ
22406}
22407
22408/* Trivial comparison function for partial_die_info structures: two DIEs
22409 are equal if they have the same offset. */
22410
22411static int
22412partial_die_eq (const void *item_lhs, const void *item_rhs)
22413{
22414 const struct partial_die_info *part_die_lhs = item_lhs;
22415 const struct partial_die_info *part_die_rhs = item_rhs;
9a619af0 22416
b64f50a1 22417 return part_die_lhs->offset.sect_off == part_die_rhs->offset.sect_off;
72bf9492
DJ
22418}
22419
b4f54984
DE
22420static struct cmd_list_element *set_dwarf_cmdlist;
22421static struct cmd_list_element *show_dwarf_cmdlist;
ae038cb0
DJ
22422
22423static void
b4f54984 22424set_dwarf_cmd (char *args, int from_tty)
ae038cb0 22425{
b4f54984 22426 help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
635c7e8a 22427 gdb_stdout);
ae038cb0
DJ
22428}
22429
22430static void
b4f54984 22431show_dwarf_cmd (char *args, int from_tty)
6e70227d 22432{
b4f54984 22433 cmd_show_list (show_dwarf_cmdlist, from_tty, "");
ae038cb0
DJ
22434}
22435
4bf44c1c 22436/* Free data associated with OBJFILE, if necessary. */
dce234bc
PP
22437
22438static void
c1bd65d0 22439dwarf2_per_objfile_free (struct objfile *objfile, void *d)
dce234bc
PP
22440{
22441 struct dwarf2_per_objfile *data = d;
8b70b953 22442 int ix;
8b70b953 22443
626f2d1c
TT
22444 /* Make sure we don't accidentally use dwarf2_per_objfile while
22445 cleaning up. */
22446 dwarf2_per_objfile = NULL;
22447
59b0c7c1
JB
22448 for (ix = 0; ix < data->n_comp_units; ++ix)
22449 VEC_free (dwarf2_per_cu_ptr, data->all_comp_units[ix]->imported_symtabs);
796a7ff8 22450
59b0c7c1 22451 for (ix = 0; ix < data->n_type_units; ++ix)
796a7ff8 22452 VEC_free (dwarf2_per_cu_ptr,
59b0c7c1
JB
22453 data->all_type_units[ix]->per_cu.imported_symtabs);
22454 xfree (data->all_type_units);
95554aad 22455
8b70b953 22456 VEC_free (dwarf2_section_info_def, data->types);
3019eac3
DE
22457
22458 if (data->dwo_files)
22459 free_dwo_files (data->dwo_files, objfile);
5c6fa7ab
DE
22460 if (data->dwp_file)
22461 gdb_bfd_unref (data->dwp_file->dbfd);
36586728
TT
22462
22463 if (data->dwz_file && data->dwz_file->dwz_bfd)
22464 gdb_bfd_unref (data->dwz_file->dwz_bfd);
9291a0cd
TT
22465}
22466
22467\f
ae2de4f8 22468/* The "save gdb-index" command. */
9291a0cd
TT
22469
22470/* The contents of the hash table we create when building the string
22471 table. */
22472struct strtab_entry
22473{
22474 offset_type offset;
22475 const char *str;
22476};
22477
559a7a62
JK
22478/* Hash function for a strtab_entry.
22479
22480 Function is used only during write_hash_table so no index format backward
22481 compatibility is needed. */
b89be57b 22482
9291a0cd
TT
22483static hashval_t
22484hash_strtab_entry (const void *e)
22485{
22486 const struct strtab_entry *entry = e;
559a7a62 22487 return mapped_index_string_hash (INT_MAX, entry->str);
9291a0cd
TT
22488}
22489
22490/* Equality function for a strtab_entry. */
b89be57b 22491
9291a0cd
TT
22492static int
22493eq_strtab_entry (const void *a, const void *b)
22494{
22495 const struct strtab_entry *ea = a;
22496 const struct strtab_entry *eb = b;
22497 return !strcmp (ea->str, eb->str);
22498}
22499
22500/* Create a strtab_entry hash table. */
b89be57b 22501
9291a0cd
TT
22502static htab_t
22503create_strtab (void)
22504{
22505 return htab_create_alloc (100, hash_strtab_entry, eq_strtab_entry,
22506 xfree, xcalloc, xfree);
22507}
22508
22509/* Add a string to the constant pool. Return the string's offset in
22510 host order. */
b89be57b 22511
9291a0cd
TT
22512static offset_type
22513add_string (htab_t table, struct obstack *cpool, const char *str)
22514{
22515 void **slot;
22516 struct strtab_entry entry;
22517 struct strtab_entry *result;
22518
22519 entry.str = str;
22520 slot = htab_find_slot (table, &entry, INSERT);
22521 if (*slot)
22522 result = *slot;
22523 else
22524 {
22525 result = XNEW (struct strtab_entry);
22526 result->offset = obstack_object_size (cpool);
22527 result->str = str;
22528 obstack_grow_str0 (cpool, str);
22529 *slot = result;
22530 }
22531 return result->offset;
22532}
22533
22534/* An entry in the symbol table. */
22535struct symtab_index_entry
22536{
22537 /* The name of the symbol. */
22538 const char *name;
22539 /* The offset of the name in the constant pool. */
22540 offset_type index_offset;
22541 /* A sorted vector of the indices of all the CUs that hold an object
22542 of this name. */
22543 VEC (offset_type) *cu_indices;
22544};
22545
22546/* The symbol table. This is a power-of-2-sized hash table. */
22547struct mapped_symtab
22548{
22549 offset_type n_elements;
22550 offset_type size;
22551 struct symtab_index_entry **data;
22552};
22553
22554/* Hash function for a symtab_index_entry. */
b89be57b 22555
9291a0cd
TT
22556static hashval_t
22557hash_symtab_entry (const void *e)
22558{
22559 const struct symtab_index_entry *entry = e;
22560 return iterative_hash (VEC_address (offset_type, entry->cu_indices),
22561 sizeof (offset_type) * VEC_length (offset_type,
22562 entry->cu_indices),
22563 0);
22564}
22565
22566/* Equality function for a symtab_index_entry. */
b89be57b 22567
9291a0cd
TT
22568static int
22569eq_symtab_entry (const void *a, const void *b)
22570{
22571 const struct symtab_index_entry *ea = a;
22572 const struct symtab_index_entry *eb = b;
22573 int len = VEC_length (offset_type, ea->cu_indices);
22574 if (len != VEC_length (offset_type, eb->cu_indices))
22575 return 0;
22576 return !memcmp (VEC_address (offset_type, ea->cu_indices),
22577 VEC_address (offset_type, eb->cu_indices),
22578 sizeof (offset_type) * len);
22579}
22580
22581/* Destroy a symtab_index_entry. */
b89be57b 22582
9291a0cd
TT
22583static void
22584delete_symtab_entry (void *p)
22585{
22586 struct symtab_index_entry *entry = p;
22587 VEC_free (offset_type, entry->cu_indices);
22588 xfree (entry);
22589}
22590
22591/* Create a hash table holding symtab_index_entry objects. */
b89be57b 22592
9291a0cd 22593static htab_t
3876f04e 22594create_symbol_hash_table (void)
9291a0cd
TT
22595{
22596 return htab_create_alloc (100, hash_symtab_entry, eq_symtab_entry,
22597 delete_symtab_entry, xcalloc, xfree);
22598}
22599
22600/* Create a new mapped symtab object. */
b89be57b 22601
9291a0cd
TT
22602static struct mapped_symtab *
22603create_mapped_symtab (void)
22604{
22605 struct mapped_symtab *symtab = XNEW (struct mapped_symtab);
22606 symtab->n_elements = 0;
22607 symtab->size = 1024;
22608 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22609 return symtab;
22610}
22611
22612/* Destroy a mapped_symtab. */
b89be57b 22613
9291a0cd
TT
22614static void
22615cleanup_mapped_symtab (void *p)
22616{
22617 struct mapped_symtab *symtab = p;
22618 /* The contents of the array are freed when the other hash table is
22619 destroyed. */
22620 xfree (symtab->data);
22621 xfree (symtab);
22622}
22623
22624/* Find a slot in SYMTAB for the symbol NAME. Returns a pointer to
559a7a62
JK
22625 the slot.
22626
22627 Function is used only during write_hash_table so no index format backward
22628 compatibility is needed. */
b89be57b 22629
9291a0cd
TT
22630static struct symtab_index_entry **
22631find_slot (struct mapped_symtab *symtab, const char *name)
22632{
559a7a62 22633 offset_type index, step, hash = mapped_index_string_hash (INT_MAX, name);
9291a0cd
TT
22634
22635 index = hash & (symtab->size - 1);
22636 step = ((hash * 17) & (symtab->size - 1)) | 1;
22637
22638 for (;;)
22639 {
22640 if (!symtab->data[index] || !strcmp (name, symtab->data[index]->name))
22641 return &symtab->data[index];
22642 index = (index + step) & (symtab->size - 1);
22643 }
22644}
22645
22646/* Expand SYMTAB's hash table. */
b89be57b 22647
9291a0cd
TT
22648static void
22649hash_expand (struct mapped_symtab *symtab)
22650{
22651 offset_type old_size = symtab->size;
22652 offset_type i;
22653 struct symtab_index_entry **old_entries = symtab->data;
22654
22655 symtab->size *= 2;
22656 symtab->data = XCNEWVEC (struct symtab_index_entry *, symtab->size);
22657
22658 for (i = 0; i < old_size; ++i)
22659 {
22660 if (old_entries[i])
22661 {
22662 struct symtab_index_entry **slot = find_slot (symtab,
22663 old_entries[i]->name);
22664 *slot = old_entries[i];
22665 }
22666 }
22667
22668 xfree (old_entries);
22669}
22670
156942c7
DE
22671/* Add an entry to SYMTAB. NAME is the name of the symbol.
22672 CU_INDEX is the index of the CU in which the symbol appears.
22673 IS_STATIC is one if the symbol is static, otherwise zero (global). */
b89be57b 22674
9291a0cd
TT
22675static void
22676add_index_entry (struct mapped_symtab *symtab, const char *name,
156942c7 22677 int is_static, gdb_index_symbol_kind kind,
9291a0cd
TT
22678 offset_type cu_index)
22679{
22680 struct symtab_index_entry **slot;
156942c7 22681 offset_type cu_index_and_attrs;
9291a0cd
TT
22682
22683 ++symtab->n_elements;
22684 if (4 * symtab->n_elements / 3 >= symtab->size)
22685 hash_expand (symtab);
22686
22687 slot = find_slot (symtab, name);
22688 if (!*slot)
22689 {
22690 *slot = XNEW (struct symtab_index_entry);
22691 (*slot)->name = name;
156942c7 22692 /* index_offset is set later. */
9291a0cd
TT
22693 (*slot)->cu_indices = NULL;
22694 }
156942c7
DE
22695
22696 cu_index_and_attrs = 0;
22697 DW2_GDB_INDEX_CU_SET_VALUE (cu_index_and_attrs, cu_index);
22698 DW2_GDB_INDEX_SYMBOL_STATIC_SET_VALUE (cu_index_and_attrs, is_static);
22699 DW2_GDB_INDEX_SYMBOL_KIND_SET_VALUE (cu_index_and_attrs, kind);
22700
22701 /* We don't want to record an index value twice as we want to avoid the
22702 duplication.
22703 We process all global symbols and then all static symbols
22704 (which would allow us to avoid the duplication by only having to check
22705 the last entry pushed), but a symbol could have multiple kinds in one CU.
22706 To keep things simple we don't worry about the duplication here and
22707 sort and uniqufy the list after we've processed all symbols. */
22708 VEC_safe_push (offset_type, (*slot)->cu_indices, cu_index_and_attrs);
22709}
22710
22711/* qsort helper routine for uniquify_cu_indices. */
22712
22713static int
22714offset_type_compare (const void *ap, const void *bp)
22715{
22716 offset_type a = *(offset_type *) ap;
22717 offset_type b = *(offset_type *) bp;
22718
22719 return (a > b) - (b > a);
22720}
22721
22722/* Sort and remove duplicates of all symbols' cu_indices lists. */
22723
22724static void
22725uniquify_cu_indices (struct mapped_symtab *symtab)
22726{
22727 int i;
22728
22729 for (i = 0; i < symtab->size; ++i)
22730 {
22731 struct symtab_index_entry *entry = symtab->data[i];
22732
22733 if (entry
22734 && entry->cu_indices != NULL)
22735 {
22736 unsigned int next_to_insert, next_to_check;
22737 offset_type last_value;
22738
22739 qsort (VEC_address (offset_type, entry->cu_indices),
22740 VEC_length (offset_type, entry->cu_indices),
22741 sizeof (offset_type), offset_type_compare);
22742
22743 last_value = VEC_index (offset_type, entry->cu_indices, 0);
22744 next_to_insert = 1;
22745 for (next_to_check = 1;
22746 next_to_check < VEC_length (offset_type, entry->cu_indices);
22747 ++next_to_check)
22748 {
22749 if (VEC_index (offset_type, entry->cu_indices, next_to_check)
22750 != last_value)
22751 {
22752 last_value = VEC_index (offset_type, entry->cu_indices,
22753 next_to_check);
22754 VEC_replace (offset_type, entry->cu_indices, next_to_insert,
22755 last_value);
22756 ++next_to_insert;
22757 }
22758 }
22759 VEC_truncate (offset_type, entry->cu_indices, next_to_insert);
22760 }
22761 }
9291a0cd
TT
22762}
22763
22764/* Add a vector of indices to the constant pool. */
b89be57b 22765
9291a0cd 22766static offset_type
3876f04e 22767add_indices_to_cpool (htab_t symbol_hash_table, struct obstack *cpool,
9291a0cd
TT
22768 struct symtab_index_entry *entry)
22769{
22770 void **slot;
22771
3876f04e 22772 slot = htab_find_slot (symbol_hash_table, entry, INSERT);
9291a0cd
TT
22773 if (!*slot)
22774 {
22775 offset_type len = VEC_length (offset_type, entry->cu_indices);
22776 offset_type val = MAYBE_SWAP (len);
22777 offset_type iter;
22778 int i;
22779
22780 *slot = entry;
22781 entry->index_offset = obstack_object_size (cpool);
22782
22783 obstack_grow (cpool, &val, sizeof (val));
22784 for (i = 0;
22785 VEC_iterate (offset_type, entry->cu_indices, i, iter);
22786 ++i)
22787 {
22788 val = MAYBE_SWAP (iter);
22789 obstack_grow (cpool, &val, sizeof (val));
22790 }
22791 }
22792 else
22793 {
22794 struct symtab_index_entry *old_entry = *slot;
22795 entry->index_offset = old_entry->index_offset;
22796 entry = old_entry;
22797 }
22798 return entry->index_offset;
22799}
22800
22801/* Write the mapped hash table SYMTAB to the obstack OUTPUT, with
22802 constant pool entries going into the obstack CPOOL. */
b89be57b 22803
9291a0cd
TT
22804static void
22805write_hash_table (struct mapped_symtab *symtab,
22806 struct obstack *output, struct obstack *cpool)
22807{
22808 offset_type i;
3876f04e 22809 htab_t symbol_hash_table;
9291a0cd
TT
22810 htab_t str_table;
22811
3876f04e 22812 symbol_hash_table = create_symbol_hash_table ();
9291a0cd 22813 str_table = create_strtab ();
3876f04e 22814
9291a0cd
TT
22815 /* We add all the index vectors to the constant pool first, to
22816 ensure alignment is ok. */
22817 for (i = 0; i < symtab->size; ++i)
22818 {
22819 if (symtab->data[i])
3876f04e 22820 add_indices_to_cpool (symbol_hash_table, cpool, symtab->data[i]);
9291a0cd
TT
22821 }
22822
22823 /* Now write out the hash table. */
22824 for (i = 0; i < symtab->size; ++i)
22825 {
22826 offset_type str_off, vec_off;
22827
22828 if (symtab->data[i])
22829 {
22830 str_off = add_string (str_table, cpool, symtab->data[i]->name);
22831 vec_off = symtab->data[i]->index_offset;
22832 }
22833 else
22834 {
22835 /* While 0 is a valid constant pool index, it is not valid
22836 to have 0 for both offsets. */
22837 str_off = 0;
22838 vec_off = 0;
22839 }
22840
22841 str_off = MAYBE_SWAP (str_off);
22842 vec_off = MAYBE_SWAP (vec_off);
22843
22844 obstack_grow (output, &str_off, sizeof (str_off));
22845 obstack_grow (output, &vec_off, sizeof (vec_off));
22846 }
22847
22848 htab_delete (str_table);
3876f04e 22849 htab_delete (symbol_hash_table);
9291a0cd
TT
22850}
22851
0a5429f6
DE
22852/* Struct to map psymtab to CU index in the index file. */
22853struct psymtab_cu_index_map
22854{
22855 struct partial_symtab *psymtab;
22856 unsigned int cu_index;
22857};
22858
22859static hashval_t
22860hash_psymtab_cu_index (const void *item)
22861{
22862 const struct psymtab_cu_index_map *map = item;
22863
22864 return htab_hash_pointer (map->psymtab);
22865}
22866
22867static int
22868eq_psymtab_cu_index (const void *item_lhs, const void *item_rhs)
22869{
22870 const struct psymtab_cu_index_map *lhs = item_lhs;
22871 const struct psymtab_cu_index_map *rhs = item_rhs;
22872
22873 return lhs->psymtab == rhs->psymtab;
22874}
22875
22876/* Helper struct for building the address table. */
22877struct addrmap_index_data
22878{
22879 struct objfile *objfile;
22880 struct obstack *addr_obstack;
22881 htab_t cu_index_htab;
22882
22883 /* Non-zero if the previous_* fields are valid.
22884 We can't write an entry until we see the next entry (since it is only then
22885 that we know the end of the entry). */
22886 int previous_valid;
22887 /* Index of the CU in the table of all CUs in the index file. */
22888 unsigned int previous_cu_index;
0963b4bd 22889 /* Start address of the CU. */
0a5429f6
DE
22890 CORE_ADDR previous_cu_start;
22891};
22892
22893/* Write an address entry to OBSTACK. */
b89be57b 22894
9291a0cd 22895static void
0a5429f6
DE
22896add_address_entry (struct objfile *objfile, struct obstack *obstack,
22897 CORE_ADDR start, CORE_ADDR end, unsigned int cu_index)
9291a0cd 22898{
0a5429f6 22899 offset_type cu_index_to_write;
948f8e3d 22900 gdb_byte addr[8];
9291a0cd
TT
22901 CORE_ADDR baseaddr;
22902
22903 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
22904
0a5429f6
DE
22905 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, start - baseaddr);
22906 obstack_grow (obstack, addr, 8);
22907 store_unsigned_integer (addr, 8, BFD_ENDIAN_LITTLE, end - baseaddr);
22908 obstack_grow (obstack, addr, 8);
22909 cu_index_to_write = MAYBE_SWAP (cu_index);
22910 obstack_grow (obstack, &cu_index_to_write, sizeof (offset_type));
22911}
22912
22913/* Worker function for traversing an addrmap to build the address table. */
22914
22915static int
22916add_address_entry_worker (void *datap, CORE_ADDR start_addr, void *obj)
22917{
22918 struct addrmap_index_data *data = datap;
22919 struct partial_symtab *pst = obj;
0a5429f6
DE
22920
22921 if (data->previous_valid)
22922 add_address_entry (data->objfile, data->addr_obstack,
22923 data->previous_cu_start, start_addr,
22924 data->previous_cu_index);
22925
22926 data->previous_cu_start = start_addr;
22927 if (pst != NULL)
22928 {
22929 struct psymtab_cu_index_map find_map, *map;
22930 find_map.psymtab = pst;
22931 map = htab_find (data->cu_index_htab, &find_map);
22932 gdb_assert (map != NULL);
22933 data->previous_cu_index = map->cu_index;
22934 data->previous_valid = 1;
22935 }
22936 else
22937 data->previous_valid = 0;
22938
22939 return 0;
22940}
22941
22942/* Write OBJFILE's address map to OBSTACK.
22943 CU_INDEX_HTAB is used to map addrmap entries to their CU indices
22944 in the index file. */
22945
22946static void
22947write_address_map (struct objfile *objfile, struct obstack *obstack,
22948 htab_t cu_index_htab)
22949{
22950 struct addrmap_index_data addrmap_index_data;
22951
22952 /* When writing the address table, we have to cope with the fact that
22953 the addrmap iterator only provides the start of a region; we have to
22954 wait until the next invocation to get the start of the next region. */
22955
22956 addrmap_index_data.objfile = objfile;
22957 addrmap_index_data.addr_obstack = obstack;
22958 addrmap_index_data.cu_index_htab = cu_index_htab;
22959 addrmap_index_data.previous_valid = 0;
22960
22961 addrmap_foreach (objfile->psymtabs_addrmap, add_address_entry_worker,
22962 &addrmap_index_data);
22963
22964 /* It's highly unlikely the last entry (end address = 0xff...ff)
22965 is valid, but we should still handle it.
22966 The end address is recorded as the start of the next region, but that
22967 doesn't work here. To cope we pass 0xff...ff, this is a rare situation
22968 anyway. */
22969 if (addrmap_index_data.previous_valid)
22970 add_address_entry (objfile, obstack,
22971 addrmap_index_data.previous_cu_start, (CORE_ADDR) -1,
22972 addrmap_index_data.previous_cu_index);
9291a0cd
TT
22973}
22974
156942c7
DE
22975/* Return the symbol kind of PSYM. */
22976
22977static gdb_index_symbol_kind
22978symbol_kind (struct partial_symbol *psym)
22979{
22980 domain_enum domain = PSYMBOL_DOMAIN (psym);
22981 enum address_class aclass = PSYMBOL_CLASS (psym);
22982
22983 switch (domain)
22984 {
22985 case VAR_DOMAIN:
22986 switch (aclass)
22987 {
22988 case LOC_BLOCK:
22989 return GDB_INDEX_SYMBOL_KIND_FUNCTION;
22990 case LOC_TYPEDEF:
22991 return GDB_INDEX_SYMBOL_KIND_TYPE;
22992 case LOC_COMPUTED:
22993 case LOC_CONST_BYTES:
22994 case LOC_OPTIMIZED_OUT:
22995 case LOC_STATIC:
22996 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
22997 case LOC_CONST:
22998 /* Note: It's currently impossible to recognize psyms as enum values
22999 short of reading the type info. For now punt. */
23000 return GDB_INDEX_SYMBOL_KIND_VARIABLE;
23001 default:
23002 /* There are other LOC_FOO values that one might want to classify
23003 as variables, but dwarf2read.c doesn't currently use them. */
23004 return GDB_INDEX_SYMBOL_KIND_OTHER;
23005 }
23006 case STRUCT_DOMAIN:
23007 return GDB_INDEX_SYMBOL_KIND_TYPE;
23008 default:
23009 return GDB_INDEX_SYMBOL_KIND_OTHER;
23010 }
23011}
23012
9291a0cd 23013/* Add a list of partial symbols to SYMTAB. */
b89be57b 23014
9291a0cd
TT
23015static void
23016write_psymbols (struct mapped_symtab *symtab,
987d643c 23017 htab_t psyms_seen,
9291a0cd
TT
23018 struct partial_symbol **psymp,
23019 int count,
987d643c
TT
23020 offset_type cu_index,
23021 int is_static)
9291a0cd
TT
23022{
23023 for (; count-- > 0; ++psymp)
23024 {
156942c7
DE
23025 struct partial_symbol *psym = *psymp;
23026 void **slot;
987d643c 23027
156942c7 23028 if (SYMBOL_LANGUAGE (psym) == language_ada)
9291a0cd 23029 error (_("Ada is not currently supported by the index"));
987d643c 23030
987d643c 23031 /* Only add a given psymbol once. */
156942c7 23032 slot = htab_find_slot (psyms_seen, psym, INSERT);
987d643c
TT
23033 if (!*slot)
23034 {
156942c7
DE
23035 gdb_index_symbol_kind kind = symbol_kind (psym);
23036
23037 *slot = psym;
23038 add_index_entry (symtab, SYMBOL_SEARCH_NAME (psym),
23039 is_static, kind, cu_index);
987d643c 23040 }
9291a0cd
TT
23041 }
23042}
23043
23044/* Write the contents of an ("unfinished") obstack to FILE. Throw an
23045 exception if there is an error. */
b89be57b 23046
9291a0cd
TT
23047static void
23048write_obstack (FILE *file, struct obstack *obstack)
23049{
23050 if (fwrite (obstack_base (obstack), 1, obstack_object_size (obstack),
23051 file)
23052 != obstack_object_size (obstack))
23053 error (_("couldn't data write to file"));
23054}
23055
23056/* Unlink a file if the argument is not NULL. */
b89be57b 23057
9291a0cd
TT
23058static void
23059unlink_if_set (void *p)
23060{
23061 char **filename = p;
23062 if (*filename)
23063 unlink (*filename);
23064}
23065
1fd400ff
TT
23066/* A helper struct used when iterating over debug_types. */
23067struct signatured_type_index_data
23068{
23069 struct objfile *objfile;
23070 struct mapped_symtab *symtab;
23071 struct obstack *types_list;
987d643c 23072 htab_t psyms_seen;
1fd400ff
TT
23073 int cu_index;
23074};
23075
23076/* A helper function that writes a single signatured_type to an
23077 obstack. */
b89be57b 23078
1fd400ff
TT
23079static int
23080write_one_signatured_type (void **slot, void *d)
23081{
23082 struct signatured_type_index_data *info = d;
23083 struct signatured_type *entry = (struct signatured_type *) *slot;
0186c6a7 23084 struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
1fd400ff
TT
23085 gdb_byte val[8];
23086
23087 write_psymbols (info->symtab,
987d643c 23088 info->psyms_seen,
3e43a32a
MS
23089 info->objfile->global_psymbols.list
23090 + psymtab->globals_offset,
987d643c
TT
23091 psymtab->n_global_syms, info->cu_index,
23092 0);
1fd400ff 23093 write_psymbols (info->symtab,
987d643c 23094 info->psyms_seen,
3e43a32a
MS
23095 info->objfile->static_psymbols.list
23096 + psymtab->statics_offset,
987d643c
TT
23097 psymtab->n_static_syms, info->cu_index,
23098 1);
1fd400ff 23099
b64f50a1
JK
23100 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23101 entry->per_cu.offset.sect_off);
1fd400ff 23102 obstack_grow (info->types_list, val, 8);
3019eac3
DE
23103 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23104 entry->type_offset_in_tu.cu_off);
1fd400ff
TT
23105 obstack_grow (info->types_list, val, 8);
23106 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, entry->signature);
23107 obstack_grow (info->types_list, val, 8);
23108
23109 ++info->cu_index;
23110
23111 return 1;
23112}
23113
95554aad
TT
23114/* Recurse into all "included" dependencies and write their symbols as
23115 if they appeared in this psymtab. */
23116
23117static void
23118recursively_write_psymbols (struct objfile *objfile,
23119 struct partial_symtab *psymtab,
23120 struct mapped_symtab *symtab,
23121 htab_t psyms_seen,
23122 offset_type cu_index)
23123{
23124 int i;
23125
23126 for (i = 0; i < psymtab->number_of_dependencies; ++i)
23127 if (psymtab->dependencies[i]->user != NULL)
23128 recursively_write_psymbols (objfile, psymtab->dependencies[i],
23129 symtab, psyms_seen, cu_index);
23130
23131 write_psymbols (symtab,
23132 psyms_seen,
23133 objfile->global_psymbols.list + psymtab->globals_offset,
23134 psymtab->n_global_syms, cu_index,
23135 0);
23136 write_psymbols (symtab,
23137 psyms_seen,
23138 objfile->static_psymbols.list + psymtab->statics_offset,
23139 psymtab->n_static_syms, cu_index,
23140 1);
23141}
23142
9291a0cd 23143/* Create an index file for OBJFILE in the directory DIR. */
b89be57b 23144
9291a0cd
TT
23145static void
23146write_psymtabs_to_index (struct objfile *objfile, const char *dir)
23147{
23148 struct cleanup *cleanup;
23149 char *filename, *cleanup_filename;
1fd400ff
TT
23150 struct obstack contents, addr_obstack, constant_pool, symtab_obstack;
23151 struct obstack cu_list, types_cu_list;
9291a0cd
TT
23152 int i;
23153 FILE *out_file;
23154 struct mapped_symtab *symtab;
23155 offset_type val, size_of_contents, total_len;
23156 struct stat st;
987d643c 23157 htab_t psyms_seen;
0a5429f6
DE
23158 htab_t cu_index_htab;
23159 struct psymtab_cu_index_map *psymtab_cu_index_map;
9291a0cd 23160
9291a0cd
TT
23161 if (dwarf2_per_objfile->using_index)
23162 error (_("Cannot use an index to create the index"));
23163
8b70b953
TT
23164 if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) > 1)
23165 error (_("Cannot make an index when the file has multiple .debug_types sections"));
23166
260b681b
DE
23167 if (!objfile->psymtabs || !objfile->psymtabs_addrmap)
23168 return;
23169
4262abfb
JK
23170 if (stat (objfile_name (objfile), &st) < 0)
23171 perror_with_name (objfile_name (objfile));
9291a0cd 23172
4262abfb 23173 filename = concat (dir, SLASH_STRING, lbasename (objfile_name (objfile)),
9291a0cd
TT
23174 INDEX_SUFFIX, (char *) NULL);
23175 cleanup = make_cleanup (xfree, filename);
23176
614c279d 23177 out_file = gdb_fopen_cloexec (filename, "wb");
9291a0cd
TT
23178 if (!out_file)
23179 error (_("Can't open `%s' for writing"), filename);
23180
23181 cleanup_filename = filename;
23182 make_cleanup (unlink_if_set, &cleanup_filename);
23183
23184 symtab = create_mapped_symtab ();
23185 make_cleanup (cleanup_mapped_symtab, symtab);
23186
23187 obstack_init (&addr_obstack);
23188 make_cleanup_obstack_free (&addr_obstack);
23189
23190 obstack_init (&cu_list);
23191 make_cleanup_obstack_free (&cu_list);
23192
1fd400ff
TT
23193 obstack_init (&types_cu_list);
23194 make_cleanup_obstack_free (&types_cu_list);
23195
987d643c
TT
23196 psyms_seen = htab_create_alloc (100, htab_hash_pointer, htab_eq_pointer,
23197 NULL, xcalloc, xfree);
96408a79 23198 make_cleanup_htab_delete (psyms_seen);
987d643c 23199
0a5429f6
DE
23200 /* While we're scanning CU's create a table that maps a psymtab pointer
23201 (which is what addrmap records) to its index (which is what is recorded
23202 in the index file). This will later be needed to write the address
23203 table. */
23204 cu_index_htab = htab_create_alloc (100,
23205 hash_psymtab_cu_index,
23206 eq_psymtab_cu_index,
23207 NULL, xcalloc, xfree);
96408a79 23208 make_cleanup_htab_delete (cu_index_htab);
0a5429f6
DE
23209 psymtab_cu_index_map = (struct psymtab_cu_index_map *)
23210 xmalloc (sizeof (struct psymtab_cu_index_map)
23211 * dwarf2_per_objfile->n_comp_units);
23212 make_cleanup (xfree, psymtab_cu_index_map);
23213
23214 /* The CU list is already sorted, so we don't need to do additional
1fd400ff
TT
23215 work here. Also, the debug_types entries do not appear in
23216 all_comp_units, but only in their own hash table. */
9291a0cd
TT
23217 for (i = 0; i < dwarf2_per_objfile->n_comp_units; ++i)
23218 {
3e43a32a
MS
23219 struct dwarf2_per_cu_data *per_cu
23220 = dwarf2_per_objfile->all_comp_units[i];
e254ef6a 23221 struct partial_symtab *psymtab = per_cu->v.psymtab;
9291a0cd 23222 gdb_byte val[8];
0a5429f6
DE
23223 struct psymtab_cu_index_map *map;
23224 void **slot;
9291a0cd 23225
92fac807
JK
23226 /* CU of a shared file from 'dwz -m' may be unused by this main file.
23227 It may be referenced from a local scope but in such case it does not
23228 need to be present in .gdb_index. */
23229 if (psymtab == NULL)
23230 continue;
23231
95554aad
TT
23232 if (psymtab->user == NULL)
23233 recursively_write_psymbols (objfile, psymtab, symtab, psyms_seen, i);
9291a0cd 23234
0a5429f6
DE
23235 map = &psymtab_cu_index_map[i];
23236 map->psymtab = psymtab;
23237 map->cu_index = i;
23238 slot = htab_find_slot (cu_index_htab, map, INSERT);
23239 gdb_assert (slot != NULL);
23240 gdb_assert (*slot == NULL);
23241 *slot = map;
9291a0cd 23242
b64f50a1
JK
23243 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE,
23244 per_cu->offset.sect_off);
9291a0cd 23245 obstack_grow (&cu_list, val, 8);
e254ef6a 23246 store_unsigned_integer (val, 8, BFD_ENDIAN_LITTLE, per_cu->length);
9291a0cd
TT
23247 obstack_grow (&cu_list, val, 8);
23248 }
23249
0a5429f6
DE
23250 /* Dump the address map. */
23251 write_address_map (objfile, &addr_obstack, cu_index_htab);
23252
1fd400ff
TT
23253 /* Write out the .debug_type entries, if any. */
23254 if (dwarf2_per_objfile->signatured_types)
23255 {
23256 struct signatured_type_index_data sig_data;
23257
23258 sig_data.objfile = objfile;
23259 sig_data.symtab = symtab;
23260 sig_data.types_list = &types_cu_list;
987d643c 23261 sig_data.psyms_seen = psyms_seen;
1fd400ff
TT
23262 sig_data.cu_index = dwarf2_per_objfile->n_comp_units;
23263 htab_traverse_noresize (dwarf2_per_objfile->signatured_types,
23264 write_one_signatured_type, &sig_data);
23265 }
23266
156942c7
DE
23267 /* Now that we've processed all symbols we can shrink their cu_indices
23268 lists. */
23269 uniquify_cu_indices (symtab);
23270
9291a0cd
TT
23271 obstack_init (&constant_pool);
23272 make_cleanup_obstack_free (&constant_pool);
23273 obstack_init (&symtab_obstack);
23274 make_cleanup_obstack_free (&symtab_obstack);
23275 write_hash_table (symtab, &symtab_obstack, &constant_pool);
23276
23277 obstack_init (&contents);
23278 make_cleanup_obstack_free (&contents);
1fd400ff 23279 size_of_contents = 6 * sizeof (offset_type);
9291a0cd
TT
23280 total_len = size_of_contents;
23281
23282 /* The version number. */
796a7ff8 23283 val = MAYBE_SWAP (8);
9291a0cd
TT
23284 obstack_grow (&contents, &val, sizeof (val));
23285
23286 /* The offset of the CU list from the start of the file. */
23287 val = MAYBE_SWAP (total_len);
23288 obstack_grow (&contents, &val, sizeof (val));
23289 total_len += obstack_object_size (&cu_list);
23290
1fd400ff
TT
23291 /* The offset of the types CU list from the start of the file. */
23292 val = MAYBE_SWAP (total_len);
23293 obstack_grow (&contents, &val, sizeof (val));
23294 total_len += obstack_object_size (&types_cu_list);
23295
9291a0cd
TT
23296 /* The offset of the address table from the start of the file. */
23297 val = MAYBE_SWAP (total_len);
23298 obstack_grow (&contents, &val, sizeof (val));
23299 total_len += obstack_object_size (&addr_obstack);
23300
23301 /* The offset of the symbol table from the start of the file. */
23302 val = MAYBE_SWAP (total_len);
23303 obstack_grow (&contents, &val, sizeof (val));
23304 total_len += obstack_object_size (&symtab_obstack);
23305
23306 /* The offset of the constant pool from the start of the file. */
23307 val = MAYBE_SWAP (total_len);
23308 obstack_grow (&contents, &val, sizeof (val));
23309 total_len += obstack_object_size (&constant_pool);
23310
23311 gdb_assert (obstack_object_size (&contents) == size_of_contents);
23312
23313 write_obstack (out_file, &contents);
23314 write_obstack (out_file, &cu_list);
1fd400ff 23315 write_obstack (out_file, &types_cu_list);
9291a0cd
TT
23316 write_obstack (out_file, &addr_obstack);
23317 write_obstack (out_file, &symtab_obstack);
23318 write_obstack (out_file, &constant_pool);
23319
23320 fclose (out_file);
23321
23322 /* We want to keep the file, so we set cleanup_filename to NULL
23323 here. See unlink_if_set. */
23324 cleanup_filename = NULL;
23325
23326 do_cleanups (cleanup);
23327}
23328
90476074
TT
23329/* Implementation of the `save gdb-index' command.
23330
23331 Note that the file format used by this command is documented in the
23332 GDB manual. Any changes here must be documented there. */
11570e71 23333
9291a0cd
TT
23334static void
23335save_gdb_index_command (char *arg, int from_tty)
23336{
23337 struct objfile *objfile;
23338
23339 if (!arg || !*arg)
96d19272 23340 error (_("usage: save gdb-index DIRECTORY"));
9291a0cd
TT
23341
23342 ALL_OBJFILES (objfile)
23343 {
23344 struct stat st;
23345
23346 /* If the objfile does not correspond to an actual file, skip it. */
4262abfb 23347 if (stat (objfile_name (objfile), &st) < 0)
9291a0cd
TT
23348 continue;
23349
23350 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
23351 if (dwarf2_per_objfile)
23352 {
9291a0cd 23353
492d29ea 23354 TRY
9291a0cd
TT
23355 {
23356 write_psymtabs_to_index (objfile, arg);
23357 }
492d29ea
PA
23358 CATCH (except, RETURN_MASK_ERROR)
23359 {
23360 exception_fprintf (gdb_stderr, except,
23361 _("Error while writing index for `%s': "),
23362 objfile_name (objfile));
23363 }
23364 END_CATCH
9291a0cd
TT
23365 }
23366 }
dce234bc
PP
23367}
23368
9291a0cd
TT
23369\f
23370
b4f54984 23371int dwarf_always_disassemble;
9eae7c52
TT
23372
23373static void
b4f54984
DE
23374show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
23375 struct cmd_list_element *c, const char *value)
9eae7c52 23376{
3e43a32a
MS
23377 fprintf_filtered (file,
23378 _("Whether to always disassemble "
23379 "DWARF expressions is %s.\n"),
9eae7c52
TT
23380 value);
23381}
23382
900e11f9
JK
23383static void
23384show_check_physname (struct ui_file *file, int from_tty,
23385 struct cmd_list_element *c, const char *value)
23386{
23387 fprintf_filtered (file,
23388 _("Whether to check \"physname\" is %s.\n"),
23389 value);
23390}
23391
6502dd73
DJ
23392void _initialize_dwarf2_read (void);
23393
23394void
23395_initialize_dwarf2_read (void)
23396{
96d19272
JK
23397 struct cmd_list_element *c;
23398
dce234bc 23399 dwarf2_objfile_data_key
c1bd65d0 23400 = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
ae038cb0 23401
b4f54984
DE
23402 add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
23403Set DWARF specific variables.\n\
23404Configure DWARF variables such as the cache size"),
23405 &set_dwarf_cmdlist, "maintenance set dwarf ",
ae038cb0
DJ
23406 0/*allow-unknown*/, &maintenance_set_cmdlist);
23407
b4f54984
DE
23408 add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
23409Show DWARF specific variables\n\
23410Show DWARF variables such as the cache size"),
23411 &show_dwarf_cmdlist, "maintenance show dwarf ",
ae038cb0
DJ
23412 0/*allow-unknown*/, &maintenance_show_cmdlist);
23413
23414 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
b4f54984
DE
23415 &dwarf_max_cache_age, _("\
23416Set the upper bound on the age of cached DWARF compilation units."), _("\
23417Show the upper bound on the age of cached DWARF compilation units."), _("\
7915a72c
AC
23418A higher limit means that cached compilation units will be stored\n\
23419in memory longer, and more total memory will be used. Zero disables\n\
23420caching, which can slow down startup."),
2c5b56ce 23421 NULL,
b4f54984
DE
23422 show_dwarf_max_cache_age,
23423 &set_dwarf_cmdlist,
23424 &show_dwarf_cmdlist);
d97bc12b 23425
9eae7c52 23426 add_setshow_boolean_cmd ("always-disassemble", class_obscure,
b4f54984 23427 &dwarf_always_disassemble, _("\
9eae7c52
TT
23428Set whether `info address' always disassembles DWARF expressions."), _("\
23429Show whether `info address' always disassembles DWARF expressions."), _("\
23430When enabled, DWARF expressions are always printed in an assembly-like\n\
23431syntax. When disabled, expressions will be printed in a more\n\
23432conversational style, when possible."),
23433 NULL,
b4f54984
DE
23434 show_dwarf_always_disassemble,
23435 &set_dwarf_cmdlist,
23436 &show_dwarf_cmdlist);
23437
23438 add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
23439Set debugging of the DWARF reader."), _("\
23440Show debugging of the DWARF reader."), _("\
23441When enabled (non-zero), debugging messages are printed during DWARF\n\
73be47f5
DE
23442reading and symtab expansion. A value of 1 (one) provides basic\n\
23443information. A value greater than 1 provides more verbose information."),
45cfd468
DE
23444 NULL,
23445 NULL,
23446 &setdebuglist, &showdebuglist);
23447
b4f54984
DE
23448 add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
23449Set debugging of the DWARF DIE reader."), _("\
23450Show debugging of the DWARF DIE reader."), _("\
d97bc12b
DE
23451When enabled (non-zero), DIEs are dumped after they are read in.\n\
23452The value is the maximum depth to print."),
ccce17b0
YQ
23453 NULL,
23454 NULL,
23455 &setdebuglist, &showdebuglist);
9291a0cd 23456
27e0867f
DE
23457 add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
23458Set debugging of the dwarf line reader."), _("\
23459Show debugging of the dwarf line reader."), _("\
23460When enabled (non-zero), line number entries are dumped as they are read in.\n\
23461A value of 1 (one) provides basic information.\n\
23462A value greater than 1 provides more verbose information."),
23463 NULL,
23464 NULL,
23465 &setdebuglist, &showdebuglist);
23466
900e11f9
JK
23467 add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
23468Set cross-checking of \"physname\" code against demangler."), _("\
23469Show cross-checking of \"physname\" code against demangler."), _("\
23470When enabled, GDB's internal \"physname\" code is checked against\n\
23471the demangler."),
23472 NULL, show_check_physname,
23473 &setdebuglist, &showdebuglist);
23474
e615022a
DE
23475 add_setshow_boolean_cmd ("use-deprecated-index-sections",
23476 no_class, &use_deprecated_index_sections, _("\
23477Set whether to use deprecated gdb_index sections."), _("\
23478Show whether to use deprecated gdb_index sections."), _("\
23479When enabled, deprecated .gdb_index sections are used anyway.\n\
23480Normally they are ignored either because of a missing feature or\n\
23481performance issue.\n\
23482Warning: This option must be enabled before gdb reads the file."),
23483 NULL,
23484 NULL,
23485 &setlist, &showlist);
23486
96d19272 23487 c = add_cmd ("gdb-index", class_files, save_gdb_index_command,
11570e71 23488 _("\
fc1a9d6e 23489Save a gdb-index file.\n\
11570e71 23490Usage: save gdb-index DIRECTORY"),
96d19272
JK
23491 &save_cmdlist);
23492 set_cmd_completer (c, filename_completer);
f1e6e072
TT
23493
23494 dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
23495 &dwarf2_locexpr_funcs);
23496 dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
23497 &dwarf2_loclist_funcs);
23498
23499 dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
23500 &dwarf2_block_frame_base_locexpr_funcs);
23501 dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
23502 &dwarf2_block_frame_base_loclist_funcs);
6502dd73 23503}
This page took 3.476674 seconds and 4 git commands to generate.