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