7febcab6b49525be2f8392b751fcffedae41a111
[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       /* Get physical name.  */
4647       physname = (char *) dwarf2_physname (fieldname, die, cu);
4648
4649       /* The name is already allocated along with this objfile, so we don't
4650          need to duplicate it for the type.  */
4651       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
4652       FIELD_TYPE (*fp) = die_type (die, cu);
4653       FIELD_NAME (*fp) = fieldname;
4654     }
4655   else if (die->tag == DW_TAG_inheritance)
4656     {
4657       /* C++ base class field.  */
4658       attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
4659       if (attr)
4660         {
4661           int byte_offset = 0;
4662
4663           if (attr_form_is_section_offset (attr))
4664             dwarf2_complex_location_expr_complaint ();
4665           else if (attr_form_is_constant (attr))
4666             byte_offset = dwarf2_get_attr_constant_value (attr, 0);
4667           else if (attr_form_is_block (attr))
4668             byte_offset = decode_locdesc (DW_BLOCK (attr), cu);
4669           else
4670             dwarf2_complex_location_expr_complaint ();
4671
4672           SET_FIELD_BITPOS (*fp, byte_offset * bits_per_byte);
4673         }
4674       FIELD_BITSIZE (*fp) = 0;
4675       FIELD_TYPE (*fp) = die_type (die, cu);
4676       FIELD_NAME (*fp) = type_name_no_tag (fp->type);
4677       fip->nbaseclasses++;
4678     }
4679 }
4680
4681 /* Add a typedef defined in the scope of the FIP's class.  */
4682
4683 static void
4684 dwarf2_add_typedef (struct field_info *fip, struct die_info *die,
4685                     struct dwarf2_cu *cu)
4686
4687   struct objfile *objfile = cu->objfile;
4688   struct gdbarch *gdbarch = get_objfile_arch (objfile);
4689   struct typedef_field_list *new_field;
4690   struct attribute *attr;
4691   struct typedef_field *fp;
4692   char *fieldname = "";
4693
4694   /* Allocate a new field list entry and link it in.  */
4695   new_field = xzalloc (sizeof (*new_field));
4696   make_cleanup (xfree, new_field);
4697
4698   gdb_assert (die->tag == DW_TAG_typedef);
4699
4700   fp = &new_field->field;
4701
4702   /* Get name of field.  */
4703   fp->name = dwarf2_name (die, cu);
4704   if (fp->name == NULL)
4705     return;
4706
4707   fp->type = read_type_die (die, cu);
4708
4709   new_field->next = fip->typedef_field_list;
4710   fip->typedef_field_list = new_field;
4711   fip->typedef_field_list_count++;
4712 }
4713
4714 /* Create the vector of fields, and attach it to the type.  */
4715
4716 static void
4717 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
4718                               struct dwarf2_cu *cu)
4719 {
4720   int nfields = fip->nfields;
4721
4722   /* Record the field count, allocate space for the array of fields,
4723      and create blank accessibility bitfields if necessary.  */
4724   TYPE_NFIELDS (type) = nfields;
4725   TYPE_FIELDS (type) = (struct field *)
4726     TYPE_ALLOC (type, sizeof (struct field) * nfields);
4727   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
4728
4729   if (fip->non_public_fields && cu->language != language_ada)
4730     {
4731       ALLOCATE_CPLUS_STRUCT_TYPE (type);
4732
4733       TYPE_FIELD_PRIVATE_BITS (type) =
4734         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
4735       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
4736
4737       TYPE_FIELD_PROTECTED_BITS (type) =
4738         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
4739       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
4740
4741       TYPE_FIELD_IGNORE_BITS (type) =
4742         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
4743       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
4744     }
4745
4746   /* If the type has baseclasses, allocate and clear a bit vector for
4747      TYPE_FIELD_VIRTUAL_BITS.  */
4748   if (fip->nbaseclasses && cu->language != language_ada)
4749     {
4750       int num_bytes = B_BYTES (fip->nbaseclasses);
4751       unsigned char *pointer;
4752
4753       ALLOCATE_CPLUS_STRUCT_TYPE (type);
4754       pointer = TYPE_ALLOC (type, num_bytes);
4755       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
4756       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->nbaseclasses);
4757       TYPE_N_BASECLASSES (type) = fip->nbaseclasses;
4758     }
4759
4760   /* Copy the saved-up fields into the field vector.  Start from the head
4761      of the list, adding to the tail of the field array, so that they end
4762      up in the same order in the array in which they were added to the list.  */
4763   while (nfields-- > 0)
4764     {
4765       struct nextfield *fieldp;
4766
4767       if (fip->fields)
4768         {
4769           fieldp = fip->fields;
4770           fip->fields = fieldp->next;
4771         }
4772       else
4773         {
4774           fieldp = fip->baseclasses;
4775           fip->baseclasses = fieldp->next;
4776         }
4777
4778       TYPE_FIELD (type, nfields) = fieldp->field;
4779       switch (fieldp->accessibility)
4780         {
4781         case DW_ACCESS_private:
4782           if (cu->language != language_ada)
4783             SET_TYPE_FIELD_PRIVATE (type, nfields);
4784           break;
4785
4786         case DW_ACCESS_protected:
4787           if (cu->language != language_ada)
4788             SET_TYPE_FIELD_PROTECTED (type, nfields);
4789           break;
4790
4791         case DW_ACCESS_public:
4792           break;
4793
4794         default:
4795           /* Unknown accessibility.  Complain and treat it as public.  */
4796           {
4797             complaint (&symfile_complaints, _("unsupported accessibility %d"),
4798                        fieldp->accessibility);
4799           }
4800           break;
4801         }
4802       if (nfields < fip->nbaseclasses)
4803         {
4804           switch (fieldp->virtuality)
4805             {
4806             case DW_VIRTUALITY_virtual:
4807             case DW_VIRTUALITY_pure_virtual:
4808               if (cu->language == language_ada)
4809                 error ("unexpected virtuality in component of Ada type");
4810               SET_TYPE_FIELD_VIRTUAL (type, nfields);
4811               break;
4812             }
4813         }
4814     }
4815 }
4816
4817 /* Add a member function to the proper fieldlist.  */
4818
4819 static void
4820 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
4821                       struct type *type, struct dwarf2_cu *cu)
4822 {
4823   struct objfile *objfile = cu->objfile;
4824   struct attribute *attr;
4825   struct fnfieldlist *flp;
4826   int i;
4827   struct fn_field *fnp;
4828   char *fieldname;
4829   char *physname;
4830   struct nextfnfield *new_fnfield;
4831   struct type *this_type;
4832
4833   if (cu->language == language_ada)
4834     error ("unexpected member function in Ada type");
4835
4836   /* Get name of member function.  */
4837   fieldname = dwarf2_name (die, cu);
4838   if (fieldname == NULL)
4839     return;
4840
4841   /* Get the mangled name.  */
4842   physname = (char *) dwarf2_physname (fieldname, die, cu);
4843
4844   /* Look up member function name in fieldlist.  */
4845   for (i = 0; i < fip->nfnfields; i++)
4846     {
4847       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
4848         break;
4849     }
4850
4851   /* Create new list element if necessary.  */
4852   if (i < fip->nfnfields)
4853     flp = &fip->fnfieldlists[i];
4854   else
4855     {
4856       if ((fip->nfnfields % DW_FIELD_ALLOC_CHUNK) == 0)
4857         {
4858           fip->fnfieldlists = (struct fnfieldlist *)
4859             xrealloc (fip->fnfieldlists,
4860                       (fip->nfnfields + DW_FIELD_ALLOC_CHUNK)
4861                       * sizeof (struct fnfieldlist));
4862           if (fip->nfnfields == 0)
4863             make_cleanup (free_current_contents, &fip->fnfieldlists);
4864         }
4865       flp = &fip->fnfieldlists[fip->nfnfields];
4866       flp->name = fieldname;
4867       flp->length = 0;
4868       flp->head = NULL;
4869       fip->nfnfields++;
4870     }
4871
4872   /* Create a new member function field and chain it to the field list
4873      entry. */
4874   new_fnfield = (struct nextfnfield *) xmalloc (sizeof (struct nextfnfield));
4875   make_cleanup (xfree, new_fnfield);
4876   memset (new_fnfield, 0, sizeof (struct nextfnfield));
4877   new_fnfield->next = flp->head;
4878   flp->head = new_fnfield;
4879   flp->length++;
4880
4881   /* Fill in the member function field info.  */
4882   fnp = &new_fnfield->fnfield;
4883   /* The name is already allocated along with this objfile, so we don't
4884      need to duplicate it for the type.  */
4885   fnp->physname = physname ? physname : "";
4886   fnp->type = alloc_type (objfile);
4887   this_type = read_type_die (die, cu);
4888   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
4889     {
4890       int nparams = TYPE_NFIELDS (this_type);
4891
4892       /* TYPE is the domain of this method, and THIS_TYPE is the type
4893            of the method itself (TYPE_CODE_METHOD).  */
4894       smash_to_method_type (fnp->type, type,
4895                             TYPE_TARGET_TYPE (this_type),
4896                             TYPE_FIELDS (this_type),
4897                             TYPE_NFIELDS (this_type),
4898                             TYPE_VARARGS (this_type));
4899
4900       /* Handle static member functions.
4901          Dwarf2 has no clean way to discern C++ static and non-static
4902          member functions. G++ helps GDB by marking the first
4903          parameter for non-static member functions (which is the
4904          this pointer) as artificial. We obtain this information
4905          from read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
4906       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
4907         fnp->voffset = VOFFSET_STATIC;
4908     }
4909   else
4910     complaint (&symfile_complaints, _("member function type missing for '%s'"),
4911                physname);
4912
4913   /* Get fcontext from DW_AT_containing_type if present.  */
4914   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
4915     fnp->fcontext = die_containing_type (die, cu);
4916
4917   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const
4918      and is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
4919
4920   /* Get accessibility.  */
4921   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
4922   if (attr)
4923     {
4924       switch (DW_UNSND (attr))
4925         {
4926         case DW_ACCESS_private:
4927           fnp->is_private = 1;
4928           break;
4929         case DW_ACCESS_protected:
4930           fnp->is_protected = 1;
4931           break;
4932         }
4933     }
4934
4935   /* Check for artificial methods.  */
4936   attr = dwarf2_attr (die, DW_AT_artificial, cu);
4937   if (attr && DW_UNSND (attr) != 0)
4938     fnp->is_artificial = 1;
4939
4940   /* Get index in virtual function table if it is a virtual member
4941      function.  For older versions of GCC, this is an offset in the
4942      appropriate virtual table, as specified by DW_AT_containing_type.
4943      For everyone else, it is an expression to be evaluated relative
4944      to the object address.  */
4945
4946   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
4947   if (attr)
4948     {
4949       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
4950         {
4951           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
4952             {
4953               /* Old-style GCC.  */
4954               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
4955             }
4956           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
4957                    || (DW_BLOCK (attr)->size > 1
4958                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
4959                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
4960             {
4961               struct dwarf_block blk;
4962               int offset;
4963
4964               offset = (DW_BLOCK (attr)->data[0] == DW_OP_deref
4965                         ? 1 : 2);
4966               blk.size = DW_BLOCK (attr)->size - offset;
4967               blk.data = DW_BLOCK (attr)->data + offset;
4968               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
4969               if ((fnp->voffset % cu->header.addr_size) != 0)
4970                 dwarf2_complex_location_expr_complaint ();
4971               else
4972                 fnp->voffset /= cu->header.addr_size;
4973               fnp->voffset += 2;
4974             }
4975           else
4976             dwarf2_complex_location_expr_complaint ();
4977
4978           if (!fnp->fcontext)
4979             fnp->fcontext = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
4980         }
4981       else if (attr_form_is_section_offset (attr))
4982         {
4983           dwarf2_complex_location_expr_complaint ();
4984         }
4985       else
4986         {
4987           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
4988                                                  fieldname);
4989         }
4990     }
4991   else
4992     {
4993       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
4994       if (attr && DW_UNSND (attr))
4995         {
4996           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
4997           complaint (&symfile_complaints,
4998                      _("Member function \"%s\" (offset %d) is virtual but the vtable offset is not specified"),
4999                      fieldname, die->offset);
5000           ALLOCATE_CPLUS_STRUCT_TYPE (type);
5001           TYPE_CPLUS_DYNAMIC (type) = 1;
5002         }
5003     }
5004 }
5005
5006 /* Create the vector of member function fields, and attach it to the type.  */
5007
5008 static void
5009 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
5010                                  struct dwarf2_cu *cu)
5011 {
5012   struct fnfieldlist *flp;
5013   int total_length = 0;
5014   int i;
5015
5016   if (cu->language == language_ada)
5017     error ("unexpected member functions in Ada type");
5018
5019   ALLOCATE_CPLUS_STRUCT_TYPE (type);
5020   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
5021     TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * fip->nfnfields);
5022
5023   for (i = 0, flp = fip->fnfieldlists; i < fip->nfnfields; i++, flp++)
5024     {
5025       struct nextfnfield *nfp = flp->head;
5026       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
5027       int k;
5028
5029       TYPE_FN_FIELDLIST_NAME (type, i) = flp->name;
5030       TYPE_FN_FIELDLIST_LENGTH (type, i) = flp->length;
5031       fn_flp->fn_fields = (struct fn_field *)
5032         TYPE_ALLOC (type, sizeof (struct fn_field) * flp->length);
5033       for (k = flp->length; (k--, nfp); nfp = nfp->next)
5034         fn_flp->fn_fields[k] = nfp->fnfield;
5035
5036       total_length += flp->length;
5037     }
5038
5039   TYPE_NFN_FIELDS (type) = fip->nfnfields;
5040   TYPE_NFN_FIELDS_TOTAL (type) = total_length;
5041 }
5042
5043 /* Returns non-zero if NAME is the name of a vtable member in CU's
5044    language, zero otherwise.  */
5045 static int
5046 is_vtable_name (const char *name, struct dwarf2_cu *cu)
5047 {
5048   static const char vptr[] = "_vptr";
5049   static const char vtable[] = "vtable";
5050
5051   /* Look for the C++ and Java forms of the vtable.  */
5052   if ((cu->language == language_java
5053        && strncmp (name, vtable, sizeof (vtable) - 1) == 0)
5054        || (strncmp (name, vptr, sizeof (vptr) - 1) == 0
5055        && is_cplus_marker (name[sizeof (vptr) - 1])))
5056     return 1;
5057
5058   return 0;
5059 }
5060
5061 /* GCC outputs unnamed structures that are really pointers to member
5062    functions, with the ABI-specified layout.  If TYPE describes
5063    such a structure, smash it into a member function type.
5064
5065    GCC shouldn't do this; it should just output pointer to member DIEs.
5066    This is GCC PR debug/28767.  */
5067
5068 static void
5069 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
5070 {
5071   struct type *pfn_type, *domain_type, *new_type;
5072
5073   /* Check for a structure with no name and two children.  */
5074   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
5075     return;
5076
5077   /* Check for __pfn and __delta members.  */
5078   if (TYPE_FIELD_NAME (type, 0) == NULL
5079       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
5080       || TYPE_FIELD_NAME (type, 1) == NULL
5081       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
5082     return;
5083
5084   /* Find the type of the method.  */
5085   pfn_type = TYPE_FIELD_TYPE (type, 0);
5086   if (pfn_type == NULL
5087       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
5088       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
5089     return;
5090
5091   /* Look for the "this" argument.  */
5092   pfn_type = TYPE_TARGET_TYPE (pfn_type);
5093   if (TYPE_NFIELDS (pfn_type) == 0
5094       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
5095       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
5096     return;
5097
5098   domain_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
5099   new_type = alloc_type (objfile);
5100   smash_to_method_type (new_type, domain_type, TYPE_TARGET_TYPE (pfn_type),
5101                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
5102                         TYPE_VARARGS (pfn_type));
5103   smash_to_methodptr_type (type, new_type);
5104 }
5105
5106 /* Called when we find the DIE that starts a structure or union scope
5107    (definition) to process all dies that define the members of the
5108    structure or union.
5109
5110    NOTE: we need to call struct_type regardless of whether or not the
5111    DIE has an at_name attribute, since it might be an anonymous
5112    structure or union.  This gets the type entered into our set of
5113    user defined types.
5114
5115    However, if the structure is incomplete (an opaque struct/union)
5116    then suppress creating a symbol table entry for it since gdb only
5117    wants to find the one with the complete definition.  Note that if
5118    it is complete, we just call new_symbol, which does it's own
5119    checking about whether the struct/union is anonymous or not (and
5120    suppresses creating a symbol table entry itself).  */
5121
5122 static struct type *
5123 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
5124 {
5125   struct objfile *objfile = cu->objfile;
5126   struct type *type;
5127   struct attribute *attr;
5128   char *name;
5129   struct cleanup *back_to;
5130
5131   /* If the definition of this type lives in .debug_types, read that type.
5132      Don't follow DW_AT_specification though, that will take us back up
5133      the chain and we want to go down.  */
5134   attr = dwarf2_attr_no_follow (die, DW_AT_signature, cu);
5135   if (attr)
5136     {
5137       struct dwarf2_cu *type_cu = cu;
5138       struct die_info *type_die = follow_die_ref_or_sig (die, attr, &type_cu);
5139
5140       /* We could just recurse on read_structure_type, but we need to call
5141          get_die_type to ensure only one type for this DIE is created.
5142          This is important, for example, because for c++ classes we need
5143          TYPE_NAME set which is only done by new_symbol.  Blech.  */
5144       type = read_type_die (type_die, type_cu);
5145       return set_die_type (die, type, cu);
5146     }
5147
5148   back_to = make_cleanup (null_cleanup, 0);
5149
5150   type = alloc_type (objfile);
5151   INIT_CPLUS_SPECIFIC (type);
5152
5153   name = dwarf2_name (die, cu);
5154   if (name != NULL)
5155     {
5156       if (cu->language == language_cplus
5157           || cu->language == language_java)
5158         {
5159           TYPE_TAG_NAME (type) = (char *) dwarf2_full_name (name, die, cu);
5160           if (die->tag == DW_TAG_structure_type
5161               || die->tag == DW_TAG_class_type)
5162             TYPE_NAME (type) = TYPE_TAG_NAME (type);
5163         }
5164       else
5165         {
5166           /* The name is already allocated along with this objfile, so
5167              we don't need to duplicate it for the type.  */
5168           TYPE_TAG_NAME (type) = (char *) name;
5169           if (die->tag == DW_TAG_class_type)
5170             TYPE_NAME (type) = TYPE_TAG_NAME (type);
5171         }
5172     }
5173
5174   if (die->tag == DW_TAG_structure_type)
5175     {
5176       TYPE_CODE (type) = TYPE_CODE_STRUCT;
5177     }
5178   else if (die->tag == DW_TAG_union_type)
5179     {
5180       TYPE_CODE (type) = TYPE_CODE_UNION;
5181     }
5182   else
5183     {
5184       TYPE_CODE (type) = TYPE_CODE_CLASS;
5185     }
5186
5187   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
5188     TYPE_DECLARED_CLASS (type) = 1;
5189
5190   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
5191   if (attr)
5192     {
5193       TYPE_LENGTH (type) = DW_UNSND (attr);
5194     }
5195   else
5196     {
5197       TYPE_LENGTH (type) = 0;
5198     }
5199
5200   TYPE_STUB_SUPPORTED (type) = 1;
5201   if (die_is_declaration (die, cu))
5202     TYPE_STUB (type) = 1;
5203   else if (attr == NULL && die->child == NULL
5204            && producer_is_realview (cu->producer))
5205     /* RealView does not output the required DW_AT_declaration
5206        on incomplete types.  */
5207     TYPE_STUB (type) = 1;
5208
5209   /* We need to add the type field to the die immediately so we don't
5210      infinitely recurse when dealing with pointers to the structure
5211      type within the structure itself. */
5212   set_die_type (die, type, cu);
5213
5214   /* set_die_type should be already done.  */
5215   set_descriptive_type (type, die, cu);
5216
5217   if (die->child != NULL && ! die_is_declaration (die, cu))
5218     {
5219       struct field_info fi;
5220       struct die_info *child_die;
5221
5222       memset (&fi, 0, sizeof (struct field_info));
5223
5224       child_die = die->child;
5225
5226       while (child_die && child_die->tag)
5227         {
5228           if (child_die->tag == DW_TAG_member
5229               || child_die->tag == DW_TAG_variable)
5230             {
5231               /* NOTE: carlton/2002-11-05: A C++ static data member
5232                  should be a DW_TAG_member that is a declaration, but
5233                  all versions of G++ as of this writing (so through at
5234                  least 3.2.1) incorrectly generate DW_TAG_variable
5235                  tags for them instead.  */
5236               dwarf2_add_field (&fi, child_die, cu);
5237             }
5238           else if (child_die->tag == DW_TAG_subprogram)
5239             {
5240               /* C++ member function. */
5241               dwarf2_add_member_fn (&fi, child_die, type, cu);
5242             }
5243           else if (child_die->tag == DW_TAG_inheritance)
5244             {
5245               /* C++ base class field.  */
5246               dwarf2_add_field (&fi, child_die, cu);
5247             }
5248           else if (child_die->tag == DW_TAG_typedef)
5249             dwarf2_add_typedef (&fi, child_die, cu);
5250           child_die = sibling_die (child_die);
5251         }
5252
5253       /* Attach fields and member functions to the type.  */
5254       if (fi.nfields)
5255         dwarf2_attach_fields_to_type (&fi, type, cu);
5256       if (fi.nfnfields)
5257         {
5258           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
5259
5260           /* Get the type which refers to the base class (possibly this
5261              class itself) which contains the vtable pointer for the current
5262              class from the DW_AT_containing_type attribute.  This use of
5263              DW_AT_containing_type is a GNU extension.  */
5264
5265           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
5266             {
5267               struct type *t = die_containing_type (die, cu);
5268
5269               TYPE_VPTR_BASETYPE (type) = t;
5270               if (type == t)
5271                 {
5272                   int i;
5273
5274                   /* Our own class provides vtbl ptr.  */
5275                   for (i = TYPE_NFIELDS (t) - 1;
5276                        i >= TYPE_N_BASECLASSES (t);
5277                        --i)
5278                     {
5279                       char *fieldname = TYPE_FIELD_NAME (t, i);
5280
5281                       if (is_vtable_name (fieldname, cu))
5282                         {
5283                           TYPE_VPTR_FIELDNO (type) = i;
5284                           break;
5285                         }
5286                     }
5287
5288                   /* Complain if virtual function table field not found.  */
5289                   if (i < TYPE_N_BASECLASSES (t))
5290                     complaint (&symfile_complaints,
5291                                _("virtual function table pointer not found when defining class '%s'"),
5292                                TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) :
5293                                "");
5294                 }
5295               else
5296                 {
5297                   TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
5298                 }
5299             }
5300           else if (cu->producer
5301                    && strncmp (cu->producer,
5302                                "IBM(R) XL C/C++ Advanced Edition", 32) == 0)
5303             {
5304               /* The IBM XLC compiler does not provide direct indication
5305                  of the containing type, but the vtable pointer is
5306                  always named __vfp.  */
5307
5308               int i;
5309
5310               for (i = TYPE_NFIELDS (type) - 1;
5311                    i >= TYPE_N_BASECLASSES (type);
5312                    --i)
5313                 {
5314                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
5315                     {
5316                       TYPE_VPTR_FIELDNO (type) = i;
5317                       TYPE_VPTR_BASETYPE (type) = type;
5318                       break;
5319                     }
5320                 }
5321             }
5322         }
5323
5324       /* Copy fi.typedef_field_list linked list elements content into the
5325          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
5326       if (fi.typedef_field_list)
5327         {
5328           int i = fi.typedef_field_list_count;
5329
5330           TYPE_TYPEDEF_FIELD_ARRAY (type)
5331             = TYPE_ALLOC (type, sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * i);
5332           TYPE_TYPEDEF_FIELD_COUNT (type) = i;
5333
5334           /* Reverse the list order to keep the debug info elements order.  */
5335           while (--i >= 0)
5336             {
5337               struct typedef_field *dest, *src;
5338               
5339               dest = &TYPE_TYPEDEF_FIELD (type, i);
5340               src = &fi.typedef_field_list->field;
5341               fi.typedef_field_list = fi.typedef_field_list->next;
5342               *dest = *src;
5343             }
5344         }
5345     }
5346
5347   quirk_gcc_member_function_pointer (type, cu->objfile);
5348
5349   do_cleanups (back_to);
5350   return type;
5351 }
5352
5353 static void
5354 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
5355 {
5356   struct die_info *child_die = die->child;
5357   struct type *this_type;
5358
5359   this_type = get_die_type (die, cu);
5360   if (this_type == NULL)
5361     this_type = read_structure_type (die, cu);
5362
5363   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
5364      snapshots) has been known to create a die giving a declaration
5365      for a class that has, as a child, a die giving a definition for a
5366      nested class.  So we have to process our children even if the
5367      current die is a declaration.  Normally, of course, a declaration
5368      won't have any children at all.  */
5369
5370   while (child_die != NULL && child_die->tag)
5371     {
5372       if (child_die->tag == DW_TAG_member
5373           || child_die->tag == DW_TAG_variable
5374           || child_die->tag == DW_TAG_inheritance)
5375         {
5376           /* Do nothing.  */
5377         }
5378       else
5379         process_die (child_die, cu);
5380
5381       child_die = sibling_die (child_die);
5382     }
5383
5384   /* Do not consider external references.  According to the DWARF standard,
5385      these DIEs are identified by the fact that they have no byte_size
5386      attribute, and a declaration attribute.  */
5387   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
5388       || !die_is_declaration (die, cu))
5389     new_symbol (die, this_type, cu);
5390 }
5391
5392 /* Given a DW_AT_enumeration_type die, set its type.  We do not
5393    complete the type's fields yet, or create any symbols.  */
5394
5395 static struct type *
5396 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
5397 {
5398   struct objfile *objfile = cu->objfile;
5399   struct type *type;
5400   struct attribute *attr;
5401   const char *name;
5402
5403   /* If the definition of this type lives in .debug_types, read that type.
5404      Don't follow DW_AT_specification though, that will take us back up
5405      the chain and we want to go down.  */
5406   attr = dwarf2_attr_no_follow (die, DW_AT_signature, cu);
5407   if (attr)
5408     {
5409       struct dwarf2_cu *type_cu = cu;
5410       struct die_info *type_die = follow_die_ref_or_sig (die, attr, &type_cu);
5411
5412       type = read_type_die (type_die, type_cu);
5413       return set_die_type (die, type, cu);
5414     }
5415
5416   type = alloc_type (objfile);
5417
5418   TYPE_CODE (type) = TYPE_CODE_ENUM;
5419   name = dwarf2_full_name (NULL, die, cu);
5420   if (name != NULL)
5421     TYPE_TAG_NAME (type) = (char *) name;
5422
5423   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
5424   if (attr)
5425     {
5426       TYPE_LENGTH (type) = DW_UNSND (attr);
5427     }
5428   else
5429     {
5430       TYPE_LENGTH (type) = 0;
5431     }
5432
5433   /* The enumeration DIE can be incomplete.  In Ada, any type can be
5434      declared as private in the package spec, and then defined only
5435      inside the package body.  Such types are known as Taft Amendment
5436      Types.  When another package uses such a type, an incomplete DIE
5437      may be generated by the compiler.  */
5438   if (die_is_declaration (die, cu))
5439     TYPE_STUB (type) = 1;
5440
5441   return set_die_type (die, type, cu);
5442 }
5443
5444 /* Given a pointer to a die which begins an enumeration, process all
5445    the dies that define the members of the enumeration, and create the
5446    symbol for the enumeration type.
5447
5448    NOTE: We reverse the order of the element list.  */
5449
5450 static void
5451 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
5452 {
5453   struct die_info *child_die;
5454   struct field *fields;
5455   struct symbol *sym;
5456   int num_fields;
5457   int unsigned_enum = 1;
5458   char *name;
5459   struct type *this_type;
5460
5461   num_fields = 0;
5462   fields = NULL;
5463   this_type = get_die_type (die, cu);
5464   if (this_type == NULL)
5465     this_type = read_enumeration_type (die, cu);
5466   if (die->child != NULL)
5467     {
5468       child_die = die->child;
5469       while (child_die && child_die->tag)
5470         {
5471           if (child_die->tag != DW_TAG_enumerator)
5472             {
5473               process_die (child_die, cu);
5474             }
5475           else
5476             {
5477               name = dwarf2_name (child_die, cu);
5478               if (name)
5479                 {
5480                   sym = new_symbol (child_die, this_type, cu);
5481                   if (SYMBOL_VALUE (sym) < 0)
5482                     unsigned_enum = 0;
5483
5484                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
5485                     {
5486                       fields = (struct field *)
5487                         xrealloc (fields,
5488                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
5489                                   * sizeof (struct field));
5490                     }
5491
5492                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
5493                   FIELD_TYPE (fields[num_fields]) = NULL;
5494                   SET_FIELD_BITPOS (fields[num_fields], SYMBOL_VALUE (sym));
5495                   FIELD_BITSIZE (fields[num_fields]) = 0;
5496
5497                   num_fields++;
5498                 }
5499             }
5500
5501           child_die = sibling_die (child_die);
5502         }
5503
5504       if (num_fields)
5505         {
5506           TYPE_NFIELDS (this_type) = num_fields;
5507           TYPE_FIELDS (this_type) = (struct field *)
5508             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
5509           memcpy (TYPE_FIELDS (this_type), fields,
5510                   sizeof (struct field) * num_fields);
5511           xfree (fields);
5512         }
5513       if (unsigned_enum)
5514         TYPE_UNSIGNED (this_type) = 1;
5515     }
5516
5517   new_symbol (die, this_type, cu);
5518 }
5519
5520 /* Extract all information from a DW_TAG_array_type DIE and put it in
5521    the DIE's type field.  For now, this only handles one dimensional
5522    arrays.  */
5523
5524 static struct type *
5525 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
5526 {
5527   struct objfile *objfile = cu->objfile;
5528   struct die_info *child_die;
5529   struct type *type;
5530   struct type *element_type, *range_type, *index_type;
5531   struct type **range_types = NULL;
5532   struct attribute *attr;
5533   int ndim = 0;
5534   struct cleanup *back_to;
5535   char *name;
5536
5537   element_type = die_type (die, cu);
5538
5539   /* The die_type call above may have already set the type for this DIE.  */
5540   type = get_die_type (die, cu);
5541   if (type)
5542     return type;
5543
5544   /* Irix 6.2 native cc creates array types without children for
5545      arrays with unspecified length.  */
5546   if (die->child == NULL)
5547     {
5548       index_type = objfile_type (objfile)->builtin_int;
5549       range_type = create_range_type (NULL, index_type, 0, -1);
5550       type = create_array_type (NULL, element_type, range_type);
5551       return set_die_type (die, type, cu);
5552     }
5553
5554   back_to = make_cleanup (null_cleanup, NULL);
5555   child_die = die->child;
5556   while (child_die && child_die->tag)
5557     {
5558       if (child_die->tag == DW_TAG_subrange_type)
5559         {
5560           struct type *child_type = read_type_die (child_die, cu);
5561
5562           if (child_type != NULL)
5563             {
5564               /* The range type was succesfully read. Save it for
5565                  the array type creation.  */
5566               if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
5567                 {
5568                   range_types = (struct type **)
5569                     xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
5570                               * sizeof (struct type *));
5571                   if (ndim == 0)
5572                     make_cleanup (free_current_contents, &range_types);
5573                 }
5574               range_types[ndim++] = child_type;
5575             }
5576         }
5577       child_die = sibling_die (child_die);
5578     }
5579
5580   /* Dwarf2 dimensions are output from left to right, create the
5581      necessary array types in backwards order.  */
5582
5583   type = element_type;
5584
5585   if (read_array_order (die, cu) == DW_ORD_col_major)
5586     {
5587       int i = 0;
5588
5589       while (i < ndim)
5590         type = create_array_type (NULL, type, range_types[i++]);
5591     }
5592   else
5593     {
5594       while (ndim-- > 0)
5595         type = create_array_type (NULL, type, range_types[ndim]);
5596     }
5597
5598   /* Understand Dwarf2 support for vector types (like they occur on
5599      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
5600      array type.  This is not part of the Dwarf2/3 standard yet, but a
5601      custom vendor extension.  The main difference between a regular
5602      array and the vector variant is that vectors are passed by value
5603      to functions.  */
5604   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
5605   if (attr)
5606     make_vector_type (type);
5607
5608   name = dwarf2_name (die, cu);
5609   if (name)
5610     TYPE_NAME (type) = name;
5611   
5612   /* Install the type in the die. */
5613   set_die_type (die, type, cu);
5614
5615   /* set_die_type should be already done.  */
5616   set_descriptive_type (type, die, cu);
5617
5618   do_cleanups (back_to);
5619
5620   return type;
5621 }
5622
5623 static enum dwarf_array_dim_ordering
5624 read_array_order (struct die_info *die, struct dwarf2_cu *cu) 
5625 {
5626   struct attribute *attr;
5627
5628   attr = dwarf2_attr (die, DW_AT_ordering, cu);
5629
5630   if (attr) return DW_SND (attr);
5631
5632   /*
5633     GNU F77 is a special case, as at 08/2004 array type info is the
5634     opposite order to the dwarf2 specification, but data is still 
5635     laid out as per normal fortran.
5636
5637     FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need 
5638     version checking.
5639   */
5640
5641   if (cu->language == language_fortran
5642       && cu->producer && strstr (cu->producer, "GNU F77"))
5643     {
5644       return DW_ORD_row_major;
5645     }
5646
5647   switch (cu->language_defn->la_array_ordering) 
5648     {
5649     case array_column_major:
5650       return DW_ORD_col_major;
5651     case array_row_major:
5652     default:
5653       return DW_ORD_row_major;
5654     };
5655 }
5656
5657 /* Extract all information from a DW_TAG_set_type DIE and put it in
5658    the DIE's type field. */
5659
5660 static struct type *
5661 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
5662 {
5663   struct type *domain_type, *set_type;
5664   struct attribute *attr;
5665
5666   domain_type = die_type (die, cu);
5667
5668   /* The die_type call above may have already set the type for this DIE.  */
5669   set_type = get_die_type (die, cu);
5670   if (set_type)
5671     return set_type;
5672
5673   set_type = create_set_type (NULL, domain_type);
5674
5675   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
5676   if (attr)
5677     TYPE_LENGTH (set_type) = DW_UNSND (attr);
5678
5679   return set_die_type (die, set_type, cu);
5680 }
5681
5682 /* First cut: install each common block member as a global variable.  */
5683
5684 static void
5685 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
5686 {
5687   struct die_info *child_die;
5688   struct attribute *attr;
5689   struct symbol *sym;
5690   CORE_ADDR base = (CORE_ADDR) 0;
5691
5692   attr = dwarf2_attr (die, DW_AT_location, cu);
5693   if (attr)
5694     {
5695       /* Support the .debug_loc offsets */
5696       if (attr_form_is_block (attr))
5697         {
5698           base = decode_locdesc (DW_BLOCK (attr), cu);
5699         }
5700       else if (attr_form_is_section_offset (attr))
5701         {
5702           dwarf2_complex_location_expr_complaint ();
5703         }
5704       else
5705         {
5706           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
5707                                                  "common block member");
5708         }
5709     }
5710   if (die->child != NULL)
5711     {
5712       child_die = die->child;
5713       while (child_die && child_die->tag)
5714         {
5715           sym = new_symbol (child_die, NULL, cu);
5716           attr = dwarf2_attr (child_die, DW_AT_data_member_location, cu);
5717           if (attr)
5718             {
5719               CORE_ADDR byte_offset = 0;
5720
5721               if (attr_form_is_section_offset (attr))
5722                 dwarf2_complex_location_expr_complaint ();
5723               else if (attr_form_is_constant (attr))
5724                 byte_offset = dwarf2_get_attr_constant_value (attr, 0);
5725               else if (attr_form_is_block (attr))
5726                 byte_offset = decode_locdesc (DW_BLOCK (attr), cu);
5727               else
5728                 dwarf2_complex_location_expr_complaint ();
5729
5730               SYMBOL_VALUE_ADDRESS (sym) = base + byte_offset;
5731               add_symbol_to_list (sym, &global_symbols);
5732             }
5733           child_die = sibling_die (child_die);
5734         }
5735     }
5736 }
5737
5738 /* Create a type for a C++ namespace.  */
5739
5740 static struct type *
5741 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
5742 {
5743   struct objfile *objfile = cu->objfile;
5744   const char *previous_prefix, *name;
5745   int is_anonymous;
5746   struct type *type;
5747
5748   /* For extensions, reuse the type of the original namespace.  */
5749   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
5750     {
5751       struct die_info *ext_die;
5752       struct dwarf2_cu *ext_cu = cu;
5753
5754       ext_die = dwarf2_extension (die, &ext_cu);
5755       type = read_type_die (ext_die, ext_cu);
5756       return set_die_type (die, type, cu);
5757     }
5758
5759   name = namespace_name (die, &is_anonymous, cu);
5760
5761   /* Now build the name of the current namespace.  */
5762
5763   previous_prefix = determine_prefix (die, cu);
5764   if (previous_prefix[0] != '\0')
5765     name = typename_concat (&objfile->objfile_obstack,
5766                             previous_prefix, name, 0, cu);
5767
5768   /* Create the type.  */
5769   type = init_type (TYPE_CODE_NAMESPACE, 0, 0, NULL,
5770                     objfile);
5771   TYPE_NAME (type) = (char *) name;
5772   TYPE_TAG_NAME (type) = TYPE_NAME (type);
5773
5774   return set_die_type (die, type, cu);
5775 }
5776
5777 /* Read a C++ namespace.  */
5778
5779 static void
5780 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
5781 {
5782   struct objfile *objfile = cu->objfile;
5783   const char *name;
5784   int is_anonymous;
5785
5786   /* Add a symbol associated to this if we haven't seen the namespace
5787      before.  Also, add a using directive if it's an anonymous
5788      namespace.  */
5789
5790   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
5791     {
5792       struct type *type;
5793
5794       type = read_type_die (die, cu);
5795       new_symbol (die, type, cu);
5796
5797       name = namespace_name (die, &is_anonymous, cu);
5798       if (is_anonymous)
5799         {
5800           const char *previous_prefix = determine_prefix (die, cu);
5801
5802           cp_add_using_directive (previous_prefix, TYPE_NAME (type), NULL,
5803                                   NULL, &objfile->objfile_obstack);
5804         }
5805     }
5806
5807   if (die->child != NULL)
5808     {
5809       struct die_info *child_die = die->child;
5810       
5811       while (child_die && child_die->tag)
5812         {
5813           process_die (child_die, cu);
5814           child_die = sibling_die (child_die);
5815         }
5816     }
5817 }
5818
5819 /* Read a Fortran module as type.  This DIE can be only a declaration used for
5820    imported module.  Still we need that type as local Fortran "use ... only"
5821    declaration imports depend on the created type in determine_prefix.  */
5822
5823 static struct type *
5824 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
5825 {
5826   struct objfile *objfile = cu->objfile;
5827   char *module_name;
5828   struct type *type;
5829
5830   module_name = dwarf2_name (die, cu);
5831   if (!module_name)
5832     complaint (&symfile_complaints, _("DW_TAG_module has no name, offset 0x%x"),
5833                die->offset);
5834   type = init_type (TYPE_CODE_MODULE, 0, 0, module_name, objfile);
5835
5836   /* determine_prefix uses TYPE_TAG_NAME.  */
5837   TYPE_TAG_NAME (type) = TYPE_NAME (type);
5838
5839   return set_die_type (die, type, cu);
5840 }
5841
5842 /* Read a Fortran module.  */
5843
5844 static void
5845 read_module (struct die_info *die, struct dwarf2_cu *cu)
5846 {
5847   struct die_info *child_die = die->child;
5848
5849   while (child_die && child_die->tag)
5850     {
5851       process_die (child_die, cu);
5852       child_die = sibling_die (child_die);
5853     }
5854 }
5855
5856 /* Return the name of the namespace represented by DIE.  Set
5857    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
5858    namespace.  */
5859
5860 static const char *
5861 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
5862 {
5863   struct die_info *current_die;
5864   const char *name = NULL;
5865
5866   /* Loop through the extensions until we find a name.  */
5867
5868   for (current_die = die;
5869        current_die != NULL;
5870        current_die = dwarf2_extension (die, &cu))
5871     {
5872       name = dwarf2_name (current_die, cu);
5873       if (name != NULL)
5874         break;
5875     }
5876
5877   /* Is it an anonymous namespace?  */
5878
5879   *is_anonymous = (name == NULL);
5880   if (*is_anonymous)
5881     name = "(anonymous namespace)";
5882
5883   return name;
5884 }
5885
5886 /* Extract all information from a DW_TAG_pointer_type DIE and add to
5887    the user defined type vector.  */
5888
5889 static struct type *
5890 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
5891 {
5892   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
5893   struct comp_unit_head *cu_header = &cu->header;
5894   struct type *type;
5895   struct attribute *attr_byte_size;
5896   struct attribute *attr_address_class;
5897   int byte_size, addr_class;
5898   struct type *target_type;
5899
5900   target_type = die_type (die, cu);
5901
5902   /* The die_type call above may have already set the type for this DIE.  */
5903   type = get_die_type (die, cu);
5904   if (type)
5905     return type;
5906
5907   type = lookup_pointer_type (target_type);
5908
5909   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
5910   if (attr_byte_size)
5911     byte_size = DW_UNSND (attr_byte_size);
5912   else
5913     byte_size = cu_header->addr_size;
5914
5915   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
5916   if (attr_address_class)
5917     addr_class = DW_UNSND (attr_address_class);
5918   else
5919     addr_class = DW_ADDR_none;
5920
5921   /* If the pointer size or address class is different than the
5922      default, create a type variant marked as such and set the
5923      length accordingly.  */
5924   if (TYPE_LENGTH (type) != byte_size || addr_class != DW_ADDR_none)
5925     {
5926       if (gdbarch_address_class_type_flags_p (gdbarch))
5927         {
5928           int type_flags;
5929
5930           type_flags = gdbarch_address_class_type_flags
5931                          (gdbarch, byte_size, addr_class);
5932           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
5933                       == 0);
5934           type = make_type_with_address_space (type, type_flags);
5935         }
5936       else if (TYPE_LENGTH (type) != byte_size)
5937         {
5938           complaint (&symfile_complaints, _("invalid pointer size %d"), byte_size);
5939         }
5940       else 
5941         {
5942           /* Should we also complain about unhandled address classes?  */
5943         }
5944     }
5945
5946   TYPE_LENGTH (type) = byte_size;
5947   return set_die_type (die, type, cu);
5948 }
5949
5950 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
5951    the user defined type vector.  */
5952
5953 static struct type *
5954 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
5955 {
5956   struct type *type;
5957   struct type *to_type;
5958   struct type *domain;
5959
5960   to_type = die_type (die, cu);
5961   domain = die_containing_type (die, cu);
5962
5963   /* The calls above may have already set the type for this DIE.  */
5964   type = get_die_type (die, cu);
5965   if (type)
5966     return type;
5967
5968   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
5969     type = lookup_methodptr_type (to_type);
5970   else
5971     type = lookup_memberptr_type (to_type, domain);
5972
5973   return set_die_type (die, type, cu);
5974 }
5975
5976 /* Extract all information from a DW_TAG_reference_type DIE and add to
5977    the user defined type vector.  */
5978
5979 static struct type *
5980 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu)
5981 {
5982   struct comp_unit_head *cu_header = &cu->header;
5983   struct type *type, *target_type;
5984   struct attribute *attr;
5985
5986   target_type = die_type (die, cu);
5987
5988   /* The die_type call above may have already set the type for this DIE.  */
5989   type = get_die_type (die, cu);
5990   if (type)
5991     return type;
5992
5993   type = lookup_reference_type (target_type);
5994   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
5995   if (attr)
5996     {
5997       TYPE_LENGTH (type) = DW_UNSND (attr);
5998     }
5999   else
6000     {
6001       TYPE_LENGTH (type) = cu_header->addr_size;
6002     }
6003   return set_die_type (die, type, cu);
6004 }
6005
6006 static struct type *
6007 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
6008 {
6009   struct type *base_type, *cv_type;
6010
6011   base_type = die_type (die, cu);
6012
6013   /* The die_type call above may have already set the type for this DIE.  */
6014   cv_type = get_die_type (die, cu);
6015   if (cv_type)
6016     return cv_type;
6017
6018   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
6019   return set_die_type (die, cv_type, cu);
6020 }
6021
6022 static struct type *
6023 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
6024 {
6025   struct type *base_type, *cv_type;
6026
6027   base_type = die_type (die, cu);
6028
6029   /* The die_type call above may have already set the type for this DIE.  */
6030   cv_type = get_die_type (die, cu);
6031   if (cv_type)
6032     return cv_type;
6033
6034   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
6035   return set_die_type (die, cv_type, cu);
6036 }
6037
6038 /* Extract all information from a DW_TAG_string_type DIE and add to
6039    the user defined type vector.  It isn't really a user defined type,
6040    but it behaves like one, with other DIE's using an AT_user_def_type
6041    attribute to reference it.  */
6042
6043 static struct type *
6044 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
6045 {
6046   struct objfile *objfile = cu->objfile;
6047   struct gdbarch *gdbarch = get_objfile_arch (objfile);
6048   struct type *type, *range_type, *index_type, *char_type;
6049   struct attribute *attr;
6050   unsigned int length;
6051
6052   attr = dwarf2_attr (die, DW_AT_string_length, cu);
6053   if (attr)
6054     {
6055       length = DW_UNSND (attr);
6056     }
6057   else
6058     {
6059       /* check for the DW_AT_byte_size attribute */
6060       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
6061       if (attr)
6062         {
6063           length = DW_UNSND (attr);
6064         }
6065       else
6066         {
6067           length = 1;
6068         }
6069     }
6070
6071   index_type = objfile_type (objfile)->builtin_int;
6072   range_type = create_range_type (NULL, index_type, 1, length);
6073   char_type = language_string_char_type (cu->language_defn, gdbarch);
6074   type = create_string_type (NULL, char_type, range_type);
6075
6076   return set_die_type (die, type, cu);
6077 }
6078
6079 /* Handle DIES due to C code like:
6080
6081    struct foo
6082    {
6083    int (*funcp)(int a, long l);
6084    int b;
6085    };
6086
6087    ('funcp' generates a DW_TAG_subroutine_type DIE)
6088  */
6089
6090 static struct type *
6091 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
6092 {
6093   struct type *type;            /* Type that this function returns */
6094   struct type *ftype;           /* Function that returns above type */
6095   struct attribute *attr;
6096
6097   type = die_type (die, cu);
6098
6099   /* The die_type call above may have already set the type for this DIE.  */
6100   ftype = get_die_type (die, cu);
6101   if (ftype)
6102     return ftype;
6103
6104   ftype = lookup_function_type (type);
6105
6106   /* All functions in C++, Pascal and Java have prototypes.  */
6107   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
6108   if ((attr && (DW_UNSND (attr) != 0))
6109       || cu->language == language_cplus
6110       || cu->language == language_java
6111       || cu->language == language_pascal)
6112     TYPE_PROTOTYPED (ftype) = 1;
6113   else if (producer_is_realview (cu->producer))
6114     /* RealView does not emit DW_AT_prototyped.  We can not
6115        distinguish prototyped and unprototyped functions; default to
6116        prototyped, since that is more common in modern code (and
6117        RealView warns about unprototyped functions).  */
6118     TYPE_PROTOTYPED (ftype) = 1;
6119
6120   /* Store the calling convention in the type if it's available in
6121      the subroutine die.  Otherwise set the calling convention to
6122      the default value DW_CC_normal.  */
6123   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
6124   TYPE_CALLING_CONVENTION (ftype) = attr ? DW_UNSND (attr) : DW_CC_normal;
6125
6126   /* We need to add the subroutine type to the die immediately so
6127      we don't infinitely recurse when dealing with parameters
6128      declared as the same subroutine type. */
6129   set_die_type (die, ftype, cu);
6130   
6131   if (die->child != NULL)
6132     {
6133       struct type *void_type = objfile_type (cu->objfile)->builtin_void;
6134       struct die_info *child_die;
6135       int nparams, iparams;
6136
6137       /* Count the number of parameters.
6138          FIXME: GDB currently ignores vararg functions, but knows about
6139          vararg member functions.  */
6140       nparams = 0;
6141       child_die = die->child;
6142       while (child_die && child_die->tag)
6143         {
6144           if (child_die->tag == DW_TAG_formal_parameter)
6145             nparams++;
6146           else if (child_die->tag == DW_TAG_unspecified_parameters)
6147             TYPE_VARARGS (ftype) = 1;
6148           child_die = sibling_die (child_die);
6149         }
6150
6151       /* Allocate storage for parameters and fill them in.  */
6152       TYPE_NFIELDS (ftype) = nparams;
6153       TYPE_FIELDS (ftype) = (struct field *)
6154         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
6155
6156       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
6157          even if we error out during the parameters reading below.  */
6158       for (iparams = 0; iparams < nparams; iparams++)
6159         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
6160
6161       iparams = 0;
6162       child_die = die->child;
6163       while (child_die && child_die->tag)
6164         {
6165           if (child_die->tag == DW_TAG_formal_parameter)
6166             {
6167               /* Dwarf2 has no clean way to discern C++ static and non-static
6168                  member functions. G++ helps GDB by marking the first
6169                  parameter for non-static member functions (which is the
6170                  this pointer) as artificial. We pass this information
6171                  to dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.  */
6172               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
6173               if (attr)
6174                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
6175               else
6176                 {
6177                   TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
6178
6179                   /* GCC/43521: In java, the formal parameter
6180                      "this" is sometimes not marked with DW_AT_artificial.  */
6181                   if (cu->language == language_java)
6182                     {
6183                       const char *name = dwarf2_name (child_die, cu);
6184
6185                       if (name && !strcmp (name, "this"))
6186                         TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 1;
6187                     }
6188                 }
6189               TYPE_FIELD_TYPE (ftype, iparams) = die_type (child_die, cu);
6190               iparams++;
6191             }
6192           child_die = sibling_die (child_die);
6193         }
6194     }
6195
6196   return ftype;
6197 }
6198
6199 static struct type *
6200 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
6201 {
6202   struct objfile *objfile = cu->objfile;
6203   const char *name = NULL;
6204   struct type *this_type;
6205
6206   name = dwarf2_full_name (NULL, die, cu);
6207   this_type = init_type (TYPE_CODE_TYPEDEF, 0,
6208                          TYPE_FLAG_TARGET_STUB, NULL, objfile);
6209   TYPE_NAME (this_type) = (char *) name;
6210   set_die_type (die, this_type, cu);
6211   TYPE_TARGET_TYPE (this_type) = die_type (die, cu);
6212   return this_type;
6213 }
6214
6215 /* Find a representation of a given base type and install
6216    it in the TYPE field of the die.  */
6217
6218 static struct type *
6219 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
6220 {
6221   struct objfile *objfile = cu->objfile;
6222   struct type *type;
6223   struct attribute *attr;
6224   int encoding = 0, size = 0;
6225   char *name;
6226   enum type_code code = TYPE_CODE_INT;
6227   int type_flags = 0;
6228   struct type *target_type = NULL;
6229
6230   attr = dwarf2_attr (die, DW_AT_encoding, cu);
6231   if (attr)
6232     {
6233       encoding = DW_UNSND (attr);
6234     }
6235   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
6236   if (attr)
6237     {
6238       size = DW_UNSND (attr);
6239     }
6240   name = dwarf2_name (die, cu);
6241   if (!name)
6242     {
6243       complaint (&symfile_complaints,
6244                  _("DW_AT_name missing from DW_TAG_base_type"));
6245     }
6246
6247   switch (encoding)
6248     {
6249       case DW_ATE_address:
6250         /* Turn DW_ATE_address into a void * pointer.  */
6251         code = TYPE_CODE_PTR;
6252         type_flags |= TYPE_FLAG_UNSIGNED;
6253         target_type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
6254         break;
6255       case DW_ATE_boolean:
6256         code = TYPE_CODE_BOOL;
6257         type_flags |= TYPE_FLAG_UNSIGNED;
6258         break;
6259       case DW_ATE_complex_float:
6260         code = TYPE_CODE_COMPLEX;
6261         target_type = init_type (TYPE_CODE_FLT, size / 2, 0, NULL, objfile);
6262         break;
6263       case DW_ATE_decimal_float:
6264         code = TYPE_CODE_DECFLOAT;
6265         break;
6266       case DW_ATE_float:
6267         code = TYPE_CODE_FLT;
6268         break;
6269       case DW_ATE_signed:
6270         break;
6271       case DW_ATE_unsigned:
6272         type_flags |= TYPE_FLAG_UNSIGNED;
6273         break;
6274       case DW_ATE_signed_char:
6275         if (cu->language == language_ada || cu->language == language_m2 
6276             || cu->language == language_pascal)
6277           code = TYPE_CODE_CHAR;
6278         break;
6279       case DW_ATE_unsigned_char:
6280         if (cu->language == language_ada || cu->language == language_m2
6281             || cu->language == language_pascal)
6282           code = TYPE_CODE_CHAR;
6283         type_flags |= TYPE_FLAG_UNSIGNED;
6284         break;
6285       case DW_ATE_UTF:
6286         /* We just treat this as an integer and then recognize the
6287            type by name elsewhere.  */
6288         break;
6289
6290       default:
6291         complaint (&symfile_complaints, _("unsupported DW_AT_encoding: '%s'"),
6292                    dwarf_type_encoding_name (encoding));
6293         break;
6294     }
6295
6296   type = init_type (code, size, type_flags, NULL, objfile);
6297   TYPE_NAME (type) = name;
6298   TYPE_TARGET_TYPE (type) = target_type;
6299
6300   if (name && strcmp (name, "char") == 0)
6301     TYPE_NOSIGN (type) = 1;
6302
6303   return set_die_type (die, type, cu);
6304 }
6305
6306 /* Read the given DW_AT_subrange DIE.  */
6307
6308 static struct type *
6309 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
6310 {
6311   struct gdbarch *gdbarch = get_objfile_arch (cu->objfile);
6312   struct type *base_type;
6313   struct type *range_type;
6314   struct attribute *attr;
6315   LONGEST low = 0;
6316   LONGEST high = -1;
6317   char *name;
6318   LONGEST negative_mask;
6319
6320   base_type = die_type (die, cu);
6321
6322   /* The die_type call above may have already set the type for this DIE.  */
6323   range_type = get_die_type (die, cu);
6324   if (range_type)
6325     return range_type;
6326
6327   if (cu->language == language_fortran)
6328     { 
6329       /* FORTRAN implies a lower bound of 1, if not given.  */
6330       low = 1;
6331     }
6332
6333   /* FIXME: For variable sized arrays either of these could be
6334      a variable rather than a constant value.  We'll allow it,
6335      but we don't know how to handle it.  */
6336   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
6337   if (attr)
6338     low = dwarf2_get_attr_constant_value (attr, 0);
6339
6340   attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
6341   if (attr)
6342     {       
6343       if (attr->form == DW_FORM_block1 || is_ref_attr (attr))
6344         {
6345           /* GCC encodes arrays with unspecified or dynamic length
6346              with a DW_FORM_block1 attribute or a reference attribute.
6347              FIXME: GDB does not yet know how to handle dynamic
6348              arrays properly, treat them as arrays with unspecified
6349              length for now.
6350
6351              FIXME: jimb/2003-09-22: GDB does not really know
6352              how to handle arrays of unspecified length
6353              either; we just represent them as zero-length
6354              arrays.  Choose an appropriate upper bound given
6355              the lower bound we've computed above.  */
6356           high = low - 1;
6357         }
6358       else
6359         high = dwarf2_get_attr_constant_value (attr, 1);
6360     }
6361   else
6362     {
6363       attr = dwarf2_attr (die, DW_AT_count, cu);
6364       if (attr)
6365         {
6366           int count = dwarf2_get_attr_constant_value (attr, 1);
6367           high = low + count - 1;
6368         }
6369     }
6370
6371   /* Dwarf-2 specifications explicitly allows to create subrange types
6372      without specifying a base type.
6373      In that case, the base type must be set to the type of
6374      the lower bound, upper bound or count, in that order, if any of these
6375      three attributes references an object that has a type.
6376      If no base type is found, the Dwarf-2 specifications say that
6377      a signed integer type of size equal to the size of an address should
6378      be used.
6379      For the following C code: `extern char gdb_int [];'
6380      GCC produces an empty range DIE.
6381      FIXME: muller/2010-05-28: Possible references to object for low bound,
6382      high bound or count are not yet handled by this code.
6383   */
6384   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
6385     {
6386       struct objfile *objfile = cu->objfile;
6387       struct gdbarch *gdbarch = get_objfile_arch (objfile);
6388       int addr_size = gdbarch_addr_bit (gdbarch) /8;
6389       struct type *int_type = objfile_type (objfile)->builtin_int;
6390
6391       /* Test "int", "long int", and "long long int" objfile types,
6392          and select the first one having a size above or equal to the
6393          architecture address size.  */
6394       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
6395         base_type = int_type;
6396       else
6397         {
6398           int_type = objfile_type (objfile)->builtin_long;
6399           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
6400             base_type = int_type;
6401           else
6402             {
6403               int_type = objfile_type (objfile)->builtin_long_long;
6404               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
6405                 base_type = int_type;
6406             }
6407         }
6408     }
6409
6410   negative_mask = 
6411     (LONGEST) -1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1);
6412   if (!TYPE_UNSIGNED (base_type) && (low & negative_mask))
6413     low |= negative_mask;
6414   if (!TYPE_UNSIGNED (base_type) && (high & negative_mask))
6415     high |= negative_mask;
6416
6417   range_type = create_range_type (NULL, base_type, low, high);
6418
6419   /* Mark arrays with dynamic length at least as an array of unspecified
6420      length.  GDB could check the boundary but before it gets implemented at
6421      least allow accessing the array elements.  */
6422   if (attr && attr->form == DW_FORM_block1)
6423     TYPE_HIGH_BOUND_UNDEFINED (range_type) = 1;
6424
6425   name = dwarf2_name (die, cu);
6426   if (name)
6427     TYPE_NAME (range_type) = name;
6428   
6429   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
6430   if (attr)
6431     TYPE_LENGTH (range_type) = DW_UNSND (attr);
6432
6433   set_die_type (die, range_type, cu);
6434
6435   /* set_die_type should be already done.  */
6436   set_descriptive_type (range_type, die, cu);
6437
6438   return range_type;
6439 }
6440   
6441 static struct type *
6442 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
6443 {
6444   struct type *type;
6445
6446   /* For now, we only support the C meaning of an unspecified type: void.  */
6447
6448   type = init_type (TYPE_CODE_VOID, 0, 0, NULL, cu->objfile);
6449   TYPE_NAME (type) = dwarf2_name (die, cu);
6450
6451   return set_die_type (die, type, cu);
6452 }
6453
6454 /* Trivial hash function for die_info: the hash value of a DIE
6455    is its offset in .debug_info for this objfile.  */
6456
6457 static hashval_t
6458 die_hash (const void *item)
6459 {
6460   const struct die_info *die = item;
6461
6462   return die->offset;
6463 }
6464
6465 /* Trivial comparison function for die_info structures: two DIEs
6466    are equal if they have the same offset.  */
6467
6468 static int
6469 die_eq (const void *item_lhs, const void *item_rhs)
6470 {
6471   const struct die_info *die_lhs = item_lhs;
6472   const struct die_info *die_rhs = item_rhs;
6473
6474   return die_lhs->offset == die_rhs->offset;
6475 }
6476
6477 /* Read a whole compilation unit into a linked list of dies.  */
6478
6479 static struct die_info *
6480 read_comp_unit (gdb_byte *info_ptr, struct dwarf2_cu *cu)
6481 {
6482   struct die_reader_specs reader_specs;
6483
6484   gdb_assert (cu->die_hash == NULL);
6485   cu->die_hash
6486     = htab_create_alloc_ex (cu->header.length / 12,
6487                             die_hash,
6488                             die_eq,
6489                             NULL,
6490                             &cu->comp_unit_obstack,
6491                             hashtab_obstack_allocate,
6492                             dummy_obstack_deallocate);
6493
6494   init_cu_die_reader (&reader_specs, cu);
6495
6496   return read_die_and_children (&reader_specs, info_ptr, &info_ptr, NULL);
6497 }
6498
6499 /* Main entry point for reading a DIE and all children.
6500    Read the DIE and dump it if requested.  */
6501
6502 static struct die_info *
6503 read_die_and_children (const struct die_reader_specs *reader,
6504                        gdb_byte *info_ptr,
6505                        gdb_byte **new_info_ptr,
6506                        struct die_info *parent)
6507 {
6508   struct die_info *result = read_die_and_children_1 (reader, info_ptr,
6509                                                      new_info_ptr, parent);
6510
6511   if (dwarf2_die_debug)
6512     {
6513       fprintf_unfiltered (gdb_stdlog,
6514                           "\nRead die from %s of %s:\n",
6515                           reader->buffer == dwarf2_per_objfile->info.buffer
6516                           ? ".debug_info"
6517                           : reader->buffer == dwarf2_per_objfile->types.buffer
6518                           ? ".debug_types"
6519                           : "unknown section",
6520                           reader->abfd->filename);
6521       dump_die (result, dwarf2_die_debug);
6522     }
6523
6524   return result;
6525 }
6526
6527 /* Read a single die and all its descendents.  Set the die's sibling
6528    field to NULL; set other fields in the die correctly, and set all
6529    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
6530    location of the info_ptr after reading all of those dies.  PARENT
6531    is the parent of the die in question.  */
6532
6533 static struct die_info *
6534 read_die_and_children_1 (const struct die_reader_specs *reader,
6535                          gdb_byte *info_ptr,
6536                          gdb_byte **new_info_ptr,
6537                          struct die_info *parent)
6538 {
6539   struct die_info *die;
6540   gdb_byte *cur_ptr;
6541   int has_children;
6542
6543   cur_ptr = read_full_die (reader, &die, info_ptr, &has_children);
6544   if (die == NULL)
6545     {
6546       *new_info_ptr = cur_ptr;
6547       return NULL;
6548     }
6549   store_in_ref_table (die, reader->cu);
6550
6551   if (has_children)
6552     die->child = read_die_and_siblings (reader, cur_ptr, new_info_ptr, die);
6553   else
6554     {
6555       die->child = NULL;
6556       *new_info_ptr = cur_ptr;
6557     }
6558
6559   die->sibling = NULL;
6560   die->parent = parent;
6561   return die;
6562 }
6563
6564 /* Read a die, all of its descendents, and all of its siblings; set
6565    all of the fields of all of the dies correctly.  Arguments are as
6566    in read_die_and_children.  */
6567
6568 static struct die_info *
6569 read_die_and_siblings (const struct die_reader_specs *reader,
6570                        gdb_byte *info_ptr,
6571                        gdb_byte **new_info_ptr,
6572                        struct die_info *parent)
6573 {
6574   struct die_info *first_die, *last_sibling;
6575   gdb_byte *cur_ptr;
6576
6577   cur_ptr = info_ptr;
6578   first_die = last_sibling = NULL;
6579
6580   while (1)
6581     {
6582       struct die_info *die
6583         = read_die_and_children_1 (reader, cur_ptr, &cur_ptr, parent);
6584
6585       if (die == NULL)
6586         {
6587           *new_info_ptr = cur_ptr;
6588           return first_die;
6589         }
6590
6591       if (!first_die)
6592         first_die = die;
6593       else
6594         last_sibling->sibling = die;
6595
6596       last_sibling = die;
6597     }
6598 }
6599
6600 /* Read the die from the .debug_info section buffer.  Set DIEP to
6601    point to a newly allocated die with its information, except for its
6602    child, sibling, and parent fields.  Set HAS_CHILDREN to tell
6603    whether the die has children or not.  */
6604
6605 static gdb_byte *
6606 read_full_die (const struct die_reader_specs *reader,
6607                struct die_info **diep, gdb_byte *info_ptr,
6608                int *has_children)
6609 {
6610   unsigned int abbrev_number, bytes_read, i, offset;
6611   struct abbrev_info *abbrev;
6612   struct die_info *die;
6613   struct dwarf2_cu *cu = reader->cu;
6614   bfd *abfd = reader->abfd;
6615
6616   offset = info_ptr - reader->buffer;
6617   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
6618   info_ptr += bytes_read;
6619   if (!abbrev_number)
6620     {
6621       *diep = NULL;
6622       *has_children = 0;
6623       return info_ptr;
6624     }
6625
6626   abbrev = dwarf2_lookup_abbrev (abbrev_number, cu);
6627   if (!abbrev)
6628     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
6629            abbrev_number,
6630            bfd_get_filename (abfd));
6631
6632   die = dwarf_alloc_die (cu, abbrev->num_attrs);
6633   die->offset = offset;
6634   die->tag = abbrev->tag;
6635   die->abbrev = abbrev_number;
6636
6637   die->num_attrs = abbrev->num_attrs;
6638
6639   for (i = 0; i < abbrev->num_attrs; ++i)
6640     info_ptr = read_attribute (&die->attrs[i], &abbrev->attrs[i],
6641                                abfd, info_ptr, cu);
6642
6643   *diep = die;
6644   *has_children = abbrev->has_children;
6645   return info_ptr;
6646 }
6647
6648 /* In DWARF version 2, the description of the debugging information is
6649    stored in a separate .debug_abbrev section.  Before we read any
6650    dies from a section we read in all abbreviations and install them
6651    in a hash table.  This function also sets flags in CU describing
6652    the data found in the abbrev table.  */
6653
6654 static void
6655 dwarf2_read_abbrevs (bfd *abfd, struct dwarf2_cu *cu)
6656 {
6657   struct comp_unit_head *cu_header = &cu->header;
6658   gdb_byte *abbrev_ptr;
6659   struct abbrev_info *cur_abbrev;
6660   unsigned int abbrev_number, bytes_read, abbrev_name;
6661   unsigned int abbrev_form, hash_number;
6662   struct attr_abbrev *cur_attrs;
6663   unsigned int allocated_attrs;
6664
6665   /* Initialize dwarf2 abbrevs */
6666   obstack_init (&cu->abbrev_obstack);
6667   cu->dwarf2_abbrevs = obstack_alloc (&cu->abbrev_obstack,
6668                                       (ABBREV_HASH_SIZE
6669                                        * sizeof (struct abbrev_info *)));
6670   memset (cu->dwarf2_abbrevs, 0,
6671           ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
6672
6673   dwarf2_read_section (dwarf2_per_objfile->objfile,
6674                        &dwarf2_per_objfile->abbrev);
6675   abbrev_ptr = dwarf2_per_objfile->abbrev.buffer + cu_header->abbrev_offset;
6676   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
6677   abbrev_ptr += bytes_read;
6678
6679   allocated_attrs = ATTR_ALLOC_CHUNK;
6680   cur_attrs = xmalloc (allocated_attrs * sizeof (struct attr_abbrev));
6681   
6682   /* loop until we reach an abbrev number of 0 */
6683   while (abbrev_number)
6684     {
6685       cur_abbrev = dwarf_alloc_abbrev (cu);
6686
6687       /* read in abbrev header */
6688       cur_abbrev->number = abbrev_number;
6689       cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
6690       abbrev_ptr += bytes_read;
6691       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
6692       abbrev_ptr += 1;
6693
6694       if (cur_abbrev->tag == DW_TAG_namespace)
6695         cu->has_namespace_info = 1;
6696
6697       /* now read in declarations */
6698       abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
6699       abbrev_ptr += bytes_read;
6700       abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
6701       abbrev_ptr += bytes_read;
6702       while (abbrev_name)
6703         {
6704           if (cur_abbrev->num_attrs == allocated_attrs)
6705             {
6706               allocated_attrs += ATTR_ALLOC_CHUNK;
6707               cur_attrs
6708                 = xrealloc (cur_attrs, (allocated_attrs
6709                                         * sizeof (struct attr_abbrev)));
6710             }
6711
6712           /* Record whether this compilation unit might have
6713              inter-compilation-unit references.  If we don't know what form
6714              this attribute will have, then it might potentially be a
6715              DW_FORM_ref_addr, so we conservatively expect inter-CU
6716              references.  */
6717
6718           if (abbrev_form == DW_FORM_ref_addr
6719               || abbrev_form == DW_FORM_indirect)
6720             cu->has_form_ref_addr = 1;
6721
6722           cur_attrs[cur_abbrev->num_attrs].name = abbrev_name;
6723           cur_attrs[cur_abbrev->num_attrs++].form = abbrev_form;
6724           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
6725           abbrev_ptr += bytes_read;
6726           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
6727           abbrev_ptr += bytes_read;
6728         }
6729
6730       cur_abbrev->attrs = obstack_alloc (&cu->abbrev_obstack,
6731                                          (cur_abbrev->num_attrs
6732                                           * sizeof (struct attr_abbrev)));
6733       memcpy (cur_abbrev->attrs, cur_attrs,
6734               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
6735
6736       hash_number = abbrev_number % ABBREV_HASH_SIZE;
6737       cur_abbrev->next = cu->dwarf2_abbrevs[hash_number];
6738       cu->dwarf2_abbrevs[hash_number] = cur_abbrev;
6739
6740       /* Get next abbreviation.
6741          Under Irix6 the abbreviations for a compilation unit are not
6742          always properly terminated with an abbrev number of 0.
6743          Exit loop if we encounter an abbreviation which we have
6744          already read (which means we are about to read the abbreviations
6745          for the next compile unit) or if the end of the abbreviation
6746          table is reached.  */
6747       if ((unsigned int) (abbrev_ptr - dwarf2_per_objfile->abbrev.buffer)
6748           >= dwarf2_per_objfile->abbrev.size)
6749         break;
6750       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
6751       abbrev_ptr += bytes_read;
6752       if (dwarf2_lookup_abbrev (abbrev_number, cu) != NULL)
6753         break;
6754     }
6755
6756   xfree (cur_attrs);
6757 }
6758
6759 /* Release the memory used by the abbrev table for a compilation unit.  */
6760
6761 static void
6762 dwarf2_free_abbrev_table (void *ptr_to_cu)
6763 {
6764   struct dwarf2_cu *cu = ptr_to_cu;
6765
6766   obstack_free (&cu->abbrev_obstack, NULL);
6767   cu->dwarf2_abbrevs = NULL;
6768 }
6769
6770 /* Lookup an abbrev_info structure in the abbrev hash table.  */
6771
6772 static struct abbrev_info *
6773 dwarf2_lookup_abbrev (unsigned int number, struct dwarf2_cu *cu)
6774 {
6775   unsigned int hash_number;
6776   struct abbrev_info *abbrev;
6777
6778   hash_number = number % ABBREV_HASH_SIZE;
6779   abbrev = cu->dwarf2_abbrevs[hash_number];
6780
6781   while (abbrev)
6782     {
6783       if (abbrev->number == number)
6784         return abbrev;
6785       else
6786         abbrev = abbrev->next;
6787     }
6788   return NULL;
6789 }
6790
6791 /* Returns nonzero if TAG represents a type that we might generate a partial
6792    symbol for.  */
6793
6794 static int
6795 is_type_tag_for_partial (int tag)
6796 {
6797   switch (tag)
6798     {
6799 #if 0
6800     /* Some types that would be reasonable to generate partial symbols for,
6801        that we don't at present.  */
6802     case DW_TAG_array_type:
6803     case DW_TAG_file_type:
6804     case DW_TAG_ptr_to_member_type:
6805     case DW_TAG_set_type:
6806     case DW_TAG_string_type:
6807     case DW_TAG_subroutine_type:
6808 #endif
6809     case DW_TAG_base_type:
6810     case DW_TAG_class_type:
6811     case DW_TAG_interface_type:
6812     case DW_TAG_enumeration_type:
6813     case DW_TAG_structure_type:
6814     case DW_TAG_subrange_type:
6815     case DW_TAG_typedef:
6816     case DW_TAG_union_type:
6817       return 1;
6818     default:
6819       return 0;
6820     }
6821 }
6822
6823 /* Load all DIEs that are interesting for partial symbols into memory.  */
6824
6825 static struct partial_die_info *
6826 load_partial_dies (bfd *abfd, gdb_byte *buffer, gdb_byte *info_ptr,
6827                    int building_psymtab, struct dwarf2_cu *cu)
6828 {
6829   struct partial_die_info *part_die;
6830   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
6831   struct abbrev_info *abbrev;
6832   unsigned int bytes_read;
6833   unsigned int load_all = 0;
6834
6835   int nesting_level = 1;
6836
6837   parent_die = NULL;
6838   last_die = NULL;
6839
6840   if (cu->per_cu && cu->per_cu->load_all_dies)
6841     load_all = 1;
6842
6843   cu->partial_dies
6844     = htab_create_alloc_ex (cu->header.length / 12,
6845                             partial_die_hash,
6846                             partial_die_eq,
6847                             NULL,
6848                             &cu->comp_unit_obstack,
6849                             hashtab_obstack_allocate,
6850                             dummy_obstack_deallocate);
6851
6852   part_die = obstack_alloc (&cu->comp_unit_obstack,
6853                             sizeof (struct partial_die_info));
6854
6855   while (1)
6856     {
6857       abbrev = peek_die_abbrev (info_ptr, &bytes_read, cu);
6858
6859       /* A NULL abbrev means the end of a series of children.  */
6860       if (abbrev == NULL)
6861         {
6862           if (--nesting_level == 0)
6863             {
6864               /* PART_DIE was probably the last thing allocated on the
6865                  comp_unit_obstack, so we could call obstack_free
6866                  here.  We don't do that because the waste is small,
6867                  and will be cleaned up when we're done with this
6868                  compilation unit.  This way, we're also more robust
6869                  against other users of the comp_unit_obstack.  */
6870               return first_die;
6871             }
6872           info_ptr += bytes_read;
6873           last_die = parent_die;
6874           parent_die = parent_die->die_parent;
6875           continue;
6876         }
6877
6878       /* Check whether this DIE is interesting enough to save.  Normally
6879          we would not be interested in members here, but there may be
6880          later variables referencing them via DW_AT_specification (for
6881          static members).  */
6882       if (!load_all
6883           && !is_type_tag_for_partial (abbrev->tag)
6884           && abbrev->tag != DW_TAG_enumerator
6885           && abbrev->tag != DW_TAG_subprogram
6886           && abbrev->tag != DW_TAG_lexical_block
6887           && abbrev->tag != DW_TAG_variable
6888           && abbrev->tag != DW_TAG_namespace
6889           && abbrev->tag != DW_TAG_module
6890           && abbrev->tag != DW_TAG_member)
6891         {
6892           /* Otherwise we skip to the next sibling, if any.  */
6893           info_ptr = skip_one_die (buffer, info_ptr + bytes_read, abbrev, cu);
6894           continue;
6895         }
6896
6897       info_ptr = read_partial_die (part_die, abbrev, bytes_read, abfd,
6898                                    buffer, info_ptr, cu);
6899
6900       /* This two-pass algorithm for processing partial symbols has a
6901          high cost in cache pressure.  Thus, handle some simple cases
6902          here which cover the majority of C partial symbols.  DIEs
6903          which neither have specification tags in them, nor could have
6904          specification tags elsewhere pointing at them, can simply be
6905          processed and discarded.
6906
6907          This segment is also optional; scan_partial_symbols and
6908          add_partial_symbol will handle these DIEs if we chain
6909          them in normally.  When compilers which do not emit large
6910          quantities of duplicate debug information are more common,
6911          this code can probably be removed.  */
6912
6913       /* Any complete simple types at the top level (pretty much all
6914          of them, for a language without namespaces), can be processed
6915          directly.  */
6916       if (parent_die == NULL
6917           && part_die->has_specification == 0
6918           && part_die->is_declaration == 0
6919           && (part_die->tag == DW_TAG_typedef
6920               || part_die->tag == DW_TAG_base_type
6921               || part_die->tag == DW_TAG_subrange_type))
6922         {
6923           if (building_psymtab && part_die->name != NULL)
6924             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
6925                                  VAR_DOMAIN, LOC_TYPEDEF,
6926                                  &cu->objfile->static_psymbols,
6927                                  0, (CORE_ADDR) 0, cu->language, cu->objfile);
6928           info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
6929           continue;
6930         }
6931
6932       /* If we're at the second level, and we're an enumerator, and
6933          our parent has no specification (meaning possibly lives in a
6934          namespace elsewhere), then we can add the partial symbol now
6935          instead of queueing it.  */
6936       if (part_die->tag == DW_TAG_enumerator
6937           && parent_die != NULL
6938           && parent_die->die_parent == NULL
6939           && parent_die->tag == DW_TAG_enumeration_type
6940           && parent_die->has_specification == 0)
6941         {
6942           if (part_die->name == NULL)
6943             complaint (&symfile_complaints, _("malformed enumerator DIE ignored"));
6944           else if (building_psymtab)
6945             add_psymbol_to_list (part_die->name, strlen (part_die->name), 0,
6946                                  VAR_DOMAIN, LOC_CONST,
6947                                  (cu->language == language_cplus
6948                                   || cu->language == language_java)
6949                                  ? &cu->objfile->global_psymbols
6950                                  : &cu->objfile->static_psymbols,
6951                                  0, (CORE_ADDR) 0, cu->language, cu->objfile);
6952
6953           info_ptr = locate_pdi_sibling (part_die, buffer, info_ptr, abfd, cu);
6954           continue;
6955         }
6956
6957       /* We'll save this DIE so link it in.  */
6958       part_die->die_parent = parent_die;
6959       part_die->die_sibling = NULL;
6960       part_die->die_child = NULL;
6961
6962       if (last_die && last_die == parent_die)
6963         last_die->die_child = part_die;
6964       else if (last_die)
6965         last_die->die_sibling = part_die;
6966
6967       last_die = part_die;
6968
6969       if (first_die == NULL)
6970         first_die = part_die;
6971
6972       /* Maybe add the DIE to the hash table.  Not all DIEs that we
6973          find interesting need to be in the hash table, because we
6974          also have the parent/sibling/child chains; only those that we
6975          might refer to by offset later during partial symbol reading.
6976
6977          For now this means things that might have be the target of a
6978          DW_AT_specification, DW_AT_abstract_origin, or
6979          DW_AT_extension.  DW_AT_extension will refer only to
6980          namespaces; DW_AT_abstract_origin refers to functions (and
6981          many things under the function DIE, but we do not recurse
6982          into function DIEs during partial symbol reading) and
6983          possibly variables as well; DW_AT_specification refers to
6984          declarations.  Declarations ought to have the DW_AT_declaration
6985          flag.  It happens that GCC forgets to put it in sometimes, but
6986          only for functions, not for types.
6987
6988          Adding more things than necessary to the hash table is harmless
6989          except for the performance cost.  Adding too few will result in
6990          wasted time in find_partial_die, when we reread the compilation
6991          unit with load_all_dies set.  */
6992
6993       if (load_all
6994           || abbrev->tag == DW_TAG_subprogram
6995           || abbrev->tag == DW_TAG_variable
6996           || abbrev->tag == DW_TAG_namespace
6997           || part_die->is_declaration)
6998         {
6999           void **slot;
7000
7001           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
7002                                            part_die->offset, INSERT);
7003           *slot = part_die;
7004         }
7005
7006       part_die = obstack_alloc (&cu->comp_unit_obstack,
7007                                 sizeof (struct partial_die_info));
7008
7009       /* For some DIEs we want to follow their children (if any).  For C
7010          we have no reason to follow the children of structures; for other
7011          languages we have to, both so that we can get at method physnames
7012          to infer fully qualified class names, and for DW_AT_specification.
7013
7014          For Ada, we need to scan the children of subprograms and lexical
7015          blocks as well because Ada allows the definition of nested
7016          entities that could be interesting for the debugger, such as
7017          nested subprograms for instance.  */
7018       if (last_die->has_children
7019           && (load_all
7020               || last_die->tag == DW_TAG_namespace
7021               || last_die->tag == DW_TAG_module
7022               || last_die->tag == DW_TAG_enumeration_type
7023               || (cu->language != language_c
7024                   && (last_die->tag == DW_TAG_class_type
7025                       || last_die->tag == DW_TAG_interface_type
7026                       || last_die->tag == DW_TAG_structure_type
7027                       || last_die->tag == DW_TAG_union_type))
7028               || (cu->language == language_ada
7029                   && (last_die->tag == DW_TAG_subprogram
7030                       || last_die->tag == DW_TAG_lexical_block))))
7031         {
7032           nesting_level++;
7033           parent_die = last_die;
7034           continue;
7035         }
7036
7037       /* Otherwise we skip to the next sibling, if any.  */
7038       info_ptr = locate_pdi_sibling (last_die, buffer, info_ptr, abfd, cu);
7039
7040       /* Back to the top, do it again.  */
7041     }
7042 }
7043
7044 /* Read a minimal amount of information into the minimal die structure.  */
7045
7046 static gdb_byte *
7047 read_partial_die (struct partial_die_info *part_die,
7048                   struct abbrev_info *abbrev,
7049                   unsigned int abbrev_len, bfd *abfd,
7050                   gdb_byte *buffer, gdb_byte *info_ptr,
7051                   struct dwarf2_cu *cu)
7052 {
7053   unsigned int i;
7054   struct attribute attr;
7055   int has_low_pc_attr = 0;
7056   int has_high_pc_attr = 0;
7057
7058   memset (part_die, 0, sizeof (struct partial_die_info));
7059
7060   part_die->offset = info_ptr - buffer;
7061
7062   info_ptr += abbrev_len;
7063
7064   if (abbrev == NULL)
7065     return info_ptr;
7066
7067   part_die->tag = abbrev->tag;
7068   part_die->has_children = abbrev->has_children;
7069
7070   for (i = 0; i < abbrev->num_attrs; ++i)
7071     {
7072       info_ptr = read_attribute (&attr, &abbrev->attrs[i], abfd, info_ptr, cu);
7073
7074       /* Store the data if it is of an attribute we want to keep in a
7075          partial symbol table.  */
7076       switch (attr.name)
7077         {
7078         case DW_AT_name:
7079           switch (part_die->tag)
7080             {
7081             case DW_TAG_compile_unit:
7082             case DW_TAG_type_unit:
7083               /* Compilation units have a DW_AT_name that is a filename, not
7084                  a source language identifier.  */
7085             case DW_TAG_enumeration_type:
7086             case DW_TAG_enumerator:
7087               /* These tags always have simple identifiers already; no need
7088                  to canonicalize them.  */
7089               part_die->name = DW_STRING (&attr);
7090               break;
7091             default:
7092               part_die->name
7093                 = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
7094                                             &cu->objfile->objfile_obstack);
7095               break;
7096             }
7097           break;
7098         case DW_AT_linkage_name:
7099         case DW_AT_MIPS_linkage_name:
7100           /* Note that both forms of linkage name might appear.  We
7101              assume they will be the same, and we only store the last
7102              one we see.  */
7103           if (cu->language == language_ada)
7104             part_die->name = DW_STRING (&attr);
7105           break;
7106         case DW_AT_low_pc:
7107           has_low_pc_attr = 1;
7108           part_die->lowpc = DW_ADDR (&attr);
7109           break;
7110         case DW_AT_high_pc:
7111           has_high_pc_attr = 1;
7112           part_die->highpc = DW_ADDR (&attr);
7113           break;
7114         case DW_AT_location:
7115           /* Support the .debug_loc offsets */
7116           if (attr_form_is_block (&attr))
7117             {
7118                part_die->locdesc = DW_BLOCK (&attr);
7119             }
7120           else if (attr_form_is_section_offset (&attr))
7121             {
7122               dwarf2_complex_location_expr_complaint ();
7123             }
7124           else
7125             {
7126               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
7127                                                      "partial symbol information");
7128             }
7129           break;
7130         case DW_AT_external:
7131           part_die->is_external = DW_UNSND (&attr);
7132           break;
7133         case DW_AT_declaration:
7134           part_die->is_declaration = DW_UNSND (&attr);
7135           break;
7136         case DW_AT_type:
7137           part_die->has_type = 1;
7138           break;
7139         case DW_AT_abstract_origin:
7140         case DW_AT_specification:
7141         case DW_AT_extension:
7142           part_die->has_specification = 1;
7143           part_die->spec_offset = dwarf2_get_ref_die_offset (&attr);
7144           break;
7145         case DW_AT_sibling:
7146           /* Ignore absolute siblings, they might point outside of
7147              the current compile unit.  */
7148           if (attr.form == DW_FORM_ref_addr)
7149             complaint (&symfile_complaints, _("ignoring absolute DW_AT_sibling"));
7150           else
7151             part_die->sibling = buffer + dwarf2_get_ref_die_offset (&attr);
7152           break;
7153         case DW_AT_byte_size:
7154           part_die->has_byte_size = 1;
7155           break;
7156         case DW_AT_calling_convention:
7157           /* DWARF doesn't provide a way to identify a program's source-level
7158              entry point.  DW_AT_calling_convention attributes are only meant
7159              to describe functions' calling conventions.
7160
7161              However, because it's a necessary piece of information in
7162              Fortran, and because DW_CC_program is the only piece of debugging
7163              information whose definition refers to a 'main program' at all,
7164              several compilers have begun marking Fortran main programs with
7165              DW_CC_program --- even when those functions use the standard
7166              calling conventions.
7167
7168              So until DWARF specifies a way to provide this information and
7169              compilers pick up the new representation, we'll support this
7170              practice.  */
7171           if (DW_UNSND (&attr) == DW_CC_program
7172               && cu->language == language_fortran)
7173             set_main_name (part_die->name);
7174           break;
7175         default:
7176           break;
7177         }
7178     }
7179
7180   /* When using the GNU linker, .gnu.linkonce. sections are used to
7181      eliminate duplicate copies of functions and vtables and such.
7182      The linker will arbitrarily choose one and discard the others.
7183      The AT_*_pc values for such functions refer to local labels in
7184      these sections.  If the section from that file was discarded, the
7185      labels are not in the output, so the relocs get a value of 0.
7186      If this is a discarded function, mark the pc bounds as invalid,
7187      so that GDB will ignore it.  */
7188   if (has_low_pc_attr && has_high_pc_attr
7189       && part_die->lowpc < part_die->highpc
7190       && (part_die->lowpc != 0
7191           || dwarf2_per_objfile->has_section_at_zero))
7192     part_die->has_pc_info = 1;
7193
7194   return info_ptr;
7195 }
7196
7197 /* Find a cached partial DIE at OFFSET in CU.  */
7198
7199 static struct partial_die_info *
7200 find_partial_die_in_comp_unit (unsigned int offset, struct dwarf2_cu *cu)
7201 {
7202   struct partial_die_info *lookup_die = NULL;
7203   struct partial_die_info part_die;
7204
7205   part_die.offset = offset;
7206   lookup_die = htab_find_with_hash (cu->partial_dies, &part_die, offset);
7207
7208   return lookup_die;
7209 }
7210
7211 /* Find a partial DIE at OFFSET, which may or may not be in CU,
7212    except in the case of .debug_types DIEs which do not reference
7213    outside their CU (they do however referencing other types via
7214    DW_FORM_sig8).  */
7215
7216 static struct partial_die_info *
7217 find_partial_die (unsigned int offset, struct dwarf2_cu *cu)
7218 {
7219   struct dwarf2_per_cu_data *per_cu = NULL;
7220   struct partial_die_info *pd = NULL;
7221
7222   if (cu->per_cu->from_debug_types)
7223     {
7224       pd = find_partial_die_in_comp_unit (offset, cu);
7225       if (pd != NULL)
7226         return pd;
7227       goto not_found;
7228     }
7229
7230   if (offset_in_cu_p (&cu->header, offset))
7231     {
7232       pd = find_partial_die_in_comp_unit (offset, cu);
7233       if (pd != NULL)
7234         return pd;
7235     }
7236
7237   per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
7238
7239   if (per_cu->cu == NULL)
7240     {
7241       load_partial_comp_unit (per_cu, cu->objfile);
7242       per_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7243       dwarf2_per_objfile->read_in_chain = per_cu;
7244     }
7245
7246   per_cu->cu->last_used = 0;
7247   pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
7248
7249   if (pd == NULL && per_cu->load_all_dies == 0)
7250     {
7251       struct cleanup *back_to;
7252       struct partial_die_info comp_unit_die;
7253       struct abbrev_info *abbrev;
7254       unsigned int bytes_read;
7255       char *info_ptr;
7256
7257       per_cu->load_all_dies = 1;
7258
7259       /* Re-read the DIEs.  */
7260       back_to = make_cleanup (null_cleanup, 0);
7261       if (per_cu->cu->dwarf2_abbrevs == NULL)
7262         {
7263           dwarf2_read_abbrevs (per_cu->cu->objfile->obfd, per_cu->cu);
7264           make_cleanup (dwarf2_free_abbrev_table, per_cu->cu);
7265         }
7266       info_ptr = (dwarf2_per_objfile->info.buffer
7267                   + per_cu->cu->header.offset
7268                   + per_cu->cu->header.first_die_offset);
7269       abbrev = peek_die_abbrev (info_ptr, &bytes_read, per_cu->cu);
7270       info_ptr = read_partial_die (&comp_unit_die, abbrev, bytes_read,
7271                                    per_cu->cu->objfile->obfd,
7272                                    dwarf2_per_objfile->info.buffer, info_ptr,
7273                                    per_cu->cu);
7274       if (comp_unit_die.has_children)
7275         load_partial_dies (per_cu->cu->objfile->obfd,
7276                            dwarf2_per_objfile->info.buffer, info_ptr,
7277                            0, per_cu->cu);
7278       do_cleanups (back_to);
7279
7280       pd = find_partial_die_in_comp_unit (offset, per_cu->cu);
7281     }
7282
7283  not_found:
7284
7285   if (pd == NULL)
7286     internal_error (__FILE__, __LINE__,
7287                     _("could not find partial DIE 0x%x in cache [from module %s]\n"),
7288                     offset, bfd_get_filename (cu->objfile->obfd));
7289   return pd;
7290 }
7291
7292 /* Adjust PART_DIE before generating a symbol for it.  This function
7293    may set the is_external flag or change the DIE's name.  */
7294
7295 static void
7296 fixup_partial_die (struct partial_die_info *part_die,
7297                    struct dwarf2_cu *cu)
7298 {
7299   /* If we found a reference attribute and the DIE has no name, try
7300      to find a name in the referred to DIE.  */
7301
7302   if (part_die->name == NULL && part_die->has_specification)
7303     {
7304       struct partial_die_info *spec_die;
7305
7306       spec_die = find_partial_die (part_die->spec_offset, cu);
7307
7308       fixup_partial_die (spec_die, cu);
7309
7310       if (spec_die->name)
7311         {
7312           part_die->name = spec_die->name;
7313
7314           /* Copy DW_AT_external attribute if it is set.  */
7315           if (spec_die->is_external)
7316             part_die->is_external = spec_die->is_external;
7317         }
7318     }
7319
7320   /* Set default names for some unnamed DIEs.  */
7321   if (part_die->name == NULL && (part_die->tag == DW_TAG_structure_type
7322                                  || part_die->tag == DW_TAG_class_type))
7323     part_die->name = "(anonymous class)";
7324
7325   if (part_die->name == NULL && part_die->tag == DW_TAG_namespace)
7326     part_die->name = "(anonymous namespace)";
7327
7328   if (part_die->tag == DW_TAG_structure_type
7329       || part_die->tag == DW_TAG_class_type
7330       || part_die->tag == DW_TAG_union_type)
7331     guess_structure_name (part_die, cu);
7332 }
7333
7334 /* Read an attribute value described by an attribute form.  */
7335
7336 static gdb_byte *
7337 read_attribute_value (struct attribute *attr, unsigned form,
7338                       bfd *abfd, gdb_byte *info_ptr,
7339                       struct dwarf2_cu *cu)
7340 {
7341   struct comp_unit_head *cu_header = &cu->header;
7342   unsigned int bytes_read;
7343   struct dwarf_block *blk;
7344
7345   attr->form = form;
7346   switch (form)
7347     {
7348     case DW_FORM_ref_addr:
7349       if (cu->header.version == 2)
7350         DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
7351       else
7352         DW_ADDR (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
7353       info_ptr += bytes_read;
7354       break;
7355     case DW_FORM_addr:
7356       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
7357       info_ptr += bytes_read;
7358       break;
7359     case DW_FORM_block2:
7360       blk = dwarf_alloc_block (cu);
7361       blk->size = read_2_bytes (abfd, info_ptr);
7362       info_ptr += 2;
7363       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
7364       info_ptr += blk->size;
7365       DW_BLOCK (attr) = blk;
7366       break;
7367     case DW_FORM_block4:
7368       blk = dwarf_alloc_block (cu);
7369       blk->size = read_4_bytes (abfd, info_ptr);
7370       info_ptr += 4;
7371       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
7372       info_ptr += blk->size;
7373       DW_BLOCK (attr) = blk;
7374       break;
7375     case DW_FORM_data2:
7376       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
7377       info_ptr += 2;
7378       break;
7379     case DW_FORM_data4:
7380       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
7381       info_ptr += 4;
7382       break;
7383     case DW_FORM_data8:
7384       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
7385       info_ptr += 8;
7386       break;
7387     case DW_FORM_sec_offset:
7388       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
7389       info_ptr += bytes_read;
7390       break;
7391     case DW_FORM_string:
7392       DW_STRING (attr) = read_string (abfd, info_ptr, &bytes_read);
7393       DW_STRING_IS_CANONICAL (attr) = 0;
7394       info_ptr += bytes_read;
7395       break;
7396     case DW_FORM_strp:
7397       DW_STRING (attr) = read_indirect_string (abfd, info_ptr, cu_header,
7398                                                &bytes_read);
7399       DW_STRING_IS_CANONICAL (attr) = 0;
7400       info_ptr += bytes_read;
7401       break;
7402     case DW_FORM_exprloc:
7403     case DW_FORM_block:
7404       blk = dwarf_alloc_block (cu);
7405       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7406       info_ptr += bytes_read;
7407       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
7408       info_ptr += blk->size;
7409       DW_BLOCK (attr) = blk;
7410       break;
7411     case DW_FORM_block1:
7412       blk = dwarf_alloc_block (cu);
7413       blk->size = read_1_byte (abfd, info_ptr);
7414       info_ptr += 1;
7415       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
7416       info_ptr += blk->size;
7417       DW_BLOCK (attr) = blk;
7418       break;
7419     case DW_FORM_data1:
7420       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
7421       info_ptr += 1;
7422       break;
7423     case DW_FORM_flag:
7424       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
7425       info_ptr += 1;
7426       break;
7427     case DW_FORM_flag_present:
7428       DW_UNSND (attr) = 1;
7429       break;
7430     case DW_FORM_sdata:
7431       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
7432       info_ptr += bytes_read;
7433       break;
7434     case DW_FORM_udata:
7435       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7436       info_ptr += bytes_read;
7437       break;
7438     case DW_FORM_ref1:
7439       DW_ADDR (attr) = cu->header.offset + read_1_byte (abfd, info_ptr);
7440       info_ptr += 1;
7441       break;
7442     case DW_FORM_ref2:
7443       DW_ADDR (attr) = cu->header.offset + read_2_bytes (abfd, info_ptr);
7444       info_ptr += 2;
7445       break;
7446     case DW_FORM_ref4:
7447       DW_ADDR (attr) = cu->header.offset + read_4_bytes (abfd, info_ptr);
7448       info_ptr += 4;
7449       break;
7450     case DW_FORM_ref8:
7451       DW_ADDR (attr) = cu->header.offset + read_8_bytes (abfd, info_ptr);
7452       info_ptr += 8;
7453       break;
7454     case DW_FORM_sig8:
7455       /* Convert the signature to something we can record in DW_UNSND
7456          for later lookup.
7457          NOTE: This is NULL if the type wasn't found.  */
7458       DW_SIGNATURED_TYPE (attr) =
7459         lookup_signatured_type (cu->objfile, read_8_bytes (abfd, info_ptr));
7460       info_ptr += 8;
7461       break;
7462     case DW_FORM_ref_udata:
7463       DW_ADDR (attr) = (cu->header.offset
7464                         + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
7465       info_ptr += bytes_read;
7466       break;
7467     case DW_FORM_indirect:
7468       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
7469       info_ptr += bytes_read;
7470       info_ptr = read_attribute_value (attr, form, abfd, info_ptr, cu);
7471       break;
7472     default:
7473       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
7474              dwarf_form_name (form),
7475              bfd_get_filename (abfd));
7476     }
7477
7478   /* We have seen instances where the compiler tried to emit a byte
7479      size attribute of -1 which ended up being encoded as an unsigned
7480      0xffffffff.  Although 0xffffffff is technically a valid size value,
7481      an object of this size seems pretty unlikely so we can relatively
7482      safely treat these cases as if the size attribute was invalid and
7483      treat them as zero by default.  */
7484   if (attr->name == DW_AT_byte_size
7485       && form == DW_FORM_data4
7486       && DW_UNSND (attr) >= 0xffffffff)
7487     {
7488       complaint
7489         (&symfile_complaints,
7490          _("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
7491          hex_string (DW_UNSND (attr)));
7492       DW_UNSND (attr) = 0;
7493     }
7494
7495   return info_ptr;
7496 }
7497
7498 /* Read an attribute described by an abbreviated attribute.  */
7499
7500 static gdb_byte *
7501 read_attribute (struct attribute *attr, struct attr_abbrev *abbrev,
7502                 bfd *abfd, gdb_byte *info_ptr, struct dwarf2_cu *cu)
7503 {
7504   attr->name = abbrev->name;
7505   return read_attribute_value (attr, abbrev->form, abfd, info_ptr, cu);
7506 }
7507
7508 /* read dwarf information from a buffer */
7509
7510 static unsigned int
7511 read_1_byte (bfd *abfd, gdb_byte *buf)
7512 {
7513   return bfd_get_8 (abfd, buf);
7514 }
7515
7516 static int
7517 read_1_signed_byte (bfd *abfd, gdb_byte *buf)
7518 {
7519   return bfd_get_signed_8 (abfd, buf);
7520 }
7521
7522 static unsigned int
7523 read_2_bytes (bfd *abfd, gdb_byte *buf)
7524 {
7525   return bfd_get_16 (abfd, buf);
7526 }
7527
7528 static int
7529 read_2_signed_bytes (bfd *abfd, gdb_byte *buf)
7530 {
7531   return bfd_get_signed_16 (abfd, buf);
7532 }
7533
7534 static unsigned int
7535 read_4_bytes (bfd *abfd, gdb_byte *buf)
7536 {
7537   return bfd_get_32 (abfd, buf);
7538 }
7539
7540 static int
7541 read_4_signed_bytes (bfd *abfd, gdb_byte *buf)
7542 {
7543   return bfd_get_signed_32 (abfd, buf);
7544 }
7545
7546 static ULONGEST
7547 read_8_bytes (bfd *abfd, gdb_byte *buf)
7548 {
7549   return bfd_get_64 (abfd, buf);
7550 }
7551
7552 static CORE_ADDR
7553 read_address (bfd *abfd, gdb_byte *buf, struct dwarf2_cu *cu,
7554               unsigned int *bytes_read)
7555 {
7556   struct comp_unit_head *cu_header = &cu->header;
7557   CORE_ADDR retval = 0;
7558
7559   if (cu_header->signed_addr_p)
7560     {
7561       switch (cu_header->addr_size)
7562         {
7563         case 2:
7564           retval = bfd_get_signed_16 (abfd, buf);
7565           break;
7566         case 4:
7567           retval = bfd_get_signed_32 (abfd, buf);
7568           break;
7569         case 8:
7570           retval = bfd_get_signed_64 (abfd, buf);
7571           break;
7572         default:
7573           internal_error (__FILE__, __LINE__,
7574                           _("read_address: bad switch, signed [in module %s]"),
7575                           bfd_get_filename (abfd));
7576         }
7577     }
7578   else
7579     {
7580       switch (cu_header->addr_size)
7581         {
7582         case 2:
7583           retval = bfd_get_16 (abfd, buf);
7584           break;
7585         case 4:
7586           retval = bfd_get_32 (abfd, buf);
7587           break;
7588         case 8:
7589           retval = bfd_get_64 (abfd, buf);
7590           break;
7591         default:
7592           internal_error (__FILE__, __LINE__,
7593                           _("read_address: bad switch, unsigned [in module %s]"),
7594                           bfd_get_filename (abfd));
7595         }
7596     }
7597
7598   *bytes_read = cu_header->addr_size;
7599   return retval;
7600 }
7601
7602 /* Read the initial length from a section.  The (draft) DWARF 3
7603    specification allows the initial length to take up either 4 bytes
7604    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
7605    bytes describe the length and all offsets will be 8 bytes in length
7606    instead of 4.
7607
7608    An older, non-standard 64-bit format is also handled by this
7609    function.  The older format in question stores the initial length
7610    as an 8-byte quantity without an escape value.  Lengths greater
7611    than 2^32 aren't very common which means that the initial 4 bytes
7612    is almost always zero.  Since a length value of zero doesn't make
7613    sense for the 32-bit format, this initial zero can be considered to
7614    be an escape value which indicates the presence of the older 64-bit
7615    format.  As written, the code can't detect (old format) lengths
7616    greater than 4GB.  If it becomes necessary to handle lengths
7617    somewhat larger than 4GB, we could allow other small values (such
7618    as the non-sensical values of 1, 2, and 3) to also be used as
7619    escape values indicating the presence of the old format.
7620
7621    The value returned via bytes_read should be used to increment the
7622    relevant pointer after calling read_initial_length().
7623
7624    [ Note:  read_initial_length() and read_offset() are based on the
7625      document entitled "DWARF Debugging Information Format", revision
7626      3, draft 8, dated November 19, 2001.  This document was obtained
7627      from:
7628
7629         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
7630      
7631      This document is only a draft and is subject to change.  (So beware.)
7632
7633      Details regarding the older, non-standard 64-bit format were
7634      determined empirically by examining 64-bit ELF files produced by
7635      the SGI toolchain on an IRIX 6.5 machine.
7636
7637      - Kevin, July 16, 2002
7638    ] */
7639
7640 static LONGEST
7641 read_initial_length (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read)
7642 {
7643   LONGEST length = bfd_get_32 (abfd, buf);
7644
7645   if (length == 0xffffffff)
7646     {
7647       length = bfd_get_64 (abfd, buf + 4);
7648       *bytes_read = 12;
7649     }
7650   else if (length == 0)
7651     {
7652       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
7653       length = bfd_get_64 (abfd, buf);
7654       *bytes_read = 8;
7655     }
7656   else
7657     {
7658       *bytes_read = 4;
7659     }
7660
7661   return length;
7662 }
7663
7664 /* Cover function for read_initial_length.
7665    Returns the length of the object at BUF, and stores the size of the
7666    initial length in *BYTES_READ and stores the size that offsets will be in
7667    *OFFSET_SIZE.
7668    If the initial length size is not equivalent to that specified in
7669    CU_HEADER then issue a complaint.
7670    This is useful when reading non-comp-unit headers.  */
7671
7672 static LONGEST
7673 read_checked_initial_length_and_offset (bfd *abfd, gdb_byte *buf,
7674                                         const struct comp_unit_head *cu_header,
7675                                         unsigned int *bytes_read,
7676                                         unsigned int *offset_size)
7677 {
7678   LONGEST length = read_initial_length (abfd, buf, bytes_read);
7679
7680   gdb_assert (cu_header->initial_length_size == 4
7681               || cu_header->initial_length_size == 8
7682               || cu_header->initial_length_size == 12);
7683
7684   if (cu_header->initial_length_size != *bytes_read)
7685     complaint (&symfile_complaints,
7686                _("intermixed 32-bit and 64-bit DWARF sections"));
7687
7688   *offset_size = (*bytes_read == 4) ? 4 : 8;
7689   return length;
7690 }
7691
7692 /* Read an offset from the data stream.  The size of the offset is
7693    given by cu_header->offset_size.  */
7694
7695 static LONGEST
7696 read_offset (bfd *abfd, gdb_byte *buf, const struct comp_unit_head *cu_header,
7697              unsigned int *bytes_read)
7698 {
7699   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
7700
7701   *bytes_read = cu_header->offset_size;
7702   return offset;
7703 }
7704
7705 /* Read an offset from the data stream.  */
7706
7707 static LONGEST
7708 read_offset_1 (bfd *abfd, gdb_byte *buf, unsigned int offset_size)
7709 {
7710   LONGEST retval = 0;
7711
7712   switch (offset_size)
7713     {
7714     case 4:
7715       retval = bfd_get_32 (abfd, buf);
7716       break;
7717     case 8:
7718       retval = bfd_get_64 (abfd, buf);
7719       break;
7720     default:
7721       internal_error (__FILE__, __LINE__,
7722                       _("read_offset_1: bad switch [in module %s]"),
7723                       bfd_get_filename (abfd));
7724     }
7725
7726   return retval;
7727 }
7728
7729 static gdb_byte *
7730 read_n_bytes (bfd *abfd, gdb_byte *buf, unsigned int size)
7731 {
7732   /* If the size of a host char is 8 bits, we can return a pointer
7733      to the buffer, otherwise we have to copy the data to a buffer
7734      allocated on the temporary obstack.  */
7735   gdb_assert (HOST_CHAR_BIT == 8);
7736   return buf;
7737 }
7738
7739 static char *
7740 read_string (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
7741 {
7742   /* If the size of a host char is 8 bits, we can return a pointer
7743      to the string, otherwise we have to copy the string to a buffer
7744      allocated on the temporary obstack.  */
7745   gdb_assert (HOST_CHAR_BIT == 8);
7746   if (*buf == '\0')
7747     {
7748       *bytes_read_ptr = 1;
7749       return NULL;
7750     }
7751   *bytes_read_ptr = strlen ((char *) buf) + 1;
7752   return (char *) buf;
7753 }
7754
7755 static char *
7756 read_indirect_string (bfd *abfd, gdb_byte *buf,
7757                       const struct comp_unit_head *cu_header,
7758                       unsigned int *bytes_read_ptr)
7759 {
7760   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
7761
7762   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->str);
7763   if (dwarf2_per_objfile->str.buffer == NULL)
7764     {
7765       error (_("DW_FORM_strp used without .debug_str section [in module %s]"),
7766                       bfd_get_filename (abfd));
7767       return NULL;
7768     }
7769   if (str_offset >= dwarf2_per_objfile->str.size)
7770     {
7771       error (_("DW_FORM_strp pointing outside of .debug_str section [in module %s]"),
7772                       bfd_get_filename (abfd));
7773       return NULL;
7774     }
7775   gdb_assert (HOST_CHAR_BIT == 8);
7776   if (dwarf2_per_objfile->str.buffer[str_offset] == '\0')
7777     return NULL;
7778   return (char *) (dwarf2_per_objfile->str.buffer + str_offset);
7779 }
7780
7781 static unsigned long
7782 read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
7783 {
7784   unsigned long result;
7785   unsigned int num_read;
7786   int i, shift;
7787   unsigned char byte;
7788
7789   result = 0;
7790   shift = 0;
7791   num_read = 0;
7792   i = 0;
7793   while (1)
7794     {
7795       byte = bfd_get_8 (abfd, buf);
7796       buf++;
7797       num_read++;
7798       result |= ((unsigned long)(byte & 127) << shift);
7799       if ((byte & 128) == 0)
7800         {
7801           break;
7802         }
7803       shift += 7;
7804     }
7805   *bytes_read_ptr = num_read;
7806   return result;
7807 }
7808
7809 static long
7810 read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
7811 {
7812   long result;
7813   int i, shift, num_read;
7814   unsigned char byte;
7815
7816   result = 0;
7817   shift = 0;
7818   num_read = 0;
7819   i = 0;
7820   while (1)
7821     {
7822       byte = bfd_get_8 (abfd, buf);
7823       buf++;
7824       num_read++;
7825       result |= ((long)(byte & 127) << shift);
7826       shift += 7;
7827       if ((byte & 128) == 0)
7828         {
7829           break;
7830         }
7831     }
7832   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
7833     result |= -(((long)1) << shift);
7834   *bytes_read_ptr = num_read;
7835   return result;
7836 }
7837
7838 /* Return a pointer to just past the end of an LEB128 number in BUF.  */
7839
7840 static gdb_byte *
7841 skip_leb128 (bfd *abfd, gdb_byte *buf)
7842 {
7843   int byte;
7844
7845   while (1)
7846     {
7847       byte = bfd_get_8 (abfd, buf);
7848       buf++;
7849       if ((byte & 128) == 0)
7850         return buf;
7851     }
7852 }
7853
7854 static void
7855 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
7856 {
7857   switch (lang)
7858     {
7859     case DW_LANG_C89:
7860     case DW_LANG_C99:
7861     case DW_LANG_C:
7862       cu->language = language_c;
7863       break;
7864     case DW_LANG_C_plus_plus:
7865       cu->language = language_cplus;
7866       break;
7867     case DW_LANG_D:
7868       cu->language = language_d;
7869       break;
7870     case DW_LANG_Fortran77:
7871     case DW_LANG_Fortran90:
7872     case DW_LANG_Fortran95:
7873       cu->language = language_fortran;
7874       break;
7875     case DW_LANG_Mips_Assembler:
7876       cu->language = language_asm;
7877       break;
7878     case DW_LANG_Java:
7879       cu->language = language_java;
7880       break;
7881     case DW_LANG_Ada83:
7882     case DW_LANG_Ada95:
7883       cu->language = language_ada;
7884       break;
7885     case DW_LANG_Modula2:
7886       cu->language = language_m2;
7887       break;
7888     case DW_LANG_Pascal83:
7889       cu->language = language_pascal;
7890       break;
7891     case DW_LANG_ObjC:
7892       cu->language = language_objc;
7893       break;
7894     case DW_LANG_Cobol74:
7895     case DW_LANG_Cobol85:
7896     default:
7897       cu->language = language_minimal;
7898       break;
7899     }
7900   cu->language_defn = language_def (cu->language);
7901 }
7902
7903 /* Return the named attribute or NULL if not there.  */
7904
7905 static struct attribute *
7906 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
7907 {
7908   unsigned int i;
7909   struct attribute *spec = NULL;
7910
7911   for (i = 0; i < die->num_attrs; ++i)
7912     {
7913       if (die->attrs[i].name == name)
7914         return &die->attrs[i];
7915       if (die->attrs[i].name == DW_AT_specification
7916           || die->attrs[i].name == DW_AT_abstract_origin)
7917         spec = &die->attrs[i];
7918     }
7919
7920   if (spec)
7921     {
7922       die = follow_die_ref (die, spec, &cu);
7923       return dwarf2_attr (die, name, cu);
7924     }
7925
7926   return NULL;
7927 }
7928
7929 /* Return the named attribute or NULL if not there,
7930    but do not follow DW_AT_specification, etc.
7931    This is for use in contexts where we're reading .debug_types dies.
7932    Following DW_AT_specification, DW_AT_abstract_origin will take us
7933    back up the chain, and we want to go down.  */
7934
7935 static struct attribute *
7936 dwarf2_attr_no_follow (struct die_info *die, unsigned int name,
7937                        struct dwarf2_cu *cu)
7938 {
7939   unsigned int i;
7940
7941   for (i = 0; i < die->num_attrs; ++i)
7942     if (die->attrs[i].name == name)
7943       return &die->attrs[i];
7944
7945   return NULL;
7946 }
7947
7948 /* Return non-zero iff the attribute NAME is defined for the given DIE,
7949    and holds a non-zero value.  This function should only be used for
7950    DW_FORM_flag or DW_FORM_flag_present attributes.  */
7951
7952 static int
7953 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
7954 {
7955   struct attribute *attr = dwarf2_attr (die, name, cu);
7956
7957   return (attr && DW_UNSND (attr));
7958 }
7959
7960 static int
7961 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
7962 {
7963   /* A DIE is a declaration if it has a DW_AT_declaration attribute
7964      which value is non-zero.  However, we have to be careful with
7965      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
7966      (via dwarf2_flag_true_p) follows this attribute.  So we may
7967      end up accidently finding a declaration attribute that belongs
7968      to a different DIE referenced by the specification attribute,
7969      even though the given DIE does not have a declaration attribute.  */
7970   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
7971           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
7972 }
7973
7974 /* Return the die giving the specification for DIE, if there is
7975    one.  *SPEC_CU is the CU containing DIE on input, and the CU
7976    containing the return value on output.  If there is no
7977    specification, but there is an abstract origin, that is
7978    returned.  */
7979
7980 static struct die_info *
7981 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
7982 {
7983   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
7984                                              *spec_cu);
7985
7986   if (spec_attr == NULL)
7987     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
7988
7989   if (spec_attr == NULL)
7990     return NULL;
7991   else
7992     return follow_die_ref (die, spec_attr, spec_cu);
7993 }
7994
7995 /* Free the line_header structure *LH, and any arrays and strings it
7996    refers to.  */
7997 static void
7998 free_line_header (struct line_header *lh)
7999 {
8000   if (lh->standard_opcode_lengths)
8001     xfree (lh->standard_opcode_lengths);
8002
8003   /* Remember that all the lh->file_names[i].name pointers are
8004      pointers into debug_line_buffer, and don't need to be freed.  */
8005   if (lh->file_names)
8006     xfree (lh->file_names);
8007
8008   /* Similarly for the include directory names.  */
8009   if (lh->include_dirs)
8010     xfree (lh->include_dirs);
8011
8012   xfree (lh);
8013 }
8014
8015
8016 /* Add an entry to LH's include directory table.  */
8017 static void
8018 add_include_dir (struct line_header *lh, char *include_dir)
8019 {
8020   /* Grow the array if necessary.  */
8021   if (lh->include_dirs_size == 0)
8022     {
8023       lh->include_dirs_size = 1; /* for testing */
8024       lh->include_dirs = xmalloc (lh->include_dirs_size
8025                                   * sizeof (*lh->include_dirs));
8026     }
8027   else if (lh->num_include_dirs >= lh->include_dirs_size)
8028     {
8029       lh->include_dirs_size *= 2;
8030       lh->include_dirs = xrealloc (lh->include_dirs,
8031                                    (lh->include_dirs_size
8032                                     * sizeof (*lh->include_dirs)));
8033     }
8034
8035   lh->include_dirs[lh->num_include_dirs++] = include_dir;
8036 }
8037  
8038
8039 /* Add an entry to LH's file name table.  */
8040 static void
8041 add_file_name (struct line_header *lh,
8042                char *name,
8043                unsigned int dir_index,
8044                unsigned int mod_time,
8045                unsigned int length)
8046 {
8047   struct file_entry *fe;
8048
8049   /* Grow the array if necessary.  */
8050   if (lh->file_names_size == 0)
8051     {
8052       lh->file_names_size = 1; /* for testing */
8053       lh->file_names = xmalloc (lh->file_names_size
8054                                 * sizeof (*lh->file_names));
8055     }
8056   else if (lh->num_file_names >= lh->file_names_size)
8057     {
8058       lh->file_names_size *= 2;
8059       lh->file_names = xrealloc (lh->file_names,
8060                                  (lh->file_names_size
8061                                   * sizeof (*lh->file_names)));
8062     }
8063
8064   fe = &lh->file_names[lh->num_file_names++];
8065   fe->name = name;
8066   fe->dir_index = dir_index;
8067   fe->mod_time = mod_time;
8068   fe->length = length;
8069   fe->included_p = 0;
8070   fe->symtab = NULL;
8071 }
8072  
8073
8074 /* Read the statement program header starting at OFFSET in
8075    .debug_line, according to the endianness of ABFD.  Return a pointer
8076    to a struct line_header, allocated using xmalloc.
8077
8078    NOTE: the strings in the include directory and file name tables of
8079    the returned object point into debug_line_buffer, and must not be
8080    freed.  */
8081 static struct line_header *
8082 dwarf_decode_line_header (unsigned int offset, bfd *abfd,
8083                           struct dwarf2_cu *cu)
8084 {
8085   struct cleanup *back_to;
8086   struct line_header *lh;
8087   gdb_byte *line_ptr;
8088   unsigned int bytes_read, offset_size;
8089   int i;
8090   char *cur_dir, *cur_file;
8091
8092   dwarf2_read_section (dwarf2_per_objfile->objfile, &dwarf2_per_objfile->line);
8093   if (dwarf2_per_objfile->line.buffer == NULL)
8094     {
8095       complaint (&symfile_complaints, _("missing .debug_line section"));
8096       return 0;
8097     }
8098
8099   /* Make sure that at least there's room for the total_length field.
8100      That could be 12 bytes long, but we're just going to fudge that.  */
8101   if (offset + 4 >= dwarf2_per_objfile->line.size)
8102     {
8103       dwarf2_statement_list_fits_in_line_number_section_complaint ();
8104       return 0;
8105     }
8106
8107   lh = xmalloc (sizeof (*lh));
8108   memset (lh, 0, sizeof (*lh));
8109   back_to = make_cleanup ((make_cleanup_ftype *) free_line_header,
8110                           (void *) lh);
8111
8112   line_ptr = dwarf2_per_objfile->line.buffer + offset;
8113
8114   /* Read in the header.  */
8115   lh->total_length = 
8116     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
8117                                             &bytes_read, &offset_size);
8118   line_ptr += bytes_read;
8119   if (line_ptr + lh->total_length > (dwarf2_per_objfile->line.buffer
8120                                      + dwarf2_per_objfile->line.size))
8121     {
8122       dwarf2_statement_list_fits_in_line_number_section_complaint ();
8123       return 0;
8124     }
8125   lh->statement_program_end = line_ptr + lh->total_length;
8126   lh->version = read_2_bytes (abfd, line_ptr);
8127   line_ptr += 2;
8128   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
8129   line_ptr += offset_size;
8130   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
8131   line_ptr += 1;
8132   if (lh->version >= 4)
8133     {
8134       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
8135       line_ptr += 1;
8136     }
8137   else
8138     lh->maximum_ops_per_instruction = 1;
8139
8140   if (lh->maximum_ops_per_instruction == 0)
8141     {
8142       lh->maximum_ops_per_instruction = 1;
8143       complaint (&symfile_complaints,
8144                  _("invalid maximum_ops_per_instruction in `.debug_line' section"));
8145     }
8146
8147   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
8148   line_ptr += 1;
8149   lh->line_base = read_1_signed_byte (abfd, line_ptr);
8150   line_ptr += 1;
8151   lh->line_range = read_1_byte (abfd, line_ptr);
8152   line_ptr += 1;
8153   lh->opcode_base = read_1_byte (abfd, line_ptr);
8154   line_ptr += 1;
8155   lh->standard_opcode_lengths
8156     = xmalloc (lh->opcode_base * sizeof (lh->standard_opcode_lengths[0]));
8157
8158   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
8159   for (i = 1; i < lh->opcode_base; ++i)
8160     {
8161       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
8162       line_ptr += 1;
8163     }
8164
8165   /* Read directory table.  */
8166   while ((cur_dir = read_string (abfd, line_ptr, &bytes_read)) != NULL)
8167     {
8168       line_ptr += bytes_read;
8169       add_include_dir (lh, cur_dir);
8170     }
8171   line_ptr += bytes_read;
8172
8173   /* Read file name table.  */
8174   while ((cur_file = read_string (abfd, line_ptr, &bytes_read)) != NULL)
8175     {
8176       unsigned int dir_index, mod_time, length;
8177
8178       line_ptr += bytes_read;
8179       dir_index = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8180       line_ptr += bytes_read;
8181       mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8182       line_ptr += bytes_read;
8183       length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8184       line_ptr += bytes_read;
8185
8186       add_file_name (lh, cur_file, dir_index, mod_time, length);
8187     }
8188   line_ptr += bytes_read;
8189   lh->statement_program_start = line_ptr; 
8190
8191   if (line_ptr > (dwarf2_per_objfile->line.buffer
8192                   + dwarf2_per_objfile->line.size))
8193     complaint (&symfile_complaints,
8194                _("line number info header doesn't fit in `.debug_line' section"));
8195
8196   discard_cleanups (back_to);
8197   return lh;
8198 }
8199
8200 /* This function exists to work around a bug in certain compilers
8201    (particularly GCC 2.95), in which the first line number marker of a
8202    function does not show up until after the prologue, right before
8203    the second line number marker.  This function shifts ADDRESS down
8204    to the beginning of the function if necessary, and is called on
8205    addresses passed to record_line.  */
8206
8207 static CORE_ADDR
8208 check_cu_functions (CORE_ADDR address, struct dwarf2_cu *cu)
8209 {
8210   struct function_range *fn;
8211
8212   /* Find the function_range containing address.  */
8213   if (!cu->first_fn)
8214     return address;
8215
8216   if (!cu->cached_fn)
8217     cu->cached_fn = cu->first_fn;
8218
8219   fn = cu->cached_fn;
8220   while (fn)
8221     if (fn->lowpc <= address && fn->highpc > address)
8222       goto found;
8223     else
8224       fn = fn->next;
8225
8226   fn = cu->first_fn;
8227   while (fn && fn != cu->cached_fn)
8228     if (fn->lowpc <= address && fn->highpc > address)
8229       goto found;
8230     else
8231       fn = fn->next;
8232
8233   return address;
8234
8235  found:
8236   if (fn->seen_line)
8237     return address;
8238   if (address != fn->lowpc)
8239     complaint (&symfile_complaints,
8240                _("misplaced first line number at 0x%lx for '%s'"),
8241                (unsigned long) address, fn->name);
8242   fn->seen_line = 1;
8243   return fn->lowpc;
8244 }
8245
8246 /* Decode the Line Number Program (LNP) for the given line_header
8247    structure and CU.  The actual information extracted and the type
8248    of structures created from the LNP depends on the value of PST.
8249
8250    1. If PST is NULL, then this procedure uses the data from the program
8251       to create all necessary symbol tables, and their linetables.
8252       The compilation directory of the file is passed in COMP_DIR,
8253       and must not be NULL.
8254    
8255    2. If PST is not NULL, this procedure reads the program to determine
8256       the list of files included by the unit represented by PST, and
8257       builds all the associated partial symbol tables.  In this case,
8258       the value of COMP_DIR is ignored, and can thus be NULL (the COMP_DIR
8259       is not used to compute the full name of the symtab, and therefore
8260       omitting it when building the partial symtab does not introduce
8261       the potential for inconsistency - a partial symtab and its associated
8262       symbtab having a different fullname -).  */
8263
8264 static void
8265 dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
8266                     struct dwarf2_cu *cu, struct partial_symtab *pst)
8267 {
8268   gdb_byte *line_ptr, *extended_end;
8269   gdb_byte *line_end;
8270   unsigned int bytes_read, extended_len;
8271   unsigned char op_code, extended_op, adj_opcode;
8272   CORE_ADDR baseaddr;
8273   struct objfile *objfile = cu->objfile;
8274   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8275   const int decode_for_pst_p = (pst != NULL);
8276   struct subfile *last_subfile = NULL, *first_subfile = current_subfile;
8277
8278   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8279
8280   line_ptr = lh->statement_program_start;
8281   line_end = lh->statement_program_end;
8282
8283   /* Read the statement sequences until there's nothing left.  */
8284   while (line_ptr < line_end)
8285     {
8286       /* state machine registers  */
8287       CORE_ADDR address = 0;
8288       unsigned int file = 1;
8289       unsigned int line = 1;
8290       unsigned int column = 0;
8291       int is_stmt = lh->default_is_stmt;
8292       int basic_block = 0;
8293       int end_sequence = 0;
8294       CORE_ADDR addr;
8295       unsigned char op_index = 0;
8296
8297       if (!decode_for_pst_p && lh->num_file_names >= file)
8298         {
8299           /* Start a subfile for the current file of the state machine.  */
8300           /* lh->include_dirs and lh->file_names are 0-based, but the
8301              directory and file name numbers in the statement program
8302              are 1-based.  */
8303           struct file_entry *fe = &lh->file_names[file - 1];
8304           char *dir = NULL;
8305
8306           if (fe->dir_index)
8307             dir = lh->include_dirs[fe->dir_index - 1];
8308
8309           dwarf2_start_subfile (fe->name, dir, comp_dir);
8310         }
8311
8312       /* Decode the table.  */
8313       while (!end_sequence)
8314         {
8315           op_code = read_1_byte (abfd, line_ptr);
8316           line_ptr += 1;
8317           if (line_ptr > line_end)
8318             {
8319               dwarf2_debug_line_missing_end_sequence_complaint ();
8320               break;
8321             }
8322
8323           if (op_code >= lh->opcode_base)
8324             {           
8325               /* Special operand.  */
8326               adj_opcode = op_code - lh->opcode_base;
8327               address += (((op_index + (adj_opcode / lh->line_range))
8328                            / lh->maximum_ops_per_instruction)
8329                           * lh->minimum_instruction_length);
8330               op_index = ((op_index + (adj_opcode / lh->line_range))
8331                           % lh->maximum_ops_per_instruction);
8332               line += lh->line_base + (adj_opcode % lh->line_range);
8333               if (lh->num_file_names < file || file == 0)
8334                 dwarf2_debug_line_missing_file_complaint ();
8335               /* For now we ignore lines not starting on an
8336                  instruction boundary.  */
8337               else if (op_index == 0)
8338                 {
8339                   lh->file_names[file - 1].included_p = 1;
8340                   if (!decode_for_pst_p && is_stmt)
8341                     {
8342                       if (last_subfile != current_subfile)
8343                         {
8344                           addr = gdbarch_addr_bits_remove (gdbarch, address);
8345                           if (last_subfile)
8346                             record_line (last_subfile, 0, addr);
8347                           last_subfile = current_subfile;
8348                         }
8349                       /* Append row to matrix using current values.  */
8350                       addr = check_cu_functions (address, cu);
8351                       addr = gdbarch_addr_bits_remove (gdbarch, addr);
8352                       record_line (current_subfile, line, addr);
8353                     }
8354                 }
8355               basic_block = 0;
8356             }
8357           else switch (op_code)
8358             {
8359             case DW_LNS_extended_op:
8360               extended_len = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8361               line_ptr += bytes_read;
8362               extended_end = line_ptr + extended_len;
8363               extended_op = read_1_byte (abfd, line_ptr);
8364               line_ptr += 1;
8365               switch (extended_op)
8366                 {
8367                 case DW_LNE_end_sequence:
8368                   end_sequence = 1;
8369                   break;
8370                 case DW_LNE_set_address:
8371                   address = read_address (abfd, line_ptr, cu, &bytes_read);
8372                   op_index = 0;
8373                   line_ptr += bytes_read;
8374                   address += baseaddr;
8375                   break;
8376                 case DW_LNE_define_file:
8377                   {
8378                     char *cur_file;
8379                     unsigned int dir_index, mod_time, length;
8380                     
8381                     cur_file = read_string (abfd, line_ptr, &bytes_read);
8382                     line_ptr += bytes_read;
8383                     dir_index =
8384                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8385                     line_ptr += bytes_read;
8386                     mod_time =
8387                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8388                     line_ptr += bytes_read;
8389                     length =
8390                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8391                     line_ptr += bytes_read;
8392                     add_file_name (lh, cur_file, dir_index, mod_time, length);
8393                   }
8394                   break;
8395                 case DW_LNE_set_discriminator:
8396                   /* The discriminator is not interesting to the debugger;
8397                      just ignore it.  */
8398                   line_ptr = extended_end;
8399                   break;
8400                 default:
8401                   complaint (&symfile_complaints,
8402                              _("mangled .debug_line section"));
8403                   return;
8404                 }
8405               /* Make sure that we parsed the extended op correctly.  If e.g.
8406                  we expected a different address size than the producer used,
8407                  we may have read the wrong number of bytes.  */
8408               if (line_ptr != extended_end)
8409                 {
8410                   complaint (&symfile_complaints,
8411                              _("mangled .debug_line section"));
8412                   return;
8413                 }
8414               break;
8415             case DW_LNS_copy:
8416               if (lh->num_file_names < file || file == 0)
8417                 dwarf2_debug_line_missing_file_complaint ();
8418               else
8419                 {
8420                   lh->file_names[file - 1].included_p = 1;
8421                   if (!decode_for_pst_p && is_stmt)
8422                     {
8423                       if (last_subfile != current_subfile)
8424                         {
8425                           addr = gdbarch_addr_bits_remove (gdbarch, address);
8426                           if (last_subfile)
8427                             record_line (last_subfile, 0, addr);
8428                           last_subfile = current_subfile;
8429                         }
8430                       addr = check_cu_functions (address, cu);
8431                       addr = gdbarch_addr_bits_remove (gdbarch, addr);
8432                       record_line (current_subfile, line, addr);
8433                     }
8434                 }
8435               basic_block = 0;
8436               break;
8437             case DW_LNS_advance_pc:
8438               {
8439                 CORE_ADDR adjust
8440                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8441
8442                 address += (((op_index + adjust)
8443                              / lh->maximum_ops_per_instruction)
8444                             * lh->minimum_instruction_length);
8445                 op_index = ((op_index + adjust)
8446                             % lh->maximum_ops_per_instruction);
8447                 line_ptr += bytes_read;
8448               }
8449               break;
8450             case DW_LNS_advance_line:
8451               line += read_signed_leb128 (abfd, line_ptr, &bytes_read);
8452               line_ptr += bytes_read;
8453               break;
8454             case DW_LNS_set_file:
8455               {
8456                 /* The arrays lh->include_dirs and lh->file_names are
8457                    0-based, but the directory and file name numbers in
8458                    the statement program are 1-based.  */
8459                 struct file_entry *fe;
8460                 char *dir = NULL;
8461
8462                 file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8463                 line_ptr += bytes_read;
8464                 if (lh->num_file_names < file || file == 0)
8465                   dwarf2_debug_line_missing_file_complaint ();
8466                 else
8467                   {
8468                     fe = &lh->file_names[file - 1];
8469                     if (fe->dir_index)
8470                       dir = lh->include_dirs[fe->dir_index - 1];
8471                     if (!decode_for_pst_p)
8472                       {
8473                         last_subfile = current_subfile;
8474                         dwarf2_start_subfile (fe->name, dir, comp_dir);
8475                       }
8476                   }
8477               }
8478               break;
8479             case DW_LNS_set_column:
8480               column = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8481               line_ptr += bytes_read;
8482               break;
8483             case DW_LNS_negate_stmt:
8484               is_stmt = (!is_stmt);
8485               break;
8486             case DW_LNS_set_basic_block:
8487               basic_block = 1;
8488               break;
8489             /* Add to the address register of the state machine the
8490                address increment value corresponding to special opcode
8491                255.  I.e., this value is scaled by the minimum
8492                instruction length since special opcode 255 would have
8493                scaled the the increment.  */
8494             case DW_LNS_const_add_pc:
8495               {
8496                 CORE_ADDR adjust = (255 - lh->opcode_base) / lh->line_range;
8497
8498                 address += (((op_index + adjust)
8499                              / lh->maximum_ops_per_instruction)
8500                             * lh->minimum_instruction_length);
8501                 op_index = ((op_index + adjust)
8502                             % lh->maximum_ops_per_instruction);
8503               }
8504               break;
8505             case DW_LNS_fixed_advance_pc:
8506               address += read_2_bytes (abfd, line_ptr);
8507               op_index = 0;
8508               line_ptr += 2;
8509               break;
8510             default:
8511               {
8512                 /* Unknown standard opcode, ignore it.  */
8513                 int i;
8514
8515                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
8516                   {
8517                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
8518                     line_ptr += bytes_read;
8519                   }
8520               }
8521             }
8522         }
8523       if (lh->num_file_names < file || file == 0)
8524         dwarf2_debug_line_missing_file_complaint ();
8525       else
8526         {
8527           lh->file_names[file - 1].included_p = 1;
8528           if (!decode_for_pst_p)
8529             {
8530               addr = gdbarch_addr_bits_remove (gdbarch, address);
8531               record_line (current_subfile, 0, addr);
8532             }
8533         }
8534     }
8535
8536   if (decode_for_pst_p)
8537     {
8538       int file_index;
8539
8540       /* Now that we're done scanning the Line Header Program, we can
8541          create the psymtab of each included file.  */
8542       for (file_index = 0; file_index < lh->num_file_names; file_index++)
8543         if (lh->file_names[file_index].included_p == 1)
8544           {
8545             const struct file_entry fe = lh->file_names [file_index];
8546             char *include_name = fe.name;
8547             char *dir_name = NULL;
8548             char *pst_filename = pst->filename;
8549
8550             if (fe.dir_index)
8551               dir_name = lh->include_dirs[fe.dir_index - 1];
8552
8553             if (!IS_ABSOLUTE_PATH (include_name) && dir_name != NULL)
8554               {
8555                 include_name = concat (dir_name, SLASH_STRING,
8556                                        include_name, (char *)NULL);
8557                 make_cleanup (xfree, include_name);
8558               }
8559
8560             if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
8561               {
8562                 pst_filename = concat (pst->dirname, SLASH_STRING,
8563                                        pst_filename, (char *)NULL);
8564                 make_cleanup (xfree, pst_filename);
8565               }
8566
8567             if (strcmp (include_name, pst_filename) != 0)
8568               dwarf2_create_include_psymtab (include_name, pst, objfile);
8569           }
8570     }
8571   else
8572     {
8573       /* Make sure a symtab is created for every file, even files
8574          which contain only variables (i.e. no code with associated
8575          line numbers).  */
8576
8577       int i;
8578       struct file_entry *fe;
8579
8580       for (i = 0; i < lh->num_file_names; i++)
8581         {
8582           char *dir = NULL;
8583
8584           fe = &lh->file_names[i];
8585           if (fe->dir_index)
8586             dir = lh->include_dirs[fe->dir_index - 1];
8587           dwarf2_start_subfile (fe->name, dir, comp_dir);
8588
8589           /* Skip the main file; we don't need it, and it must be
8590              allocated last, so that it will show up before the
8591              non-primary symtabs in the objfile's symtab list.  */
8592           if (current_subfile == first_subfile)
8593             continue;
8594
8595           if (current_subfile->symtab == NULL)
8596             current_subfile->symtab = allocate_symtab (current_subfile->name,
8597                                                        cu->objfile);
8598           fe->symtab = current_subfile->symtab;
8599         }
8600     }
8601 }
8602
8603 /* Start a subfile for DWARF.  FILENAME is the name of the file and
8604    DIRNAME the name of the source directory which contains FILENAME
8605    or NULL if not known.  COMP_DIR is the compilation directory for the
8606    linetable's compilation unit or NULL if not known.
8607    This routine tries to keep line numbers from identical absolute and
8608    relative file names in a common subfile.
8609
8610    Using the `list' example from the GDB testsuite, which resides in
8611    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
8612    of /srcdir/list0.c yields the following debugging information for list0.c:
8613
8614    DW_AT_name:          /srcdir/list0.c
8615    DW_AT_comp_dir:              /compdir
8616    files.files[0].name: list0.h
8617    files.files[0].dir:  /srcdir
8618    files.files[1].name: list0.c
8619    files.files[1].dir:  /srcdir
8620
8621    The line number information for list0.c has to end up in a single
8622    subfile, so that `break /srcdir/list0.c:1' works as expected.
8623    start_subfile will ensure that this happens provided that we pass the
8624    concatenation of files.files[1].dir and files.files[1].name as the
8625    subfile's name.  */
8626
8627 static void
8628 dwarf2_start_subfile (char *filename, char *dirname, char *comp_dir)
8629 {
8630   char *fullname;
8631
8632   /* While reading the DIEs, we call start_symtab(DW_AT_name, DW_AT_comp_dir).
8633      `start_symtab' will always pass the contents of DW_AT_comp_dir as
8634      second argument to start_subfile.  To be consistent, we do the
8635      same here.  In order not to lose the line information directory,
8636      we concatenate it to the filename when it makes sense.
8637      Note that the Dwarf3 standard says (speaking of filenames in line
8638      information): ``The directory index is ignored for file names
8639      that represent full path names''.  Thus ignoring dirname in the
8640      `else' branch below isn't an issue.  */
8641
8642   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
8643     fullname = concat (dirname, SLASH_STRING, filename, (char *)NULL);
8644   else
8645     fullname = filename;
8646
8647   start_subfile (fullname, comp_dir);
8648
8649   if (fullname != filename)
8650     xfree (fullname);
8651 }
8652
8653 static void
8654 var_decode_location (struct attribute *attr, struct symbol *sym,
8655                      struct dwarf2_cu *cu)
8656 {
8657   struct objfile *objfile = cu->objfile;
8658   struct comp_unit_head *cu_header = &cu->header;
8659
8660   /* NOTE drow/2003-01-30: There used to be a comment and some special
8661      code here to turn a symbol with DW_AT_external and a
8662      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
8663      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
8664      with some versions of binutils) where shared libraries could have
8665      relocations against symbols in their debug information - the
8666      minimal symbol would have the right address, but the debug info
8667      would not.  It's no longer necessary, because we will explicitly
8668      apply relocations when we read in the debug information now.  */
8669
8670   /* A DW_AT_location attribute with no contents indicates that a
8671      variable has been optimized away.  */
8672   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
8673     {
8674       SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
8675       return;
8676     }
8677
8678   /* Handle one degenerate form of location expression specially, to
8679      preserve GDB's previous behavior when section offsets are
8680      specified.  If this is just a DW_OP_addr then mark this symbol
8681      as LOC_STATIC.  */
8682
8683   if (attr_form_is_block (attr)
8684       && DW_BLOCK (attr)->size == 1 + cu_header->addr_size
8685       && DW_BLOCK (attr)->data[0] == DW_OP_addr)
8686     {
8687       unsigned int dummy;
8688
8689       SYMBOL_VALUE_ADDRESS (sym) =
8690         read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
8691       SYMBOL_CLASS (sym) = LOC_STATIC;
8692       fixup_symbol_section (sym, objfile);
8693       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
8694                                               SYMBOL_SECTION (sym));
8695       return;
8696     }
8697
8698   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
8699      expression evaluator, and use LOC_COMPUTED only when necessary
8700      (i.e. when the value of a register or memory location is
8701      referenced, or a thread-local block, etc.).  Then again, it might
8702      not be worthwhile.  I'm assuming that it isn't unless performance
8703      or memory numbers show me otherwise.  */
8704
8705   dwarf2_symbol_mark_computed (attr, sym, cu);
8706   SYMBOL_CLASS (sym) = LOC_COMPUTED;
8707 }
8708
8709 /* Given a pointer to a DWARF information entry, figure out if we need
8710    to make a symbol table entry for it, and if so, create a new entry
8711    and return a pointer to it.
8712    If TYPE is NULL, determine symbol type from the die, otherwise
8713    used the passed type.  */
8714
8715 static struct symbol *
8716 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
8717 {
8718   struct objfile *objfile = cu->objfile;
8719   struct symbol *sym = NULL;
8720   char *name;
8721   struct attribute *attr = NULL;
8722   struct attribute *attr2 = NULL;
8723   CORE_ADDR baseaddr;
8724   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
8725
8726   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8727
8728   name = dwarf2_name (die, cu);
8729   if (name)
8730     {
8731       const char *linkagename;
8732
8733       sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
8734                                              sizeof (struct symbol));
8735       OBJSTAT (objfile, n_syms++);
8736       memset (sym, 0, sizeof (struct symbol));
8737
8738       /* Cache this symbol's name and the name's demangled form (if any).  */
8739       SYMBOL_LANGUAGE (sym) = cu->language;
8740       linkagename = dwarf2_physname (name, die, cu);
8741       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
8742
8743       /* Fortran does not have mangling standard and the mangling does differ
8744          between gfortran, iFort etc.  */
8745       if (cu->language == language_fortran
8746           && sym->ginfo.language_specific.cplus_specific.demangled_name == NULL)
8747         sym->ginfo.language_specific.cplus_specific.demangled_name
8748           = (char *) dwarf2_full_name (name, die, cu);
8749
8750       /* Default assumptions.
8751          Use the passed type or decode it from the die.  */
8752       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
8753       SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
8754       if (type != NULL)
8755         SYMBOL_TYPE (sym) = type;
8756       else
8757         SYMBOL_TYPE (sym) = die_type (die, cu);
8758       attr = dwarf2_attr (die,
8759                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
8760                           cu);
8761       if (attr)
8762         {
8763           SYMBOL_LINE (sym) = DW_UNSND (attr);
8764         }
8765
8766       attr = dwarf2_attr (die,
8767                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
8768                           cu);
8769       if (attr)
8770         {
8771           int file_index = DW_UNSND (attr);
8772
8773           if (cu->line_header == NULL
8774               || file_index > cu->line_header->num_file_names)
8775             complaint (&symfile_complaints,
8776                        _("file index out of range"));
8777           else if (file_index > 0)
8778             {
8779               struct file_entry *fe;
8780
8781               fe = &cu->line_header->file_names[file_index - 1];
8782               SYMBOL_SYMTAB (sym) = fe->symtab;
8783             }
8784         }
8785
8786       switch (die->tag)
8787         {
8788         case DW_TAG_label:
8789           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
8790           if (attr)
8791             {
8792               SYMBOL_VALUE_ADDRESS (sym) = DW_ADDR (attr) + baseaddr;
8793             }
8794           SYMBOL_CLASS (sym) = LOC_LABEL;
8795           break;
8796         case DW_TAG_subprogram:
8797           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
8798              finish_block.  */
8799           SYMBOL_CLASS (sym) = LOC_BLOCK;
8800           attr2 = dwarf2_attr (die, DW_AT_external, cu);
8801           if ((attr2 && (DW_UNSND (attr2) != 0))
8802               || cu->language == language_ada)
8803             {
8804               /* Subprograms marked external are stored as a global symbol.
8805                  Ada subprograms, whether marked external or not, are always
8806                  stored as a global symbol, because we want to be able to
8807                  access them globally.  For instance, we want to be able
8808                  to break on a nested subprogram without having to
8809                  specify the context.  */
8810               add_symbol_to_list (sym, &global_symbols);
8811             }
8812           else
8813             {
8814               add_symbol_to_list (sym, cu->list_in_scope);
8815             }
8816           break;
8817         case DW_TAG_inlined_subroutine:
8818           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
8819              finish_block.  */
8820           SYMBOL_CLASS (sym) = LOC_BLOCK;
8821           SYMBOL_INLINED (sym) = 1;
8822           /* Do not add the symbol to any lists.  It will be found via
8823              BLOCK_FUNCTION from the blockvector.  */
8824           break;
8825         case DW_TAG_variable:
8826           /* Compilation with minimal debug info may result in variables
8827              with missing type entries. Change the misleading `void' type
8828              to something sensible.  */
8829           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
8830             SYMBOL_TYPE (sym)
8831               = objfile_type (objfile)->nodebug_data_symbol;
8832
8833           attr = dwarf2_attr (die, DW_AT_const_value, cu);
8834           if (attr)
8835             {
8836               dwarf2_const_value (attr, sym, cu);
8837               attr2 = dwarf2_attr (die, DW_AT_external, cu);
8838               if (attr2 && (DW_UNSND (attr2) != 0))
8839                 add_symbol_to_list (sym, &global_symbols);
8840               else
8841                 add_symbol_to_list (sym, cu->list_in_scope);
8842               break;
8843             }
8844           attr = dwarf2_attr (die, DW_AT_location, cu);
8845           if (attr)
8846             {
8847               var_decode_location (attr, sym, cu);
8848               attr2 = dwarf2_attr (die, DW_AT_external, cu);
8849               if (attr2 && (DW_UNSND (attr2) != 0))
8850                 {
8851                   struct pending **list_to_add;
8852
8853                   /* Workaround gfortran PR debug/40040 - it uses
8854                      DW_AT_location for variables in -fPIC libraries which may
8855                      get overriden by other libraries/executable and get
8856                      a different address.  Resolve it by the minimal symbol
8857                      which may come from inferior's executable using copy
8858                      relocation.  Make this workaround only for gfortran as for
8859                      other compilers GDB cannot guess the minimal symbol
8860                      Fortran mangling kind.  */
8861                   if (cu->language == language_fortran && die->parent
8862                       && die->parent->tag == DW_TAG_module
8863                       && cu->producer
8864                       && strncmp (cu->producer, "GNU Fortran ", 12) == 0)
8865                     SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
8866
8867                   /* A variable with DW_AT_external is never static,
8868                      but it may be block-scoped.  */
8869                   list_to_add = (cu->list_in_scope == &file_symbols
8870                                  ? &global_symbols : cu->list_in_scope);
8871                   add_symbol_to_list (sym, list_to_add);
8872                 }
8873               else
8874                 add_symbol_to_list (sym, cu->list_in_scope);
8875             }
8876           else
8877             {
8878               /* We do not know the address of this symbol.
8879                  If it is an external symbol and we have type information
8880                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
8881                  The address of the variable will then be determined from
8882                  the minimal symbol table whenever the variable is
8883                  referenced.  */
8884               attr2 = dwarf2_attr (die, DW_AT_external, cu);
8885               if (attr2 && (DW_UNSND (attr2) != 0)
8886                   && dwarf2_attr (die, DW_AT_type, cu) != NULL)
8887                 {
8888                   struct pending **list_to_add;
8889
8890                   /* A variable with DW_AT_external is never static, but it
8891                      may be block-scoped.  */
8892                   list_to_add = (cu->list_in_scope == &file_symbols
8893                                  ? &global_symbols : cu->list_in_scope);
8894
8895                   SYMBOL_CLASS (sym) = LOC_UNRESOLVED;
8896                   add_symbol_to_list (sym, list_to_add);
8897                 }
8898               else if (!die_is_declaration (die, cu))
8899                 {
8900                   /* Use the default LOC_OPTIMIZED_OUT class.  */
8901                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
8902                   add_symbol_to_list (sym, cu->list_in_scope);
8903                 }
8904             }
8905           break;
8906         case DW_TAG_formal_parameter:
8907           /* If we are inside a function, mark this as an argument.  If
8908              not, we might be looking at an argument to an inlined function
8909              when we do not have enough information to show inlined frames;
8910              pretend it's a local variable in that case so that the user can
8911              still see it.  */
8912           if (context_stack_depth > 0
8913               && context_stack[context_stack_depth - 1].name != NULL)
8914             SYMBOL_IS_ARGUMENT (sym) = 1;
8915           attr = dwarf2_attr (die, DW_AT_location, cu);
8916           if (attr)
8917             {
8918               var_decode_location (attr, sym, cu);
8919             }
8920           attr = dwarf2_attr (die, DW_AT_const_value, cu);
8921           if (attr)
8922             {
8923               dwarf2_const_value (attr, sym, cu);
8924             }
8925           attr = dwarf2_attr (die, DW_AT_variable_parameter, cu);
8926           if (attr && DW_UNSND (attr))
8927             {
8928               struct type *ref_type;
8929
8930               ref_type = lookup_reference_type (SYMBOL_TYPE (sym));
8931               SYMBOL_TYPE (sym) = ref_type;
8932             }
8933
8934           add_symbol_to_list (sym, cu->list_in_scope);
8935           break;
8936         case DW_TAG_unspecified_parameters:
8937           /* From varargs functions; gdb doesn't seem to have any
8938              interest in this information, so just ignore it for now.
8939              (FIXME?) */
8940           break;
8941         case DW_TAG_class_type:
8942         case DW_TAG_interface_type:
8943         case DW_TAG_structure_type:
8944         case DW_TAG_union_type:
8945         case DW_TAG_set_type:
8946         case DW_TAG_enumeration_type:
8947           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
8948           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
8949
8950           {
8951             /* NOTE: carlton/2003-11-10: C++ and Java class symbols shouldn't
8952                really ever be static objects: otherwise, if you try
8953                to, say, break of a class's method and you're in a file
8954                which doesn't mention that class, it won't work unless
8955                the check for all static symbols in lookup_symbol_aux
8956                saves you.  See the OtherFileClass tests in
8957                gdb.c++/namespace.exp.  */
8958
8959             struct pending **list_to_add;
8960
8961             list_to_add = (cu->list_in_scope == &file_symbols
8962                            && (cu->language == language_cplus
8963                                || cu->language == language_java)
8964                            ? &global_symbols : cu->list_in_scope);
8965           
8966             add_symbol_to_list (sym, list_to_add);
8967
8968             /* The semantics of C++ state that "struct foo { ... }" also
8969                defines a typedef for "foo".  A Java class declaration also
8970                defines a typedef for the class.  */
8971             if (cu->language == language_cplus
8972                 || cu->language == language_java
8973                 || cu->language == language_ada)
8974               {
8975                 /* The symbol's name is already allocated along with
8976                    this objfile, so we don't need to duplicate it for
8977                    the type.  */
8978                 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
8979                   TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
8980               }
8981           }
8982           break;
8983         case DW_TAG_typedef:
8984           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
8985           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
8986           add_symbol_to_list (sym, cu->list_in_scope);
8987           break;
8988         case DW_TAG_base_type:
8989         case DW_TAG_subrange_type:
8990         case DW_TAG_const_type:
8991         case DW_TAG_volatile_type:
8992           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
8993           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
8994           add_symbol_to_list (sym, cu->list_in_scope);
8995           break;
8996         case DW_TAG_enumerator:
8997           attr = dwarf2_attr (die, DW_AT_const_value, cu);
8998           if (attr)
8999             {
9000               dwarf2_const_value (attr, sym, cu);
9001             }
9002           {
9003             /* NOTE: carlton/2003-11-10: See comment above in the
9004                DW_TAG_class_type, etc. block.  */
9005
9006             struct pending **list_to_add;
9007
9008             list_to_add = (cu->list_in_scope == &file_symbols
9009                            && (cu->language == language_cplus
9010                                || cu->language == language_java)
9011                            ? &global_symbols : cu->list_in_scope);
9012           
9013             add_symbol_to_list (sym, list_to_add);
9014           }
9015           break;
9016         case DW_TAG_namespace:
9017           SYMBOL_CLASS (sym) = LOC_TYPEDEF;
9018           add_symbol_to_list (sym, &global_symbols);
9019           break;
9020         default:
9021           /* Not a tag we recognize.  Hopefully we aren't processing
9022              trash data, but since we must specifically ignore things
9023              we don't recognize, there is nothing else we should do at
9024              this point. */
9025           complaint (&symfile_complaints, _("unsupported tag: '%s'"),
9026                      dwarf_tag_name (die->tag));
9027           break;
9028         }
9029
9030       /* For the benefit of old versions of GCC, check for anonymous
9031          namespaces based on the demangled name.  */
9032       if (!processing_has_namespace_info
9033           && cu->language == language_cplus)
9034         cp_scan_for_anonymous_namespaces (sym);
9035     }
9036   return (sym);
9037 }
9038
9039 /* Copy constant value from an attribute to a symbol.  */
9040
9041 static void
9042 dwarf2_const_value (struct attribute *attr, struct symbol *sym,
9043                     struct dwarf2_cu *cu)
9044 {
9045   struct objfile *objfile = cu->objfile;
9046   struct comp_unit_head *cu_header = &cu->header;
9047   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
9048                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
9049   struct dwarf_block *blk;
9050
9051   switch (attr->form)
9052     {
9053     case DW_FORM_addr:
9054       if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != cu_header->addr_size)
9055         dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym),
9056                                                       cu_header->addr_size,
9057                                                       TYPE_LENGTH (SYMBOL_TYPE
9058                                                                    (sym)));
9059       SYMBOL_VALUE_BYTES (sym) = 
9060         obstack_alloc (&objfile->objfile_obstack, cu_header->addr_size);
9061       /* NOTE: cagney/2003-05-09: In-lined store_address call with
9062          it's body - store_unsigned_integer.  */
9063       store_unsigned_integer (SYMBOL_VALUE_BYTES (sym), cu_header->addr_size,
9064                               byte_order, DW_ADDR (attr));
9065       SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
9066       break;
9067     case DW_FORM_string:
9068     case DW_FORM_strp:
9069       /* DW_STRING is already allocated on the obstack, point directly
9070          to it.  */
9071       SYMBOL_VALUE_BYTES (sym) = (gdb_byte *) DW_STRING (attr);
9072       SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
9073       break;
9074     case DW_FORM_block1:
9075     case DW_FORM_block2:
9076     case DW_FORM_block4:
9077     case DW_FORM_block:
9078     case DW_FORM_exprloc:
9079       blk = DW_BLOCK (attr);
9080       if (TYPE_LENGTH (SYMBOL_TYPE (sym)) != blk->size)
9081         dwarf2_const_value_length_mismatch_complaint (SYMBOL_PRINT_NAME (sym),
9082                                                       blk->size,
9083                                                       TYPE_LENGTH (SYMBOL_TYPE
9084                                                                    (sym)));
9085       SYMBOL_VALUE_BYTES (sym) =
9086         obstack_alloc (&objfile->objfile_obstack, blk->size);
9087       memcpy (SYMBOL_VALUE_BYTES (sym), blk->data, blk->size);
9088       SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
9089       break;
9090
9091       /* The DW_AT_const_value attributes are supposed to carry the
9092          symbol's value "represented as it would be on the target
9093          architecture."  By the time we get here, it's already been
9094          converted to host endianness, so we just need to sign- or
9095          zero-extend it as appropriate.  */
9096     case DW_FORM_data1:
9097       dwarf2_const_value_data (attr, sym, 8);
9098       break;
9099     case DW_FORM_data2:
9100       dwarf2_const_value_data (attr, sym, 16);
9101       break;
9102     case DW_FORM_data4:
9103       dwarf2_const_value_data (attr, sym, 32);
9104       break;
9105     case DW_FORM_data8:
9106       dwarf2_const_value_data (attr, sym, 64);
9107       break;
9108
9109     case DW_FORM_sdata:
9110       SYMBOL_VALUE (sym) = DW_SND (attr);
9111       SYMBOL_CLASS (sym) = LOC_CONST;
9112       break;
9113
9114     case DW_FORM_udata:
9115       SYMBOL_VALUE (sym) = DW_UNSND (attr);
9116       SYMBOL_CLASS (sym) = LOC_CONST;
9117       break;
9118
9119     default:
9120       complaint (&symfile_complaints,
9121                  _("unsupported const value attribute form: '%s'"),
9122                  dwarf_form_name (attr->form));
9123       SYMBOL_VALUE (sym) = 0;
9124       SYMBOL_CLASS (sym) = LOC_CONST;
9125       break;
9126     }
9127 }
9128
9129
9130 /* Given an attr with a DW_FORM_dataN value in host byte order, sign-
9131    or zero-extend it as appropriate for the symbol's type.  */
9132 static void
9133 dwarf2_const_value_data (struct attribute *attr,
9134                          struct symbol *sym,
9135                          int bits)
9136 {
9137   LONGEST l = DW_UNSND (attr);
9138
9139   if (bits < sizeof (l) * 8)
9140     {
9141       if (TYPE_UNSIGNED (SYMBOL_TYPE (sym)))
9142         l &= ((LONGEST) 1 << bits) - 1;
9143       else
9144         l = (l << (sizeof (l) * 8 - bits)) >> (sizeof (l) * 8 - bits);
9145     }
9146
9147   SYMBOL_VALUE (sym) = l;
9148   SYMBOL_CLASS (sym) = LOC_CONST;
9149 }
9150
9151
9152 /* Return the type of the die in question using its DW_AT_type attribute.  */
9153
9154 static struct type *
9155 die_type (struct die_info *die, struct dwarf2_cu *cu)
9156 {
9157   struct attribute *type_attr;
9158   struct die_info *type_die;
9159
9160   type_attr = dwarf2_attr (die, DW_AT_type, cu);
9161   if (!type_attr)
9162     {
9163       /* A missing DW_AT_type represents a void type.  */
9164       return objfile_type (cu->objfile)->builtin_void;
9165     }
9166
9167   type_die = follow_die_ref_or_sig (die, type_attr, &cu);
9168
9169   return tag_type_to_type (type_die, cu);
9170 }
9171
9172 /* True iff CU's producer generates GNAT Ada auxiliary information
9173    that allows to find parallel types through that information instead
9174    of having to do expensive parallel lookups by type name.  */
9175
9176 static int
9177 need_gnat_info (struct dwarf2_cu *cu)
9178 {
9179   /* FIXME: brobecker/2010-10-12: As of now, only the AdaCore version
9180      of GNAT produces this auxiliary information, without any indication
9181      that it is produced.  Part of enhancing the FSF version of GNAT
9182      to produce that information will be to put in place an indicator
9183      that we can use in order to determine whether the descriptive type
9184      info is available or not.  One suggestion that has been made is
9185      to use a new attribute, attached to the CU die.  For now, assume
9186      that the descriptive type info is not available.  */
9187   return 0;
9188 }
9189
9190
9191 /* Return the auxiliary type of the die in question using its
9192    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
9193    attribute is not present.  */
9194
9195 static struct type *
9196 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
9197 {
9198   struct attribute *type_attr;
9199   struct die_info *type_die;
9200
9201   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
9202   if (!type_attr)
9203     return NULL;
9204
9205   type_die = follow_die_ref (die, type_attr, &cu);
9206   return tag_type_to_type (type_die, cu);
9207 }
9208
9209 /* If DIE has a descriptive_type attribute, then set the TYPE's
9210    descriptive type accordingly.  */
9211
9212 static void
9213 set_descriptive_type (struct type *type, struct die_info *die,
9214                       struct dwarf2_cu *cu)
9215 {
9216   struct type *descriptive_type = die_descriptive_type (die, cu);
9217
9218   if (descriptive_type)
9219     {
9220       ALLOCATE_GNAT_AUX_TYPE (type);
9221       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
9222     }
9223 }
9224
9225 /* Return the containing type of the die in question using its
9226    DW_AT_containing_type attribute.  */
9227
9228 static struct type *
9229 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
9230 {
9231   struct attribute *type_attr;
9232   struct die_info *type_die;
9233
9234   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
9235   if (!type_attr)
9236     error (_("Dwarf Error: Problem turning containing type into gdb type "
9237              "[in module %s]"), cu->objfile->name);
9238
9239   type_die = follow_die_ref_or_sig (die, type_attr, &cu);
9240   return tag_type_to_type (type_die, cu);
9241 }
9242
9243 static struct type *
9244 tag_type_to_type (struct die_info *die, struct dwarf2_cu *cu)
9245 {
9246   struct type *this_type;
9247
9248   this_type = read_type_die (die, cu);
9249   if (!this_type)
9250     {
9251       char *message, *saved;
9252
9253       /* read_type_die already issued a complaint.  */
9254       message = xstrprintf (_("<unknown type in %s, CU 0x%x, DIE 0x%x>"),
9255                             cu->objfile->name,
9256                             cu->header.offset,
9257                             die->offset);
9258       saved = obstack_copy0 (&cu->objfile->objfile_obstack,
9259                              message, strlen (message));
9260       xfree (message);
9261
9262       this_type = init_type (TYPE_CODE_ERROR, 0, 0, saved, cu->objfile);
9263     }
9264   return this_type;
9265 }
9266
9267 static struct type *
9268 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
9269 {
9270   struct type *this_type;
9271
9272   this_type = get_die_type (die, cu);
9273   if (this_type)
9274     return this_type;
9275
9276   switch (die->tag)
9277     {
9278     case DW_TAG_class_type:
9279     case DW_TAG_interface_type:
9280     case DW_TAG_structure_type:
9281     case DW_TAG_union_type:
9282       this_type = read_structure_type (die, cu);
9283       break;
9284     case DW_TAG_enumeration_type:
9285       this_type = read_enumeration_type (die, cu);
9286       break;
9287     case DW_TAG_subprogram:
9288     case DW_TAG_subroutine_type:
9289     case DW_TAG_inlined_subroutine:
9290       this_type = read_subroutine_type (die, cu);
9291       break;
9292     case DW_TAG_array_type:
9293       this_type = read_array_type (die, cu);
9294       break;
9295     case DW_TAG_set_type:
9296       this_type = read_set_type (die, cu);
9297       break;
9298     case DW_TAG_pointer_type:
9299       this_type = read_tag_pointer_type (die, cu);
9300       break;
9301     case DW_TAG_ptr_to_member_type:
9302       this_type = read_tag_ptr_to_member_type (die, cu);
9303       break;
9304     case DW_TAG_reference_type:
9305       this_type = read_tag_reference_type (die, cu);
9306       break;
9307     case DW_TAG_const_type:
9308       this_type = read_tag_const_type (die, cu);
9309       break;
9310     case DW_TAG_volatile_type:
9311       this_type = read_tag_volatile_type (die, cu);
9312       break;
9313     case DW_TAG_string_type:
9314       this_type = read_tag_string_type (die, cu);
9315       break;
9316     case DW_TAG_typedef:
9317       this_type = read_typedef (die, cu);
9318       break;
9319     case DW_TAG_subrange_type:
9320       this_type = read_subrange_type (die, cu);
9321       break;
9322     case DW_TAG_base_type:
9323       this_type = read_base_type (die, cu);
9324       break;
9325     case DW_TAG_unspecified_type:
9326       this_type = read_unspecified_type (die, cu);
9327       break;
9328     case DW_TAG_namespace:
9329       this_type = read_namespace_type (die, cu);
9330       break;
9331     case DW_TAG_module:
9332       this_type = read_module_type (die, cu);
9333       break;
9334     default:
9335       complaint (&symfile_complaints, _("unexpected tag in read_type_die: '%s'"),
9336                  dwarf_tag_name (die->tag));
9337       break;
9338     }
9339
9340   return this_type;
9341 }
9342
9343 /* Return the name of the namespace/class that DIE is defined within,
9344    or "" if we can't tell.  The caller should not xfree the result.
9345
9346    For example, if we're within the method foo() in the following
9347    code:
9348
9349    namespace N {
9350      class C {
9351        void foo () {
9352        }
9353      };
9354    }
9355
9356    then determine_prefix on foo's die will return "N::C".  */
9357
9358 static char *
9359 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
9360 {
9361   struct die_info *parent, *spec_die;
9362   struct dwarf2_cu *spec_cu;
9363   struct type *parent_type;
9364
9365   if (cu->language != language_cplus && cu->language != language_java
9366       && cu->language != language_fortran)
9367     return "";
9368
9369   /* We have to be careful in the presence of DW_AT_specification.
9370      For example, with GCC 3.4, given the code
9371
9372      namespace N {
9373        void foo() {
9374          // Definition of N::foo.
9375        }
9376      }
9377
9378      then we'll have a tree of DIEs like this:
9379
9380      1: DW_TAG_compile_unit
9381        2: DW_TAG_namespace        // N
9382          3: DW_TAG_subprogram     // declaration of N::foo
9383        4: DW_TAG_subprogram       // definition of N::foo
9384             DW_AT_specification   // refers to die #3
9385
9386      Thus, when processing die #4, we have to pretend that we're in
9387      the context of its DW_AT_specification, namely the contex of die
9388      #3.  */
9389   spec_cu = cu;
9390   spec_die = die_specification (die, &spec_cu);
9391   if (spec_die == NULL)
9392     parent = die->parent;
9393   else
9394     {
9395       parent = spec_die->parent;
9396       cu = spec_cu;
9397     }
9398
9399   if (parent == NULL)
9400     return "";
9401   else
9402     switch (parent->tag)
9403       {
9404       case DW_TAG_namespace:
9405         parent_type = read_type_die (parent, cu);
9406         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
9407            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
9408            Work around this problem here.  */
9409         if (cu->language == language_cplus
9410             && strcmp (TYPE_TAG_NAME (parent_type), "::") == 0)
9411           return "";
9412         /* We give a name to even anonymous namespaces.  */
9413         return TYPE_TAG_NAME (parent_type);
9414       case DW_TAG_class_type:
9415       case DW_TAG_interface_type:
9416       case DW_TAG_structure_type:
9417       case DW_TAG_union_type:
9418       case DW_TAG_module:
9419         parent_type = read_type_die (parent, cu);
9420         if (TYPE_TAG_NAME (parent_type) != NULL)
9421           return TYPE_TAG_NAME (parent_type);
9422         else
9423           /* An anonymous structure is only allowed non-static data
9424              members; no typedefs, no member functions, et cetera.
9425              So it does not need a prefix.  */
9426           return "";
9427       default:
9428         return determine_prefix (parent, cu);
9429       }
9430 }
9431
9432 /* Return a newly-allocated string formed by concatenating PREFIX and
9433    SUFFIX with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
9434    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null,
9435    perform an obconcat, otherwise allocate storage for the result.  The CU argument
9436    is used to determine the language and hence, the appropriate separator.  */
9437
9438 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
9439
9440 static char *
9441 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
9442                  int physname, struct dwarf2_cu *cu)
9443 {
9444   const char *lead = "";
9445   const char *sep;
9446
9447   if (suffix == NULL || suffix[0] == '\0' || prefix == NULL || prefix[0] == '\0')
9448     sep = "";
9449   else if (cu->language == language_java)
9450     sep = ".";
9451   else if (cu->language == language_fortran && physname)
9452     {
9453       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
9454          DW_AT_MIPS_linkage_name is preferred and used instead.  */
9455
9456       lead = "__";
9457       sep = "_MOD_";
9458     }
9459   else
9460     sep = "::";
9461
9462   if (prefix == NULL)
9463     prefix = "";
9464   if (suffix == NULL)
9465     suffix = "";
9466
9467   if (obs == NULL)
9468     {
9469       char *retval = xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1);
9470
9471       strcpy (retval, lead);
9472       strcat (retval, prefix);
9473       strcat (retval, sep);
9474       strcat (retval, suffix);
9475       return retval;
9476     }
9477   else
9478     {
9479       /* We have an obstack.  */
9480       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
9481     }
9482 }
9483
9484 /* Return sibling of die, NULL if no sibling.  */
9485
9486 static struct die_info *
9487 sibling_die (struct die_info *die)
9488 {
9489   return die->sibling;
9490 }
9491
9492 /* Get name of a die, return NULL if not found.  */
9493
9494 static char *
9495 dwarf2_canonicalize_name (char *name, struct dwarf2_cu *cu,
9496                           struct obstack *obstack)
9497 {
9498   if (name && cu->language == language_cplus)
9499     {
9500       char *canon_name = cp_canonicalize_string (name);
9501
9502       if (canon_name != NULL)
9503         {
9504           if (strcmp (canon_name, name) != 0)
9505             name = obsavestring (canon_name, strlen (canon_name),
9506                                  obstack);
9507           xfree (canon_name);
9508         }
9509     }
9510
9511   return name;
9512 }
9513
9514 /* Get name of a die, return NULL if not found.  */
9515
9516 static char *
9517 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
9518 {
9519   struct attribute *attr;
9520
9521   attr = dwarf2_attr (die, DW_AT_name, cu);
9522   if (!attr || !DW_STRING (attr))
9523     return NULL;
9524
9525   switch (die->tag)
9526     {
9527     case DW_TAG_compile_unit:
9528       /* Compilation units have a DW_AT_name that is a filename, not
9529          a source language identifier.  */
9530     case DW_TAG_enumeration_type:
9531     case DW_TAG_enumerator:
9532       /* These tags always have simple identifiers already; no need
9533          to canonicalize them.  */
9534       return DW_STRING (attr);
9535
9536     case DW_TAG_subprogram:
9537       /* Java constructors will all be named "<init>", so return
9538          the class name when we see this special case.  */
9539       if (cu->language == language_java
9540           && DW_STRING (attr) != NULL
9541           && strcmp (DW_STRING (attr), "<init>") == 0)
9542         {
9543           struct dwarf2_cu *spec_cu = cu;
9544           struct die_info *spec_die;
9545
9546           /* GCJ will output '<init>' for Java constructor names.
9547              For this special case, return the name of the parent class.  */
9548
9549           /* GCJ may output suprogram DIEs with AT_specification set.
9550              If so, use the name of the specified DIE.  */
9551           spec_die = die_specification (die, &spec_cu);
9552           if (spec_die != NULL)
9553             return dwarf2_name (spec_die, spec_cu);
9554
9555           do
9556             {
9557               die = die->parent;
9558               if (die->tag == DW_TAG_class_type)
9559                 return dwarf2_name (die, cu);
9560             }
9561           while (die->tag != DW_TAG_compile_unit);
9562         }
9563       break;
9564
9565     case DW_TAG_class_type:
9566     case DW_TAG_interface_type:
9567     case DW_TAG_structure_type:
9568     case DW_TAG_union_type:
9569       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
9570          structures or unions.  These were of the form "._%d" in GCC 4.1,
9571          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
9572          and GCC 4.4.  We work around this problem by ignoring these.  */
9573       if (strncmp (DW_STRING (attr), "._", 2) == 0
9574           || strncmp (DW_STRING (attr), "<anonymous", 10) == 0)
9575         return NULL;
9576       break;
9577
9578     default:
9579       break;
9580     }
9581
9582   if (!DW_STRING_IS_CANONICAL (attr))
9583     {
9584       DW_STRING (attr)
9585         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
9586                                     &cu->objfile->objfile_obstack);
9587       DW_STRING_IS_CANONICAL (attr) = 1;
9588     }
9589   return DW_STRING (attr);
9590 }
9591
9592 /* Return the die that this die in an extension of, or NULL if there
9593    is none.  *EXT_CU is the CU containing DIE on input, and the CU
9594    containing the return value on output.  */
9595
9596 static struct die_info *
9597 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
9598 {
9599   struct attribute *attr;
9600
9601   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
9602   if (attr == NULL)
9603     return NULL;
9604
9605   return follow_die_ref (die, attr, ext_cu);
9606 }
9607
9608 /* Convert a DIE tag into its string name.  */
9609
9610 static char *
9611 dwarf_tag_name (unsigned tag)
9612 {
9613   switch (tag)
9614     {
9615     case DW_TAG_padding:
9616       return "DW_TAG_padding";
9617     case DW_TAG_array_type:
9618       return "DW_TAG_array_type";
9619     case DW_TAG_class_type:
9620       return "DW_TAG_class_type";
9621     case DW_TAG_entry_point:
9622       return "DW_TAG_entry_point";
9623     case DW_TAG_enumeration_type:
9624       return "DW_TAG_enumeration_type";
9625     case DW_TAG_formal_parameter:
9626       return "DW_TAG_formal_parameter";
9627     case DW_TAG_imported_declaration:
9628       return "DW_TAG_imported_declaration";
9629     case DW_TAG_label:
9630       return "DW_TAG_label";
9631     case DW_TAG_lexical_block:
9632       return "DW_TAG_lexical_block";
9633     case DW_TAG_member:
9634       return "DW_TAG_member";
9635     case DW_TAG_pointer_type:
9636       return "DW_TAG_pointer_type";
9637     case DW_TAG_reference_type:
9638       return "DW_TAG_reference_type";
9639     case DW_TAG_compile_unit:
9640       return "DW_TAG_compile_unit";
9641     case DW_TAG_string_type:
9642       return "DW_TAG_string_type";
9643     case DW_TAG_structure_type:
9644       return "DW_TAG_structure_type";
9645     case DW_TAG_subroutine_type:
9646       return "DW_TAG_subroutine_type";
9647     case DW_TAG_typedef:
9648       return "DW_TAG_typedef";
9649     case DW_TAG_union_type:
9650       return "DW_TAG_union_type";
9651     case DW_TAG_unspecified_parameters:
9652       return "DW_TAG_unspecified_parameters";
9653     case DW_TAG_variant:
9654       return "DW_TAG_variant";
9655     case DW_TAG_common_block:
9656       return "DW_TAG_common_block";
9657     case DW_TAG_common_inclusion:
9658       return "DW_TAG_common_inclusion";
9659     case DW_TAG_inheritance:
9660       return "DW_TAG_inheritance";
9661     case DW_TAG_inlined_subroutine:
9662       return "DW_TAG_inlined_subroutine";
9663     case DW_TAG_module:
9664       return "DW_TAG_module";
9665     case DW_TAG_ptr_to_member_type:
9666       return "DW_TAG_ptr_to_member_type";
9667     case DW_TAG_set_type:
9668       return "DW_TAG_set_type";
9669     case DW_TAG_subrange_type:
9670       return "DW_TAG_subrange_type";
9671     case DW_TAG_with_stmt:
9672       return "DW_TAG_with_stmt";
9673     case DW_TAG_access_declaration:
9674       return "DW_TAG_access_declaration";
9675     case DW_TAG_base_type:
9676       return "DW_TAG_base_type";
9677     case DW_TAG_catch_block:
9678       return "DW_TAG_catch_block";
9679     case DW_TAG_const_type:
9680       return "DW_TAG_const_type";
9681     case DW_TAG_constant:
9682       return "DW_TAG_constant";
9683     case DW_TAG_enumerator:
9684       return "DW_TAG_enumerator";
9685     case DW_TAG_file_type:
9686       return "DW_TAG_file_type";
9687     case DW_TAG_friend:
9688       return "DW_TAG_friend";
9689     case DW_TAG_namelist:
9690       return "DW_TAG_namelist";
9691     case DW_TAG_namelist_item:
9692       return "DW_TAG_namelist_item";
9693     case DW_TAG_packed_type:
9694       return "DW_TAG_packed_type";
9695     case DW_TAG_subprogram:
9696       return "DW_TAG_subprogram";
9697     case DW_TAG_template_type_param:
9698       return "DW_TAG_template_type_param";
9699     case DW_TAG_template_value_param:
9700       return "DW_TAG_template_value_param";
9701     case DW_TAG_thrown_type:
9702       return "DW_TAG_thrown_type";
9703     case DW_TAG_try_block:
9704       return "DW_TAG_try_block";
9705     case DW_TAG_variant_part:
9706       return "DW_TAG_variant_part";
9707     case DW_TAG_variable:
9708       return "DW_TAG_variable";
9709     case DW_TAG_volatile_type:
9710       return "DW_TAG_volatile_type";
9711     case DW_TAG_dwarf_procedure:
9712       return "DW_TAG_dwarf_procedure";
9713     case DW_TAG_restrict_type:
9714       return "DW_TAG_restrict_type";
9715     case DW_TAG_interface_type:
9716       return "DW_TAG_interface_type";
9717     case DW_TAG_namespace:
9718       return "DW_TAG_namespace";
9719     case DW_TAG_imported_module:
9720       return "DW_TAG_imported_module";
9721     case DW_TAG_unspecified_type:
9722       return "DW_TAG_unspecified_type";
9723     case DW_TAG_partial_unit:
9724       return "DW_TAG_partial_unit";
9725     case DW_TAG_imported_unit:
9726       return "DW_TAG_imported_unit";
9727     case DW_TAG_condition:
9728       return "DW_TAG_condition";
9729     case DW_TAG_shared_type:
9730       return "DW_TAG_shared_type";
9731     case DW_TAG_type_unit:
9732       return "DW_TAG_type_unit";
9733     case DW_TAG_MIPS_loop:
9734       return "DW_TAG_MIPS_loop";
9735     case DW_TAG_HP_array_descriptor:
9736       return "DW_TAG_HP_array_descriptor";
9737     case DW_TAG_format_label:
9738       return "DW_TAG_format_label";
9739     case DW_TAG_function_template:
9740       return "DW_TAG_function_template";
9741     case DW_TAG_class_template:
9742       return "DW_TAG_class_template";
9743     case DW_TAG_GNU_BINCL:
9744       return "DW_TAG_GNU_BINCL";
9745     case DW_TAG_GNU_EINCL:
9746       return "DW_TAG_GNU_EINCL";
9747     case DW_TAG_upc_shared_type:
9748       return "DW_TAG_upc_shared_type";
9749     case DW_TAG_upc_strict_type:
9750       return "DW_TAG_upc_strict_type";
9751     case DW_TAG_upc_relaxed_type:
9752       return "DW_TAG_upc_relaxed_type";
9753     case DW_TAG_PGI_kanji_type:
9754       return "DW_TAG_PGI_kanji_type";
9755     case DW_TAG_PGI_interface_block:
9756       return "DW_TAG_PGI_interface_block";
9757     default:
9758       return "DW_TAG_<unknown>";
9759     }
9760 }
9761
9762 /* Convert a DWARF attribute code into its string name.  */
9763
9764 static char *
9765 dwarf_attr_name (unsigned attr)
9766 {
9767   switch (attr)
9768     {
9769     case DW_AT_sibling:
9770       return "DW_AT_sibling";
9771     case DW_AT_location:
9772       return "DW_AT_location";
9773     case DW_AT_name:
9774       return "DW_AT_name";
9775     case DW_AT_ordering:
9776       return "DW_AT_ordering";
9777     case DW_AT_subscr_data:
9778       return "DW_AT_subscr_data";
9779     case DW_AT_byte_size:
9780       return "DW_AT_byte_size";
9781     case DW_AT_bit_offset:
9782       return "DW_AT_bit_offset";
9783     case DW_AT_bit_size:
9784       return "DW_AT_bit_size";
9785     case DW_AT_element_list:
9786       return "DW_AT_element_list";
9787     case DW_AT_stmt_list:
9788       return "DW_AT_stmt_list";
9789     case DW_AT_low_pc:
9790       return "DW_AT_low_pc";
9791     case DW_AT_high_pc:
9792       return "DW_AT_high_pc";
9793     case DW_AT_language:
9794       return "DW_AT_language";
9795     case DW_AT_member:
9796       return "DW_AT_member";
9797     case DW_AT_discr:
9798       return "DW_AT_discr";
9799     case DW_AT_discr_value:
9800       return "DW_AT_discr_value";
9801     case DW_AT_visibility:
9802       return "DW_AT_visibility";
9803     case DW_AT_import:
9804       return "DW_AT_import";
9805     case DW_AT_string_length:
9806       return "DW_AT_string_length";
9807     case DW_AT_common_reference:
9808       return "DW_AT_common_reference";
9809     case DW_AT_comp_dir:
9810       return "DW_AT_comp_dir";
9811     case DW_AT_const_value:
9812       return "DW_AT_const_value";
9813     case DW_AT_containing_type:
9814       return "DW_AT_containing_type";
9815     case DW_AT_default_value:
9816       return "DW_AT_default_value";
9817     case DW_AT_inline:
9818       return "DW_AT_inline";
9819     case DW_AT_is_optional:
9820       return "DW_AT_is_optional";
9821     case DW_AT_lower_bound:
9822       return "DW_AT_lower_bound";
9823     case DW_AT_producer:
9824       return "DW_AT_producer";
9825     case DW_AT_prototyped:
9826       return "DW_AT_prototyped";
9827     case DW_AT_return_addr:
9828       return "DW_AT_return_addr";
9829     case DW_AT_start_scope:
9830       return "DW_AT_start_scope";
9831     case DW_AT_bit_stride:
9832       return "DW_AT_bit_stride";
9833     case DW_AT_upper_bound:
9834       return "DW_AT_upper_bound";
9835     case DW_AT_abstract_origin:
9836       return "DW_AT_abstract_origin";
9837     case DW_AT_accessibility:
9838       return "DW_AT_accessibility";
9839     case DW_AT_address_class:
9840       return "DW_AT_address_class";
9841     case DW_AT_artificial:
9842       return "DW_AT_artificial";
9843     case DW_AT_base_types:
9844       return "DW_AT_base_types";
9845     case DW_AT_calling_convention:
9846       return "DW_AT_calling_convention";
9847     case DW_AT_count:
9848       return "DW_AT_count";
9849     case DW_AT_data_member_location:
9850       return "DW_AT_data_member_location";
9851     case DW_AT_decl_column:
9852       return "DW_AT_decl_column";
9853     case DW_AT_decl_file:
9854       return "DW_AT_decl_file";
9855     case DW_AT_decl_line:
9856       return "DW_AT_decl_line";
9857     case DW_AT_declaration:
9858       return "DW_AT_declaration";
9859     case DW_AT_discr_list:
9860       return "DW_AT_discr_list";
9861     case DW_AT_encoding:
9862       return "DW_AT_encoding";
9863     case DW_AT_external:
9864       return "DW_AT_external";
9865     case DW_AT_frame_base:
9866       return "DW_AT_frame_base";
9867     case DW_AT_friend:
9868       return "DW_AT_friend";
9869     case DW_AT_identifier_case:
9870       return "DW_AT_identifier_case";
9871     case DW_AT_macro_info:
9872       return "DW_AT_macro_info";
9873     case DW_AT_namelist_items:
9874       return "DW_AT_namelist_items";
9875     case DW_AT_priority:
9876       return "DW_AT_priority";
9877     case DW_AT_segment:
9878       return "DW_AT_segment";
9879     case DW_AT_specification:
9880       return "DW_AT_specification";
9881     case DW_AT_static_link:
9882       return "DW_AT_static_link";
9883     case DW_AT_type:
9884       return "DW_AT_type";
9885     case DW_AT_use_location:
9886       return "DW_AT_use_location";
9887     case DW_AT_variable_parameter:
9888       return "DW_AT_variable_parameter";
9889     case DW_AT_virtuality:
9890       return "DW_AT_virtuality";
9891     case DW_AT_vtable_elem_location:
9892       return "DW_AT_vtable_elem_location";
9893     /* DWARF 3 values.  */
9894     case DW_AT_allocated:
9895       return "DW_AT_allocated";
9896     case DW_AT_associated:
9897       return "DW_AT_associated";
9898     case DW_AT_data_location:
9899       return "DW_AT_data_location";
9900     case DW_AT_byte_stride:
9901       return "DW_AT_byte_stride";
9902     case DW_AT_entry_pc:
9903       return "DW_AT_entry_pc";
9904     case DW_AT_use_UTF8:
9905       return "DW_AT_use_UTF8";
9906     case DW_AT_extension:
9907       return "DW_AT_extension";
9908     case DW_AT_ranges:
9909       return "DW_AT_ranges";
9910     case DW_AT_trampoline:
9911       return "DW_AT_trampoline";
9912     case DW_AT_call_column:
9913       return "DW_AT_call_column";
9914     case DW_AT_call_file:
9915       return "DW_AT_call_file";
9916     case DW_AT_call_line:
9917       return "DW_AT_call_line";
9918     case DW_AT_description:
9919       return "DW_AT_description";
9920     case DW_AT_binary_scale:
9921       return "DW_AT_binary_scale";
9922     case DW_AT_decimal_scale:
9923       return "DW_AT_decimal_scale";
9924     case DW_AT_small:
9925       return "DW_AT_small";
9926     case DW_AT_decimal_sign:
9927       return "DW_AT_decimal_sign";
9928     case DW_AT_digit_count:
9929       return "DW_AT_digit_count";
9930     case DW_AT_picture_string:
9931       return "DW_AT_picture_string";
9932     case DW_AT_mutable:
9933       return "DW_AT_mutable";
9934     case DW_AT_threads_scaled:
9935       return "DW_AT_threads_scaled";
9936     case DW_AT_explicit:
9937       return "DW_AT_explicit";
9938     case DW_AT_object_pointer:
9939       return "DW_AT_object_pointer";
9940     case DW_AT_endianity:
9941       return "DW_AT_endianity";
9942     case DW_AT_elemental:
9943       return "DW_AT_elemental";
9944     case DW_AT_pure:
9945       return "DW_AT_pure";
9946     case DW_AT_recursive:
9947       return "DW_AT_recursive";
9948     /* DWARF 4 values.  */
9949     case DW_AT_signature:
9950       return "DW_AT_signature";
9951     case DW_AT_linkage_name:
9952       return "DW_AT_linkage_name";
9953     /* SGI/MIPS extensions.  */
9954 #ifdef MIPS /* collides with DW_AT_HP_block_index */
9955     case DW_AT_MIPS_fde:
9956       return "DW_AT_MIPS_fde";
9957 #endif
9958     case DW_AT_MIPS_loop_begin:
9959       return "DW_AT_MIPS_loop_begin";
9960     case DW_AT_MIPS_tail_loop_begin:
9961       return "DW_AT_MIPS_tail_loop_begin";
9962     case DW_AT_MIPS_epilog_begin:
9963       return "DW_AT_MIPS_epilog_begin";
9964     case DW_AT_MIPS_loop_unroll_factor:
9965       return "DW_AT_MIPS_loop_unroll_factor";
9966     case DW_AT_MIPS_software_pipeline_depth:
9967       return "DW_AT_MIPS_software_pipeline_depth";
9968     case DW_AT_MIPS_linkage_name:
9969       return "DW_AT_MIPS_linkage_name";
9970     case DW_AT_MIPS_stride:
9971       return "DW_AT_MIPS_stride";
9972     case DW_AT_MIPS_abstract_name:
9973       return "DW_AT_MIPS_abstract_name";
9974     case DW_AT_MIPS_clone_origin:
9975       return "DW_AT_MIPS_clone_origin";
9976     case DW_AT_MIPS_has_inlines:
9977       return "DW_AT_MIPS_has_inlines";
9978     /* HP extensions.  */
9979 #ifndef MIPS /* collides with DW_AT_MIPS_fde */
9980     case DW_AT_HP_block_index:
9981       return "DW_AT_HP_block_index";
9982 #endif
9983     case DW_AT_HP_unmodifiable:
9984       return "DW_AT_HP_unmodifiable";
9985     case DW_AT_HP_actuals_stmt_list:
9986       return "DW_AT_HP_actuals_stmt_list";
9987     case DW_AT_HP_proc_per_section:
9988       return "DW_AT_HP_proc_per_section";
9989     case DW_AT_HP_raw_data_ptr:
9990       return "DW_AT_HP_raw_data_ptr";
9991     case DW_AT_HP_pass_by_reference:
9992       return "DW_AT_HP_pass_by_reference";
9993     case DW_AT_HP_opt_level:
9994       return "DW_AT_HP_opt_level";
9995     case DW_AT_HP_prof_version_id:
9996       return "DW_AT_HP_prof_version_id";
9997     case DW_AT_HP_opt_flags:
9998       return "DW_AT_HP_opt_flags";
9999     case DW_AT_HP_cold_region_low_pc:
10000       return "DW_AT_HP_cold_region_low_pc";
10001     case DW_AT_HP_cold_region_high_pc:
10002       return "DW_AT_HP_cold_region_high_pc";
10003     case DW_AT_HP_all_variables_modifiable:
10004       return "DW_AT_HP_all_variables_modifiable";
10005     case DW_AT_HP_linkage_name:
10006       return "DW_AT_HP_linkage_name";
10007     case DW_AT_HP_prof_flags:
10008       return "DW_AT_HP_prof_flags";
10009     /* GNU extensions.  */
10010     case DW_AT_sf_names:
10011       return "DW_AT_sf_names";
10012     case DW_AT_src_info:
10013       return "DW_AT_src_info";
10014     case DW_AT_mac_info:
10015       return "DW_AT_mac_info";
10016     case DW_AT_src_coords:
10017       return "DW_AT_src_coords";
10018     case DW_AT_body_begin:
10019       return "DW_AT_body_begin";
10020     case DW_AT_body_end:
10021       return "DW_AT_body_end";
10022     case DW_AT_GNU_vector:
10023       return "DW_AT_GNU_vector";
10024     /* VMS extensions.  */
10025     case DW_AT_VMS_rtnbeg_pd_address:
10026       return "DW_AT_VMS_rtnbeg_pd_address";
10027     /* UPC extension.  */
10028     case DW_AT_upc_threads_scaled:
10029       return "DW_AT_upc_threads_scaled";
10030     /* PGI (STMicroelectronics) extensions.  */
10031     case DW_AT_PGI_lbase:
10032       return "DW_AT_PGI_lbase";
10033     case DW_AT_PGI_soffset:
10034       return "DW_AT_PGI_soffset";
10035     case DW_AT_PGI_lstride:
10036       return "DW_AT_PGI_lstride";
10037     default:
10038       return "DW_AT_<unknown>";
10039     }
10040 }
10041
10042 /* Convert a DWARF value form code into its string name.  */
10043
10044 static char *
10045 dwarf_form_name (unsigned form)
10046 {
10047   switch (form)
10048     {
10049     case DW_FORM_addr:
10050       return "DW_FORM_addr";
10051     case DW_FORM_block2:
10052       return "DW_FORM_block2";
10053     case DW_FORM_block4:
10054       return "DW_FORM_block4";
10055     case DW_FORM_data2:
10056       return "DW_FORM_data2";
10057     case DW_FORM_data4:
10058       return "DW_FORM_data4";
10059     case DW_FORM_data8:
10060       return "DW_FORM_data8";
10061     case DW_FORM_string:
10062       return "DW_FORM_string";
10063     case DW_FORM_block:
10064       return "DW_FORM_block";
10065     case DW_FORM_block1:
10066       return "DW_FORM_block1";
10067     case DW_FORM_data1:
10068       return "DW_FORM_data1";
10069     case DW_FORM_flag:
10070       return "DW_FORM_flag";
10071     case DW_FORM_sdata:
10072       return "DW_FORM_sdata";
10073     case DW_FORM_strp:
10074       return "DW_FORM_strp";
10075     case DW_FORM_udata:
10076       return "DW_FORM_udata";
10077     case DW_FORM_ref_addr:
10078       return "DW_FORM_ref_addr";
10079     case DW_FORM_ref1:
10080       return "DW_FORM_ref1";
10081     case DW_FORM_ref2:
10082       return "DW_FORM_ref2";
10083     case DW_FORM_ref4:
10084       return "DW_FORM_ref4";
10085     case DW_FORM_ref8:
10086       return "DW_FORM_ref8";
10087     case DW_FORM_ref_udata:
10088       return "DW_FORM_ref_udata";
10089     case DW_FORM_indirect:
10090       return "DW_FORM_indirect";
10091     case DW_FORM_sec_offset:
10092       return "DW_FORM_sec_offset";
10093     case DW_FORM_exprloc:
10094       return "DW_FORM_exprloc";
10095     case DW_FORM_flag_present:
10096       return "DW_FORM_flag_present";
10097     case DW_FORM_sig8:
10098       return "DW_FORM_sig8";
10099     default:
10100       return "DW_FORM_<unknown>";
10101     }
10102 }
10103
10104 /* Convert a DWARF stack opcode into its string name.  */
10105
10106 const char *
10107 dwarf_stack_op_name (unsigned op, int def)
10108 {
10109   switch (op)
10110     {
10111     case DW_OP_addr:
10112       return "DW_OP_addr";
10113     case DW_OP_deref:
10114       return "DW_OP_deref";
10115     case DW_OP_const1u:
10116       return "DW_OP_const1u";
10117     case DW_OP_const1s:
10118       return "DW_OP_const1s";
10119     case DW_OP_const2u:
10120       return "DW_OP_const2u";
10121     case DW_OP_const2s:
10122       return "DW_OP_const2s";
10123     case DW_OP_const4u:
10124       return "DW_OP_const4u";
10125     case DW_OP_const4s:
10126       return "DW_OP_const4s";
10127     case DW_OP_const8u:
10128       return "DW_OP_const8u";
10129     case DW_OP_const8s:
10130       return "DW_OP_const8s";
10131     case DW_OP_constu:
10132       return "DW_OP_constu";
10133     case DW_OP_consts:
10134       return "DW_OP_consts";
10135     case DW_OP_dup:
10136       return "DW_OP_dup";
10137     case DW_OP_drop:
10138       return "DW_OP_drop";
10139     case DW_OP_over:
10140       return "DW_OP_over";
10141     case DW_OP_pick:
10142       return "DW_OP_pick";
10143     case DW_OP_swap:
10144       return "DW_OP_swap";
10145     case DW_OP_rot:
10146       return "DW_OP_rot";
10147     case DW_OP_xderef:
10148       return "DW_OP_xderef";
10149     case DW_OP_abs:
10150       return "DW_OP_abs";
10151     case DW_OP_and:
10152       return "DW_OP_and";
10153     case DW_OP_div:
10154       return "DW_OP_div";
10155     case DW_OP_minus:
10156       return "DW_OP_minus";
10157     case DW_OP_mod:
10158       return "DW_OP_mod";
10159     case DW_OP_mul:
10160       return "DW_OP_mul";
10161     case DW_OP_neg:
10162       return "DW_OP_neg";
10163     case DW_OP_not:
10164       return "DW_OP_not";
10165     case DW_OP_or:
10166       return "DW_OP_or";
10167     case DW_OP_plus:
10168       return "DW_OP_plus";
10169     case DW_OP_plus_uconst:
10170       return "DW_OP_plus_uconst";
10171     case DW_OP_shl:
10172       return "DW_OP_shl";
10173     case DW_OP_shr:
10174       return "DW_OP_shr";
10175     case DW_OP_shra:
10176       return "DW_OP_shra";
10177     case DW_OP_xor:
10178       return "DW_OP_xor";
10179     case DW_OP_bra:
10180       return "DW_OP_bra";
10181     case DW_OP_eq:
10182       return "DW_OP_eq";
10183     case DW_OP_ge:
10184       return "DW_OP_ge";
10185     case DW_OP_gt:
10186       return "DW_OP_gt";
10187     case DW_OP_le:
10188       return "DW_OP_le";
10189     case DW_OP_lt:
10190       return "DW_OP_lt";
10191     case DW_OP_ne:
10192       return "DW_OP_ne";
10193     case DW_OP_skip:
10194       return "DW_OP_skip";
10195     case DW_OP_lit0:
10196       return "DW_OP_lit0";
10197     case DW_OP_lit1:
10198       return "DW_OP_lit1";
10199     case DW_OP_lit2:
10200       return "DW_OP_lit2";
10201     case DW_OP_lit3:
10202       return "DW_OP_lit3";
10203     case DW_OP_lit4:
10204       return "DW_OP_lit4";
10205     case DW_OP_lit5:
10206       return "DW_OP_lit5";
10207     case DW_OP_lit6:
10208       return "DW_OP_lit6";
10209     case DW_OP_lit7:
10210       return "DW_OP_lit7";
10211     case DW_OP_lit8:
10212       return "DW_OP_lit8";
10213     case DW_OP_lit9:
10214       return "DW_OP_lit9";
10215     case DW_OP_lit10:
10216       return "DW_OP_lit10";
10217     case DW_OP_lit11:
10218       return "DW_OP_lit11";
10219     case DW_OP_lit12:
10220       return "DW_OP_lit12";
10221     case DW_OP_lit13:
10222       return "DW_OP_lit13";
10223     case DW_OP_lit14:
10224       return "DW_OP_lit14";
10225     case DW_OP_lit15:
10226       return "DW_OP_lit15";
10227     case DW_OP_lit16:
10228       return "DW_OP_lit16";
10229     case DW_OP_lit17:
10230       return "DW_OP_lit17";
10231     case DW_OP_lit18:
10232       return "DW_OP_lit18";
10233     case DW_OP_lit19:
10234       return "DW_OP_lit19";
10235     case DW_OP_lit20:
10236       return "DW_OP_lit20";
10237     case DW_OP_lit21:
10238       return "DW_OP_lit21";
10239     case DW_OP_lit22:
10240       return "DW_OP_lit22";
10241     case DW_OP_lit23:
10242       return "DW_OP_lit23";
10243     case DW_OP_lit24:
10244       return "DW_OP_lit24";
10245     case DW_OP_lit25:
10246       return "DW_OP_lit25";
10247     case DW_OP_lit26:
10248       return "DW_OP_lit26";
10249     case DW_OP_lit27:
10250       return "DW_OP_lit27";
10251     case DW_OP_lit28:
10252       return "DW_OP_lit28";
10253     case DW_OP_lit29:
10254       return "DW_OP_lit29";
10255     case DW_OP_lit30:
10256       return "DW_OP_lit30";
10257     case DW_OP_lit31:
10258       return "DW_OP_lit31";
10259     case DW_OP_reg0:
10260       return "DW_OP_reg0";
10261     case DW_OP_reg1:
10262       return "DW_OP_reg1";
10263     case DW_OP_reg2:
10264       return "DW_OP_reg2";
10265     case DW_OP_reg3:
10266       return "DW_OP_reg3";
10267     case DW_OP_reg4:
10268       return "DW_OP_reg4";
10269     case DW_OP_reg5:
10270       return "DW_OP_reg5";
10271     case DW_OP_reg6:
10272       return "DW_OP_reg6";
10273     case DW_OP_reg7:
10274       return "DW_OP_reg7";
10275     case DW_OP_reg8:
10276       return "DW_OP_reg8";
10277     case DW_OP_reg9:
10278       return "DW_OP_reg9";
10279     case DW_OP_reg10:
10280       return "DW_OP_reg10";
10281     case DW_OP_reg11:
10282       return "DW_OP_reg11";
10283     case DW_OP_reg12:
10284       return "DW_OP_reg12";
10285     case DW_OP_reg13:
10286       return "DW_OP_reg13";
10287     case DW_OP_reg14:
10288       return "DW_OP_reg14";
10289     case DW_OP_reg15:
10290       return "DW_OP_reg15";
10291     case DW_OP_reg16:
10292       return "DW_OP_reg16";
10293     case DW_OP_reg17:
10294       return "DW_OP_reg17";
10295     case DW_OP_reg18:
10296       return "DW_OP_reg18";
10297     case DW_OP_reg19:
10298       return "DW_OP_reg19";
10299     case DW_OP_reg20:
10300       return "DW_OP_reg20";
10301     case DW_OP_reg21:
10302       return "DW_OP_reg21";
10303     case DW_OP_reg22:
10304       return "DW_OP_reg22";
10305     case DW_OP_reg23:
10306       return "DW_OP_reg23";
10307     case DW_OP_reg24:
10308       return "DW_OP_reg24";
10309     case DW_OP_reg25:
10310       return "DW_OP_reg25";
10311     case DW_OP_reg26:
10312       return "DW_OP_reg26";
10313     case DW_OP_reg27:
10314       return "DW_OP_reg27";
10315     case DW_OP_reg28:
10316       return "DW_OP_reg28";
10317     case DW_OP_reg29:
10318       return "DW_OP_reg29";
10319     case DW_OP_reg30:
10320       return "DW_OP_reg30";
10321     case DW_OP_reg31:
10322       return "DW_OP_reg31";
10323     case DW_OP_breg0:
10324       return "DW_OP_breg0";
10325     case DW_OP_breg1:
10326       return "DW_OP_breg1";
10327     case DW_OP_breg2:
10328       return "DW_OP_breg2";
10329     case DW_OP_breg3:
10330       return "DW_OP_breg3";
10331     case DW_OP_breg4:
10332       return "DW_OP_breg4";
10333     case DW_OP_breg5:
10334       return "DW_OP_breg5";
10335     case DW_OP_breg6:
10336       return "DW_OP_breg6";
10337     case DW_OP_breg7:
10338       return "DW_OP_breg7";
10339     case DW_OP_breg8:
10340       return "DW_OP_breg8";
10341     case DW_OP_breg9:
10342       return "DW_OP_breg9";
10343     case DW_OP_breg10:
10344       return "DW_OP_breg10";
10345     case DW_OP_breg11:
10346       return "DW_OP_breg11";
10347     case DW_OP_breg12:
10348       return "DW_OP_breg12";
10349     case DW_OP_breg13:
10350       return "DW_OP_breg13";
10351     case DW_OP_breg14:
10352       return "DW_OP_breg14";
10353     case DW_OP_breg15:
10354       return "DW_OP_breg15";
10355     case DW_OP_breg16:
10356       return "DW_OP_breg16";
10357     case DW_OP_breg17:
10358       return "DW_OP_breg17";
10359     case DW_OP_breg18:
10360       return "DW_OP_breg18";
10361     case DW_OP_breg19:
10362       return "DW_OP_breg19";
10363     case DW_OP_breg20:
10364       return "DW_OP_breg20";
10365     case DW_OP_breg21:
10366       return "DW_OP_breg21";
10367     case DW_OP_breg22:
10368       return "DW_OP_breg22";
10369     case DW_OP_breg23:
10370       return "DW_OP_breg23";
10371     case DW_OP_breg24:
10372       return "DW_OP_breg24";
10373     case DW_OP_breg25:
10374       return "DW_OP_breg25";
10375     case DW_OP_breg26:
10376       return "DW_OP_breg26";
10377     case DW_OP_breg27:
10378       return "DW_OP_breg27";
10379     case DW_OP_breg28:
10380       return "DW_OP_breg28";
10381     case DW_OP_breg29:
10382       return "DW_OP_breg29";
10383     case DW_OP_breg30:
10384       return "DW_OP_breg30";
10385     case DW_OP_breg31:
10386       return "DW_OP_breg31";
10387     case DW_OP_regx:
10388       return "DW_OP_regx";
10389     case DW_OP_fbreg:
10390       return "DW_OP_fbreg";
10391     case DW_OP_bregx:
10392       return "DW_OP_bregx";
10393     case DW_OP_piece:
10394       return "DW_OP_piece";
10395     case DW_OP_deref_size:
10396       return "DW_OP_deref_size";
10397     case DW_OP_xderef_size:
10398       return "DW_OP_xderef_size";
10399     case DW_OP_nop:
10400       return "DW_OP_nop";
10401     /* DWARF 3 extensions.  */
10402     case DW_OP_push_object_address:
10403       return "DW_OP_push_object_address";
10404     case DW_OP_call2:
10405       return "DW_OP_call2";
10406     case DW_OP_call4:
10407       return "DW_OP_call4";
10408     case DW_OP_call_ref:
10409       return "DW_OP_call_ref";
10410     case DW_OP_form_tls_address:
10411       return "DW_OP_form_tls_address";
10412     case DW_OP_call_frame_cfa:
10413       return "DW_OP_call_frame_cfa";
10414     case DW_OP_bit_piece:
10415       return "DW_OP_bit_piece";
10416     /* DWARF 4 extensions.  */
10417     case DW_OP_implicit_value:
10418       return "DW_OP_implicit_value";
10419     case DW_OP_stack_value:
10420       return "DW_OP_stack_value";
10421     /* GNU extensions.  */
10422     case DW_OP_GNU_push_tls_address:
10423       return "DW_OP_GNU_push_tls_address";
10424     case DW_OP_GNU_uninit:
10425       return "DW_OP_GNU_uninit";
10426     default:
10427       return def ? "OP_<unknown>" : NULL;
10428     }
10429 }
10430
10431 static char *
10432 dwarf_bool_name (unsigned mybool)
10433 {
10434   if (mybool)
10435     return "TRUE";
10436   else
10437     return "FALSE";
10438 }
10439
10440 /* Convert a DWARF type code into its string name.  */
10441
10442 static char *
10443 dwarf_type_encoding_name (unsigned enc)
10444 {
10445   switch (enc)
10446     {
10447     case DW_ATE_void:
10448       return "DW_ATE_void";
10449     case DW_ATE_address:
10450       return "DW_ATE_address";
10451     case DW_ATE_boolean:
10452       return "DW_ATE_boolean";
10453     case DW_ATE_complex_float:
10454       return "DW_ATE_complex_float";
10455     case DW_ATE_float:
10456       return "DW_ATE_float";
10457     case DW_ATE_signed:
10458       return "DW_ATE_signed";
10459     case DW_ATE_signed_char:
10460       return "DW_ATE_signed_char";
10461     case DW_ATE_unsigned:
10462       return "DW_ATE_unsigned";
10463     case DW_ATE_unsigned_char:
10464       return "DW_ATE_unsigned_char";
10465     /* DWARF 3.  */
10466     case DW_ATE_imaginary_float:
10467       return "DW_ATE_imaginary_float";
10468     case DW_ATE_packed_decimal:
10469       return "DW_ATE_packed_decimal";
10470     case DW_ATE_numeric_string:
10471       return "DW_ATE_numeric_string";
10472     case DW_ATE_edited:
10473       return "DW_ATE_edited";
10474     case DW_ATE_signed_fixed:
10475       return "DW_ATE_signed_fixed";
10476     case DW_ATE_unsigned_fixed:
10477       return "DW_ATE_unsigned_fixed";
10478     case DW_ATE_decimal_float:
10479       return "DW_ATE_decimal_float";
10480     /* DWARF 4.  */
10481     case DW_ATE_UTF:
10482       return "DW_ATE_UTF";
10483     /* HP extensions.  */
10484     case DW_ATE_HP_float80:
10485       return "DW_ATE_HP_float80";
10486     case DW_ATE_HP_complex_float80:
10487       return "DW_ATE_HP_complex_float80";
10488     case DW_ATE_HP_float128:
10489       return "DW_ATE_HP_float128";
10490     case DW_ATE_HP_complex_float128:
10491       return "DW_ATE_HP_complex_float128";
10492     case DW_ATE_HP_floathpintel:
10493       return "DW_ATE_HP_floathpintel";
10494     case DW_ATE_HP_imaginary_float80:
10495       return "DW_ATE_HP_imaginary_float80";
10496     case DW_ATE_HP_imaginary_float128:
10497       return "DW_ATE_HP_imaginary_float128";
10498     default:
10499       return "DW_ATE_<unknown>";
10500     }
10501 }
10502
10503 /* Convert a DWARF call frame info operation to its string name. */
10504
10505 #if 0
10506 static char *
10507 dwarf_cfi_name (unsigned cfi_opc)
10508 {
10509   switch (cfi_opc)
10510     {
10511     case DW_CFA_advance_loc:
10512       return "DW_CFA_advance_loc";
10513     case DW_CFA_offset:
10514       return "DW_CFA_offset";
10515     case DW_CFA_restore:
10516       return "DW_CFA_restore";
10517     case DW_CFA_nop:
10518       return "DW_CFA_nop";
10519     case DW_CFA_set_loc:
10520       return "DW_CFA_set_loc";
10521     case DW_CFA_advance_loc1:
10522       return "DW_CFA_advance_loc1";
10523     case DW_CFA_advance_loc2:
10524       return "DW_CFA_advance_loc2";
10525     case DW_CFA_advance_loc4:
10526       return "DW_CFA_advance_loc4";
10527     case DW_CFA_offset_extended:
10528       return "DW_CFA_offset_extended";
10529     case DW_CFA_restore_extended:
10530       return "DW_CFA_restore_extended";
10531     case DW_CFA_undefined:
10532       return "DW_CFA_undefined";
10533     case DW_CFA_same_value:
10534       return "DW_CFA_same_value";
10535     case DW_CFA_register:
10536       return "DW_CFA_register";
10537     case DW_CFA_remember_state:
10538       return "DW_CFA_remember_state";
10539     case DW_CFA_restore_state:
10540       return "DW_CFA_restore_state";
10541     case DW_CFA_def_cfa:
10542       return "DW_CFA_def_cfa";
10543     case DW_CFA_def_cfa_register:
10544       return "DW_CFA_def_cfa_register";
10545     case DW_CFA_def_cfa_offset:
10546       return "DW_CFA_def_cfa_offset";
10547     /* DWARF 3.  */
10548     case DW_CFA_def_cfa_expression:
10549       return "DW_CFA_def_cfa_expression";
10550     case DW_CFA_expression:
10551       return "DW_CFA_expression";
10552     case DW_CFA_offset_extended_sf:
10553       return "DW_CFA_offset_extended_sf";
10554     case DW_CFA_def_cfa_sf:
10555       return "DW_CFA_def_cfa_sf";
10556     case DW_CFA_def_cfa_offset_sf:
10557       return "DW_CFA_def_cfa_offset_sf";
10558     case DW_CFA_val_offset:
10559       return "DW_CFA_val_offset";
10560     case DW_CFA_val_offset_sf:
10561       return "DW_CFA_val_offset_sf";
10562     case DW_CFA_val_expression:
10563       return "DW_CFA_val_expression";
10564     /* SGI/MIPS specific.  */
10565     case DW_CFA_MIPS_advance_loc8:
10566       return "DW_CFA_MIPS_advance_loc8";
10567     /* GNU extensions.  */
10568     case DW_CFA_GNU_window_save:
10569       return "DW_CFA_GNU_window_save";
10570     case DW_CFA_GNU_args_size:
10571       return "DW_CFA_GNU_args_size";
10572     case DW_CFA_GNU_negative_offset_extended:
10573       return "DW_CFA_GNU_negative_offset_extended";
10574     default:
10575       return "DW_CFA_<unknown>";
10576     }
10577 }
10578 #endif
10579
10580 static void
10581 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
10582 {
10583   unsigned int i;
10584
10585   print_spaces (indent, f);
10586   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset 0x%x)\n",
10587            dwarf_tag_name (die->tag), die->abbrev, die->offset);
10588
10589   if (die->parent != NULL)
10590     {
10591       print_spaces (indent, f);
10592       fprintf_unfiltered (f, "  parent at offset: 0x%x\n",
10593                           die->parent->offset);
10594     }
10595
10596   print_spaces (indent, f);
10597   fprintf_unfiltered (f, "  has children: %s\n",
10598            dwarf_bool_name (die->child != NULL));
10599
10600   print_spaces (indent, f);
10601   fprintf_unfiltered (f, "  attributes:\n");
10602
10603   for (i = 0; i < die->num_attrs; ++i)
10604     {
10605       print_spaces (indent, f);
10606       fprintf_unfiltered (f, "    %s (%s) ",
10607                dwarf_attr_name (die->attrs[i].name),
10608                dwarf_form_name (die->attrs[i].form));
10609
10610       switch (die->attrs[i].form)
10611         {
10612         case DW_FORM_ref_addr:
10613         case DW_FORM_addr:
10614           fprintf_unfiltered (f, "address: ");
10615           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
10616           break;
10617         case DW_FORM_block2:
10618         case DW_FORM_block4:
10619         case DW_FORM_block:
10620         case DW_FORM_block1:
10621           fprintf_unfiltered (f, "block: size %d", DW_BLOCK (&die->attrs[i])->size);
10622           break;
10623         case DW_FORM_exprloc:
10624           fprintf_unfiltered (f, "expression: size %u",
10625                               DW_BLOCK (&die->attrs[i])->size);
10626           break;
10627         case DW_FORM_ref1:
10628         case DW_FORM_ref2:
10629         case DW_FORM_ref4:
10630           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
10631                               (long) (DW_ADDR (&die->attrs[i])));
10632           break;
10633         case DW_FORM_data1:
10634         case DW_FORM_data2:
10635         case DW_FORM_data4:
10636         case DW_FORM_data8:
10637         case DW_FORM_udata:
10638         case DW_FORM_sdata:
10639           fprintf_unfiltered (f, "constant: %s",
10640                               pulongest (DW_UNSND (&die->attrs[i])));
10641           break;
10642         case DW_FORM_sec_offset:
10643           fprintf_unfiltered (f, "section offset: %s",
10644                               pulongest (DW_UNSND (&die->attrs[i])));
10645           break;
10646         case DW_FORM_sig8:
10647           if (DW_SIGNATURED_TYPE (&die->attrs[i]) != NULL)
10648             fprintf_unfiltered (f, "signatured type, offset: 0x%x",
10649                                 DW_SIGNATURED_TYPE (&die->attrs[i])->offset);
10650           else
10651             fprintf_unfiltered (f, "signatured type, offset: unknown");
10652           break;
10653         case DW_FORM_string:
10654         case DW_FORM_strp:
10655           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
10656                    DW_STRING (&die->attrs[i])
10657                    ? DW_STRING (&die->attrs[i]) : "",
10658                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
10659           break;
10660         case DW_FORM_flag:
10661           if (DW_UNSND (&die->attrs[i]))
10662             fprintf_unfiltered (f, "flag: TRUE");
10663           else
10664             fprintf_unfiltered (f, "flag: FALSE");
10665           break;
10666         case DW_FORM_flag_present:
10667           fprintf_unfiltered (f, "flag: TRUE");
10668           break;
10669         case DW_FORM_indirect:
10670           /* the reader will have reduced the indirect form to
10671              the "base form" so this form should not occur */
10672           fprintf_unfiltered (f, "unexpected attribute form: DW_FORM_indirect");
10673           break;
10674         default:
10675           fprintf_unfiltered (f, "unsupported attribute form: %d.",
10676                    die->attrs[i].form);
10677           break;
10678         }
10679       fprintf_unfiltered (f, "\n");
10680     }
10681 }
10682
10683 static void
10684 dump_die_for_error (struct die_info *die)
10685 {
10686   dump_die_shallow (gdb_stderr, 0, die);
10687 }
10688
10689 static void
10690 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
10691 {
10692   int indent = level * 4;
10693
10694   gdb_assert (die != NULL);
10695
10696   if (level >= max_level)
10697     return;
10698
10699   dump_die_shallow (f, indent, die);
10700
10701   if (die->child != NULL)
10702     {
10703       print_spaces (indent, f);
10704       fprintf_unfiltered (f, "  Children:");
10705       if (level + 1 < max_level)
10706         {
10707           fprintf_unfiltered (f, "\n");
10708           dump_die_1 (f, level + 1, max_level, die->child);
10709         }
10710       else
10711         {
10712           fprintf_unfiltered (f, " [not printed, max nesting level reached]\n");
10713         }
10714     }
10715
10716   if (die->sibling != NULL && level > 0)
10717     {
10718       dump_die_1 (f, level, max_level, die->sibling);
10719     }
10720 }
10721
10722 /* This is called from the pdie macro in gdbinit.in.
10723    It's not static so gcc will keep a copy callable from gdb.  */
10724
10725 void
10726 dump_die (struct die_info *die, int max_level)
10727 {
10728   dump_die_1 (gdb_stdlog, 0, max_level, die);
10729 }
10730
10731 static void
10732 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
10733 {
10734   void **slot;
10735
10736   slot = htab_find_slot_with_hash (cu->die_hash, die, die->offset, INSERT);
10737
10738   *slot = die;
10739 }
10740
10741 static int
10742 is_ref_attr (struct attribute *attr)
10743 {
10744   switch (attr->form)
10745     {
10746     case DW_FORM_ref_addr:
10747     case DW_FORM_ref1:
10748     case DW_FORM_ref2:
10749     case DW_FORM_ref4:
10750     case DW_FORM_ref8:
10751     case DW_FORM_ref_udata:
10752       return 1;
10753     default:
10754       return 0;
10755     }
10756 }
10757
10758 static unsigned int
10759 dwarf2_get_ref_die_offset (struct attribute *attr)
10760 {
10761   if (is_ref_attr (attr))
10762     return DW_ADDR (attr);
10763
10764   complaint (&symfile_complaints,
10765              _("unsupported die ref attribute form: '%s'"),
10766              dwarf_form_name (attr->form));
10767   return 0;
10768 }
10769
10770 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
10771  * the value held by the attribute is not constant.  */
10772
10773 static LONGEST
10774 dwarf2_get_attr_constant_value (struct attribute *attr, int default_value)
10775 {
10776   if (attr->form == DW_FORM_sdata)
10777     return DW_SND (attr);
10778   else if (attr->form == DW_FORM_udata
10779            || attr->form == DW_FORM_data1
10780            || attr->form == DW_FORM_data2
10781            || attr->form == DW_FORM_data4
10782            || attr->form == DW_FORM_data8)
10783     return DW_UNSND (attr);
10784   else
10785     {
10786       complaint (&symfile_complaints, _("Attribute value is not a constant (%s)"),
10787                  dwarf_form_name (attr->form));
10788       return default_value;
10789     }
10790 }
10791
10792 /* THIS_CU has a reference to PER_CU.  If necessary, load the new compilation
10793    unit and add it to our queue.
10794    The result is non-zero if PER_CU was queued, otherwise the result is zero
10795    meaning either PER_CU is already queued or it is already loaded.  */
10796
10797 static int
10798 maybe_queue_comp_unit (struct dwarf2_cu *this_cu,
10799                        struct dwarf2_per_cu_data *per_cu)
10800 {
10801   /* Mark the dependence relation so that we don't flush PER_CU
10802      too early.  */
10803   dwarf2_add_dependence (this_cu, per_cu);
10804
10805   /* If it's already on the queue, we have nothing to do.  */
10806   if (per_cu->queued)
10807     return 0;
10808
10809   /* If the compilation unit is already loaded, just mark it as
10810      used.  */
10811   if (per_cu->cu != NULL)
10812     {
10813       per_cu->cu->last_used = 0;
10814       return 0;
10815     }
10816
10817   /* Add it to the queue.  */
10818   queue_comp_unit (per_cu, this_cu->objfile);
10819
10820   return 1;
10821 }
10822
10823 /* Follow reference or signature attribute ATTR of SRC_DIE.
10824    On entry *REF_CU is the CU of SRC_DIE.
10825    On exit *REF_CU is the CU of the result.  */
10826
10827 static struct die_info *
10828 follow_die_ref_or_sig (struct die_info *src_die, struct attribute *attr,
10829                        struct dwarf2_cu **ref_cu)
10830 {
10831   struct die_info *die;
10832
10833   if (is_ref_attr (attr))
10834     die = follow_die_ref (src_die, attr, ref_cu);
10835   else if (attr->form == DW_FORM_sig8)
10836     die = follow_die_sig (src_die, attr, ref_cu);
10837   else
10838     {
10839       dump_die_for_error (src_die);
10840       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
10841              (*ref_cu)->objfile->name);
10842     }
10843
10844   return die;
10845 }
10846
10847 /* Follow reference OFFSET.
10848    On entry *REF_CU is the CU of source DIE referencing OFFSET.
10849    On exit *REF_CU is the CU of the result.  */
10850
10851 static struct die_info *
10852 follow_die_offset (unsigned int offset, struct dwarf2_cu **ref_cu)
10853 {
10854   struct die_info temp_die;
10855   struct dwarf2_cu *target_cu, *cu = *ref_cu;
10856
10857   gdb_assert (cu->per_cu != NULL);
10858
10859   if (cu->per_cu->from_debug_types)
10860     {
10861       /* .debug_types CUs cannot reference anything outside their CU.
10862          If they need to, they have to reference a signatured type via
10863          DW_FORM_sig8.  */
10864       if (! offset_in_cu_p (&cu->header, offset))
10865         return NULL;
10866       target_cu = cu;
10867     }
10868   else if (! offset_in_cu_p (&cu->header, offset))
10869     {
10870       struct dwarf2_per_cu_data *per_cu;
10871
10872       per_cu = dwarf2_find_containing_comp_unit (offset, cu->objfile);
10873
10874       /* If necessary, add it to the queue and load its DIEs.  */
10875       if (maybe_queue_comp_unit (cu, per_cu))
10876         load_full_comp_unit (per_cu, cu->objfile);
10877
10878       target_cu = per_cu->cu;
10879     }
10880   else
10881     target_cu = cu;
10882
10883   *ref_cu = target_cu;
10884   temp_die.offset = offset;
10885   return htab_find_with_hash (target_cu->die_hash, &temp_die, offset);
10886 }
10887
10888 /* Follow reference attribute ATTR of SRC_DIE.
10889    On entry *REF_CU is the CU of SRC_DIE.
10890    On exit *REF_CU is the CU of the result.  */
10891
10892 static struct die_info *
10893 follow_die_ref (struct die_info *src_die, struct attribute *attr,
10894                 struct dwarf2_cu **ref_cu)
10895 {
10896   unsigned int offset = dwarf2_get_ref_die_offset (attr);
10897   struct dwarf2_cu *cu = *ref_cu;
10898   struct die_info *die;
10899
10900   die = follow_die_offset (offset, ref_cu);
10901   if (!die)
10902     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced from DIE "
10903            "at 0x%x [in module %s]"),
10904            offset, src_die->offset, cu->objfile->name);
10905
10906   return die;
10907 }
10908
10909 /* Return DWARF block and its CU referenced by OFFSET at PER_CU.  Returned
10910    value is intended for DW_OP_call*.  */
10911
10912 struct dwarf2_locexpr_baton
10913 dwarf2_fetch_die_location_block (unsigned int offset,
10914                                  struct dwarf2_per_cu_data *per_cu)
10915 {
10916   struct dwarf2_cu *cu = per_cu->cu;
10917   struct die_info *die;
10918   struct attribute *attr;
10919   struct dwarf2_locexpr_baton retval;
10920
10921   die = follow_die_offset (offset, &cu);
10922   if (!die)
10923     error (_("Dwarf Error: Cannot find DIE at 0x%x referenced in module %s"),
10924            offset, per_cu->cu->objfile->name);
10925
10926   attr = dwarf2_attr (die, DW_AT_location, cu);
10927   if (!attr)
10928     {
10929       /* DWARF: "If there is no such attribute, then there is no effect.".  */
10930
10931       retval.data = NULL;
10932       retval.size = 0;
10933     }
10934   else
10935     {
10936       if (!attr_form_is_block (attr))
10937         error (_("Dwarf Error: DIE at 0x%x referenced in module %s "
10938                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
10939                offset, per_cu->cu->objfile->name);
10940
10941       retval.data = DW_BLOCK (attr)->data;
10942       retval.size = DW_BLOCK (attr)->size;
10943     }
10944   retval.per_cu = cu->per_cu;
10945   return retval;
10946 }
10947
10948 /* Follow the signature attribute ATTR in SRC_DIE.
10949    On entry *REF_CU is the CU of SRC_DIE.
10950    On exit *REF_CU is the CU of the result.  */
10951
10952 static struct die_info *
10953 follow_die_sig (struct die_info *src_die, struct attribute *attr,
10954                 struct dwarf2_cu **ref_cu)
10955 {
10956   struct objfile *objfile = (*ref_cu)->objfile;
10957   struct die_info temp_die;
10958   struct signatured_type *sig_type = DW_SIGNATURED_TYPE (attr);
10959   struct dwarf2_cu *sig_cu;
10960   struct die_info *die;
10961
10962   /* sig_type will be NULL if the signatured type is missing from
10963      the debug info.  */
10964   if (sig_type == NULL)
10965     error (_("Dwarf Error: Cannot find signatured DIE referenced from DIE "
10966              "at 0x%x [in module %s]"),
10967            src_die->offset, objfile->name);
10968
10969   /* If necessary, add it to the queue and load its DIEs.  */
10970
10971   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu))
10972     read_signatured_type (objfile, sig_type);
10973
10974   gdb_assert (sig_type->per_cu.cu != NULL);
10975
10976   sig_cu = sig_type->per_cu.cu;
10977   temp_die.offset = sig_cu->header.offset + sig_type->type_offset;
10978   die = htab_find_with_hash (sig_cu->die_hash, &temp_die, temp_die.offset);
10979   if (die)
10980     {
10981       *ref_cu = sig_cu;
10982       return die;
10983     }
10984
10985   error (_("Dwarf Error: Cannot find signatured DIE at 0x%x referenced from DIE "
10986          "at 0x%x [in module %s]"),
10987          sig_type->type_offset, src_die->offset, objfile->name);
10988 }
10989
10990 /* Given an offset of a signatured type, return its signatured_type.  */
10991
10992 static struct signatured_type *
10993 lookup_signatured_type_at_offset (struct objfile *objfile, unsigned int offset)
10994 {
10995   gdb_byte *info_ptr = dwarf2_per_objfile->types.buffer + offset;
10996   unsigned int length, initial_length_size;
10997   unsigned int sig_offset;
10998   struct signatured_type find_entry, *type_sig;
10999
11000   length = read_initial_length (objfile->obfd, info_ptr, &initial_length_size);
11001   sig_offset = (initial_length_size
11002                 + 2 /*version*/
11003                 + (initial_length_size == 4 ? 4 : 8) /*debug_abbrev_offset*/
11004                 + 1 /*address_size*/);
11005   find_entry.signature = bfd_get_64 (objfile->obfd, info_ptr + sig_offset);
11006   type_sig = htab_find (dwarf2_per_objfile->signatured_types, &find_entry);
11007
11008   /* This is only used to lookup previously recorded types.
11009      If we didn't find it, it's our bug.  */
11010   gdb_assert (type_sig != NULL);
11011   gdb_assert (offset == type_sig->offset);
11012
11013   return type_sig;
11014 }
11015
11016 /* Read in signatured type at OFFSET and build its CU and die(s).  */
11017
11018 static void
11019 read_signatured_type_at_offset (struct objfile *objfile,
11020                                 unsigned int offset)
11021 {
11022   struct signatured_type *type_sig;
11023
11024   dwarf2_read_section (objfile, &dwarf2_per_objfile->types);
11025
11026   /* We have the section offset, but we need the signature to do the
11027      hash table lookup.  */
11028   type_sig = lookup_signatured_type_at_offset (objfile, offset);
11029
11030   gdb_assert (type_sig->per_cu.cu == NULL);
11031
11032   read_signatured_type (objfile, type_sig);
11033
11034   gdb_assert (type_sig->per_cu.cu != NULL);
11035 }
11036
11037 /* Read in a signatured type and build its CU and DIEs.  */
11038
11039 static void
11040 read_signatured_type (struct objfile *objfile,
11041                       struct signatured_type *type_sig)
11042 {
11043   gdb_byte *types_ptr = dwarf2_per_objfile->types.buffer + type_sig->offset;
11044   struct die_reader_specs reader_specs;
11045   struct dwarf2_cu *cu;
11046   ULONGEST signature;
11047   struct cleanup *back_to, *free_cu_cleanup;
11048   struct attribute *attr;
11049
11050   gdb_assert (type_sig->per_cu.cu == NULL);
11051
11052   cu = xmalloc (sizeof (struct dwarf2_cu));
11053   memset (cu, 0, sizeof (struct dwarf2_cu));
11054   obstack_init (&cu->comp_unit_obstack);
11055   cu->objfile = objfile;
11056   type_sig->per_cu.cu = cu;
11057   cu->per_cu = &type_sig->per_cu;
11058
11059   /* If an error occurs while loading, release our storage.  */
11060   free_cu_cleanup = make_cleanup (free_one_comp_unit, cu);
11061
11062   types_ptr = read_type_comp_unit_head (&cu->header, &signature,
11063                                         types_ptr, objfile->obfd);
11064   gdb_assert (signature == type_sig->signature);
11065
11066   cu->die_hash
11067     = htab_create_alloc_ex (cu->header.length / 12,
11068                             die_hash,
11069                             die_eq,
11070                             NULL,
11071                             &cu->comp_unit_obstack,
11072                             hashtab_obstack_allocate,
11073                             dummy_obstack_deallocate);
11074
11075   dwarf2_read_abbrevs (cu->objfile->obfd, cu);
11076   back_to = make_cleanup (dwarf2_free_abbrev_table, cu);
11077
11078   init_cu_die_reader (&reader_specs, cu);
11079
11080   cu->dies = read_die_and_children (&reader_specs, types_ptr, &types_ptr,
11081                                     NULL /*parent*/);
11082
11083   /* We try not to read any attributes in this function, because not
11084      all objfiles needed for references have been loaded yet, and symbol
11085      table processing isn't initialized.  But we have to set the CU language,
11086      or we won't be able to build types correctly.  */
11087   attr = dwarf2_attr (cu->dies, DW_AT_language, cu);
11088   if (attr)
11089     set_cu_language (DW_UNSND (attr), cu);
11090   else
11091     set_cu_language (language_minimal, cu);
11092
11093   do_cleanups (back_to);
11094
11095   /* We've successfully allocated this compilation unit.  Let our caller
11096      clean it up when finished with it.  */
11097   discard_cleanups (free_cu_cleanup);
11098
11099   type_sig->per_cu.cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
11100   dwarf2_per_objfile->read_in_chain = &type_sig->per_cu;
11101 }
11102
11103 /* Decode simple location descriptions.
11104    Given a pointer to a dwarf block that defines a location, compute
11105    the location and return the value.
11106
11107    NOTE drow/2003-11-18: This function is called in two situations
11108    now: for the address of static or global variables (partial symbols
11109    only) and for offsets into structures which are expected to be
11110    (more or less) constant.  The partial symbol case should go away,
11111    and only the constant case should remain.  That will let this
11112    function complain more accurately.  A few special modes are allowed
11113    without complaint for global variables (for instance, global
11114    register values and thread-local values).
11115
11116    A location description containing no operations indicates that the
11117    object is optimized out.  The return value is 0 for that case.
11118    FIXME drow/2003-11-16: No callers check for this case any more; soon all
11119    callers will only want a very basic result and this can become a
11120    complaint.
11121
11122    Note that stack[0] is unused except as a default error return.
11123    Note that stack overflow is not yet handled.  */
11124
11125 static CORE_ADDR
11126 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
11127 {
11128   struct objfile *objfile = cu->objfile;
11129   int i;
11130   int size = blk->size;
11131   gdb_byte *data = blk->data;
11132   CORE_ADDR stack[64];
11133   int stacki;
11134   unsigned int bytes_read, unsnd;
11135   gdb_byte op;
11136
11137   i = 0;
11138   stacki = 0;
11139   stack[stacki] = 0;
11140
11141   while (i < size)
11142     {
11143       op = data[i++];
11144       switch (op)
11145         {
11146         case DW_OP_lit0:
11147         case DW_OP_lit1:
11148         case DW_OP_lit2:
11149         case DW_OP_lit3:
11150         case DW_OP_lit4:
11151         case DW_OP_lit5:
11152         case DW_OP_lit6:
11153         case DW_OP_lit7:
11154         case DW_OP_lit8:
11155         case DW_OP_lit9:
11156         case DW_OP_lit10:
11157         case DW_OP_lit11:
11158         case DW_OP_lit12:
11159         case DW_OP_lit13:
11160         case DW_OP_lit14:
11161         case DW_OP_lit15:
11162         case DW_OP_lit16:
11163         case DW_OP_lit17:
11164         case DW_OP_lit18:
11165         case DW_OP_lit19:
11166         case DW_OP_lit20:
11167         case DW_OP_lit21:
11168         case DW_OP_lit22:
11169         case DW_OP_lit23:
11170         case DW_OP_lit24:
11171         case DW_OP_lit25:
11172         case DW_OP_lit26:
11173         case DW_OP_lit27:
11174         case DW_OP_lit28:
11175         case DW_OP_lit29:
11176         case DW_OP_lit30:
11177         case DW_OP_lit31:
11178           stack[++stacki] = op - DW_OP_lit0;
11179           break;
11180
11181         case DW_OP_reg0:
11182         case DW_OP_reg1:
11183         case DW_OP_reg2:
11184         case DW_OP_reg3:
11185         case DW_OP_reg4:
11186         case DW_OP_reg5:
11187         case DW_OP_reg6:
11188         case DW_OP_reg7:
11189         case DW_OP_reg8:
11190         case DW_OP_reg9:
11191         case DW_OP_reg10:
11192         case DW_OP_reg11:
11193         case DW_OP_reg12:
11194         case DW_OP_reg13:
11195         case DW_OP_reg14:
11196         case DW_OP_reg15:
11197         case DW_OP_reg16:
11198         case DW_OP_reg17:
11199         case DW_OP_reg18:
11200         case DW_OP_reg19:
11201         case DW_OP_reg20:
11202         case DW_OP_reg21:
11203         case DW_OP_reg22:
11204         case DW_OP_reg23:
11205         case DW_OP_reg24:
11206         case DW_OP_reg25:
11207         case DW_OP_reg26:
11208         case DW_OP_reg27:
11209         case DW_OP_reg28:
11210         case DW_OP_reg29:
11211         case DW_OP_reg30:
11212         case DW_OP_reg31:
11213           stack[++stacki] = op - DW_OP_reg0;
11214           if (i < size)
11215             dwarf2_complex_location_expr_complaint ();
11216           break;
11217
11218         case DW_OP_regx:
11219           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
11220           i += bytes_read;
11221           stack[++stacki] = unsnd;
11222           if (i < size)
11223             dwarf2_complex_location_expr_complaint ();
11224           break;
11225
11226         case DW_OP_addr:
11227           stack[++stacki] = read_address (objfile->obfd, &data[i],
11228                                           cu, &bytes_read);
11229           i += bytes_read;
11230           break;
11231
11232         case DW_OP_const1u:
11233           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
11234           i += 1;
11235           break;
11236
11237         case DW_OP_const1s:
11238           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
11239           i += 1;
11240           break;
11241
11242         case DW_OP_const2u:
11243           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
11244           i += 2;
11245           break;
11246
11247         case DW_OP_const2s:
11248           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
11249           i += 2;
11250           break;
11251
11252         case DW_OP_const4u:
11253           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
11254           i += 4;
11255           break;
11256
11257         case DW_OP_const4s:
11258           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
11259           i += 4;
11260           break;
11261
11262         case DW_OP_constu:
11263           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
11264                                                   &bytes_read);
11265           i += bytes_read;
11266           break;
11267
11268         case DW_OP_consts:
11269           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
11270           i += bytes_read;
11271           break;
11272
11273         case DW_OP_dup:
11274           stack[stacki + 1] = stack[stacki];
11275           stacki++;
11276           break;
11277
11278         case DW_OP_plus:
11279           stack[stacki - 1] += stack[stacki];
11280           stacki--;
11281           break;
11282
11283         case DW_OP_plus_uconst:
11284           stack[stacki] += read_unsigned_leb128 (NULL, (data + i), &bytes_read);
11285           i += bytes_read;
11286           break;
11287
11288         case DW_OP_minus:
11289           stack[stacki - 1] -= stack[stacki];
11290           stacki--;
11291           break;
11292
11293         case DW_OP_deref:
11294           /* If we're not the last op, then we definitely can't encode
11295              this using GDB's address_class enum.  This is valid for partial
11296              global symbols, although the variable's address will be bogus
11297              in the psymtab.  */
11298           if (i < size)
11299             dwarf2_complex_location_expr_complaint ();
11300           break;
11301
11302         case DW_OP_GNU_push_tls_address:
11303           /* The top of the stack has the offset from the beginning
11304              of the thread control block at which the variable is located.  */
11305           /* Nothing should follow this operator, so the top of stack would
11306              be returned.  */
11307           /* This is valid for partial global symbols, but the variable's
11308              address will be bogus in the psymtab.  */
11309           if (i < size)
11310             dwarf2_complex_location_expr_complaint ();
11311           break;
11312
11313         case DW_OP_GNU_uninit:
11314           break;
11315
11316         default:
11317           complaint (&symfile_complaints, _("unsupported stack op: '%s'"),
11318                      dwarf_stack_op_name (op, 1));
11319           return (stack[stacki]);
11320         }
11321     }
11322   return (stack[stacki]);
11323 }
11324
11325 /* memory allocation interface */
11326
11327 static struct dwarf_block *
11328 dwarf_alloc_block (struct dwarf2_cu *cu)
11329 {
11330   struct dwarf_block *blk;
11331
11332   blk = (struct dwarf_block *)
11333     obstack_alloc (&cu->comp_unit_obstack, sizeof (struct dwarf_block));
11334   return (blk);
11335 }
11336
11337 static struct abbrev_info *
11338 dwarf_alloc_abbrev (struct dwarf2_cu *cu)
11339 {
11340   struct abbrev_info *abbrev;
11341
11342   abbrev = (struct abbrev_info *)
11343     obstack_alloc (&cu->abbrev_obstack, sizeof (struct abbrev_info));
11344   memset (abbrev, 0, sizeof (struct abbrev_info));
11345   return (abbrev);
11346 }
11347
11348 static struct die_info *
11349 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
11350 {
11351   struct die_info *die;
11352   size_t size = sizeof (struct die_info);
11353
11354   if (num_attrs > 1)
11355     size += (num_attrs - 1) * sizeof (struct attribute);
11356
11357   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
11358   memset (die, 0, sizeof (struct die_info));
11359   return (die);
11360 }
11361
11362 \f
11363 /* Macro support.  */
11364
11365
11366 /* Return the full name of file number I in *LH's file name table.
11367    Use COMP_DIR as the name of the current directory of the
11368    compilation.  The result is allocated using xmalloc; the caller is
11369    responsible for freeing it.  */
11370 static char *
11371 file_full_name (int file, struct line_header *lh, const char *comp_dir)
11372 {
11373   /* Is the file number a valid index into the line header's file name
11374      table?  Remember that file numbers start with one, not zero.  */
11375   if (1 <= file && file <= lh->num_file_names)
11376     {
11377       struct file_entry *fe = &lh->file_names[file - 1];
11378   
11379       if (IS_ABSOLUTE_PATH (fe->name))
11380         return xstrdup (fe->name);
11381       else
11382         {
11383           const char *dir;
11384           int dir_len;
11385           char *full_name;
11386
11387           if (fe->dir_index)
11388             dir = lh->include_dirs[fe->dir_index - 1];
11389           else
11390             dir = comp_dir;
11391
11392           if (dir)
11393             {
11394               dir_len = strlen (dir);
11395               full_name = xmalloc (dir_len + 1 + strlen (fe->name) + 1);
11396               strcpy (full_name, dir);
11397               full_name[dir_len] = '/';
11398               strcpy (full_name + dir_len + 1, fe->name);
11399               return full_name;
11400             }
11401           else
11402             return xstrdup (fe->name);
11403         }
11404     }
11405   else
11406     {
11407       /* The compiler produced a bogus file number.  We can at least
11408          record the macro definitions made in the file, even if we
11409          won't be able to find the file by name.  */
11410       char fake_name[80];
11411
11412       sprintf (fake_name, "<bad macro file number %d>", file);
11413
11414       complaint (&symfile_complaints, 
11415                  _("bad file number in macro information (%d)"),
11416                  file);
11417
11418       return xstrdup (fake_name);
11419     }
11420 }
11421
11422
11423 static struct macro_source_file *
11424 macro_start_file (int file, int line,
11425                   struct macro_source_file *current_file,
11426                   const char *comp_dir,
11427                   struct line_header *lh, struct objfile *objfile)
11428 {
11429   /* The full name of this source file.  */
11430   char *full_name = file_full_name (file, lh, comp_dir);
11431
11432   /* We don't create a macro table for this compilation unit
11433      at all until we actually get a filename.  */
11434   if (! pending_macros)
11435     pending_macros = new_macro_table (&objfile->objfile_obstack,
11436                                       objfile->macro_cache);
11437
11438   if (! current_file)
11439     /* If we have no current file, then this must be the start_file
11440        directive for the compilation unit's main source file.  */
11441     current_file = macro_set_main (pending_macros, full_name);
11442   else
11443     current_file = macro_include (current_file, line, full_name);
11444
11445   xfree (full_name);
11446               
11447   return current_file;
11448 }
11449
11450
11451 /* Copy the LEN characters at BUF to a xmalloc'ed block of memory,
11452    followed by a null byte.  */
11453 static char *
11454 copy_string (const char *buf, int len)
11455 {
11456   char *s = xmalloc (len + 1);
11457
11458   memcpy (s, buf, len);
11459   s[len] = '\0';
11460   return s;
11461 }
11462
11463
11464 static const char *
11465 consume_improper_spaces (const char *p, const char *body)
11466 {
11467   if (*p == ' ')
11468     {
11469       complaint (&symfile_complaints,
11470                  _("macro definition contains spaces in formal argument list:\n`%s'"),
11471                  body);
11472
11473       while (*p == ' ')
11474         p++;
11475     }
11476
11477   return p;
11478 }
11479
11480
11481 static void
11482 parse_macro_definition (struct macro_source_file *file, int line,
11483                         const char *body)
11484 {
11485   const char *p;
11486
11487   /* The body string takes one of two forms.  For object-like macro
11488      definitions, it should be:
11489
11490         <macro name> " " <definition>
11491
11492      For function-like macro definitions, it should be:
11493
11494         <macro name> "() " <definition>
11495      or
11496         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
11497
11498      Spaces may appear only where explicitly indicated, and in the
11499      <definition>.
11500
11501      The Dwarf 2 spec says that an object-like macro's name is always
11502      followed by a space, but versions of GCC around March 2002 omit
11503      the space when the macro's definition is the empty string. 
11504
11505      The Dwarf 2 spec says that there should be no spaces between the
11506      formal arguments in a function-like macro's formal argument list,
11507      but versions of GCC around March 2002 include spaces after the
11508      commas.  */
11509
11510
11511   /* Find the extent of the macro name.  The macro name is terminated
11512      by either a space or null character (for an object-like macro) or
11513      an opening paren (for a function-like macro).  */
11514   for (p = body; *p; p++)
11515     if (*p == ' ' || *p == '(')
11516       break;
11517
11518   if (*p == ' ' || *p == '\0')
11519     {
11520       /* It's an object-like macro.  */
11521       int name_len = p - body;
11522       char *name = copy_string (body, name_len);
11523       const char *replacement;
11524
11525       if (*p == ' ')
11526         replacement = body + name_len + 1;
11527       else
11528         {
11529           dwarf2_macro_malformed_definition_complaint (body);
11530           replacement = body + name_len;
11531         }
11532       
11533       macro_define_object (file, line, name, replacement);
11534
11535       xfree (name);
11536     }
11537   else if (*p == '(')
11538     {
11539       /* It's a function-like macro.  */
11540       char *name = copy_string (body, p - body);
11541       int argc = 0;
11542       int argv_size = 1;
11543       char **argv = xmalloc (argv_size * sizeof (*argv));
11544
11545       p++;
11546
11547       p = consume_improper_spaces (p, body);
11548
11549       /* Parse the formal argument list.  */
11550       while (*p && *p != ')')
11551         {
11552           /* Find the extent of the current argument name.  */
11553           const char *arg_start = p;
11554
11555           while (*p && *p != ',' && *p != ')' && *p != ' ')
11556             p++;
11557
11558           if (! *p || p == arg_start)
11559             dwarf2_macro_malformed_definition_complaint (body);
11560           else
11561             {
11562               /* Make sure argv has room for the new argument.  */
11563               if (argc >= argv_size)
11564                 {
11565                   argv_size *= 2;
11566                   argv = xrealloc (argv, argv_size * sizeof (*argv));
11567                 }
11568
11569               argv[argc++] = copy_string (arg_start, p - arg_start);
11570             }
11571
11572           p = consume_improper_spaces (p, body);
11573
11574           /* Consume the comma, if present.  */
11575           if (*p == ',')
11576             {
11577               p++;
11578
11579               p = consume_improper_spaces (p, body);
11580             }
11581         }
11582
11583       if (*p == ')')
11584         {
11585           p++;
11586
11587           if (*p == ' ')
11588             /* Perfectly formed definition, no complaints.  */
11589             macro_define_function (file, line, name,
11590                                    argc, (const char **) argv, 
11591                                    p + 1);
11592           else if (*p == '\0')
11593             {
11594               /* Complain, but do define it.  */
11595               dwarf2_macro_malformed_definition_complaint (body);
11596               macro_define_function (file, line, name,
11597                                      argc, (const char **) argv, 
11598                                      p);
11599             }
11600           else
11601             /* Just complain.  */
11602             dwarf2_macro_malformed_definition_complaint (body);
11603         }
11604       else
11605         /* Just complain.  */
11606         dwarf2_macro_malformed_definition_complaint (body);
11607
11608       xfree (name);
11609       {
11610         int i;
11611
11612         for (i = 0; i < argc; i++)
11613           xfree (argv[i]);
11614       }
11615       xfree (argv);
11616     }
11617   else
11618     dwarf2_macro_malformed_definition_complaint (body);
11619 }
11620
11621
11622 static void
11623 dwarf_decode_macros (struct line_header *lh, unsigned int offset,
11624                      char *comp_dir, bfd *abfd,
11625                      struct dwarf2_cu *cu)
11626 {
11627   gdb_byte *mac_ptr, *mac_end;
11628   struct macro_source_file *current_file = 0;
11629   enum dwarf_macinfo_record_type macinfo_type;
11630   int at_commandline;
11631
11632   dwarf2_read_section (dwarf2_per_objfile->objfile,
11633                        &dwarf2_per_objfile->macinfo);
11634   if (dwarf2_per_objfile->macinfo.buffer == NULL)
11635     {
11636       complaint (&symfile_complaints, _("missing .debug_macinfo section"));
11637       return;
11638     }
11639
11640   /* First pass: Find the name of the base filename.
11641      This filename is needed in order to process all macros whose definition
11642      (or undefinition) comes from the command line.  These macros are defined
11643      before the first DW_MACINFO_start_file entry, and yet still need to be
11644      associated to the base file.
11645
11646      To determine the base file name, we scan the macro definitions until we
11647      reach the first DW_MACINFO_start_file entry.  We then initialize
11648      CURRENT_FILE accordingly so that any macro definition found before the
11649      first DW_MACINFO_start_file can still be associated to the base file.  */
11650
11651   mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
11652   mac_end = dwarf2_per_objfile->macinfo.buffer
11653     + dwarf2_per_objfile->macinfo.size;
11654
11655   do
11656     {
11657       /* Do we at least have room for a macinfo type byte?  */
11658       if (mac_ptr >= mac_end)
11659         {
11660           /* Complaint is printed during the second pass as GDB will probably
11661              stop the first pass earlier upon finding DW_MACINFO_start_file.  */
11662           break;
11663         }
11664
11665       macinfo_type = read_1_byte (abfd, mac_ptr);
11666       mac_ptr++;
11667
11668       switch (macinfo_type)
11669         {
11670           /* A zero macinfo type indicates the end of the macro
11671              information.  */
11672         case 0:
11673           break;
11674
11675         case DW_MACINFO_define:
11676         case DW_MACINFO_undef:
11677           /* Only skip the data by MAC_PTR.  */
11678           {
11679             unsigned int bytes_read;
11680
11681             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
11682             mac_ptr += bytes_read;
11683             read_string (abfd, mac_ptr, &bytes_read);
11684             mac_ptr += bytes_read;
11685           }
11686           break;
11687
11688         case DW_MACINFO_start_file:
11689           {
11690             unsigned int bytes_read;
11691             int line, file;
11692
11693             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
11694             mac_ptr += bytes_read;
11695             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
11696             mac_ptr += bytes_read;
11697
11698             current_file = macro_start_file (file, line, current_file, comp_dir,
11699                                              lh, cu->objfile);
11700           }
11701           break;
11702
11703         case DW_MACINFO_end_file:
11704           /* No data to skip by MAC_PTR.  */
11705           break;
11706
11707         case DW_MACINFO_vendor_ext:
11708           /* Only skip the data by MAC_PTR.  */
11709           {
11710             unsigned int bytes_read;
11711
11712             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
11713             mac_ptr += bytes_read;
11714             read_string (abfd, mac_ptr, &bytes_read);
11715             mac_ptr += bytes_read;
11716           }
11717           break;
11718
11719         default:
11720           break;
11721         }
11722     } while (macinfo_type != 0 && current_file == NULL);
11723
11724   /* Second pass: Process all entries.
11725
11726      Use the AT_COMMAND_LINE flag to determine whether we are still processing
11727      command-line macro definitions/undefinitions.  This flag is unset when we
11728      reach the first DW_MACINFO_start_file entry.  */
11729
11730   mac_ptr = dwarf2_per_objfile->macinfo.buffer + offset;
11731
11732   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
11733      GDB is still reading the definitions from command line.  First
11734      DW_MACINFO_start_file will need to be ignored as it was already executed
11735      to create CURRENT_FILE for the main source holding also the command line
11736      definitions.  On first met DW_MACINFO_start_file this flag is reset to
11737      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
11738
11739   at_commandline = 1;
11740
11741   do
11742     {
11743       /* Do we at least have room for a macinfo type byte?  */
11744       if (mac_ptr >= mac_end)
11745         {
11746           dwarf2_macros_too_long_complaint ();
11747           break;
11748         }
11749
11750       macinfo_type = read_1_byte (abfd, mac_ptr);
11751       mac_ptr++;
11752
11753       switch (macinfo_type)
11754         {
11755           /* A zero macinfo type indicates the end of the macro
11756              information.  */
11757         case 0:
11758           break;
11759
11760         case DW_MACINFO_define:
11761         case DW_MACINFO_undef:
11762           {
11763             unsigned int bytes_read;
11764             int line;
11765             char *body;
11766
11767             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
11768             mac_ptr += bytes_read;
11769             body = read_string (abfd, mac_ptr, &bytes_read);
11770             mac_ptr += bytes_read;
11771
11772             if (! current_file)
11773               {
11774                 /* DWARF violation as no main source is present.  */
11775                 complaint (&symfile_complaints,
11776                            _("debug info with no main source gives macro %s "
11777                              "on line %d: %s"),
11778                            macinfo_type == DW_MACINFO_define ? 
11779                              _("definition") : 
11780                                macinfo_type == DW_MACINFO_undef ?
11781                                  _("undefinition") :
11782                                  _("something-or-other"), line, body);
11783                 break;
11784               }
11785             if ((line == 0 && !at_commandline) || (line != 0 && at_commandline))
11786               complaint (&symfile_complaints,
11787                          _("debug info gives %s macro %s with %s line %d: %s"),
11788                          at_commandline ? _("command-line") : _("in-file"),
11789                          macinfo_type == DW_MACINFO_define ?
11790                            _("definition") : 
11791                              macinfo_type == DW_MACINFO_undef ?
11792                                _("undefinition") :
11793                                _("something-or-other"),
11794                          line == 0 ? _("zero") : _("non-zero"), line, body);
11795
11796             if (macinfo_type == DW_MACINFO_define)
11797               parse_macro_definition (current_file, line, body);
11798             else if (macinfo_type == DW_MACINFO_undef)
11799               macro_undef (current_file, line, body);
11800           }
11801           break;
11802
11803         case DW_MACINFO_start_file:
11804           {
11805             unsigned int bytes_read;
11806             int line, file;
11807
11808             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
11809             mac_ptr += bytes_read;
11810             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
11811             mac_ptr += bytes_read;
11812
11813             if ((line == 0 && !at_commandline) || (line != 0 && at_commandline))
11814               complaint (&symfile_complaints,
11815                          _("debug info gives source %d included "
11816                            "from %s at %s line %d"),
11817                          file, at_commandline ? _("command-line") : _("file"),
11818                          line == 0 ? _("zero") : _("non-zero"), line);
11819
11820             if (at_commandline)
11821               {
11822                 /* This DW_MACINFO_start_file was executed in the pass one.  */
11823                 at_commandline = 0;
11824               }
11825             else
11826               current_file = macro_start_file (file, line,
11827                                                current_file, comp_dir,
11828                                                lh, cu->objfile);
11829           }
11830           break;
11831
11832         case DW_MACINFO_end_file:
11833           if (! current_file)
11834             complaint (&symfile_complaints,
11835                        _("macro debug info has an unmatched `close_file' directive"));
11836           else
11837             {
11838               current_file = current_file->included_by;
11839               if (! current_file)
11840                 {
11841                   enum dwarf_macinfo_record_type next_type;
11842
11843                   /* GCC circa March 2002 doesn't produce the zero
11844                      type byte marking the end of the compilation
11845                      unit.  Complain if it's not there, but exit no
11846                      matter what.  */
11847
11848                   /* Do we at least have room for a macinfo type byte?  */
11849                   if (mac_ptr >= mac_end)
11850                     {
11851                       dwarf2_macros_too_long_complaint ();
11852                       return;
11853                     }
11854
11855                   /* We don't increment mac_ptr here, so this is just
11856                      a look-ahead.  */
11857                   next_type = read_1_byte (abfd, mac_ptr);
11858                   if (next_type != 0)
11859                     complaint (&symfile_complaints,
11860                                _("no terminating 0-type entry for macros in `.debug_macinfo' section"));
11861
11862                   return;
11863                 }
11864             }
11865           break;
11866
11867         case DW_MACINFO_vendor_ext:
11868           {
11869             unsigned int bytes_read;
11870             int constant;
11871             char *string;
11872
11873             constant = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
11874             mac_ptr += bytes_read;
11875             string = read_string (abfd, mac_ptr, &bytes_read);
11876             mac_ptr += bytes_read;
11877
11878             /* We don't recognize any vendor extensions.  */
11879           }
11880           break;
11881         }
11882     } while (macinfo_type != 0);
11883 }
11884
11885 /* Check if the attribute's form is a DW_FORM_block*
11886    if so return true else false. */
11887 static int
11888 attr_form_is_block (struct attribute *attr)
11889 {
11890   return (attr == NULL ? 0 :
11891       attr->form == DW_FORM_block1
11892       || attr->form == DW_FORM_block2
11893       || attr->form == DW_FORM_block4
11894       || attr->form == DW_FORM_block
11895       || attr->form == DW_FORM_exprloc);
11896 }
11897
11898 /* Return non-zero if ATTR's value is a section offset --- classes
11899    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
11900    You may use DW_UNSND (attr) to retrieve such offsets.
11901
11902    Section 7.5.4, "Attribute Encodings", explains that no attribute
11903    may have a value that belongs to more than one of these classes; it
11904    would be ambiguous if we did, because we use the same forms for all
11905    of them.  */
11906 static int
11907 attr_form_is_section_offset (struct attribute *attr)
11908 {
11909   return (attr->form == DW_FORM_data4
11910           || attr->form == DW_FORM_data8
11911           || attr->form == DW_FORM_sec_offset);
11912 }
11913
11914
11915 /* Return non-zero if ATTR's value falls in the 'constant' class, or
11916    zero otherwise.  When this function returns true, you can apply
11917    dwarf2_get_attr_constant_value to it.
11918
11919    However, note that for some attributes you must check
11920    attr_form_is_section_offset before using this test.  DW_FORM_data4
11921    and DW_FORM_data8 are members of both the constant class, and of
11922    the classes that contain offsets into other debug sections
11923    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
11924    that, if an attribute's can be either a constant or one of the
11925    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
11926    taken as section offsets, not constants.  */
11927 static int
11928 attr_form_is_constant (struct attribute *attr)
11929 {
11930   switch (attr->form)
11931     {
11932     case DW_FORM_sdata:
11933     case DW_FORM_udata:
11934     case DW_FORM_data1:
11935     case DW_FORM_data2:
11936     case DW_FORM_data4:
11937     case DW_FORM_data8:
11938       return 1;
11939     default:
11940       return 0;
11941     }
11942 }
11943
11944 static void
11945 dwarf2_symbol_mark_computed (struct attribute *attr, struct symbol *sym,
11946                              struct dwarf2_cu *cu)
11947 {
11948   if (attr_form_is_section_offset (attr)
11949       /* ".debug_loc" may not exist at all, or the offset may be outside
11950          the section.  If so, fall through to the complaint in the
11951          other branch.  */
11952       && DW_UNSND (attr) < dwarf2_per_objfile->loc.size)
11953     {
11954       struct dwarf2_loclist_baton *baton;
11955
11956       baton = obstack_alloc (&cu->objfile->objfile_obstack,
11957                              sizeof (struct dwarf2_loclist_baton));
11958       baton->per_cu = cu->per_cu;
11959       gdb_assert (baton->per_cu);
11960
11961       dwarf2_read_section (dwarf2_per_objfile->objfile,
11962                            &dwarf2_per_objfile->loc);
11963
11964       /* We don't know how long the location list is, but make sure we
11965          don't run off the edge of the section.  */
11966       baton->size = dwarf2_per_objfile->loc.size - DW_UNSND (attr);
11967       baton->data = dwarf2_per_objfile->loc.buffer + DW_UNSND (attr);
11968       baton->base_address = cu->base_address;
11969       if (cu->base_known == 0)
11970         complaint (&symfile_complaints,
11971                    _("Location list used without specifying the CU base address."));
11972
11973       SYMBOL_COMPUTED_OPS (sym) = &dwarf2_loclist_funcs;
11974       SYMBOL_LOCATION_BATON (sym) = baton;
11975     }
11976   else
11977     {
11978       struct dwarf2_locexpr_baton *baton;
11979
11980       baton = obstack_alloc (&cu->objfile->objfile_obstack,
11981                              sizeof (struct dwarf2_locexpr_baton));
11982       baton->per_cu = cu->per_cu;
11983       gdb_assert (baton->per_cu);
11984
11985       if (attr_form_is_block (attr))
11986         {
11987           /* Note that we're just copying the block's data pointer
11988              here, not the actual data.  We're still pointing into the
11989              info_buffer for SYM's objfile; right now we never release
11990              that buffer, but when we do clean up properly this may
11991              need to change.  */
11992           baton->size = DW_BLOCK (attr)->size;
11993           baton->data = DW_BLOCK (attr)->data;
11994         }
11995       else
11996         {
11997           dwarf2_invalid_attrib_class_complaint ("location description",
11998                                                  SYMBOL_NATURAL_NAME (sym));
11999           baton->size = 0;
12000           baton->data = NULL;
12001         }
12002       
12003       SYMBOL_COMPUTED_OPS (sym) = &dwarf2_locexpr_funcs;
12004       SYMBOL_LOCATION_BATON (sym) = baton;
12005     }
12006 }
12007
12008 /* Return the OBJFILE associated with the compilation unit CU.  */
12009
12010 struct objfile *
12011 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
12012 {
12013   struct objfile *objfile = per_cu->psymtab->objfile;
12014
12015   /* Return the master objfile, so that we can report and look up the
12016      correct file containing this variable.  */
12017   if (objfile->separate_debug_objfile_backlink)
12018     objfile = objfile->separate_debug_objfile_backlink;
12019
12020   return objfile;
12021 }
12022
12023 /* Return the address size given in the compilation unit header for CU.  */
12024
12025 CORE_ADDR
12026 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
12027 {
12028   if (per_cu->cu)
12029     return per_cu->cu->header.addr_size;
12030   else
12031     {
12032       /* If the CU is not currently read in, we re-read its header.  */
12033       struct objfile *objfile = per_cu->psymtab->objfile;
12034       struct dwarf2_per_objfile *per_objfile
12035         = objfile_data (objfile, dwarf2_objfile_data_key);
12036       gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
12037       struct comp_unit_head cu_header;
12038
12039       memset (&cu_header, 0, sizeof cu_header);
12040       read_comp_unit_head (&cu_header, info_ptr, objfile->obfd);
12041       return cu_header.addr_size;
12042     }
12043 }
12044
12045 /* Return the offset size given in the compilation unit header for CU.  */
12046
12047 int
12048 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
12049 {
12050   if (per_cu->cu)
12051     return per_cu->cu->header.offset_size;
12052   else
12053     {
12054       /* If the CU is not currently read in, we re-read its header.  */
12055       struct objfile *objfile = per_cu->psymtab->objfile;
12056       struct dwarf2_per_objfile *per_objfile
12057         = objfile_data (objfile, dwarf2_objfile_data_key);
12058       gdb_byte *info_ptr = per_objfile->info.buffer + per_cu->offset;
12059       struct comp_unit_head cu_header;
12060
12061       memset (&cu_header, 0, sizeof cu_header);
12062       read_comp_unit_head (&cu_header, info_ptr, objfile->obfd);
12063       return cu_header.offset_size;
12064     }
12065 }
12066
12067 /* Locate the .debug_info compilation unit from CU's objfile which contains
12068    the DIE at OFFSET.  Raises an error on failure.  */
12069
12070 static struct dwarf2_per_cu_data *
12071 dwarf2_find_containing_comp_unit (unsigned int offset,
12072                                   struct objfile *objfile)
12073 {
12074   struct dwarf2_per_cu_data *this_cu;
12075   int low, high;
12076
12077   low = 0;
12078   high = dwarf2_per_objfile->n_comp_units - 1;
12079   while (high > low)
12080     {
12081       int mid = low + (high - low) / 2;
12082
12083       if (dwarf2_per_objfile->all_comp_units[mid]->offset >= offset)
12084         high = mid;
12085       else
12086         low = mid + 1;
12087     }
12088   gdb_assert (low == high);
12089   if (dwarf2_per_objfile->all_comp_units[low]->offset > offset)
12090     {
12091       if (low == 0)
12092         error (_("Dwarf Error: could not find partial DIE containing "
12093                "offset 0x%lx [in module %s]"),
12094                (long) offset, bfd_get_filename (objfile->obfd));
12095
12096       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->offset <= offset);
12097       return dwarf2_per_objfile->all_comp_units[low-1];
12098     }
12099   else
12100     {
12101       this_cu = dwarf2_per_objfile->all_comp_units[low];
12102       if (low == dwarf2_per_objfile->n_comp_units - 1
12103           && offset >= this_cu->offset + this_cu->length)
12104         error (_("invalid dwarf2 offset %u"), offset);
12105       gdb_assert (offset < this_cu->offset + this_cu->length);
12106       return this_cu;
12107     }
12108 }
12109
12110 /* Locate the compilation unit from OBJFILE which is located at exactly
12111    OFFSET.  Raises an error on failure.  */
12112
12113 static struct dwarf2_per_cu_data *
12114 dwarf2_find_comp_unit (unsigned int offset, struct objfile *objfile)
12115 {
12116   struct dwarf2_per_cu_data *this_cu;
12117
12118   this_cu = dwarf2_find_containing_comp_unit (offset, objfile);
12119   if (this_cu->offset != offset)
12120     error (_("no compilation unit with offset %u."), offset);
12121   return this_cu;
12122 }
12123
12124 /* Malloc space for a dwarf2_cu for OBJFILE and initialize it.  */
12125
12126 static struct dwarf2_cu *
12127 alloc_one_comp_unit (struct objfile *objfile)
12128 {
12129   struct dwarf2_cu *cu = xcalloc (1, sizeof (struct dwarf2_cu));
12130   cu->objfile = objfile;
12131   obstack_init (&cu->comp_unit_obstack);
12132   return cu;
12133 }
12134
12135 /* Release one cached compilation unit, CU.  We unlink it from the tree
12136    of compilation units, but we don't remove it from the read_in_chain;
12137    the caller is responsible for that.
12138    NOTE: DATA is a void * because this function is also used as a
12139    cleanup routine.  */
12140
12141 static void
12142 free_one_comp_unit (void *data)
12143 {
12144   struct dwarf2_cu *cu = data;
12145
12146   if (cu->per_cu != NULL)
12147     cu->per_cu->cu = NULL;
12148   cu->per_cu = NULL;
12149
12150   obstack_free (&cu->comp_unit_obstack, NULL);
12151
12152   xfree (cu);
12153 }
12154
12155 /* This cleanup function is passed the address of a dwarf2_cu on the stack
12156    when we're finished with it.  We can't free the pointer itself, but be
12157    sure to unlink it from the cache.  Also release any associated storage
12158    and perform cache maintenance.
12159
12160    Only used during partial symbol parsing.  */
12161
12162 static void
12163 free_stack_comp_unit (void *data)
12164 {
12165   struct dwarf2_cu *cu = data;
12166
12167   obstack_free (&cu->comp_unit_obstack, NULL);
12168   cu->partial_dies = NULL;
12169
12170   if (cu->per_cu != NULL)
12171     {
12172       /* This compilation unit is on the stack in our caller, so we
12173          should not xfree it.  Just unlink it.  */
12174       cu->per_cu->cu = NULL;
12175       cu->per_cu = NULL;
12176
12177       /* If we had a per-cu pointer, then we may have other compilation
12178          units loaded, so age them now.  */
12179       age_cached_comp_units ();
12180     }
12181 }
12182
12183 /* Free all cached compilation units.  */
12184
12185 static void
12186 free_cached_comp_units (void *data)
12187 {
12188   struct dwarf2_per_cu_data *per_cu, **last_chain;
12189
12190   per_cu = dwarf2_per_objfile->read_in_chain;
12191   last_chain = &dwarf2_per_objfile->read_in_chain;
12192   while (per_cu != NULL)
12193     {
12194       struct dwarf2_per_cu_data *next_cu;
12195
12196       next_cu = per_cu->cu->read_in_chain;
12197
12198       free_one_comp_unit (per_cu->cu);
12199       *last_chain = next_cu;
12200
12201       per_cu = next_cu;
12202     }
12203 }
12204
12205 /* Increase the age counter on each cached compilation unit, and free
12206    any that are too old.  */
12207
12208 static void
12209 age_cached_comp_units (void)
12210 {
12211   struct dwarf2_per_cu_data *per_cu, **last_chain;
12212
12213   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
12214   per_cu = dwarf2_per_objfile->read_in_chain;
12215   while (per_cu != NULL)
12216     {
12217       per_cu->cu->last_used ++;
12218       if (per_cu->cu->last_used <= dwarf2_max_cache_age)
12219         dwarf2_mark (per_cu->cu);
12220       per_cu = per_cu->cu->read_in_chain;
12221     }
12222
12223   per_cu = dwarf2_per_objfile->read_in_chain;
12224   last_chain = &dwarf2_per_objfile->read_in_chain;
12225   while (per_cu != NULL)
12226     {
12227       struct dwarf2_per_cu_data *next_cu;
12228
12229       next_cu = per_cu->cu->read_in_chain;
12230
12231       if (!per_cu->cu->mark)
12232         {
12233           free_one_comp_unit (per_cu->cu);
12234           *last_chain = next_cu;
12235         }
12236       else
12237         last_chain = &per_cu->cu->read_in_chain;
12238
12239       per_cu = next_cu;
12240     }
12241 }
12242
12243 /* Remove a single compilation unit from the cache.  */
12244
12245 static void
12246 free_one_cached_comp_unit (void *target_cu)
12247 {
12248   struct dwarf2_per_cu_data *per_cu, **last_chain;
12249
12250   per_cu = dwarf2_per_objfile->read_in_chain;
12251   last_chain = &dwarf2_per_objfile->read_in_chain;
12252   while (per_cu != NULL)
12253     {
12254       struct dwarf2_per_cu_data *next_cu;
12255
12256       next_cu = per_cu->cu->read_in_chain;
12257
12258       if (per_cu->cu == target_cu)
12259         {
12260           free_one_comp_unit (per_cu->cu);
12261           *last_chain = next_cu;
12262           break;
12263         }
12264       else
12265         last_chain = &per_cu->cu->read_in_chain;
12266
12267       per_cu = next_cu;
12268     }
12269 }
12270
12271 /* Release all extra memory associated with OBJFILE.  */
12272
12273 void
12274 dwarf2_free_objfile (struct objfile *objfile)
12275 {
12276   dwarf2_per_objfile = objfile_data (objfile, dwarf2_objfile_data_key);
12277
12278   if (dwarf2_per_objfile == NULL)
12279     return;
12280
12281   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
12282   free_cached_comp_units (NULL);
12283
12284   /* Everything else should be on the objfile obstack.  */
12285 }
12286
12287 /* A pair of DIE offset and GDB type pointer.  We store these
12288    in a hash table separate from the DIEs, and preserve them
12289    when the DIEs are flushed out of cache.  */
12290
12291 struct dwarf2_offset_and_type
12292 {
12293   unsigned int offset;
12294   struct type *type;
12295 };
12296
12297 /* Hash function for a dwarf2_offset_and_type.  */
12298
12299 static hashval_t
12300 offset_and_type_hash (const void *item)
12301 {
12302   const struct dwarf2_offset_and_type *ofs = item;
12303
12304   return ofs->offset;
12305 }
12306
12307 /* Equality function for a dwarf2_offset_and_type.  */
12308
12309 static int
12310 offset_and_type_eq (const void *item_lhs, const void *item_rhs)
12311 {
12312   const struct dwarf2_offset_and_type *ofs_lhs = item_lhs;
12313   const struct dwarf2_offset_and_type *ofs_rhs = item_rhs;
12314
12315   return ofs_lhs->offset == ofs_rhs->offset;
12316 }
12317
12318 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
12319    table if necessary.  For convenience, return TYPE.
12320
12321    The DIEs reading must have careful ordering to:
12322     * Not cause infite loops trying to read in DIEs as a prerequisite for
12323       reading current DIE.
12324     * Not trying to dereference contents of still incompletely read in types
12325       while reading in other DIEs.
12326     * Enable referencing still incompletely read in types just by a pointer to
12327       the type without accessing its fields.
12328
12329    Therefore caller should follow these rules:
12330      * Try to fetch any prerequisite types we may need to build this DIE type
12331        before building the type and calling set_die_type.
12332      * After building typer call set_die_type for current DIE as soon as
12333        possible before fetching more types to complete the current type.
12334      * Make the type as complete as possible before fetching more types.  */
12335
12336 static struct type *
12337 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
12338 {
12339   struct dwarf2_offset_and_type **slot, ofs;
12340
12341   /* For Ada types, make sure that the gnat-specific data is always
12342      initialized (if not already set).  There are a few types where
12343      we should not be doing so, because the type-specific area is
12344      already used to hold some other piece of info (eg: TYPE_CODE_FLT
12345      where the type-specific area is used to store the floatformat).
12346      But this is not a problem, because the gnat-specific information
12347      is actually not needed for these types.  */
12348   if (need_gnat_info (cu)
12349       && TYPE_CODE (type) != TYPE_CODE_FUNC
12350       && TYPE_CODE (type) != TYPE_CODE_FLT
12351       && !HAVE_GNAT_AUX_INFO (type))
12352     INIT_GNAT_SPECIFIC (type);
12353
12354   if (cu->type_hash == NULL)
12355     {
12356       gdb_assert (cu->per_cu != NULL);
12357       cu->per_cu->type_hash
12358         = htab_create_alloc_ex (cu->header.length / 24,
12359                                 offset_and_type_hash,
12360                                 offset_and_type_eq,
12361                                 NULL,
12362                                 &cu->objfile->objfile_obstack,
12363                                 hashtab_obstack_allocate,
12364                                 dummy_obstack_deallocate);
12365       cu->type_hash = cu->per_cu->type_hash;
12366     }
12367
12368   ofs.offset = die->offset;
12369   ofs.type = type;
12370   slot = (struct dwarf2_offset_and_type **)
12371     htab_find_slot_with_hash (cu->type_hash, &ofs, ofs.offset, INSERT);
12372   if (*slot)
12373     complaint (&symfile_complaints,
12374                _("A problem internal to GDB: DIE 0x%x has type already set"),
12375                die->offset);
12376   *slot = obstack_alloc (&cu->objfile->objfile_obstack, sizeof (**slot));
12377   **slot = ofs;
12378   return type;
12379 }
12380
12381 /* Find the type for DIE in CU's type_hash, or return NULL if DIE does
12382    not have a saved type.  */
12383
12384 static struct type *
12385 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
12386 {
12387   struct dwarf2_offset_and_type *slot, ofs;
12388   htab_t type_hash = cu->type_hash;
12389
12390   if (type_hash == NULL)
12391     return NULL;
12392
12393   ofs.offset = die->offset;
12394   slot = htab_find_with_hash (type_hash, &ofs, ofs.offset);
12395   if (slot)
12396     return slot->type;
12397   else
12398     return NULL;
12399 }
12400
12401 /* Add a dependence relationship from CU to REF_PER_CU.  */
12402
12403 static void
12404 dwarf2_add_dependence (struct dwarf2_cu *cu,
12405                        struct dwarf2_per_cu_data *ref_per_cu)
12406 {
12407   void **slot;
12408
12409   if (cu->dependencies == NULL)
12410     cu->dependencies
12411       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
12412                               NULL, &cu->comp_unit_obstack,
12413                               hashtab_obstack_allocate,
12414                               dummy_obstack_deallocate);
12415
12416   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
12417   if (*slot == NULL)
12418     *slot = ref_per_cu;
12419 }
12420
12421 /* Subroutine of dwarf2_mark to pass to htab_traverse.
12422    Set the mark field in every compilation unit in the
12423    cache that we must keep because we are keeping CU.  */
12424
12425 static int
12426 dwarf2_mark_helper (void **slot, void *data)
12427 {
12428   struct dwarf2_per_cu_data *per_cu;
12429
12430   per_cu = (struct dwarf2_per_cu_data *) *slot;
12431   if (per_cu->cu->mark)
12432     return 1;
12433   per_cu->cu->mark = 1;
12434
12435   if (per_cu->cu->dependencies != NULL)
12436     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
12437
12438   return 1;
12439 }
12440
12441 /* Set the mark field in CU and in every other compilation unit in the
12442    cache that we must keep because we are keeping CU.  */
12443
12444 static void
12445 dwarf2_mark (struct dwarf2_cu *cu)
12446 {
12447   if (cu->mark)
12448     return;
12449   cu->mark = 1;
12450   if (cu->dependencies != NULL)
12451     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
12452 }
12453
12454 static void
12455 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
12456 {
12457   while (per_cu)
12458     {
12459       per_cu->cu->mark = 0;
12460       per_cu = per_cu->cu->read_in_chain;
12461     }
12462 }
12463
12464 /* Trivial hash function for partial_die_info: the hash value of a DIE
12465    is its offset in .debug_info for this objfile.  */
12466
12467 static hashval_t
12468 partial_die_hash (const void *item)
12469 {
12470   const struct partial_die_info *part_die = item;
12471
12472   return part_die->offset;
12473 }
12474
12475 /* Trivial comparison function for partial_die_info structures: two DIEs
12476    are equal if they have the same offset.  */
12477
12478 static int
12479 partial_die_eq (const void *item_lhs, const void *item_rhs)
12480 {
12481   const struct partial_die_info *part_die_lhs = item_lhs;
12482   const struct partial_die_info *part_die_rhs = item_rhs;
12483
12484   return part_die_lhs->offset == part_die_rhs->offset;
12485 }
12486
12487 static struct cmd_list_element *set_dwarf2_cmdlist;
12488 static struct cmd_list_element *show_dwarf2_cmdlist;
12489
12490 static void
12491 set_dwarf2_cmd (char *args, int from_tty)
12492 {
12493   help_list (set_dwarf2_cmdlist, "maintenance set dwarf2 ", -1, gdb_stdout);
12494 }
12495
12496 static void
12497 show_dwarf2_cmd (char *args, int from_tty)
12498
12499   cmd_show_list (show_dwarf2_cmdlist, from_tty, "");
12500 }
12501
12502 /* If section described by INFO was mmapped, munmap it now.  */
12503
12504 static void
12505 munmap_section_buffer (struct dwarf2_section_info *info)
12506 {
12507   if (info->was_mmapped)
12508     {
12509 #ifdef HAVE_MMAP
12510       intptr_t begin = (intptr_t) info->buffer;
12511       intptr_t map_begin = begin & ~(pagesize - 1);
12512       size_t map_length = info->size + begin - map_begin;
12513
12514       gdb_assert (munmap ((void *) map_begin, map_length) == 0);
12515 #else
12516       /* Without HAVE_MMAP, we should never be here to begin with.  */
12517       gdb_assert (0);
12518 #endif
12519     }
12520 }
12521
12522 /* munmap debug sections for OBJFILE, if necessary.  */
12523
12524 static void
12525 dwarf2_per_objfile_free (struct objfile *objfile, void *d)
12526 {
12527   struct dwarf2_per_objfile *data = d;
12528
12529   munmap_section_buffer (&data->info);
12530   munmap_section_buffer (&data->abbrev);
12531   munmap_section_buffer (&data->line);
12532   munmap_section_buffer (&data->str);
12533   munmap_section_buffer (&data->macinfo);
12534   munmap_section_buffer (&data->ranges);
12535   munmap_section_buffer (&data->loc);
12536   munmap_section_buffer (&data->frame);
12537   munmap_section_buffer (&data->eh_frame);
12538 }
12539
12540 int dwarf2_always_disassemble;
12541
12542 static void
12543 show_dwarf2_always_disassemble (struct ui_file *file, int from_tty,
12544                                 struct cmd_list_element *c, const char *value)
12545 {
12546   fprintf_filtered (file, _("\
12547 Whether to always disassemble DWARF expressions is %s.\n"),
12548                     value);
12549 }
12550
12551 void _initialize_dwarf2_read (void);
12552
12553 void
12554 _initialize_dwarf2_read (void)
12555 {
12556   dwarf2_objfile_data_key
12557     = register_objfile_data_with_cleanup (NULL, dwarf2_per_objfile_free);
12558
12559   add_prefix_cmd ("dwarf2", class_maintenance, set_dwarf2_cmd, _("\
12560 Set DWARF 2 specific variables.\n\
12561 Configure DWARF 2 variables such as the cache size"),
12562                   &set_dwarf2_cmdlist, "maintenance set dwarf2 ",
12563                   0/*allow-unknown*/, &maintenance_set_cmdlist);
12564
12565   add_prefix_cmd ("dwarf2", class_maintenance, show_dwarf2_cmd, _("\
12566 Show DWARF 2 specific variables\n\
12567 Show DWARF 2 variables such as the cache size"),
12568                   &show_dwarf2_cmdlist, "maintenance show dwarf2 ",
12569                   0/*allow-unknown*/, &maintenance_show_cmdlist);
12570
12571   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
12572                             &dwarf2_max_cache_age, _("\
12573 Set the upper bound on the age of cached dwarf2 compilation units."), _("\
12574 Show the upper bound on the age of cached dwarf2 compilation units."), _("\
12575 A higher limit means that cached compilation units will be stored\n\
12576 in memory longer, and more total memory will be used.  Zero disables\n\
12577 caching, which can slow down startup."),
12578                             NULL,
12579                             show_dwarf2_max_cache_age,
12580                             &set_dwarf2_cmdlist,
12581                             &show_dwarf2_cmdlist);
12582
12583   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
12584                            &dwarf2_always_disassemble, _("\
12585 Set whether `info address' always disassembles DWARF expressions."), _("\
12586 Show whether `info address' always disassembles DWARF expressions."), _("\
12587 When enabled, DWARF expressions are always printed in an assembly-like\n\
12588 syntax.  When disabled, expressions will be printed in a more\n\
12589 conversational style, when possible."),
12590                            NULL,
12591                            show_dwarf2_always_disassemble,
12592                            &set_dwarf2_cmdlist,
12593                            &show_dwarf2_cmdlist);
12594
12595   add_setshow_zinteger_cmd ("dwarf2-die", no_class, &dwarf2_die_debug, _("\
12596 Set debugging of the dwarf2 DIE reader."), _("\
12597 Show debugging of the dwarf2 DIE reader."), _("\
12598 When enabled (non-zero), DIEs are dumped after they are read in.\n\
12599 The value is the maximum depth to print."),
12600                             NULL,
12601                             NULL,
12602                             &setdebuglist, &showdebuglist);
12603 }