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