gdb/
[deliverable/binutils-gdb.git] / gdb / dwarf2read.c
CommitLineData
c906108c 1/* DWARF 2 debugging format support for GDB.
917c78fc 2
6aba47ca 3 Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
0fb0cc75
JB
4 2004, 2005, 2006, 2007, 2008, 2009
5 Free Software Foundation, Inc.
c906108c
SS
6
7 Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
8 Inc. with support from Florida State University (under contract
9 with the Ada Joint Program Office), and Silicon Graphics, Inc.
10 Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
11 based on Fred Fish's (Cygnus Support) implementation of DWARF 1
7ce59000 12 support.
c906108c 13
c5aa993b 14 This file is part of GDB.
c906108c 15
c5aa993b
JM
16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by
a9762ec7
JB
18 the Free Software Foundation; either version 3 of the License, or
19 (at your option) any later version.
c906108c 20
a9762ec7
JB
21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 GNU General Public License for more details.
c906108c 25
c5aa993b 26 You should have received a copy of the GNU General Public License
a9762ec7 27 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
28
29#include "defs.h"
30#include "bfd.h"
c906108c
SS
31#include "symtab.h"
32#include "gdbtypes.h"
c906108c
SS
33#include "objfiles.h"
34#include "elf/dwarf2.h"
35#include "buildsym.h"
36#include "demangle.h"
37#include "expression.h"
d5166ae1 38#include "filenames.h" /* for DOSish file names */
2e276125 39#include "macrotab.h"
c906108c
SS
40#include "language.h"
41#include "complaints.h"
357e46e7 42#include "bcache.h"
4c2df51b
DJ
43#include "dwarf2expr.h"
44#include "dwarf2loc.h"
9219021c 45#include "cp-support.h"
72bf9492 46#include "hashtab.h"
ae038cb0
DJ
47#include "command.h"
48#include "gdbcmd.h"
edb3359d 49#include "block.h"
ff013f42 50#include "addrmap.h"
4c2df51b 51
c906108c
SS
52#include <fcntl.h>
53#include "gdb_string.h"
4bdf3d34 54#include "gdb_assert.h"
c906108c 55#include <sys/types.h>
233a11ab
CS
56#ifdef HAVE_ZLIB_H
57#include <zlib.h>
58#endif
dce234bc
PP
59#ifdef HAVE_MMAP
60#include <sys/mman.h>
61#endif
d8151005 62
107d2387 63#if 0
357e46e7 64/* .debug_info header for a compilation unit
c906108c
SS
65 Because of alignment constraints, this structure has padding and cannot
66 be mapped directly onto the beginning of the .debug_info section. */
67typedef struct comp_unit_header
68 {
69 unsigned int length; /* length of the .debug_info
70 contribution */
71 unsigned short version; /* version number -- 2 for DWARF
72 version 2 */
73 unsigned int abbrev_offset; /* offset into .debug_abbrev section */
74 unsigned char addr_size; /* byte size of an address -- 4 */
75 }
76_COMP_UNIT_HEADER;
77#define _ACTUAL_COMP_UNIT_HEADER_SIZE 11
107d2387 78#endif
c906108c
SS
79
80/* .debug_pubnames header
81 Because of alignment constraints, this structure has padding and cannot
82 be mapped directly onto the beginning of the .debug_info section. */
83typedef struct pubnames_header
84 {
85 unsigned int length; /* length of the .debug_pubnames
86 contribution */
87 unsigned char version; /* version number -- 2 for DWARF
88 version 2 */
89 unsigned int info_offset; /* offset into .debug_info section */
90 unsigned int info_size; /* byte size of .debug_info section
91 portion */
92 }
93_PUBNAMES_HEADER;
94#define _ACTUAL_PUBNAMES_HEADER_SIZE 13
95
96/* .debug_pubnames header
97 Because of alignment constraints, this structure has padding and cannot
98 be mapped directly onto the beginning of the .debug_info section. */
99typedef struct aranges_header
100 {
101 unsigned int length; /* byte len of the .debug_aranges
102 contribution */
103 unsigned short version; /* version number -- 2 for DWARF
104 version 2 */
105 unsigned int info_offset; /* offset into .debug_info section */
106 unsigned char addr_size; /* byte size of an address */
107 unsigned char seg_size; /* byte size of segment descriptor */
108 }
109_ARANGES_HEADER;
110#define _ACTUAL_ARANGES_HEADER_SIZE 12
111
112/* .debug_line statement program prologue
113 Because of alignment constraints, this structure has padding and cannot
114 be mapped directly onto the beginning of the .debug_info section. */
115typedef struct statement_prologue
116 {
117 unsigned int total_length; /* byte length of the statement
118 information */
119 unsigned short version; /* version number -- 2 for DWARF
120 version 2 */
121 unsigned int prologue_length; /* # bytes between prologue &
122 stmt program */
123 unsigned char minimum_instruction_length; /* byte size of
124 smallest instr */
125 unsigned char default_is_stmt; /* initial value of is_stmt
126 register */
127 char line_base;
128 unsigned char line_range;
129 unsigned char opcode_base; /* number assigned to first special
130 opcode */
131 unsigned char *standard_opcode_lengths;
132 }
133_STATEMENT_PROLOGUE;
134
d97bc12b
DE
135/* When non-zero, dump DIEs after they are read in. */
136static int dwarf2_die_debug = 0;
137
dce234bc
PP
138static int pagesize;
139
df8a16a1
DJ
140/* When set, the file that we're processing is known to have debugging
141 info for C++ namespaces. GCC 3.3.x did not produce this information,
142 but later versions do. */
143
144static int processing_has_namespace_info;
145
6502dd73
DJ
146static const struct objfile_data *dwarf2_objfile_data_key;
147
dce234bc
PP
148struct dwarf2_section_info
149{
150 asection *asection;
151 gdb_byte *buffer;
152 bfd_size_type size;
153 int was_mmapped;
154};
155
6502dd73
DJ
156struct dwarf2_per_objfile
157{
dce234bc
PP
158 struct dwarf2_section_info info;
159 struct dwarf2_section_info abbrev;
160 struct dwarf2_section_info line;
161 struct dwarf2_section_info pubnames;
162 struct dwarf2_section_info aranges;
163 struct dwarf2_section_info loc;
164 struct dwarf2_section_info macinfo;
165 struct dwarf2_section_info str;
166 struct dwarf2_section_info ranges;
167 struct dwarf2_section_info frame;
168 struct dwarf2_section_info eh_frame;
ae038cb0 169
10b3939b
DJ
170 /* A list of all the compilation units. This is used to locate
171 the target compilation unit of a particular reference. */
ae038cb0
DJ
172 struct dwarf2_per_cu_data **all_comp_units;
173
174 /* The number of compilation units in ALL_COMP_UNITS. */
175 int n_comp_units;
176
177 /* A chain of compilation units that are currently read in, so that
178 they can be freed later. */
179 struct dwarf2_per_cu_data *read_in_chain;
72dca2f5
FR
180
181 /* A flag indicating wether this objfile has a section loaded at a
182 VMA of 0. */
183 int has_section_at_zero;
6502dd73
DJ
184};
185
186static struct dwarf2_per_objfile *dwarf2_per_objfile;
c906108c
SS
187
188/* names of the debugging sections */
189
233a11ab
CS
190/* Note that if the debugging section has been compressed, it might
191 have a name like .zdebug_info. */
192
193#define INFO_SECTION "debug_info"
194#define ABBREV_SECTION "debug_abbrev"
195#define LINE_SECTION "debug_line"
196#define PUBNAMES_SECTION "debug_pubnames"
197#define ARANGES_SECTION "debug_aranges"
198#define LOC_SECTION "debug_loc"
199#define MACINFO_SECTION "debug_macinfo"
200#define STR_SECTION "debug_str"
201#define RANGES_SECTION "debug_ranges"
202#define FRAME_SECTION "debug_frame"
203#define EH_FRAME_SECTION "eh_frame"
c906108c
SS
204
205/* local data types */
206
57349743
JB
207/* We hold several abbreviation tables in memory at the same time. */
208#ifndef ABBREV_HASH_SIZE
209#define ABBREV_HASH_SIZE 121
210#endif
211
107d2387
AC
212/* The data in a compilation unit header, after target2host
213 translation, looks like this. */
c906108c 214struct comp_unit_head
a738430d 215{
c764a876 216 unsigned int length;
a738430d 217 short version;
a738430d
MK
218 unsigned char addr_size;
219 unsigned char signed_addr_p;
9cbfa09e 220 unsigned int abbrev_offset;
57349743 221
a738430d
MK
222 /* Size of file offsets; either 4 or 8. */
223 unsigned int offset_size;
57349743 224
a738430d
MK
225 /* Size of the length field; either 4 or 12. */
226 unsigned int initial_length_size;
57349743 227
a738430d
MK
228 /* Offset to the first byte of this compilation unit header in the
229 .debug_info section, for resolving relative reference dies. */
230 unsigned int offset;
57349743 231
d00adf39
DE
232 /* Offset to first die in this cu from the start of the cu.
233 This will be the first byte following the compilation unit header. */
234 unsigned int first_die_offset;
a738430d 235};
c906108c 236
e7c27a73
DJ
237/* Internal state when decoding a particular compilation unit. */
238struct dwarf2_cu
239{
240 /* The objfile containing this compilation unit. */
241 struct objfile *objfile;
242
d00adf39 243 /* The header of the compilation unit. */
e7c27a73 244 struct comp_unit_head header;
e142c38c 245
d00adf39
DE
246 /* Base address of this compilation unit. */
247 CORE_ADDR base_address;
248
249 /* Non-zero if base_address has been set. */
250 int base_known;
251
e142c38c
DJ
252 struct function_range *first_fn, *last_fn, *cached_fn;
253
254 /* The language we are debugging. */
255 enum language language;
256 const struct language_defn *language_defn;
257
b0f35d58
DL
258 const char *producer;
259
e142c38c
DJ
260 /* The generic symbol table building routines have separate lists for
261 file scope symbols and all all other scopes (local scopes). So
262 we need to select the right one to pass to add_symbol_to_list().
263 We do it by keeping a pointer to the correct list in list_in_scope.
264
265 FIXME: The original dwarf code just treated the file scope as the
266 first local scope, and all other local scopes as nested local
267 scopes, and worked fine. Check to see if we really need to
268 distinguish these in buildsym.c. */
269 struct pending **list_in_scope;
270
f3dd6933
DJ
271 /* DWARF abbreviation table associated with this compilation unit. */
272 struct abbrev_info **dwarf2_abbrevs;
273
274 /* Storage for the abbrev table. */
275 struct obstack abbrev_obstack;
72bf9492
DJ
276
277 /* Hash table holding all the loaded partial DIEs. */
278 htab_t partial_dies;
279
ff013f42 280 /* `.debug_ranges' offset for this `DW_TAG_compile_unit' DIE. */
c764a876 281 unsigned int ranges_offset;
ff013f42 282
72bf9492
DJ
283 /* Storage for things with the same lifetime as this read-in compilation
284 unit, including partial DIEs. */
285 struct obstack comp_unit_obstack;
286
ae038cb0
DJ
287 /* When multiple dwarf2_cu structures are living in memory, this field
288 chains them all together, so that they can be released efficiently.
289 We will probably also want a generation counter so that most-recently-used
290 compilation units are cached... */
291 struct dwarf2_per_cu_data *read_in_chain;
292
293 /* Backchain to our per_cu entry if the tree has been built. */
294 struct dwarf2_per_cu_data *per_cu;
295
f792889a
DJ
296 /* Pointer to the die -> type map. Although it is stored
297 permanently in per_cu, we copy it here to avoid double
298 indirection. */
299 htab_t type_hash;
300
ae038cb0
DJ
301 /* How many compilation units ago was this CU last referenced? */
302 int last_used;
303
10b3939b 304 /* A hash table of die offsets for following references. */
51545339 305 htab_t die_hash;
10b3939b
DJ
306
307 /* Full DIEs if read in. */
308 struct die_info *dies;
309
310 /* A set of pointers to dwarf2_per_cu_data objects for compilation
311 units referenced by this one. Only set during full symbol processing;
312 partial symbol tables do not have dependencies. */
313 htab_t dependencies;
314
cb1df416
DJ
315 /* Header data from the line table, during full symbol processing. */
316 struct line_header *line_header;
317
ae038cb0
DJ
318 /* Mark used when releasing cached dies. */
319 unsigned int mark : 1;
320
321 /* This flag will be set if this compilation unit might include
322 inter-compilation-unit references. */
323 unsigned int has_form_ref_addr : 1;
324
72bf9492
DJ
325 /* This flag will be set if this compilation unit includes any
326 DW_TAG_namespace DIEs. If we know that there are explicit
327 DIEs for namespaces, we don't need to try to infer them
328 from mangled names. */
329 unsigned int has_namespace_info : 1;
ff013f42
JK
330
331 /* Field `ranges_offset' is filled in; flag as the value may be zero. */
332 unsigned int has_ranges_offset : 1;
e7c27a73
DJ
333};
334
10b3939b
DJ
335/* Persistent data held for a compilation unit, even when not
336 processing it. We put a pointer to this structure in the
337 read_symtab_private field of the psymtab. If we encounter
338 inter-compilation-unit references, we also maintain a sorted
339 list of all compilation units. */
340
ae038cb0
DJ
341struct dwarf2_per_cu_data
342{
5afb4e99 343 /* The start offset and length of this compilation unit. 2**30-1
ae038cb0 344 bytes should suffice to store the length of any compilation unit
45452591
DE
345 - if it doesn't, GDB will fall over anyway.
346 NOTE: Unlike comp_unit_head.length, this length includes
347 initial_length_size. */
c764a876
DE
348 unsigned int offset;
349 unsigned int length : 30;
ae038cb0
DJ
350
351 /* Flag indicating this compilation unit will be read in before
352 any of the current compilation units are processed. */
c764a876 353 unsigned int queued : 1;
ae038cb0 354
5afb4e99
DJ
355 /* This flag will be set if we need to load absolutely all DIEs
356 for this compilation unit, instead of just the ones we think
357 are interesting. It gets set if we look for a DIE in the
358 hash table and don't find it. */
359 unsigned int load_all_dies : 1;
360
ae038cb0
DJ
361 /* Set iff currently read in. */
362 struct dwarf2_cu *cu;
1c379e20
DJ
363
364 /* If full symbols for this CU have been read in, then this field
365 holds a map of DIE offsets to types. It isn't always possible
366 to reconstruct this information later, so we have to preserve
367 it. */
1c379e20 368 htab_t type_hash;
10b3939b 369
31ffec48
DJ
370 /* The partial symbol table associated with this compilation unit,
371 or NULL for partial units (which do not have an associated
372 symtab). */
10b3939b 373 struct partial_symtab *psymtab;
ae038cb0
DJ
374};
375
debd256d
JB
376/* The line number information for a compilation unit (found in the
377 .debug_line section) begins with a "statement program header",
378 which contains the following information. */
379struct line_header
380{
381 unsigned int total_length;
382 unsigned short version;
383 unsigned int header_length;
384 unsigned char minimum_instruction_length;
385 unsigned char default_is_stmt;
386 int line_base;
387 unsigned char line_range;
388 unsigned char opcode_base;
389
390 /* standard_opcode_lengths[i] is the number of operands for the
391 standard opcode whose value is i. This means that
392 standard_opcode_lengths[0] is unused, and the last meaningful
393 element is standard_opcode_lengths[opcode_base - 1]. */
394 unsigned char *standard_opcode_lengths;
395
396 /* The include_directories table. NOTE! These strings are not
397 allocated with xmalloc; instead, they are pointers into
398 debug_line_buffer. If you try to free them, `free' will get
399 indigestion. */
400 unsigned int num_include_dirs, include_dirs_size;
401 char **include_dirs;
402
403 /* The file_names table. NOTE! These strings are not allocated
404 with xmalloc; instead, they are pointers into debug_line_buffer.
405 Don't try to free them directly. */
406 unsigned int num_file_names, file_names_size;
407 struct file_entry
c906108c 408 {
debd256d
JB
409 char *name;
410 unsigned int dir_index;
411 unsigned int mod_time;
412 unsigned int length;
aaa75496 413 int included_p; /* Non-zero if referenced by the Line Number Program. */
cb1df416 414 struct symtab *symtab; /* The associated symbol table, if any. */
debd256d
JB
415 } *file_names;
416
417 /* The start and end of the statement program following this
6502dd73 418 header. These point into dwarf2_per_objfile->line_buffer. */
fe1b8b76 419 gdb_byte *statement_program_start, *statement_program_end;
debd256d 420};
c906108c
SS
421
422/* When we construct a partial symbol table entry we only
423 need this much information. */
424struct partial_die_info
425 {
72bf9492 426 /* Offset of this DIE. */
c906108c 427 unsigned int offset;
72bf9492
DJ
428
429 /* DWARF-2 tag for this DIE. */
430 ENUM_BITFIELD(dwarf_tag) tag : 16;
431
432 /* Language code associated with this DIE. This is only used
433 for the compilation unit DIE. */
434 unsigned int language : 8;
435
436 /* Assorted flags describing the data found in this DIE. */
437 unsigned int has_children : 1;
438 unsigned int is_external : 1;
439 unsigned int is_declaration : 1;
440 unsigned int has_type : 1;
441 unsigned int has_specification : 1;
aaa75496 442 unsigned int has_stmt_list : 1;
72bf9492
DJ
443 unsigned int has_pc_info : 1;
444
445 /* Flag set if the SCOPE field of this structure has been
446 computed. */
447 unsigned int scope_set : 1;
448
fa4028e9
JB
449 /* Flag set if the DIE has a byte_size attribute. */
450 unsigned int has_byte_size : 1;
451
72bf9492
DJ
452 /* The name of this DIE. Normally the value of DW_AT_name, but
453 sometimes DW_TAG_MIPS_linkage_name or a string computed in some
454 other fashion. */
c906108c 455 char *name;
57c22c6c 456 char *dirname;
72bf9492
DJ
457
458 /* The scope to prepend to our children. This is generally
459 allocated on the comp_unit_obstack, so will disappear
460 when this compilation unit leaves the cache. */
461 char *scope;
462
463 /* The location description associated with this DIE, if any. */
464 struct dwarf_block *locdesc;
465
466 /* If HAS_PC_INFO, the PC range associated with this DIE. */
c906108c
SS
467 CORE_ADDR lowpc;
468 CORE_ADDR highpc;
72bf9492
DJ
469
470 /* Pointer into the info_buffer pointing at the target of
471 DW_AT_sibling, if any. */
fe1b8b76 472 gdb_byte *sibling;
72bf9492
DJ
473
474 /* If HAS_SPECIFICATION, the offset of the DIE referred to by
475 DW_AT_specification (or DW_AT_abstract_origin or
476 DW_AT_extension). */
477 unsigned int spec_offset;
478
aaa75496
JB
479 /* If HAS_STMT_LIST, the offset of the Line Number Information data. */
480 unsigned int line_offset;
481
72bf9492
DJ
482 /* Pointers to this DIE's parent, first child, and next sibling,
483 if any. */
484 struct partial_die_info *die_parent, *die_child, *die_sibling;
c906108c
SS
485 };
486
487/* This data structure holds the information of an abbrev. */
488struct abbrev_info
489 {
490 unsigned int number; /* number identifying abbrev */
491 enum dwarf_tag tag; /* dwarf tag */
f3dd6933
DJ
492 unsigned short has_children; /* boolean */
493 unsigned short num_attrs; /* number of attributes */
c906108c
SS
494 struct attr_abbrev *attrs; /* an array of attribute descriptions */
495 struct abbrev_info *next; /* next in chain */
496 };
497
498struct attr_abbrev
499 {
9d25dd43
DE
500 ENUM_BITFIELD(dwarf_attribute) name : 16;
501 ENUM_BITFIELD(dwarf_form) form : 16;
c906108c
SS
502 };
503
71c25dea
TT
504/* Additional GDB-specific attribute forms. */
505enum
506 {
507 /* A string which has been updated to GDB's internal
508 representation (e.g. converted to canonical form) and does not
509 need to be updated again. */
510 GDB_FORM_cached_string = 0xff
511 };
512
b60c80d6
DJ
513/* Attributes have a name and a value */
514struct attribute
515 {
9d25dd43
DE
516 ENUM_BITFIELD(dwarf_attribute) name : 16;
517 ENUM_BITFIELD(dwarf_form) form : 16;
b60c80d6
DJ
518 union
519 {
520 char *str;
521 struct dwarf_block *blk;
522 unsigned long unsnd;
523 long int snd;
524 CORE_ADDR addr;
525 }
526 u;
527 };
528
c906108c
SS
529/* This data structure holds a complete die structure. */
530struct die_info
531 {
76815b17
DE
532 /* DWARF-2 tag for this DIE. */
533 ENUM_BITFIELD(dwarf_tag) tag : 16;
534
535 /* Number of attributes */
536 unsigned short num_attrs;
537
538 /* Abbrev number */
539 unsigned int abbrev;
540
541 /* Offset in .debug_info section */
542 unsigned int offset;
78ba4af6
JB
543
544 /* The dies in a compilation unit form an n-ary tree. PARENT
545 points to this die's parent; CHILD points to the first child of
546 this node; and all the children of a given node are chained
547 together via their SIBLING fields, terminated by a die whose
548 tag is zero. */
639d11d3
DC
549 struct die_info *child; /* Its first child, if any. */
550 struct die_info *sibling; /* Its next sibling, if any. */
551 struct die_info *parent; /* Its parent, if any. */
c906108c 552
b60c80d6
DJ
553 /* An array of attributes, with NUM_ATTRS elements. There may be
554 zero, but it's not common and zero-sized arrays are not
555 sufficiently portable C. */
556 struct attribute attrs[1];
c906108c
SS
557 };
558
5fb290d7
DJ
559struct function_range
560{
561 const char *name;
562 CORE_ADDR lowpc, highpc;
563 int seen_line;
564 struct function_range *next;
565};
566
c906108c
SS
567/* Get at parts of an attribute structure */
568
569#define DW_STRING(attr) ((attr)->u.str)
570#define DW_UNSND(attr) ((attr)->u.unsnd)
571#define DW_BLOCK(attr) ((attr)->u.blk)
572#define DW_SND(attr) ((attr)->u.snd)
573#define DW_ADDR(attr) ((attr)->u.addr)
574
575/* Blocks are a bunch of untyped bytes. */
576struct dwarf_block
577 {
578 unsigned int size;
fe1b8b76 579 gdb_byte *data;
c906108c
SS
580 };
581
c906108c
SS
582#ifndef ATTR_ALLOC_CHUNK
583#define ATTR_ALLOC_CHUNK 4
584#endif
585
c906108c
SS
586/* Allocate fields for structs, unions and enums in this size. */
587#ifndef DW_FIELD_ALLOC_CHUNK
588#define DW_FIELD_ALLOC_CHUNK 4
589#endif
590
c906108c
SS
591/* A zeroed version of a partial die for initialization purposes. */
592static struct partial_die_info zeroed_partial_die;
593
c906108c
SS
594/* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
595 but this would require a corresponding change in unpack_field_as_long
596 and friends. */
597static int bits_per_byte = 8;
598
599/* The routines that read and process dies for a C struct or C++ class
600 pass lists of data member fields and lists of member function fields
601 in an instance of a field_info structure, as defined below. */
602struct field_info
c5aa993b
JM
603 {
604 /* List of data member and baseclasses fields. */
605 struct nextfield
606 {
607 struct nextfield *next;
608 int accessibility;
609 int virtuality;
610 struct field field;
611 }
612 *fields;
c906108c 613
c5aa993b
JM
614 /* Number of fields. */
615 int nfields;
c906108c 616
c5aa993b
JM
617 /* Number of baseclasses. */
618 int nbaseclasses;
c906108c 619
c5aa993b
JM
620 /* Set if the accesibility of one of the fields is not public. */
621 int non_public_fields;
c906108c 622
c5aa993b
JM
623 /* Member function fields array, entries are allocated in the order they
624 are encountered in the object file. */
625 struct nextfnfield
626 {
627 struct nextfnfield *next;
628 struct fn_field fnfield;
629 }
630 *fnfields;
c906108c 631
c5aa993b
JM
632 /* Member function fieldlist array, contains name of possibly overloaded
633 member function, number of overloaded member functions and a pointer
634 to the head of the member function field chain. */
635 struct fnfieldlist
636 {
637 char *name;
638 int length;
639 struct nextfnfield *head;
640 }
641 *fnfieldlists;
c906108c 642
c5aa993b
JM
643 /* Number of entries in the fnfieldlists array. */
644 int nfnfields;
645 };
c906108c 646
10b3939b
DJ
647/* One item on the queue of compilation units to read in full symbols
648 for. */
649struct dwarf2_queue_item
650{
651 struct dwarf2_per_cu_data *per_cu;
652 struct dwarf2_queue_item *next;
653};
654
655/* The current queue. */
656static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
657
ae038cb0
DJ
658/* Loaded secondary compilation units are kept in memory until they
659 have not been referenced for the processing of this many
660 compilation units. Set this to zero to disable caching. Cache
661 sizes of up to at least twenty will improve startup time for
662 typical inter-CU-reference binaries, at an obvious memory cost. */
663static int dwarf2_max_cache_age = 5;
920d2a44
AC
664static void
665show_dwarf2_max_cache_age (struct ui_file *file, int from_tty,
666 struct cmd_list_element *c, const char *value)
667{
668 fprintf_filtered (file, _("\
669The upper bound on the age of cached dwarf2 compilation units is %s.\n"),
670 value);
671}
672
ae038cb0 673
c906108c
SS
674/* Various complaints about symbol reading that don't abort the process */
675
4d3c2250
KB
676static void
677dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2e276125 678{
4d3c2250 679 complaint (&symfile_complaints,
e2e0b3e5 680 _("statement list doesn't fit in .debug_line section"));
4d3c2250
KB
681}
682
25e43795
DJ
683static void
684dwarf2_debug_line_missing_file_complaint (void)
685{
686 complaint (&symfile_complaints,
687 _(".debug_line section has line data without a file"));
688}
689
59205f5a
JB
690static void
691dwarf2_debug_line_missing_end_sequence_complaint (void)
692{
693 complaint (&symfile_complaints,
694 _(".debug_line section has line program sequence without an end"));
695}
696
4d3c2250
KB
697static void
698dwarf2_complex_location_expr_complaint (void)
2e276125 699{
e2e0b3e5 700 complaint (&symfile_complaints, _("location expression too complex"));
4d3c2250
KB
701}
702
4d3c2250
KB
703static void
704dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
705 int arg3)
2e276125 706{
4d3c2250 707 complaint (&symfile_complaints,
e2e0b3e5 708 _("const value length mismatch for '%s', got %d, expected %d"), arg1,
4d3c2250
KB
709 arg2, arg3);
710}
711
712static void
713dwarf2_macros_too_long_complaint (void)
2e276125 714{
4d3c2250 715 complaint (&symfile_complaints,
e2e0b3e5 716 _("macro info runs off end of `.debug_macinfo' section"));
4d3c2250
KB
717}
718
719static void
720dwarf2_macro_malformed_definition_complaint (const char *arg1)
8e19ed76 721{
4d3c2250 722 complaint (&symfile_complaints,
e2e0b3e5 723 _("macro debug info contains a malformed macro definition:\n`%s'"),
4d3c2250
KB
724 arg1);
725}
726
727static void
728dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
8b2dbe47 729{
4d3c2250 730 complaint (&symfile_complaints,
e2e0b3e5 731 _("invalid attribute class or form for '%s' in '%s'"), arg1, arg2);
4d3c2250 732}
c906108c 733
c906108c
SS
734/* local function prototypes */
735
4efb68b1 736static void dwarf2_locate_sections (bfd *, asection *, void *);
c906108c
SS
737
738#if 0
a14ed312 739static void dwarf2_build_psymtabs_easy (struct objfile *, int);
c906108c
SS
740#endif
741
aaa75496
JB
742static void dwarf2_create_include_psymtab (char *, struct partial_symtab *,
743 struct objfile *);
744
745static void dwarf2_build_include_psymtabs (struct dwarf2_cu *,
746 struct partial_die_info *,
747 struct partial_symtab *);
748
a14ed312 749static void dwarf2_build_psymtabs_hard (struct objfile *, int);
c906108c 750
72bf9492
DJ
751static void scan_partial_symbols (struct partial_die_info *,
752 CORE_ADDR *, CORE_ADDR *,
5734ee8b 753 int, struct dwarf2_cu *);
c906108c 754
72bf9492
DJ
755static void add_partial_symbol (struct partial_die_info *,
756 struct dwarf2_cu *);
63d06c5c 757
72bf9492 758static int pdi_needs_namespace (enum dwarf_tag tag);
91c24f0a 759
72bf9492
DJ
760static void add_partial_namespace (struct partial_die_info *pdi,
761 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 762 int need_pc, struct dwarf2_cu *cu);
63d06c5c 763
5d7cb8df
JK
764static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
765 CORE_ADDR *highpc, int need_pc,
766 struct dwarf2_cu *cu);
767
72bf9492
DJ
768static void add_partial_enumeration (struct partial_die_info *enum_pdi,
769 struct dwarf2_cu *cu);
91c24f0a 770
bc30ff58
JB
771static void add_partial_subprogram (struct partial_die_info *pdi,
772 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 773 int need_pc, struct dwarf2_cu *cu);
bc30ff58 774
fe1b8b76
JB
775static gdb_byte *locate_pdi_sibling (struct partial_die_info *orig_pdi,
776 gdb_byte *info_ptr,
777 bfd *abfd,
778 struct dwarf2_cu *cu);
91c24f0a 779
a14ed312 780static void dwarf2_psymtab_to_symtab (struct partial_symtab *);
c906108c 781
a14ed312 782static void psymtab_to_symtab_1 (struct partial_symtab *);
c906108c 783
e7c27a73 784static void dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu);
c906108c 785
f3dd6933 786static void dwarf2_free_abbrev_table (void *);
c906108c 787
fe1b8b76 788static struct abbrev_info *peek_die_abbrev (gdb_byte *, unsigned int *,
891d2f0b 789 struct dwarf2_cu *);
72bf9492 790
57349743 791static struct abbrev_info *dwarf2_lookup_abbrev (unsigned int,
e7c27a73 792 struct dwarf2_cu *);
c906108c 793
fe1b8b76 794static struct partial_die_info *load_partial_dies (bfd *, gdb_byte *, int,
72bf9492
DJ
795 struct dwarf2_cu *);
796
fe1b8b76
JB
797static gdb_byte *read_partial_die (struct partial_die_info *,
798 struct abbrev_info *abbrev, unsigned int,
799 bfd *, gdb_byte *, struct dwarf2_cu *);
c906108c 800
c764a876 801static struct partial_die_info *find_partial_die (unsigned int,
10b3939b 802 struct dwarf2_cu *);
72bf9492
DJ
803
804static void fixup_partial_die (struct partial_die_info *,
805 struct dwarf2_cu *);
806
fe1b8b76
JB
807static gdb_byte *read_full_die (struct die_info **, bfd *, gdb_byte *,
808 struct dwarf2_cu *, int *);
c906108c 809
fe1b8b76
JB
810static gdb_byte *read_attribute (struct attribute *, struct attr_abbrev *,
811 bfd *, gdb_byte *, struct dwarf2_cu *);
c906108c 812
fe1b8b76
JB
813static gdb_byte *read_attribute_value (struct attribute *, unsigned,
814 bfd *, gdb_byte *, struct dwarf2_cu *);
a8329558 815
fe1b8b76 816static unsigned int read_1_byte (bfd *, gdb_byte *);
c906108c 817
fe1b8b76 818static int read_1_signed_byte (bfd *, gdb_byte *);
c906108c 819
fe1b8b76 820static unsigned int read_2_bytes (bfd *, gdb_byte *);
c906108c 821
fe1b8b76 822static unsigned int read_4_bytes (bfd *, gdb_byte *);
c906108c 823
fe1b8b76 824static unsigned long read_8_bytes (bfd *, gdb_byte *);
c906108c 825
fe1b8b76 826static CORE_ADDR read_address (bfd *, gdb_byte *ptr, struct dwarf2_cu *,
891d2f0b 827 unsigned int *);
c906108c 828
c764a876
DE
829static LONGEST read_initial_length (bfd *, gdb_byte *, unsigned int *);
830
831static LONGEST read_checked_initial_length_and_offset
832 (bfd *, gdb_byte *, const struct comp_unit_head *,
833 unsigned int *, unsigned int *);
613e1657 834
fe1b8b76 835static LONGEST read_offset (bfd *, gdb_byte *, const struct comp_unit_head *,
c764a876
DE
836 unsigned int *);
837
838static LONGEST read_offset_1 (bfd *, gdb_byte *, unsigned int);
613e1657 839
fe1b8b76 840static gdb_byte *read_n_bytes (bfd *, gdb_byte *, unsigned int);
c906108c 841
fe1b8b76 842static char *read_string (bfd *, gdb_byte *, unsigned int *);
c906108c 843
fe1b8b76
JB
844static char *read_indirect_string (bfd *, gdb_byte *,
845 const struct comp_unit_head *,
846 unsigned int *);
4bdf3d34 847
fe1b8b76 848static unsigned long read_unsigned_leb128 (bfd *, gdb_byte *, unsigned int *);
c906108c 849
fe1b8b76 850static long read_signed_leb128 (bfd *, gdb_byte *, unsigned int *);
c906108c 851
fe1b8b76 852static gdb_byte *skip_leb128 (bfd *, gdb_byte *);
4bb7a0a7 853
e142c38c 854static void set_cu_language (unsigned int, struct dwarf2_cu *);
c906108c 855
e142c38c
DJ
856static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
857 struct dwarf2_cu *);
c906108c 858
05cf31d1
JB
859static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
860 struct dwarf2_cu *cu);
861
e142c38c 862static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
3ca72b44 863
e142c38c 864static struct die_info *die_specification (struct die_info *die,
f2f0e013 865 struct dwarf2_cu **);
63d06c5c 866
debd256d
JB
867static void free_line_header (struct line_header *lh);
868
aaa75496
JB
869static void add_file_name (struct line_header *, char *, unsigned int,
870 unsigned int, unsigned int);
871
debd256d
JB
872static struct line_header *(dwarf_decode_line_header
873 (unsigned int offset,
e7c27a73 874 bfd *abfd, struct dwarf2_cu *cu));
debd256d
JB
875
876static void dwarf_decode_lines (struct line_header *, char *, bfd *,
aaa75496 877 struct dwarf2_cu *, struct partial_symtab *);
c906108c 878
4f1520fb 879static void dwarf2_start_subfile (char *, char *, char *);
c906108c 880
a14ed312 881static struct symbol *new_symbol (struct die_info *, struct type *,
e7c27a73 882 struct dwarf2_cu *);
c906108c 883
a14ed312 884static void dwarf2_const_value (struct attribute *, struct symbol *,
e7c27a73 885 struct dwarf2_cu *);
c906108c 886
2df3850c
JM
887static void dwarf2_const_value_data (struct attribute *attr,
888 struct symbol *sym,
889 int bits);
890
e7c27a73 891static struct type *die_type (struct die_info *, struct dwarf2_cu *);
c906108c 892
e7c27a73
DJ
893static struct type *die_containing_type (struct die_info *,
894 struct dwarf2_cu *);
c906108c 895
e7c27a73 896static struct type *tag_type_to_type (struct die_info *, struct dwarf2_cu *);
c906108c 897
f792889a 898static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
c906108c 899
086ed43d 900static char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
63d06c5c 901
fe1b8b76
JB
902static char *typename_concat (struct obstack *,
903 const char *prefix,
904 const char *suffix,
987504bb 905 struct dwarf2_cu *);
63d06c5c 906
e7c27a73 907static void read_file_scope (struct die_info *, struct dwarf2_cu *);
c906108c 908
e7c27a73 909static void read_func_scope (struct die_info *, struct dwarf2_cu *);
c906108c 910
e7c27a73 911static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
c906108c 912
ff013f42
JK
913static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
914 struct dwarf2_cu *, struct partial_symtab *);
915
a14ed312 916static int dwarf2_get_pc_bounds (struct die_info *,
e7c27a73 917 CORE_ADDR *, CORE_ADDR *, struct dwarf2_cu *);
c906108c 918
fae299cd
DC
919static void get_scope_pc_bounds (struct die_info *,
920 CORE_ADDR *, CORE_ADDR *,
921 struct dwarf2_cu *);
922
801e3a5b
JB
923static void dwarf2_record_block_ranges (struct die_info *, struct block *,
924 CORE_ADDR, struct dwarf2_cu *);
925
a14ed312 926static void dwarf2_add_field (struct field_info *, struct die_info *,
e7c27a73 927 struct dwarf2_cu *);
c906108c 928
a14ed312 929static void dwarf2_attach_fields_to_type (struct field_info *,
e7c27a73 930 struct type *, struct dwarf2_cu *);
c906108c 931
a14ed312 932static void dwarf2_add_member_fn (struct field_info *,
e26fb1d7 933 struct die_info *, struct type *,
e7c27a73 934 struct dwarf2_cu *);
c906108c 935
a14ed312 936static void dwarf2_attach_fn_fields_to_type (struct field_info *,
e7c27a73 937 struct type *, struct dwarf2_cu *);
c906108c 938
134d01f1 939static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
c906108c 940
0114d602
DJ
941static const char *determine_class_name (struct die_info *die,
942 struct dwarf2_cu *cu);
8176b9b8 943
e7c27a73 944static void read_common_block (struct die_info *, struct dwarf2_cu *);
c906108c 945
e7c27a73 946static void read_namespace (struct die_info *die, struct dwarf2_cu *);
d9fa45fe 947
5d7cb8df
JK
948static void read_module (struct die_info *die, struct dwarf2_cu *cu);
949
27aa8d6a
SW
950static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
951
38d518c9 952static const char *namespace_name (struct die_info *die,
e142c38c 953 int *is_anonymous, struct dwarf2_cu *);
38d518c9 954
134d01f1 955static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
c906108c 956
e7c27a73 957static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
c906108c 958
7ca2d3a3
DL
959static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
960 struct dwarf2_cu *);
961
fe1b8b76 962static struct die_info *read_comp_unit (gdb_byte *, bfd *, struct dwarf2_cu *);
c906108c 963
d97bc12b
DE
964static struct die_info *read_die_and_children_1 (gdb_byte *info_ptr, bfd *abfd,
965 struct dwarf2_cu *,
966 gdb_byte **new_info_ptr,
967 struct die_info *parent);
968
fe1b8b76 969static struct die_info *read_die_and_children (gdb_byte *info_ptr, bfd *abfd,
e7c27a73 970 struct dwarf2_cu *,
fe1b8b76 971 gdb_byte **new_info_ptr,
639d11d3
DC
972 struct die_info *parent);
973
fe1b8b76 974static struct die_info *read_die_and_siblings (gdb_byte *info_ptr, bfd *abfd,
e7c27a73 975 struct dwarf2_cu *,
fe1b8b76 976 gdb_byte **new_info_ptr,
639d11d3
DC
977 struct die_info *parent);
978
e7c27a73 979static void process_die (struct die_info *, struct dwarf2_cu *);
c906108c 980
e142c38c 981static char *dwarf2_linkage_name (struct die_info *, struct dwarf2_cu *);
c906108c 982
71c25dea
TT
983static char *dwarf2_canonicalize_name (char *, struct dwarf2_cu *,
984 struct obstack *);
985
e142c38c 986static char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
9219021c 987
e142c38c 988static struct die_info *dwarf2_extension (struct die_info *die,
f2f0e013 989 struct dwarf2_cu **);
9219021c 990
a14ed312 991static char *dwarf_tag_name (unsigned int);
c906108c 992
a14ed312 993static char *dwarf_attr_name (unsigned int);
c906108c 994
a14ed312 995static char *dwarf_form_name (unsigned int);
c906108c 996
a14ed312 997static char *dwarf_stack_op_name (unsigned int);
c906108c 998
a14ed312 999static char *dwarf_bool_name (unsigned int);
c906108c 1000
a14ed312 1001static char *dwarf_type_encoding_name (unsigned int);
c906108c
SS
1002
1003#if 0
a14ed312 1004static char *dwarf_cfi_name (unsigned int);
c906108c
SS
1005#endif
1006
f9aca02d 1007static struct die_info *sibling_die (struct die_info *);
c906108c 1008
d97bc12b
DE
1009static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1010
1011static void dump_die_for_error (struct die_info *);
1012
1013static void dump_die_1 (struct ui_file *, int level, int max_level,
1014 struct die_info *);
c906108c 1015
d97bc12b 1016/*static*/ void dump_die (struct die_info *, int max_level);
c906108c 1017
51545339 1018static void store_in_ref_table (struct die_info *,
10b3939b 1019 struct dwarf2_cu *);
c906108c 1020
c764a876 1021static unsigned int dwarf2_get_ref_die_offset (struct attribute *);
c906108c 1022
a02abb62
JB
1023static int dwarf2_get_attr_constant_value (struct attribute *, int);
1024
10b3939b
DJ
1025static struct die_info *follow_die_ref (struct die_info *,
1026 struct attribute *,
f2f0e013 1027 struct dwarf2_cu **);
c906108c 1028
c906108c
SS
1029/* memory allocation interface */
1030
7b5a2f43 1031static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
c906108c 1032
f3dd6933 1033static struct abbrev_info *dwarf_alloc_abbrev (struct dwarf2_cu *);
c906108c 1034
b60c80d6 1035static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
c906108c 1036
e142c38c 1037static void initialize_cu_func_list (struct dwarf2_cu *);
5fb290d7 1038
e142c38c
DJ
1039static void add_to_cu_func_list (const char *, CORE_ADDR, CORE_ADDR,
1040 struct dwarf2_cu *);
5fb290d7 1041
2e276125 1042static void dwarf_decode_macros (struct line_header *, unsigned int,
e7c27a73 1043 char *, bfd *, struct dwarf2_cu *);
2e276125 1044
8e19ed76
PS
1045static int attr_form_is_block (struct attribute *);
1046
3690dd37
JB
1047static int attr_form_is_section_offset (struct attribute *);
1048
1049static int attr_form_is_constant (struct attribute *);
1050
93e7bd98
DJ
1051static void dwarf2_symbol_mark_computed (struct attribute *attr,
1052 struct symbol *sym,
1053 struct dwarf2_cu *cu);
4c2df51b 1054
fe1b8b76
JB
1055static gdb_byte *skip_one_die (gdb_byte *info_ptr, struct abbrev_info *abbrev,
1056 struct dwarf2_cu *cu);
4bb7a0a7 1057
72bf9492
DJ
1058static void free_stack_comp_unit (void *);
1059
72bf9492
DJ
1060static hashval_t partial_die_hash (const void *item);
1061
1062static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1063
ae038cb0 1064static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
c764a876 1065 (unsigned int offset, struct objfile *objfile);
ae038cb0
DJ
1066
1067static struct dwarf2_per_cu_data *dwarf2_find_comp_unit
c764a876 1068 (unsigned int offset, struct objfile *objfile);
ae038cb0
DJ
1069
1070static void free_one_comp_unit (void *);
1071
1072static void free_cached_comp_units (void *);
1073
1074static void age_cached_comp_units (void);
1075
1076static void free_one_cached_comp_unit (void *);
1077
f792889a
DJ
1078static struct type *set_die_type (struct die_info *, struct type *,
1079 struct dwarf2_cu *);
1c379e20 1080
ae038cb0
DJ
1081static void create_all_comp_units (struct objfile *);
1082
31ffec48
DJ
1083static struct dwarf2_cu *load_full_comp_unit (struct dwarf2_per_cu_data *,
1084 struct objfile *);
10b3939b
DJ
1085
1086static void process_full_comp_unit (struct dwarf2_per_cu_data *);
1087
1088static void dwarf2_add_dependence (struct dwarf2_cu *,
1089 struct dwarf2_per_cu_data *);
1090
ae038cb0
DJ
1091static void dwarf2_mark (struct dwarf2_cu *);
1092
1093static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1094
f792889a 1095static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
72019c9c 1096
c906108c
SS
1097/* Try to locate the sections we need for DWARF 2 debugging
1098 information and return true if we have enough to do something. */
1099
1100int
6502dd73 1101dwarf2_has_info (struct objfile *objfile)
c906108c 1102{
6502dd73
DJ
1103 struct dwarf2_per_objfile *data;
1104
1105 /* Initialize per-objfile state. */
1106 data = obstack_alloc (&objfile->objfile_obstack, sizeof (*data));
1107 memset (data, 0, sizeof (*data));
1108 set_objfile_data (objfile, dwarf2_objfile_data_key, data);
1109 dwarf2_per_objfile = data;
1110
6502dd73 1111 bfd_map_over_sections (objfile->obfd, dwarf2_locate_sections, NULL);
dce234bc 1112 return (data->info.asection != NULL && data->abbrev.asection != NULL);
c906108c
SS
1113}
1114
233a11ab
CS
1115/* When loading sections, we can either look for ".<name>", or for
1116 * ".z<name>", which indicates a compressed section. */
1117
1118static int
dce234bc 1119section_is_p (const char *section_name, const char *name)
233a11ab 1120{
dce234bc
PP
1121 return (section_name[0] == '.'
1122 && (strcmp (section_name + 1, name) == 0
1123 || (section_name[1] == 'z'
1124 && strcmp (section_name + 2, name) == 0)));
233a11ab
CS
1125}
1126
c906108c
SS
1127/* This function is mapped across the sections and remembers the
1128 offset and size of each of the debugging sections we are interested
1129 in. */
1130
1131static void
72dca2f5 1132dwarf2_locate_sections (bfd *abfd, asection *sectp, void *ignore_ptr)
c906108c 1133{
dce234bc 1134 if (section_is_p (sectp->name, INFO_SECTION))
c906108c 1135 {
dce234bc
PP
1136 dwarf2_per_objfile->info.asection = sectp;
1137 dwarf2_per_objfile->info.size = bfd_get_section_size (sectp);
c906108c 1138 }
dce234bc 1139 else if (section_is_p (sectp->name, ABBREV_SECTION))
c906108c 1140 {
dce234bc
PP
1141 dwarf2_per_objfile->abbrev.asection = sectp;
1142 dwarf2_per_objfile->abbrev.size = bfd_get_section_size (sectp);
c906108c 1143 }
dce234bc 1144 else if (section_is_p (sectp->name, LINE_SECTION))
c906108c 1145 {
dce234bc
PP
1146 dwarf2_per_objfile->line.asection = sectp;
1147 dwarf2_per_objfile->line.size = bfd_get_section_size (sectp);
c906108c 1148 }
dce234bc 1149 else if (section_is_p (sectp->name, PUBNAMES_SECTION))
c906108c 1150 {
dce234bc
PP
1151 dwarf2_per_objfile->pubnames.asection = sectp;
1152 dwarf2_per_objfile->pubnames.size = bfd_get_section_size (sectp);
c906108c 1153 }
dce234bc 1154 else if (section_is_p (sectp->name, ARANGES_SECTION))
c906108c 1155 {
dce234bc
PP
1156 dwarf2_per_objfile->aranges.asection = sectp;
1157 dwarf2_per_objfile->aranges.size = bfd_get_section_size (sectp);
c906108c 1158 }
dce234bc 1159 else if (section_is_p (sectp->name, LOC_SECTION))
c906108c 1160 {
dce234bc
PP
1161 dwarf2_per_objfile->loc.asection = sectp;
1162 dwarf2_per_objfile->loc.size = bfd_get_section_size (sectp);
c906108c 1163 }
dce234bc 1164 else if (section_is_p (sectp->name, MACINFO_SECTION))
c906108c 1165 {
dce234bc
PP
1166 dwarf2_per_objfile->macinfo.asection = sectp;
1167 dwarf2_per_objfile->macinfo.size = bfd_get_section_size (sectp);
c906108c 1168 }
dce234bc 1169 else if (section_is_p (sectp->name, STR_SECTION))
c906108c 1170 {
dce234bc
PP
1171 dwarf2_per_objfile->str.asection = sectp;
1172 dwarf2_per_objfile->str.size = bfd_get_section_size (sectp);
c906108c 1173 }
dce234bc 1174 else if (section_is_p (sectp->name, FRAME_SECTION))
b6af0555 1175 {
dce234bc
PP
1176 dwarf2_per_objfile->frame.asection = sectp;
1177 dwarf2_per_objfile->frame.size = bfd_get_section_size (sectp);
b6af0555 1178 }
dce234bc 1179 else if (section_is_p (sectp->name, EH_FRAME_SECTION))
b6af0555 1180 {
3799ccc6
EZ
1181 flagword aflag = bfd_get_section_flags (ignore_abfd, sectp);
1182 if (aflag & SEC_HAS_CONTENTS)
1183 {
dce234bc
PP
1184 dwarf2_per_objfile->eh_frame.asection = sectp;
1185 dwarf2_per_objfile->eh_frame.size = bfd_get_section_size (sectp);
3799ccc6 1186 }
b6af0555 1187 }
dce234bc 1188 else if (section_is_p (sectp->name, RANGES_SECTION))
af34e669 1189 {
dce234bc
PP
1190 dwarf2_per_objfile->ranges.asection = sectp;
1191 dwarf2_per_objfile->ranges.size = bfd_get_section_size (sectp);
af34e669 1192 }
dce234bc 1193
72dca2f5
FR
1194 if ((bfd_get_section_flags (abfd, sectp) & SEC_LOAD)
1195 && bfd_section_vma (abfd, sectp) == 0)
1196 dwarf2_per_objfile->has_section_at_zero = 1;
c906108c
SS
1197}
1198
dce234bc
PP
1199/* Decompress a section that was compressed using zlib. Store the
1200 decompressed buffer, and its size, in OUTBUF and OUTSIZE. */
233a11ab
CS
1201
1202static void
dce234bc
PP
1203zlib_decompress_section (struct objfile *objfile, asection *sectp,
1204 gdb_byte **outbuf, bfd_size_type *outsize)
1205{
1206 bfd *abfd = objfile->obfd;
1207#ifndef HAVE_ZLIB_H
1208 error (_("Support for zlib-compressed DWARF data (from '%s') "
1209 "is disabled in this copy of GDB"),
1210 bfd_get_filename (abfd));
1211#else
1212 bfd_size_type compressed_size = bfd_get_section_size (sectp);
1213 gdb_byte *compressed_buffer = xmalloc (compressed_size);
affddf13 1214 struct cleanup *cleanup = make_cleanup (xfree, compressed_buffer);
dce234bc
PP
1215 bfd_size_type uncompressed_size;
1216 gdb_byte *uncompressed_buffer;
1217 z_stream strm;
1218 int rc;
1219 int header_size = 12;
1220
1221 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
1222 || bfd_bread (compressed_buffer, compressed_size, abfd) != compressed_size)
1223 error (_("Dwarf Error: Can't read DWARF data from '%s'"),
1224 bfd_get_filename (abfd));
1225
1226 /* Read the zlib header. In this case, it should be "ZLIB" followed
1227 by the uncompressed section size, 8 bytes in big-endian order. */
1228 if (compressed_size < header_size
1229 || strncmp (compressed_buffer, "ZLIB", 4) != 0)
1230 error (_("Dwarf Error: Corrupt DWARF ZLIB header from '%s'"),
1231 bfd_get_filename (abfd));
1232 uncompressed_size = compressed_buffer[4]; uncompressed_size <<= 8;
1233 uncompressed_size += compressed_buffer[5]; uncompressed_size <<= 8;
1234 uncompressed_size += compressed_buffer[6]; uncompressed_size <<= 8;
1235 uncompressed_size += compressed_buffer[7]; uncompressed_size <<= 8;
1236 uncompressed_size += compressed_buffer[8]; uncompressed_size <<= 8;
1237 uncompressed_size += compressed_buffer[9]; uncompressed_size <<= 8;
1238 uncompressed_size += compressed_buffer[10]; uncompressed_size <<= 8;
1239 uncompressed_size += compressed_buffer[11];
1240
1241 /* It is possible the section consists of several compressed
1242 buffers concatenated together, so we uncompress in a loop. */
1243 strm.zalloc = NULL;
1244 strm.zfree = NULL;
1245 strm.opaque = NULL;
1246 strm.avail_in = compressed_size - header_size;
1247 strm.next_in = (Bytef*) compressed_buffer + header_size;
1248 strm.avail_out = uncompressed_size;
1249 uncompressed_buffer = obstack_alloc (&objfile->objfile_obstack,
1250 uncompressed_size);
1251 rc = inflateInit (&strm);
1252 while (strm.avail_in > 0)
1253 {
1254 if (rc != Z_OK)
1255 error (_("Dwarf Error: setting up DWARF uncompression in '%s': %d"),
1256 bfd_get_filename (abfd), rc);
1257 strm.next_out = ((Bytef*) uncompressed_buffer
1258 + (uncompressed_size - strm.avail_out));
1259 rc = inflate (&strm, Z_FINISH);
1260 if (rc != Z_STREAM_END)
1261 error (_("Dwarf Error: zlib error uncompressing from '%s': %d"),
1262 bfd_get_filename (abfd), rc);
1263 rc = inflateReset (&strm);
1264 }
1265 rc = inflateEnd (&strm);
1266 if (rc != Z_OK
1267 || strm.avail_out != 0)
1268 error (_("Dwarf Error: concluding DWARF uncompression in '%s': %d"),
1269 bfd_get_filename (abfd), rc);
1270
affddf13 1271 do_cleanups (cleanup);
dce234bc
PP
1272 *outbuf = uncompressed_buffer;
1273 *outsize = uncompressed_size;
1274#endif
233a11ab
CS
1275}
1276
dce234bc
PP
1277/* Read the contents of the section SECTP from object file specified by
1278 OBJFILE, store info about the section into INFO.
1279 If the section is compressed, uncompress it before returning. */
c906108c 1280
dce234bc
PP
1281static void
1282dwarf2_read_section (struct objfile *objfile, struct dwarf2_section_info *info)
c906108c 1283{
dce234bc
PP
1284 bfd *abfd = objfile->obfd;
1285 asection *sectp = info->asection;
1286 gdb_byte *buf, *retbuf;
1287 unsigned char header[4];
c906108c 1288
dce234bc
PP
1289 info->buffer = NULL;
1290 info->was_mmapped = 0;
188dd5d6 1291
dce234bc
PP
1292 if (info->asection == NULL || info->size == 0)
1293 return;
c906108c 1294
dce234bc
PP
1295 /* Check if the file has a 4-byte header indicating compression. */
1296 if (info->size > sizeof (header)
1297 && bfd_seek (abfd, sectp->filepos, SEEK_SET) == 0
1298 && bfd_bread (header, sizeof (header), abfd) == sizeof (header))
1299 {
1300 /* Upon decompression, update the buffer and its size. */
1301 if (strncmp (header, "ZLIB", sizeof (header)) == 0)
1302 {
1303 zlib_decompress_section (objfile, sectp, &info->buffer,
1304 &info->size);
1305 return;
1306 }
1307 }
4bdf3d34 1308
dce234bc
PP
1309#ifdef HAVE_MMAP
1310 if (pagesize == 0)
1311 pagesize = getpagesize ();
2e276125 1312
dce234bc
PP
1313 /* Only try to mmap sections which are large enough: we don't want to
1314 waste space due to fragmentation. Also, only try mmap for sections
1315 without relocations. */
1316
1317 if (info->size > 4 * pagesize && (sectp->flags & SEC_RELOC) == 0)
1318 {
1319 off_t pg_offset = sectp->filepos & ~(pagesize - 1);
1320 size_t map_length = info->size + sectp->filepos - pg_offset;
1321 caddr_t retbuf = bfd_mmap (abfd, 0, map_length, PROT_READ,
1322 MAP_PRIVATE, pg_offset);
1323
1324 if (retbuf != MAP_FAILED)
1325 {
1326 info->was_mmapped = 1;
1327 info->buffer = retbuf + (sectp->filepos & (pagesize - 1)) ;
1328 return;
1329 }
1330 }
1331#endif
1332
1333 /* If we get here, we are a normal, not-compressed section. */
1334 info->buffer = buf
1335 = obstack_alloc (&objfile->objfile_obstack, info->size);
1336
1337 /* When debugging .o files, we may need to apply relocations; see
1338 http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
1339 We never compress sections in .o files, so we only need to
1340 try this when the section is not compressed. */
1341 retbuf = symfile_relocate_debug_section (abfd, sectp, buf);
1342 if (retbuf != NULL)
1343 {
1344 info->buffer = retbuf;
1345 return;
1346 }
1347
1348 if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
1349 || bfd_bread (buf, info->size, abfd) != info->size)
1350 error (_("Dwarf Error: Can't read DWARF data from '%s'"),
1351 bfd_get_filename (abfd));
1352}
1353
1354/* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
1355 SECTION_NAME. */
af34e669 1356
dce234bc
PP
1357void
1358dwarf2_get_section_info (struct objfile *objfile, const char *section_name,
1359 asection **sectp, gdb_byte **bufp,
1360 bfd_size_type *sizep)
1361{
1362 struct dwarf2_per_objfile *data
1363 = objfile_data (objfile, dwarf2_objfile_data_key);
1364 struct dwarf2_section_info *info;
1365 if (section_is_p (section_name, EH_FRAME_SECTION))
1366 info = &data->eh_frame;
1367 else if (section_is_p (section_name, FRAME_SECTION))
1368 info = &data->frame;
0d53c4c4 1369 else
dce234bc
PP
1370 gdb_assert (0);
1371
1372 if (info->asection != NULL && info->size != 0 && info->buffer == NULL)
1373 /* We haven't read this section in yet. Do it now. */
1374 dwarf2_read_section (objfile, info);
1375
1376 *sectp = info->asection;
1377 *bufp = info->buffer;
1378 *sizep = info->size;
1379}
1380
1381/* Build a partial symbol table. */
1382
1383void
1384dwarf2_build_psymtabs (struct objfile *objfile, int mainline)
1385{
1386 dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
1387 dwarf2_read_section (objfile, &dwarf2_per_objfile->abbrev);
1388 dwarf2_read_section (objfile, &dwarf2_per_objfile->line);
1389 dwarf2_read_section (objfile, &dwarf2_per_objfile->str);
1390 dwarf2_read_section (objfile, &dwarf2_per_objfile->macinfo);
1391 dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
1392 dwarf2_read_section (objfile, &dwarf2_per_objfile->loc);
1393 dwarf2_read_section (objfile, &dwarf2_per_objfile->eh_frame);
1394 dwarf2_read_section (objfile, &dwarf2_per_objfile->frame);
0d53c4c4 1395
ef96bde8
EZ
1396 if (mainline
1397 || (objfile->global_psymbols.size == 0
1398 && objfile->static_psymbols.size == 0))
c906108c
SS
1399 {
1400 init_psymbol_list (objfile, 1024);
1401 }
1402
1403#if 0
1404 if (dwarf_aranges_offset && dwarf_pubnames_offset)
1405 {
d4f3574e 1406 /* Things are significantly easier if we have .debug_aranges and
c906108c
SS
1407 .debug_pubnames sections */
1408
d4f3574e 1409 dwarf2_build_psymtabs_easy (objfile, mainline);
c906108c
SS
1410 }
1411 else
1412#endif
1413 /* only test this case for now */
c5aa993b 1414 {
c906108c 1415 /* In this case we have to work a bit harder */
d4f3574e 1416 dwarf2_build_psymtabs_hard (objfile, mainline);
c906108c
SS
1417 }
1418}
1419
1420#if 0
1421/* Build the partial symbol table from the information in the
1422 .debug_pubnames and .debug_aranges sections. */
1423
1424static void
fba45db2 1425dwarf2_build_psymtabs_easy (struct objfile *objfile, int mainline)
c906108c
SS
1426{
1427 bfd *abfd = objfile->obfd;
1428 char *aranges_buffer, *pubnames_buffer;
1429 char *aranges_ptr, *pubnames_ptr;
1430 unsigned int entry_length, version, info_offset, info_size;
1431
1432 pubnames_buffer = dwarf2_read_section (objfile,
086df311 1433 dwarf_pubnames_section);
c906108c 1434 pubnames_ptr = pubnames_buffer;
dce234bc 1435 while ((pubnames_ptr - pubnames_buffer) < dwarf2_per_objfile->pubnames.size)
c906108c 1436 {
891d2f0b 1437 unsigned int bytes_read;
613e1657 1438
c764a876 1439 entry_length = read_initial_length (abfd, pubnames_ptr, &bytes_read);
613e1657 1440 pubnames_ptr += bytes_read;
c906108c
SS
1441 version = read_1_byte (abfd, pubnames_ptr);
1442 pubnames_ptr += 1;
1443 info_offset = read_4_bytes (abfd, pubnames_ptr);
1444 pubnames_ptr += 4;
1445 info_size = read_4_bytes (abfd, pubnames_ptr);
1446 pubnames_ptr += 4;
1447 }
1448
1449 aranges_buffer = dwarf2_read_section (objfile,
086df311 1450 dwarf_aranges_section);
c906108c
SS
1451
1452}
1453#endif
1454
45452591
DE
1455/* Return TRUE if OFFSET is within CU_HEADER. */
1456
1457static inline int
1458offset_in_cu_p (const struct comp_unit_head *cu_header, unsigned int offset)
1459{
1460 unsigned int bottom = cu_header->offset;
1461 unsigned int top = (cu_header->offset
1462 + cu_header->length
1463 + cu_header->initial_length_size);
1464 return (offset >= bottom && offset < top);
1465}
1466
107d2387 1467/* Read in the comp unit header information from the debug_info at
917c78fc 1468 info_ptr. */
107d2387 1469
fe1b8b76 1470static gdb_byte *
107d2387 1471read_comp_unit_head (struct comp_unit_head *cu_header,
fe1b8b76 1472 gdb_byte *info_ptr, bfd *abfd)
107d2387
AC
1473{
1474 int signed_addr;
891d2f0b 1475 unsigned int bytes_read;
c764a876
DE
1476
1477 cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
1478 cu_header->initial_length_size = bytes_read;
1479 cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
613e1657 1480 info_ptr += bytes_read;
107d2387
AC
1481 cu_header->version = read_2_bytes (abfd, info_ptr);
1482 info_ptr += 2;
613e1657 1483 cu_header->abbrev_offset = read_offset (abfd, info_ptr, cu_header,
c764a876 1484 &bytes_read);
613e1657 1485 info_ptr += bytes_read;
107d2387
AC
1486 cu_header->addr_size = read_1_byte (abfd, info_ptr);
1487 info_ptr += 1;
1488 signed_addr = bfd_get_sign_extend_vma (abfd);
1489 if (signed_addr < 0)
8e65ff28 1490 internal_error (__FILE__, __LINE__,
e2e0b3e5 1491 _("read_comp_unit_head: dwarf from non elf file"));
107d2387 1492 cu_header->signed_addr_p = signed_addr;
c764a876 1493
107d2387
AC
1494 return info_ptr;
1495}
1496
fe1b8b76
JB
1497static gdb_byte *
1498partial_read_comp_unit_head (struct comp_unit_head *header, gdb_byte *info_ptr,
72bf9492
DJ
1499 bfd *abfd)
1500{
fe1b8b76 1501 gdb_byte *beg_of_comp_unit = info_ptr;
72bf9492
DJ
1502
1503 info_ptr = read_comp_unit_head (header, info_ptr, abfd);
1504
2b949cb6 1505 if (header->version != 2 && header->version != 3)
8a3fe4f8
AC
1506 error (_("Dwarf Error: wrong version in compilation unit header "
1507 "(is %d, should be %d) [in module %s]"), header->version,
72bf9492
DJ
1508 2, bfd_get_filename (abfd));
1509
dce234bc 1510 if (header->abbrev_offset >= dwarf2_per_objfile->abbrev.size)
8a3fe4f8
AC
1511 error (_("Dwarf Error: bad offset (0x%lx) in compilation unit header "
1512 "(offset 0x%lx + 6) [in module %s]"),
72bf9492 1513 (long) header->abbrev_offset,
dce234bc 1514 (long) (beg_of_comp_unit - dwarf2_per_objfile->info.buffer),
72bf9492
DJ
1515 bfd_get_filename (abfd));
1516
1517 if (beg_of_comp_unit + header->length + header->initial_length_size
dce234bc 1518 > dwarf2_per_objfile->info.buffer + dwarf2_per_objfile->info.size)
8a3fe4f8
AC
1519 error (_("Dwarf Error: bad length (0x%lx) in compilation unit header "
1520 "(offset 0x%lx + 0) [in module %s]"),
72bf9492 1521 (long) header->length,
dce234bc 1522 (long) (beg_of_comp_unit - dwarf2_per_objfile->info.buffer),
72bf9492
DJ
1523 bfd_get_filename (abfd));
1524
1525 return info_ptr;
1526}
1527
aaa75496
JB
1528/* Allocate a new partial symtab for file named NAME and mark this new
1529 partial symtab as being an include of PST. */
1530
1531static void
1532dwarf2_create_include_psymtab (char *name, struct partial_symtab *pst,
1533 struct objfile *objfile)
1534{
1535 struct partial_symtab *subpst = allocate_psymtab (name, objfile);
1536
1537 subpst->section_offsets = pst->section_offsets;
1538 subpst->textlow = 0;
1539 subpst->texthigh = 0;
1540
1541 subpst->dependencies = (struct partial_symtab **)
1542 obstack_alloc (&objfile->objfile_obstack,
1543 sizeof (struct partial_symtab *));
1544 subpst->dependencies[0] = pst;
1545 subpst->number_of_dependencies = 1;
1546
1547 subpst->globals_offset = 0;
1548 subpst->n_global_syms = 0;
1549 subpst->statics_offset = 0;
1550 subpst->n_static_syms = 0;
1551 subpst->symtab = NULL;
1552 subpst->read_symtab = pst->read_symtab;
1553 subpst->readin = 0;
1554
1555 /* No private part is necessary for include psymtabs. This property
1556 can be used to differentiate between such include psymtabs and
10b3939b 1557 the regular ones. */
58a9656e 1558 subpst->read_symtab_private = NULL;
aaa75496
JB
1559}
1560
1561/* Read the Line Number Program data and extract the list of files
1562 included by the source file represented by PST. Build an include
1563 partial symtab for each of these included files.
1564
1565 This procedure assumes that there *is* a Line Number Program in
1566 the given CU. Callers should check that PDI->HAS_STMT_LIST is set
1567 before calling this procedure. */
1568
1569static void
1570dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
1571 struct partial_die_info *pdi,
1572 struct partial_symtab *pst)
1573{
1574 struct objfile *objfile = cu->objfile;
1575 bfd *abfd = objfile->obfd;
1576 struct line_header *lh;
1577
1578 lh = dwarf_decode_line_header (pdi->line_offset, abfd, cu);
1579 if (lh == NULL)
1580 return; /* No linetable, so no includes. */
1581
1582 dwarf_decode_lines (lh, NULL, abfd, cu, pst);
1583
1584 free_line_header (lh);
1585}
1586
1587
c906108c
SS
1588/* Build the partial symbol table by doing a quick pass through the
1589 .debug_info and .debug_abbrev sections. */
1590
1591static void
fba45db2 1592dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline)
c906108c
SS
1593{
1594 /* Instead of reading this into a big buffer, we should probably use
1595 mmap() on architectures that support it. (FIXME) */
1596 bfd *abfd = objfile->obfd;
fe1b8b76
JB
1597 gdb_byte *info_ptr;
1598 gdb_byte *beg_of_comp_unit;
c906108c
SS
1599 struct partial_die_info comp_unit_die;
1600 struct partial_symtab *pst;
ae038cb0 1601 struct cleanup *back_to;
5734ee8b 1602 CORE_ADDR baseaddr;
c906108c 1603
dce234bc 1604 info_ptr = dwarf2_per_objfile->info.buffer;
c906108c 1605
ae038cb0
DJ
1606 /* Any cached compilation units will be linked by the per-objfile
1607 read_in_chain. Make sure to free them when we're done. */
1608 back_to = make_cleanup (free_cached_comp_units, NULL);
1609
10b3939b
DJ
1610 create_all_comp_units (objfile);
1611
ff013f42
JK
1612 objfile->psymtabs_addrmap = addrmap_create_mutable
1613 (&objfile->objfile_obstack);
1614
6502dd73 1615 /* Since the objects we're extracting from .debug_info vary in
af703f96 1616 length, only the individual functions to extract them (like
72bf9492 1617 read_comp_unit_head and load_partial_die) can really know whether
af703f96
JB
1618 the buffer is large enough to hold another complete object.
1619
6502dd73
DJ
1620 At the moment, they don't actually check that. If .debug_info
1621 holds just one extra byte after the last compilation unit's dies,
1622 then read_comp_unit_head will happily read off the end of the
1623 buffer. read_partial_die is similarly casual. Those functions
1624 should be fixed.
af703f96
JB
1625
1626 For this loop condition, simply checking whether there's any data
1627 left at all should be sufficient. */
dce234bc
PP
1628 while (info_ptr < (dwarf2_per_objfile->info.buffer
1629 + dwarf2_per_objfile->info.size))
c906108c 1630 {
f3dd6933 1631 struct cleanup *back_to_inner;
e7c27a73 1632 struct dwarf2_cu cu;
72bf9492
DJ
1633 struct abbrev_info *abbrev;
1634 unsigned int bytes_read;
1635 struct dwarf2_per_cu_data *this_cu;
1636
c906108c 1637 beg_of_comp_unit = info_ptr;
c906108c 1638
72bf9492
DJ
1639 memset (&cu, 0, sizeof (cu));
1640
1641 obstack_init (&cu.comp_unit_obstack);
1642
1643 back_to_inner = make_cleanup (free_stack_comp_unit, &cu);
1644
e7c27a73 1645 cu.objfile = objfile;
72bf9492 1646 info_ptr = partial_read_comp_unit_head (&cu.header, info_ptr, abfd);
e7c27a73 1647
57349743 1648 /* Complete the cu_header */
dce234bc 1649 cu.header.offset = beg_of_comp_unit - dwarf2_per_objfile->info.buffer;
d00adf39 1650 cu.header.first_die_offset = info_ptr - beg_of_comp_unit;
57349743 1651
e142c38c
DJ
1652 cu.list_in_scope = &file_symbols;
1653
c906108c 1654 /* Read the abbrevs for this compilation unit into a table */
e7c27a73 1655 dwarf2_read_abbrevs (abfd, &cu);
72bf9492 1656 make_cleanup (dwarf2_free_abbrev_table, &cu);
c906108c 1657
10b3939b 1658 this_cu = dwarf2_find_comp_unit (cu.header.offset, objfile);
ae038cb0 1659
c906108c 1660 /* Read the compilation unit die */
72bf9492
DJ
1661 abbrev = peek_die_abbrev (info_ptr, &bytes_read, &cu);
1662 info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
1663 abfd, info_ptr, &cu);
c906108c 1664
31ffec48
DJ
1665 if (comp_unit_die.tag == DW_TAG_partial_unit)
1666 {
1667 info_ptr = (beg_of_comp_unit + cu.header.length
1668 + cu.header.initial_length_size);
1669 do_cleanups (back_to_inner);
1670 continue;
1671 }
1672
c906108c 1673 /* Set the language we're debugging */
e142c38c 1674 set_cu_language (comp_unit_die.language, &cu);
c906108c
SS
1675
1676 /* Allocate a new partial symbol table structure */
d4f3574e 1677 pst = start_psymtab_common (objfile, objfile->section_offsets,
96baa820 1678 comp_unit_die.name ? comp_unit_die.name : "",
ff013f42
JK
1679 /* TEXTLOW and TEXTHIGH are set below. */
1680 0,
c906108c
SS
1681 objfile->global_psymbols.next,
1682 objfile->static_psymbols.next);
1683
ae038cb0 1684 if (comp_unit_die.dirname)
a683b3c0
TT
1685 pst->dirname = obsavestring (comp_unit_die.dirname,
1686 strlen (comp_unit_die.dirname),
1687 &objfile->objfile_obstack);
57c22c6c 1688
10b3939b
DJ
1689 pst->read_symtab_private = (char *) this_cu;
1690
613e1657 1691 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
1692
1693 /* Store the function that reads in the rest of the symbol table */
1694 pst->read_symtab = dwarf2_psymtab_to_symtab;
1695
10b3939b
DJ
1696 /* If this compilation unit was already read in, free the
1697 cached copy in order to read it in again. This is
1698 necessary because we skipped some symbols when we first
1699 read in the compilation unit (see load_partial_dies).
1700 This problem could be avoided, but the benefit is
1701 unclear. */
1702 if (this_cu->cu != NULL)
1703 free_one_cached_comp_unit (this_cu->cu);
ae038cb0 1704
10b3939b 1705 cu.per_cu = this_cu;
ae038cb0 1706
10b3939b
DJ
1707 /* Note that this is a pointer to our stack frame, being
1708 added to a global data structure. It will be cleaned up
1709 in free_stack_comp_unit when we finish with this
1710 compilation unit. */
1711 this_cu->cu = &cu;
ae038cb0 1712
10b3939b 1713 this_cu->psymtab = pst;
ae038cb0 1714
ff013f42
JK
1715 /* Possibly set the default values of LOWPC and HIGHPC from
1716 `DW_AT_ranges'. */
1717 if (cu.has_ranges_offset)
1718 {
1719 if (dwarf2_ranges_read (cu.ranges_offset, &comp_unit_die.lowpc,
1720 &comp_unit_die.highpc, &cu, pst))
1721 comp_unit_die.has_pc_info = 1;
1722 }
5734ee8b
DJ
1723 else if (comp_unit_die.has_pc_info
1724 && comp_unit_die.lowpc < comp_unit_die.highpc)
1725 /* Store the contiguous range if it is not empty; it can be empty for
1726 CUs with no code. */
1727 addrmap_set_empty (objfile->psymtabs_addrmap,
1728 comp_unit_die.lowpc + baseaddr,
1729 comp_unit_die.highpc + baseaddr - 1, pst);
ff013f42 1730
c906108c
SS
1731 /* Check if comp unit has_children.
1732 If so, read the rest of the partial symbols from this comp unit.
1733 If not, there's no more debug_info for this comp unit. */
1734 if (comp_unit_die.has_children)
1735 {
72bf9492 1736 struct partial_die_info *first_die;
5734ee8b 1737 CORE_ADDR lowpc, highpc;
72bf9492 1738
91c24f0a
DC
1739 lowpc = ((CORE_ADDR) -1);
1740 highpc = ((CORE_ADDR) 0);
1741
72bf9492
DJ
1742 first_die = load_partial_dies (abfd, info_ptr, 1, &cu);
1743
5734ee8b
DJ
1744 scan_partial_symbols (first_die, &lowpc, &highpc,
1745 ! comp_unit_die.has_pc_info, &cu);
c906108c 1746
91c24f0a
DC
1747 /* If we didn't find a lowpc, set it to highpc to avoid
1748 complaints from `maint check'. */
1749 if (lowpc == ((CORE_ADDR) -1))
1750 lowpc = highpc;
72bf9492 1751
c906108c
SS
1752 /* If the compilation unit didn't have an explicit address range,
1753 then use the information extracted from its child dies. */
0b010bcc 1754 if (! comp_unit_die.has_pc_info)
c906108c 1755 {
c5aa993b 1756 comp_unit_die.lowpc = lowpc;
c906108c
SS
1757 comp_unit_die.highpc = highpc;
1758 }
1759 }
c5aa993b 1760 pst->textlow = comp_unit_die.lowpc + baseaddr;
c906108c
SS
1761 pst->texthigh = comp_unit_die.highpc + baseaddr;
1762
1763 pst->n_global_syms = objfile->global_psymbols.next -
1764 (objfile->global_psymbols.list + pst->globals_offset);
1765 pst->n_static_syms = objfile->static_psymbols.next -
1766 (objfile->static_psymbols.list + pst->statics_offset);
1767 sort_pst_symbols (pst);
1768
1769 /* If there is already a psymtab or symtab for a file of this
1770 name, remove it. (If there is a symtab, more drastic things
1771 also happen.) This happens in VxWorks. */
1772 free_named_symtabs (pst->filename);
1773
dd373385
EZ
1774 info_ptr = beg_of_comp_unit + cu.header.length
1775 + cu.header.initial_length_size;
1776
aaa75496
JB
1777 if (comp_unit_die.has_stmt_list)
1778 {
1779 /* Get the list of files included in the current compilation unit,
1780 and build a psymtab for each of them. */
1781 dwarf2_build_include_psymtabs (&cu, &comp_unit_die, pst);
1782 }
1783
f3dd6933 1784 do_cleanups (back_to_inner);
c906108c 1785 }
ff013f42
JK
1786
1787 objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
1788 &objfile->objfile_obstack);
1789
ae038cb0
DJ
1790 do_cleanups (back_to);
1791}
1792
1793/* Load the DIEs for a secondary CU into memory. */
1794
1795static void
1796load_comp_unit (struct dwarf2_per_cu_data *this_cu, struct objfile *objfile)
1797{
1798 bfd *abfd = objfile->obfd;
fe1b8b76 1799 gdb_byte *info_ptr, *beg_of_comp_unit;
ae038cb0
DJ
1800 struct partial_die_info comp_unit_die;
1801 struct dwarf2_cu *cu;
1802 struct abbrev_info *abbrev;
1803 unsigned int bytes_read;
1804 struct cleanup *back_to;
1805
dce234bc 1806 info_ptr = dwarf2_per_objfile->info.buffer + this_cu->offset;
ae038cb0
DJ
1807 beg_of_comp_unit = info_ptr;
1808
1809 cu = xmalloc (sizeof (struct dwarf2_cu));
1810 memset (cu, 0, sizeof (struct dwarf2_cu));
1811
1812 obstack_init (&cu->comp_unit_obstack);
1813
1814 cu->objfile = objfile;
1815 info_ptr = partial_read_comp_unit_head (&cu->header, info_ptr, abfd);
1816
1817 /* Complete the cu_header. */
dce234bc 1818 cu->header.offset = beg_of_comp_unit - dwarf2_per_objfile->info.buffer;
d00adf39 1819 cu->header.first_die_offset = info_ptr - beg_of_comp_unit;
ae038cb0
DJ
1820
1821 /* Read the abbrevs for this compilation unit into a table. */
1822 dwarf2_read_abbrevs (abfd, cu);
1823 back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
1824
1825 /* Read the compilation unit die. */
1826 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
1827 info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
1828 abfd, info_ptr, cu);
1829
1830 /* Set the language we're debugging. */
1831 set_cu_language (comp_unit_die.language, cu);
1832
1833 /* Link this compilation unit into the compilation unit tree. */
1834 this_cu->cu = cu;
1835 cu->per_cu = this_cu;
f792889a 1836 cu->type_hash = cu->per_cu->type_hash;
ae038cb0
DJ
1837
1838 /* Check if comp unit has_children.
1839 If so, read the rest of the partial symbols from this comp unit.
1840 If not, there's no more debug_info for this comp unit. */
1841 if (comp_unit_die.has_children)
1842 load_partial_dies (abfd, info_ptr, 0, cu);
1843
1844 do_cleanups (back_to);
1845}
1846
1847/* Create a list of all compilation units in OBJFILE. We do this only
1848 if an inter-comp-unit reference is found; presumably if there is one,
1849 there will be many, and one will occur early in the .debug_info section.
1850 So there's no point in building this list incrementally. */
1851
1852static void
1853create_all_comp_units (struct objfile *objfile)
1854{
1855 int n_allocated;
1856 int n_comp_units;
1857 struct dwarf2_per_cu_data **all_comp_units;
dce234bc 1858 gdb_byte *info_ptr = dwarf2_per_objfile->info.buffer;
ae038cb0
DJ
1859
1860 n_comp_units = 0;
1861 n_allocated = 10;
1862 all_comp_units = xmalloc (n_allocated
1863 * sizeof (struct dwarf2_per_cu_data *));
1864
dce234bc 1865 while (info_ptr < dwarf2_per_objfile->info.buffer + dwarf2_per_objfile->info.size)
ae038cb0 1866 {
c764a876 1867 unsigned int length, initial_length_size;
fe1b8b76 1868 gdb_byte *beg_of_comp_unit;
ae038cb0 1869 struct dwarf2_per_cu_data *this_cu;
c764a876 1870 unsigned int offset;
ae038cb0 1871
dce234bc 1872 offset = info_ptr - dwarf2_per_objfile->info.buffer;
ae038cb0
DJ
1873
1874 /* Read just enough information to find out where the next
1875 compilation unit is. */
c764a876
DE
1876 length = read_initial_length (objfile->obfd, info_ptr,
1877 &initial_length_size);
ae038cb0
DJ
1878
1879 /* Save the compilation unit for later lookup. */
1880 this_cu = obstack_alloc (&objfile->objfile_obstack,
1881 sizeof (struct dwarf2_per_cu_data));
1882 memset (this_cu, 0, sizeof (*this_cu));
1883 this_cu->offset = offset;
c764a876 1884 this_cu->length = length + initial_length_size;
ae038cb0
DJ
1885
1886 if (n_comp_units == n_allocated)
1887 {
1888 n_allocated *= 2;
1889 all_comp_units = xrealloc (all_comp_units,
1890 n_allocated
1891 * sizeof (struct dwarf2_per_cu_data *));
1892 }
1893 all_comp_units[n_comp_units++] = this_cu;
1894
1895 info_ptr = info_ptr + this_cu->length;
1896 }
1897
1898 dwarf2_per_objfile->all_comp_units
1899 = obstack_alloc (&objfile->objfile_obstack,
1900 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
1901 memcpy (dwarf2_per_objfile->all_comp_units, all_comp_units,
1902 n_comp_units * sizeof (struct dwarf2_per_cu_data *));
1903 xfree (all_comp_units);
1904 dwarf2_per_objfile->n_comp_units = n_comp_units;
c906108c
SS
1905}
1906
5734ee8b
DJ
1907/* Process all loaded DIEs for compilation unit CU, starting at
1908 FIRST_DIE. The caller should pass NEED_PC == 1 if the compilation
1909 unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
1910 DW_AT_ranges). If NEED_PC is set, then this function will set
1911 *LOWPC and *HIGHPC to the lowest and highest PC values found in CU
1912 and record the covered ranges in the addrmap. */
c906108c 1913
72bf9492
DJ
1914static void
1915scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
5734ee8b 1916 CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
c906108c 1917{
e7c27a73 1918 struct objfile *objfile = cu->objfile;
c906108c 1919 bfd *abfd = objfile->obfd;
72bf9492 1920 struct partial_die_info *pdi;
c906108c 1921
91c24f0a
DC
1922 /* Now, march along the PDI's, descending into ones which have
1923 interesting children but skipping the children of the other ones,
1924 until we reach the end of the compilation unit. */
c906108c 1925
72bf9492 1926 pdi = first_die;
91c24f0a 1927
72bf9492
DJ
1928 while (pdi != NULL)
1929 {
1930 fixup_partial_die (pdi, cu);
c906108c 1931
91c24f0a
DC
1932 /* Anonymous namespaces have no name but have interesting
1933 children, so we need to look at them. Ditto for anonymous
1934 enums. */
933c6fe4 1935
72bf9492
DJ
1936 if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
1937 || pdi->tag == DW_TAG_enumeration_type)
c906108c 1938 {
72bf9492 1939 switch (pdi->tag)
c906108c
SS
1940 {
1941 case DW_TAG_subprogram:
5734ee8b 1942 add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
c906108c
SS
1943 break;
1944 case DW_TAG_variable:
1945 case DW_TAG_typedef:
91c24f0a 1946 case DW_TAG_union_type:
72bf9492 1947 if (!pdi->is_declaration)
63d06c5c 1948 {
72bf9492 1949 add_partial_symbol (pdi, cu);
63d06c5c
DC
1950 }
1951 break;
c906108c 1952 case DW_TAG_class_type:
680b30c7 1953 case DW_TAG_interface_type:
c906108c 1954 case DW_TAG_structure_type:
72bf9492 1955 if (!pdi->is_declaration)
c906108c 1956 {
72bf9492 1957 add_partial_symbol (pdi, cu);
c906108c
SS
1958 }
1959 break;
91c24f0a 1960 case DW_TAG_enumeration_type:
72bf9492
DJ
1961 if (!pdi->is_declaration)
1962 add_partial_enumeration (pdi, cu);
c906108c
SS
1963 break;
1964 case DW_TAG_base_type:
a02abb62 1965 case DW_TAG_subrange_type:
c906108c 1966 /* File scope base type definitions are added to the partial
c5aa993b 1967 symbol table. */
72bf9492 1968 add_partial_symbol (pdi, cu);
c906108c 1969 break;
d9fa45fe 1970 case DW_TAG_namespace:
5734ee8b 1971 add_partial_namespace (pdi, lowpc, highpc, need_pc, cu);
91c24f0a 1972 break;
5d7cb8df
JK
1973 case DW_TAG_module:
1974 add_partial_module (pdi, lowpc, highpc, need_pc, cu);
1975 break;
c906108c
SS
1976 default:
1977 break;
1978 }
1979 }
1980
72bf9492
DJ
1981 /* If the die has a sibling, skip to the sibling. */
1982
1983 pdi = pdi->die_sibling;
1984 }
1985}
1986
1987/* Functions used to compute the fully scoped name of a partial DIE.
91c24f0a 1988
72bf9492 1989 Normally, this is simple. For C++, the parent DIE's fully scoped
987504bb
JJ
1990 name is concatenated with "::" and the partial DIE's name. For
1991 Java, the same thing occurs except that "." is used instead of "::".
72bf9492
DJ
1992 Enumerators are an exception; they use the scope of their parent
1993 enumeration type, i.e. the name of the enumeration type is not
1994 prepended to the enumerator.
91c24f0a 1995
72bf9492
DJ
1996 There are two complexities. One is DW_AT_specification; in this
1997 case "parent" means the parent of the target of the specification,
1998 instead of the direct parent of the DIE. The other is compilers
1999 which do not emit DW_TAG_namespace; in this case we try to guess
2000 the fully qualified name of structure types from their members'
2001 linkage names. This must be done using the DIE's children rather
2002 than the children of any DW_AT_specification target. We only need
2003 to do this for structures at the top level, i.e. if the target of
2004 any DW_AT_specification (if any; otherwise the DIE itself) does not
2005 have a parent. */
2006
2007/* Compute the scope prefix associated with PDI's parent, in
2008 compilation unit CU. The result will be allocated on CU's
2009 comp_unit_obstack, or a copy of the already allocated PDI->NAME
2010 field. NULL is returned if no prefix is necessary. */
2011static char *
2012partial_die_parent_scope (struct partial_die_info *pdi,
2013 struct dwarf2_cu *cu)
2014{
2015 char *grandparent_scope;
2016 struct partial_die_info *parent, *real_pdi;
91c24f0a 2017
72bf9492
DJ
2018 /* We need to look at our parent DIE; if we have a DW_AT_specification,
2019 then this means the parent of the specification DIE. */
2020
2021 real_pdi = pdi;
72bf9492 2022 while (real_pdi->has_specification)
10b3939b 2023 real_pdi = find_partial_die (real_pdi->spec_offset, cu);
72bf9492
DJ
2024
2025 parent = real_pdi->die_parent;
2026 if (parent == NULL)
2027 return NULL;
2028
2029 if (parent->scope_set)
2030 return parent->scope;
2031
2032 fixup_partial_die (parent, cu);
2033
10b3939b 2034 grandparent_scope = partial_die_parent_scope (parent, cu);
72bf9492
DJ
2035
2036 if (parent->tag == DW_TAG_namespace
2037 || parent->tag == DW_TAG_structure_type
2038 || parent->tag == DW_TAG_class_type
680b30c7 2039 || parent->tag == DW_TAG_interface_type
72bf9492
DJ
2040 || parent->tag == DW_TAG_union_type)
2041 {
2042 if (grandparent_scope == NULL)
2043 parent->scope = parent->name;
2044 else
987504bb
JJ
2045 parent->scope = typename_concat (&cu->comp_unit_obstack, grandparent_scope,
2046 parent->name, cu);
72bf9492
DJ
2047 }
2048 else if (parent->tag == DW_TAG_enumeration_type)
2049 /* Enumerators should not get the name of the enumeration as a prefix. */
2050 parent->scope = grandparent_scope;
2051 else
2052 {
2053 /* FIXME drow/2004-04-01: What should we be doing with
2054 function-local names? For partial symbols, we should probably be
2055 ignoring them. */
2056 complaint (&symfile_complaints,
e2e0b3e5 2057 _("unhandled containing DIE tag %d for DIE at %d"),
72bf9492
DJ
2058 parent->tag, pdi->offset);
2059 parent->scope = grandparent_scope;
c906108c
SS
2060 }
2061
72bf9492
DJ
2062 parent->scope_set = 1;
2063 return parent->scope;
2064}
2065
2066/* Return the fully scoped name associated with PDI, from compilation unit
2067 CU. The result will be allocated with malloc. */
2068static char *
2069partial_die_full_name (struct partial_die_info *pdi,
2070 struct dwarf2_cu *cu)
2071{
2072 char *parent_scope;
2073
2074 parent_scope = partial_die_parent_scope (pdi, cu);
2075 if (parent_scope == NULL)
2076 return NULL;
2077 else
987504bb 2078 return typename_concat (NULL, parent_scope, pdi->name, cu);
c906108c
SS
2079}
2080
2081static void
72bf9492 2082add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
c906108c 2083{
e7c27a73 2084 struct objfile *objfile = cu->objfile;
c906108c 2085 CORE_ADDR addr = 0;
decbce07 2086 char *actual_name = NULL;
72bf9492 2087 const char *my_prefix;
5c4e30ca 2088 const struct partial_symbol *psym = NULL;
e142c38c 2089 CORE_ADDR baseaddr;
72bf9492 2090 int built_actual_name = 0;
e142c38c
DJ
2091
2092 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 2093
72bf9492 2094 if (pdi_needs_namespace (pdi->tag))
63d06c5c 2095 {
72bf9492
DJ
2096 actual_name = partial_die_full_name (pdi, cu);
2097 if (actual_name)
2098 built_actual_name = 1;
63d06c5c
DC
2099 }
2100
72bf9492
DJ
2101 if (actual_name == NULL)
2102 actual_name = pdi->name;
2103
c906108c
SS
2104 switch (pdi->tag)
2105 {
2106 case DW_TAG_subprogram:
2cfa0c8d 2107 if (pdi->is_external || cu->language == language_ada)
c906108c 2108 {
2cfa0c8d
JB
2109 /* brobecker/2007-12-26: Normally, only "external" DIEs are part
2110 of the global scope. But in Ada, we want to be able to access
2111 nested procedures globally. So all Ada subprograms are stored
2112 in the global scope. */
38d518c9 2113 /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
c5aa993b 2114 mst_text, objfile); */
38d518c9 2115 psym = add_psymbol_to_list (actual_name, strlen (actual_name),
5c4e30ca
DC
2116 VAR_DOMAIN, LOC_BLOCK,
2117 &objfile->global_psymbols,
2118 0, pdi->lowpc + baseaddr,
e142c38c 2119 cu->language, objfile);
c906108c
SS
2120 }
2121 else
2122 {
38d518c9 2123 /*prim_record_minimal_symbol (actual_name, pdi->lowpc + baseaddr,
c5aa993b 2124 mst_file_text, objfile); */
38d518c9 2125 psym = add_psymbol_to_list (actual_name, strlen (actual_name),
5c4e30ca
DC
2126 VAR_DOMAIN, LOC_BLOCK,
2127 &objfile->static_psymbols,
2128 0, pdi->lowpc + baseaddr,
e142c38c 2129 cu->language, objfile);
c906108c
SS
2130 }
2131 break;
2132 case DW_TAG_variable:
2133 if (pdi->is_external)
2134 {
2135 /* Global Variable.
2136 Don't enter into the minimal symbol tables as there is
2137 a minimal symbol table entry from the ELF symbols already.
2138 Enter into partial symbol table if it has a location
2139 descriptor or a type.
2140 If the location descriptor is missing, new_symbol will create
2141 a LOC_UNRESOLVED symbol, the address of the variable will then
2142 be determined from the minimal symbol table whenever the variable
2143 is referenced.
2144 The address for the partial symbol table entry is not
2145 used by GDB, but it comes in handy for debugging partial symbol
2146 table building. */
2147
2148 if (pdi->locdesc)
e7c27a73 2149 addr = decode_locdesc (pdi->locdesc, cu);
c906108c 2150 if (pdi->locdesc || pdi->has_type)
38d518c9 2151 psym = add_psymbol_to_list (actual_name, strlen (actual_name),
5c4e30ca
DC
2152 VAR_DOMAIN, LOC_STATIC,
2153 &objfile->global_psymbols,
2154 0, addr + baseaddr,
e142c38c 2155 cu->language, objfile);
c906108c
SS
2156 }
2157 else
2158 {
2159 /* Static Variable. Skip symbols without location descriptors. */
2160 if (pdi->locdesc == NULL)
decbce07
MS
2161 {
2162 if (built_actual_name)
2163 xfree (actual_name);
2164 return;
2165 }
e7c27a73 2166 addr = decode_locdesc (pdi->locdesc, cu);
38d518c9 2167 /*prim_record_minimal_symbol (actual_name, addr + baseaddr,
c5aa993b 2168 mst_file_data, objfile); */
38d518c9 2169 psym = add_psymbol_to_list (actual_name, strlen (actual_name),
5c4e30ca
DC
2170 VAR_DOMAIN, LOC_STATIC,
2171 &objfile->static_psymbols,
2172 0, addr + baseaddr,
e142c38c 2173 cu->language, objfile);
c906108c
SS
2174 }
2175 break;
2176 case DW_TAG_typedef:
2177 case DW_TAG_base_type:
a02abb62 2178 case DW_TAG_subrange_type:
38d518c9 2179 add_psymbol_to_list (actual_name, strlen (actual_name),
176620f1 2180 VAR_DOMAIN, LOC_TYPEDEF,
c906108c 2181 &objfile->static_psymbols,
e142c38c 2182 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 2183 break;
72bf9492
DJ
2184 case DW_TAG_namespace:
2185 add_psymbol_to_list (actual_name, strlen (actual_name),
2186 VAR_DOMAIN, LOC_TYPEDEF,
2187 &objfile->global_psymbols,
2188 0, (CORE_ADDR) 0, cu->language, objfile);
2189 break;
c906108c 2190 case DW_TAG_class_type:
680b30c7 2191 case DW_TAG_interface_type:
c906108c
SS
2192 case DW_TAG_structure_type:
2193 case DW_TAG_union_type:
2194 case DW_TAG_enumeration_type:
fa4028e9
JB
2195 /* Skip external references. The DWARF standard says in the section
2196 about "Structure, Union, and Class Type Entries": "An incomplete
2197 structure, union or class type is represented by a structure,
2198 union or class entry that does not have a byte size attribute
2199 and that has a DW_AT_declaration attribute." */
2200 if (!pdi->has_byte_size && pdi->is_declaration)
decbce07
MS
2201 {
2202 if (built_actual_name)
2203 xfree (actual_name);
2204 return;
2205 }
fa4028e9 2206
63d06c5c
DC
2207 /* NOTE: carlton/2003-10-07: See comment in new_symbol about
2208 static vs. global. */
38d518c9 2209 add_psymbol_to_list (actual_name, strlen (actual_name),
176620f1 2210 STRUCT_DOMAIN, LOC_TYPEDEF,
987504bb
JJ
2211 (cu->language == language_cplus
2212 || cu->language == language_java)
63d06c5c
DC
2213 ? &objfile->global_psymbols
2214 : &objfile->static_psymbols,
e142c38c 2215 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c 2216
c906108c
SS
2217 break;
2218 case DW_TAG_enumerator:
38d518c9 2219 add_psymbol_to_list (actual_name, strlen (actual_name),
176620f1 2220 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
2221 (cu->language == language_cplus
2222 || cu->language == language_java)
f6fe98ef
DJ
2223 ? &objfile->global_psymbols
2224 : &objfile->static_psymbols,
e142c38c 2225 0, (CORE_ADDR) 0, cu->language, objfile);
c906108c
SS
2226 break;
2227 default:
2228 break;
2229 }
5c4e30ca
DC
2230
2231 /* Check to see if we should scan the name for possible namespace
2232 info. Only do this if this is C++, if we don't have namespace
2233 debugging info in the file, if the psym is of an appropriate type
2234 (otherwise we'll have psym == NULL), and if we actually had a
2235 mangled name to begin with. */
2236
72bf9492
DJ
2237 /* FIXME drow/2004-02-22: Why don't we do this for classes, i.e. the
2238 cases which do not set PSYM above? */
2239
e142c38c 2240 if (cu->language == language_cplus
72bf9492 2241 && cu->has_namespace_info == 0
5c4e30ca
DC
2242 && psym != NULL
2243 && SYMBOL_CPLUS_DEMANGLED_NAME (psym) != NULL)
2244 cp_check_possible_namespace_symbols (SYMBOL_CPLUS_DEMANGLED_NAME (psym),
2245 objfile);
72bf9492
DJ
2246
2247 if (built_actual_name)
2248 xfree (actual_name);
c906108c
SS
2249}
2250
72bf9492
DJ
2251/* Determine whether a die of type TAG living in a C++ class or
2252 namespace needs to have the name of the scope prepended to the
63d06c5c
DC
2253 name listed in the die. */
2254
2255static int
72bf9492 2256pdi_needs_namespace (enum dwarf_tag tag)
63d06c5c 2257{
63d06c5c
DC
2258 switch (tag)
2259 {
72bf9492 2260 case DW_TAG_namespace:
63d06c5c
DC
2261 case DW_TAG_typedef:
2262 case DW_TAG_class_type:
680b30c7 2263 case DW_TAG_interface_type:
63d06c5c
DC
2264 case DW_TAG_structure_type:
2265 case DW_TAG_union_type:
2266 case DW_TAG_enumeration_type:
2267 case DW_TAG_enumerator:
2268 return 1;
2269 default:
2270 return 0;
2271 }
2272}
2273
5c4e30ca
DC
2274/* Read a partial die corresponding to a namespace; also, add a symbol
2275 corresponding to that namespace to the symbol table. NAMESPACE is
2276 the name of the enclosing namespace. */
91c24f0a 2277
72bf9492
DJ
2278static void
2279add_partial_namespace (struct partial_die_info *pdi,
91c24f0a 2280 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 2281 int need_pc, struct dwarf2_cu *cu)
91c24f0a 2282{
e7c27a73 2283 struct objfile *objfile = cu->objfile;
5c4e30ca 2284
72bf9492 2285 /* Add a symbol for the namespace. */
e7c27a73 2286
72bf9492 2287 add_partial_symbol (pdi, cu);
5c4e30ca
DC
2288
2289 /* Now scan partial symbols in that namespace. */
2290
91c24f0a 2291 if (pdi->has_children)
5734ee8b 2292 scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
91c24f0a
DC
2293}
2294
5d7cb8df
JK
2295/* Read a partial die corresponding to a Fortran module. */
2296
2297static void
2298add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
2299 CORE_ADDR *highpc, int need_pc, struct dwarf2_cu *cu)
2300{
2301 /* Now scan partial symbols in that module.
2302
2303 FIXME: Support the separate Fortran module namespaces. */
2304
2305 if (pdi->has_children)
2306 scan_partial_symbols (pdi->die_child, lowpc, highpc, need_pc, cu);
2307}
2308
bc30ff58
JB
2309/* Read a partial die corresponding to a subprogram and create a partial
2310 symbol for that subprogram. When the CU language allows it, this
2311 routine also defines a partial symbol for each nested subprogram
2312 that this subprogram contains.
2313
2314 DIE my also be a lexical block, in which case we simply search
2315 recursively for suprograms defined inside that lexical block.
2316 Again, this is only performed when the CU language allows this
2317 type of definitions. */
2318
2319static void
2320add_partial_subprogram (struct partial_die_info *pdi,
2321 CORE_ADDR *lowpc, CORE_ADDR *highpc,
5734ee8b 2322 int need_pc, struct dwarf2_cu *cu)
bc30ff58
JB
2323{
2324 if (pdi->tag == DW_TAG_subprogram)
2325 {
2326 if (pdi->has_pc_info)
2327 {
2328 if (pdi->lowpc < *lowpc)
2329 *lowpc = pdi->lowpc;
2330 if (pdi->highpc > *highpc)
2331 *highpc = pdi->highpc;
5734ee8b
DJ
2332 if (need_pc)
2333 {
2334 CORE_ADDR baseaddr;
2335 struct objfile *objfile = cu->objfile;
2336
2337 baseaddr = ANOFFSET (objfile->section_offsets,
2338 SECT_OFF_TEXT (objfile));
2339 addrmap_set_empty (objfile->psymtabs_addrmap,
2340 pdi->lowpc, pdi->highpc - 1,
2341 cu->per_cu->psymtab);
2342 }
bc30ff58
JB
2343 if (!pdi->is_declaration)
2344 add_partial_symbol (pdi, cu);
2345 }
2346 }
2347
2348 if (! pdi->has_children)
2349 return;
2350
2351 if (cu->language == language_ada)
2352 {
2353 pdi = pdi->die_child;
2354 while (pdi != NULL)
2355 {
2356 fixup_partial_die (pdi, cu);
2357 if (pdi->tag == DW_TAG_subprogram
2358 || pdi->tag == DW_TAG_lexical_block)
5734ee8b 2359 add_partial_subprogram (pdi, lowpc, highpc, need_pc, cu);
bc30ff58
JB
2360 pdi = pdi->die_sibling;
2361 }
2362 }
2363}
2364
72bf9492
DJ
2365/* See if we can figure out if the class lives in a namespace. We do
2366 this by looking for a member function; its demangled name will
2367 contain namespace info, if there is any. */
63d06c5c 2368
72bf9492
DJ
2369static void
2370guess_structure_name (struct partial_die_info *struct_pdi,
2371 struct dwarf2_cu *cu)
63d06c5c 2372{
987504bb
JJ
2373 if ((cu->language == language_cplus
2374 || cu->language == language_java)
72bf9492 2375 && cu->has_namespace_info == 0
63d06c5c
DC
2376 && struct_pdi->has_children)
2377 {
63d06c5c
DC
2378 /* NOTE: carlton/2003-10-07: Getting the info this way changes
2379 what template types look like, because the demangler
2380 frequently doesn't give the same name as the debug info. We
2381 could fix this by only using the demangled name to get the
134d01f1 2382 prefix (but see comment in read_structure_type). */
63d06c5c 2383
72bf9492
DJ
2384 struct partial_die_info *child_pdi = struct_pdi->die_child;
2385 struct partial_die_info *real_pdi;
5d51ca54 2386
72bf9492
DJ
2387 /* If this DIE (this DIE's specification, if any) has a parent, then
2388 we should not do this. We'll prepend the parent's fully qualified
2389 name when we create the partial symbol. */
5d51ca54 2390
72bf9492 2391 real_pdi = struct_pdi;
72bf9492 2392 while (real_pdi->has_specification)
10b3939b 2393 real_pdi = find_partial_die (real_pdi->spec_offset, cu);
63d06c5c 2394
72bf9492
DJ
2395 if (real_pdi->die_parent != NULL)
2396 return;
63d06c5c 2397
72bf9492
DJ
2398 while (child_pdi != NULL)
2399 {
2400 if (child_pdi->tag == DW_TAG_subprogram)
63d06c5c 2401 {
72bf9492 2402 char *actual_class_name
31c27f77
JJ
2403 = language_class_name_from_physname (cu->language_defn,
2404 child_pdi->name);
63d06c5c 2405 if (actual_class_name != NULL)
72bf9492
DJ
2406 {
2407 struct_pdi->name
2408 = obsavestring (actual_class_name,
2409 strlen (actual_class_name),
2410 &cu->comp_unit_obstack);
2411 xfree (actual_class_name);
2412 }
63d06c5c
DC
2413 break;
2414 }
72bf9492
DJ
2415
2416 child_pdi = child_pdi->die_sibling;
63d06c5c
DC
2417 }
2418 }
63d06c5c
DC
2419}
2420
91c24f0a
DC
2421/* Read a partial die corresponding to an enumeration type. */
2422
72bf9492
DJ
2423static void
2424add_partial_enumeration (struct partial_die_info *enum_pdi,
2425 struct dwarf2_cu *cu)
91c24f0a 2426{
e7c27a73 2427 struct objfile *objfile = cu->objfile;
91c24f0a 2428 bfd *abfd = objfile->obfd;
72bf9492 2429 struct partial_die_info *pdi;
91c24f0a
DC
2430
2431 if (enum_pdi->name != NULL)
72bf9492
DJ
2432 add_partial_symbol (enum_pdi, cu);
2433
2434 pdi = enum_pdi->die_child;
2435 while (pdi)
91c24f0a 2436 {
72bf9492 2437 if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
e2e0b3e5 2438 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
91c24f0a 2439 else
72bf9492
DJ
2440 add_partial_symbol (pdi, cu);
2441 pdi = pdi->die_sibling;
91c24f0a 2442 }
91c24f0a
DC
2443}
2444
4bb7a0a7
DJ
2445/* Read the initial uleb128 in the die at INFO_PTR in compilation unit CU.
2446 Return the corresponding abbrev, or NULL if the number is zero (indicating
2447 an empty DIE). In either case *BYTES_READ will be set to the length of
2448 the initial number. */
2449
2450static struct abbrev_info *
fe1b8b76 2451peek_die_abbrev (gdb_byte *info_ptr, unsigned int *bytes_read,
891d2f0b 2452 struct dwarf2_cu *cu)
4bb7a0a7
DJ
2453{
2454 bfd *abfd = cu->objfile->obfd;
2455 unsigned int abbrev_number;
2456 struct abbrev_info *abbrev;
2457
2458 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
2459
2460 if (abbrev_number == 0)
2461 return NULL;
2462
2463 abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
2464 if (!abbrev)
2465 {
8a3fe4f8 2466 error (_("Dwarf Error: Could not find abbrev number %d [in module %s]"), abbrev_number,
4bb7a0a7
DJ
2467 bfd_get_filename (abfd));
2468 }
2469
2470 return abbrev;
2471}
2472
2473/* Scan the debug information for CU starting at INFO_PTR. Returns a
2474 pointer to the end of a series of DIEs, terminated by an empty
2475 DIE. Any children of the skipped DIEs will also be skipped. */
2476
fe1b8b76
JB
2477static gdb_byte *
2478skip_children (gdb_byte *info_ptr, struct dwarf2_cu *cu)
4bb7a0a7
DJ
2479{
2480 struct abbrev_info *abbrev;
2481 unsigned int bytes_read;
2482
2483 while (1)
2484 {
2485 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
2486 if (abbrev == NULL)
2487 return info_ptr + bytes_read;
2488 else
2489 info_ptr = skip_one_die (info_ptr + bytes_read, abbrev, cu);
2490 }
2491}
2492
2493/* Scan the debug information for CU starting at INFO_PTR. INFO_PTR
2494 should point just after the initial uleb128 of a DIE, and the
2495 abbrev corresponding to that skipped uleb128 should be passed in
2496 ABBREV. Returns a pointer to this DIE's sibling, skipping any
2497 children. */
2498
fe1b8b76
JB
2499static gdb_byte *
2500skip_one_die (gdb_byte *info_ptr, struct abbrev_info *abbrev,
4bb7a0a7
DJ
2501 struct dwarf2_cu *cu)
2502{
2503 unsigned int bytes_read;
2504 struct attribute attr;
2505 bfd *abfd = cu->objfile->obfd;
2506 unsigned int form, i;
2507
2508 for (i = 0; i < abbrev->num_attrs; i++)
2509 {
2510 /* The only abbrev we care about is DW_AT_sibling. */
2511 if (abbrev->attrs[i].name == DW_AT_sibling)
2512 {
2513 read_attribute (&attr, &abbrev->attrs[i],
2514 abfd, info_ptr, cu);
2515 if (attr.form == DW_FORM_ref_addr)
e2e0b3e5 2516 complaint (&symfile_complaints, _("ignoring absolute DW_AT_sibling"));
4bb7a0a7 2517 else
dce234bc 2518 return dwarf2_per_objfile->info.buffer
c764a876 2519 + dwarf2_get_ref_die_offset (&attr);
4bb7a0a7
DJ
2520 }
2521
2522 /* If it isn't DW_AT_sibling, skip this attribute. */
2523 form = abbrev->attrs[i].form;
2524 skip_attribute:
2525 switch (form)
2526 {
2527 case DW_FORM_addr:
2528 case DW_FORM_ref_addr:
2529 info_ptr += cu->header.addr_size;
2530 break;
2531 case DW_FORM_data1:
2532 case DW_FORM_ref1:
2533 case DW_FORM_flag:
2534 info_ptr += 1;
2535 break;
2536 case DW_FORM_data2:
2537 case DW_FORM_ref2:
2538 info_ptr += 2;
2539 break;
2540 case DW_FORM_data4:
2541 case DW_FORM_ref4:
2542 info_ptr += 4;
2543 break;
2544 case DW_FORM_data8:
2545 case DW_FORM_ref8:
2546 info_ptr += 8;
2547 break;
2548 case DW_FORM_string:
2549 read_string (abfd, info_ptr, &bytes_read);
2550 info_ptr += bytes_read;
2551 break;
2552 case DW_FORM_strp:
2553 info_ptr += cu->header.offset_size;
2554 break;
2555 case DW_FORM_block:
2556 info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
2557 info_ptr += bytes_read;
2558 break;
2559 case DW_FORM_block1:
2560 info_ptr += 1 + read_1_byte (abfd, info_ptr);
2561 break;
2562 case DW_FORM_block2:
2563 info_ptr += 2 + read_2_bytes (abfd, info_ptr);
2564 break;
2565 case DW_FORM_block4:
2566 info_ptr += 4 + read_4_bytes (abfd, info_ptr);
2567 break;
2568 case DW_FORM_sdata:
2569 case DW_FORM_udata:
2570 case DW_FORM_ref_udata:
2571 info_ptr = skip_leb128 (abfd, info_ptr);
2572 break;
2573 case DW_FORM_indirect:
2574 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
2575 info_ptr += bytes_read;
2576 /* We need to continue parsing from here, so just go back to
2577 the top. */
2578 goto skip_attribute;
2579
2580 default:
8a3fe4f8 2581 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
4bb7a0a7
DJ
2582 dwarf_form_name (form),
2583 bfd_get_filename (abfd));
2584 }
2585 }
2586
2587 if (abbrev->has_children)
2588 return skip_children (info_ptr, cu);
2589 else
2590 return info_ptr;
2591}
2592
2593/* Locate ORIG_PDI's sibling; INFO_PTR should point to the start of
2594 the next DIE after ORIG_PDI. */
91c24f0a 2595
fe1b8b76
JB
2596static gdb_byte *
2597locate_pdi_sibling (struct partial_die_info *orig_pdi, gdb_byte *info_ptr,
e7c27a73 2598 bfd *abfd, struct dwarf2_cu *cu)
91c24f0a
DC
2599{
2600 /* Do we know the sibling already? */
72bf9492 2601
91c24f0a
DC
2602 if (orig_pdi->sibling)
2603 return orig_pdi->sibling;
2604
2605 /* Are there any children to deal with? */
2606
2607 if (!orig_pdi->has_children)
2608 return info_ptr;
2609
4bb7a0a7 2610 /* Skip the children the long way. */
91c24f0a 2611
4bb7a0a7 2612 return skip_children (info_ptr, cu);
91c24f0a
DC
2613}
2614
c906108c
SS
2615/* Expand this partial symbol table into a full symbol table. */
2616
2617static void
fba45db2 2618dwarf2_psymtab_to_symtab (struct partial_symtab *pst)
c906108c
SS
2619{
2620 /* FIXME: This is barely more than a stub. */
2621 if (pst != NULL)
2622 {
2623 if (pst->readin)
2624 {
8a3fe4f8 2625 warning (_("bug: psymtab for %s is already read in."), pst->filename);
c906108c
SS
2626 }
2627 else
2628 {
2629 if (info_verbose)
2630 {
a3f17187 2631 printf_filtered (_("Reading in symbols for %s..."), pst->filename);
c906108c
SS
2632 gdb_flush (gdb_stdout);
2633 }
2634
10b3939b
DJ
2635 /* Restore our global data. */
2636 dwarf2_per_objfile = objfile_data (pst->objfile,
2637 dwarf2_objfile_data_key);
2638
b2ab525c
KB
2639 /* If this psymtab is constructed from a debug-only objfile, the
2640 has_section_at_zero flag will not necessarily be correct. We
2641 can get the correct value for this flag by looking at the data
2642 associated with the (presumably stripped) associated objfile. */
2643 if (pst->objfile->separate_debug_objfile_backlink)
2644 {
2645 struct dwarf2_per_objfile *dpo_backlink
2646 = objfile_data (pst->objfile->separate_debug_objfile_backlink,
2647 dwarf2_objfile_data_key);
2648 dwarf2_per_objfile->has_section_at_zero
2649 = dpo_backlink->has_section_at_zero;
2650 }
2651
c906108c
SS
2652 psymtab_to_symtab_1 (pst);
2653
2654 /* Finish up the debug error message. */
2655 if (info_verbose)
a3f17187 2656 printf_filtered (_("done.\n"));
c906108c
SS
2657 }
2658 }
2659}
2660
10b3939b
DJ
2661/* Add PER_CU to the queue. */
2662
2663static void
03dd20cc 2664queue_comp_unit (struct dwarf2_per_cu_data *per_cu, struct objfile *objfile)
10b3939b
DJ
2665{
2666 struct dwarf2_queue_item *item;
2667
2668 per_cu->queued = 1;
2669 item = xmalloc (sizeof (*item));
2670 item->per_cu = per_cu;
2671 item->next = NULL;
2672
2673 if (dwarf2_queue == NULL)
2674 dwarf2_queue = item;
2675 else
2676 dwarf2_queue_tail->next = item;
2677
2678 dwarf2_queue_tail = item;
03dd20cc
DJ
2679
2680 /* Either PER_CU is the CU we want to process, or we're following a reference
2681 pointing into PER_CU. Either way, we need its DIEs now. */
2682 load_full_comp_unit (item->per_cu, objfile);
2683 item->per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
2684 dwarf2_per_objfile->read_in_chain = item->per_cu;
10b3939b
DJ
2685}
2686
2687/* Process the queue. */
2688
2689static void
2690process_queue (struct objfile *objfile)
2691{
2692 struct dwarf2_queue_item *item, *next_item;
2693
03dd20cc
DJ
2694 /* The queue starts out with one item, but following a DIE reference
2695 may load a new CU, adding it to the end of the queue. */
10b3939b
DJ
2696 for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
2697 {
31ffec48 2698 if (item->per_cu->psymtab && !item->per_cu->psymtab->readin)
10b3939b
DJ
2699 process_full_comp_unit (item->per_cu);
2700
2701 item->per_cu->queued = 0;
2702 next_item = item->next;
2703 xfree (item);
2704 }
2705
2706 dwarf2_queue_tail = NULL;
2707}
2708
2709/* Free all allocated queue entries. This function only releases anything if
2710 an error was thrown; if the queue was processed then it would have been
2711 freed as we went along. */
2712
2713static void
2714dwarf2_release_queue (void *dummy)
2715{
2716 struct dwarf2_queue_item *item, *last;
2717
2718 item = dwarf2_queue;
2719 while (item)
2720 {
2721 /* Anything still marked queued is likely to be in an
2722 inconsistent state, so discard it. */
2723 if (item->per_cu->queued)
2724 {
2725 if (item->per_cu->cu != NULL)
2726 free_one_cached_comp_unit (item->per_cu->cu);
2727 item->per_cu->queued = 0;
2728 }
2729
2730 last = item;
2731 item = item->next;
2732 xfree (last);
2733 }
2734
2735 dwarf2_queue = dwarf2_queue_tail = NULL;
2736}
2737
2738/* Read in full symbols for PST, and anything it depends on. */
2739
c906108c 2740static void
fba45db2 2741psymtab_to_symtab_1 (struct partial_symtab *pst)
c906108c 2742{
10b3939b 2743 struct dwarf2_per_cu_data *per_cu;
c906108c 2744 struct cleanup *back_to;
aaa75496
JB
2745 int i;
2746
2747 for (i = 0; i < pst->number_of_dependencies; i++)
2748 if (!pst->dependencies[i]->readin)
2749 {
2750 /* Inform about additional files that need to be read in. */
2751 if (info_verbose)
2752 {
a3f17187 2753 /* FIXME: i18n: Need to make this a single string. */
aaa75496
JB
2754 fputs_filtered (" ", gdb_stdout);
2755 wrap_here ("");
2756 fputs_filtered ("and ", gdb_stdout);
2757 wrap_here ("");
2758 printf_filtered ("%s...", pst->dependencies[i]->filename);
2759 wrap_here (""); /* Flush output */
2760 gdb_flush (gdb_stdout);
2761 }
2762 psymtab_to_symtab_1 (pst->dependencies[i]);
2763 }
2764
10b3939b
DJ
2765 per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
2766
2767 if (per_cu == NULL)
aaa75496
JB
2768 {
2769 /* It's an include file, no symbols to read for it.
2770 Everything is in the parent symtab. */
2771 pst->readin = 1;
2772 return;
2773 }
c906108c 2774
10b3939b
DJ
2775 back_to = make_cleanup (dwarf2_release_queue, NULL);
2776
03dd20cc 2777 queue_comp_unit (per_cu, pst->objfile);
10b3939b
DJ
2778
2779 process_queue (pst->objfile);
2780
2781 /* Age the cache, releasing compilation units that have not
2782 been used recently. */
2783 age_cached_comp_units ();
2784
2785 do_cleanups (back_to);
2786}
2787
2788/* Load the DIEs associated with PST and PER_CU into memory. */
2789
2790static struct dwarf2_cu *
31ffec48 2791load_full_comp_unit (struct dwarf2_per_cu_data *per_cu, struct objfile *objfile)
10b3939b 2792{
31ffec48 2793 bfd *abfd = objfile->obfd;
10b3939b 2794 struct dwarf2_cu *cu;
c764a876 2795 unsigned int offset;
fe1b8b76 2796 gdb_byte *info_ptr;
10b3939b
DJ
2797 struct cleanup *back_to, *free_cu_cleanup;
2798 struct attribute *attr;
2799 CORE_ADDR baseaddr;
6502dd73 2800
c906108c 2801 /* Set local variables from the partial symbol table info. */
10b3939b 2802 offset = per_cu->offset;
6502dd73 2803
dce234bc 2804 info_ptr = dwarf2_per_objfile->info.buffer + offset;
63d06c5c 2805
10b3939b
DJ
2806 cu = xmalloc (sizeof (struct dwarf2_cu));
2807 memset (cu, 0, sizeof (struct dwarf2_cu));
c906108c 2808
10b3939b
DJ
2809 /* If an error occurs while loading, release our storage. */
2810 free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
c906108c 2811
31ffec48 2812 cu->objfile = objfile;
e7c27a73 2813
c906108c 2814 /* read in the comp_unit header */
10b3939b 2815 info_ptr = read_comp_unit_head (&cu->header, info_ptr, abfd);
c906108c
SS
2816
2817 /* Read the abbrevs for this compilation unit */
10b3939b
DJ
2818 dwarf2_read_abbrevs (abfd, cu);
2819 back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
2820
2821 cu->header.offset = offset;
c906108c 2822
10b3939b
DJ
2823 cu->per_cu = per_cu;
2824 per_cu->cu = cu;
f792889a 2825 cu->type_hash = per_cu->type_hash;
e142c38c 2826
10b3939b
DJ
2827 /* We use this obstack for block values in dwarf_alloc_block. */
2828 obstack_init (&cu->comp_unit_obstack);
2829
2830 cu->dies = read_comp_unit (info_ptr, abfd, cu);
2831
2832 /* We try not to read any attributes in this function, because not
2833 all objfiles needed for references have been loaded yet, and symbol
2834 table processing isn't initialized. But we have to set the CU language,
2835 or we won't be able to build types correctly. */
2836 attr = dwarf2_attr (cu->dies, DW_AT_language, cu);
2837 if (attr)
2838 set_cu_language (DW_UNSND (attr), cu);
2839 else
2840 set_cu_language (language_minimal, cu);
2841
2842 do_cleanups (back_to);
e142c38c 2843
10b3939b
DJ
2844 /* We've successfully allocated this compilation unit. Let our caller
2845 clean it up when finished with it. */
2846 discard_cleanups (free_cu_cleanup);
c906108c 2847
10b3939b
DJ
2848 return cu;
2849}
2850
2851/* Generate full symbol information for PST and CU, whose DIEs have
2852 already been loaded into memory. */
2853
2854static void
2855process_full_comp_unit (struct dwarf2_per_cu_data *per_cu)
2856{
2857 struct partial_symtab *pst = per_cu->psymtab;
2858 struct dwarf2_cu *cu = per_cu->cu;
2859 struct objfile *objfile = pst->objfile;
2860 bfd *abfd = objfile->obfd;
2861 CORE_ADDR lowpc, highpc;
2862 struct symtab *symtab;
2863 struct cleanup *back_to;
2864 struct attribute *attr;
2865 CORE_ADDR baseaddr;
2866
2867 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
2868
10b3939b
DJ
2869 buildsym_init ();
2870 back_to = make_cleanup (really_free_pendings, NULL);
2871
2872 cu->list_in_scope = &file_symbols;
c906108c 2873
0d53c4c4
DJ
2874 /* Find the base address of the compilation unit for range lists and
2875 location lists. It will normally be specified by DW_AT_low_pc.
2876 In DWARF-3 draft 4, the base address could be overridden by
2877 DW_AT_entry_pc. It's been removed, but GCC still uses this for
2878 compilation units with discontinuous ranges. */
2879
d00adf39
DE
2880 cu->base_known = 0;
2881 cu->base_address = 0;
0d53c4c4 2882
10b3939b 2883 attr = dwarf2_attr (cu->dies, DW_AT_entry_pc, cu);
0d53c4c4
DJ
2884 if (attr)
2885 {
d00adf39
DE
2886 cu->base_address = DW_ADDR (attr);
2887 cu->base_known = 1;
0d53c4c4
DJ
2888 }
2889 else
2890 {
10b3939b 2891 attr = dwarf2_attr (cu->dies, DW_AT_low_pc, cu);
0d53c4c4
DJ
2892 if (attr)
2893 {
d00adf39
DE
2894 cu->base_address = DW_ADDR (attr);
2895 cu->base_known = 1;
0d53c4c4
DJ
2896 }
2897 }
2898
c906108c 2899 /* Do line number decoding in read_file_scope () */
10b3939b 2900 process_die (cu->dies, cu);
c906108c 2901
fae299cd
DC
2902 /* Some compilers don't define a DW_AT_high_pc attribute for the
2903 compilation unit. If the DW_AT_high_pc is missing, synthesize
2904 it, by scanning the DIE's below the compilation unit. */
10b3939b 2905 get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
c906108c 2906
613e1657 2907 symtab = end_symtab (highpc + baseaddr, objfile, SECT_OFF_TEXT (objfile));
c906108c
SS
2908
2909 /* Set symtab language to language from DW_AT_language.
2910 If the compilation is from a C file generated by language preprocessors,
2911 do not set the language if it was already deduced by start_subfile. */
2912 if (symtab != NULL
10b3939b 2913 && !(cu->language == language_c && symtab->language != language_c))
c906108c 2914 {
10b3939b 2915 symtab->language = cu->language;
c906108c
SS
2916 }
2917 pst->symtab = symtab;
2918 pst->readin = 1;
c906108c
SS
2919
2920 do_cleanups (back_to);
2921}
2922
2923/* Process a die and its children. */
2924
2925static void
e7c27a73 2926process_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
2927{
2928 switch (die->tag)
2929 {
2930 case DW_TAG_padding:
2931 break;
2932 case DW_TAG_compile_unit:
e7c27a73 2933 read_file_scope (die, cu);
c906108c
SS
2934 break;
2935 case DW_TAG_subprogram:
c906108c 2936 case DW_TAG_inlined_subroutine:
edb3359d 2937 read_func_scope (die, cu);
c906108c
SS
2938 break;
2939 case DW_TAG_lexical_block:
14898363
L
2940 case DW_TAG_try_block:
2941 case DW_TAG_catch_block:
e7c27a73 2942 read_lexical_block_scope (die, cu);
c906108c
SS
2943 break;
2944 case DW_TAG_class_type:
680b30c7 2945 case DW_TAG_interface_type:
c906108c
SS
2946 case DW_TAG_structure_type:
2947 case DW_TAG_union_type:
134d01f1 2948 process_structure_scope (die, cu);
c906108c
SS
2949 break;
2950 case DW_TAG_enumeration_type:
134d01f1 2951 process_enumeration_scope (die, cu);
c906108c 2952 break;
134d01f1 2953
f792889a
DJ
2954 /* These dies have a type, but processing them does not create
2955 a symbol or recurse to process the children. Therefore we can
2956 read them on-demand through read_type_die. */
c906108c 2957 case DW_TAG_subroutine_type:
72019c9c 2958 case DW_TAG_set_type:
c906108c 2959 case DW_TAG_array_type:
c906108c 2960 case DW_TAG_pointer_type:
c906108c 2961 case DW_TAG_ptr_to_member_type:
c906108c 2962 case DW_TAG_reference_type:
c906108c 2963 case DW_TAG_string_type:
c906108c 2964 break;
134d01f1 2965
c906108c 2966 case DW_TAG_base_type:
a02abb62 2967 case DW_TAG_subrange_type:
cb249c71 2968 case DW_TAG_typedef:
134d01f1
DJ
2969 /* Add a typedef symbol for the type definition, if it has a
2970 DW_AT_name. */
f792889a 2971 new_symbol (die, read_type_die (die, cu), cu);
a02abb62 2972 break;
c906108c 2973 case DW_TAG_common_block:
e7c27a73 2974 read_common_block (die, cu);
c906108c
SS
2975 break;
2976 case DW_TAG_common_inclusion:
2977 break;
d9fa45fe 2978 case DW_TAG_namespace:
63d06c5c 2979 processing_has_namespace_info = 1;
e7c27a73 2980 read_namespace (die, cu);
d9fa45fe 2981 break;
5d7cb8df
JK
2982 case DW_TAG_module:
2983 read_module (die, cu);
2984 break;
d9fa45fe
DC
2985 case DW_TAG_imported_declaration:
2986 case DW_TAG_imported_module:
63d06c5c 2987 processing_has_namespace_info = 1;
27aa8d6a
SW
2988 if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
2989 || cu->language != language_fortran))
2990 complaint (&symfile_complaints, _("Tag '%s' has unexpected children"),
2991 dwarf_tag_name (die->tag));
2992 read_import_statement (die, cu);
d9fa45fe 2993 break;
c906108c 2994 default:
e7c27a73 2995 new_symbol (die, NULL, cu);
c906108c
SS
2996 break;
2997 }
2998}
2999
0114d602
DJ
3000/* Return the fully qualified name of DIE, based on its DW_AT_name.
3001 If scope qualifiers are appropriate they will be added. The result
3002 will be allocated on the objfile_obstack, or NULL if the DIE does
3003 not have a name. */
3004
3005static const char *
3006dwarf2_full_name (struct die_info *die, struct dwarf2_cu *cu)
3007{
3008 struct attribute *attr;
3009 char *prefix, *name;
3010 struct ui_file *buf = NULL;
3011
3012 name = dwarf2_name (die, cu);
3013 if (!name)
3014 return NULL;
3015
3016 /* These are the only languages we know how to qualify names in. */
3017 if (cu->language != language_cplus
3018 && cu->language != language_java)
3019 return name;
3020
3021 /* If no prefix is necessary for this type of DIE, return the
3022 unqualified name. The other three tags listed could be handled
3023 in pdi_needs_namespace, but that requires broader changes. */
3024 if (!pdi_needs_namespace (die->tag)
3025 && die->tag != DW_TAG_subprogram
3026 && die->tag != DW_TAG_variable
3027 && die->tag != DW_TAG_member)
3028 return name;
3029
3030 prefix = determine_prefix (die, cu);
3031 if (*prefix != '\0')
3032 name = typename_concat (&cu->objfile->objfile_obstack, prefix,
3033 name, cu);
3034
3035 return name;
3036}
3037
27aa8d6a
SW
3038/* Read the import statement specified by the given die and record it. */
3039
3040static void
3041read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
3042{
3043 struct attribute *import_attr;
3044 struct die_info *imported_die;
3045 const char *imported_name;
3046
3047 import_attr = dwarf2_attr (die, DW_AT_import, cu);
3048 if (import_attr == NULL)
3049 {
3050 complaint (&symfile_complaints, _("Tag '%s' has no DW_AT_import"),
3051 dwarf_tag_name (die->tag));
3052 return;
3053 }
3054
3055 imported_die = follow_die_ref (die, import_attr, &cu);
3056 imported_name = dwarf2_name (imported_die, cu);
3057 if (imported_name == NULL)
3058 {
3059 /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
3060
3061 The import in the following code:
3062 namespace A
3063 {
3064 typedef int B;
3065 }
3066
3067 int main ()
3068 {
3069 using A::B;
3070 B b;
3071 return b;
3072 }
3073
3074 ...
3075 <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
3076 <52> DW_AT_decl_file : 1
3077 <53> DW_AT_decl_line : 6
3078 <54> DW_AT_import : <0x75>
3079 <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
3080 <59> DW_AT_name : B
3081 <5b> DW_AT_decl_file : 1
3082 <5c> DW_AT_decl_line : 2
3083 <5d> DW_AT_type : <0x6e>
3084 ...
3085 <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
3086 <76> DW_AT_byte_size : 4
3087 <77> DW_AT_encoding : 5 (signed)
3088
3089 imports the wrong die ( 0x75 instead of 0x58 ).
3090 This case will be ignored until the gcc bug is fixed. */
3091 return;
3092 }
3093
3094 /* FIXME: dwarf2_name (die); for the local name after import. */
3095
3096 using_directives = cp_add_using (imported_name, strlen (imported_name), 0,
3097 using_directives);
3098}
3099
5fb290d7 3100static void
e142c38c 3101initialize_cu_func_list (struct dwarf2_cu *cu)
5fb290d7 3102{
e142c38c 3103 cu->first_fn = cu->last_fn = cu->cached_fn = NULL;
5fb290d7
DJ
3104}
3105
cb1df416
DJ
3106static void
3107free_cu_line_header (void *arg)
3108{
3109 struct dwarf2_cu *cu = arg;
3110
3111 free_line_header (cu->line_header);
3112 cu->line_header = NULL;
3113}
3114
c906108c 3115static void
e7c27a73 3116read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 3117{
e7c27a73
DJ
3118 struct objfile *objfile = cu->objfile;
3119 struct comp_unit_head *cu_header = &cu->header;
debd256d 3120 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
2acceee2 3121 CORE_ADDR lowpc = ((CORE_ADDR) -1);
c906108c
SS
3122 CORE_ADDR highpc = ((CORE_ADDR) 0);
3123 struct attribute *attr;
e1024ff1 3124 char *name = NULL;
c906108c
SS
3125 char *comp_dir = NULL;
3126 struct die_info *child_die;
3127 bfd *abfd = objfile->obfd;
debd256d 3128 struct line_header *line_header = 0;
e142c38c
DJ
3129 CORE_ADDR baseaddr;
3130
3131 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 3132
fae299cd 3133 get_scope_pc_bounds (die, &lowpc, &highpc, cu);
c906108c
SS
3134
3135 /* If we didn't find a lowpc, set it to highpc to avoid complaints
3136 from finish_block. */
2acceee2 3137 if (lowpc == ((CORE_ADDR) -1))
c906108c
SS
3138 lowpc = highpc;
3139 lowpc += baseaddr;
3140 highpc += baseaddr;
3141
39cbfefa
DJ
3142 /* Find the filename. Do not use dwarf2_name here, since the filename
3143 is not a source language identifier. */
e142c38c 3144 attr = dwarf2_attr (die, DW_AT_name, cu);
c906108c
SS
3145 if (attr)
3146 {
3147 name = DW_STRING (attr);
3148 }
e1024ff1 3149
e142c38c 3150 attr = dwarf2_attr (die, DW_AT_comp_dir, cu);
c906108c 3151 if (attr)
e1024ff1
DJ
3152 comp_dir = DW_STRING (attr);
3153 else if (name != NULL && IS_ABSOLUTE_PATH (name))
c906108c 3154 {
e1024ff1
DJ
3155 comp_dir = ldirname (name);
3156 if (comp_dir != NULL)
3157 make_cleanup (xfree, comp_dir);
3158 }
3159 if (comp_dir != NULL)
3160 {
3161 /* Irix 6.2 native cc prepends <machine>.: to the compilation
3162 directory, get rid of it. */
3163 char *cp = strchr (comp_dir, ':');
c906108c 3164
e1024ff1
DJ
3165 if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/')
3166 comp_dir = cp + 1;
c906108c
SS
3167 }
3168
e1024ff1
DJ
3169 if (name == NULL)
3170 name = "<unknown>";
3171
e142c38c 3172 attr = dwarf2_attr (die, DW_AT_language, cu);
c906108c
SS
3173 if (attr)
3174 {
e142c38c 3175 set_cu_language (DW_UNSND (attr), cu);
c906108c
SS
3176 }
3177
b0f35d58
DL
3178 attr = dwarf2_attr (die, DW_AT_producer, cu);
3179 if (attr)
3180 cu->producer = DW_STRING (attr);
303b6f5d 3181
c906108c
SS
3182 /* We assume that we're processing GCC output. */
3183 processing_gcc_compilation = 2;
c906108c 3184
df8a16a1
DJ
3185 processing_has_namespace_info = 0;
3186
c906108c
SS
3187 start_symtab (name, comp_dir, lowpc);
3188 record_debugformat ("DWARF 2");
303b6f5d 3189 record_producer (cu->producer);
c906108c 3190
e142c38c 3191 initialize_cu_func_list (cu);
c906108c 3192
cb1df416
DJ
3193 /* Decode line number information if present. We do this before
3194 processing child DIEs, so that the line header table is available
3195 for DW_AT_decl_file. */
e142c38c 3196 attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
5fb290d7
DJ
3197 if (attr)
3198 {
debd256d 3199 unsigned int line_offset = DW_UNSND (attr);
e7c27a73 3200 line_header = dwarf_decode_line_header (line_offset, abfd, cu);
debd256d
JB
3201 if (line_header)
3202 {
cb1df416
DJ
3203 cu->line_header = line_header;
3204 make_cleanup (free_cu_line_header, cu);
aaa75496 3205 dwarf_decode_lines (line_header, comp_dir, abfd, cu, NULL);
debd256d 3206 }
5fb290d7 3207 }
debd256d 3208
cb1df416
DJ
3209 /* Process all dies in compilation unit. */
3210 if (die->child != NULL)
3211 {
3212 child_die = die->child;
3213 while (child_die && child_die->tag)
3214 {
3215 process_die (child_die, cu);
3216 child_die = sibling_die (child_die);
3217 }
3218 }
3219
2e276125
JB
3220 /* Decode macro information, if present. Dwarf 2 macro information
3221 refers to information in the line number info statement program
3222 header, so we can only read it if we've read the header
3223 successfully. */
e142c38c 3224 attr = dwarf2_attr (die, DW_AT_macro_info, cu);
41ff2da1 3225 if (attr && line_header)
2e276125
JB
3226 {
3227 unsigned int macro_offset = DW_UNSND (attr);
3228 dwarf_decode_macros (line_header, macro_offset,
e7c27a73 3229 comp_dir, abfd, cu);
2e276125 3230 }
debd256d 3231 do_cleanups (back_to);
5fb290d7
DJ
3232}
3233
3234static void
e142c38c
DJ
3235add_to_cu_func_list (const char *name, CORE_ADDR lowpc, CORE_ADDR highpc,
3236 struct dwarf2_cu *cu)
5fb290d7
DJ
3237{
3238 struct function_range *thisfn;
3239
3240 thisfn = (struct function_range *)
7b5a2f43 3241 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct function_range));
5fb290d7
DJ
3242 thisfn->name = name;
3243 thisfn->lowpc = lowpc;
3244 thisfn->highpc = highpc;
3245 thisfn->seen_line = 0;
3246 thisfn->next = NULL;
3247
e142c38c
DJ
3248 if (cu->last_fn == NULL)
3249 cu->first_fn = thisfn;
5fb290d7 3250 else
e142c38c 3251 cu->last_fn->next = thisfn;
5fb290d7 3252
e142c38c 3253 cu->last_fn = thisfn;
c906108c
SS
3254}
3255
d389af10
JK
3256/* qsort helper for inherit_abstract_dies. */
3257
3258static int
3259unsigned_int_compar (const void *ap, const void *bp)
3260{
3261 unsigned int a = *(unsigned int *) ap;
3262 unsigned int b = *(unsigned int *) bp;
3263
3264 return (a > b) - (b > a);
3265}
3266
3267/* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
3268 Inherit only the children of the DW_AT_abstract_origin DIE not being already
3269 referenced by DW_AT_abstract_origin from the children of the current DIE. */
3270
3271static void
3272inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
3273{
3274 struct die_info *child_die;
3275 unsigned die_children_count;
3276 /* CU offsets which were referenced by children of the current DIE. */
3277 unsigned *offsets;
3278 unsigned *offsets_end, *offsetp;
3279 /* Parent of DIE - referenced by DW_AT_abstract_origin. */
3280 struct die_info *origin_die;
3281 /* Iterator of the ORIGIN_DIE children. */
3282 struct die_info *origin_child_die;
3283 struct cleanup *cleanups;
3284 struct attribute *attr;
3285
3286 attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
3287 if (!attr)
3288 return;
3289
3290 origin_die = follow_die_ref (die, attr, &cu);
edb3359d
DJ
3291 if (die->tag != origin_die->tag
3292 && !(die->tag == DW_TAG_inlined_subroutine
3293 && origin_die->tag == DW_TAG_subprogram))
d389af10
JK
3294 complaint (&symfile_complaints,
3295 _("DIE 0x%x and its abstract origin 0x%x have different tags"),
3296 die->offset, origin_die->offset);
3297
3298 child_die = die->child;
3299 die_children_count = 0;
3300 while (child_die && child_die->tag)
3301 {
3302 child_die = sibling_die (child_die);
3303 die_children_count++;
3304 }
3305 offsets = xmalloc (sizeof (*offsets) * die_children_count);
3306 cleanups = make_cleanup (xfree, offsets);
3307
3308 offsets_end = offsets;
3309 child_die = die->child;
3310 while (child_die && child_die->tag)
3311 {
3312 attr = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
3313 /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
3314 counterpart may exist. */
3315 if (attr)
3316 {
3317 struct die_info *child_origin_die;
3318
3319 child_origin_die = follow_die_ref (child_die, attr, &cu);
edb3359d
DJ
3320 if (child_die->tag != child_origin_die->tag
3321 && !(child_die->tag == DW_TAG_inlined_subroutine
3322 && child_origin_die->tag == DW_TAG_subprogram))
d389af10
JK
3323 complaint (&symfile_complaints,
3324 _("Child DIE 0x%x and its abstract origin 0x%x have "
3325 "different tags"), child_die->offset,
3326 child_origin_die->offset);
3327 *offsets_end++ = child_origin_die->offset;
3328 }
3329 child_die = sibling_die (child_die);
3330 }
3331 qsort (offsets, offsets_end - offsets, sizeof (*offsets),
3332 unsigned_int_compar);
3333 for (offsetp = offsets + 1; offsetp < offsets_end; offsetp++)
3334 if (offsetp[-1] == *offsetp)
3335 complaint (&symfile_complaints, _("Multiple children of DIE 0x%x refer "
3336 "to DIE 0x%x as their abstract origin"),
3337 die->offset, *offsetp);
3338
3339 offsetp = offsets;
3340 origin_child_die = origin_die->child;
3341 while (origin_child_die && origin_child_die->tag)
3342 {
3343 /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children? */
3344 while (offsetp < offsets_end && *offsetp < origin_child_die->offset)
3345 offsetp++;
3346 if (offsetp >= offsets_end || *offsetp > origin_child_die->offset)
3347 {
3348 /* Found that ORIGIN_CHILD_DIE is really not referenced. */
3349 process_die (origin_child_die, cu);
3350 }
3351 origin_child_die = sibling_die (origin_child_die);
3352 }
3353
3354 do_cleanups (cleanups);
3355}
3356
c906108c 3357static void
e7c27a73 3358read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 3359{
e7c27a73 3360 struct objfile *objfile = cu->objfile;
52f0bd74 3361 struct context_stack *new;
c906108c
SS
3362 CORE_ADDR lowpc;
3363 CORE_ADDR highpc;
3364 struct die_info *child_die;
edb3359d 3365 struct attribute *attr, *call_line, *call_file;
c906108c 3366 char *name;
e142c38c 3367 CORE_ADDR baseaddr;
801e3a5b 3368 struct block *block;
edb3359d
DJ
3369 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
3370
3371 if (inlined_func)
3372 {
3373 /* If we do not have call site information, we can't show the
3374 caller of this inlined function. That's too confusing, so
3375 only use the scope for local variables. */
3376 call_line = dwarf2_attr (die, DW_AT_call_line, cu);
3377 call_file = dwarf2_attr (die, DW_AT_call_file, cu);
3378 if (call_line == NULL || call_file == NULL)
3379 {
3380 read_lexical_block_scope (die, cu);
3381 return;
3382 }
3383 }
c906108c 3384
e142c38c
DJ
3385 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3386
3387 name = dwarf2_linkage_name (die, cu);
c906108c
SS
3388
3389 /* Ignore functions with missing or empty names and functions with
3390 missing or invalid low and high pc attributes. */
e7c27a73 3391 if (name == NULL || !dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu))
c906108c
SS
3392 return;
3393
3394 lowpc += baseaddr;
3395 highpc += baseaddr;
3396
5fb290d7 3397 /* Record the function range for dwarf_decode_lines. */
e142c38c 3398 add_to_cu_func_list (name, lowpc, highpc, cu);
5fb290d7 3399
c906108c 3400 new = push_context (0, lowpc);
f792889a 3401 new->name = new_symbol (die, read_type_die (die, cu), cu);
4c2df51b 3402
4cecd739
DJ
3403 /* If there is a location expression for DW_AT_frame_base, record
3404 it. */
e142c38c 3405 attr = dwarf2_attr (die, DW_AT_frame_base, cu);
4c2df51b 3406 if (attr)
c034e007
AC
3407 /* FIXME: cagney/2004-01-26: The DW_AT_frame_base's location
3408 expression is being recorded directly in the function's symbol
3409 and not in a separate frame-base object. I guess this hack is
3410 to avoid adding some sort of frame-base adjunct/annex to the
3411 function's symbol :-(. The problem with doing this is that it
3412 results in a function symbol with a location expression that
3413 has nothing to do with the location of the function, ouch! The
3414 relationship should be: a function's symbol has-a frame base; a
3415 frame-base has-a location expression. */
e7c27a73 3416 dwarf2_symbol_mark_computed (attr, new->name, cu);
4c2df51b 3417
e142c38c 3418 cu->list_in_scope = &local_symbols;
c906108c 3419
639d11d3 3420 if (die->child != NULL)
c906108c 3421 {
639d11d3 3422 child_die = die->child;
c906108c
SS
3423 while (child_die && child_die->tag)
3424 {
e7c27a73 3425 process_die (child_die, cu);
c906108c
SS
3426 child_die = sibling_die (child_die);
3427 }
3428 }
3429
d389af10
JK
3430 inherit_abstract_dies (die, cu);
3431
c906108c
SS
3432 new = pop_context ();
3433 /* Make a block for the local symbols within. */
801e3a5b
JB
3434 block = finish_block (new->name, &local_symbols, new->old_blocks,
3435 lowpc, highpc, objfile);
3436
df8a16a1
DJ
3437 /* For C++, set the block's scope. */
3438 if (cu->language == language_cplus)
3439 cp_set_block_scope (new->name, block, &objfile->objfile_obstack,
0114d602 3440 determine_prefix (die, cu),
df8a16a1
DJ
3441 processing_has_namespace_info);
3442
801e3a5b
JB
3443 /* If we have address ranges, record them. */
3444 dwarf2_record_block_ranges (die, block, baseaddr, cu);
208d8187
JB
3445
3446 /* In C++, we can have functions nested inside functions (e.g., when
3447 a function declares a class that has methods). This means that
3448 when we finish processing a function scope, we may need to go
3449 back to building a containing block's symbol lists. */
3450 local_symbols = new->locals;
3451 param_symbols = new->params;
27aa8d6a 3452 using_directives = new->using_directives;
208d8187 3453
921e78cf
JB
3454 /* If we've finished processing a top-level function, subsequent
3455 symbols go in the file symbol list. */
3456 if (outermost_context_p ())
e142c38c 3457 cu->list_in_scope = &file_symbols;
c906108c
SS
3458}
3459
3460/* Process all the DIES contained within a lexical block scope. Start
3461 a new scope, process the dies, and then close the scope. */
3462
3463static void
e7c27a73 3464read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
c906108c 3465{
e7c27a73 3466 struct objfile *objfile = cu->objfile;
52f0bd74 3467 struct context_stack *new;
c906108c
SS
3468 CORE_ADDR lowpc, highpc;
3469 struct die_info *child_die;
e142c38c
DJ
3470 CORE_ADDR baseaddr;
3471
3472 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c
SS
3473
3474 /* Ignore blocks with missing or invalid low and high pc attributes. */
af34e669
DJ
3475 /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
3476 as multiple lexical blocks? Handling children in a sane way would
3477 be nasty. Might be easier to properly extend generic blocks to
3478 describe ranges. */
e7c27a73 3479 if (!dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu))
c906108c
SS
3480 return;
3481 lowpc += baseaddr;
3482 highpc += baseaddr;
3483
3484 push_context (0, lowpc);
639d11d3 3485 if (die->child != NULL)
c906108c 3486 {
639d11d3 3487 child_die = die->child;
c906108c
SS
3488 while (child_die && child_die->tag)
3489 {
e7c27a73 3490 process_die (child_die, cu);
c906108c
SS
3491 child_die = sibling_die (child_die);
3492 }
3493 }
3494 new = pop_context ();
3495
3496 if (local_symbols != NULL)
3497 {
801e3a5b
JB
3498 struct block *block
3499 = finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
3500 highpc, objfile);
3501
3502 /* Note that recording ranges after traversing children, as we
3503 do here, means that recording a parent's ranges entails
3504 walking across all its children's ranges as they appear in
3505 the address map, which is quadratic behavior.
3506
3507 It would be nicer to record the parent's ranges before
3508 traversing its children, simply overriding whatever you find
3509 there. But since we don't even decide whether to create a
3510 block until after we've traversed its children, that's hard
3511 to do. */
3512 dwarf2_record_block_ranges (die, block, baseaddr, cu);
c906108c
SS
3513 }
3514 local_symbols = new->locals;
27aa8d6a 3515 using_directives = new->using_directives;
c906108c
SS
3516}
3517
43039443 3518/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
ff013f42
JK
3519 Return 1 if the attributes are present and valid, otherwise, return 0.
3520 If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'. */
43039443
JK
3521
3522static int
3523dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
ff013f42
JK
3524 CORE_ADDR *high_return, struct dwarf2_cu *cu,
3525 struct partial_symtab *ranges_pst)
43039443
JK
3526{
3527 struct objfile *objfile = cu->objfile;
3528 struct comp_unit_head *cu_header = &cu->header;
3529 bfd *obfd = objfile->obfd;
3530 unsigned int addr_size = cu_header->addr_size;
3531 CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
3532 /* Base address selection entry. */
3533 CORE_ADDR base;
3534 int found_base;
3535 unsigned int dummy;
3536 gdb_byte *buffer;
3537 CORE_ADDR marker;
3538 int low_set;
3539 CORE_ADDR low = 0;
3540 CORE_ADDR high = 0;
ff013f42 3541 CORE_ADDR baseaddr;
43039443 3542
d00adf39
DE
3543 found_base = cu->base_known;
3544 base = cu->base_address;
43039443 3545
dce234bc 3546 if (offset >= dwarf2_per_objfile->ranges.size)
43039443
JK
3547 {
3548 complaint (&symfile_complaints,
3549 _("Offset %d out of bounds for DW_AT_ranges attribute"),
3550 offset);
3551 return 0;
3552 }
dce234bc 3553 buffer = dwarf2_per_objfile->ranges.buffer + offset;
43039443
JK
3554
3555 /* Read in the largest possible address. */
3556 marker = read_address (obfd, buffer, cu, &dummy);
3557 if ((marker & mask) == mask)
3558 {
3559 /* If we found the largest possible address, then
3560 read the base address. */
3561 base = read_address (obfd, buffer + addr_size, cu, &dummy);
3562 buffer += 2 * addr_size;
3563 offset += 2 * addr_size;
3564 found_base = 1;
3565 }
3566
3567 low_set = 0;
3568
e7030f15 3569 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
ff013f42 3570
43039443
JK
3571 while (1)
3572 {
3573 CORE_ADDR range_beginning, range_end;
3574
3575 range_beginning = read_address (obfd, buffer, cu, &dummy);
3576 buffer += addr_size;
3577 range_end = read_address (obfd, buffer, cu, &dummy);
3578 buffer += addr_size;
3579 offset += 2 * addr_size;
3580
3581 /* An end of list marker is a pair of zero addresses. */
3582 if (range_beginning == 0 && range_end == 0)
3583 /* Found the end of list entry. */
3584 break;
3585
3586 /* Each base address selection entry is a pair of 2 values.
3587 The first is the largest possible address, the second is
3588 the base address. Check for a base address here. */
3589 if ((range_beginning & mask) == mask)
3590 {
3591 /* If we found the largest possible address, then
3592 read the base address. */
3593 base = read_address (obfd, buffer + addr_size, cu, &dummy);
3594 found_base = 1;
3595 continue;
3596 }
3597
3598 if (!found_base)
3599 {
3600 /* We have no valid base address for the ranges
3601 data. */
3602 complaint (&symfile_complaints,
3603 _("Invalid .debug_ranges data (no base address)"));
3604 return 0;
3605 }
3606
3607 range_beginning += base;
3608 range_end += base;
3609
ff013f42
JK
3610 if (ranges_pst != NULL && range_beginning < range_end)
3611 addrmap_set_empty (objfile->psymtabs_addrmap,
3612 range_beginning + baseaddr, range_end - 1 + baseaddr,
3613 ranges_pst);
3614
43039443
JK
3615 /* FIXME: This is recording everything as a low-high
3616 segment of consecutive addresses. We should have a
3617 data structure for discontiguous block ranges
3618 instead. */
3619 if (! low_set)
3620 {
3621 low = range_beginning;
3622 high = range_end;
3623 low_set = 1;
3624 }
3625 else
3626 {
3627 if (range_beginning < low)
3628 low = range_beginning;
3629 if (range_end > high)
3630 high = range_end;
3631 }
3632 }
3633
3634 if (! low_set)
3635 /* If the first entry is an end-of-list marker, the range
3636 describes an empty scope, i.e. no instructions. */
3637 return 0;
3638
3639 if (low_return)
3640 *low_return = low;
3641 if (high_return)
3642 *high_return = high;
3643 return 1;
3644}
3645
af34e669
DJ
3646/* Get low and high pc attributes from a die. Return 1 if the attributes
3647 are present and valid, otherwise, return 0. Return -1 if the range is
3648 discontinuous, i.e. derived from DW_AT_ranges information. */
c906108c 3649static int
af34e669 3650dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
e7c27a73 3651 CORE_ADDR *highpc, struct dwarf2_cu *cu)
c906108c
SS
3652{
3653 struct attribute *attr;
af34e669
DJ
3654 CORE_ADDR low = 0;
3655 CORE_ADDR high = 0;
3656 int ret = 0;
c906108c 3657
e142c38c 3658 attr = dwarf2_attr (die, DW_AT_high_pc, cu);
c906108c 3659 if (attr)
af34e669
DJ
3660 {
3661 high = DW_ADDR (attr);
e142c38c 3662 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
af34e669
DJ
3663 if (attr)
3664 low = DW_ADDR (attr);
3665 else
3666 /* Found high w/o low attribute. */
3667 return 0;
3668
3669 /* Found consecutive range of addresses. */
3670 ret = 1;
3671 }
c906108c 3672 else
af34e669 3673 {
e142c38c 3674 attr = dwarf2_attr (die, DW_AT_ranges, cu);
af34e669
DJ
3675 if (attr != NULL)
3676 {
af34e669 3677 /* Value of the DW_AT_ranges attribute is the offset in the
a604369a 3678 .debug_ranges section. */
ff013f42 3679 if (!dwarf2_ranges_read (DW_UNSND (attr), &low, &high, cu, NULL))
af34e669 3680 return 0;
43039443 3681 /* Found discontinuous range of addresses. */
af34e669
DJ
3682 ret = -1;
3683 }
3684 }
c906108c
SS
3685
3686 if (high < low)
3687 return 0;
3688
3689 /* When using the GNU linker, .gnu.linkonce. sections are used to
3690 eliminate duplicate copies of functions and vtables and such.
3691 The linker will arbitrarily choose one and discard the others.
3692 The AT_*_pc values for such functions refer to local labels in
3693 these sections. If the section from that file was discarded, the
3694 labels are not in the output, so the relocs get a value of 0.
3695 If this is a discarded function, mark the pc bounds as invalid,
3696 so that GDB will ignore it. */
72dca2f5 3697 if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
c906108c
SS
3698 return 0;
3699
3700 *lowpc = low;
3701 *highpc = high;
af34e669 3702 return ret;
c906108c
SS
3703}
3704
b084d499
JB
3705/* Assuming that DIE represents a subprogram DIE or a lexical block, get
3706 its low and high PC addresses. Do nothing if these addresses could not
3707 be determined. Otherwise, set LOWPC to the low address if it is smaller,
3708 and HIGHPC to the high address if greater than HIGHPC. */
3709
3710static void
3711dwarf2_get_subprogram_pc_bounds (struct die_info *die,
3712 CORE_ADDR *lowpc, CORE_ADDR *highpc,
3713 struct dwarf2_cu *cu)
3714{
3715 CORE_ADDR low, high;
3716 struct die_info *child = die->child;
3717
3718 if (dwarf2_get_pc_bounds (die, &low, &high, cu))
3719 {
3720 *lowpc = min (*lowpc, low);
3721 *highpc = max (*highpc, high);
3722 }
3723
3724 /* If the language does not allow nested subprograms (either inside
3725 subprograms or lexical blocks), we're done. */
3726 if (cu->language != language_ada)
3727 return;
3728
3729 /* Check all the children of the given DIE. If it contains nested
3730 subprograms, then check their pc bounds. Likewise, we need to
3731 check lexical blocks as well, as they may also contain subprogram
3732 definitions. */
3733 while (child && child->tag)
3734 {
3735 if (child->tag == DW_TAG_subprogram
3736 || child->tag == DW_TAG_lexical_block)
3737 dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
3738 child = sibling_die (child);
3739 }
3740}
3741
fae299cd
DC
3742/* Get the low and high pc's represented by the scope DIE, and store
3743 them in *LOWPC and *HIGHPC. If the correct values can't be
3744 determined, set *LOWPC to -1 and *HIGHPC to 0. */
3745
3746static void
3747get_scope_pc_bounds (struct die_info *die,
3748 CORE_ADDR *lowpc, CORE_ADDR *highpc,
3749 struct dwarf2_cu *cu)
3750{
3751 CORE_ADDR best_low = (CORE_ADDR) -1;
3752 CORE_ADDR best_high = (CORE_ADDR) 0;
3753 CORE_ADDR current_low, current_high;
3754
3755 if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu))
3756 {
3757 best_low = current_low;
3758 best_high = current_high;
3759 }
3760 else
3761 {
3762 struct die_info *child = die->child;
3763
3764 while (child && child->tag)
3765 {
3766 switch (child->tag) {
3767 case DW_TAG_subprogram:
b084d499 3768 dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
fae299cd
DC
3769 break;
3770 case DW_TAG_namespace:
3771 /* FIXME: carlton/2004-01-16: Should we do this for
3772 DW_TAG_class_type/DW_TAG_structure_type, too? I think
3773 that current GCC's always emit the DIEs corresponding
3774 to definitions of methods of classes as children of a
3775 DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
3776 the DIEs giving the declarations, which could be
3777 anywhere). But I don't see any reason why the
3778 standards says that they have to be there. */
3779 get_scope_pc_bounds (child, &current_low, &current_high, cu);
3780
3781 if (current_low != ((CORE_ADDR) -1))
3782 {
3783 best_low = min (best_low, current_low);
3784 best_high = max (best_high, current_high);
3785 }
3786 break;
3787 default:
3788 /* Ignore. */
3789 break;
3790 }
3791
3792 child = sibling_die (child);
3793 }
3794 }
3795
3796 *lowpc = best_low;
3797 *highpc = best_high;
3798}
3799
801e3a5b
JB
3800/* Record the address ranges for BLOCK, offset by BASEADDR, as given
3801 in DIE. */
3802static void
3803dwarf2_record_block_ranges (struct die_info *die, struct block *block,
3804 CORE_ADDR baseaddr, struct dwarf2_cu *cu)
3805{
3806 struct attribute *attr;
3807
3808 attr = dwarf2_attr (die, DW_AT_high_pc, cu);
3809 if (attr)
3810 {
3811 CORE_ADDR high = DW_ADDR (attr);
3812 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
3813 if (attr)
3814 {
3815 CORE_ADDR low = DW_ADDR (attr);
3816 record_block_range (block, baseaddr + low, baseaddr + high - 1);
3817 }
3818 }
3819
3820 attr = dwarf2_attr (die, DW_AT_ranges, cu);
3821 if (attr)
3822 {
3823 bfd *obfd = cu->objfile->obfd;
3824
3825 /* The value of the DW_AT_ranges attribute is the offset of the
3826 address range list in the .debug_ranges section. */
3827 unsigned long offset = DW_UNSND (attr);
dce234bc 3828 gdb_byte *buffer = dwarf2_per_objfile->ranges.buffer + offset;
801e3a5b
JB
3829
3830 /* For some target architectures, but not others, the
3831 read_address function sign-extends the addresses it returns.
3832 To recognize base address selection entries, we need a
3833 mask. */
3834 unsigned int addr_size = cu->header.addr_size;
3835 CORE_ADDR base_select_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
3836
3837 /* The base address, to which the next pair is relative. Note
3838 that this 'base' is a DWARF concept: most entries in a range
3839 list are relative, to reduce the number of relocs against the
3840 debugging information. This is separate from this function's
3841 'baseaddr' argument, which GDB uses to relocate debugging
3842 information from a shared library based on the address at
3843 which the library was loaded. */
d00adf39
DE
3844 CORE_ADDR base = cu->base_address;
3845 int base_known = cu->base_known;
801e3a5b 3846
dce234bc 3847 if (offset >= dwarf2_per_objfile->ranges.size)
801e3a5b
JB
3848 {
3849 complaint (&symfile_complaints,
3850 _("Offset %lu out of bounds for DW_AT_ranges attribute"),
3851 offset);
3852 return;
3853 }
3854
3855 for (;;)
3856 {
3857 unsigned int bytes_read;
3858 CORE_ADDR start, end;
3859
3860 start = read_address (obfd, buffer, cu, &bytes_read);
3861 buffer += bytes_read;
3862 end = read_address (obfd, buffer, cu, &bytes_read);
3863 buffer += bytes_read;
3864
3865 /* Did we find the end of the range list? */
3866 if (start == 0 && end == 0)
3867 break;
3868
3869 /* Did we find a base address selection entry? */
3870 else if ((start & base_select_mask) == base_select_mask)
3871 {
3872 base = end;
3873 base_known = 1;
3874 }
3875
3876 /* We found an ordinary address range. */
3877 else
3878 {
3879 if (!base_known)
3880 {
3881 complaint (&symfile_complaints,
3882 _("Invalid .debug_ranges data (no base address)"));
3883 return;
3884 }
3885
3886 record_block_range (block,
3887 baseaddr + base + start,
3888 baseaddr + base + end - 1);
3889 }
3890 }
3891 }
3892}
3893
c906108c
SS
3894/* Add an aggregate field to the field list. */
3895
3896static void
107d2387 3897dwarf2_add_field (struct field_info *fip, struct die_info *die,
e7c27a73
DJ
3898 struct dwarf2_cu *cu)
3899{
3900 struct objfile *objfile = cu->objfile;
5e2b427d 3901 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
3902 struct nextfield *new_field;
3903 struct attribute *attr;
3904 struct field *fp;
3905 char *fieldname = "";
3906
3907 /* Allocate a new field list entry and link it in. */
3908 new_field = (struct nextfield *) xmalloc (sizeof (struct nextfield));
b8c9b27d 3909 make_cleanup (xfree, new_field);
c906108c
SS
3910 memset (new_field, 0, sizeof (struct nextfield));
3911 new_field->next = fip->fields;
3912 fip->fields = new_field;
3913 fip->nfields++;
3914
3915 /* Handle accessibility and virtuality of field.
3916 The default accessibility for members is public, the default
3917 accessibility for inheritance is private. */
3918 if (die->tag != DW_TAG_inheritance)
3919 new_field->accessibility = DW_ACCESS_public;
3920 else
3921 new_field->accessibility = DW_ACCESS_private;
3922 new_field->virtuality = DW_VIRTUALITY_none;
3923
e142c38c 3924 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
3925 if (attr)
3926 new_field->accessibility = DW_UNSND (attr);
3927 if (new_field->accessibility != DW_ACCESS_public)
3928 fip->non_public_fields = 1;
e142c38c 3929 attr = dwarf2_attr (die, DW_AT_virtuality, cu);
c906108c
SS
3930 if (attr)
3931 new_field->virtuality = DW_UNSND (attr);
3932
3933 fp = &new_field->field;
a9a9bd0f 3934
e142c38c 3935 if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
c906108c 3936 {
a9a9bd0f
DC
3937 /* Data member other than a C++ static data member. */
3938
c906108c 3939 /* Get type of field. */
e7c27a73 3940 fp->type = die_type (die, cu);
c906108c 3941
d6a843b5 3942 SET_FIELD_BITPOS (*fp, 0);
01ad7f36 3943
c906108c 3944 /* Get bit size of field (zero if none). */
e142c38c 3945 attr = dwarf2_attr (die, DW_AT_bit_size, cu);
c906108c
SS
3946 if (attr)
3947 {
3948 FIELD_BITSIZE (*fp) = DW_UNSND (attr);
3949 }
3950 else
3951 {
3952 FIELD_BITSIZE (*fp) = 0;
3953 }
3954
3955 /* Get bit offset of field. */
e142c38c 3956 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
c906108c
SS
3957 if (attr)
3958 {
c6a0999f
JB
3959 int byte_offset;
3960
3690dd37
JB
3961 if (attr_form_is_section_offset (attr))
3962 {
3963 dwarf2_complex_location_expr_complaint ();
c6a0999f 3964 byte_offset = 0;
3690dd37
JB
3965 }
3966 else if (attr_form_is_constant (attr))
c6a0999f 3967 byte_offset = dwarf2_get_attr_constant_value (attr, 0);
3690dd37 3968 else
c6a0999f
JB
3969 byte_offset = decode_locdesc (DW_BLOCK (attr), cu);
3970
d6a843b5 3971 SET_FIELD_BITPOS (*fp, byte_offset * bits_per_byte);
c906108c 3972 }
e142c38c 3973 attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
c906108c
SS
3974 if (attr)
3975 {
5e2b427d 3976 if (gdbarch_bits_big_endian (gdbarch))
c906108c
SS
3977 {
3978 /* For big endian bits, the DW_AT_bit_offset gives the
c5aa993b
JM
3979 additional bit offset from the MSB of the containing
3980 anonymous object to the MSB of the field. We don't
3981 have to do anything special since we don't need to
3982 know the size of the anonymous object. */
c906108c
SS
3983 FIELD_BITPOS (*fp) += DW_UNSND (attr);
3984 }
3985 else
3986 {
3987 /* For little endian bits, compute the bit offset to the
c5aa993b
JM
3988 MSB of the anonymous object, subtract off the number of
3989 bits from the MSB of the field to the MSB of the
3990 object, and then subtract off the number of bits of
3991 the field itself. The result is the bit offset of
3992 the LSB of the field. */
c906108c
SS
3993 int anonymous_size;
3994 int bit_offset = DW_UNSND (attr);
3995
e142c38c 3996 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
3997 if (attr)
3998 {
3999 /* The size of the anonymous object containing
4000 the bit field is explicit, so use the
4001 indicated size (in bytes). */
4002 anonymous_size = DW_UNSND (attr);
4003 }
4004 else
4005 {
4006 /* The size of the anonymous object containing
4007 the bit field must be inferred from the type
4008 attribute of the data member containing the
4009 bit field. */
4010 anonymous_size = TYPE_LENGTH (fp->type);
4011 }
4012 FIELD_BITPOS (*fp) += anonymous_size * bits_per_byte
4013 - bit_offset - FIELD_BITSIZE (*fp);
4014 }
4015 }
4016
4017 /* Get name of field. */
39cbfefa
DJ
4018 fieldname = dwarf2_name (die, cu);
4019 if (fieldname == NULL)
4020 fieldname = "";
d8151005
DJ
4021
4022 /* The name is already allocated along with this objfile, so we don't
4023 need to duplicate it for the type. */
4024 fp->name = fieldname;
c906108c
SS
4025
4026 /* Change accessibility for artificial fields (e.g. virtual table
c5aa993b 4027 pointer or virtual base class pointer) to private. */
e142c38c 4028 if (dwarf2_attr (die, DW_AT_artificial, cu))
c906108c
SS
4029 {
4030 new_field->accessibility = DW_ACCESS_private;
4031 fip->non_public_fields = 1;
4032 }
4033 }
a9a9bd0f 4034 else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
c906108c 4035 {
a9a9bd0f
DC
4036 /* C++ static member. */
4037
4038 /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
4039 is a declaration, but all versions of G++ as of this writing
4040 (so through at least 3.2.1) incorrectly generate
4041 DW_TAG_variable tags. */
4042
c906108c 4043 char *physname;
c906108c 4044
a9a9bd0f 4045 /* Get name of field. */
39cbfefa
DJ
4046 fieldname = dwarf2_name (die, cu);
4047 if (fieldname == NULL)
c906108c
SS
4048 return;
4049
2df3850c 4050 /* Get physical name. */
e142c38c 4051 physname = dwarf2_linkage_name (die, cu);
c906108c 4052
d8151005
DJ
4053 /* The name is already allocated along with this objfile, so we don't
4054 need to duplicate it for the type. */
4055 SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
e7c27a73 4056 FIELD_TYPE (*fp) = die_type (die, cu);
d8151005 4057 FIELD_NAME (*fp) = fieldname;
c906108c
SS
4058 }
4059 else if (die->tag == DW_TAG_inheritance)
4060 {
4061 /* C++ base class field. */
e142c38c 4062 attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
c906108c 4063 if (attr)
d6a843b5
JK
4064 SET_FIELD_BITPOS (*fp, decode_locdesc (DW_BLOCK (attr), cu)
4065 * bits_per_byte);
c906108c 4066 FIELD_BITSIZE (*fp) = 0;
e7c27a73 4067 FIELD_TYPE (*fp) = die_type (die, cu);
c906108c
SS
4068 FIELD_NAME (*fp) = type_name_no_tag (fp->type);
4069 fip->nbaseclasses++;
4070 }
4071}
4072
4073/* Create the vector of fields, and attach it to the type. */
4074
4075static void
fba45db2 4076dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 4077 struct dwarf2_cu *cu)
c906108c
SS
4078{
4079 int nfields = fip->nfields;
4080
4081 /* Record the field count, allocate space for the array of fields,
4082 and create blank accessibility bitfields if necessary. */
4083 TYPE_NFIELDS (type) = nfields;
4084 TYPE_FIELDS (type) = (struct field *)
4085 TYPE_ALLOC (type, sizeof (struct field) * nfields);
4086 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
4087
4088 if (fip->non_public_fields)
4089 {
4090 ALLOCATE_CPLUS_STRUCT_TYPE (type);
4091
4092 TYPE_FIELD_PRIVATE_BITS (type) =
4093 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
4094 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
4095
4096 TYPE_FIELD_PROTECTED_BITS (type) =
4097 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
4098 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
4099
4100 TYPE_FIELD_IGNORE_BITS (type) =
4101 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
4102 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
4103 }
4104
4105 /* If the type has baseclasses, allocate and clear a bit vector for
4106 TYPE_FIELD_VIRTUAL_BITS. */
4107 if (fip->nbaseclasses)
4108 {
4109 int num_bytes = B_BYTES (fip->nbaseclasses);
fe1b8b76 4110 unsigned char *pointer;
c906108c
SS
4111
4112 ALLOCATE_CPLUS_STRUCT_TYPE (type);
fe1b8b76
JB
4113 pointer = TYPE_ALLOC (type, num_bytes);
4114 TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
c906108c
SS
4115 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
4116 TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
4117 }
4118
4119 /* Copy the saved-up fields into the field vector. Start from the head
4120 of the list, adding to the tail of the field array, so that they end
4121 up in the same order in the array in which they were added to the list. */
4122 while (nfields-- > 0)
4123 {
4124 TYPE_FIELD (type, nfields) = fip->fields->field;
4125 switch (fip->fields->accessibility)
4126 {
c5aa993b
JM
4127 case DW_ACCESS_private:
4128 SET_TYPE_FIELD_PRIVATE (type, nfields);
4129 break;
c906108c 4130
c5aa993b
JM
4131 case DW_ACCESS_protected:
4132 SET_TYPE_FIELD_PROTECTED (type, nfields);
4133 break;
c906108c 4134
c5aa993b
JM
4135 case DW_ACCESS_public:
4136 break;
c906108c 4137
c5aa993b
JM
4138 default:
4139 /* Unknown accessibility. Complain and treat it as public. */
4140 {
e2e0b3e5 4141 complaint (&symfile_complaints, _("unsupported accessibility %d"),
4d3c2250 4142 fip->fields->accessibility);
c5aa993b
JM
4143 }
4144 break;
c906108c
SS
4145 }
4146 if (nfields < fip->nbaseclasses)
4147 {
4148 switch (fip->fields->virtuality)
4149 {
c5aa993b
JM
4150 case DW_VIRTUALITY_virtual:
4151 case DW_VIRTUALITY_pure_virtual:
4152 SET_TYPE_FIELD_VIRTUAL (type, nfields);
4153 break;
c906108c
SS
4154 }
4155 }
4156 fip->fields = fip->fields->next;
4157 }
4158}
4159
c906108c
SS
4160/* Add a member function to the proper fieldlist. */
4161
4162static void
107d2387 4163dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
e7c27a73 4164 struct type *type, struct dwarf2_cu *cu)
c906108c 4165{
e7c27a73 4166 struct objfile *objfile = cu->objfile;
c906108c
SS
4167 struct attribute *attr;
4168 struct fnfieldlist *flp;
4169 int i;
4170 struct fn_field *fnp;
4171 char *fieldname;
4172 char *physname;
4173 struct nextfnfield *new_fnfield;
f792889a 4174 struct type *this_type;
c906108c 4175
2df3850c 4176 /* Get name of member function. */
39cbfefa
DJ
4177 fieldname = dwarf2_name (die, cu);
4178 if (fieldname == NULL)
2df3850c 4179 return;
c906108c 4180
2df3850c 4181 /* Get the mangled name. */
e142c38c 4182 physname = dwarf2_linkage_name (die, cu);
c906108c
SS
4183
4184 /* Look up member function name in fieldlist. */
4185 for (i = 0; i < fip->nfnfields; i++)
4186 {
27bfe10e 4187 if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
c906108c
SS
4188 break;
4189 }
4190
4191 /* Create new list element if necessary. */
4192 if (i < fip->nfnfields)
4193 flp = &fip->fnfieldlists[i];
4194 else
4195 {
4196 if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
4197 {
4198 fip->fnfieldlists = (struct fnfieldlist *)
4199 xrealloc (fip->fnfieldlists,
4200 (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 4201 * sizeof (struct fnfieldlist));
c906108c 4202 if (fip->nfnfields == 0)
c13c43fd 4203 make_cleanup (free_current_contents, &fip->fnfieldlists);
c906108c
SS
4204 }
4205 flp = &fip->fnfieldlists[fip->nfnfields];
4206 flp->name = fieldname;
4207 flp->length = 0;
4208 flp->head = NULL;
4209 fip->nfnfields++;
4210 }
4211
4212 /* Create a new member function field and chain it to the field list
4213 entry. */
4214 new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
b8c9b27d 4215 make_cleanup (xfree, new_fnfield);
c906108c
SS
4216 memset (new_fnfield, 0, sizeof (struct nextfnfield));
4217 new_fnfield->next = flp->head;
4218 flp->head = new_fnfield;
4219 flp->length++;
4220
4221 /* Fill in the member function field info. */
4222 fnp = &new_fnfield->fnfield;
d8151005
DJ
4223 /* The name is already allocated along with this objfile, so we don't
4224 need to duplicate it for the type. */
4225 fnp->physname = physname ? physname : "";
c906108c 4226 fnp->type = alloc_type (objfile);
f792889a
DJ
4227 this_type = read_type_die (die, cu);
4228 if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
c906108c 4229 {
f792889a 4230 int nparams = TYPE_NFIELDS (this_type);
c906108c 4231
f792889a 4232 /* TYPE is the domain of this method, and THIS_TYPE is the type
e26fb1d7
DC
4233 of the method itself (TYPE_CODE_METHOD). */
4234 smash_to_method_type (fnp->type, type,
f792889a
DJ
4235 TYPE_TARGET_TYPE (this_type),
4236 TYPE_FIELDS (this_type),
4237 TYPE_NFIELDS (this_type),
4238 TYPE_VARARGS (this_type));
c906108c
SS
4239
4240 /* Handle static member functions.
c5aa993b
JM
4241 Dwarf2 has no clean way to discern C++ static and non-static
4242 member functions. G++ helps GDB by marking the first
4243 parameter for non-static member functions (which is the
4244 this pointer) as artificial. We obtain this information
4245 from read_subroutine_type via TYPE_FIELD_ARTIFICIAL. */
f792889a 4246 if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
c906108c
SS
4247 fnp->voffset = VOFFSET_STATIC;
4248 }
4249 else
e2e0b3e5 4250 complaint (&symfile_complaints, _("member function type missing for '%s'"),
4d3c2250 4251 physname);
c906108c
SS
4252
4253 /* Get fcontext from DW_AT_containing_type if present. */
e142c38c 4254 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
e7c27a73 4255 fnp->fcontext = die_containing_type (die, cu);
c906108c
SS
4256
4257 /* dwarf2 doesn't have stubbed physical names, so the setting of is_const
4258 and is_volatile is irrelevant, as it is needed by gdb_mangle_name only. */
4259
4260 /* Get accessibility. */
e142c38c 4261 attr = dwarf2_attr (die, DW_AT_accessibility, cu);
c906108c
SS
4262 if (attr)
4263 {
4264 switch (DW_UNSND (attr))
4265 {
c5aa993b
JM
4266 case DW_ACCESS_private:
4267 fnp->is_private = 1;
4268 break;
4269 case DW_ACCESS_protected:
4270 fnp->is_protected = 1;
4271 break;
c906108c
SS
4272 }
4273 }
4274
b02dede2 4275 /* Check for artificial methods. */
e142c38c 4276 attr = dwarf2_attr (die, DW_AT_artificial, cu);
b02dede2
DJ
4277 if (attr && DW_UNSND (attr) != 0)
4278 fnp->is_artificial = 1;
4279
c906108c 4280 /* Get index in virtual function table if it is a virtual member function. */
e142c38c 4281 attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
c906108c 4282 if (attr)
8e19ed76
PS
4283 {
4284 /* Support the .debug_loc offsets */
4285 if (attr_form_is_block (attr))
4286 {
e7c27a73 4287 fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
8e19ed76 4288 }
3690dd37 4289 else if (attr_form_is_section_offset (attr))
8e19ed76 4290 {
4d3c2250 4291 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
4292 }
4293 else
4294 {
4d3c2250
KB
4295 dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
4296 fieldname);
8e19ed76
PS
4297 }
4298 }
c906108c
SS
4299}
4300
4301/* Create the vector of member function fields, and attach it to the type. */
4302
4303static void
fba45db2 4304dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
e7c27a73 4305 struct dwarf2_cu *cu)
c906108c
SS
4306{
4307 struct fnfieldlist *flp;
4308 int total_length = 0;
4309 int i;
4310
4311 ALLOCATE_CPLUS_STRUCT_TYPE (type);
4312 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
4313 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
4314
4315 for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
4316 {
4317 struct nextfnfield *nfp = flp->head;
4318 struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
4319 int k;
4320
4321 TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
4322 TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
4323 fn_flp->fn_fields = (struct fn_field *)
4324 TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
4325 for (k = flp->length; (k--, nfp); nfp = nfp->next)
c5aa993b 4326 fn_flp->fn_fields[k] = nfp->fnfield;
c906108c
SS
4327
4328 total_length += flp->length;
4329 }
4330
4331 TYPE_NFN_FIELDS (type) = fip->nfnfields;
4332 TYPE_NFN_FIELDS_TOTAL (type) = total_length;
4333}
4334
1168df01
JB
4335/* Returns non-zero if NAME is the name of a vtable member in CU's
4336 language, zero otherwise. */
4337static int
4338is_vtable_name (const char *name, struct dwarf2_cu *cu)
4339{
4340 static const char vptr[] = "_vptr";
987504bb 4341 static const char vtable[] = "vtable";
1168df01 4342
987504bb
JJ
4343 /* Look for the C++ and Java forms of the vtable. */
4344 if ((cu->language == language_java
4345 && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
4346 || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
4347 && is_cplus_marker (name[sizeof (vptr) - 1])))
1168df01
JB
4348 return 1;
4349
4350 return 0;
4351}
4352
c0dd20ea
DJ
4353/* GCC outputs unnamed structures that are really pointers to member
4354 functions, with the ABI-specified layout. If DIE (from CU) describes
4355 such a structure, set its type, and return nonzero. Otherwise return
61049d3b
DJ
4356 zero.
4357
4358 GCC shouldn't do this; it should just output pointer to member DIEs.
4359 This is GCC PR debug/28767. */
c0dd20ea 4360
f792889a 4361static struct type *
c0dd20ea
DJ
4362quirk_gcc_member_function_pointer (struct die_info *die, struct dwarf2_cu *cu)
4363{
4364 struct objfile *objfile = cu->objfile;
4365 struct type *type;
4366 struct die_info *pfn_die, *delta_die;
4367 struct attribute *pfn_name, *delta_name;
4368 struct type *pfn_type, *domain_type;
4369
4370 /* Check for a structure with no name and two children. */
4371 if (die->tag != DW_TAG_structure_type
4372 || dwarf2_attr (die, DW_AT_name, cu) != NULL
4373 || die->child == NULL
4374 || die->child->sibling == NULL
4375 || (die->child->sibling->sibling != NULL
4376 && die->child->sibling->sibling->tag != DW_TAG_padding))
f792889a 4377 return NULL;
c0dd20ea
DJ
4378
4379 /* Check for __pfn and __delta members. */
4380 pfn_die = die->child;
4381 pfn_name = dwarf2_attr (pfn_die, DW_AT_name, cu);
4382 if (pfn_die->tag != DW_TAG_member
4383 || pfn_name == NULL
4384 || DW_STRING (pfn_name) == NULL
4385 || strcmp ("__pfn", DW_STRING (pfn_name)) != 0)
f792889a 4386 return NULL;
c0dd20ea
DJ
4387
4388 delta_die = pfn_die->sibling;
4389 delta_name = dwarf2_attr (delta_die, DW_AT_name, cu);
4390 if (delta_die->tag != DW_TAG_member
4391 || delta_name == NULL
4392 || DW_STRING (delta_name) == NULL
4393 || strcmp ("__delta", DW_STRING (delta_name)) != 0)
f792889a 4394 return NULL;
c0dd20ea
DJ
4395
4396 /* Find the type of the method. */
4397 pfn_type = die_type (pfn_die, cu);
4398 if (pfn_type == NULL
4399 || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
4400 || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
f792889a 4401 return NULL;
c0dd20ea
DJ
4402
4403 /* Look for the "this" argument. */
4404 pfn_type = TYPE_TARGET_TYPE (pfn_type);
4405 if (TYPE_NFIELDS (pfn_type) == 0
4406 || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
f792889a 4407 return NULL;
c0dd20ea
DJ
4408
4409 domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
4410 type = alloc_type (objfile);
4411 smash_to_method_type (type, domain_type, TYPE_TARGET_TYPE (pfn_type),
4412 TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
4413 TYPE_VARARGS (pfn_type));
0d5de010 4414 type = lookup_methodptr_type (type);
f792889a 4415 return set_die_type (die, type, cu);
c0dd20ea 4416}
1168df01 4417
c906108c
SS
4418/* Called when we find the DIE that starts a structure or union scope
4419 (definition) to process all dies that define the members of the
4420 structure or union.
4421
4422 NOTE: we need to call struct_type regardless of whether or not the
4423 DIE has an at_name attribute, since it might be an anonymous
4424 structure or union. This gets the type entered into our set of
4425 user defined types.
4426
4427 However, if the structure is incomplete (an opaque struct/union)
4428 then suppress creating a symbol table entry for it since gdb only
4429 wants to find the one with the complete definition. Note that if
4430 it is complete, we just call new_symbol, which does it's own
4431 checking about whether the struct/union is anonymous or not (and
4432 suppresses creating a symbol table entry itself). */
4433
f792889a 4434static struct type *
134d01f1 4435read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 4436{
e7c27a73 4437 struct objfile *objfile = cu->objfile;
c906108c
SS
4438 struct type *type;
4439 struct attribute *attr;
39cbfefa 4440 char *name;
0114d602 4441 struct cleanup *back_to = make_cleanup (null_cleanup, 0);
c906108c 4442
f792889a
DJ
4443 type = quirk_gcc_member_function_pointer (die, cu);
4444 if (type)
4445 return type;
c906108c 4446
c0dd20ea 4447 type = alloc_type (objfile);
c906108c 4448 INIT_CPLUS_SPECIFIC (type);
39cbfefa
DJ
4449 name = dwarf2_name (die, cu);
4450 if (name != NULL)
c906108c 4451 {
987504bb
JJ
4452 if (cu->language == language_cplus
4453 || cu->language == language_java)
63d06c5c 4454 {
0114d602
DJ
4455 const char *new_prefix = determine_class_name (die, cu);
4456 TYPE_TAG_NAME (type) = (char *) new_prefix;
63d06c5c
DC
4457 }
4458 else
4459 {
d8151005
DJ
4460 /* The name is already allocated along with this objfile, so
4461 we don't need to duplicate it for the type. */
39cbfefa 4462 TYPE_TAG_NAME (type) = name;
63d06c5c 4463 }
c906108c
SS
4464 }
4465
4466 if (die->tag == DW_TAG_structure_type)
4467 {
4468 TYPE_CODE (type) = TYPE_CODE_STRUCT;
4469 }
4470 else if (die->tag == DW_TAG_union_type)
4471 {
4472 TYPE_CODE (type) = TYPE_CODE_UNION;
4473 }
4474 else
4475 {
4476 /* FIXME: TYPE_CODE_CLASS is currently defined to TYPE_CODE_STRUCT
c5aa993b 4477 in gdbtypes.h. */
c906108c
SS
4478 TYPE_CODE (type) = TYPE_CODE_CLASS;
4479 }
4480
e142c38c 4481 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
4482 if (attr)
4483 {
4484 TYPE_LENGTH (type) = DW_UNSND (attr);
4485 }
4486 else
4487 {
4488 TYPE_LENGTH (type) = 0;
4489 }
4490
876cecd0 4491 TYPE_STUB_SUPPORTED (type) = 1;
dc718098 4492 if (die_is_declaration (die, cu))
876cecd0 4493 TYPE_STUB (type) = 1;
dc718098 4494
c906108c
SS
4495 /* We need to add the type field to the die immediately so we don't
4496 infinitely recurse when dealing with pointers to the structure
4497 type within the structure itself. */
1c379e20 4498 set_die_type (die, type, cu);
c906108c 4499
e142c38c 4500 if (die->child != NULL && ! die_is_declaration (die, cu))
c906108c
SS
4501 {
4502 struct field_info fi;
4503 struct die_info *child_die;
c906108c
SS
4504
4505 memset (&fi, 0, sizeof (struct field_info));
4506
639d11d3 4507 child_die = die->child;
c906108c
SS
4508
4509 while (child_die && child_die->tag)
4510 {
a9a9bd0f
DC
4511 if (child_die->tag == DW_TAG_member
4512 || child_die->tag == DW_TAG_variable)
c906108c 4513 {
a9a9bd0f
DC
4514 /* NOTE: carlton/2002-11-05: A C++ static data member
4515 should be a DW_TAG_member that is a declaration, but
4516 all versions of G++ as of this writing (so through at
4517 least 3.2.1) incorrectly generate DW_TAG_variable
4518 tags for them instead. */
e7c27a73 4519 dwarf2_add_field (&fi, child_die, cu);
c906108c 4520 }
8713b1b1 4521 else if (child_die->tag == DW_TAG_subprogram)
c906108c
SS
4522 {
4523 /* C++ member function. */
e7c27a73 4524 dwarf2_add_member_fn (&fi, child_die, type, cu);
c906108c
SS
4525 }
4526 else if (child_die->tag == DW_TAG_inheritance)
4527 {
4528 /* C++ base class field. */
e7c27a73 4529 dwarf2_add_field (&fi, child_die, cu);
c906108c 4530 }
c906108c
SS
4531 child_die = sibling_die (child_die);
4532 }
4533
4534 /* Attach fields and member functions to the type. */
4535 if (fi.nfields)
e7c27a73 4536 dwarf2_attach_fields_to_type (&fi, type, cu);
c906108c
SS
4537 if (fi.nfnfields)
4538 {
e7c27a73 4539 dwarf2_attach_fn_fields_to_type (&fi, type, cu);
c906108c 4540
c5aa993b 4541 /* Get the type which refers to the base class (possibly this
c906108c
SS
4542 class itself) which contains the vtable pointer for the current
4543 class from the DW_AT_containing_type attribute. */
4544
e142c38c 4545 if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
c906108c 4546 {
e7c27a73 4547 struct type *t = die_containing_type (die, cu);
c906108c
SS
4548
4549 TYPE_VPTR_BASETYPE (type) = t;
4550 if (type == t)
4551 {
c906108c
SS
4552 int i;
4553
4554 /* Our own class provides vtbl ptr. */
4555 for (i = TYPE_NFIELDS (t) - 1;
4556 i >= TYPE_N_BASECLASSES (t);
4557 --i)
4558 {
4559 char *fieldname = TYPE_FIELD_NAME (t, i);
4560
1168df01 4561 if (is_vtable_name (fieldname, cu))
c906108c
SS
4562 {
4563 TYPE_VPTR_FIELDNO (type) = i;
4564 break;
4565 }
4566 }
4567
4568 /* Complain if virtual function table field not found. */
4569 if (i < TYPE_N_BASECLASSES (t))
4d3c2250 4570 complaint (&symfile_complaints,
e2e0b3e5 4571 _("virtual function table pointer not found when defining class '%s'"),
4d3c2250
KB
4572 TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
4573 "");
c906108c
SS
4574 }
4575 else
4576 {
4577 TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
4578 }
4579 }
f6235d4c
EZ
4580 else if (cu->producer
4581 && strncmp (cu->producer,
4582 "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
4583 {
4584 /* The IBM XLC compiler does not provide direct indication
4585 of the containing type, but the vtable pointer is
4586 always named __vfp. */
4587
4588 int i;
4589
4590 for (i = TYPE_NFIELDS (type) - 1;
4591 i >= TYPE_N_BASECLASSES (type);
4592 --i)
4593 {
4594 if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
4595 {
4596 TYPE_VPTR_FIELDNO (type) = i;
4597 TYPE_VPTR_BASETYPE (type) = type;
4598 break;
4599 }
4600 }
4601 }
c906108c 4602 }
c906108c 4603 }
63d06c5c 4604
0114d602 4605 do_cleanups (back_to);
f792889a 4606 return type;
c906108c
SS
4607}
4608
134d01f1
DJ
4609static void
4610process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
4611{
4612 struct objfile *objfile = cu->objfile;
90aeadfc 4613 struct die_info *child_die = die->child;
f792889a 4614 struct type *this_type;
c906108c 4615
f792889a
DJ
4616 this_type = get_die_type (die, cu);
4617 if (this_type == NULL)
4618 this_type = read_structure_type (die, cu);
c906108c 4619
90aeadfc
DC
4620 /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
4621 snapshots) has been known to create a die giving a declaration
4622 for a class that has, as a child, a die giving a definition for a
4623 nested class. So we have to process our children even if the
4624 current die is a declaration. Normally, of course, a declaration
4625 won't have any children at all. */
134d01f1 4626
90aeadfc
DC
4627 while (child_die != NULL && child_die->tag)
4628 {
4629 if (child_die->tag == DW_TAG_member
4630 || child_die->tag == DW_TAG_variable
4631 || child_die->tag == DW_TAG_inheritance)
134d01f1 4632 {
90aeadfc 4633 /* Do nothing. */
134d01f1 4634 }
90aeadfc
DC
4635 else
4636 process_die (child_die, cu);
134d01f1 4637
90aeadfc 4638 child_die = sibling_die (child_die);
134d01f1
DJ
4639 }
4640
fa4028e9
JB
4641 /* Do not consider external references. According to the DWARF standard,
4642 these DIEs are identified by the fact that they have no byte_size
4643 attribute, and a declaration attribute. */
4644 if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
4645 || !die_is_declaration (die, cu))
f792889a 4646 new_symbol (die, this_type, cu);
134d01f1
DJ
4647}
4648
4649/* Given a DW_AT_enumeration_type die, set its type. We do not
4650 complete the type's fields yet, or create any symbols. */
c906108c 4651
f792889a 4652static struct type *
134d01f1 4653read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 4654{
e7c27a73 4655 struct objfile *objfile = cu->objfile;
c906108c 4656 struct type *type;
c906108c 4657 struct attribute *attr;
0114d602 4658 const char *name;
134d01f1 4659
c906108c
SS
4660 type = alloc_type (objfile);
4661
4662 TYPE_CODE (type) = TYPE_CODE_ENUM;
0114d602 4663 name = dwarf2_full_name (die, cu);
39cbfefa 4664 if (name != NULL)
0114d602 4665 TYPE_TAG_NAME (type) = (char *) name;
c906108c 4666
e142c38c 4667 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
4668 if (attr)
4669 {
4670 TYPE_LENGTH (type) = DW_UNSND (attr);
4671 }
4672 else
4673 {
4674 TYPE_LENGTH (type) = 0;
4675 }
4676
137033e9
JB
4677 /* The enumeration DIE can be incomplete. In Ada, any type can be
4678 declared as private in the package spec, and then defined only
4679 inside the package body. Such types are known as Taft Amendment
4680 Types. When another package uses such a type, an incomplete DIE
4681 may be generated by the compiler. */
02eb380e 4682 if (die_is_declaration (die, cu))
876cecd0 4683 TYPE_STUB (type) = 1;
02eb380e 4684
f792889a 4685 return set_die_type (die, type, cu);
134d01f1
DJ
4686}
4687
8176b9b8 4688/* Determine the name of the type represented by DIE, which should be
0114d602
DJ
4689 a named C++ or Java compound type. Return the name in question,
4690 allocated on the objfile obstack. */
8176b9b8 4691
0114d602 4692static const char *
8176b9b8
DC
4693determine_class_name (struct die_info *die, struct dwarf2_cu *cu)
4694{
0114d602 4695 const char *new_prefix = NULL;
8176b9b8
DC
4696
4697 /* If we don't have namespace debug info, guess the name by trying
4698 to demangle the names of members, just like we did in
72bf9492 4699 guess_structure_name. */
8176b9b8
DC
4700 if (!processing_has_namespace_info)
4701 {
4702 struct die_info *child;
4703
4704 for (child = die->child;
4705 child != NULL && child->tag != 0;
4706 child = sibling_die (child))
4707 {
4708 if (child->tag == DW_TAG_subprogram)
4709 {
0114d602 4710 char *phys_prefix
31c27f77
JJ
4711 = language_class_name_from_physname (cu->language_defn,
4712 dwarf2_linkage_name
8176b9b8
DC
4713 (child, cu));
4714
0114d602
DJ
4715 if (phys_prefix != NULL)
4716 {
4717 new_prefix
4718 = obsavestring (phys_prefix, strlen (phys_prefix),
4719 &cu->objfile->objfile_obstack);
4720 xfree (phys_prefix);
4721 break;
4722 }
8176b9b8
DC
4723 }
4724 }
4725 }
4726
4727 if (new_prefix == NULL)
0114d602 4728 new_prefix = dwarf2_full_name (die, cu);
8176b9b8
DC
4729
4730 return new_prefix;
4731}
4732
134d01f1
DJ
4733/* Given a pointer to a die which begins an enumeration, process all
4734 the dies that define the members of the enumeration, and create the
4735 symbol for the enumeration type.
4736
4737 NOTE: We reverse the order of the element list. */
4738
4739static void
4740process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
4741{
4742 struct objfile *objfile = cu->objfile;
4743 struct die_info *child_die;
4744 struct field *fields;
134d01f1
DJ
4745 struct symbol *sym;
4746 int num_fields;
4747 int unsigned_enum = 1;
39cbfefa 4748 char *name;
f792889a 4749 struct type *this_type;
134d01f1 4750
c906108c
SS
4751 num_fields = 0;
4752 fields = NULL;
f792889a
DJ
4753 this_type = get_die_type (die, cu);
4754 if (this_type == NULL)
4755 this_type = read_enumeration_type (die, cu);
639d11d3 4756 if (die->child != NULL)
c906108c 4757 {
639d11d3 4758 child_die = die->child;
c906108c
SS
4759 while (child_die && child_die->tag)
4760 {
4761 if (child_die->tag != DW_TAG_enumerator)
4762 {
e7c27a73 4763 process_die (child_die, cu);
c906108c
SS
4764 }
4765 else
4766 {
39cbfefa
DJ
4767 name = dwarf2_name (child_die, cu);
4768 if (name)
c906108c 4769 {
f792889a 4770 sym = new_symbol (child_die, this_type, cu);
c906108c
SS
4771 if (SYMBOL_VALUE (sym) < 0)
4772 unsigned_enum = 0;
4773
4774 if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
4775 {
4776 fields = (struct field *)
4777 xrealloc (fields,
4778 (num_fields + DW_FIELD_ALLOC_CHUNK)
c5aa993b 4779 * sizeof (struct field));
c906108c
SS
4780 }
4781
3567439c 4782 FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
c906108c 4783 FIELD_TYPE (fields[num_fields]) = NULL;
d6a843b5 4784 SET_FIELD_BITPOS (fields[num_fields], SYMBOL_VALUE (sym));
c906108c
SS
4785 FIELD_BITSIZE (fields[num_fields]) = 0;
4786
4787 num_fields++;
4788 }
4789 }
4790
4791 child_die = sibling_die (child_die);
4792 }
4793
4794 if (num_fields)
4795 {
f792889a
DJ
4796 TYPE_NFIELDS (this_type) = num_fields;
4797 TYPE_FIELDS (this_type) = (struct field *)
4798 TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
4799 memcpy (TYPE_FIELDS (this_type), fields,
c906108c 4800 sizeof (struct field) * num_fields);
b8c9b27d 4801 xfree (fields);
c906108c
SS
4802 }
4803 if (unsigned_enum)
876cecd0 4804 TYPE_UNSIGNED (this_type) = 1;
c906108c 4805 }
134d01f1 4806
f792889a 4807 new_symbol (die, this_type, cu);
c906108c
SS
4808}
4809
4810/* Extract all information from a DW_TAG_array_type DIE and put it in
4811 the DIE's type field. For now, this only handles one dimensional
4812 arrays. */
4813
f792889a 4814static struct type *
e7c27a73 4815read_array_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 4816{
e7c27a73 4817 struct objfile *objfile = cu->objfile;
c906108c
SS
4818 struct die_info *child_die;
4819 struct type *type = NULL;
4820 struct type *element_type, *range_type, *index_type;
4821 struct type **range_types = NULL;
4822 struct attribute *attr;
4823 int ndim = 0;
4824 struct cleanup *back_to;
39cbfefa 4825 char *name;
c906108c 4826
e7c27a73 4827 element_type = die_type (die, cu);
c906108c
SS
4828
4829 /* Irix 6.2 native cc creates array types without children for
4830 arrays with unspecified length. */
639d11d3 4831 if (die->child == NULL)
c906108c 4832 {
6ccb9162 4833 index_type = builtin_type_int32;
c906108c 4834 range_type = create_range_type (NULL, index_type, 0, -1);
f792889a
DJ
4835 type = create_array_type (NULL, element_type, range_type);
4836 return set_die_type (die, type, cu);
c906108c
SS
4837 }
4838
4839 back_to = make_cleanup (null_cleanup, NULL);
639d11d3 4840 child_die = die->child;
c906108c
SS
4841 while (child_die && child_die->tag)
4842 {
4843 if (child_die->tag == DW_TAG_subrange_type)
4844 {
f792889a
DJ
4845 struct type *child_type = read_type_die (child_die, cu);
4846 if (child_type != NULL)
a02abb62
JB
4847 {
4848 /* The range type was succesfully read. Save it for
4849 the array type creation. */
4850 if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
4851 {
4852 range_types = (struct type **)
4853 xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
4854 * sizeof (struct type *));
4855 if (ndim == 0)
4856 make_cleanup (free_current_contents, &range_types);
4857 }
f792889a 4858 range_types[ndim++] = child_type;
a02abb62 4859 }
c906108c
SS
4860 }
4861 child_die = sibling_die (child_die);
4862 }
4863
4864 /* Dwarf2 dimensions are output from left to right, create the
4865 necessary array types in backwards order. */
7ca2d3a3 4866
c906108c 4867 type = element_type;
7ca2d3a3
DL
4868
4869 if (read_array_order (die, cu) == DW_ORD_col_major)
4870 {
4871 int i = 0;
4872 while (i < ndim)
4873 type = create_array_type (NULL, type, range_types[i++]);
4874 }
4875 else
4876 {
4877 while (ndim-- > 0)
4878 type = create_array_type (NULL, type, range_types[ndim]);
4879 }
c906108c 4880
f5f8a009
EZ
4881 /* Understand Dwarf2 support for vector types (like they occur on
4882 the PowerPC w/ AltiVec). Gcc just adds another attribute to the
4883 array type. This is not part of the Dwarf2/3 standard yet, but a
4884 custom vendor extension. The main difference between a regular
4885 array and the vector variant is that vectors are passed by value
4886 to functions. */
e142c38c 4887 attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
f5f8a009 4888 if (attr)
ea37ba09 4889 make_vector_type (type);
f5f8a009 4890
39cbfefa
DJ
4891 name = dwarf2_name (die, cu);
4892 if (name)
4893 TYPE_NAME (type) = name;
714e295e 4894
c906108c
SS
4895 do_cleanups (back_to);
4896
4897 /* Install the type in the die. */
f792889a 4898 return set_die_type (die, type, cu);
c906108c
SS
4899}
4900
7ca2d3a3
DL
4901static enum dwarf_array_dim_ordering
4902read_array_order (struct die_info *die, struct dwarf2_cu *cu)
4903{
4904 struct attribute *attr;
4905
4906 attr = dwarf2_attr (die, DW_AT_ordering, cu);
4907
4908 if (attr) return DW_SND (attr);
4909
4910 /*
4911 GNU F77 is a special case, as at 08/2004 array type info is the
4912 opposite order to the dwarf2 specification, but data is still
4913 laid out as per normal fortran.
4914
4915 FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
4916 version checking.
4917 */
4918
4919 if (cu->language == language_fortran &&
4920 cu->producer && strstr (cu->producer, "GNU F77"))
4921 {
4922 return DW_ORD_row_major;
4923 }
4924
4925 switch (cu->language_defn->la_array_ordering)
4926 {
4927 case array_column_major:
4928 return DW_ORD_col_major;
4929 case array_row_major:
4930 default:
4931 return DW_ORD_row_major;
4932 };
4933}
4934
72019c9c
GM
4935/* Extract all information from a DW_TAG_set_type DIE and put it in
4936 the DIE's type field. */
4937
f792889a 4938static struct type *
72019c9c
GM
4939read_set_type (struct die_info *die, struct dwarf2_cu *cu)
4940{
f792889a
DJ
4941 struct type *set_type = create_set_type (NULL, die_type (die, cu));
4942
4943 return set_die_type (die, set_type, cu);
72019c9c 4944}
7ca2d3a3 4945
c906108c
SS
4946/* First cut: install each common block member as a global variable. */
4947
4948static void
e7c27a73 4949read_common_block (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
4950{
4951 struct die_info *child_die;
4952 struct attribute *attr;
4953 struct symbol *sym;
4954 CORE_ADDR base = (CORE_ADDR) 0;
4955
e142c38c 4956 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
4957 if (attr)
4958 {
8e19ed76
PS
4959 /* Support the .debug_loc offsets */
4960 if (attr_form_is_block (attr))
4961 {
e7c27a73 4962 base = decode_locdesc (DW_BLOCK (attr), cu);
8e19ed76 4963 }
3690dd37 4964 else if (attr_form_is_section_offset (attr))
8e19ed76 4965 {
4d3c2250 4966 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
4967 }
4968 else
4969 {
4d3c2250
KB
4970 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
4971 "common block member");
8e19ed76 4972 }
c906108c 4973 }
639d11d3 4974 if (die->child != NULL)
c906108c 4975 {
639d11d3 4976 child_die = die->child;
c906108c
SS
4977 while (child_die && child_die->tag)
4978 {
e7c27a73 4979 sym = new_symbol (child_die, NULL, cu);
e142c38c 4980 attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu);
c906108c
SS
4981 if (attr)
4982 {
4983 SYMBOL_VALUE_ADDRESS (sym) =
e7c27a73 4984 base + decode_locdesc (DW_BLOCK (attr), cu);
c906108c
SS
4985 add_symbol_to_list (sym, &global_symbols);
4986 }
4987 child_die = sibling_die (child_die);
4988 }
4989 }
4990}
4991
0114d602 4992/* Create a type for a C++ namespace. */
d9fa45fe 4993
0114d602
DJ
4994static struct type *
4995read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
d9fa45fe 4996{
e7c27a73 4997 struct objfile *objfile = cu->objfile;
0114d602 4998 const char *previous_prefix, *name;
9219021c 4999 int is_anonymous;
0114d602
DJ
5000 struct type *type;
5001
5002 /* For extensions, reuse the type of the original namespace. */
5003 if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
5004 {
5005 struct die_info *ext_die;
5006 struct dwarf2_cu *ext_cu = cu;
5007 ext_die = dwarf2_extension (die, &ext_cu);
5008 type = read_type_die (ext_die, ext_cu);
5009 return set_die_type (die, type, cu);
5010 }
9219021c 5011
e142c38c 5012 name = namespace_name (die, &is_anonymous, cu);
9219021c
DC
5013
5014 /* Now build the name of the current namespace. */
5015
0114d602
DJ
5016 previous_prefix = determine_prefix (die, cu);
5017 if (previous_prefix[0] != '\0')
5018 name = typename_concat (&objfile->objfile_obstack,
5019 previous_prefix, name, cu);
5020
5021 /* Create the type. */
5022 type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
5023 objfile);
5024 TYPE_NAME (type) = (char *) name;
5025 TYPE_TAG_NAME (type) = TYPE_NAME (type);
5026
5027 set_die_type (die, type, cu);
5028
5029 return type;
5030}
5031
5032/* Read a C++ namespace. */
5033
5034static void
5035read_namespace (struct die_info *die, struct dwarf2_cu *cu)
5036{
5037 struct objfile *objfile = cu->objfile;
5038 const char *name;
5039 int is_anonymous;
9219021c 5040
5c4e30ca
DC
5041 /* Add a symbol associated to this if we haven't seen the namespace
5042 before. Also, add a using directive if it's an anonymous
5043 namespace. */
9219021c 5044
f2f0e013 5045 if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5c4e30ca
DC
5046 {
5047 struct type *type;
5048
0114d602 5049 type = read_type_die (die, cu);
e7c27a73 5050 new_symbol (die, type, cu);
5c4e30ca 5051
0114d602 5052 name = namespace_name (die, &is_anonymous, cu);
5c4e30ca 5053 if (is_anonymous)
0114d602
DJ
5054 {
5055 const char *previous_prefix = determine_prefix (die, cu);
5056 cp_add_using_directive (TYPE_NAME (type),
5057 strlen (previous_prefix),
5058 strlen (TYPE_NAME (type)));
5059 }
5c4e30ca 5060 }
9219021c 5061
639d11d3 5062 if (die->child != NULL)
d9fa45fe 5063 {
639d11d3 5064 struct die_info *child_die = die->child;
d9fa45fe
DC
5065
5066 while (child_die && child_die->tag)
5067 {
e7c27a73 5068 process_die (child_die, cu);
d9fa45fe
DC
5069 child_die = sibling_die (child_die);
5070 }
5071 }
38d518c9
EZ
5072}
5073
5d7cb8df
JK
5074/* Read a Fortran module. */
5075
5076static void
5077read_module (struct die_info *die, struct dwarf2_cu *cu)
5078{
5079 struct die_info *child_die = die->child;
5080
5081 /* FIXME: Support the separate Fortran module namespaces. */
5082
5083 while (child_die && child_die->tag)
5084 {
5085 process_die (child_die, cu);
5086 child_die = sibling_die (child_die);
5087 }
5088}
5089
38d518c9
EZ
5090/* Return the name of the namespace represented by DIE. Set
5091 *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
5092 namespace. */
5093
5094static const char *
e142c38c 5095namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
38d518c9
EZ
5096{
5097 struct die_info *current_die;
5098 const char *name = NULL;
5099
5100 /* Loop through the extensions until we find a name. */
5101
5102 for (current_die = die;
5103 current_die != NULL;
f2f0e013 5104 current_die = dwarf2_extension (die, &cu))
38d518c9 5105 {
e142c38c 5106 name = dwarf2_name (current_die, cu);
38d518c9
EZ
5107 if (name != NULL)
5108 break;
5109 }
5110
5111 /* Is it an anonymous namespace? */
5112
5113 *is_anonymous = (name == NULL);
5114 if (*is_anonymous)
5115 name = "(anonymous namespace)";
5116
5117 return name;
d9fa45fe
DC
5118}
5119
c906108c
SS
5120/* Extract all information from a DW_TAG_pointer_type DIE and add to
5121 the user defined type vector. */
5122
f792889a 5123static struct type *
e7c27a73 5124read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 5125{
5e2b427d 5126 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
e7c27a73 5127 struct comp_unit_head *cu_header = &cu->header;
c906108c 5128 struct type *type;
8b2dbe47
KB
5129 struct attribute *attr_byte_size;
5130 struct attribute *attr_address_class;
5131 int byte_size, addr_class;
c906108c 5132
e7c27a73 5133 type = lookup_pointer_type (die_type (die, cu));
8b2dbe47 5134
e142c38c 5135 attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
8b2dbe47
KB
5136 if (attr_byte_size)
5137 byte_size = DW_UNSND (attr_byte_size);
c906108c 5138 else
8b2dbe47
KB
5139 byte_size = cu_header->addr_size;
5140
e142c38c 5141 attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
8b2dbe47
KB
5142 if (attr_address_class)
5143 addr_class = DW_UNSND (attr_address_class);
5144 else
5145 addr_class = DW_ADDR_none;
5146
5147 /* If the pointer size or address class is different than the
5148 default, create a type variant marked as such and set the
5149 length accordingly. */
5150 if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
c906108c 5151 {
5e2b427d 5152 if (gdbarch_address_class_type_flags_p (gdbarch))
8b2dbe47
KB
5153 {
5154 int type_flags;
5155
849957d9 5156 type_flags = gdbarch_address_class_type_flags
5e2b427d 5157 (gdbarch, byte_size, addr_class);
876cecd0
TT
5158 gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
5159 == 0);
8b2dbe47
KB
5160 type = make_type_with_address_space (type, type_flags);
5161 }
5162 else if (TYPE_LENGTH (type) != byte_size)
5163 {
e2e0b3e5 5164 complaint (&symfile_complaints, _("invalid pointer size %d"), byte_size);
8b2dbe47
KB
5165 }
5166 else {
5167 /* Should we also complain about unhandled address classes? */
5168 }
c906108c 5169 }
8b2dbe47
KB
5170
5171 TYPE_LENGTH (type) = byte_size;
f792889a 5172 return set_die_type (die, type, cu);
c906108c
SS
5173}
5174
5175/* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
5176 the user defined type vector. */
5177
f792889a 5178static struct type *
e7c27a73 5179read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 5180{
e7c27a73 5181 struct objfile *objfile = cu->objfile;
c906108c
SS
5182 struct type *type;
5183 struct type *to_type;
5184 struct type *domain;
5185
e7c27a73
DJ
5186 to_type = die_type (die, cu);
5187 domain = die_containing_type (die, cu);
0d5de010
DJ
5188
5189 if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
5190 type = lookup_methodptr_type (to_type);
5191 else
5192 type = lookup_memberptr_type (to_type, domain);
c906108c 5193
f792889a 5194 return set_die_type (die, type, cu);
c906108c
SS
5195}
5196
5197/* Extract all information from a DW_TAG_reference_type DIE and add to
5198 the user defined type vector. */
5199
f792889a 5200static struct type *
e7c27a73 5201read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 5202{
e7c27a73 5203 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
5204 struct type *type;
5205 struct attribute *attr;
5206
e7c27a73 5207 type = lookup_reference_type (die_type (die, cu));
e142c38c 5208 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
5209 if (attr)
5210 {
5211 TYPE_LENGTH (type) = DW_UNSND (attr);
5212 }
5213 else
5214 {
107d2387 5215 TYPE_LENGTH (type) = cu_header->addr_size;
c906108c 5216 }
f792889a 5217 return set_die_type (die, type, cu);
c906108c
SS
5218}
5219
f792889a 5220static struct type *
e7c27a73 5221read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 5222{
f792889a 5223 struct type *base_type, *cv_type;
c906108c 5224
e7c27a73 5225 base_type = die_type (die, cu);
f792889a
DJ
5226 cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
5227 return set_die_type (die, cv_type, cu);
c906108c
SS
5228}
5229
f792889a 5230static struct type *
e7c27a73 5231read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 5232{
f792889a 5233 struct type *base_type, *cv_type;
c906108c 5234
e7c27a73 5235 base_type = die_type (die, cu);
f792889a
DJ
5236 cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
5237 return set_die_type (die, cv_type, cu);
c906108c
SS
5238}
5239
5240/* Extract all information from a DW_TAG_string_type DIE and add to
5241 the user defined type vector. It isn't really a user defined type,
5242 but it behaves like one, with other DIE's using an AT_user_def_type
5243 attribute to reference it. */
5244
f792889a 5245static struct type *
e7c27a73 5246read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 5247{
e7c27a73 5248 struct objfile *objfile = cu->objfile;
3b7538c0 5249 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
5250 struct type *type, *range_type, *index_type, *char_type;
5251 struct attribute *attr;
5252 unsigned int length;
5253
e142c38c 5254 attr = dwarf2_attr (die, DW_AT_string_length, cu);
c906108c
SS
5255 if (attr)
5256 {
5257 length = DW_UNSND (attr);
5258 }
5259 else
5260 {
b21b22e0 5261 /* check for the DW_AT_byte_size attribute */
e142c38c 5262 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
b21b22e0
PS
5263 if (attr)
5264 {
5265 length = DW_UNSND (attr);
5266 }
5267 else
5268 {
5269 length = 1;
5270 }
c906108c 5271 }
6ccb9162
UW
5272
5273 index_type = builtin_type_int32;
c906108c 5274 range_type = create_range_type (NULL, index_type, 1, length);
3b7538c0
UW
5275 char_type = language_string_char_type (cu->language_defn, gdbarch);
5276 type = create_string_type (NULL, char_type, range_type);
6ccb9162 5277
f792889a 5278 return set_die_type (die, type, cu);
c906108c
SS
5279}
5280
5281/* Handle DIES due to C code like:
5282
5283 struct foo
c5aa993b
JM
5284 {
5285 int (*funcp)(int a, long l);
5286 int b;
5287 };
c906108c
SS
5288
5289 ('funcp' generates a DW_TAG_subroutine_type DIE)
c5aa993b 5290 */
c906108c 5291
f792889a 5292static struct type *
e7c27a73 5293read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
5294{
5295 struct type *type; /* Type that this function returns */
5296 struct type *ftype; /* Function that returns above type */
5297 struct attribute *attr;
5298
e7c27a73 5299 type = die_type (die, cu);
323427d1 5300 ftype = make_function_type (type, (struct type **) 0, cu->objfile);
c906108c 5301
5b8101ae 5302 /* All functions in C++, Pascal and Java have prototypes. */
e142c38c 5303 attr = dwarf2_attr (die, DW_AT_prototyped, cu);
c906108c 5304 if ((attr && (DW_UNSND (attr) != 0))
987504bb 5305 || cu->language == language_cplus
5b8101ae
PM
5306 || cu->language == language_java
5307 || cu->language == language_pascal)
876cecd0 5308 TYPE_PROTOTYPED (ftype) = 1;
c906108c 5309
c055b101
CV
5310 /* Store the calling convention in the type if it's available in
5311 the subroutine die. Otherwise set the calling convention to
5312 the default value DW_CC_normal. */
5313 attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
5314 TYPE_CALLING_CONVENTION (ftype) = attr ? DW_UNSND (attr) : DW_CC_normal;
5315
639d11d3 5316 if (die->child != NULL)
c906108c
SS
5317 {
5318 struct die_info *child_die;
5319 int nparams = 0;
5320 int iparams = 0;
5321
5322 /* Count the number of parameters.
5323 FIXME: GDB currently ignores vararg functions, but knows about
5324 vararg member functions. */
639d11d3 5325 child_die = die->child;
c906108c
SS
5326 while (child_die && child_die->tag)
5327 {
5328 if (child_die->tag == DW_TAG_formal_parameter)
5329 nparams++;
5330 else if (child_die->tag == DW_TAG_unspecified_parameters)
876cecd0 5331 TYPE_VARARGS (ftype) = 1;
c906108c
SS
5332 child_die = sibling_die (child_die);
5333 }
5334
5335 /* Allocate storage for parameters and fill them in. */
5336 TYPE_NFIELDS (ftype) = nparams;
5337 TYPE_FIELDS (ftype) = (struct field *)
ae5a43e0 5338 TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
c906108c 5339
639d11d3 5340 child_die = die->child;
c906108c
SS
5341 while (child_die && child_die->tag)
5342 {
5343 if (child_die->tag == DW_TAG_formal_parameter)
5344 {
5345 /* Dwarf2 has no clean way to discern C++ static and non-static
c5aa993b
JM
5346 member functions. G++ helps GDB by marking the first
5347 parameter for non-static member functions (which is the
5348 this pointer) as artificial. We pass this information
5349 to dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL. */
e142c38c 5350 attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
c906108c
SS
5351 if (attr)
5352 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
5353 else
5354 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
e7c27a73 5355 TYPE_FIELD_TYPE (ftype, iparams) = die_type (child_die, cu);
c906108c
SS
5356 iparams++;
5357 }
5358 child_die = sibling_die (child_die);
5359 }
5360 }
5361
f792889a 5362 return set_die_type (die, ftype, cu);
c906108c
SS
5363}
5364
f792889a 5365static struct type *
e7c27a73 5366read_typedef (struct die_info *die, struct dwarf2_cu *cu)
c906108c 5367{
e7c27a73 5368 struct objfile *objfile = cu->objfile;
2f038fcb 5369 struct attribute *attr;
0114d602 5370 const char *name = NULL;
f792889a 5371 struct type *this_type;
c906108c 5372
0114d602 5373 name = dwarf2_full_name (die, cu);
f792889a 5374 this_type = init_type (TYPE_CODE_TYPEDEF, 0,
0114d602
DJ
5375 TYPE_FLAG_TARGET_STUB, NULL, objfile);
5376 TYPE_NAME (this_type) = (char *) name;
f792889a
DJ
5377 set_die_type (die, this_type, cu);
5378 TYPE_TARGET_TYPE (this_type) = die_type (die, cu);
5379 return this_type;
c906108c
SS
5380}
5381
5382/* Find a representation of a given base type and install
5383 it in the TYPE field of the die. */
5384
f792889a 5385static struct type *
e7c27a73 5386read_base_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 5387{
e7c27a73 5388 struct objfile *objfile = cu->objfile;
c906108c
SS
5389 struct type *type;
5390 struct attribute *attr;
5391 int encoding = 0, size = 0;
39cbfefa 5392 char *name;
6ccb9162
UW
5393 enum type_code code = TYPE_CODE_INT;
5394 int type_flags = 0;
5395 struct type *target_type = NULL;
c906108c 5396
e142c38c 5397 attr = dwarf2_attr (die, DW_AT_encoding, cu);
c906108c
SS
5398 if (attr)
5399 {
5400 encoding = DW_UNSND (attr);
5401 }
e142c38c 5402 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
c906108c
SS
5403 if (attr)
5404 {
5405 size = DW_UNSND (attr);
5406 }
39cbfefa 5407 name = dwarf2_name (die, cu);
6ccb9162 5408 if (!name)
c906108c 5409 {
6ccb9162
UW
5410 complaint (&symfile_complaints,
5411 _("DW_AT_name missing from DW_TAG_base_type"));
c906108c 5412 }
6ccb9162
UW
5413
5414 switch (encoding)
c906108c 5415 {
6ccb9162
UW
5416 case DW_ATE_address:
5417 /* Turn DW_ATE_address into a void * pointer. */
5418 code = TYPE_CODE_PTR;
5419 type_flags |= TYPE_FLAG_UNSIGNED;
5420 target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
5421 break;
5422 case DW_ATE_boolean:
5423 code = TYPE_CODE_BOOL;
5424 type_flags |= TYPE_FLAG_UNSIGNED;
5425 break;
5426 case DW_ATE_complex_float:
5427 code = TYPE_CODE_COMPLEX;
5428 target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
5429 break;
5430 case DW_ATE_decimal_float:
5431 code = TYPE_CODE_DECFLOAT;
5432 break;
5433 case DW_ATE_float:
5434 code = TYPE_CODE_FLT;
5435 break;
5436 case DW_ATE_signed:
5437 break;
5438 case DW_ATE_unsigned:
5439 type_flags |= TYPE_FLAG_UNSIGNED;
5440 break;
5441 case DW_ATE_signed_char:
868a0084
PM
5442 if (cu->language == language_ada || cu->language == language_m2
5443 || cu->language == language_pascal)
6ccb9162
UW
5444 code = TYPE_CODE_CHAR;
5445 break;
5446 case DW_ATE_unsigned_char:
868a0084
PM
5447 if (cu->language == language_ada || cu->language == language_m2
5448 || cu->language == language_pascal)
6ccb9162
UW
5449 code = TYPE_CODE_CHAR;
5450 type_flags |= TYPE_FLAG_UNSIGNED;
5451 break;
5452 default:
5453 complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
5454 dwarf_type_encoding_name (encoding));
5455 break;
c906108c 5456 }
6ccb9162 5457
0114d602
DJ
5458 type = init_type (code, size, type_flags, NULL, objfile);
5459 TYPE_NAME (type) = name;
6ccb9162
UW
5460 TYPE_TARGET_TYPE (type) = target_type;
5461
0114d602 5462 if (name && strcmp (name, "char") == 0)
876cecd0 5463 TYPE_NOSIGN (type) = 1;
0114d602 5464
f792889a 5465 return set_die_type (die, type, cu);
c906108c
SS
5466}
5467
a02abb62
JB
5468/* Read the given DW_AT_subrange DIE. */
5469
f792889a 5470static struct type *
a02abb62
JB
5471read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
5472{
5e2b427d 5473 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
a02abb62
JB
5474 struct type *base_type;
5475 struct type *range_type;
5476 struct attribute *attr;
5477 int low = 0;
5478 int high = -1;
39cbfefa 5479 char *name;
a02abb62 5480
a02abb62 5481 base_type = die_type (die, cu);
3d1f72c2 5482 if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
a02abb62
JB
5483 {
5484 complaint (&symfile_complaints,
e2e0b3e5 5485 _("DW_AT_type missing from DW_TAG_subrange_type"));
17a912b6 5486 base_type
5e2b427d 5487 = init_type (TYPE_CODE_INT, gdbarch_addr_bit (gdbarch) / 8,
6ccb9162 5488 0, NULL, cu->objfile);
a02abb62
JB
5489 }
5490
e142c38c 5491 if (cu->language == language_fortran)
a02abb62
JB
5492 {
5493 /* FORTRAN implies a lower bound of 1, if not given. */
5494 low = 1;
5495 }
5496
dd5e6932
DJ
5497 /* FIXME: For variable sized arrays either of these could be
5498 a variable rather than a constant value. We'll allow it,
5499 but we don't know how to handle it. */
e142c38c 5500 attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
a02abb62
JB
5501 if (attr)
5502 low = dwarf2_get_attr_constant_value (attr, 0);
5503
e142c38c 5504 attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
a02abb62
JB
5505 if (attr)
5506 {
5507 if (attr->form == DW_FORM_block1)
5508 {
5509 /* GCC encodes arrays with unspecified or dynamic length
5510 with a DW_FORM_block1 attribute.
5511 FIXME: GDB does not yet know how to handle dynamic
5512 arrays properly, treat them as arrays with unspecified
5513 length for now.
5514
5515 FIXME: jimb/2003-09-22: GDB does not really know
5516 how to handle arrays of unspecified length
5517 either; we just represent them as zero-length
5518 arrays. Choose an appropriate upper bound given
5519 the lower bound we've computed above. */
5520 high = low - 1;
5521 }
5522 else
5523 high = dwarf2_get_attr_constant_value (attr, 1);
5524 }
5525
5526 range_type = create_range_type (NULL, base_type, low, high);
5527
39cbfefa
DJ
5528 name = dwarf2_name (die, cu);
5529 if (name)
5530 TYPE_NAME (range_type) = name;
a02abb62 5531
e142c38c 5532 attr = dwarf2_attr (die, DW_AT_byte_size, cu);
a02abb62
JB
5533 if (attr)
5534 TYPE_LENGTH (range_type) = DW_UNSND (attr);
5535
f792889a 5536 return set_die_type (die, range_type, cu);
a02abb62
JB
5537}
5538
f792889a 5539static struct type *
81a17f79
JB
5540read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
5541{
5542 struct type *type;
81a17f79 5543
81a17f79
JB
5544 /* For now, we only support the C meaning of an unspecified type: void. */
5545
0114d602
DJ
5546 type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
5547 TYPE_NAME (type) = dwarf2_name (die, cu);
81a17f79 5548
f792889a 5549 return set_die_type (die, type, cu);
81a17f79 5550}
a02abb62 5551
51545339
DJ
5552/* Trivial hash function for die_info: the hash value of a DIE
5553 is its offset in .debug_info for this objfile. */
5554
5555static hashval_t
5556die_hash (const void *item)
5557{
5558 const struct die_info *die = item;
5559 return die->offset;
5560}
5561
5562/* Trivial comparison function for die_info structures: two DIEs
5563 are equal if they have the same offset. */
5564
5565static int
5566die_eq (const void *item_lhs, const void *item_rhs)
5567{
5568 const struct die_info *die_lhs = item_lhs;
5569 const struct die_info *die_rhs = item_rhs;
5570 return die_lhs->offset == die_rhs->offset;
5571}
5572
c906108c
SS
5573/* Read a whole compilation unit into a linked list of dies. */
5574
f9aca02d 5575static struct die_info *
fe1b8b76 5576read_comp_unit (gdb_byte *info_ptr, bfd *abfd, struct dwarf2_cu *cu)
c906108c 5577{
51545339
DJ
5578 cu->die_hash
5579 = htab_create_alloc_ex (cu->header.length / 12,
5580 die_hash,
5581 die_eq,
5582 NULL,
5583 &cu->comp_unit_obstack,
5584 hashtab_obstack_allocate,
5585 dummy_obstack_deallocate);
5586
e7c27a73 5587 return read_die_and_children (info_ptr, abfd, cu, &info_ptr, NULL);
639d11d3
DC
5588}
5589
d97bc12b
DE
5590/* Main entry point for reading a DIE and all children.
5591 Read the DIE and dump it if requested. */
5592
5593static struct die_info *
5594read_die_and_children (gdb_byte *info_ptr, bfd *abfd,
5595 struct dwarf2_cu *cu,
5596 gdb_byte **new_info_ptr,
5597 struct die_info *parent)
5598{
5599 struct die_info *result = read_die_and_children_1 (info_ptr, abfd, cu,
5600 new_info_ptr, parent);
5601
5602 if (dwarf2_die_debug)
5603 {
5604 fprintf_unfiltered (gdb_stdlog, "Read die from .debug_info:\n");
5605 dump_die (result, dwarf2_die_debug);
5606 }
5607
5608 return result;
5609}
5610
639d11d3
DC
5611/* Read a single die and all its descendents. Set the die's sibling
5612 field to NULL; set other fields in the die correctly, and set all
5613 of the descendents' fields correctly. Set *NEW_INFO_PTR to the
5614 location of the info_ptr after reading all of those dies. PARENT
5615 is the parent of the die in question. */
5616
5617static struct die_info *
d97bc12b
DE
5618read_die_and_children_1 (gdb_byte *info_ptr, bfd *abfd,
5619 struct dwarf2_cu *cu,
5620 gdb_byte **new_info_ptr,
5621 struct die_info *parent)
639d11d3
DC
5622{
5623 struct die_info *die;
fe1b8b76 5624 gdb_byte *cur_ptr;
639d11d3
DC
5625 int has_children;
5626
e7c27a73 5627 cur_ptr = read_full_die (&die, abfd, info_ptr, cu, &has_children);
1d325ec1
DJ
5628 if (die == NULL)
5629 {
5630 *new_info_ptr = cur_ptr;
5631 return NULL;
5632 }
51545339 5633 store_in_ref_table (die, cu);
639d11d3
DC
5634
5635 if (has_children)
5636 {
e7c27a73 5637 die->child = read_die_and_siblings (cur_ptr, abfd, cu,
639d11d3
DC
5638 new_info_ptr, die);
5639 }
5640 else
5641 {
5642 die->child = NULL;
5643 *new_info_ptr = cur_ptr;
5644 }
5645
5646 die->sibling = NULL;
5647 die->parent = parent;
5648 return die;
5649}
5650
5651/* Read a die, all of its descendents, and all of its siblings; set
5652 all of the fields of all of the dies correctly. Arguments are as
5653 in read_die_and_children. */
5654
5655static struct die_info *
fe1b8b76 5656read_die_and_siblings (gdb_byte *info_ptr, bfd *abfd,
e7c27a73 5657 struct dwarf2_cu *cu,
fe1b8b76 5658 gdb_byte **new_info_ptr,
639d11d3
DC
5659 struct die_info *parent)
5660{
5661 struct die_info *first_die, *last_sibling;
fe1b8b76 5662 gdb_byte *cur_ptr;
639d11d3 5663
c906108c 5664 cur_ptr = info_ptr;
639d11d3
DC
5665 first_die = last_sibling = NULL;
5666
5667 while (1)
c906108c 5668 {
639d11d3 5669 struct die_info *die
d97bc12b 5670 = read_die_and_children_1 (cur_ptr, abfd, cu, &cur_ptr, parent);
639d11d3 5671
1d325ec1 5672 if (die == NULL)
c906108c 5673 {
639d11d3
DC
5674 *new_info_ptr = cur_ptr;
5675 return first_die;
c906108c 5676 }
1d325ec1
DJ
5677
5678 if (!first_die)
5679 first_die = die;
c906108c 5680 else
1d325ec1
DJ
5681 last_sibling->sibling = die;
5682
5683 last_sibling = die;
c906108c 5684 }
c906108c
SS
5685}
5686
c906108c
SS
5687/* In DWARF version 2, the description of the debugging information is
5688 stored in a separate .debug_abbrev section. Before we read any
5689 dies from a section we read in all abbreviations and install them
72bf9492
DJ
5690 in a hash table. This function also sets flags in CU describing
5691 the data found in the abbrev table. */
c906108c
SS
5692
5693static void
e7c27a73 5694dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu)
c906108c 5695{
e7c27a73 5696 struct comp_unit_head *cu_header = &cu->header;
fe1b8b76 5697 gdb_byte *abbrev_ptr;
c906108c
SS
5698 struct abbrev_info *cur_abbrev;
5699 unsigned int abbrev_number, bytes_read, abbrev_name;
5700 unsigned int abbrev_form, hash_number;
f3dd6933
DJ
5701 struct attr_abbrev *cur_attrs;
5702 unsigned int allocated_attrs;
c906108c 5703
57349743 5704 /* Initialize dwarf2 abbrevs */
f3dd6933
DJ
5705 obstack_init (&cu->abbrev_obstack);
5706 cu->dwarf2_abbrevs = obstack_alloc (&cu->abbrev_obstack,
5707 (ABBREV_HASH_SIZE
5708 * sizeof (struct abbrev_info *)));
5709 memset (cu->dwarf2_abbrevs, 0,
5710 ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
c906108c 5711
dce234bc 5712 abbrev_ptr = dwarf2_per_objfile->abbrev.buffer + cu_header->abbrev_offset;
c906108c
SS
5713 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5714 abbrev_ptr += bytes_read;
5715
f3dd6933
DJ
5716 allocated_attrs = ATTR_ALLOC_CHUNK;
5717 cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
5718
c906108c
SS
5719 /* loop until we reach an abbrev number of 0 */
5720 while (abbrev_number)
5721 {
f3dd6933 5722 cur_abbrev = dwarf_alloc_abbrev (cu);
c906108c
SS
5723
5724 /* read in abbrev header */
5725 cur_abbrev->number = abbrev_number;
5726 cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5727 abbrev_ptr += bytes_read;
5728 cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
5729 abbrev_ptr += 1;
5730
72bf9492
DJ
5731 if (cur_abbrev->tag == DW_TAG_namespace)
5732 cu->has_namespace_info = 1;
5733
c906108c
SS
5734 /* now read in declarations */
5735 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5736 abbrev_ptr += bytes_read;
5737 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5738 abbrev_ptr += bytes_read;
5739 while (abbrev_name)
5740 {
f3dd6933 5741 if (cur_abbrev->num_attrs == allocated_attrs)
c906108c 5742 {
f3dd6933
DJ
5743 allocated_attrs += ATTR_ALLOC_CHUNK;
5744 cur_attrs
5745 = xrealloc (cur_attrs, (allocated_attrs
5746 * sizeof (struct attr_abbrev)));
c906108c 5747 }
ae038cb0
DJ
5748
5749 /* Record whether this compilation unit might have
5750 inter-compilation-unit references. If we don't know what form
5751 this attribute will have, then it might potentially be a
5752 DW_FORM_ref_addr, so we conservatively expect inter-CU
5753 references. */
5754
5755 if (abbrev_form == DW_FORM_ref_addr
5756 || abbrev_form == DW_FORM_indirect)
5757 cu->has_form_ref_addr = 1;
5758
f3dd6933
DJ
5759 cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
5760 cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
c906108c
SS
5761 abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5762 abbrev_ptr += bytes_read;
5763 abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5764 abbrev_ptr += bytes_read;
5765 }
5766
f3dd6933
DJ
5767 cur_abbrev->attrs = obstack_alloc (&cu->abbrev_obstack,
5768 (cur_abbrev->num_attrs
5769 * sizeof (struct attr_abbrev)));
5770 memcpy (cur_abbrev->attrs, cur_attrs,
5771 cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
5772
c906108c 5773 hash_number = abbrev_number % ABBREV_HASH_SIZE;
f3dd6933
DJ
5774 cur_abbrev->next = cu->dwarf2_abbrevs[hash_number];
5775 cu->dwarf2_abbrevs[hash_number] = cur_abbrev;
c906108c
SS
5776
5777 /* Get next abbreviation.
5778 Under Irix6 the abbreviations for a compilation unit are not
c5aa993b
JM
5779 always properly terminated with an abbrev number of 0.
5780 Exit loop if we encounter an abbreviation which we have
5781 already read (which means we are about to read the abbreviations
5782 for the next compile unit) or if the end of the abbreviation
5783 table is reached. */
dce234bc
PP
5784 if ((unsigned int) (abbrev_ptr - dwarf2_per_objfile->abbrev.buffer)
5785 >= dwarf2_per_objfile->abbrev.size)
c906108c
SS
5786 break;
5787 abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
5788 abbrev_ptr += bytes_read;
e7c27a73 5789 if (dwarf2_lookup_abbrev (abbrev_number, cu) != NULL)
c906108c
SS
5790 break;
5791 }
f3dd6933
DJ
5792
5793 xfree (cur_attrs);
c906108c
SS
5794}
5795
f3dd6933 5796/* Release the memory used by the abbrev table for a compilation unit. */
c906108c 5797
c906108c 5798static void
f3dd6933 5799dwarf2_free_abbrev_table (void *ptr_to_cu)
c906108c 5800{
f3dd6933 5801 struct dwarf2_cu *cu = ptr_to_cu;
c906108c 5802
f3dd6933
DJ
5803 obstack_free (&cu->abbrev_obstack, NULL);
5804 cu->dwarf2_abbrevs = NULL;
c906108c
SS
5805}
5806
5807/* Lookup an abbrev_info structure in the abbrev hash table. */
5808
5809static struct abbrev_info *
e7c27a73 5810dwarf2_lookup_abbrev (unsigned int number, struct dwarf2_cu *cu)
c906108c
SS
5811{
5812 unsigned int hash_number;
5813 struct abbrev_info *abbrev;
5814
5815 hash_number = number % ABBREV_HASH_SIZE;
f3dd6933 5816 abbrev = cu->dwarf2_abbrevs[hash_number];
c906108c
SS
5817
5818 while (abbrev)
5819 {
5820 if (abbrev->number == number)
5821 return abbrev;
5822 else
5823 abbrev = abbrev->next;
5824 }
5825 return NULL;
5826}
5827
72bf9492
DJ
5828/* Returns nonzero if TAG represents a type that we might generate a partial
5829 symbol for. */
5830
5831static int
5832is_type_tag_for_partial (int tag)
5833{
5834 switch (tag)
5835 {
5836#if 0
5837 /* Some types that would be reasonable to generate partial symbols for,
5838 that we don't at present. */
5839 case DW_TAG_array_type:
5840 case DW_TAG_file_type:
5841 case DW_TAG_ptr_to_member_type:
5842 case DW_TAG_set_type:
5843 case DW_TAG_string_type:
5844 case DW_TAG_subroutine_type:
5845#endif
5846 case DW_TAG_base_type:
5847 case DW_TAG_class_type:
680b30c7 5848 case DW_TAG_interface_type:
72bf9492
DJ
5849 case DW_TAG_enumeration_type:
5850 case DW_TAG_structure_type:
5851 case DW_TAG_subrange_type:
5852 case DW_TAG_typedef:
5853 case DW_TAG_union_type:
5854 return 1;
5855 default:
5856 return 0;
5857 }
5858}
5859
5860/* Load all DIEs that are interesting for partial symbols into memory. */
5861
5862static struct partial_die_info *
fe1b8b76 5863load_partial_dies (bfd *abfd, gdb_byte *info_ptr, int building_psymtab,
72bf9492
DJ
5864 struct dwarf2_cu *cu)
5865{
5866 struct partial_die_info *part_die;
5867 struct partial_die_info *parent_die, *last_die, *first_die = NULL;
5868 struct abbrev_info *abbrev;
5869 unsigned int bytes_read;
5afb4e99 5870 unsigned int load_all = 0;
72bf9492
DJ
5871
5872 int nesting_level = 1;
5873
5874 parent_die = NULL;
5875 last_die = NULL;
5876
5afb4e99
DJ
5877 if (cu->per_cu && cu->per_cu->load_all_dies)
5878 load_all = 1;
5879
72bf9492
DJ
5880 cu->partial_dies
5881 = htab_create_alloc_ex (cu->header.length / 12,
5882 partial_die_hash,
5883 partial_die_eq,
5884 NULL,
5885 &cu->comp_unit_obstack,
5886 hashtab_obstack_allocate,
5887 dummy_obstack_deallocate);
5888
5889 part_die = obstack_alloc (&cu->comp_unit_obstack,
5890 sizeof (struct partial_die_info));
5891
5892 while (1)
5893 {
5894 abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
5895
5896 /* A NULL abbrev means the end of a series of children. */
5897 if (abbrev == NULL)
5898 {
5899 if (--nesting_level == 0)
5900 {
5901 /* PART_DIE was probably the last thing allocated on the
5902 comp_unit_obstack, so we could call obstack_free
5903 here. We don't do that because the waste is small,
5904 and will be cleaned up when we're done with this
5905 compilation unit. This way, we're also more robust
5906 against other users of the comp_unit_obstack. */
5907 return first_die;
5908 }
5909 info_ptr += bytes_read;
5910 last_die = parent_die;
5911 parent_die = parent_die->die_parent;
5912 continue;
5913 }
5914
5afb4e99
DJ
5915 /* Check whether this DIE is interesting enough to save. Normally
5916 we would not be interested in members here, but there may be
5917 later variables referencing them via DW_AT_specification (for
5918 static members). */
5919 if (!load_all
5920 && !is_type_tag_for_partial (abbrev->tag)
72bf9492
DJ
5921 && abbrev->tag != DW_TAG_enumerator
5922 && abbrev->tag != DW_TAG_subprogram
bc30ff58 5923 && abbrev->tag != DW_TAG_lexical_block
72bf9492 5924 && abbrev->tag != DW_TAG_variable
5afb4e99
DJ
5925 && abbrev->tag != DW_TAG_namespace
5926 && abbrev->tag != DW_TAG_member)
72bf9492
DJ
5927 {
5928 /* Otherwise we skip to the next sibling, if any. */
5929 info_ptr = skip_one_die (info_ptr + bytes_read, abbrev, cu);
5930 continue;
5931 }
5932
5933 info_ptr = read_partial_die (part_die, abbrev, bytes_read,
5934 abfd, info_ptr, cu);
5935
5936 /* This two-pass algorithm for processing partial symbols has a
5937 high cost in cache pressure. Thus, handle some simple cases
5938 here which cover the majority of C partial symbols. DIEs
5939 which neither have specification tags in them, nor could have
5940 specification tags elsewhere pointing at them, can simply be
5941 processed and discarded.
5942
5943 This segment is also optional; scan_partial_symbols and
5944 add_partial_symbol will handle these DIEs if we chain
5945 them in normally. When compilers which do not emit large
5946 quantities of duplicate debug information are more common,
5947 this code can probably be removed. */
5948
5949 /* Any complete simple types at the top level (pretty much all
5950 of them, for a language without namespaces), can be processed
5951 directly. */
5952 if (parent_die == NULL
5953 && part_die->has_specification == 0
5954 && part_die->is_declaration == 0
5955 && (part_die->tag == DW_TAG_typedef
5956 || part_die->tag == DW_TAG_base_type
5957 || part_die->tag == DW_TAG_subrange_type))
5958 {
5959 if (building_psymtab && part_die->name != NULL)
5960 add_psymbol_to_list (part_die->name, strlen (part_die->name),
5961 VAR_DOMAIN, LOC_TYPEDEF,
5962 &cu->objfile->static_psymbols,
5963 0, (CORE_ADDR) 0, cu->language, cu->objfile);
5964 info_ptr = locate_pdi_sibling (part_die, info_ptr, abfd, cu);
5965 continue;
5966 }
5967
5968 /* If we're at the second level, and we're an enumerator, and
5969 our parent has no specification (meaning possibly lives in a
5970 namespace elsewhere), then we can add the partial symbol now
5971 instead of queueing it. */
5972 if (part_die->tag == DW_TAG_enumerator
5973 && parent_die != NULL
5974 && parent_die->die_parent == NULL
5975 && parent_die->tag == DW_TAG_enumeration_type
5976 && parent_die->has_specification == 0)
5977 {
5978 if (part_die->name == NULL)
e2e0b3e5 5979 complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
72bf9492
DJ
5980 else if (building_psymtab)
5981 add_psymbol_to_list (part_die->name, strlen (part_die->name),
5982 VAR_DOMAIN, LOC_CONST,
987504bb
JJ
5983 (cu->language == language_cplus
5984 || cu->language == language_java)
72bf9492
DJ
5985 ? &cu->objfile->global_psymbols
5986 : &cu->objfile->static_psymbols,
5987 0, (CORE_ADDR) 0, cu->language, cu->objfile);
5988
5989 info_ptr = locate_pdi_sibling (part_die, info_ptr, abfd, cu);
5990 continue;
5991 }
5992
5993 /* We'll save this DIE so link it in. */
5994 part_die->die_parent = parent_die;
5995 part_die->die_sibling = NULL;
5996 part_die->die_child = NULL;
5997
5998 if (last_die && last_die == parent_die)
5999 last_die->die_child = part_die;
6000 else if (last_die)
6001 last_die->die_sibling = part_die;
6002
6003 last_die = part_die;
6004
6005 if (first_die == NULL)
6006 first_die = part_die;
6007
6008 /* Maybe add the DIE to the hash table. Not all DIEs that we
6009 find interesting need to be in the hash table, because we
6010 also have the parent/sibling/child chains; only those that we
6011 might refer to by offset later during partial symbol reading.
6012
6013 For now this means things that might have be the target of a
6014 DW_AT_specification, DW_AT_abstract_origin, or
6015 DW_AT_extension. DW_AT_extension will refer only to
6016 namespaces; DW_AT_abstract_origin refers to functions (and
6017 many things under the function DIE, but we do not recurse
6018 into function DIEs during partial symbol reading) and
6019 possibly variables as well; DW_AT_specification refers to
6020 declarations. Declarations ought to have the DW_AT_declaration
6021 flag. It happens that GCC forgets to put it in sometimes, but
6022 only for functions, not for types.
6023
6024 Adding more things than necessary to the hash table is harmless
6025 except for the performance cost. Adding too few will result in
5afb4e99
DJ
6026 wasted time in find_partial_die, when we reread the compilation
6027 unit with load_all_dies set. */
72bf9492 6028
5afb4e99
DJ
6029 if (load_all
6030 || abbrev->tag == DW_TAG_subprogram
72bf9492
DJ
6031 || abbrev->tag == DW_TAG_variable
6032 || abbrev->tag == DW_TAG_namespace
6033 || part_die->is_declaration)
6034 {
6035 void **slot;
6036
6037 slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
6038 part_die->offset, INSERT);
6039 *slot = part_die;
6040 }
6041
6042 part_die = obstack_alloc (&cu->comp_unit_obstack,
6043 sizeof (struct partial_die_info));
6044
6045 /* For some DIEs we want to follow their children (if any). For C
bc30ff58 6046 we have no reason to follow the children of structures; for other
72bf9492 6047 languages we have to, both so that we can get at method physnames
bc30ff58
JB
6048 to infer fully qualified class names, and for DW_AT_specification.
6049
6050 For Ada, we need to scan the children of subprograms and lexical
6051 blocks as well because Ada allows the definition of nested
6052 entities that could be interesting for the debugger, such as
6053 nested subprograms for instance. */
72bf9492 6054 if (last_die->has_children
5afb4e99
DJ
6055 && (load_all
6056 || last_die->tag == DW_TAG_namespace
72bf9492
DJ
6057 || last_die->tag == DW_TAG_enumeration_type
6058 || (cu->language != language_c
6059 && (last_die->tag == DW_TAG_class_type
680b30c7 6060 || last_die->tag == DW_TAG_interface_type
72bf9492 6061 || last_die->tag == DW_TAG_structure_type
bc30ff58
JB
6062 || last_die->tag == DW_TAG_union_type))
6063 || (cu->language == language_ada
6064 && (last_die->tag == DW_TAG_subprogram
6065 || last_die->tag == DW_TAG_lexical_block))))
72bf9492
DJ
6066 {
6067 nesting_level++;
6068 parent_die = last_die;
6069 continue;
6070 }
6071
6072 /* Otherwise we skip to the next sibling, if any. */
6073 info_ptr = locate_pdi_sibling (last_die, info_ptr, abfd, cu);
6074
6075 /* Back to the top, do it again. */
6076 }
6077}
6078
c906108c
SS
6079/* Read a minimal amount of information into the minimal die structure. */
6080
fe1b8b76 6081static gdb_byte *
72bf9492
DJ
6082read_partial_die (struct partial_die_info *part_die,
6083 struct abbrev_info *abbrev,
6084 unsigned int abbrev_len, bfd *abfd,
fe1b8b76 6085 gdb_byte *info_ptr, struct dwarf2_cu *cu)
c906108c 6086{
72bf9492 6087 unsigned int bytes_read, i;
c906108c 6088 struct attribute attr;
c5aa993b 6089 int has_low_pc_attr = 0;
c906108c 6090 int has_high_pc_attr = 0;
e7030f15 6091 CORE_ADDR base_address = 0;
85cbf3d3
JK
6092 enum
6093 {
6094 base_address_none,
6095 base_address_low_pc,
6096 /* Overrides BASE_ADDRESS_LOW_PC. */
6097 base_address_entry_pc
6098 }
6099 base_address_type = base_address_none;
c906108c 6100
72bf9492 6101 memset (part_die, 0, sizeof (struct partial_die_info));
c906108c 6102
dce234bc 6103 part_die->offset = info_ptr - dwarf2_per_objfile->info.buffer;
72bf9492
DJ
6104
6105 info_ptr += abbrev_len;
6106
6107 if (abbrev == NULL)
6108 return info_ptr;
6109
c906108c
SS
6110 part_die->tag = abbrev->tag;
6111 part_die->has_children = abbrev->has_children;
c906108c
SS
6112
6113 for (i = 0; i < abbrev->num_attrs; ++i)
6114 {
e7c27a73 6115 info_ptr = read_attribute (&attr, &abbrev->attrs[i], abfd, info_ptr, cu);
c906108c
SS
6116
6117 /* Store the data if it is of an attribute we want to keep in a
c5aa993b 6118 partial symbol table. */
c906108c
SS
6119 switch (attr.name)
6120 {
6121 case DW_AT_name:
71c25dea
TT
6122 switch (part_die->tag)
6123 {
6124 case DW_TAG_compile_unit:
6125 /* Compilation units have a DW_AT_name that is a filename, not
6126 a source language identifier. */
6127 case DW_TAG_enumeration_type:
6128 case DW_TAG_enumerator:
6129 /* These tags always have simple identifiers already; no need
6130 to canonicalize them. */
6131 part_die->name = DW_STRING (&attr);
6132 break;
6133 default:
6134 part_die->name
6135 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
6136 &cu->comp_unit_obstack);
6137 break;
6138 }
c906108c 6139 break;
57c22c6c
BR
6140 case DW_AT_comp_dir:
6141 if (part_die->dirname == NULL)
6142 part_die->dirname = DW_STRING (&attr);
6143 break;
c906108c
SS
6144 case DW_AT_MIPS_linkage_name:
6145 part_die->name = DW_STRING (&attr);
6146 break;
6147 case DW_AT_low_pc:
6148 has_low_pc_attr = 1;
6149 part_die->lowpc = DW_ADDR (&attr);
85cbf3d3
JK
6150 if (part_die->tag == DW_TAG_compile_unit
6151 && base_address_type < base_address_low_pc)
6152 {
6153 base_address = DW_ADDR (&attr);
6154 base_address_type = base_address_low_pc;
6155 }
c906108c
SS
6156 break;
6157 case DW_AT_high_pc:
6158 has_high_pc_attr = 1;
6159 part_die->highpc = DW_ADDR (&attr);
6160 break;
85cbf3d3
JK
6161 case DW_AT_entry_pc:
6162 if (part_die->tag == DW_TAG_compile_unit
6163 && base_address_type < base_address_entry_pc)
6164 {
6165 base_address = DW_ADDR (&attr);
6166 base_address_type = base_address_entry_pc;
6167 }
6168 break;
43039443 6169 case DW_AT_ranges:
ff013f42
JK
6170 if (part_die->tag == DW_TAG_compile_unit)
6171 {
6172 cu->ranges_offset = DW_UNSND (&attr);
6173 cu->has_ranges_offset = 1;
6174 }
43039443 6175 break;
c906108c 6176 case DW_AT_location:
8e19ed76
PS
6177 /* Support the .debug_loc offsets */
6178 if (attr_form_is_block (&attr))
6179 {
6180 part_die->locdesc = DW_BLOCK (&attr);
6181 }
3690dd37 6182 else if (attr_form_is_section_offset (&attr))
8e19ed76 6183 {
4d3c2250 6184 dwarf2_complex_location_expr_complaint ();
8e19ed76
PS
6185 }
6186 else
6187 {
4d3c2250
KB
6188 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
6189 "partial symbol information");
8e19ed76 6190 }
c906108c
SS
6191 break;
6192 case DW_AT_language:
6193 part_die->language = DW_UNSND (&attr);
6194 break;
6195 case DW_AT_external:
6196 part_die->is_external = DW_UNSND (&attr);
6197 break;
6198 case DW_AT_declaration:
6199 part_die->is_declaration = DW_UNSND (&attr);
6200 break;
6201 case DW_AT_type:
6202 part_die->has_type = 1;
6203 break;
6204 case DW_AT_abstract_origin:
6205 case DW_AT_specification:
72bf9492
DJ
6206 case DW_AT_extension:
6207 part_die->has_specification = 1;
c764a876 6208 part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
c906108c
SS
6209 break;
6210 case DW_AT_sibling:
6211 /* Ignore absolute siblings, they might point outside of
6212 the current compile unit. */
6213 if (attr.form == DW_FORM_ref_addr)
e2e0b3e5 6214 complaint (&symfile_complaints, _("ignoring absolute DW_AT_sibling"));
c906108c 6215 else
dce234bc 6216 part_die->sibling = dwarf2_per_objfile->info.buffer
c764a876 6217 + dwarf2_get_ref_die_offset (&attr);
c906108c 6218 break;
aaa75496
JB
6219 case DW_AT_stmt_list:
6220 part_die->has_stmt_list = 1;
6221 part_die->line_offset = DW_UNSND (&attr);
6222 break;
fa4028e9
JB
6223 case DW_AT_byte_size:
6224 part_die->has_byte_size = 1;
6225 break;
68511cec
CES
6226 case DW_AT_calling_convention:
6227 /* DWARF doesn't provide a way to identify a program's source-level
6228 entry point. DW_AT_calling_convention attributes are only meant
6229 to describe functions' calling conventions.
6230
6231 However, because it's a necessary piece of information in
6232 Fortran, and because DW_CC_program is the only piece of debugging
6233 information whose definition refers to a 'main program' at all,
6234 several compilers have begun marking Fortran main programs with
6235 DW_CC_program --- even when those functions use the standard
6236 calling conventions.
6237
6238 So until DWARF specifies a way to provide this information and
6239 compilers pick up the new representation, we'll support this
6240 practice. */
6241 if (DW_UNSND (&attr) == DW_CC_program
6242 && cu->language == language_fortran)
6243 set_main_name (part_die->name);
6244 break;
c906108c
SS
6245 default:
6246 break;
6247 }
6248 }
6249
c906108c
SS
6250 /* When using the GNU linker, .gnu.linkonce. sections are used to
6251 eliminate duplicate copies of functions and vtables and such.
6252 The linker will arbitrarily choose one and discard the others.
6253 The AT_*_pc values for such functions refer to local labels in
6254 these sections. If the section from that file was discarded, the
6255 labels are not in the output, so the relocs get a value of 0.
6256 If this is a discarded function, mark the pc bounds as invalid,
6257 so that GDB will ignore it. */
6258 if (has_low_pc_attr && has_high_pc_attr
6259 && part_die->lowpc < part_die->highpc
6260 && (part_die->lowpc != 0
72dca2f5 6261 || dwarf2_per_objfile->has_section_at_zero))
0b010bcc 6262 part_die->has_pc_info = 1;
85cbf3d3 6263
d00adf39 6264 if (base_address_type != base_address_none && !cu->base_known)
85cbf3d3
JK
6265 {
6266 gdb_assert (part_die->tag == DW_TAG_compile_unit);
d00adf39
DE
6267 cu->base_known = 1;
6268 cu->base_address = base_address;
85cbf3d3
JK
6269 }
6270
c906108c
SS
6271 return info_ptr;
6272}
6273
72bf9492
DJ
6274/* Find a cached partial DIE at OFFSET in CU. */
6275
6276static struct partial_die_info *
c764a876 6277find_partial_die_in_comp_unit (unsigned int offset, struct dwarf2_cu *cu)
72bf9492
DJ
6278{
6279 struct partial_die_info *lookup_die = NULL;
6280 struct partial_die_info part_die;
6281
6282 part_die.offset = offset;
6283 lookup_die = htab_find_with_hash (cu->partial_dies, &part_die, offset);
6284
72bf9492
DJ
6285 return lookup_die;
6286}
6287
6288/* Find a partial DIE at OFFSET, which may or may not be in CU. */
6289
6290static struct partial_die_info *
c764a876 6291find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
72bf9492 6292{
5afb4e99
DJ
6293 struct dwarf2_per_cu_data *per_cu = NULL;
6294 struct partial_die_info *pd = NULL;
72bf9492 6295
45452591 6296 if (offset_in_cu_p (&cu->header, offset))
5afb4e99
DJ
6297 {
6298 pd = find_partial_die_in_comp_unit (offset, cu);
6299 if (pd != NULL)
6300 return pd;
6301 }
72bf9492 6302
ae038cb0
DJ
6303 per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
6304
ae038cb0
DJ
6305 if (per_cu->cu == NULL)
6306 {
6307 load_comp_unit (per_cu, cu->objfile);
6308 per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
6309 dwarf2_per_objfile->read_in_chain = per_cu;
6310 }
6311
6312 per_cu->cu->last_used = 0;
5afb4e99
DJ
6313 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
6314
6315 if (pd == NULL && per_cu->load_all_dies == 0)
6316 {
6317 struct cleanup *back_to;
6318 struct partial_die_info comp_unit_die;
6319 struct abbrev_info *abbrev;
6320 unsigned int bytes_read;
6321 char *info_ptr;
6322
6323 per_cu->load_all_dies = 1;
6324
6325 /* Re-read the DIEs. */
6326 back_to = make_cleanup (null_cleanup, 0);
6327 if (per_cu->cu->dwarf2_abbrevs == NULL)
6328 {
6329 dwarf2_read_abbrevs (per_cu->cu->objfile->obfd, per_cu->cu);
6330 back_to = make_cleanup (dwarf2_free_abbrev_table, per_cu->cu);
6331 }
dce234bc 6332 info_ptr = (dwarf2_per_objfile->info.buffer
d00adf39
DE
6333 + per_cu->cu->header.offset
6334 + per_cu->cu->header.first_die_offset);
5afb4e99
DJ
6335 abbrev = peek_die_abbrev (info_ptr, &bytes_read, per_cu->cu);
6336 info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
6337 per_cu->cu->objfile->obfd, info_ptr,
6338 per_cu->cu);
6339 if (comp_unit_die.has_children)
6340 load_partial_dies (per_cu->cu->objfile->obfd, info_ptr, 0, per_cu->cu);
6341 do_cleanups (back_to);
6342
6343 pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
6344 }
6345
6346 if (pd == NULL)
6347 internal_error (__FILE__, __LINE__,
c764a876 6348 _("could not find partial DIE 0x%x in cache [from module %s]\n"),
5afb4e99
DJ
6349 offset, bfd_get_filename (cu->objfile->obfd));
6350 return pd;
72bf9492
DJ
6351}
6352
6353/* Adjust PART_DIE before generating a symbol for it. This function
6354 may set the is_external flag or change the DIE's name. */
6355
6356static void
6357fixup_partial_die (struct partial_die_info *part_die,
6358 struct dwarf2_cu *cu)
6359{
6360 /* If we found a reference attribute and the DIE has no name, try
6361 to find a name in the referred to DIE. */
6362
6363 if (part_die->name == NULL && part_die->has_specification)
6364 {
6365 struct partial_die_info *spec_die;
72bf9492 6366
10b3939b 6367 spec_die = find_partial_die (part_die->spec_offset, cu);
72bf9492 6368
10b3939b 6369 fixup_partial_die (spec_die, cu);
72bf9492
DJ
6370
6371 if (spec_die->name)
6372 {
6373 part_die->name = spec_die->name;
6374
6375 /* Copy DW_AT_external attribute if it is set. */
6376 if (spec_die->is_external)
6377 part_die->is_external = spec_die->is_external;
6378 }
6379 }
6380
6381 /* Set default names for some unnamed DIEs. */
6382 if (part_die->name == NULL && (part_die->tag == DW_TAG_structure_type
6383 || part_die->tag == DW_TAG_class_type))
6384 part_die->name = "(anonymous class)";
6385
6386 if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
6387 part_die->name = "(anonymous namespace)";
6388
6389 if (part_die->tag == DW_TAG_structure_type
6390 || part_die->tag == DW_TAG_class_type
6391 || part_die->tag == DW_TAG_union_type)
6392 guess_structure_name (part_die, cu);
6393}
6394
639d11d3
DC
6395/* Read the die from the .debug_info section buffer. Set DIEP to
6396 point to a newly allocated die with its information, except for its
6397 child, sibling, and parent fields. Set HAS_CHILDREN to tell
6398 whether the die has children or not. */
c906108c 6399
fe1b8b76
JB
6400static gdb_byte *
6401read_full_die (struct die_info **diep, bfd *abfd, gdb_byte *info_ptr,
e7c27a73 6402 struct dwarf2_cu *cu, int *has_children)
c906108c
SS
6403{
6404 unsigned int abbrev_number, bytes_read, i, offset;
6405 struct abbrev_info *abbrev;
6406 struct die_info *die;
6407
dce234bc 6408 offset = info_ptr - dwarf2_per_objfile->info.buffer;
c906108c
SS
6409 abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6410 info_ptr += bytes_read;
6411 if (!abbrev_number)
6412 {
1d325ec1 6413 *diep = NULL;
639d11d3 6414 *has_children = 0;
c906108c
SS
6415 return info_ptr;
6416 }
6417
e7c27a73 6418 abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
c906108c
SS
6419 if (!abbrev)
6420 {
8a3fe4f8 6421 error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
72bf9492 6422 abbrev_number,
639d11d3 6423 bfd_get_filename (abfd));
c906108c 6424 }
b60c80d6 6425 die = dwarf_alloc_die (cu, abbrev->num_attrs);
c906108c
SS
6426 die->offset = offset;
6427 die->tag = abbrev->tag;
c906108c 6428 die->abbrev = abbrev_number;
c906108c
SS
6429
6430 die->num_attrs = abbrev->num_attrs;
c906108c
SS
6431
6432 for (i = 0; i < abbrev->num_attrs; ++i)
03dd20cc
DJ
6433 info_ptr = read_attribute (&die->attrs[i], &abbrev->attrs[i],
6434 abfd, info_ptr, cu);
c906108c
SS
6435
6436 *diep = die;
639d11d3 6437 *has_children = abbrev->has_children;
c906108c
SS
6438 return info_ptr;
6439}
6440
a8329558 6441/* Read an attribute value described by an attribute form. */
c906108c 6442
fe1b8b76 6443static gdb_byte *
a8329558 6444read_attribute_value (struct attribute *attr, unsigned form,
fe1b8b76 6445 bfd *abfd, gdb_byte *info_ptr,
e7c27a73 6446 struct dwarf2_cu *cu)
c906108c 6447{
e7c27a73 6448 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
6449 unsigned int bytes_read;
6450 struct dwarf_block *blk;
6451
a8329558
KW
6452 attr->form = form;
6453 switch (form)
c906108c
SS
6454 {
6455 case DW_FORM_addr:
6456 case DW_FORM_ref_addr:
e7c27a73 6457 DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
107d2387 6458 info_ptr += bytes_read;
c906108c
SS
6459 break;
6460 case DW_FORM_block2:
7b5a2f43 6461 blk = dwarf_alloc_block (cu);
c906108c
SS
6462 blk->size = read_2_bytes (abfd, info_ptr);
6463 info_ptr += 2;
6464 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
6465 info_ptr += blk->size;
6466 DW_BLOCK (attr) = blk;
6467 break;
6468 case DW_FORM_block4:
7b5a2f43 6469 blk = dwarf_alloc_block (cu);
c906108c
SS
6470 blk->size = read_4_bytes (abfd, info_ptr);
6471 info_ptr += 4;
6472 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
6473 info_ptr += blk->size;
6474 DW_BLOCK (attr) = blk;
6475 break;
6476 case DW_FORM_data2:
6477 DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
6478 info_ptr += 2;
6479 break;
6480 case DW_FORM_data4:
6481 DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
6482 info_ptr += 4;
6483 break;
6484 case DW_FORM_data8:
6485 DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
6486 info_ptr += 8;
6487 break;
6488 case DW_FORM_string:
6489 DW_STRING (attr) = read_string (abfd, info_ptr, &bytes_read);
6490 info_ptr += bytes_read;
6491 break;
4bdf3d34
JJ
6492 case DW_FORM_strp:
6493 DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
6494 &bytes_read);
6495 info_ptr += bytes_read;
6496 break;
c906108c 6497 case DW_FORM_block:
7b5a2f43 6498 blk = dwarf_alloc_block (cu);
c906108c
SS
6499 blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6500 info_ptr += bytes_read;
6501 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
6502 info_ptr += blk->size;
6503 DW_BLOCK (attr) = blk;
6504 break;
6505 case DW_FORM_block1:
7b5a2f43 6506 blk = dwarf_alloc_block (cu);
c906108c
SS
6507 blk->size = read_1_byte (abfd, info_ptr);
6508 info_ptr += 1;
6509 blk->data = read_n_bytes (abfd, info_ptr, blk->size);
6510 info_ptr += blk->size;
6511 DW_BLOCK (attr) = blk;
6512 break;
6513 case DW_FORM_data1:
6514 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
6515 info_ptr += 1;
6516 break;
6517 case DW_FORM_flag:
6518 DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
6519 info_ptr += 1;
6520 break;
6521 case DW_FORM_sdata:
6522 DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
6523 info_ptr += bytes_read;
6524 break;
6525 case DW_FORM_udata:
6526 DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6527 info_ptr += bytes_read;
6528 break;
6529 case DW_FORM_ref1:
10b3939b 6530 DW_ADDR (attr) = cu->header.offset + read_1_byte (abfd, info_ptr);
c906108c
SS
6531 info_ptr += 1;
6532 break;
6533 case DW_FORM_ref2:
10b3939b 6534 DW_ADDR (attr) = cu->header.offset + read_2_bytes (abfd, info_ptr);
c906108c
SS
6535 info_ptr += 2;
6536 break;
6537 case DW_FORM_ref4:
10b3939b 6538 DW_ADDR (attr) = cu->header.offset + read_4_bytes (abfd, info_ptr);
c906108c
SS
6539 info_ptr += 4;
6540 break;
613e1657 6541 case DW_FORM_ref8:
10b3939b 6542 DW_ADDR (attr) = cu->header.offset + read_8_bytes (abfd, info_ptr);
613e1657
KB
6543 info_ptr += 8;
6544 break;
c906108c 6545 case DW_FORM_ref_udata:
10b3939b
DJ
6546 DW_ADDR (attr) = (cu->header.offset
6547 + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
c906108c
SS
6548 info_ptr += bytes_read;
6549 break;
c906108c 6550 case DW_FORM_indirect:
a8329558
KW
6551 form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6552 info_ptr += bytes_read;
e7c27a73 6553 info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu);
a8329558 6554 break;
c906108c 6555 default:
8a3fe4f8 6556 error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
659b0389
ML
6557 dwarf_form_name (form),
6558 bfd_get_filename (abfd));
c906108c 6559 }
28e94949
JB
6560
6561 /* We have seen instances where the compiler tried to emit a byte
6562 size attribute of -1 which ended up being encoded as an unsigned
6563 0xffffffff. Although 0xffffffff is technically a valid size value,
6564 an object of this size seems pretty unlikely so we can relatively
6565 safely treat these cases as if the size attribute was invalid and
6566 treat them as zero by default. */
6567 if (attr->name == DW_AT_byte_size
6568 && form == DW_FORM_data4
6569 && DW_UNSND (attr) >= 0xffffffff)
01c66ae6
JB
6570 {
6571 complaint
6572 (&symfile_complaints,
6573 _("Suspicious DW_AT_byte_size value treated as zero instead of 0x%lx"),
6574 DW_UNSND (attr));
6575 DW_UNSND (attr) = 0;
6576 }
28e94949 6577
c906108c
SS
6578 return info_ptr;
6579}
6580
a8329558
KW
6581/* Read an attribute described by an abbreviated attribute. */
6582
fe1b8b76 6583static gdb_byte *
a8329558 6584read_attribute (struct attribute *attr, struct attr_abbrev *abbrev,
fe1b8b76 6585 bfd *abfd, gdb_byte *info_ptr, struct dwarf2_cu *cu)
a8329558
KW
6586{
6587 attr->name = abbrev->name;
e7c27a73 6588 return read_attribute_value (attr, abbrev->form, abfd, info_ptr, cu);
a8329558
KW
6589}
6590
c906108c
SS
6591/* read dwarf information from a buffer */
6592
6593static unsigned int
fe1b8b76 6594read_1_byte (bfd *abfd, gdb_byte *buf)
c906108c 6595{
fe1b8b76 6596 return bfd_get_8 (abfd, buf);
c906108c
SS
6597}
6598
6599static int
fe1b8b76 6600read_1_signed_byte (bfd *abfd, gdb_byte *buf)
c906108c 6601{
fe1b8b76 6602 return bfd_get_signed_8 (abfd, buf);
c906108c
SS
6603}
6604
6605static unsigned int
fe1b8b76 6606read_2_bytes (bfd *abfd, gdb_byte *buf)
c906108c 6607{
fe1b8b76 6608 return bfd_get_16 (abfd, buf);
c906108c
SS
6609}
6610
6611static int
fe1b8b76 6612read_2_signed_bytes (bfd *abfd, gdb_byte *buf)
c906108c 6613{
fe1b8b76 6614 return bfd_get_signed_16 (abfd, buf);
c906108c
SS
6615}
6616
6617static unsigned int
fe1b8b76 6618read_4_bytes (bfd *abfd, gdb_byte *buf)
c906108c 6619{
fe1b8b76 6620 return bfd_get_32 (abfd, buf);
c906108c
SS
6621}
6622
6623static int
fe1b8b76 6624read_4_signed_bytes (bfd *abfd, gdb_byte *buf)
c906108c 6625{
fe1b8b76 6626 return bfd_get_signed_32 (abfd, buf);
c906108c
SS
6627}
6628
ce5d95e1 6629static unsigned long
fe1b8b76 6630read_8_bytes (bfd *abfd, gdb_byte *buf)
c906108c 6631{
fe1b8b76 6632 return bfd_get_64 (abfd, buf);
c906108c
SS
6633}
6634
6635static CORE_ADDR
fe1b8b76 6636read_address (bfd *abfd, gdb_byte *buf, struct dwarf2_cu *cu,
891d2f0b 6637 unsigned int *bytes_read)
c906108c 6638{
e7c27a73 6639 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
6640 CORE_ADDR retval = 0;
6641
107d2387 6642 if (cu_header->signed_addr_p)
c906108c 6643 {
107d2387
AC
6644 switch (cu_header->addr_size)
6645 {
6646 case 2:
fe1b8b76 6647 retval = bfd_get_signed_16 (abfd, buf);
107d2387
AC
6648 break;
6649 case 4:
fe1b8b76 6650 retval = bfd_get_signed_32 (abfd, buf);
107d2387
AC
6651 break;
6652 case 8:
fe1b8b76 6653 retval = bfd_get_signed_64 (abfd, buf);
107d2387
AC
6654 break;
6655 default:
8e65ff28 6656 internal_error (__FILE__, __LINE__,
e2e0b3e5 6657 _("read_address: bad switch, signed [in module %s]"),
659b0389 6658 bfd_get_filename (abfd));
107d2387
AC
6659 }
6660 }
6661 else
6662 {
6663 switch (cu_header->addr_size)
6664 {
6665 case 2:
fe1b8b76 6666 retval = bfd_get_16 (abfd, buf);
107d2387
AC
6667 break;
6668 case 4:
fe1b8b76 6669 retval = bfd_get_32 (abfd, buf);
107d2387
AC
6670 break;
6671 case 8:
fe1b8b76 6672 retval = bfd_get_64 (abfd, buf);
107d2387
AC
6673 break;
6674 default:
8e65ff28 6675 internal_error (__FILE__, __LINE__,
e2e0b3e5 6676 _("read_address: bad switch, unsigned [in module %s]"),
659b0389 6677 bfd_get_filename (abfd));
107d2387 6678 }
c906108c 6679 }
64367e0a 6680
107d2387
AC
6681 *bytes_read = cu_header->addr_size;
6682 return retval;
c906108c
SS
6683}
6684
f7ef9339 6685/* Read the initial length from a section. The (draft) DWARF 3
613e1657
KB
6686 specification allows the initial length to take up either 4 bytes
6687 or 12 bytes. If the first 4 bytes are 0xffffffff, then the next 8
6688 bytes describe the length and all offsets will be 8 bytes in length
6689 instead of 4.
6690
f7ef9339
KB
6691 An older, non-standard 64-bit format is also handled by this
6692 function. The older format in question stores the initial length
6693 as an 8-byte quantity without an escape value. Lengths greater
6694 than 2^32 aren't very common which means that the initial 4 bytes
6695 is almost always zero. Since a length value of zero doesn't make
6696 sense for the 32-bit format, this initial zero can be considered to
6697 be an escape value which indicates the presence of the older 64-bit
6698 format. As written, the code can't detect (old format) lengths
917c78fc
MK
6699 greater than 4GB. If it becomes necessary to handle lengths
6700 somewhat larger than 4GB, we could allow other small values (such
6701 as the non-sensical values of 1, 2, and 3) to also be used as
6702 escape values indicating the presence of the old format.
f7ef9339 6703
917c78fc
MK
6704 The value returned via bytes_read should be used to increment the
6705 relevant pointer after calling read_initial_length().
c764a876 6706
613e1657
KB
6707 [ Note: read_initial_length() and read_offset() are based on the
6708 document entitled "DWARF Debugging Information Format", revision
f7ef9339 6709 3, draft 8, dated November 19, 2001. This document was obtained
613e1657
KB
6710 from:
6711
f7ef9339 6712 http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
613e1657
KB
6713
6714 This document is only a draft and is subject to change. (So beware.)
6715
f7ef9339 6716 Details regarding the older, non-standard 64-bit format were
917c78fc
MK
6717 determined empirically by examining 64-bit ELF files produced by
6718 the SGI toolchain on an IRIX 6.5 machine.
f7ef9339
KB
6719
6720 - Kevin, July 16, 2002
613e1657
KB
6721 ] */
6722
6723static LONGEST
c764a876 6724read_initial_length (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read)
613e1657 6725{
fe1b8b76 6726 LONGEST length = bfd_get_32 (abfd, buf);
613e1657 6727
dd373385 6728 if (length == 0xffffffff)
613e1657 6729 {
fe1b8b76 6730 length = bfd_get_64 (abfd, buf + 4);
613e1657 6731 *bytes_read = 12;
613e1657 6732 }
dd373385 6733 else if (length == 0)
f7ef9339 6734 {
dd373385 6735 /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX. */
fe1b8b76 6736 length = bfd_get_64 (abfd, buf);
f7ef9339 6737 *bytes_read = 8;
f7ef9339 6738 }
613e1657
KB
6739 else
6740 {
6741 *bytes_read = 4;
613e1657
KB
6742 }
6743
c764a876
DE
6744 return length;
6745}
dd373385 6746
c764a876
DE
6747/* Cover function for read_initial_length.
6748 Returns the length of the object at BUF, and stores the size of the
6749 initial length in *BYTES_READ and stores the size that offsets will be in
6750 *OFFSET_SIZE.
6751 If the initial length size is not equivalent to that specified in
6752 CU_HEADER then issue a complaint.
6753 This is useful when reading non-comp-unit headers. */
dd373385 6754
c764a876
DE
6755static LONGEST
6756read_checked_initial_length_and_offset (bfd *abfd, gdb_byte *buf,
6757 const struct comp_unit_head *cu_header,
6758 unsigned int *bytes_read,
6759 unsigned int *offset_size)
6760{
6761 LONGEST length = read_initial_length (abfd, buf, bytes_read);
6762
6763 gdb_assert (cu_header->initial_length_size == 4
6764 || cu_header->initial_length_size == 8
6765 || cu_header->initial_length_size == 12);
6766
6767 if (cu_header->initial_length_size != *bytes_read)
6768 complaint (&symfile_complaints,
6769 _("intermixed 32-bit and 64-bit DWARF sections"));
dd373385 6770
c764a876 6771 *offset_size = (*bytes_read == 4) ? 4 : 8;
dd373385 6772 return length;
613e1657
KB
6773}
6774
6775/* Read an offset from the data stream. The size of the offset is
917c78fc 6776 given by cu_header->offset_size. */
613e1657
KB
6777
6778static LONGEST
fe1b8b76 6779read_offset (bfd *abfd, gdb_byte *buf, const struct comp_unit_head *cu_header,
891d2f0b 6780 unsigned int *bytes_read)
c764a876
DE
6781{
6782 LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
6783 *bytes_read = cu_header->offset_size;
6784 return offset;
6785}
6786
6787/* Read an offset from the data stream. */
6788
6789static LONGEST
6790read_offset_1 (bfd *abfd, gdb_byte *buf, unsigned int offset_size)
613e1657
KB
6791{
6792 LONGEST retval = 0;
6793
c764a876 6794 switch (offset_size)
613e1657
KB
6795 {
6796 case 4:
fe1b8b76 6797 retval = bfd_get_32 (abfd, buf);
613e1657
KB
6798 break;
6799 case 8:
fe1b8b76 6800 retval = bfd_get_64 (abfd, buf);
613e1657
KB
6801 break;
6802 default:
8e65ff28 6803 internal_error (__FILE__, __LINE__,
c764a876 6804 _("read_offset_1: bad switch [in module %s]"),
659b0389 6805 bfd_get_filename (abfd));
613e1657
KB
6806 }
6807
917c78fc 6808 return retval;
613e1657
KB
6809}
6810
fe1b8b76
JB
6811static gdb_byte *
6812read_n_bytes (bfd *abfd, gdb_byte *buf, unsigned int size)
c906108c
SS
6813{
6814 /* If the size of a host char is 8 bits, we can return a pointer
6815 to the buffer, otherwise we have to copy the data to a buffer
6816 allocated on the temporary obstack. */
4bdf3d34 6817 gdb_assert (HOST_CHAR_BIT == 8);
c906108c 6818 return buf;
c906108c
SS
6819}
6820
6821static char *
fe1b8b76 6822read_string (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
c906108c
SS
6823{
6824 /* If the size of a host char is 8 bits, we can return a pointer
6825 to the string, otherwise we have to copy the string to a buffer
6826 allocated on the temporary obstack. */
4bdf3d34 6827 gdb_assert (HOST_CHAR_BIT == 8);
c906108c
SS
6828 if (*buf == '\0')
6829 {
6830 *bytes_read_ptr = 1;
6831 return NULL;
6832 }
fe1b8b76
JB
6833 *bytes_read_ptr = strlen ((char *) buf) + 1;
6834 return (char *) buf;
4bdf3d34
JJ
6835}
6836
6837static char *
fe1b8b76 6838read_indirect_string (bfd *abfd, gdb_byte *buf,
4bdf3d34
JJ
6839 const struct comp_unit_head *cu_header,
6840 unsigned int *bytes_read_ptr)
6841{
c764a876 6842 LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
c906108c 6843
dce234bc 6844 if (dwarf2_per_objfile->str.buffer == NULL)
c906108c 6845 {
8a3fe4f8 6846 error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
659b0389 6847 bfd_get_filename (abfd));
4bdf3d34 6848 return NULL;
c906108c 6849 }
dce234bc 6850 if (str_offset >= dwarf2_per_objfile->str.size)
c906108c 6851 {
8a3fe4f8 6852 error (_("DW_FORM_strp pointing outside of .debug_str section [in module %s]"),
659b0389 6853 bfd_get_filename (abfd));
c906108c
SS
6854 return NULL;
6855 }
4bdf3d34 6856 gdb_assert (HOST_CHAR_BIT == 8);
dce234bc 6857 if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
4bdf3d34 6858 return NULL;
dce234bc 6859 return (char *) (dwarf2_per_objfile->str.buffer + str_offset);
c906108c
SS
6860}
6861
ce5d95e1 6862static unsigned long
fe1b8b76 6863read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
c906108c 6864{
ce5d95e1
JB
6865 unsigned long result;
6866 unsigned int num_read;
c906108c
SS
6867 int i, shift;
6868 unsigned char byte;
6869
6870 result = 0;
6871 shift = 0;
6872 num_read = 0;
6873 i = 0;
6874 while (1)
6875 {
fe1b8b76 6876 byte = bfd_get_8 (abfd, buf);
c906108c
SS
6877 buf++;
6878 num_read++;
ce5d95e1 6879 result |= ((unsigned long)(byte & 127) << shift);
c906108c
SS
6880 if ((byte & 128) == 0)
6881 {
6882 break;
6883 }
6884 shift += 7;
6885 }
6886 *bytes_read_ptr = num_read;
6887 return result;
6888}
6889
ce5d95e1 6890static long
fe1b8b76 6891read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
c906108c 6892{
ce5d95e1 6893 long result;
77e0b926 6894 int i, shift, num_read;
c906108c
SS
6895 unsigned char byte;
6896
6897 result = 0;
6898 shift = 0;
c906108c
SS
6899 num_read = 0;
6900 i = 0;
6901 while (1)
6902 {
fe1b8b76 6903 byte = bfd_get_8 (abfd, buf);
c906108c
SS
6904 buf++;
6905 num_read++;
ce5d95e1 6906 result |= ((long)(byte & 127) << shift);
c906108c
SS
6907 shift += 7;
6908 if ((byte & 128) == 0)
6909 {
6910 break;
6911 }
6912 }
77e0b926
DJ
6913 if ((shift < 8 * sizeof (result)) && (byte & 0x40))
6914 result |= -(((long)1) << shift);
c906108c
SS
6915 *bytes_read_ptr = num_read;
6916 return result;
6917}
6918
4bb7a0a7
DJ
6919/* Return a pointer to just past the end of an LEB128 number in BUF. */
6920
fe1b8b76
JB
6921static gdb_byte *
6922skip_leb128 (bfd *abfd, gdb_byte *buf)
4bb7a0a7
DJ
6923{
6924 int byte;
6925
6926 while (1)
6927 {
fe1b8b76 6928 byte = bfd_get_8 (abfd, buf);
4bb7a0a7
DJ
6929 buf++;
6930 if ((byte & 128) == 0)
6931 return buf;
6932 }
6933}
6934
c906108c 6935static void
e142c38c 6936set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
c906108c
SS
6937{
6938 switch (lang)
6939 {
6940 case DW_LANG_C89:
76bee0cc 6941 case DW_LANG_C99:
c906108c 6942 case DW_LANG_C:
e142c38c 6943 cu->language = language_c;
c906108c
SS
6944 break;
6945 case DW_LANG_C_plus_plus:
e142c38c 6946 cu->language = language_cplus;
c906108c
SS
6947 break;
6948 case DW_LANG_Fortran77:
6949 case DW_LANG_Fortran90:
b21b22e0 6950 case DW_LANG_Fortran95:
e142c38c 6951 cu->language = language_fortran;
c906108c
SS
6952 break;
6953 case DW_LANG_Mips_Assembler:
e142c38c 6954 cu->language = language_asm;
c906108c 6955 break;
bebd888e 6956 case DW_LANG_Java:
e142c38c 6957 cu->language = language_java;
bebd888e 6958 break;
c906108c 6959 case DW_LANG_Ada83:
8aaf0b47 6960 case DW_LANG_Ada95:
bc5f45f8
JB
6961 cu->language = language_ada;
6962 break;
72019c9c
GM
6963 case DW_LANG_Modula2:
6964 cu->language = language_m2;
6965 break;
fe8e67fd
PM
6966 case DW_LANG_Pascal83:
6967 cu->language = language_pascal;
6968 break;
22566fbd
DJ
6969 case DW_LANG_ObjC:
6970 cu->language = language_objc;
6971 break;
c906108c
SS
6972 case DW_LANG_Cobol74:
6973 case DW_LANG_Cobol85:
c906108c 6974 default:
e142c38c 6975 cu->language = language_minimal;
c906108c
SS
6976 break;
6977 }
e142c38c 6978 cu->language_defn = language_def (cu->language);
c906108c
SS
6979}
6980
6981/* Return the named attribute or NULL if not there. */
6982
6983static struct attribute *
e142c38c 6984dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
c906108c
SS
6985{
6986 unsigned int i;
6987 struct attribute *spec = NULL;
6988
6989 for (i = 0; i < die->num_attrs; ++i)
6990 {
6991 if (die->attrs[i].name == name)
10b3939b 6992 return &die->attrs[i];
c906108c
SS
6993 if (die->attrs[i].name == DW_AT_specification
6994 || die->attrs[i].name == DW_AT_abstract_origin)
6995 spec = &die->attrs[i];
6996 }
c906108c 6997
10b3939b 6998 if (spec)
f2f0e013
DJ
6999 {
7000 die = follow_die_ref (die, spec, &cu);
7001 return dwarf2_attr (die, name, cu);
7002 }
c5aa993b 7003
c906108c
SS
7004 return NULL;
7005}
7006
05cf31d1
JB
7007/* Return non-zero iff the attribute NAME is defined for the given DIE,
7008 and holds a non-zero value. This function should only be used for
7009 DW_FORM_flag attributes. */
7010
7011static int
7012dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
7013{
7014 struct attribute *attr = dwarf2_attr (die, name, cu);
7015
7016 return (attr && DW_UNSND (attr));
7017}
7018
3ca72b44 7019static int
e142c38c 7020die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
3ca72b44 7021{
05cf31d1
JB
7022 /* A DIE is a declaration if it has a DW_AT_declaration attribute
7023 which value is non-zero. However, we have to be careful with
7024 DIEs having a DW_AT_specification attribute, because dwarf2_attr()
7025 (via dwarf2_flag_true_p) follows this attribute. So we may
7026 end up accidently finding a declaration attribute that belongs
7027 to a different DIE referenced by the specification attribute,
7028 even though the given DIE does not have a declaration attribute. */
7029 return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
7030 && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
3ca72b44
AC
7031}
7032
63d06c5c 7033/* Return the die giving the specification for DIE, if there is
f2f0e013 7034 one. *SPEC_CU is the CU containing DIE on input, and the CU
edb3359d
DJ
7035 containing the return value on output. If there is no
7036 specification, but there is an abstract origin, that is
7037 returned. */
63d06c5c
DC
7038
7039static struct die_info *
f2f0e013 7040die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
63d06c5c 7041{
f2f0e013
DJ
7042 struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
7043 *spec_cu);
63d06c5c 7044
edb3359d
DJ
7045 if (spec_attr == NULL)
7046 spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
7047
63d06c5c
DC
7048 if (spec_attr == NULL)
7049 return NULL;
7050 else
f2f0e013 7051 return follow_die_ref (die, spec_attr, spec_cu);
63d06c5c 7052}
c906108c 7053
debd256d
JB
7054/* Free the line_header structure *LH, and any arrays and strings it
7055 refers to. */
7056static void
7057free_line_header (struct line_header *lh)
7058{
7059 if (lh->standard_opcode_lengths)
a8bc7b56 7060 xfree (lh->standard_opcode_lengths);
debd256d
JB
7061
7062 /* Remember that all the lh->file_names[i].name pointers are
7063 pointers into debug_line_buffer, and don't need to be freed. */
7064 if (lh->file_names)
a8bc7b56 7065 xfree (lh->file_names);
debd256d
JB
7066
7067 /* Similarly for the include directory names. */
7068 if (lh->include_dirs)
a8bc7b56 7069 xfree (lh->include_dirs);
debd256d 7070
a8bc7b56 7071 xfree (lh);
debd256d
JB
7072}
7073
7074
7075/* Add an entry to LH's include directory table. */
7076static void
7077add_include_dir (struct line_header *lh, char *include_dir)
c906108c 7078{
debd256d
JB
7079 /* Grow the array if necessary. */
7080 if (lh->include_dirs_size == 0)
c5aa993b 7081 {
debd256d
JB
7082 lh->include_dirs_size = 1; /* for testing */
7083 lh->include_dirs = xmalloc (lh->include_dirs_size
7084 * sizeof (*lh->include_dirs));
7085 }
7086 else if (lh->num_include_dirs >= lh->include_dirs_size)
7087 {
7088 lh->include_dirs_size *= 2;
7089 lh->include_dirs = xrealloc (lh->include_dirs,
7090 (lh->include_dirs_size
7091 * sizeof (*lh->include_dirs)));
c5aa993b 7092 }
c906108c 7093
debd256d
JB
7094 lh->include_dirs[lh->num_include_dirs++] = include_dir;
7095}
7096
7097
7098/* Add an entry to LH's file name table. */
7099static void
7100add_file_name (struct line_header *lh,
7101 char *name,
7102 unsigned int dir_index,
7103 unsigned int mod_time,
7104 unsigned int length)
7105{
7106 struct file_entry *fe;
7107
7108 /* Grow the array if necessary. */
7109 if (lh->file_names_size == 0)
7110 {
7111 lh->file_names_size = 1; /* for testing */
7112 lh->file_names = xmalloc (lh->file_names_size
7113 * sizeof (*lh->file_names));
7114 }
7115 else if (lh->num_file_names >= lh->file_names_size)
7116 {
7117 lh->file_names_size *= 2;
7118 lh->file_names = xrealloc (lh->file_names,
7119 (lh->file_names_size
7120 * sizeof (*lh->file_names)));
7121 }
7122
7123 fe = &lh->file_names[lh->num_file_names++];
7124 fe->name = name;
7125 fe->dir_index = dir_index;
7126 fe->mod_time = mod_time;
7127 fe->length = length;
aaa75496 7128 fe->included_p = 0;
cb1df416 7129 fe->symtab = NULL;
debd256d
JB
7130}
7131
7132
7133/* Read the statement program header starting at OFFSET in
6502dd73
DJ
7134 .debug_line, according to the endianness of ABFD. Return a pointer
7135 to a struct line_header, allocated using xmalloc.
debd256d
JB
7136
7137 NOTE: the strings in the include directory and file name tables of
7138 the returned object point into debug_line_buffer, and must not be
7139 freed. */
7140static struct line_header *
7141dwarf_decode_line_header (unsigned int offset, bfd *abfd,
e7c27a73 7142 struct dwarf2_cu *cu)
debd256d
JB
7143{
7144 struct cleanup *back_to;
7145 struct line_header *lh;
fe1b8b76 7146 gdb_byte *line_ptr;
c764a876 7147 unsigned int bytes_read, offset_size;
debd256d
JB
7148 int i;
7149 char *cur_dir, *cur_file;
7150
dce234bc 7151 if (dwarf2_per_objfile->line.buffer == NULL)
debd256d 7152 {
e2e0b3e5 7153 complaint (&symfile_complaints, _("missing .debug_line section"));
debd256d
JB
7154 return 0;
7155 }
7156
a738430d
MK
7157 /* Make sure that at least there's room for the total_length field.
7158 That could be 12 bytes long, but we're just going to fudge that. */
dce234bc 7159 if (offset + 4 >= dwarf2_per_objfile->line.size)
debd256d 7160 {
4d3c2250 7161 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
7162 return 0;
7163 }
7164
7165 lh = xmalloc (sizeof (*lh));
7166 memset (lh, 0, sizeof (*lh));
7167 back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
7168 (void *) lh);
7169
dce234bc 7170 line_ptr = dwarf2_per_objfile->line.buffer + offset;
debd256d 7171
a738430d 7172 /* Read in the header. */
dd373385 7173 lh->total_length =
c764a876
DE
7174 read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
7175 &bytes_read, &offset_size);
debd256d 7176 line_ptr += bytes_read;
dce234bc
PP
7177 if (line_ptr + lh->total_length > (dwarf2_per_objfile->line.buffer
7178 + dwarf2_per_objfile->line.size))
debd256d 7179 {
4d3c2250 7180 dwarf2_statement_list_fits_in_line_number_section_complaint ();
debd256d
JB
7181 return 0;
7182 }
7183 lh->statement_program_end = line_ptr + lh->total_length;
7184 lh->version = read_2_bytes (abfd, line_ptr);
7185 line_ptr += 2;
c764a876
DE
7186 lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
7187 line_ptr += offset_size;
debd256d
JB
7188 lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
7189 line_ptr += 1;
7190 lh->default_is_stmt = read_1_byte (abfd, line_ptr);
7191 line_ptr += 1;
7192 lh->line_base = read_1_signed_byte (abfd, line_ptr);
7193 line_ptr += 1;
7194 lh->line_range = read_1_byte (abfd, line_ptr);
7195 line_ptr += 1;
7196 lh->opcode_base = read_1_byte (abfd, line_ptr);
7197 line_ptr += 1;
7198 lh->standard_opcode_lengths
fe1b8b76 7199 = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
debd256d
JB
7200
7201 lh->standard_opcode_lengths[0] = 1; /* This should never be used anyway. */
7202 for (i = 1; i < lh->opcode_base; ++i)
7203 {
7204 lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
7205 line_ptr += 1;
7206 }
7207
a738430d 7208 /* Read directory table. */
debd256d
JB
7209 while ((cur_dir = read_string (abfd, line_ptr, &bytes_read)) != NULL)
7210 {
7211 line_ptr += bytes_read;
7212 add_include_dir (lh, cur_dir);
7213 }
7214 line_ptr += bytes_read;
7215
a738430d 7216 /* Read file name table. */
debd256d
JB
7217 while ((cur_file = read_string (abfd, line_ptr, &bytes_read)) != NULL)
7218 {
7219 unsigned int dir_index, mod_time, length;
7220
7221 line_ptr += bytes_read;
7222 dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7223 line_ptr += bytes_read;
7224 mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7225 line_ptr += bytes_read;
7226 length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7227 line_ptr += bytes_read;
7228
7229 add_file_name (lh, cur_file, dir_index, mod_time, length);
7230 }
7231 line_ptr += bytes_read;
7232 lh->statement_program_start = line_ptr;
7233
dce234bc
PP
7234 if (line_ptr > (dwarf2_per_objfile->line.buffer
7235 + dwarf2_per_objfile->line.size))
4d3c2250 7236 complaint (&symfile_complaints,
e2e0b3e5 7237 _("line number info header doesn't fit in `.debug_line' section"));
debd256d
JB
7238
7239 discard_cleanups (back_to);
7240 return lh;
7241}
c906108c 7242
5fb290d7
DJ
7243/* This function exists to work around a bug in certain compilers
7244 (particularly GCC 2.95), in which the first line number marker of a
7245 function does not show up until after the prologue, right before
7246 the second line number marker. This function shifts ADDRESS down
7247 to the beginning of the function if necessary, and is called on
7248 addresses passed to record_line. */
7249
7250static CORE_ADDR
e142c38c 7251check_cu_functions (CORE_ADDR address, struct dwarf2_cu *cu)
5fb290d7
DJ
7252{
7253 struct function_range *fn;
7254
7255 /* Find the function_range containing address. */
e142c38c 7256 if (!cu->first_fn)
5fb290d7
DJ
7257 return address;
7258
e142c38c
DJ
7259 if (!cu->cached_fn)
7260 cu->cached_fn = cu->first_fn;
5fb290d7 7261
e142c38c 7262 fn = cu->cached_fn;
5fb290d7
DJ
7263 while (fn)
7264 if (fn->lowpc <= address && fn->highpc > address)
7265 goto found;
7266 else
7267 fn = fn->next;
7268
e142c38c
DJ
7269 fn = cu->first_fn;
7270 while (fn && fn != cu->cached_fn)
5fb290d7
DJ
7271 if (fn->lowpc <= address && fn->highpc > address)
7272 goto found;
7273 else
7274 fn = fn->next;
7275
7276 return address;
7277
7278 found:
7279 if (fn->seen_line)
7280 return address;
7281 if (address != fn->lowpc)
4d3c2250 7282 complaint (&symfile_complaints,
e2e0b3e5 7283 _("misplaced first line number at 0x%lx for '%s'"),
4d3c2250 7284 (unsigned long) address, fn->name);
5fb290d7
DJ
7285 fn->seen_line = 1;
7286 return fn->lowpc;
7287}
7288
aaa75496
JB
7289/* Decode the Line Number Program (LNP) for the given line_header
7290 structure and CU. The actual information extracted and the type
7291 of structures created from the LNP depends on the value of PST.
7292
7293 1. If PST is NULL, then this procedure uses the data from the program
7294 to create all necessary symbol tables, and their linetables.
7295 The compilation directory of the file is passed in COMP_DIR,
7296 and must not be NULL.
7297
7298 2. If PST is not NULL, this procedure reads the program to determine
7299 the list of files included by the unit represented by PST, and
7300 builds all the associated partial symbol tables. In this case,
7301 the value of COMP_DIR is ignored, and can thus be NULL (the COMP_DIR
7302 is not used to compute the full name of the symtab, and therefore
7303 omitting it when building the partial symtab does not introduce
7304 the potential for inconsistency - a partial symtab and its associated
7305 symbtab having a different fullname -). */
debd256d 7306
c906108c 7307static void
debd256d 7308dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
aaa75496 7309 struct dwarf2_cu *cu, struct partial_symtab *pst)
c906108c 7310{
a8c50c1f 7311 gdb_byte *line_ptr, *extended_end;
fe1b8b76 7312 gdb_byte *line_end;
a8c50c1f 7313 unsigned int bytes_read, extended_len;
c906108c 7314 unsigned char op_code, extended_op, adj_opcode;
e142c38c
DJ
7315 CORE_ADDR baseaddr;
7316 struct objfile *objfile = cu->objfile;
fbf65064 7317 struct gdbarch *gdbarch = get_objfile_arch (objfile);
aaa75496 7318 const int decode_for_pst_p = (pst != NULL);
cb1df416 7319 struct subfile *last_subfile = NULL, *first_subfile = current_subfile;
e142c38c
DJ
7320
7321 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 7322
debd256d
JB
7323 line_ptr = lh->statement_program_start;
7324 line_end = lh->statement_program_end;
c906108c
SS
7325
7326 /* Read the statement sequences until there's nothing left. */
7327 while (line_ptr < line_end)
7328 {
7329 /* state machine registers */
7330 CORE_ADDR address = 0;
7331 unsigned int file = 1;
7332 unsigned int line = 1;
7333 unsigned int column = 0;
debd256d 7334 int is_stmt = lh->default_is_stmt;
c906108c
SS
7335 int basic_block = 0;
7336 int end_sequence = 0;
fbf65064 7337 CORE_ADDR addr;
c906108c 7338
aaa75496 7339 if (!decode_for_pst_p && lh->num_file_names >= file)
c906108c 7340 {
aaa75496 7341 /* Start a subfile for the current file of the state machine. */
debd256d
JB
7342 /* lh->include_dirs and lh->file_names are 0-based, but the
7343 directory and file name numbers in the statement program
7344 are 1-based. */
7345 struct file_entry *fe = &lh->file_names[file - 1];
4f1520fb 7346 char *dir = NULL;
a738430d 7347
debd256d
JB
7348 if (fe->dir_index)
7349 dir = lh->include_dirs[fe->dir_index - 1];
4f1520fb
FR
7350
7351 dwarf2_start_subfile (fe->name, dir, comp_dir);
c906108c
SS
7352 }
7353
a738430d 7354 /* Decode the table. */
c5aa993b 7355 while (!end_sequence)
c906108c
SS
7356 {
7357 op_code = read_1_byte (abfd, line_ptr);
7358 line_ptr += 1;
59205f5a
JB
7359 if (line_ptr > line_end)
7360 {
7361 dwarf2_debug_line_missing_end_sequence_complaint ();
7362 break;
7363 }
9aa1fe7e 7364
debd256d 7365 if (op_code >= lh->opcode_base)
a738430d
MK
7366 {
7367 /* Special operand. */
debd256d
JB
7368 adj_opcode = op_code - lh->opcode_base;
7369 address += (adj_opcode / lh->line_range)
7370 * lh->minimum_instruction_length;
7371 line += lh->line_base + (adj_opcode % lh->line_range);
59205f5a 7372 if (lh->num_file_names < file || file == 0)
25e43795
DJ
7373 dwarf2_debug_line_missing_file_complaint ();
7374 else
7375 {
7376 lh->file_names[file - 1].included_p = 1;
ca5f395d 7377 if (!decode_for_pst_p && is_stmt)
fbf65064
UW
7378 {
7379 if (last_subfile != current_subfile)
7380 {
7381 addr = gdbarch_addr_bits_remove (gdbarch, address);
7382 if (last_subfile)
7383 record_line (last_subfile, 0, addr);
7384 last_subfile = current_subfile;
7385 }
25e43795 7386 /* Append row to matrix using current values. */
fbf65064
UW
7387 addr = check_cu_functions (address, cu);
7388 addr = gdbarch_addr_bits_remove (gdbarch, addr);
7389 record_line (current_subfile, line, addr);
366da635 7390 }
25e43795 7391 }
ca5f395d 7392 basic_block = 0;
9aa1fe7e
GK
7393 }
7394 else switch (op_code)
c906108c
SS
7395 {
7396 case DW_LNS_extended_op:
a8c50c1f 7397 extended_len = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
473b7be6 7398 line_ptr += bytes_read;
a8c50c1f 7399 extended_end = line_ptr + extended_len;
c906108c
SS
7400 extended_op = read_1_byte (abfd, line_ptr);
7401 line_ptr += 1;
7402 switch (extended_op)
7403 {
7404 case DW_LNE_end_sequence:
7405 end_sequence = 1;
c906108c
SS
7406 break;
7407 case DW_LNE_set_address:
e7c27a73 7408 address = read_address (abfd, line_ptr, cu, &bytes_read);
107d2387
AC
7409 line_ptr += bytes_read;
7410 address += baseaddr;
c906108c
SS
7411 break;
7412 case DW_LNE_define_file:
debd256d
JB
7413 {
7414 char *cur_file;
7415 unsigned int dir_index, mod_time, length;
7416
7417 cur_file = read_string (abfd, line_ptr, &bytes_read);
7418 line_ptr += bytes_read;
7419 dir_index =
7420 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7421 line_ptr += bytes_read;
7422 mod_time =
7423 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7424 line_ptr += bytes_read;
7425 length =
7426 read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7427 line_ptr += bytes_read;
7428 add_file_name (lh, cur_file, dir_index, mod_time, length);
7429 }
c906108c 7430 break;
d0c6ba3d
CC
7431 case DW_LNE_set_discriminator:
7432 /* The discriminator is not interesting to the debugger;
7433 just ignore it. */
7434 line_ptr = extended_end;
7435 break;
c906108c 7436 default:
4d3c2250 7437 complaint (&symfile_complaints,
e2e0b3e5 7438 _("mangled .debug_line section"));
debd256d 7439 return;
c906108c 7440 }
a8c50c1f
DJ
7441 /* Make sure that we parsed the extended op correctly. If e.g.
7442 we expected a different address size than the producer used,
7443 we may have read the wrong number of bytes. */
7444 if (line_ptr != extended_end)
7445 {
7446 complaint (&symfile_complaints,
7447 _("mangled .debug_line section"));
7448 return;
7449 }
c906108c
SS
7450 break;
7451 case DW_LNS_copy:
59205f5a 7452 if (lh->num_file_names < file || file == 0)
25e43795
DJ
7453 dwarf2_debug_line_missing_file_complaint ();
7454 else
366da635 7455 {
25e43795 7456 lh->file_names[file - 1].included_p = 1;
ca5f395d 7457 if (!decode_for_pst_p && is_stmt)
fbf65064
UW
7458 {
7459 if (last_subfile != current_subfile)
7460 {
7461 addr = gdbarch_addr_bits_remove (gdbarch, address);
7462 if (last_subfile)
7463 record_line (last_subfile, 0, addr);
7464 last_subfile = current_subfile;
7465 }
7466 addr = check_cu_functions (address, cu);
7467 addr = gdbarch_addr_bits_remove (gdbarch, addr);
7468 record_line (current_subfile, line, addr);
7469 }
366da635 7470 }
c906108c
SS
7471 basic_block = 0;
7472 break;
7473 case DW_LNS_advance_pc:
debd256d 7474 address += lh->minimum_instruction_length
c906108c
SS
7475 * read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7476 line_ptr += bytes_read;
7477 break;
7478 case DW_LNS_advance_line:
7479 line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
7480 line_ptr += bytes_read;
7481 break;
7482 case DW_LNS_set_file:
debd256d 7483 {
a738430d
MK
7484 /* The arrays lh->include_dirs and lh->file_names are
7485 0-based, but the directory and file name numbers in
7486 the statement program are 1-based. */
debd256d 7487 struct file_entry *fe;
4f1520fb 7488 char *dir = NULL;
a738430d 7489
debd256d
JB
7490 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7491 line_ptr += bytes_read;
59205f5a 7492 if (lh->num_file_names < file || file == 0)
25e43795
DJ
7493 dwarf2_debug_line_missing_file_complaint ();
7494 else
7495 {
7496 fe = &lh->file_names[file - 1];
7497 if (fe->dir_index)
7498 dir = lh->include_dirs[fe->dir_index - 1];
7499 if (!decode_for_pst_p)
7500 {
7501 last_subfile = current_subfile;
7502 dwarf2_start_subfile (fe->name, dir, comp_dir);
7503 }
7504 }
debd256d 7505 }
c906108c
SS
7506 break;
7507 case DW_LNS_set_column:
7508 column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7509 line_ptr += bytes_read;
7510 break;
7511 case DW_LNS_negate_stmt:
7512 is_stmt = (!is_stmt);
7513 break;
7514 case DW_LNS_set_basic_block:
7515 basic_block = 1;
7516 break;
c2c6d25f
JM
7517 /* Add to the address register of the state machine the
7518 address increment value corresponding to special opcode
a738430d
MK
7519 255. I.e., this value is scaled by the minimum
7520 instruction length since special opcode 255 would have
7521 scaled the the increment. */
c906108c 7522 case DW_LNS_const_add_pc:
debd256d
JB
7523 address += (lh->minimum_instruction_length
7524 * ((255 - lh->opcode_base) / lh->line_range));
c906108c
SS
7525 break;
7526 case DW_LNS_fixed_advance_pc:
7527 address += read_2_bytes (abfd, line_ptr);
7528 line_ptr += 2;
7529 break;
9aa1fe7e 7530 default:
a738430d
MK
7531 {
7532 /* Unknown standard opcode, ignore it. */
9aa1fe7e 7533 int i;
a738430d 7534
debd256d 7535 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
9aa1fe7e
GK
7536 {
7537 (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
7538 line_ptr += bytes_read;
7539 }
7540 }
c906108c
SS
7541 }
7542 }
59205f5a
JB
7543 if (lh->num_file_names < file || file == 0)
7544 dwarf2_debug_line_missing_file_complaint ();
7545 else
7546 {
7547 lh->file_names[file - 1].included_p = 1;
7548 if (!decode_for_pst_p)
fbf65064
UW
7549 {
7550 addr = gdbarch_addr_bits_remove (gdbarch, address);
7551 record_line (current_subfile, 0, addr);
7552 }
59205f5a 7553 }
c906108c 7554 }
aaa75496
JB
7555
7556 if (decode_for_pst_p)
7557 {
7558 int file_index;
7559
7560 /* Now that we're done scanning the Line Header Program, we can
7561 create the psymtab of each included file. */
7562 for (file_index = 0; file_index < lh->num_file_names; file_index++)
7563 if (lh->file_names[file_index].included_p == 1)
7564 {
5b5464ad
JB
7565 const struct file_entry fe = lh->file_names [file_index];
7566 char *include_name = fe.name;
7567 char *dir_name = NULL;
7568 char *pst_filename = pst->filename;
7569
7570 if (fe.dir_index)
7571 dir_name = lh->include_dirs[fe.dir_index - 1];
7572
7573 if (!IS_ABSOLUTE_PATH (include_name) && dir_name != NULL)
7574 {
1754f103
MK
7575 include_name = concat (dir_name, SLASH_STRING,
7576 include_name, (char *)NULL);
5b5464ad
JB
7577 make_cleanup (xfree, include_name);
7578 }
7579
7580 if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
7581 {
1754f103
MK
7582 pst_filename = concat (pst->dirname, SLASH_STRING,
7583 pst_filename, (char *)NULL);
5b5464ad
JB
7584 make_cleanup (xfree, pst_filename);
7585 }
7586
7587 if (strcmp (include_name, pst_filename) != 0)
aaa75496
JB
7588 dwarf2_create_include_psymtab (include_name, pst, objfile);
7589 }
7590 }
cb1df416
DJ
7591 else
7592 {
7593 /* Make sure a symtab is created for every file, even files
7594 which contain only variables (i.e. no code with associated
7595 line numbers). */
7596
7597 int i;
7598 struct file_entry *fe;
7599
7600 for (i = 0; i < lh->num_file_names; i++)
7601 {
7602 char *dir = NULL;
7603 fe = &lh->file_names[i];
7604 if (fe->dir_index)
7605 dir = lh->include_dirs[fe->dir_index - 1];
7606 dwarf2_start_subfile (fe->name, dir, comp_dir);
7607
7608 /* Skip the main file; we don't need it, and it must be
7609 allocated last, so that it will show up before the
7610 non-primary symtabs in the objfile's symtab list. */
7611 if (current_subfile == first_subfile)
7612 continue;
7613
7614 if (current_subfile->symtab == NULL)
7615 current_subfile->symtab = allocate_symtab (current_subfile->name,
7616 cu->objfile);
7617 fe->symtab = current_subfile->symtab;
7618 }
7619 }
c906108c
SS
7620}
7621
7622/* Start a subfile for DWARF. FILENAME is the name of the file and
7623 DIRNAME the name of the source directory which contains FILENAME
4f1520fb
FR
7624 or NULL if not known. COMP_DIR is the compilation directory for the
7625 linetable's compilation unit or NULL if not known.
c906108c
SS
7626 This routine tries to keep line numbers from identical absolute and
7627 relative file names in a common subfile.
7628
7629 Using the `list' example from the GDB testsuite, which resides in
7630 /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
7631 of /srcdir/list0.c yields the following debugging information for list0.c:
7632
c5aa993b
JM
7633 DW_AT_name: /srcdir/list0.c
7634 DW_AT_comp_dir: /compdir
357e46e7 7635 files.files[0].name: list0.h
c5aa993b 7636 files.files[0].dir: /srcdir
357e46e7 7637 files.files[1].name: list0.c
c5aa993b 7638 files.files[1].dir: /srcdir
c906108c
SS
7639
7640 The line number information for list0.c has to end up in a single
4f1520fb
FR
7641 subfile, so that `break /srcdir/list0.c:1' works as expected.
7642 start_subfile will ensure that this happens provided that we pass the
7643 concatenation of files.files[1].dir and files.files[1].name as the
7644 subfile's name. */
c906108c
SS
7645
7646static void
4f1520fb 7647dwarf2_start_subfile (char *filename, char *dirname, char *comp_dir)
c906108c 7648{
4f1520fb
FR
7649 char *fullname;
7650
7651 /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
7652 `start_symtab' will always pass the contents of DW_AT_comp_dir as
7653 second argument to start_subfile. To be consistent, we do the
7654 same here. In order not to lose the line information directory,
7655 we concatenate it to the filename when it makes sense.
7656 Note that the Dwarf3 standard says (speaking of filenames in line
7657 information): ``The directory index is ignored for file names
7658 that represent full path names''. Thus ignoring dirname in the
7659 `else' branch below isn't an issue. */
c906108c 7660
d5166ae1 7661 if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
4f1520fb
FR
7662 fullname = concat (dirname, SLASH_STRING, filename, (char *)NULL);
7663 else
7664 fullname = filename;
c906108c 7665
4f1520fb
FR
7666 start_subfile (fullname, comp_dir);
7667
7668 if (fullname != filename)
7669 xfree (fullname);
c906108c
SS
7670}
7671
4c2df51b
DJ
7672static void
7673var_decode_location (struct attribute *attr, struct symbol *sym,
e7c27a73 7674 struct dwarf2_cu *cu)
4c2df51b 7675{
e7c27a73
DJ
7676 struct objfile *objfile = cu->objfile;
7677 struct comp_unit_head *cu_header = &cu->header;
7678
4c2df51b
DJ
7679 /* NOTE drow/2003-01-30: There used to be a comment and some special
7680 code here to turn a symbol with DW_AT_external and a
7681 SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol. This was
7682 necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
7683 with some versions of binutils) where shared libraries could have
7684 relocations against symbols in their debug information - the
7685 minimal symbol would have the right address, but the debug info
7686 would not. It's no longer necessary, because we will explicitly
7687 apply relocations when we read in the debug information now. */
7688
7689 /* A DW_AT_location attribute with no contents indicates that a
7690 variable has been optimized away. */
7691 if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
7692 {
7693 SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
7694 return;
7695 }
7696
7697 /* Handle one degenerate form of location expression specially, to
7698 preserve GDB's previous behavior when section offsets are
7699 specified. If this is just a DW_OP_addr then mark this symbol
7700 as LOC_STATIC. */
7701
7702 if (attr_form_is_block (attr)
7703 && DW_BLOCK (attr)->size == 1 + cu_header->addr_size
7704 && DW_BLOCK (attr)->data[0] == DW_OP_addr)
7705 {
891d2f0b 7706 unsigned int dummy;
4c2df51b
DJ
7707
7708 SYMBOL_VALUE_ADDRESS (sym) =
e7c27a73 7709 read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
907fc202 7710 SYMBOL_CLASS (sym) = LOC_STATIC;
4c2df51b
DJ
7711 fixup_symbol_section (sym, objfile);
7712 SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
7713 SYMBOL_SECTION (sym));
4c2df51b
DJ
7714 return;
7715 }
7716
7717 /* NOTE drow/2002-01-30: It might be worthwhile to have a static
7718 expression evaluator, and use LOC_COMPUTED only when necessary
7719 (i.e. when the value of a register or memory location is
7720 referenced, or a thread-local block, etc.). Then again, it might
7721 not be worthwhile. I'm assuming that it isn't unless performance
7722 or memory numbers show me otherwise. */
7723
e7c27a73 7724 dwarf2_symbol_mark_computed (attr, sym, cu);
4c2df51b
DJ
7725 SYMBOL_CLASS (sym) = LOC_COMPUTED;
7726}
7727
c906108c
SS
7728/* Given a pointer to a DWARF information entry, figure out if we need
7729 to make a symbol table entry for it, and if so, create a new entry
7730 and return a pointer to it.
7731 If TYPE is NULL, determine symbol type from the die, otherwise
2df3850c 7732 used the passed type. */
c906108c
SS
7733
7734static struct symbol *
e7c27a73 7735new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
c906108c 7736{
e7c27a73 7737 struct objfile *objfile = cu->objfile;
5e2b427d 7738 struct gdbarch *gdbarch = get_objfile_arch (objfile);
c906108c
SS
7739 struct symbol *sym = NULL;
7740 char *name;
7741 struct attribute *attr = NULL;
7742 struct attribute *attr2 = NULL;
e142c38c 7743 CORE_ADDR baseaddr;
edb3359d 7744 int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
e142c38c
DJ
7745
7746 baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
c906108c 7747
5c4e30ca 7748 if (die->tag != DW_TAG_namespace)
e142c38c 7749 name = dwarf2_linkage_name (die, cu);
5c4e30ca
DC
7750 else
7751 name = TYPE_NAME (type);
7752
c906108c
SS
7753 if (name)
7754 {
4a146b47 7755 sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
c906108c
SS
7756 sizeof (struct symbol));
7757 OBJSTAT (objfile, n_syms++);
7758 memset (sym, 0, sizeof (struct symbol));
2de7ced7
DJ
7759
7760 /* Cache this symbol's name and the name's demangled form (if any). */
e142c38c 7761 SYMBOL_LANGUAGE (sym) = cu->language;
2de7ced7 7762 SYMBOL_SET_NAMES (sym, name, strlen (name), objfile);
c906108c
SS
7763
7764 /* Default assumptions.
c5aa993b 7765 Use the passed type or decode it from the die. */
176620f1 7766 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
875dc2fc 7767 SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
c906108c
SS
7768 if (type != NULL)
7769 SYMBOL_TYPE (sym) = type;
7770 else
e7c27a73 7771 SYMBOL_TYPE (sym) = die_type (die, cu);
edb3359d
DJ
7772 attr = dwarf2_attr (die,
7773 inlined_func ? DW_AT_call_line : DW_AT_decl_line,
7774 cu);
c906108c
SS
7775 if (attr)
7776 {
7777 SYMBOL_LINE (sym) = DW_UNSND (attr);
7778 }
cb1df416 7779
edb3359d
DJ
7780 attr = dwarf2_attr (die,
7781 inlined_func ? DW_AT_call_file : DW_AT_decl_file,
7782 cu);
cb1df416
DJ
7783 if (attr)
7784 {
7785 int file_index = DW_UNSND (attr);
7786 if (cu->line_header == NULL
7787 || file_index > cu->line_header->num_file_names)
7788 complaint (&symfile_complaints,
7789 _("file index out of range"));
1c3d648d 7790 else if (file_index > 0)
cb1df416
DJ
7791 {
7792 struct file_entry *fe;
7793 fe = &cu->line_header->file_names[file_index - 1];
7794 SYMBOL_SYMTAB (sym) = fe->symtab;
7795 }
7796 }
7797
c906108c
SS
7798 switch (die->tag)
7799 {
7800 case DW_TAG_label:
e142c38c 7801 attr = dwarf2_attr (die, DW_AT_low_pc, cu);
c906108c
SS
7802 if (attr)
7803 {
7804 SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
7805 }
7806 SYMBOL_CLASS (sym) = LOC_LABEL;
7807 break;
7808 case DW_TAG_subprogram:
7809 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
7810 finish_block. */
7811 SYMBOL_CLASS (sym) = LOC_BLOCK;
e142c38c 7812 attr2 = dwarf2_attr (die, DW_AT_external, cu);
2cfa0c8d
JB
7813 if ((attr2 && (DW_UNSND (attr2) != 0))
7814 || cu->language == language_ada)
c906108c 7815 {
2cfa0c8d
JB
7816 /* Subprograms marked external are stored as a global symbol.
7817 Ada subprograms, whether marked external or not, are always
7818 stored as a global symbol, because we want to be able to
7819 access them globally. For instance, we want to be able
7820 to break on a nested subprogram without having to
7821 specify the context. */
c906108c
SS
7822 add_symbol_to_list (sym, &global_symbols);
7823 }
7824 else
7825 {
e142c38c 7826 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
7827 }
7828 break;
edb3359d
DJ
7829 case DW_TAG_inlined_subroutine:
7830 /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
7831 finish_block. */
7832 SYMBOL_CLASS (sym) = LOC_BLOCK;
7833 SYMBOL_INLINED (sym) = 1;
7834 /* Do not add the symbol to any lists. It will be found via
7835 BLOCK_FUNCTION from the blockvector. */
7836 break;
c906108c
SS
7837 case DW_TAG_variable:
7838 /* Compilation with minimal debug info may result in variables
7839 with missing type entries. Change the misleading `void' type
7840 to something sensible. */
7841 if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
64c50499 7842 SYMBOL_TYPE (sym)
5e2b427d 7843 = builtin_type (gdbarch)->nodebug_data_symbol;
64c50499 7844
e142c38c 7845 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
7846 if (attr)
7847 {
e7c27a73 7848 dwarf2_const_value (attr, sym, cu);
e142c38c 7849 attr2 = dwarf2_attr (die, DW_AT_external, cu);
c906108c
SS
7850 if (attr2 && (DW_UNSND (attr2) != 0))
7851 add_symbol_to_list (sym, &global_symbols);
7852 else
e142c38c 7853 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
7854 break;
7855 }
e142c38c 7856 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
7857 if (attr)
7858 {
e7c27a73 7859 var_decode_location (attr, sym, cu);
e142c38c 7860 attr2 = dwarf2_attr (die, DW_AT_external, cu);
c906108c 7861 if (attr2 && (DW_UNSND (attr2) != 0))
4c2df51b 7862 add_symbol_to_list (sym, &global_symbols);
c906108c 7863 else
e142c38c 7864 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
7865 }
7866 else
7867 {
7868 /* We do not know the address of this symbol.
c5aa993b
JM
7869 If it is an external symbol and we have type information
7870 for it, enter the symbol as a LOC_UNRESOLVED symbol.
7871 The address of the variable will then be determined from
7872 the minimal symbol table whenever the variable is
7873 referenced. */
e142c38c 7874 attr2 = dwarf2_attr (die, DW_AT_external, cu);
c906108c 7875 if (attr2 && (DW_UNSND (attr2) != 0)
e142c38c 7876 && dwarf2_attr (die, DW_AT_type, cu) != NULL)
c906108c
SS
7877 {
7878 SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
de40b933 7879 add_symbol_to_list (sym, cu->list_in_scope);
c906108c 7880 }
442ddf59
JK
7881 else if (!die_is_declaration (die, cu))
7882 {
7883 /* Use the default LOC_OPTIMIZED_OUT class. */
7884 gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
7885 add_symbol_to_list (sym, cu->list_in_scope);
7886 }
c906108c
SS
7887 }
7888 break;
7889 case DW_TAG_formal_parameter:
edb3359d
DJ
7890 /* If we are inside a function, mark this as an argument. If
7891 not, we might be looking at an argument to an inlined function
7892 when we do not have enough information to show inlined frames;
7893 pretend it's a local variable in that case so that the user can
7894 still see it. */
7895 if (context_stack_depth > 0
7896 && context_stack[context_stack_depth - 1].name != NULL)
7897 SYMBOL_IS_ARGUMENT (sym) = 1;
e142c38c 7898 attr = dwarf2_attr (die, DW_AT_location, cu);
c906108c
SS
7899 if (attr)
7900 {
e7c27a73 7901 var_decode_location (attr, sym, cu);
c906108c 7902 }
e142c38c 7903 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
7904 if (attr)
7905 {
e7c27a73 7906 dwarf2_const_value (attr, sym, cu);
c906108c 7907 }
e142c38c 7908 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
7909 break;
7910 case DW_TAG_unspecified_parameters:
7911 /* From varargs functions; gdb doesn't seem to have any
7912 interest in this information, so just ignore it for now.
7913 (FIXME?) */
7914 break;
7915 case DW_TAG_class_type:
680b30c7 7916 case DW_TAG_interface_type:
c906108c
SS
7917 case DW_TAG_structure_type:
7918 case DW_TAG_union_type:
72019c9c 7919 case DW_TAG_set_type:
c906108c
SS
7920 case DW_TAG_enumeration_type:
7921 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
176620f1 7922 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
c906108c 7923
63d06c5c
DC
7924 /* Make sure that the symbol includes appropriate enclosing
7925 classes/namespaces in its name. These are calculated in
134d01f1 7926 read_structure_type, and the correct name is saved in
63d06c5c
DC
7927 the type. */
7928
987504bb
JJ
7929 if (cu->language == language_cplus
7930 || cu->language == language_java)
c906108c 7931 {
63d06c5c
DC
7932 struct type *type = SYMBOL_TYPE (sym);
7933
7934 if (TYPE_TAG_NAME (type) != NULL)
7935 {
7936 /* FIXME: carlton/2003-11-10: Should this use
7937 SYMBOL_SET_NAMES instead? (The same problem also
d8151005
DJ
7938 arises further down in this function.) */
7939 /* The type's name is already allocated along with
7940 this objfile, so we don't need to duplicate it
7941 for the symbol. */
7942 SYMBOL_LINKAGE_NAME (sym) = TYPE_TAG_NAME (type);
63d06c5c 7943 }
c906108c 7944 }
63d06c5c
DC
7945
7946 {
987504bb 7947 /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
63d06c5c
DC
7948 really ever be static objects: otherwise, if you try
7949 to, say, break of a class's method and you're in a file
7950 which doesn't mention that class, it won't work unless
7951 the check for all static symbols in lookup_symbol_aux
7952 saves you. See the OtherFileClass tests in
7953 gdb.c++/namespace.exp. */
7954
7955 struct pending **list_to_add;
7956
e142c38c 7957 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
7958 && (cu->language == language_cplus
7959 || cu->language == language_java)
e142c38c 7960 ? &global_symbols : cu->list_in_scope);
63d06c5c
DC
7961
7962 add_symbol_to_list (sym, list_to_add);
7963
7964 /* The semantics of C++ state that "struct foo { ... }" also
987504bb 7965 defines a typedef for "foo". A Java class declaration also
5eeb2539 7966 defines a typedef for the class. */
987504bb 7967 if (cu->language == language_cplus
8c6860bb
JB
7968 || cu->language == language_java
7969 || cu->language == language_ada)
63d06c5c 7970 {
d8151005
DJ
7971 /* The symbol's name is already allocated along with
7972 this objfile, so we don't need to duplicate it for
7973 the type. */
63d06c5c 7974 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
77ef991d 7975 TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
63d06c5c
DC
7976 }
7977 }
c906108c
SS
7978 break;
7979 case DW_TAG_typedef:
0114d602 7980 SYMBOL_LINKAGE_NAME (sym) = (char *) dwarf2_full_name (die, cu);
63d06c5c
DC
7981 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
7982 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e142c38c 7983 add_symbol_to_list (sym, cu->list_in_scope);
63d06c5c 7984 break;
c906108c 7985 case DW_TAG_base_type:
a02abb62 7986 case DW_TAG_subrange_type:
c906108c 7987 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
176620f1 7988 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
e142c38c 7989 add_symbol_to_list (sym, cu->list_in_scope);
c906108c
SS
7990 break;
7991 case DW_TAG_enumerator:
0114d602 7992 SYMBOL_LINKAGE_NAME (sym) = (char *) dwarf2_full_name (die, cu);
e142c38c 7993 attr = dwarf2_attr (die, DW_AT_const_value, cu);
c906108c
SS
7994 if (attr)
7995 {
e7c27a73 7996 dwarf2_const_value (attr, sym, cu);
c906108c 7997 }
63d06c5c
DC
7998 {
7999 /* NOTE: carlton/2003-11-10: See comment above in the
8000 DW_TAG_class_type, etc. block. */
8001
8002 struct pending **list_to_add;
8003
e142c38c 8004 list_to_add = (cu->list_in_scope == &file_symbols
987504bb
JJ
8005 && (cu->language == language_cplus
8006 || cu->language == language_java)
e142c38c 8007 ? &global_symbols : cu->list_in_scope);
63d06c5c
DC
8008
8009 add_symbol_to_list (sym, list_to_add);
8010 }
c906108c 8011 break;
5c4e30ca
DC
8012 case DW_TAG_namespace:
8013 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
8014 add_symbol_to_list (sym, &global_symbols);
8015 break;
c906108c
SS
8016 default:
8017 /* Not a tag we recognize. Hopefully we aren't processing
8018 trash data, but since we must specifically ignore things
8019 we don't recognize, there is nothing else we should do at
8020 this point. */
e2e0b3e5 8021 complaint (&symfile_complaints, _("unsupported tag: '%s'"),
4d3c2250 8022 dwarf_tag_name (die->tag));
c906108c
SS
8023 break;
8024 }
df8a16a1
DJ
8025
8026 /* For the benefit of old versions of GCC, check for anonymous
8027 namespaces based on the demangled name. */
8028 if (!processing_has_namespace_info
8029 && cu->language == language_cplus
8030 && dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu) != NULL)
8031 cp_scan_for_anonymous_namespaces (sym);
c906108c
SS
8032 }
8033 return (sym);
8034}
8035
8036/* Copy constant value from an attribute to a symbol. */
8037
8038static void
107d2387 8039dwarf2_const_value (struct attribute *attr, struct symbol *sym,
e7c27a73 8040 struct dwarf2_cu *cu)
c906108c 8041{
e7c27a73
DJ
8042 struct objfile *objfile = cu->objfile;
8043 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
8044 struct dwarf_block *blk;
8045
8046 switch (attr->form)
8047 {
8048 case DW_FORM_addr:
107d2387 8049 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != cu_header->addr_size)
3567439c 8050 dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym),
4d3c2250
KB
8051 cu_header->addr_size,
8052 TYPE_LENGTH (SYMBOL_TYPE
8053 (sym)));
4e38b386 8054 SYMBOL_VALUE_BYTES (sym) =
4a146b47 8055 obstack_alloc (&objfile->objfile_obstack, cu_header->addr_size);
fbd9dcd3
AC
8056 /* NOTE: cagney/2003-05-09: In-lined store_address call with
8057 it's body - store_unsigned_integer. */
8058 store_unsigned_integer (SYMBOL_VALUE_BYTES (sym), cu_header->addr_size,
8059 DW_ADDR (attr));
c906108c
SS
8060 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
8061 break;
4ac36638 8062 case DW_FORM_string:
93b5768b
PA
8063 case DW_FORM_strp:
8064 /* DW_STRING is already allocated on the obstack, point directly
8065 to it. */
8066 SYMBOL_VALUE_BYTES (sym) = (gdb_byte *) DW_STRING (attr);
8067 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
8068 break;
c906108c
SS
8069 case DW_FORM_block1:
8070 case DW_FORM_block2:
8071 case DW_FORM_block4:
8072 case DW_FORM_block:
8073 blk = DW_BLOCK (attr);
8074 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != blk->size)
3567439c 8075 dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym),
4d3c2250
KB
8076 blk->size,
8077 TYPE_LENGTH (SYMBOL_TYPE
8078 (sym)));
4e38b386 8079 SYMBOL_VALUE_BYTES (sym) =
4a146b47 8080 obstack_alloc (&objfile->objfile_obstack, blk->size);
c906108c
SS
8081 memcpy (SYMBOL_VALUE_BYTES (sym), blk->data, blk->size);
8082 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
8083 break;
2df3850c
JM
8084
8085 /* The DW_AT_const_value attributes are supposed to carry the
8086 symbol's value "represented as it would be on the target
8087 architecture." By the time we get here, it's already been
8088 converted to host endianness, so we just need to sign- or
8089 zero-extend it as appropriate. */
8090 case DW_FORM_data1:
8091 dwarf2_const_value_data (attr, sym, 8);
8092 break;
c906108c 8093 case DW_FORM_data2:
2df3850c
JM
8094 dwarf2_const_value_data (attr, sym, 16);
8095 break;
c906108c 8096 case DW_FORM_data4:
2df3850c
JM
8097 dwarf2_const_value_data (attr, sym, 32);
8098 break;
c906108c 8099 case DW_FORM_data8:
2df3850c
JM
8100 dwarf2_const_value_data (attr, sym, 64);
8101 break;
8102
c906108c 8103 case DW_FORM_sdata:
2df3850c
JM
8104 SYMBOL_VALUE (sym) = DW_SND (attr);
8105 SYMBOL_CLASS (sym) = LOC_CONST;
8106 break;
8107
c906108c
SS
8108 case DW_FORM_udata:
8109 SYMBOL_VALUE (sym) = DW_UNSND (attr);
8110 SYMBOL_CLASS (sym) = LOC_CONST;
8111 break;
2df3850c 8112
c906108c 8113 default:
4d3c2250 8114 complaint (&symfile_complaints,
e2e0b3e5 8115 _("unsupported const value attribute form: '%s'"),
4d3c2250 8116 dwarf_form_name (attr->form));
c906108c
SS
8117 SYMBOL_VALUE (sym) = 0;
8118 SYMBOL_CLASS (sym) = LOC_CONST;
8119 break;
8120 }
8121}
8122
2df3850c
JM
8123
8124/* Given an attr with a DW_FORM_dataN value in host byte order, sign-
8125 or zero-extend it as appropriate for the symbol's type. */
8126static void
8127dwarf2_const_value_data (struct attribute *attr,
8128 struct symbol *sym,
8129 int bits)
8130{
8131 LONGEST l = DW_UNSND (attr);
8132
8133 if (bits < sizeof (l) * 8)
8134 {
8135 if (TYPE_UNSIGNED (SYMBOL_TYPE (sym)))
8136 l &= ((LONGEST) 1 << bits) - 1;
8137 else
bf9198f1 8138 l = (l << (sizeof (l) * 8 - bits)) >> (sizeof (l) * 8 - bits);
2df3850c
JM
8139 }
8140
8141 SYMBOL_VALUE (sym) = l;
8142 SYMBOL_CLASS (sym) = LOC_CONST;
8143}
8144
8145
c906108c
SS
8146/* Return the type of the die in question using its DW_AT_type attribute. */
8147
8148static struct type *
e7c27a73 8149die_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8150{
5e2b427d 8151 struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
c906108c
SS
8152 struct type *type;
8153 struct attribute *type_attr;
8154 struct die_info *type_die;
c906108c 8155
e142c38c 8156 type_attr = dwarf2_attr (die, DW_AT_type, cu);
c906108c
SS
8157 if (!type_attr)
8158 {
8159 /* A missing DW_AT_type represents a void type. */
5e2b427d 8160 return builtin_type (gdbarch)->builtin_void;
c906108c
SS
8161 }
8162 else
f2f0e013 8163 type_die = follow_die_ref (die, type_attr, &cu);
10b3939b 8164
e7c27a73 8165 type = tag_type_to_type (type_die, cu);
c906108c
SS
8166 if (!type)
8167 {
d97bc12b 8168 dump_die_for_error (type_die);
8a3fe4f8 8169 error (_("Dwarf Error: Problem turning type die at offset into gdb type [in module %s]"),
e7c27a73 8170 cu->objfile->name);
c906108c
SS
8171 }
8172 return type;
8173}
8174
8175/* Return the containing type of the die in question using its
8176 DW_AT_containing_type attribute. */
8177
8178static struct type *
e7c27a73 8179die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
8180{
8181 struct type *type = NULL;
8182 struct attribute *type_attr;
8183 struct die_info *type_die = NULL;
c906108c 8184
e142c38c 8185 type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
c906108c
SS
8186 if (type_attr)
8187 {
f2f0e013 8188 type_die = follow_die_ref (die, type_attr, &cu);
e7c27a73 8189 type = tag_type_to_type (type_die, cu);
c906108c
SS
8190 }
8191 if (!type)
8192 {
8193 if (type_die)
d97bc12b 8194 dump_die_for_error (type_die);
8a3fe4f8 8195 error (_("Dwarf Error: Problem turning containing type into gdb type [in module %s]"),
e7c27a73 8196 cu->objfile->name);
c906108c
SS
8197 }
8198 return type;
8199}
8200
c906108c 8201static struct type *
e7c27a73 8202tag_type_to_type (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8203{
f792889a
DJ
8204 struct type *this_type;
8205
8206 this_type = read_type_die (die, cu);
8207 if (!this_type)
c906108c 8208 {
d97bc12b 8209 dump_die_for_error (die);
f792889a
DJ
8210 error (_("Dwarf Error: Cannot find type of die [in module %s]"),
8211 cu->objfile->name);
c906108c 8212 }
f792889a 8213 return this_type;
c906108c
SS
8214}
8215
f792889a 8216static struct type *
e7c27a73 8217read_type_die (struct die_info *die, struct dwarf2_cu *cu)
c906108c 8218{
f792889a
DJ
8219 struct type *this_type;
8220
8221 this_type = get_die_type (die, cu);
8222 if (this_type)
8223 return this_type;
8224
c906108c
SS
8225 switch (die->tag)
8226 {
8227 case DW_TAG_class_type:
680b30c7 8228 case DW_TAG_interface_type:
c906108c
SS
8229 case DW_TAG_structure_type:
8230 case DW_TAG_union_type:
f792889a 8231 this_type = read_structure_type (die, cu);
c906108c
SS
8232 break;
8233 case DW_TAG_enumeration_type:
f792889a 8234 this_type = read_enumeration_type (die, cu);
c906108c
SS
8235 break;
8236 case DW_TAG_subprogram:
8237 case DW_TAG_subroutine_type:
edb3359d 8238 case DW_TAG_inlined_subroutine:
f792889a 8239 this_type = read_subroutine_type (die, cu);
c906108c
SS
8240 break;
8241 case DW_TAG_array_type:
f792889a 8242 this_type = read_array_type (die, cu);
c906108c 8243 break;
72019c9c 8244 case DW_TAG_set_type:
f792889a 8245 this_type = read_set_type (die, cu);
72019c9c 8246 break;
c906108c 8247 case DW_TAG_pointer_type:
f792889a 8248 this_type = read_tag_pointer_type (die, cu);
c906108c
SS
8249 break;
8250 case DW_TAG_ptr_to_member_type:
f792889a 8251 this_type = read_tag_ptr_to_member_type (die, cu);
c906108c
SS
8252 break;
8253 case DW_TAG_reference_type:
f792889a 8254 this_type = read_tag_reference_type (die, cu);
c906108c
SS
8255 break;
8256 case DW_TAG_const_type:
f792889a 8257 this_type = read_tag_const_type (die, cu);
c906108c
SS
8258 break;
8259 case DW_TAG_volatile_type:
f792889a 8260 this_type = read_tag_volatile_type (die, cu);
c906108c
SS
8261 break;
8262 case DW_TAG_string_type:
f792889a 8263 this_type = read_tag_string_type (die, cu);
c906108c
SS
8264 break;
8265 case DW_TAG_typedef:
f792889a 8266 this_type = read_typedef (die, cu);
c906108c 8267 break;
a02abb62 8268 case DW_TAG_subrange_type:
f792889a 8269 this_type = read_subrange_type (die, cu);
a02abb62 8270 break;
c906108c 8271 case DW_TAG_base_type:
f792889a 8272 this_type = read_base_type (die, cu);
c906108c 8273 break;
81a17f79 8274 case DW_TAG_unspecified_type:
f792889a 8275 this_type = read_unspecified_type (die, cu);
81a17f79 8276 break;
0114d602
DJ
8277 case DW_TAG_namespace:
8278 this_type = read_namespace_type (die, cu);
8279 break;
c906108c 8280 default:
a1f5b845 8281 complaint (&symfile_complaints, _("unexpected tag in read_type_die: '%s'"),
4d3c2250 8282 dwarf_tag_name (die->tag));
c906108c
SS
8283 break;
8284 }
63d06c5c 8285
f792889a 8286 return this_type;
63d06c5c
DC
8287}
8288
fdde2d81 8289/* Return the name of the namespace/class that DIE is defined within,
0114d602 8290 or "" if we can't tell. The caller should not xfree the result.
fdde2d81 8291
0114d602
DJ
8292 For example, if we're within the method foo() in the following
8293 code:
8294
8295 namespace N {
8296 class C {
8297 void foo () {
8298 }
8299 };
8300 }
8301
8302 then determine_prefix on foo's die will return "N::C". */
fdde2d81
DC
8303
8304static char *
e142c38c 8305determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
63d06c5c 8306{
0114d602
DJ
8307 struct die_info *parent, *spec_die;
8308 struct dwarf2_cu *spec_cu;
8309 struct type *parent_type;
63d06c5c 8310
987504bb
JJ
8311 if (cu->language != language_cplus
8312 && cu->language != language_java)
0114d602
DJ
8313 return "";
8314
8315 /* We have to be careful in the presence of DW_AT_specification.
8316 For example, with GCC 3.4, given the code
8317
8318 namespace N {
8319 void foo() {
8320 // Definition of N::foo.
8321 }
8322 }
8323
8324 then we'll have a tree of DIEs like this:
8325
8326 1: DW_TAG_compile_unit
8327 2: DW_TAG_namespace // N
8328 3: DW_TAG_subprogram // declaration of N::foo
8329 4: DW_TAG_subprogram // definition of N::foo
8330 DW_AT_specification // refers to die #3
8331
8332 Thus, when processing die #4, we have to pretend that we're in
8333 the context of its DW_AT_specification, namely the contex of die
8334 #3. */
8335 spec_cu = cu;
8336 spec_die = die_specification (die, &spec_cu);
8337 if (spec_die == NULL)
8338 parent = die->parent;
8339 else
63d06c5c 8340 {
0114d602
DJ
8341 parent = spec_die->parent;
8342 cu = spec_cu;
63d06c5c 8343 }
0114d602
DJ
8344
8345 if (parent == NULL)
8346 return "";
63d06c5c 8347 else
0114d602
DJ
8348 switch (parent->tag)
8349 {
63d06c5c 8350 case DW_TAG_namespace:
0114d602
DJ
8351 parent_type = read_type_die (parent, cu);
8352 /* We give a name to even anonymous namespaces. */
8353 return TYPE_TAG_NAME (parent_type);
63d06c5c 8354 case DW_TAG_class_type:
680b30c7 8355 case DW_TAG_interface_type:
63d06c5c 8356 case DW_TAG_structure_type:
0114d602
DJ
8357 case DW_TAG_union_type:
8358 parent_type = read_type_die (parent, cu);
8359 if (TYPE_TAG_NAME (parent_type) != NULL)
8360 return TYPE_TAG_NAME (parent_type);
8361 else
8362 /* An anonymous structure is only allowed non-static data
8363 members; no typedefs, no member functions, et cetera.
8364 So it does not need a prefix. */
8365 return "";
63d06c5c 8366 default:
8176b9b8 8367 return determine_prefix (parent, cu);
63d06c5c 8368 }
63d06c5c
DC
8369}
8370
987504bb
JJ
8371/* Return a newly-allocated string formed by concatenating PREFIX and
8372 SUFFIX with appropriate separator. If PREFIX or SUFFIX is NULL or empty, then
8373 simply copy the SUFFIX or PREFIX, respectively. If OBS is non-null,
8374 perform an obconcat, otherwise allocate storage for the result. The CU argument
8375 is used to determine the language and hence, the appropriate separator. */
8376
8377#define MAX_SEP_LEN 2 /* sizeof ("::") */
63d06c5c
DC
8378
8379static char *
987504bb
JJ
8380typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
8381 struct dwarf2_cu *cu)
63d06c5c 8382{
987504bb 8383 char *sep;
63d06c5c 8384
987504bb
JJ
8385 if (suffix == NULL || suffix[0] == '\0' || prefix == NULL || prefix[0] == '\0')
8386 sep = "";
8387 else if (cu->language == language_java)
8388 sep = ".";
8389 else
8390 sep = "::";
63d06c5c 8391
6dd47d34
DE
8392 if (prefix == NULL)
8393 prefix = "";
8394 if (suffix == NULL)
8395 suffix = "";
8396
987504bb
JJ
8397 if (obs == NULL)
8398 {
8399 char *retval = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
6dd47d34
DE
8400 strcpy (retval, prefix);
8401 strcat (retval, sep);
8402 strcat (retval, suffix);
63d06c5c
DC
8403 return retval;
8404 }
987504bb
JJ
8405 else
8406 {
8407 /* We have an obstack. */
8408 return obconcat (obs, prefix, sep, suffix);
8409 }
63d06c5c
DC
8410}
8411
c906108c
SS
8412/* Return sibling of die, NULL if no sibling. */
8413
f9aca02d 8414static struct die_info *
fba45db2 8415sibling_die (struct die_info *die)
c906108c 8416{
639d11d3 8417 return die->sibling;
c906108c
SS
8418}
8419
8420/* Get linkage name of a die, return NULL if not found. */
8421
8422static char *
e142c38c 8423dwarf2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
c906108c
SS
8424{
8425 struct attribute *attr;
8426
e142c38c 8427 attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
c906108c
SS
8428 if (attr && DW_STRING (attr))
8429 return DW_STRING (attr);
71c25dea
TT
8430 return dwarf2_name (die, cu);
8431}
8432
8433/* Get name of a die, return NULL if not found. */
8434
8435static char *
8436dwarf2_canonicalize_name (char *name, struct dwarf2_cu *cu,
8437 struct obstack *obstack)
8438{
8439 if (name && cu->language == language_cplus)
8440 {
8441 char *canon_name = cp_canonicalize_string (name);
8442
8443 if (canon_name != NULL)
8444 {
8445 if (strcmp (canon_name, name) != 0)
8446 name = obsavestring (canon_name, strlen (canon_name),
8447 obstack);
8448 xfree (canon_name);
8449 }
8450 }
8451
8452 return name;
c906108c
SS
8453}
8454
9219021c
DC
8455/* Get name of a die, return NULL if not found. */
8456
8457static char *
e142c38c 8458dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9219021c
DC
8459{
8460 struct attribute *attr;
8461
e142c38c 8462 attr = dwarf2_attr (die, DW_AT_name, cu);
71c25dea
TT
8463 if (!attr || !DW_STRING (attr))
8464 return NULL;
8465
8466 switch (die->tag)
8467 {
8468 case DW_TAG_compile_unit:
8469 /* Compilation units have a DW_AT_name that is a filename, not
8470 a source language identifier. */
8471 case DW_TAG_enumeration_type:
8472 case DW_TAG_enumerator:
8473 /* These tags always have simple identifiers already; no need
8474 to canonicalize them. */
8475 return DW_STRING (attr);
8476 default:
8477 if (attr->form != GDB_FORM_cached_string)
8478 {
8479 DW_STRING (attr)
8480 = dwarf2_canonicalize_name (DW_STRING (attr), cu,
8481 &cu->objfile->objfile_obstack);
8482 attr->form = GDB_FORM_cached_string;
8483 }
8484 return DW_STRING (attr);
8485 }
9219021c
DC
8486}
8487
8488/* Return the die that this die in an extension of, or NULL if there
f2f0e013
DJ
8489 is none. *EXT_CU is the CU containing DIE on input, and the CU
8490 containing the return value on output. */
9219021c
DC
8491
8492static struct die_info *
f2f0e013 8493dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9219021c
DC
8494{
8495 struct attribute *attr;
9219021c 8496
f2f0e013 8497 attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9219021c
DC
8498 if (attr == NULL)
8499 return NULL;
8500
f2f0e013 8501 return follow_die_ref (die, attr, ext_cu);
9219021c
DC
8502}
8503
c906108c
SS
8504/* Convert a DIE tag into its string name. */
8505
8506static char *
aa1ee363 8507dwarf_tag_name (unsigned tag)
c906108c
SS
8508{
8509 switch (tag)
8510 {
8511 case DW_TAG_padding:
8512 return "DW_TAG_padding";
8513 case DW_TAG_array_type:
8514 return "DW_TAG_array_type";
8515 case DW_TAG_class_type:
8516 return "DW_TAG_class_type";
8517 case DW_TAG_entry_point:
8518 return "DW_TAG_entry_point";
8519 case DW_TAG_enumeration_type:
8520 return "DW_TAG_enumeration_type";
8521 case DW_TAG_formal_parameter:
8522 return "DW_TAG_formal_parameter";
8523 case DW_TAG_imported_declaration:
8524 return "DW_TAG_imported_declaration";
8525 case DW_TAG_label:
8526 return "DW_TAG_label";
8527 case DW_TAG_lexical_block:
8528 return "DW_TAG_lexical_block";
8529 case DW_TAG_member:
8530 return "DW_TAG_member";
8531 case DW_TAG_pointer_type:
8532 return "DW_TAG_pointer_type";
8533 case DW_TAG_reference_type:
8534 return "DW_TAG_reference_type";
8535 case DW_TAG_compile_unit:
8536 return "DW_TAG_compile_unit";
8537 case DW_TAG_string_type:
8538 return "DW_TAG_string_type";
8539 case DW_TAG_structure_type:
8540 return "DW_TAG_structure_type";
8541 case DW_TAG_subroutine_type:
8542 return "DW_TAG_subroutine_type";
8543 case DW_TAG_typedef:
8544 return "DW_TAG_typedef";
8545 case DW_TAG_union_type:
8546 return "DW_TAG_union_type";
8547 case DW_TAG_unspecified_parameters:
8548 return "DW_TAG_unspecified_parameters";
8549 case DW_TAG_variant:
8550 return "DW_TAG_variant";
8551 case DW_TAG_common_block:
8552 return "DW_TAG_common_block";
8553 case DW_TAG_common_inclusion:
8554 return "DW_TAG_common_inclusion";
8555 case DW_TAG_inheritance:
8556 return "DW_TAG_inheritance";
8557 case DW_TAG_inlined_subroutine:
8558 return "DW_TAG_inlined_subroutine";
8559 case DW_TAG_module:
8560 return "DW_TAG_module";
8561 case DW_TAG_ptr_to_member_type:
8562 return "DW_TAG_ptr_to_member_type";
8563 case DW_TAG_set_type:
8564 return "DW_TAG_set_type";
8565 case DW_TAG_subrange_type:
8566 return "DW_TAG_subrange_type";
8567 case DW_TAG_with_stmt:
8568 return "DW_TAG_with_stmt";
8569 case DW_TAG_access_declaration:
8570 return "DW_TAG_access_declaration";
8571 case DW_TAG_base_type:
8572 return "DW_TAG_base_type";
8573 case DW_TAG_catch_block:
8574 return "DW_TAG_catch_block";
8575 case DW_TAG_const_type:
8576 return "DW_TAG_const_type";
8577 case DW_TAG_constant:
8578 return "DW_TAG_constant";
8579 case DW_TAG_enumerator:
8580 return "DW_TAG_enumerator";
8581 case DW_TAG_file_type:
8582 return "DW_TAG_file_type";
8583 case DW_TAG_friend:
8584 return "DW_TAG_friend";
8585 case DW_TAG_namelist:
8586 return "DW_TAG_namelist";
8587 case DW_TAG_namelist_item:
8588 return "DW_TAG_namelist_item";
8589 case DW_TAG_packed_type:
8590 return "DW_TAG_packed_type";
8591 case DW_TAG_subprogram:
8592 return "DW_TAG_subprogram";
8593 case DW_TAG_template_type_param:
8594 return "DW_TAG_template_type_param";
8595 case DW_TAG_template_value_param:
8596 return "DW_TAG_template_value_param";
8597 case DW_TAG_thrown_type:
8598 return "DW_TAG_thrown_type";
8599 case DW_TAG_try_block:
8600 return "DW_TAG_try_block";
8601 case DW_TAG_variant_part:
8602 return "DW_TAG_variant_part";
8603 case DW_TAG_variable:
8604 return "DW_TAG_variable";
8605 case DW_TAG_volatile_type:
8606 return "DW_TAG_volatile_type";
d9fa45fe
DC
8607 case DW_TAG_dwarf_procedure:
8608 return "DW_TAG_dwarf_procedure";
8609 case DW_TAG_restrict_type:
8610 return "DW_TAG_restrict_type";
8611 case DW_TAG_interface_type:
8612 return "DW_TAG_interface_type";
8613 case DW_TAG_namespace:
8614 return "DW_TAG_namespace";
8615 case DW_TAG_imported_module:
8616 return "DW_TAG_imported_module";
8617 case DW_TAG_unspecified_type:
8618 return "DW_TAG_unspecified_type";
8619 case DW_TAG_partial_unit:
8620 return "DW_TAG_partial_unit";
8621 case DW_TAG_imported_unit:
8622 return "DW_TAG_imported_unit";
b7619582
GF
8623 case DW_TAG_condition:
8624 return "DW_TAG_condition";
8625 case DW_TAG_shared_type:
8626 return "DW_TAG_shared_type";
c906108c
SS
8627 case DW_TAG_MIPS_loop:
8628 return "DW_TAG_MIPS_loop";
b7619582
GF
8629 case DW_TAG_HP_array_descriptor:
8630 return "DW_TAG_HP_array_descriptor";
c906108c
SS
8631 case DW_TAG_format_label:
8632 return "DW_TAG_format_label";
8633 case DW_TAG_function_template:
8634 return "DW_TAG_function_template";
8635 case DW_TAG_class_template:
8636 return "DW_TAG_class_template";
b7619582
GF
8637 case DW_TAG_GNU_BINCL:
8638 return "DW_TAG_GNU_BINCL";
8639 case DW_TAG_GNU_EINCL:
8640 return "DW_TAG_GNU_EINCL";
8641 case DW_TAG_upc_shared_type:
8642 return "DW_TAG_upc_shared_type";
8643 case DW_TAG_upc_strict_type:
8644 return "DW_TAG_upc_strict_type";
8645 case DW_TAG_upc_relaxed_type:
8646 return "DW_TAG_upc_relaxed_type";
8647 case DW_TAG_PGI_kanji_type:
8648 return "DW_TAG_PGI_kanji_type";
8649 case DW_TAG_PGI_interface_block:
8650 return "DW_TAG_PGI_interface_block";
c906108c
SS
8651 default:
8652 return "DW_TAG_<unknown>";
8653 }
8654}
8655
8656/* Convert a DWARF attribute code into its string name. */
8657
8658static char *
aa1ee363 8659dwarf_attr_name (unsigned attr)
c906108c
SS
8660{
8661 switch (attr)
8662 {
8663 case DW_AT_sibling:
8664 return "DW_AT_sibling";
8665 case DW_AT_location:
8666 return "DW_AT_location";
8667 case DW_AT_name:
8668 return "DW_AT_name";
8669 case DW_AT_ordering:
8670 return "DW_AT_ordering";
8671 case DW_AT_subscr_data:
8672 return "DW_AT_subscr_data";
8673 case DW_AT_byte_size:
8674 return "DW_AT_byte_size";
8675 case DW_AT_bit_offset:
8676 return "DW_AT_bit_offset";
8677 case DW_AT_bit_size:
8678 return "DW_AT_bit_size";
8679 case DW_AT_element_list:
8680 return "DW_AT_element_list";
8681 case DW_AT_stmt_list:
8682 return "DW_AT_stmt_list";
8683 case DW_AT_low_pc:
8684 return "DW_AT_low_pc";
8685 case DW_AT_high_pc:
8686 return "DW_AT_high_pc";
8687 case DW_AT_language:
8688 return "DW_AT_language";
8689 case DW_AT_member:
8690 return "DW_AT_member";
8691 case DW_AT_discr:
8692 return "DW_AT_discr";
8693 case DW_AT_discr_value:
8694 return "DW_AT_discr_value";
8695 case DW_AT_visibility:
8696 return "DW_AT_visibility";
8697 case DW_AT_import:
8698 return "DW_AT_import";
8699 case DW_AT_string_length:
8700 return "DW_AT_string_length";
8701 case DW_AT_common_reference:
8702 return "DW_AT_common_reference";
8703 case DW_AT_comp_dir:
8704 return "DW_AT_comp_dir";
8705 case DW_AT_const_value:
8706 return "DW_AT_const_value";
8707 case DW_AT_containing_type:
8708 return "DW_AT_containing_type";
8709 case DW_AT_default_value:
8710 return "DW_AT_default_value";
8711 case DW_AT_inline:
8712 return "DW_AT_inline";
8713 case DW_AT_is_optional:
8714 return "DW_AT_is_optional";
8715 case DW_AT_lower_bound:
8716 return "DW_AT_lower_bound";
8717 case DW_AT_producer:
8718 return "DW_AT_producer";
8719 case DW_AT_prototyped:
8720 return "DW_AT_prototyped";
8721 case DW_AT_return_addr:
8722 return "DW_AT_return_addr";
8723 case DW_AT_start_scope:
8724 return "DW_AT_start_scope";
09fa0d7c
JK
8725 case DW_AT_bit_stride:
8726 return "DW_AT_bit_stride";
c906108c
SS
8727 case DW_AT_upper_bound:
8728 return "DW_AT_upper_bound";
8729 case DW_AT_abstract_origin:
8730 return "DW_AT_abstract_origin";
8731 case DW_AT_accessibility:
8732 return "DW_AT_accessibility";
8733 case DW_AT_address_class:
8734 return "DW_AT_address_class";
8735 case DW_AT_artificial:
8736 return "DW_AT_artificial";
8737 case DW_AT_base_types:
8738 return "DW_AT_base_types";
8739 case DW_AT_calling_convention:
8740 return "DW_AT_calling_convention";
8741 case DW_AT_count:
8742 return "DW_AT_count";
8743 case DW_AT_data_member_location:
8744 return "DW_AT_data_member_location";
8745 case DW_AT_decl_column:
8746 return "DW_AT_decl_column";
8747 case DW_AT_decl_file:
8748 return "DW_AT_decl_file";
8749 case DW_AT_decl_line:
8750 return "DW_AT_decl_line";
8751 case DW_AT_declaration:
8752 return "DW_AT_declaration";
8753 case DW_AT_discr_list:
8754 return "DW_AT_discr_list";
8755 case DW_AT_encoding:
8756 return "DW_AT_encoding";
8757 case DW_AT_external:
8758 return "DW_AT_external";
8759 case DW_AT_frame_base:
8760 return "DW_AT_frame_base";
8761 case DW_AT_friend:
8762 return "DW_AT_friend";
8763 case DW_AT_identifier_case:
8764 return "DW_AT_identifier_case";
8765 case DW_AT_macro_info:
8766 return "DW_AT_macro_info";
8767 case DW_AT_namelist_items:
8768 return "DW_AT_namelist_items";
8769 case DW_AT_priority:
8770 return "DW_AT_priority";
8771 case DW_AT_segment:
8772 return "DW_AT_segment";
8773 case DW_AT_specification:
8774 return "DW_AT_specification";
8775 case DW_AT_static_link:
8776 return "DW_AT_static_link";
8777 case DW_AT_type:
8778 return "DW_AT_type";
8779 case DW_AT_use_location:
8780 return "DW_AT_use_location";
8781 case DW_AT_variable_parameter:
8782 return "DW_AT_variable_parameter";
8783 case DW_AT_virtuality:
8784 return "DW_AT_virtuality";
8785 case DW_AT_vtable_elem_location:
8786 return "DW_AT_vtable_elem_location";
b7619582 8787 /* DWARF 3 values. */
d9fa45fe
DC
8788 case DW_AT_allocated:
8789 return "DW_AT_allocated";
8790 case DW_AT_associated:
8791 return "DW_AT_associated";
8792 case DW_AT_data_location:
8793 return "DW_AT_data_location";
09fa0d7c
JK
8794 case DW_AT_byte_stride:
8795 return "DW_AT_byte_stride";
d9fa45fe
DC
8796 case DW_AT_entry_pc:
8797 return "DW_AT_entry_pc";
8798 case DW_AT_use_UTF8:
8799 return "DW_AT_use_UTF8";
8800 case DW_AT_extension:
8801 return "DW_AT_extension";
8802 case DW_AT_ranges:
8803 return "DW_AT_ranges";
8804 case DW_AT_trampoline:
8805 return "DW_AT_trampoline";
8806 case DW_AT_call_column:
8807 return "DW_AT_call_column";
8808 case DW_AT_call_file:
8809 return "DW_AT_call_file";
8810 case DW_AT_call_line:
8811 return "DW_AT_call_line";
b7619582
GF
8812 case DW_AT_description:
8813 return "DW_AT_description";
8814 case DW_AT_binary_scale:
8815 return "DW_AT_binary_scale";
8816 case DW_AT_decimal_scale:
8817 return "DW_AT_decimal_scale";
8818 case DW_AT_small:
8819 return "DW_AT_small";
8820 case DW_AT_decimal_sign:
8821 return "DW_AT_decimal_sign";
8822 case DW_AT_digit_count:
8823 return "DW_AT_digit_count";
8824 case DW_AT_picture_string:
8825 return "DW_AT_picture_string";
8826 case DW_AT_mutable:
8827 return "DW_AT_mutable";
8828 case DW_AT_threads_scaled:
8829 return "DW_AT_threads_scaled";
8830 case DW_AT_explicit:
8831 return "DW_AT_explicit";
8832 case DW_AT_object_pointer:
8833 return "DW_AT_object_pointer";
8834 case DW_AT_endianity:
8835 return "DW_AT_endianity";
8836 case DW_AT_elemental:
8837 return "DW_AT_elemental";
8838 case DW_AT_pure:
8839 return "DW_AT_pure";
8840 case DW_AT_recursive:
8841 return "DW_AT_recursive";
b7619582 8842 /* SGI/MIPS extensions. */
c764a876 8843#ifdef MIPS /* collides with DW_AT_HP_block_index */
c906108c
SS
8844 case DW_AT_MIPS_fde:
8845 return "DW_AT_MIPS_fde";
c764a876 8846#endif
c906108c
SS
8847 case DW_AT_MIPS_loop_begin:
8848 return "DW_AT_MIPS_loop_begin";
8849 case DW_AT_MIPS_tail_loop_begin:
8850 return "DW_AT_MIPS_tail_loop_begin";
8851 case DW_AT_MIPS_epilog_begin:
8852 return "DW_AT_MIPS_epilog_begin";
8853 case DW_AT_MIPS_loop_unroll_factor:
8854 return "DW_AT_MIPS_loop_unroll_factor";
8855 case DW_AT_MIPS_software_pipeline_depth:
8856 return "DW_AT_MIPS_software_pipeline_depth";
8857 case DW_AT_MIPS_linkage_name:
8858 return "DW_AT_MIPS_linkage_name";
b7619582
GF
8859 case DW_AT_MIPS_stride:
8860 return "DW_AT_MIPS_stride";
8861 case DW_AT_MIPS_abstract_name:
8862 return "DW_AT_MIPS_abstract_name";
8863 case DW_AT_MIPS_clone_origin:
8864 return "DW_AT_MIPS_clone_origin";
8865 case DW_AT_MIPS_has_inlines:
8866 return "DW_AT_MIPS_has_inlines";
b7619582 8867 /* HP extensions. */
c764a876 8868#ifndef MIPS /* collides with DW_AT_MIPS_fde */
b7619582
GF
8869 case DW_AT_HP_block_index:
8870 return "DW_AT_HP_block_index";
c764a876 8871#endif
b7619582
GF
8872 case DW_AT_HP_unmodifiable:
8873 return "DW_AT_HP_unmodifiable";
8874 case DW_AT_HP_actuals_stmt_list:
8875 return "DW_AT_HP_actuals_stmt_list";
8876 case DW_AT_HP_proc_per_section:
8877 return "DW_AT_HP_proc_per_section";
8878 case DW_AT_HP_raw_data_ptr:
8879 return "DW_AT_HP_raw_data_ptr";
8880 case DW_AT_HP_pass_by_reference:
8881 return "DW_AT_HP_pass_by_reference";
8882 case DW_AT_HP_opt_level:
8883 return "DW_AT_HP_opt_level";
8884 case DW_AT_HP_prof_version_id:
8885 return "DW_AT_HP_prof_version_id";
8886 case DW_AT_HP_opt_flags:
8887 return "DW_AT_HP_opt_flags";
8888 case DW_AT_HP_cold_region_low_pc:
8889 return "DW_AT_HP_cold_region_low_pc";
8890 case DW_AT_HP_cold_region_high_pc:
8891 return "DW_AT_HP_cold_region_high_pc";
8892 case DW_AT_HP_all_variables_modifiable:
8893 return "DW_AT_HP_all_variables_modifiable";
8894 case DW_AT_HP_linkage_name:
8895 return "DW_AT_HP_linkage_name";
8896 case DW_AT_HP_prof_flags:
8897 return "DW_AT_HP_prof_flags";
8898 /* GNU extensions. */
c906108c
SS
8899 case DW_AT_sf_names:
8900 return "DW_AT_sf_names";
8901 case DW_AT_src_info:
8902 return "DW_AT_src_info";
8903 case DW_AT_mac_info:
8904 return "DW_AT_mac_info";
8905 case DW_AT_src_coords:
8906 return "DW_AT_src_coords";
8907 case DW_AT_body_begin:
8908 return "DW_AT_body_begin";
8909 case DW_AT_body_end:
8910 return "DW_AT_body_end";
f5f8a009
EZ
8911 case DW_AT_GNU_vector:
8912 return "DW_AT_GNU_vector";
b7619582
GF
8913 /* VMS extensions. */
8914 case DW_AT_VMS_rtnbeg_pd_address:
8915 return "DW_AT_VMS_rtnbeg_pd_address";
8916 /* UPC extension. */
8917 case DW_AT_upc_threads_scaled:
8918 return "DW_AT_upc_threads_scaled";
8919 /* PGI (STMicroelectronics) extensions. */
8920 case DW_AT_PGI_lbase:
8921 return "DW_AT_PGI_lbase";
8922 case DW_AT_PGI_soffset:
8923 return "DW_AT_PGI_soffset";
8924 case DW_AT_PGI_lstride:
8925 return "DW_AT_PGI_lstride";
c906108c
SS
8926 default:
8927 return "DW_AT_<unknown>";
8928 }
8929}
8930
8931/* Convert a DWARF value form code into its string name. */
8932
8933static char *
aa1ee363 8934dwarf_form_name (unsigned form)
c906108c
SS
8935{
8936 switch (form)
8937 {
8938 case DW_FORM_addr:
8939 return "DW_FORM_addr";
8940 case DW_FORM_block2:
8941 return "DW_FORM_block2";
8942 case DW_FORM_block4:
8943 return "DW_FORM_block4";
8944 case DW_FORM_data2:
8945 return "DW_FORM_data2";
8946 case DW_FORM_data4:
8947 return "DW_FORM_data4";
8948 case DW_FORM_data8:
8949 return "DW_FORM_data8";
8950 case DW_FORM_string:
8951 return "DW_FORM_string";
8952 case DW_FORM_block:
8953 return "DW_FORM_block";
8954 case DW_FORM_block1:
8955 return "DW_FORM_block1";
8956 case DW_FORM_data1:
8957 return "DW_FORM_data1";
8958 case DW_FORM_flag:
8959 return "DW_FORM_flag";
8960 case DW_FORM_sdata:
8961 return "DW_FORM_sdata";
8962 case DW_FORM_strp:
8963 return "DW_FORM_strp";
8964 case DW_FORM_udata:
8965 return "DW_FORM_udata";
8966 case DW_FORM_ref_addr:
8967 return "DW_FORM_ref_addr";
8968 case DW_FORM_ref1:
8969 return "DW_FORM_ref1";
8970 case DW_FORM_ref2:
8971 return "DW_FORM_ref2";
8972 case DW_FORM_ref4:
8973 return "DW_FORM_ref4";
8974 case DW_FORM_ref8:
8975 return "DW_FORM_ref8";
8976 case DW_FORM_ref_udata:
8977 return "DW_FORM_ref_udata";
8978 case DW_FORM_indirect:
8979 return "DW_FORM_indirect";
71c25dea
TT
8980 case GDB_FORM_cached_string:
8981 return "GDB_FORM_cached_string";
c906108c
SS
8982 default:
8983 return "DW_FORM_<unknown>";
8984 }
8985}
8986
8987/* Convert a DWARF stack opcode into its string name. */
8988
8989static char *
aa1ee363 8990dwarf_stack_op_name (unsigned op)
c906108c
SS
8991{
8992 switch (op)
8993 {
8994 case DW_OP_addr:
8995 return "DW_OP_addr";
8996 case DW_OP_deref:
8997 return "DW_OP_deref";
8998 case DW_OP_const1u:
8999 return "DW_OP_const1u";
9000 case DW_OP_const1s:
9001 return "DW_OP_const1s";
9002 case DW_OP_const2u:
9003 return "DW_OP_const2u";
9004 case DW_OP_const2s:
9005 return "DW_OP_const2s";
9006 case DW_OP_const4u:
9007 return "DW_OP_const4u";
9008 case DW_OP_const4s:
9009 return "DW_OP_const4s";
9010 case DW_OP_const8u:
9011 return "DW_OP_const8u";
9012 case DW_OP_const8s:
9013 return "DW_OP_const8s";
9014 case DW_OP_constu:
9015 return "DW_OP_constu";
9016 case DW_OP_consts:
9017 return "DW_OP_consts";
9018 case DW_OP_dup:
9019 return "DW_OP_dup";
9020 case DW_OP_drop:
9021 return "DW_OP_drop";
9022 case DW_OP_over:
9023 return "DW_OP_over";
9024 case DW_OP_pick:
9025 return "DW_OP_pick";
9026 case DW_OP_swap:
9027 return "DW_OP_swap";
9028 case DW_OP_rot:
9029 return "DW_OP_rot";
9030 case DW_OP_xderef:
9031 return "DW_OP_xderef";
9032 case DW_OP_abs:
9033 return "DW_OP_abs";
9034 case DW_OP_and:
9035 return "DW_OP_and";
9036 case DW_OP_div:
9037 return "DW_OP_div";
9038 case DW_OP_minus:
9039 return "DW_OP_minus";
9040 case DW_OP_mod:
9041 return "DW_OP_mod";
9042 case DW_OP_mul:
9043 return "DW_OP_mul";
9044 case DW_OP_neg:
9045 return "DW_OP_neg";
9046 case DW_OP_not:
9047 return "DW_OP_not";
9048 case DW_OP_or:
9049 return "DW_OP_or";
9050 case DW_OP_plus:
9051 return "DW_OP_plus";
9052 case DW_OP_plus_uconst:
9053 return "DW_OP_plus_uconst";
9054 case DW_OP_shl:
9055 return "DW_OP_shl";
9056 case DW_OP_shr:
9057 return "DW_OP_shr";
9058 case DW_OP_shra:
9059 return "DW_OP_shra";
9060 case DW_OP_xor:
9061 return "DW_OP_xor";
9062 case DW_OP_bra:
9063 return "DW_OP_bra";
9064 case DW_OP_eq:
9065 return "DW_OP_eq";
9066 case DW_OP_ge:
9067 return "DW_OP_ge";
9068 case DW_OP_gt:
9069 return "DW_OP_gt";
9070 case DW_OP_le:
9071 return "DW_OP_le";
9072 case DW_OP_lt:
9073 return "DW_OP_lt";
9074 case DW_OP_ne:
9075 return "DW_OP_ne";
9076 case DW_OP_skip:
9077 return "DW_OP_skip";
9078 case DW_OP_lit0:
9079 return "DW_OP_lit0";
9080 case DW_OP_lit1:
9081 return "DW_OP_lit1";
9082 case DW_OP_lit2:
9083 return "DW_OP_lit2";
9084 case DW_OP_lit3:
9085 return "DW_OP_lit3";
9086 case DW_OP_lit4:
9087 return "DW_OP_lit4";
9088 case DW_OP_lit5:
9089 return "DW_OP_lit5";
9090 case DW_OP_lit6:
9091 return "DW_OP_lit6";
9092 case DW_OP_lit7:
9093 return "DW_OP_lit7";
9094 case DW_OP_lit8:
9095 return "DW_OP_lit8";
9096 case DW_OP_lit9:
9097 return "DW_OP_lit9";
9098 case DW_OP_lit10:
9099 return "DW_OP_lit10";
9100 case DW_OP_lit11:
9101 return "DW_OP_lit11";
9102 case DW_OP_lit12:
9103 return "DW_OP_lit12";
9104 case DW_OP_lit13:
9105 return "DW_OP_lit13";
9106 case DW_OP_lit14:
9107 return "DW_OP_lit14";
9108 case DW_OP_lit15:
9109 return "DW_OP_lit15";
9110 case DW_OP_lit16:
9111 return "DW_OP_lit16";
9112 case DW_OP_lit17:
9113 return "DW_OP_lit17";
9114 case DW_OP_lit18:
9115 return "DW_OP_lit18";
9116 case DW_OP_lit19:
9117 return "DW_OP_lit19";
9118 case DW_OP_lit20:
9119 return "DW_OP_lit20";
9120 case DW_OP_lit21:
9121 return "DW_OP_lit21";
9122 case DW_OP_lit22:
9123 return "DW_OP_lit22";
9124 case DW_OP_lit23:
9125 return "DW_OP_lit23";
9126 case DW_OP_lit24:
9127 return "DW_OP_lit24";
9128 case DW_OP_lit25:
9129 return "DW_OP_lit25";
9130 case DW_OP_lit26:
9131 return "DW_OP_lit26";
9132 case DW_OP_lit27:
9133 return "DW_OP_lit27";
9134 case DW_OP_lit28:
9135 return "DW_OP_lit28";
9136 case DW_OP_lit29:
9137 return "DW_OP_lit29";
9138 case DW_OP_lit30:
9139 return "DW_OP_lit30";
9140 case DW_OP_lit31:
9141 return "DW_OP_lit31";
9142 case DW_OP_reg0:
9143 return "DW_OP_reg0";
9144 case DW_OP_reg1:
9145 return "DW_OP_reg1";
9146 case DW_OP_reg2:
9147 return "DW_OP_reg2";
9148 case DW_OP_reg3:
9149 return "DW_OP_reg3";
9150 case DW_OP_reg4:
9151 return "DW_OP_reg4";
9152 case DW_OP_reg5:
9153 return "DW_OP_reg5";
9154 case DW_OP_reg6:
9155 return "DW_OP_reg6";
9156 case DW_OP_reg7:
9157 return "DW_OP_reg7";
9158 case DW_OP_reg8:
9159 return "DW_OP_reg8";
9160 case DW_OP_reg9:
9161 return "DW_OP_reg9";
9162 case DW_OP_reg10:
9163 return "DW_OP_reg10";
9164 case DW_OP_reg11:
9165 return "DW_OP_reg11";
9166 case DW_OP_reg12:
9167 return "DW_OP_reg12";
9168 case DW_OP_reg13:
9169 return "DW_OP_reg13";
9170 case DW_OP_reg14:
9171 return "DW_OP_reg14";
9172 case DW_OP_reg15:
9173 return "DW_OP_reg15";
9174 case DW_OP_reg16:
9175 return "DW_OP_reg16";
9176 case DW_OP_reg17:
9177 return "DW_OP_reg17";
9178 case DW_OP_reg18:
9179 return "DW_OP_reg18";
9180 case DW_OP_reg19:
9181 return "DW_OP_reg19";
9182 case DW_OP_reg20:
9183 return "DW_OP_reg20";
9184 case DW_OP_reg21:
9185 return "DW_OP_reg21";
9186 case DW_OP_reg22:
9187 return "DW_OP_reg22";
9188 case DW_OP_reg23:
9189 return "DW_OP_reg23";
9190 case DW_OP_reg24:
9191 return "DW_OP_reg24";
9192 case DW_OP_reg25:
9193 return "DW_OP_reg25";
9194 case DW_OP_reg26:
9195 return "DW_OP_reg26";
9196 case DW_OP_reg27:
9197 return "DW_OP_reg27";
9198 case DW_OP_reg28:
9199 return "DW_OP_reg28";
9200 case DW_OP_reg29:
9201 return "DW_OP_reg29";
9202 case DW_OP_reg30:
9203 return "DW_OP_reg30";
9204 case DW_OP_reg31:
9205 return "DW_OP_reg31";
9206 case DW_OP_breg0:
9207 return "DW_OP_breg0";
9208 case DW_OP_breg1:
9209 return "DW_OP_breg1";
9210 case DW_OP_breg2:
9211 return "DW_OP_breg2";
9212 case DW_OP_breg3:
9213 return "DW_OP_breg3";
9214 case DW_OP_breg4:
9215 return "DW_OP_breg4";
9216 case DW_OP_breg5:
9217 return "DW_OP_breg5";
9218 case DW_OP_breg6:
9219 return "DW_OP_breg6";
9220 case DW_OP_breg7:
9221 return "DW_OP_breg7";
9222 case DW_OP_breg8:
9223 return "DW_OP_breg8";
9224 case DW_OP_breg9:
9225 return "DW_OP_breg9";
9226 case DW_OP_breg10:
9227 return "DW_OP_breg10";
9228 case DW_OP_breg11:
9229 return "DW_OP_breg11";
9230 case DW_OP_breg12:
9231 return "DW_OP_breg12";
9232 case DW_OP_breg13:
9233 return "DW_OP_breg13";
9234 case DW_OP_breg14:
9235 return "DW_OP_breg14";
9236 case DW_OP_breg15:
9237 return "DW_OP_breg15";
9238 case DW_OP_breg16:
9239 return "DW_OP_breg16";
9240 case DW_OP_breg17:
9241 return "DW_OP_breg17";
9242 case DW_OP_breg18:
9243 return "DW_OP_breg18";
9244 case DW_OP_breg19:
9245 return "DW_OP_breg19";
9246 case DW_OP_breg20:
9247 return "DW_OP_breg20";
9248 case DW_OP_breg21:
9249 return "DW_OP_breg21";
9250 case DW_OP_breg22:
9251 return "DW_OP_breg22";
9252 case DW_OP_breg23:
9253 return "DW_OP_breg23";
9254 case DW_OP_breg24:
9255 return "DW_OP_breg24";
9256 case DW_OP_breg25:
9257 return "DW_OP_breg25";
9258 case DW_OP_breg26:
9259 return "DW_OP_breg26";
9260 case DW_OP_breg27:
9261 return "DW_OP_breg27";
9262 case DW_OP_breg28:
9263 return "DW_OP_breg28";
9264 case DW_OP_breg29:
9265 return "DW_OP_breg29";
9266 case DW_OP_breg30:
9267 return "DW_OP_breg30";
9268 case DW_OP_breg31:
9269 return "DW_OP_breg31";
9270 case DW_OP_regx:
9271 return "DW_OP_regx";
9272 case DW_OP_fbreg:
9273 return "DW_OP_fbreg";
9274 case DW_OP_bregx:
9275 return "DW_OP_bregx";
9276 case DW_OP_piece:
9277 return "DW_OP_piece";
9278 case DW_OP_deref_size:
9279 return "DW_OP_deref_size";
9280 case DW_OP_xderef_size:
9281 return "DW_OP_xderef_size";
9282 case DW_OP_nop:
9283 return "DW_OP_nop";
b7619582 9284 /* DWARF 3 extensions. */
ed348acc
EZ
9285 case DW_OP_push_object_address:
9286 return "DW_OP_push_object_address";
9287 case DW_OP_call2:
9288 return "DW_OP_call2";
9289 case DW_OP_call4:
9290 return "DW_OP_call4";
9291 case DW_OP_call_ref:
9292 return "DW_OP_call_ref";
b7619582
GF
9293 /* GNU extensions. */
9294 case DW_OP_form_tls_address:
9295 return "DW_OP_form_tls_address";
9296 case DW_OP_call_frame_cfa:
9297 return "DW_OP_call_frame_cfa";
9298 case DW_OP_bit_piece:
9299 return "DW_OP_bit_piece";
ed348acc
EZ
9300 case DW_OP_GNU_push_tls_address:
9301 return "DW_OP_GNU_push_tls_address";
42be36b3
CT
9302 case DW_OP_GNU_uninit:
9303 return "DW_OP_GNU_uninit";
b7619582
GF
9304 /* HP extensions. */
9305 case DW_OP_HP_is_value:
9306 return "DW_OP_HP_is_value";
9307 case DW_OP_HP_fltconst4:
9308 return "DW_OP_HP_fltconst4";
9309 case DW_OP_HP_fltconst8:
9310 return "DW_OP_HP_fltconst8";
9311 case DW_OP_HP_mod_range:
9312 return "DW_OP_HP_mod_range";
9313 case DW_OP_HP_unmod_range:
9314 return "DW_OP_HP_unmod_range";
9315 case DW_OP_HP_tls:
9316 return "DW_OP_HP_tls";
c906108c
SS
9317 default:
9318 return "OP_<unknown>";
9319 }
9320}
9321
9322static char *
fba45db2 9323dwarf_bool_name (unsigned mybool)
c906108c
SS
9324{
9325 if (mybool)
9326 return "TRUE";
9327 else
9328 return "FALSE";
9329}
9330
9331/* Convert a DWARF type code into its string name. */
9332
9333static char *
aa1ee363 9334dwarf_type_encoding_name (unsigned enc)
c906108c
SS
9335{
9336 switch (enc)
9337 {
b7619582
GF
9338 case DW_ATE_void:
9339 return "DW_ATE_void";
c906108c
SS
9340 case DW_ATE_address:
9341 return "DW_ATE_address";
9342 case DW_ATE_boolean:
9343 return "DW_ATE_boolean";
9344 case DW_ATE_complex_float:
9345 return "DW_ATE_complex_float";
9346 case DW_ATE_float:
9347 return "DW_ATE_float";
9348 case DW_ATE_signed:
9349 return "DW_ATE_signed";
9350 case DW_ATE_signed_char:
9351 return "DW_ATE_signed_char";
9352 case DW_ATE_unsigned:
9353 return "DW_ATE_unsigned";
9354 case DW_ATE_unsigned_char:
9355 return "DW_ATE_unsigned_char";
b7619582 9356 /* DWARF 3. */
d9fa45fe
DC
9357 case DW_ATE_imaginary_float:
9358 return "DW_ATE_imaginary_float";
b7619582
GF
9359 case DW_ATE_packed_decimal:
9360 return "DW_ATE_packed_decimal";
9361 case DW_ATE_numeric_string:
9362 return "DW_ATE_numeric_string";
9363 case DW_ATE_edited:
9364 return "DW_ATE_edited";
9365 case DW_ATE_signed_fixed:
9366 return "DW_ATE_signed_fixed";
9367 case DW_ATE_unsigned_fixed:
9368 return "DW_ATE_unsigned_fixed";
9369 case DW_ATE_decimal_float:
9370 return "DW_ATE_decimal_float";
9371 /* HP extensions. */
9372 case DW_ATE_HP_float80:
9373 return "DW_ATE_HP_float80";
9374 case DW_ATE_HP_complex_float80:
9375 return "DW_ATE_HP_complex_float80";
9376 case DW_ATE_HP_float128:
9377 return "DW_ATE_HP_float128";
9378 case DW_ATE_HP_complex_float128:
9379 return "DW_ATE_HP_complex_float128";
9380 case DW_ATE_HP_floathpintel:
9381 return "DW_ATE_HP_floathpintel";
9382 case DW_ATE_HP_imaginary_float80:
9383 return "DW_ATE_HP_imaginary_float80";
9384 case DW_ATE_HP_imaginary_float128:
9385 return "DW_ATE_HP_imaginary_float128";
c906108c
SS
9386 default:
9387 return "DW_ATE_<unknown>";
9388 }
9389}
9390
9391/* Convert a DWARF call frame info operation to its string name. */
9392
9393#if 0
9394static char *
aa1ee363 9395dwarf_cfi_name (unsigned cfi_opc)
c906108c
SS
9396{
9397 switch (cfi_opc)
9398 {
9399 case DW_CFA_advance_loc:
9400 return "DW_CFA_advance_loc";
9401 case DW_CFA_offset:
9402 return "DW_CFA_offset";
9403 case DW_CFA_restore:
9404 return "DW_CFA_restore";
9405 case DW_CFA_nop:
9406 return "DW_CFA_nop";
9407 case DW_CFA_set_loc:
9408 return "DW_CFA_set_loc";
9409 case DW_CFA_advance_loc1:
9410 return "DW_CFA_advance_loc1";
9411 case DW_CFA_advance_loc2:
9412 return "DW_CFA_advance_loc2";
9413 case DW_CFA_advance_loc4:
9414 return "DW_CFA_advance_loc4";
9415 case DW_CFA_offset_extended:
9416 return "DW_CFA_offset_extended";
9417 case DW_CFA_restore_extended:
9418 return "DW_CFA_restore_extended";
9419 case DW_CFA_undefined:
9420 return "DW_CFA_undefined";
9421 case DW_CFA_same_value:
9422 return "DW_CFA_same_value";
9423 case DW_CFA_register:
9424 return "DW_CFA_register";
9425 case DW_CFA_remember_state:
9426 return "DW_CFA_remember_state";
9427 case DW_CFA_restore_state:
9428 return "DW_CFA_restore_state";
9429 case DW_CFA_def_cfa:
9430 return "DW_CFA_def_cfa";
9431 case DW_CFA_def_cfa_register:
9432 return "DW_CFA_def_cfa_register";
9433 case DW_CFA_def_cfa_offset:
9434 return "DW_CFA_def_cfa_offset";
b7619582 9435 /* DWARF 3. */
985cb1a3
JM
9436 case DW_CFA_def_cfa_expression:
9437 return "DW_CFA_def_cfa_expression";
9438 case DW_CFA_expression:
9439 return "DW_CFA_expression";
9440 case DW_CFA_offset_extended_sf:
9441 return "DW_CFA_offset_extended_sf";
9442 case DW_CFA_def_cfa_sf:
9443 return "DW_CFA_def_cfa_sf";
9444 case DW_CFA_def_cfa_offset_sf:
9445 return "DW_CFA_def_cfa_offset_sf";
b7619582
GF
9446 case DW_CFA_val_offset:
9447 return "DW_CFA_val_offset";
9448 case DW_CFA_val_offset_sf:
9449 return "DW_CFA_val_offset_sf";
9450 case DW_CFA_val_expression:
9451 return "DW_CFA_val_expression";
9452 /* SGI/MIPS specific. */
c906108c
SS
9453 case DW_CFA_MIPS_advance_loc8:
9454 return "DW_CFA_MIPS_advance_loc8";
b7619582 9455 /* GNU extensions. */
985cb1a3
JM
9456 case DW_CFA_GNU_window_save:
9457 return "DW_CFA_GNU_window_save";
9458 case DW_CFA_GNU_args_size:
9459 return "DW_CFA_GNU_args_size";
9460 case DW_CFA_GNU_negative_offset_extended:
9461 return "DW_CFA_GNU_negative_offset_extended";
c906108c
SS
9462 default:
9463 return "DW_CFA_<unknown>";
9464 }
9465}
9466#endif
9467
f9aca02d 9468static void
d97bc12b 9469dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
c906108c
SS
9470{
9471 unsigned int i;
9472
d97bc12b
DE
9473 print_spaces (indent, f);
9474 fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
c906108c 9475 dwarf_tag_name (die->tag), die->abbrev, die->offset);
d97bc12b
DE
9476
9477 if (die->parent != NULL)
9478 {
9479 print_spaces (indent, f);
9480 fprintf_unfiltered (f, " parent at offset: 0x%x\n",
9481 die->parent->offset);
9482 }
9483
9484 print_spaces (indent, f);
9485 fprintf_unfiltered (f, " has children: %s\n",
639d11d3 9486 dwarf_bool_name (die->child != NULL));
c906108c 9487
d97bc12b
DE
9488 print_spaces (indent, f);
9489 fprintf_unfiltered (f, " attributes:\n");
9490
c906108c
SS
9491 for (i = 0; i < die->num_attrs; ++i)
9492 {
d97bc12b
DE
9493 print_spaces (indent, f);
9494 fprintf_unfiltered (f, " %s (%s) ",
c906108c
SS
9495 dwarf_attr_name (die->attrs[i].name),
9496 dwarf_form_name (die->attrs[i].form));
d97bc12b 9497
c906108c
SS
9498 switch (die->attrs[i].form)
9499 {
9500 case DW_FORM_ref_addr:
9501 case DW_FORM_addr:
d97bc12b
DE
9502 fprintf_unfiltered (f, "address: ");
9503 fputs_filtered (paddress (DW_ADDR (&die->attrs[i])), f);
c906108c
SS
9504 break;
9505 case DW_FORM_block2:
9506 case DW_FORM_block4:
9507 case DW_FORM_block:
9508 case DW_FORM_block1:
d97bc12b 9509 fprintf_unfiltered (f, "block: size %d", DW_BLOCK (&die->attrs[i])->size);
c906108c 9510 break;
10b3939b
DJ
9511 case DW_FORM_ref1:
9512 case DW_FORM_ref2:
9513 case DW_FORM_ref4:
d97bc12b 9514 fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
10b3939b
DJ
9515 (long) (DW_ADDR (&die->attrs[i])));
9516 break;
c906108c
SS
9517 case DW_FORM_data1:
9518 case DW_FORM_data2:
9519 case DW_FORM_data4:
ce5d95e1 9520 case DW_FORM_data8:
c906108c
SS
9521 case DW_FORM_udata:
9522 case DW_FORM_sdata:
d97bc12b 9523 fprintf_unfiltered (f, "constant: %ld", DW_UNSND (&die->attrs[i]));
c906108c
SS
9524 break;
9525 case DW_FORM_string:
4bdf3d34 9526 case DW_FORM_strp:
71c25dea 9527 case GDB_FORM_cached_string:
d97bc12b 9528 fprintf_unfiltered (f, "string: \"%s\"",
c906108c 9529 DW_STRING (&die->attrs[i])
c5aa993b 9530 ? DW_STRING (&die->attrs[i]) : "");
c906108c
SS
9531 break;
9532 case DW_FORM_flag:
9533 if (DW_UNSND (&die->attrs[i]))
d97bc12b 9534 fprintf_unfiltered (f, "flag: TRUE");
c906108c 9535 else
d97bc12b 9536 fprintf_unfiltered (f, "flag: FALSE");
c906108c 9537 break;
a8329558
KW
9538 case DW_FORM_indirect:
9539 /* the reader will have reduced the indirect form to
9540 the "base form" so this form should not occur */
d97bc12b 9541 fprintf_unfiltered (f, "unexpected attribute form: DW_FORM_indirect");
a8329558 9542 break;
c906108c 9543 default:
d97bc12b 9544 fprintf_unfiltered (f, "unsupported attribute form: %d.",
c5aa993b 9545 die->attrs[i].form);
d97bc12b 9546 break;
c906108c 9547 }
d97bc12b 9548 fprintf_unfiltered (f, "\n");
c906108c
SS
9549 }
9550}
9551
f9aca02d 9552static void
d97bc12b 9553dump_die_for_error (struct die_info *die)
c906108c 9554{
d97bc12b
DE
9555 dump_die_shallow (gdb_stderr, 0, die);
9556}
9557
9558static void
9559dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
9560{
9561 int indent = level * 4;
9562
9563 gdb_assert (die != NULL);
9564
9565 if (level >= max_level)
9566 return;
9567
9568 dump_die_shallow (f, indent, die);
9569
9570 if (die->child != NULL)
c906108c 9571 {
d97bc12b
DE
9572 print_spaces (indent, f);
9573 fprintf_unfiltered (f, " Children:");
9574 if (level + 1 < max_level)
9575 {
9576 fprintf_unfiltered (f, "\n");
9577 dump_die_1 (f, level + 1, max_level, die->child);
9578 }
9579 else
9580 {
9581 fprintf_unfiltered (f, " [not printed, max nesting level reached]\n");
9582 }
9583 }
9584
9585 if (die->sibling != NULL && level > 0)
9586 {
9587 dump_die_1 (f, level, max_level, die->sibling);
c906108c
SS
9588 }
9589}
9590
d97bc12b
DE
9591/* This is called from the pdie macro in gdbinit.in.
9592 It's not static so gcc will keep a copy callable from gdb. */
9593
9594void
9595dump_die (struct die_info *die, int max_level)
9596{
9597 dump_die_1 (gdb_stdlog, 0, max_level, die);
9598}
9599
f9aca02d 9600static void
51545339 9601store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
c906108c 9602{
51545339 9603 void **slot;
c906108c 9604
51545339
DJ
9605 slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset, INSERT);
9606
9607 *slot = die;
c906108c
SS
9608}
9609
9610static unsigned int
c764a876 9611dwarf2_get_ref_die_offset (struct attribute *attr)
c906108c
SS
9612{
9613 unsigned int result = 0;
9614
9615 switch (attr->form)
9616 {
9617 case DW_FORM_ref_addr:
c906108c
SS
9618 case DW_FORM_ref1:
9619 case DW_FORM_ref2:
9620 case DW_FORM_ref4:
613e1657 9621 case DW_FORM_ref8:
c906108c 9622 case DW_FORM_ref_udata:
10b3939b 9623 result = DW_ADDR (attr);
c906108c
SS
9624 break;
9625 default:
4d3c2250 9626 complaint (&symfile_complaints,
e2e0b3e5 9627 _("unsupported die ref attribute form: '%s'"),
4d3c2250 9628 dwarf_form_name (attr->form));
c906108c
SS
9629 }
9630 return result;
9631}
9632
a02abb62
JB
9633/* Return the constant value held by the given attribute. Return -1
9634 if the value held by the attribute is not constant. */
9635
9636static int
9637dwarf2_get_attr_constant_value (struct attribute *attr, int default_value)
9638{
9639 if (attr->form == DW_FORM_sdata)
9640 return DW_SND (attr);
9641 else if (attr->form == DW_FORM_udata
9642 || attr->form == DW_FORM_data1
9643 || attr->form == DW_FORM_data2
9644 || attr->form == DW_FORM_data4
9645 || attr->form == DW_FORM_data8)
9646 return DW_UNSND (attr);
9647 else
9648 {
e2e0b3e5 9649 complaint (&symfile_complaints, _("Attribute value is not a constant (%s)"),
a02abb62
JB
9650 dwarf_form_name (attr->form));
9651 return default_value;
9652 }
9653}
9654
03dd20cc
DJ
9655/* THIS_CU has a reference to PER_CU. If necessary, load the new compilation
9656 unit and add it to our queue. */
9657
9658static void
9659maybe_queue_comp_unit (struct dwarf2_cu *this_cu,
9660 struct dwarf2_per_cu_data *per_cu)
9661{
9662 /* Mark the dependence relation so that we don't flush PER_CU
9663 too early. */
9664 dwarf2_add_dependence (this_cu, per_cu);
9665
9666 /* If it's already on the queue, we have nothing to do. */
9667 if (per_cu->queued)
9668 return;
9669
9670 /* If the compilation unit is already loaded, just mark it as
9671 used. */
9672 if (per_cu->cu != NULL)
9673 {
9674 per_cu->cu->last_used = 0;
9675 return;
9676 }
9677
9678 /* Add it to the queue. */
9679 queue_comp_unit (per_cu, this_cu->objfile);
9680}
9681
f504f079
DE
9682/* Follow reference attribute ATTR of SRC_DIE.
9683 On entry *REF_CU is the CU of SRC_DIE.
9684 On exit *REF_CU is the CU of the result. */
9685
f9aca02d 9686static struct die_info *
10b3939b 9687follow_die_ref (struct die_info *src_die, struct attribute *attr,
f2f0e013 9688 struct dwarf2_cu **ref_cu)
c906108c
SS
9689{
9690 struct die_info *die;
10b3939b 9691 unsigned int offset;
10b3939b 9692 struct die_info temp_die;
f2f0e013 9693 struct dwarf2_cu *target_cu, *cu = *ref_cu;
10b3939b 9694
c764a876 9695 offset = dwarf2_get_ref_die_offset (attr);
10b3939b 9696
45452591 9697 if (! offset_in_cu_p (&cu->header, offset))
10b3939b
DJ
9698 {
9699 struct dwarf2_per_cu_data *per_cu;
45452591 9700 per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
03dd20cc
DJ
9701
9702 /* If necessary, add it to the queue and load its DIEs. */
9703 maybe_queue_comp_unit (cu, per_cu);
9704
10b3939b
DJ
9705 target_cu = per_cu->cu;
9706 }
9707 else
9708 target_cu = cu;
c906108c 9709
f2f0e013 9710 *ref_cu = target_cu;
51545339
DJ
9711 temp_die.offset = offset;
9712 die = htab_find_with_hash (target_cu->die_hash, &temp_die, offset);
9713 if (die)
9714 return die;
10b3939b 9715
8a3fe4f8
AC
9716 error (_("Dwarf Error: Cannot find DIE at 0x%lx referenced from DIE "
9717 "at 0x%lx [in module %s]"),
1d325ec1 9718 (long) offset, (long) src_die->offset, cu->objfile->name);
c906108c
SS
9719}
9720
c906108c
SS
9721/* Decode simple location descriptions.
9722 Given a pointer to a dwarf block that defines a location, compute
9723 the location and return the value.
9724
4cecd739
DJ
9725 NOTE drow/2003-11-18: This function is called in two situations
9726 now: for the address of static or global variables (partial symbols
9727 only) and for offsets into structures which are expected to be
9728 (more or less) constant. The partial symbol case should go away,
9729 and only the constant case should remain. That will let this
9730 function complain more accurately. A few special modes are allowed
9731 without complaint for global variables (for instance, global
9732 register values and thread-local values).
c906108c
SS
9733
9734 A location description containing no operations indicates that the
4cecd739 9735 object is optimized out. The return value is 0 for that case.
6b992462
DJ
9736 FIXME drow/2003-11-16: No callers check for this case any more; soon all
9737 callers will only want a very basic result and this can become a
9738 complaint.
c906108c 9739
c906108c
SS
9740 Note that stack[0] is unused except as a default error return.
9741 Note that stack overflow is not yet handled. */
9742
9743static CORE_ADDR
e7c27a73 9744decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
c906108c 9745{
e7c27a73
DJ
9746 struct objfile *objfile = cu->objfile;
9747 struct comp_unit_head *cu_header = &cu->header;
c906108c
SS
9748 int i;
9749 int size = blk->size;
fe1b8b76 9750 gdb_byte *data = blk->data;
c906108c
SS
9751 CORE_ADDR stack[64];
9752 int stacki;
9753 unsigned int bytes_read, unsnd;
fe1b8b76 9754 gdb_byte op;
c906108c
SS
9755
9756 i = 0;
9757 stacki = 0;
9758 stack[stacki] = 0;
c906108c
SS
9759
9760 while (i < size)
9761 {
c906108c
SS
9762 op = data[i++];
9763 switch (op)
9764 {
f1bea926
JM
9765 case DW_OP_lit0:
9766 case DW_OP_lit1:
9767 case DW_OP_lit2:
9768 case DW_OP_lit3:
9769 case DW_OP_lit4:
9770 case DW_OP_lit5:
9771 case DW_OP_lit6:
9772 case DW_OP_lit7:
9773 case DW_OP_lit8:
9774 case DW_OP_lit9:
9775 case DW_OP_lit10:
9776 case DW_OP_lit11:
9777 case DW_OP_lit12:
9778 case DW_OP_lit13:
9779 case DW_OP_lit14:
9780 case DW_OP_lit15:
9781 case DW_OP_lit16:
9782 case DW_OP_lit17:
9783 case DW_OP_lit18:
9784 case DW_OP_lit19:
9785 case DW_OP_lit20:
9786 case DW_OP_lit21:
9787 case DW_OP_lit22:
9788 case DW_OP_lit23:
9789 case DW_OP_lit24:
9790 case DW_OP_lit25:
9791 case DW_OP_lit26:
9792 case DW_OP_lit27:
9793 case DW_OP_lit28:
9794 case DW_OP_lit29:
9795 case DW_OP_lit30:
9796 case DW_OP_lit31:
9797 stack[++stacki] = op - DW_OP_lit0;
9798 break;
9799
c906108c
SS
9800 case DW_OP_reg0:
9801 case DW_OP_reg1:
9802 case DW_OP_reg2:
9803 case DW_OP_reg3:
9804 case DW_OP_reg4:
9805 case DW_OP_reg5:
9806 case DW_OP_reg6:
9807 case DW_OP_reg7:
9808 case DW_OP_reg8:
9809 case DW_OP_reg9:
9810 case DW_OP_reg10:
9811 case DW_OP_reg11:
9812 case DW_OP_reg12:
9813 case DW_OP_reg13:
9814 case DW_OP_reg14:
9815 case DW_OP_reg15:
9816 case DW_OP_reg16:
9817 case DW_OP_reg17:
9818 case DW_OP_reg18:
9819 case DW_OP_reg19:
9820 case DW_OP_reg20:
9821 case DW_OP_reg21:
9822 case DW_OP_reg22:
9823 case DW_OP_reg23:
9824 case DW_OP_reg24:
9825 case DW_OP_reg25:
9826 case DW_OP_reg26:
9827 case DW_OP_reg27:
9828 case DW_OP_reg28:
9829 case DW_OP_reg29:
9830 case DW_OP_reg30:
9831 case DW_OP_reg31:
c906108c 9832 stack[++stacki] = op - DW_OP_reg0;
4cecd739
DJ
9833 if (i < size)
9834 dwarf2_complex_location_expr_complaint ();
c906108c
SS
9835 break;
9836
9837 case DW_OP_regx:
c906108c
SS
9838 unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
9839 i += bytes_read;
c906108c 9840 stack[++stacki] = unsnd;
4cecd739
DJ
9841 if (i < size)
9842 dwarf2_complex_location_expr_complaint ();
c906108c
SS
9843 break;
9844
9845 case DW_OP_addr:
107d2387 9846 stack[++stacki] = read_address (objfile->obfd, &data[i],
e7c27a73 9847 cu, &bytes_read);
107d2387 9848 i += bytes_read;
c906108c
SS
9849 break;
9850
9851 case DW_OP_const1u:
9852 stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
9853 i += 1;
9854 break;
9855
9856 case DW_OP_const1s:
9857 stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
9858 i += 1;
9859 break;
9860
9861 case DW_OP_const2u:
9862 stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
9863 i += 2;
9864 break;
9865
9866 case DW_OP_const2s:
9867 stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
9868 i += 2;
9869 break;
9870
9871 case DW_OP_const4u:
9872 stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
9873 i += 4;
9874 break;
9875
9876 case DW_OP_const4s:
9877 stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
9878 i += 4;
9879 break;
9880
9881 case DW_OP_constu:
9882 stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
c5aa993b 9883 &bytes_read);
c906108c
SS
9884 i += bytes_read;
9885 break;
9886
9887 case DW_OP_consts:
9888 stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
9889 i += bytes_read;
9890 break;
9891
f1bea926
JM
9892 case DW_OP_dup:
9893 stack[stacki + 1] = stack[stacki];
9894 stacki++;
9895 break;
9896
c906108c
SS
9897 case DW_OP_plus:
9898 stack[stacki - 1] += stack[stacki];
9899 stacki--;
9900 break;
9901
9902 case DW_OP_plus_uconst:
9903 stack[stacki] += read_unsigned_leb128 (NULL, (data + i), &bytes_read);
9904 i += bytes_read;
9905 break;
9906
9907 case DW_OP_minus:
f1bea926 9908 stack[stacki - 1] -= stack[stacki];
c906108c
SS
9909 stacki--;
9910 break;
9911
7a292a7a 9912 case DW_OP_deref:
7a292a7a 9913 /* If we're not the last op, then we definitely can't encode
4cecd739
DJ
9914 this using GDB's address_class enum. This is valid for partial
9915 global symbols, although the variable's address will be bogus
9916 in the psymtab. */
7a292a7a 9917 if (i < size)
4d3c2250 9918 dwarf2_complex_location_expr_complaint ();
7a292a7a
SS
9919 break;
9920
9d774e44 9921 case DW_OP_GNU_push_tls_address:
9d774e44
EZ
9922 /* The top of the stack has the offset from the beginning
9923 of the thread control block at which the variable is located. */
9924 /* Nothing should follow this operator, so the top of stack would
9925 be returned. */
4cecd739
DJ
9926 /* This is valid for partial global symbols, but the variable's
9927 address will be bogus in the psymtab. */
9d774e44 9928 if (i < size)
4d3c2250 9929 dwarf2_complex_location_expr_complaint ();
9d774e44
EZ
9930 break;
9931
42be36b3
CT
9932 case DW_OP_GNU_uninit:
9933 break;
9934
c906108c 9935 default:
e2e0b3e5 9936 complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
4d3c2250 9937 dwarf_stack_op_name (op));
c906108c
SS
9938 return (stack[stacki]);
9939 }
9940 }
9941 return (stack[stacki]);
9942}
9943
9944/* memory allocation interface */
9945
c906108c 9946static struct dwarf_block *
7b5a2f43 9947dwarf_alloc_block (struct dwarf2_cu *cu)
c906108c
SS
9948{
9949 struct dwarf_block *blk;
9950
9951 blk = (struct dwarf_block *)
7b5a2f43 9952 obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
c906108c
SS
9953 return (blk);
9954}
9955
9956static struct abbrev_info *
f3dd6933 9957dwarf_alloc_abbrev (struct dwarf2_cu *cu)
c906108c
SS
9958{
9959 struct abbrev_info *abbrev;
9960
f3dd6933
DJ
9961 abbrev = (struct abbrev_info *)
9962 obstack_alloc (&cu->abbrev_obstack, sizeof (struct abbrev_info));
c906108c
SS
9963 memset (abbrev, 0, sizeof (struct abbrev_info));
9964 return (abbrev);
9965}
9966
9967static struct die_info *
b60c80d6 9968dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
c906108c
SS
9969{
9970 struct die_info *die;
b60c80d6
DJ
9971 size_t size = sizeof (struct die_info);
9972
9973 if (num_attrs > 1)
9974 size += (num_attrs - 1) * sizeof (struct attribute);
c906108c 9975
b60c80d6 9976 die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
c906108c
SS
9977 memset (die, 0, sizeof (struct die_info));
9978 return (die);
9979}
2e276125
JB
9980
9981\f
9982/* Macro support. */
9983
9984
9985/* Return the full name of file number I in *LH's file name table.
9986 Use COMP_DIR as the name of the current directory of the
9987 compilation. The result is allocated using xmalloc; the caller is
9988 responsible for freeing it. */
9989static char *
9990file_full_name (int file, struct line_header *lh, const char *comp_dir)
9991{
6a83a1e6
EZ
9992 /* Is the file number a valid index into the line header's file name
9993 table? Remember that file numbers start with one, not zero. */
9994 if (1 <= file && file <= lh->num_file_names)
9995 {
9996 struct file_entry *fe = &lh->file_names[file - 1];
2e276125 9997
6a83a1e6
EZ
9998 if (IS_ABSOLUTE_PATH (fe->name))
9999 return xstrdup (fe->name);
10000 else
10001 {
10002 const char *dir;
10003 int dir_len;
10004 char *full_name;
10005
10006 if (fe->dir_index)
10007 dir = lh->include_dirs[fe->dir_index - 1];
10008 else
10009 dir = comp_dir;
10010
10011 if (dir)
10012 {
10013 dir_len = strlen (dir);
10014 full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
10015 strcpy (full_name, dir);
10016 full_name[dir_len] = '/';
10017 strcpy (full_name + dir_len + 1, fe->name);
10018 return full_name;
10019 }
10020 else
10021 return xstrdup (fe->name);
10022 }
10023 }
2e276125
JB
10024 else
10025 {
6a83a1e6
EZ
10026 /* The compiler produced a bogus file number. We can at least
10027 record the macro definitions made in the file, even if we
10028 won't be able to find the file by name. */
10029 char fake_name[80];
10030 sprintf (fake_name, "<bad macro file number %d>", file);
2e276125 10031
6a83a1e6
EZ
10032 complaint (&symfile_complaints,
10033 _("bad file number in macro information (%d)"),
10034 file);
2e276125 10035
6a83a1e6 10036 return xstrdup (fake_name);
2e276125
JB
10037 }
10038}
10039
10040
10041static struct macro_source_file *
10042macro_start_file (int file, int line,
10043 struct macro_source_file *current_file,
10044 const char *comp_dir,
10045 struct line_header *lh, struct objfile *objfile)
10046{
10047 /* The full name of this source file. */
10048 char *full_name = file_full_name (file, lh, comp_dir);
10049
10050 /* We don't create a macro table for this compilation unit
10051 at all until we actually get a filename. */
10052 if (! pending_macros)
4a146b47 10053 pending_macros = new_macro_table (&objfile->objfile_obstack,
af5f3db6 10054 objfile->macro_cache);
2e276125
JB
10055
10056 if (! current_file)
10057 /* If we have no current file, then this must be the start_file
10058 directive for the compilation unit's main source file. */
10059 current_file = macro_set_main (pending_macros, full_name);
10060 else
10061 current_file = macro_include (current_file, line, full_name);
10062
10063 xfree (full_name);
10064
10065 return current_file;
10066}
10067
10068
10069/* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
10070 followed by a null byte. */
10071static char *
10072copy_string (const char *buf, int len)
10073{
10074 char *s = xmalloc (len + 1);
10075 memcpy (s, buf, len);
10076 s[len] = '\0';
10077
10078 return s;
10079}
10080
10081
10082static const char *
10083consume_improper_spaces (const char *p, const char *body)
10084{
10085 if (*p == ' ')
10086 {
4d3c2250 10087 complaint (&symfile_complaints,
e2e0b3e5 10088 _("macro definition contains spaces in formal argument list:\n`%s'"),
4d3c2250 10089 body);
2e276125
JB
10090
10091 while (*p == ' ')
10092 p++;
10093 }
10094
10095 return p;
10096}
10097
10098
10099static void
10100parse_macro_definition (struct macro_source_file *file, int line,
10101 const char *body)
10102{
10103 const char *p;
10104
10105 /* The body string takes one of two forms. For object-like macro
10106 definitions, it should be:
10107
10108 <macro name> " " <definition>
10109
10110 For function-like macro definitions, it should be:
10111
10112 <macro name> "() " <definition>
10113 or
10114 <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
10115
10116 Spaces may appear only where explicitly indicated, and in the
10117 <definition>.
10118
10119 The Dwarf 2 spec says that an object-like macro's name is always
10120 followed by a space, but versions of GCC around March 2002 omit
10121 the space when the macro's definition is the empty string.
10122
10123 The Dwarf 2 spec says that there should be no spaces between the
10124 formal arguments in a function-like macro's formal argument list,
10125 but versions of GCC around March 2002 include spaces after the
10126 commas. */
10127
10128
10129 /* Find the extent of the macro name. The macro name is terminated
10130 by either a space or null character (for an object-like macro) or
10131 an opening paren (for a function-like macro). */
10132 for (p = body; *p; p++)
10133 if (*p == ' ' || *p == '(')
10134 break;
10135
10136 if (*p == ' ' || *p == '\0')
10137 {
10138 /* It's an object-like macro. */
10139 int name_len = p - body;
10140 char *name = copy_string (body, name_len);
10141 const char *replacement;
10142
10143 if (*p == ' ')
10144 replacement = body + name_len + 1;
10145 else
10146 {
4d3c2250 10147 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
10148 replacement = body + name_len;
10149 }
10150
10151 macro_define_object (file, line, name, replacement);
10152
10153 xfree (name);
10154 }
10155 else if (*p == '(')
10156 {
10157 /* It's a function-like macro. */
10158 char *name = copy_string (body, p - body);
10159 int argc = 0;
10160 int argv_size = 1;
10161 char **argv = xmalloc (argv_size * sizeof (*argv));
10162
10163 p++;
10164
10165 p = consume_improper_spaces (p, body);
10166
10167 /* Parse the formal argument list. */
10168 while (*p && *p != ')')
10169 {
10170 /* Find the extent of the current argument name. */
10171 const char *arg_start = p;
10172
10173 while (*p && *p != ',' && *p != ')' && *p != ' ')
10174 p++;
10175
10176 if (! *p || p == arg_start)
4d3c2250 10177 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
10178 else
10179 {
10180 /* Make sure argv has room for the new argument. */
10181 if (argc >= argv_size)
10182 {
10183 argv_size *= 2;
10184 argv = xrealloc (argv, argv_size * sizeof (*argv));
10185 }
10186
10187 argv[argc++] = copy_string (arg_start, p - arg_start);
10188 }
10189
10190 p = consume_improper_spaces (p, body);
10191
10192 /* Consume the comma, if present. */
10193 if (*p == ',')
10194 {
10195 p++;
10196
10197 p = consume_improper_spaces (p, body);
10198 }
10199 }
10200
10201 if (*p == ')')
10202 {
10203 p++;
10204
10205 if (*p == ' ')
10206 /* Perfectly formed definition, no complaints. */
10207 macro_define_function (file, line, name,
10208 argc, (const char **) argv,
10209 p + 1);
10210 else if (*p == '\0')
10211 {
10212 /* Complain, but do define it. */
4d3c2250 10213 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
10214 macro_define_function (file, line, name,
10215 argc, (const char **) argv,
10216 p);
10217 }
10218 else
10219 /* Just complain. */
4d3c2250 10220 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
10221 }
10222 else
10223 /* Just complain. */
4d3c2250 10224 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
10225
10226 xfree (name);
10227 {
10228 int i;
10229
10230 for (i = 0; i < argc; i++)
10231 xfree (argv[i]);
10232 }
10233 xfree (argv);
10234 }
10235 else
4d3c2250 10236 dwarf2_macro_malformed_definition_complaint (body);
2e276125
JB
10237}
10238
10239
10240static void
10241dwarf_decode_macros (struct line_header *lh, unsigned int offset,
10242 char *comp_dir, bfd *abfd,
e7c27a73 10243 struct dwarf2_cu *cu)
2e276125 10244{
fe1b8b76 10245 gdb_byte *mac_ptr, *mac_end;
2e276125 10246 struct macro_source_file *current_file = 0;
757a13d0
JK
10247 enum dwarf_macinfo_record_type macinfo_type;
10248 int at_commandline;
2e276125 10249
dce234bc 10250 if (dwarf2_per_objfile->macinfo.buffer == NULL)
2e276125 10251 {
e2e0b3e5 10252 complaint (&symfile_complaints, _("missing .debug_macinfo section"));
2e276125
JB
10253 return;
10254 }
10255
757a13d0
JK
10256 /* First pass: Find the name of the base filename.
10257 This filename is needed in order to process all macros whose definition
10258 (or undefinition) comes from the command line. These macros are defined
10259 before the first DW_MACINFO_start_file entry, and yet still need to be
10260 associated to the base file.
10261
10262 To determine the base file name, we scan the macro definitions until we
10263 reach the first DW_MACINFO_start_file entry. We then initialize
10264 CURRENT_FILE accordingly so that any macro definition found before the
10265 first DW_MACINFO_start_file can still be associated to the base file. */
10266
dce234bc
PP
10267 mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
10268 mac_end = dwarf2_per_objfile->macinfo.buffer
10269 + dwarf2_per_objfile->macinfo.size;
2e276125 10270
757a13d0 10271 do
2e276125 10272 {
2e276125
JB
10273 /* Do we at least have room for a macinfo type byte? */
10274 if (mac_ptr >= mac_end)
10275 {
757a13d0
JK
10276 /* Complaint is printed during the second pass as GDB will probably
10277 stop the first pass earlier upon finding DW_MACINFO_start_file. */
10278 break;
2e276125
JB
10279 }
10280
10281 macinfo_type = read_1_byte (abfd, mac_ptr);
10282 mac_ptr++;
10283
10284 switch (macinfo_type)
10285 {
10286 /* A zero macinfo type indicates the end of the macro
10287 information. */
10288 case 0:
757a13d0
JK
10289 break;
10290
10291 case DW_MACINFO_define:
10292 case DW_MACINFO_undef:
10293 /* Only skip the data by MAC_PTR. */
10294 {
10295 unsigned int bytes_read;
10296
10297 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
10298 mac_ptr += bytes_read;
10299 read_string (abfd, mac_ptr, &bytes_read);
10300 mac_ptr += bytes_read;
10301 }
10302 break;
10303
10304 case DW_MACINFO_start_file:
10305 {
10306 unsigned int bytes_read;
10307 int line, file;
10308
10309 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
10310 mac_ptr += bytes_read;
10311 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
10312 mac_ptr += bytes_read;
10313
10314 current_file = macro_start_file (file, line, current_file, comp_dir,
10315 lh, cu->objfile);
10316 }
10317 break;
10318
10319 case DW_MACINFO_end_file:
10320 /* No data to skip by MAC_PTR. */
10321 break;
10322
10323 case DW_MACINFO_vendor_ext:
10324 /* Only skip the data by MAC_PTR. */
10325 {
10326 unsigned int bytes_read;
10327
10328 read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
10329 mac_ptr += bytes_read;
10330 read_string (abfd, mac_ptr, &bytes_read);
10331 mac_ptr += bytes_read;
10332 }
10333 break;
10334
10335 default:
10336 break;
10337 }
10338 } while (macinfo_type != 0 && current_file == NULL);
10339
10340 /* Second pass: Process all entries.
10341
10342 Use the AT_COMMAND_LINE flag to determine whether we are still processing
10343 command-line macro definitions/undefinitions. This flag is unset when we
10344 reach the first DW_MACINFO_start_file entry. */
10345
dce234bc 10346 mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
757a13d0
JK
10347
10348 /* Determines if GDB is still before first DW_MACINFO_start_file. If true
10349 GDB is still reading the definitions from command line. First
10350 DW_MACINFO_start_file will need to be ignored as it was already executed
10351 to create CURRENT_FILE for the main source holding also the command line
10352 definitions. On first met DW_MACINFO_start_file this flag is reset to
10353 normally execute all the remaining DW_MACINFO_start_file macinfos. */
10354
10355 at_commandline = 1;
10356
10357 do
10358 {
10359 /* Do we at least have room for a macinfo type byte? */
10360 if (mac_ptr >= mac_end)
10361 {
10362 dwarf2_macros_too_long_complaint ();
10363 break;
10364 }
10365
10366 macinfo_type = read_1_byte (abfd, mac_ptr);
10367 mac_ptr++;
10368
10369 switch (macinfo_type)
10370 {
10371 /* A zero macinfo type indicates the end of the macro
10372 information. */
10373 case 0:
10374 break;
2e276125
JB
10375
10376 case DW_MACINFO_define:
10377 case DW_MACINFO_undef:
10378 {
891d2f0b 10379 unsigned int bytes_read;
2e276125
JB
10380 int line;
10381 char *body;
10382
10383 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
10384 mac_ptr += bytes_read;
10385 body = read_string (abfd, mac_ptr, &bytes_read);
10386 mac_ptr += bytes_read;
10387
10388 if (! current_file)
757a13d0
JK
10389 {
10390 /* DWARF violation as no main source is present. */
10391 complaint (&symfile_complaints,
10392 _("debug info with no main source gives macro %s "
10393 "on line %d: %s"),
10394 macinfo_type ==
10395 DW_MACINFO_define ? _("definition") : macinfo_type ==
10396 DW_MACINFO_undef ? _("undefinition") :
10397 "something-or-other", line, body);
10398 break;
10399 }
10400 if ((line == 0 && !at_commandline) || (line != 0 && at_commandline))
4d3c2250 10401 complaint (&symfile_complaints,
757a13d0
JK
10402 _("debug info gives %s macro %s with %s line %d: %s"),
10403 at_commandline ? _("command-line") : _("in-file"),
4d3c2250 10404 macinfo_type ==
757a13d0
JK
10405 DW_MACINFO_define ? _("definition") : macinfo_type ==
10406 DW_MACINFO_undef ? _("undefinition") :
10407 "something-or-other",
10408 line == 0 ? _("zero") : _("non-zero"), line, body);
10409
10410 if (macinfo_type == DW_MACINFO_define)
10411 parse_macro_definition (current_file, line, body);
10412 else if (macinfo_type == DW_MACINFO_undef)
10413 macro_undef (current_file, line, body);
2e276125
JB
10414 }
10415 break;
10416
10417 case DW_MACINFO_start_file:
10418 {
891d2f0b 10419 unsigned int bytes_read;
2e276125
JB
10420 int line, file;
10421
10422 line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
10423 mac_ptr += bytes_read;
10424 file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
10425 mac_ptr += bytes_read;
10426
757a13d0
JK
10427 if ((line == 0 && !at_commandline) || (line != 0 && at_commandline))
10428 complaint (&symfile_complaints,
10429 _("debug info gives source %d included "
10430 "from %s at %s line %d"),
10431 file, at_commandline ? _("command-line") : _("file"),
10432 line == 0 ? _("zero") : _("non-zero"), line);
10433
10434 if (at_commandline)
10435 {
10436 /* This DW_MACINFO_start_file was executed in the pass one. */
10437 at_commandline = 0;
10438 }
10439 else
10440 current_file = macro_start_file (file, line,
10441 current_file, comp_dir,
10442 lh, cu->objfile);
2e276125
JB
10443 }
10444 break;
10445
10446 case DW_MACINFO_end_file:
10447 if (! current_file)
4d3c2250 10448 complaint (&symfile_complaints,
e2e0b3e5 10449 _("macro debug info has an unmatched `close_file' directive"));
2e276125
JB
10450 else
10451 {
10452 current_file = current_file->included_by;
10453 if (! current_file)
10454 {
10455 enum dwarf_macinfo_record_type next_type;
10456
10457 /* GCC circa March 2002 doesn't produce the zero
10458 type byte marking the end of the compilation
10459 unit. Complain if it's not there, but exit no
10460 matter what. */
10461
10462 /* Do we at least have room for a macinfo type byte? */
10463 if (mac_ptr >= mac_end)
10464 {
4d3c2250 10465 dwarf2_macros_too_long_complaint ();
2e276125
JB
10466 return;
10467 }
10468
10469 /* We don't increment mac_ptr here, so this is just
10470 a look-ahead. */
10471 next_type = read_1_byte (abfd, mac_ptr);
10472 if (next_type != 0)
4d3c2250 10473 complaint (&symfile_complaints,
e2e0b3e5 10474 _("no terminating 0-type entry for macros in `.debug_macinfo' section"));
2e276125
JB
10475
10476 return;
10477 }
10478 }
10479 break;
10480
10481 case DW_MACINFO_vendor_ext:
10482 {
891d2f0b 10483 unsigned int bytes_read;
2e276125
JB
10484 int constant;
10485 char *string;
10486
10487 constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
10488 mac_ptr += bytes_read;
10489 string = read_string (abfd, mac_ptr, &bytes_read);
10490 mac_ptr += bytes_read;
10491
10492 /* We don't recognize any vendor extensions. */
10493 }
10494 break;
10495 }
757a13d0 10496 } while (macinfo_type != 0);
2e276125 10497}
8e19ed76
PS
10498
10499/* Check if the attribute's form is a DW_FORM_block*
10500 if so return true else false. */
10501static int
10502attr_form_is_block (struct attribute *attr)
10503{
10504 return (attr == NULL ? 0 :
10505 attr->form == DW_FORM_block1
10506 || attr->form == DW_FORM_block2
10507 || attr->form == DW_FORM_block4
10508 || attr->form == DW_FORM_block);
10509}
4c2df51b 10510
c6a0999f
JB
10511/* Return non-zero if ATTR's value is a section offset --- classes
10512 lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
10513 You may use DW_UNSND (attr) to retrieve such offsets.
10514
10515 Section 7.5.4, "Attribute Encodings", explains that no attribute
10516 may have a value that belongs to more than one of these classes; it
10517 would be ambiguous if we did, because we use the same forms for all
10518 of them. */
3690dd37
JB
10519static int
10520attr_form_is_section_offset (struct attribute *attr)
10521{
10522 return (attr->form == DW_FORM_data4
10523 || attr->form == DW_FORM_data8);
10524}
10525
10526
10527/* Return non-zero if ATTR's value falls in the 'constant' class, or
10528 zero otherwise. When this function returns true, you can apply
10529 dwarf2_get_attr_constant_value to it.
10530
10531 However, note that for some attributes you must check
10532 attr_form_is_section_offset before using this test. DW_FORM_data4
10533 and DW_FORM_data8 are members of both the constant class, and of
10534 the classes that contain offsets into other debug sections
10535 (lineptr, loclistptr, macptr or rangelistptr). The DWARF spec says
10536 that, if an attribute's can be either a constant or one of the
10537 section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
10538 taken as section offsets, not constants. */
10539static int
10540attr_form_is_constant (struct attribute *attr)
10541{
10542 switch (attr->form)
10543 {
10544 case DW_FORM_sdata:
10545 case DW_FORM_udata:
10546 case DW_FORM_data1:
10547 case DW_FORM_data2:
10548 case DW_FORM_data4:
10549 case DW_FORM_data8:
10550 return 1;
10551 default:
10552 return 0;
10553 }
10554}
10555
4c2df51b
DJ
10556static void
10557dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
e7c27a73 10558 struct dwarf2_cu *cu)
4c2df51b 10559{
3690dd37 10560 if (attr_form_is_section_offset (attr)
99bcc461
DJ
10561 /* ".debug_loc" may not exist at all, or the offset may be outside
10562 the section. If so, fall through to the complaint in the
10563 other branch. */
dce234bc 10564 && DW_UNSND (attr) < dwarf2_per_objfile->loc.size)
4c2df51b 10565 {
0d53c4c4 10566 struct dwarf2_loclist_baton *baton;
4c2df51b 10567
4a146b47 10568 baton = obstack_alloc (&cu->objfile->objfile_obstack,
0d53c4c4 10569 sizeof (struct dwarf2_loclist_baton));
ae0d2f24
UW
10570 baton->per_cu = cu->per_cu;
10571 gdb_assert (baton->per_cu);
4c2df51b 10572
0d53c4c4
DJ
10573 /* We don't know how long the location list is, but make sure we
10574 don't run off the edge of the section. */
dce234bc
PP
10575 baton->size = dwarf2_per_objfile->loc.size - DW_UNSND (attr);
10576 baton->data = dwarf2_per_objfile->loc.buffer + DW_UNSND (attr);
d00adf39
DE
10577 baton->base_address = cu->base_address;
10578 if (cu->base_known == 0)
0d53c4c4 10579 complaint (&symfile_complaints,
e2e0b3e5 10580 _("Location list used without specifying the CU base address."));
4c2df51b 10581
768a979c 10582 SYMBOL_COMPUTED_OPS (sym) = &dwarf2_loclist_funcs;
0d53c4c4
DJ
10583 SYMBOL_LOCATION_BATON (sym) = baton;
10584 }
10585 else
10586 {
10587 struct dwarf2_locexpr_baton *baton;
10588
4a146b47 10589 baton = obstack_alloc (&cu->objfile->objfile_obstack,
0d53c4c4 10590 sizeof (struct dwarf2_locexpr_baton));
ae0d2f24
UW
10591 baton->per_cu = cu->per_cu;
10592 gdb_assert (baton->per_cu);
0d53c4c4
DJ
10593
10594 if (attr_form_is_block (attr))
10595 {
10596 /* Note that we're just copying the block's data pointer
10597 here, not the actual data. We're still pointing into the
6502dd73
DJ
10598 info_buffer for SYM's objfile; right now we never release
10599 that buffer, but when we do clean up properly this may
10600 need to change. */
0d53c4c4
DJ
10601 baton->size = DW_BLOCK (attr)->size;
10602 baton->data = DW_BLOCK (attr)->data;
10603 }
10604 else
10605 {
10606 dwarf2_invalid_attrib_class_complaint ("location description",
10607 SYMBOL_NATURAL_NAME (sym));
10608 baton->size = 0;
10609 baton->data = NULL;
10610 }
10611
768a979c 10612 SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs;
0d53c4c4
DJ
10613 SYMBOL_LOCATION_BATON (sym) = baton;
10614 }
4c2df51b 10615}
6502dd73 10616
ae0d2f24
UW
10617/* Return the OBJFILE associated with the compilation unit CU. */
10618
10619struct objfile *
10620dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
10621{
10622 struct objfile *objfile = per_cu->psymtab->objfile;
10623
10624 /* Return the master objfile, so that we can report and look up the
10625 correct file containing this variable. */
10626 if (objfile->separate_debug_objfile_backlink)
10627 objfile = objfile->separate_debug_objfile_backlink;
10628
10629 return objfile;
10630}
10631
10632/* Return the address size given in the compilation unit header for CU. */
10633
10634CORE_ADDR
10635dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
10636{
10637 if (per_cu->cu)
10638 return per_cu->cu->header.addr_size;
10639 else
10640 {
10641 /* If the CU is not currently read in, we re-read its header. */
10642 struct objfile *objfile = per_cu->psymtab->objfile;
10643 struct dwarf2_per_objfile *per_objfile
10644 = objfile_data (objfile, dwarf2_objfile_data_key);
dce234bc 10645 gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
ae0d2f24
UW
10646
10647 struct comp_unit_head cu_header;
10648 memset (&cu_header, 0, sizeof cu_header);
10649 read_comp_unit_head (&cu_header, info_ptr, objfile->obfd);
10650 return cu_header.addr_size;
10651 }
10652}
10653
ae038cb0 10654/* Locate the compilation unit from CU's objfile which contains the
10b3939b 10655 DIE at OFFSET. Raises an error on failure. */
ae038cb0
DJ
10656
10657static struct dwarf2_per_cu_data *
c764a876 10658dwarf2_find_containing_comp_unit (unsigned int offset,
ae038cb0
DJ
10659 struct objfile *objfile)
10660{
10661 struct dwarf2_per_cu_data *this_cu;
10662 int low, high;
10663
ae038cb0
DJ
10664 low = 0;
10665 high = dwarf2_per_objfile->n_comp_units - 1;
10666 while (high > low)
10667 {
10668 int mid = low + (high - low) / 2;
10669 if (dwarf2_per_objfile->all_comp_units[mid]->offset >= offset)
10670 high = mid;
10671 else
10672 low = mid + 1;
10673 }
10674 gdb_assert (low == high);
10675 if (dwarf2_per_objfile->all_comp_units[low]->offset > offset)
10676 {
10b3939b 10677 if (low == 0)
8a3fe4f8
AC
10678 error (_("Dwarf Error: could not find partial DIE containing "
10679 "offset 0x%lx [in module %s]"),
10b3939b
DJ
10680 (long) offset, bfd_get_filename (objfile->obfd));
10681
ae038cb0
DJ
10682 gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset <= offset);
10683 return dwarf2_per_objfile->all_comp_units[low-1];
10684 }
10685 else
10686 {
10687 this_cu = dwarf2_per_objfile->all_comp_units[low];
10688 if (low == dwarf2_per_objfile->n_comp_units - 1
10689 && offset >= this_cu->offset + this_cu->length)
c764a876 10690 error (_("invalid dwarf2 offset %u"), offset);
ae038cb0
DJ
10691 gdb_assert (offset < this_cu->offset + this_cu->length);
10692 return this_cu;
10693 }
10694}
10695
10b3939b
DJ
10696/* Locate the compilation unit from OBJFILE which is located at exactly
10697 OFFSET. Raises an error on failure. */
10698
ae038cb0 10699static struct dwarf2_per_cu_data *
c764a876 10700dwarf2_find_comp_unit (unsigned int offset, struct objfile *objfile)
ae038cb0
DJ
10701{
10702 struct dwarf2_per_cu_data *this_cu;
10703 this_cu = dwarf2_find_containing_comp_unit (offset, objfile);
10704 if (this_cu->offset != offset)
c764a876 10705 error (_("no compilation unit with offset %u."), offset);
ae038cb0
DJ
10706 return this_cu;
10707}
10708
10709/* Release one cached compilation unit, CU. We unlink it from the tree
10710 of compilation units, but we don't remove it from the read_in_chain;
10711 the caller is responsible for that. */
10712
10713static void
10714free_one_comp_unit (void *data)
10715{
10716 struct dwarf2_cu *cu = data;
10717
10718 if (cu->per_cu != NULL)
10719 cu->per_cu->cu = NULL;
10720 cu->per_cu = NULL;
10721
10722 obstack_free (&cu->comp_unit_obstack, NULL);
10723
10724 xfree (cu);
10725}
10726
72bf9492 10727/* This cleanup function is passed the address of a dwarf2_cu on the stack
ae038cb0
DJ
10728 when we're finished with it. We can't free the pointer itself, but be
10729 sure to unlink it from the cache. Also release any associated storage
10730 and perform cache maintenance.
72bf9492
DJ
10731
10732 Only used during partial symbol parsing. */
10733
10734static void
10735free_stack_comp_unit (void *data)
10736{
10737 struct dwarf2_cu *cu = data;
10738
10739 obstack_free (&cu->comp_unit_obstack, NULL);
10740 cu->partial_dies = NULL;
ae038cb0
DJ
10741
10742 if (cu->per_cu != NULL)
10743 {
10744 /* This compilation unit is on the stack in our caller, so we
10745 should not xfree it. Just unlink it. */
10746 cu->per_cu->cu = NULL;
10747 cu->per_cu = NULL;
10748
10749 /* If we had a per-cu pointer, then we may have other compilation
10750 units loaded, so age them now. */
10751 age_cached_comp_units ();
10752 }
10753}
10754
10755/* Free all cached compilation units. */
10756
10757static void
10758free_cached_comp_units (void *data)
10759{
10760 struct dwarf2_per_cu_data *per_cu, **last_chain;
10761
10762 per_cu = dwarf2_per_objfile->read_in_chain;
10763 last_chain = &dwarf2_per_objfile->read_in_chain;
10764 while (per_cu != NULL)
10765 {
10766 struct dwarf2_per_cu_data *next_cu;
10767
10768 next_cu = per_cu->cu->read_in_chain;
10769
10770 free_one_comp_unit (per_cu->cu);
10771 *last_chain = next_cu;
10772
10773 per_cu = next_cu;
10774 }
10775}
10776
10777/* Increase the age counter on each cached compilation unit, and free
10778 any that are too old. */
10779
10780static void
10781age_cached_comp_units (void)
10782{
10783 struct dwarf2_per_cu_data *per_cu, **last_chain;
10784
10785 dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
10786 per_cu = dwarf2_per_objfile->read_in_chain;
10787 while (per_cu != NULL)
10788 {
10789 per_cu->cu->last_used ++;
10790 if (per_cu->cu->last_used <= dwarf2_max_cache_age)
10791 dwarf2_mark (per_cu->cu);
10792 per_cu = per_cu->cu->read_in_chain;
10793 }
10794
10795 per_cu = dwarf2_per_objfile->read_in_chain;
10796 last_chain = &dwarf2_per_objfile->read_in_chain;
10797 while (per_cu != NULL)
10798 {
10799 struct dwarf2_per_cu_data *next_cu;
10800
10801 next_cu = per_cu->cu->read_in_chain;
10802
10803 if (!per_cu->cu->mark)
10804 {
10805 free_one_comp_unit (per_cu->cu);
10806 *last_chain = next_cu;
10807 }
10808 else
10809 last_chain = &per_cu->cu->read_in_chain;
10810
10811 per_cu = next_cu;
10812 }
10813}
10814
10815/* Remove a single compilation unit from the cache. */
10816
10817static void
10818free_one_cached_comp_unit (void *target_cu)
10819{
10820 struct dwarf2_per_cu_data *per_cu, **last_chain;
10821
10822 per_cu = dwarf2_per_objfile->read_in_chain;
10823 last_chain = &dwarf2_per_objfile->read_in_chain;
10824 while (per_cu != NULL)
10825 {
10826 struct dwarf2_per_cu_data *next_cu;
10827
10828 next_cu = per_cu->cu->read_in_chain;
10829
10830 if (per_cu->cu == target_cu)
10831 {
10832 free_one_comp_unit (per_cu->cu);
10833 *last_chain = next_cu;
10834 break;
10835 }
10836 else
10837 last_chain = &per_cu->cu->read_in_chain;
10838
10839 per_cu = next_cu;
10840 }
10841}
10842
fe3e1990
DJ
10843/* Release all extra memory associated with OBJFILE. */
10844
10845void
10846dwarf2_free_objfile (struct objfile *objfile)
10847{
10848 dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
10849
10850 if (dwarf2_per_objfile == NULL)
10851 return;
10852
10853 /* Cached DIE trees use xmalloc and the comp_unit_obstack. */
10854 free_cached_comp_units (NULL);
10855
10856 /* Everything else should be on the objfile obstack. */
10857}
10858
1c379e20
DJ
10859/* A pair of DIE offset and GDB type pointer. We store these
10860 in a hash table separate from the DIEs, and preserve them
10861 when the DIEs are flushed out of cache. */
10862
10863struct dwarf2_offset_and_type
10864{
10865 unsigned int offset;
10866 struct type *type;
10867};
10868
10869/* Hash function for a dwarf2_offset_and_type. */
10870
10871static hashval_t
10872offset_and_type_hash (const void *item)
10873{
10874 const struct dwarf2_offset_and_type *ofs = item;
10875 return ofs->offset;
10876}
10877
10878/* Equality function for a dwarf2_offset_and_type. */
10879
10880static int
10881offset_and_type_eq (const void *item_lhs, const void *item_rhs)
10882{
10883 const struct dwarf2_offset_and_type *ofs_lhs = item_lhs;
10884 const struct dwarf2_offset_and_type *ofs_rhs = item_rhs;
10885 return ofs_lhs->offset == ofs_rhs->offset;
10886}
10887
10888/* Set the type associated with DIE to TYPE. Save it in CU's hash
f792889a 10889 table if necessary. For convenience, return TYPE. */
1c379e20 10890
f792889a 10891static struct type *
1c379e20
DJ
10892set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
10893{
10894 struct dwarf2_offset_and_type **slot, ofs;
10895
f792889a
DJ
10896 if (cu->type_hash == NULL)
10897 {
10898 gdb_assert (cu->per_cu != NULL);
10899 cu->per_cu->type_hash
10900 = htab_create_alloc_ex (cu->header.length / 24,
10901 offset_and_type_hash,
10902 offset_and_type_eq,
10903 NULL,
10904 &cu->objfile->objfile_obstack,
10905 hashtab_obstack_allocate,
10906 dummy_obstack_deallocate);
10907 cu->type_hash = cu->per_cu->type_hash;
10908 }
1c379e20
DJ
10909
10910 ofs.offset = die->offset;
10911 ofs.type = type;
10912 slot = (struct dwarf2_offset_and_type **)
f792889a 10913 htab_find_slot_with_hash (cu->type_hash, &ofs, ofs.offset, INSERT);
1c379e20
DJ
10914 *slot = obstack_alloc (&cu->objfile->objfile_obstack, sizeof (**slot));
10915 **slot = ofs;
f792889a 10916 return type;
1c379e20
DJ
10917}
10918
f792889a
DJ
10919/* Find the type for DIE in CU's type_hash, or return NULL if DIE does
10920 not have a saved type. */
1c379e20
DJ
10921
10922static struct type *
f792889a 10923get_die_type (struct die_info *die, struct dwarf2_cu *cu)
1c379e20
DJ
10924{
10925 struct dwarf2_offset_and_type *slot, ofs;
f792889a
DJ
10926 htab_t type_hash = cu->type_hash;
10927
10928 if (type_hash == NULL)
10929 return NULL;
1c379e20
DJ
10930
10931 ofs.offset = die->offset;
10932 slot = htab_find_with_hash (type_hash, &ofs, ofs.offset);
10933 if (slot)
10934 return slot->type;
10935 else
10936 return NULL;
10937}
10938
10b3939b
DJ
10939/* Add a dependence relationship from CU to REF_PER_CU. */
10940
10941static void
10942dwarf2_add_dependence (struct dwarf2_cu *cu,
10943 struct dwarf2_per_cu_data *ref_per_cu)
10944{
10945 void **slot;
10946
10947 if (cu->dependencies == NULL)
10948 cu->dependencies
10949 = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
10950 NULL, &cu->comp_unit_obstack,
10951 hashtab_obstack_allocate,
10952 dummy_obstack_deallocate);
10953
10954 slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
10955 if (*slot == NULL)
10956 *slot = ref_per_cu;
10957}
1c379e20 10958
f504f079
DE
10959/* Subroutine of dwarf2_mark to pass to htab_traverse.
10960 Set the mark field in every compilation unit in the
ae038cb0
DJ
10961 cache that we must keep because we are keeping CU. */
10962
10b3939b
DJ
10963static int
10964dwarf2_mark_helper (void **slot, void *data)
10965{
10966 struct dwarf2_per_cu_data *per_cu;
10967
10968 per_cu = (struct dwarf2_per_cu_data *) *slot;
10969 if (per_cu->cu->mark)
10970 return 1;
10971 per_cu->cu->mark = 1;
10972
10973 if (per_cu->cu->dependencies != NULL)
10974 htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
10975
10976 return 1;
10977}
10978
f504f079
DE
10979/* Set the mark field in CU and in every other compilation unit in the
10980 cache that we must keep because we are keeping CU. */
10981
ae038cb0
DJ
10982static void
10983dwarf2_mark (struct dwarf2_cu *cu)
10984{
10985 if (cu->mark)
10986 return;
10987 cu->mark = 1;
10b3939b
DJ
10988 if (cu->dependencies != NULL)
10989 htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
ae038cb0
DJ
10990}
10991
10992static void
10993dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
10994{
10995 while (per_cu)
10996 {
10997 per_cu->cu->mark = 0;
10998 per_cu = per_cu->cu->read_in_chain;
10999 }
72bf9492
DJ
11000}
11001
72bf9492
DJ
11002/* Trivial hash function for partial_die_info: the hash value of a DIE
11003 is its offset in .debug_info for this objfile. */
11004
11005static hashval_t
11006partial_die_hash (const void *item)
11007{
11008 const struct partial_die_info *part_die = item;
11009 return part_die->offset;
11010}
11011
11012/* Trivial comparison function for partial_die_info structures: two DIEs
11013 are equal if they have the same offset. */
11014
11015static int
11016partial_die_eq (const void *item_lhs, const void *item_rhs)
11017{
11018 const struct partial_die_info *part_die_lhs = item_lhs;
11019 const struct partial_die_info *part_die_rhs = item_rhs;
11020 return part_die_lhs->offset == part_die_rhs->offset;
11021}
11022
ae038cb0
DJ
11023static struct cmd_list_element *set_dwarf2_cmdlist;
11024static struct cmd_list_element *show_dwarf2_cmdlist;
11025
11026static void
11027set_dwarf2_cmd (char *args, int from_tty)
11028{
11029 help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
11030}
11031
11032static void
11033show_dwarf2_cmd (char *args, int from_tty)
11034{
11035 cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
11036}
11037
dce234bc
PP
11038/* If section described by INFO was mmapped, munmap it now. */
11039
11040static void
11041munmap_section_buffer (struct dwarf2_section_info *info)
11042{
11043 if (info->was_mmapped)
11044 {
11045#ifdef HAVE_MMAP
11046 intptr_t begin = (intptr_t) info->buffer;
11047 intptr_t map_begin = begin & ~(pagesize - 1);
11048 size_t map_length = info->size + begin - map_begin;
11049 gdb_assert (munmap ((void *) map_begin, map_length) == 0);
11050#else
11051 /* Without HAVE_MMAP, we should never be here to begin with. */
11052 gdb_assert (0);
11053#endif
11054 }
11055}
11056
11057/* munmap debug sections for OBJFILE, if necessary. */
11058
11059static void
11060dwarf2_per_objfile_cleanup (struct objfile *objfile, void *d)
11061{
11062 struct dwarf2_per_objfile *data = d;
11063 munmap_section_buffer (&data->info);
11064 munmap_section_buffer (&data->abbrev);
11065 munmap_section_buffer (&data->line);
11066 munmap_section_buffer (&data->str);
11067 munmap_section_buffer (&data->macinfo);
11068 munmap_section_buffer (&data->ranges);
11069 munmap_section_buffer (&data->loc);
11070 munmap_section_buffer (&data->frame);
11071 munmap_section_buffer (&data->eh_frame);
11072}
11073
6502dd73
DJ
11074void _initialize_dwarf2_read (void);
11075
11076void
11077_initialize_dwarf2_read (void)
11078{
dce234bc
PP
11079 dwarf2_objfile_data_key
11080 = register_objfile_data_with_cleanup (dwarf2_per_objfile_cleanup);
ae038cb0 11081
1bedd215
AC
11082 add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
11083Set DWARF 2 specific variables.\n\
11084Configure DWARF 2 variables such as the cache size"),
ae038cb0
DJ
11085 &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
11086 0/*allow-unknown*/, &maintenance_set_cmdlist);
11087
1bedd215
AC
11088 add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
11089Show DWARF 2 specific variables\n\
11090Show DWARF 2 variables such as the cache size"),
ae038cb0
DJ
11091 &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
11092 0/*allow-unknown*/, &maintenance_show_cmdlist);
11093
11094 add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
7915a72c
AC
11095 &dwarf2_max_cache_age, _("\
11096Set the upper bound on the age of cached dwarf2 compilation units."), _("\
11097Show the upper bound on the age of cached dwarf2 compilation units."), _("\
11098A higher limit means that cached compilation units will be stored\n\
11099in memory longer, and more total memory will be used. Zero disables\n\
11100caching, which can slow down startup."),
2c5b56ce 11101 NULL,
920d2a44 11102 show_dwarf2_max_cache_age,
2c5b56ce 11103 &set_dwarf2_cmdlist,
ae038cb0 11104 &show_dwarf2_cmdlist);
d97bc12b
DE
11105
11106 add_setshow_zinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
11107Set debugging of the dwarf2 DIE reader."), _("\
11108Show debugging of the dwarf2 DIE reader."), _("\
11109When enabled (non-zero), DIEs are dumped after they are read in.\n\
11110The value is the maximum depth to print."),
11111 NULL,
11112 NULL,
11113 &setdebuglist, &showdebuglist);
6502dd73 11114}
This page took 1.462716 seconds and 4 git commands to generate.