OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [gdb/] [dwarf2read.c] - Blame information for rev 363

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.