1/* DWARF debugging format support for GDB.
2
3   Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
4   2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
5
6   Written by Fred Fish at Cygnus Support.  Portions based on dbxread.c,
7   mipsread.c, coffread.c, and dwarfread.c from a Data General SVR4 gdb port.
8
9   This file is part of GDB.
10
11   This program is free software; you can redistribute it and/or modify
12   it under the terms of the GNU General Public License as published by
13   the Free Software Foundation; either version 2 of the License, or
14   (at your option) any later version.
15
16   This program is distributed in the hope that it will be useful,
17   but WITHOUT ANY WARRANTY; without even the implied warranty of
18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   GNU General Public License for more details.
20
21   You should have received a copy of the GNU General Public License
22   along with this program; if not, write to the Free Software
23   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
24
25/*
26   If you are looking for DWARF-2 support, you are in the wrong file.
27   Go look in dwarf2read.c.  This file is for the original DWARF,
28   also known as DWARF-1.
29
30   DWARF-1 is slowly headed for obsoletion.
31
32   In gcc 3.4.0, support for dwarf-1 has been removed.
33
34   In gcc 3.3.2, these targets prefer dwarf-1:
35
36     i[34567]86-sequent-ptx4*
37     i[34567]86-sequent-sysv4*
38     mips-sni-sysv4
39     sparc-hal-solaris2*
40
41   In gcc 3.2.2, these targets prefer dwarf-1:
42
43     i[34567]86-dg-dgux*
44     i[34567]86-sequent-ptx4*
45     i[34567]86-sequent-sysv4*
46     m88k-dg-dgux*
47     mips-sni-sysv4
48     sparc-hal-solaris2*
49
50   In gcc 2.95.3, these targets prefer dwarf-1:
51
52     i[34567]86-dg-dgux*
53     i[34567]86-ncr-sysv4*
54     i[34567]86-sequent-ptx4*
55     i[34567]86-sequent-sysv4*
56     i[34567]86-*-osf1*
57     i[34567]86-*-sco3.2v5*
58     i[34567]86-*-sysv4*
59     i860-alliant-*
60     i860-*-sysv4*
61     m68k-atari-sysv4*
62     m68k-cbm-sysv4*
63     m68k-*-sysv4*
64     m88k-dg-dgux*
65     m88k-*-sysv4*
66     mips-sni-sysv4
67     mips-*-gnu*
68     sh-*-elf*
69     sh-*-rtemself*
70     sparc-hal-solaris2*
71     sparc-*-sysv4*
72
73   Some non-gcc compilers produce dwarf-1:
74
75     PR gdb/1179 was from a user with Diab C++ 4.3.
76     On 2003-07-25 the gdb list received a report from a user
77      with Diab Compiler 4.4b.
78     Other users have also reported using Diab compilers with dwarf-1.
79
80     Diab Compiler Suite 5.0.1 supports dwarf-2/dwarf-3 for C and C++.
81     (Diab(tm) Compiler Suite 5.0.1 Release Notes, DOC-14691-ZD-00,
82     Wind River Systems, 2002-07-31).
83
84     On 2003-06-09 the gdb list received a report from a user
85       with Absoft ProFortran f77 which is dwarf-1.
86
87     Absoft ProFortran Linux[sic] Fortran User Guide (no version,
88     but copyright dates are 1991-2001) says that Absoft ProFortran
89     supports -gdwarf1 and -gdwarf2.
90
91   -- chastain 2004-04-24
92*/
93
94/*
95
96   FIXME: Do we need to generate dependencies in partial symtabs?
97   (Perhaps we don't need to).
98
99   FIXME: Resolve minor differences between what information we put in the
100   partial symbol table and what dbxread puts in.  For example, we don't yet
101   put enum constants there.  And dbxread seems to invent a lot of typedefs
102   we never see.  Use the new printpsym command to see the partial symbol table
103   contents.
104
105   FIXME: Figure out a better way to tell gdb about the name of the function
106   contain the user's entry point (I.E. main())
107
108   FIXME: See other FIXME's and "ifdef 0" scattered throughout the code for
109   other things to work on, if you get bored. :-)
110
111 */
112
113#include "defs.h"
114#include "symtab.h"
115#include "gdbtypes.h"
116#include "objfiles.h"
117#include "elf/dwarf.h"
118#include "buildsym.h"
119#include "demangle.h"
120#include "expression.h"		/* Needed for enum exp_opcode in language.h, sigh... */
121#include "language.h"
122#include "complaints.h"
123
124#include <fcntl.h>
125#include "gdb_string.h"
126
127/* Some macros to provide DIE info for complaints. */
128
129#define DIE_ID (curdie!=NULL ? curdie->die_ref : 0)
130#define DIE_NAME (curdie!=NULL && curdie->at_name!=NULL) ? curdie->at_name : ""
131
132/* Complaints that can be issued during DWARF debug info reading. */
133
134static void
135bad_die_ref_complaint (int arg1, const char *arg2, int arg3)
136{
137  complaint (&symfile_complaints,
138	     "DIE @ 0x%x \"%s\", reference to DIE (0x%x) outside compilation unit",
139	     arg1, arg2, arg3);
140}
141
142static void
143unknown_attribute_form_complaint (int arg1, const char *arg2, int arg3)
144{
145  complaint (&symfile_complaints,
146	     "DIE @ 0x%x \"%s\", unknown attribute form (0x%x)", arg1, arg2,
147	     arg3);
148}
149
150static void
151dup_user_type_definition_complaint (int arg1, const char *arg2)
152{
153  complaint (&symfile_complaints,
154	     "DIE @ 0x%x \"%s\", internal error: duplicate user type definition",
155	     arg1, arg2);
156}
157
158static void
159bad_array_element_type_complaint (int arg1, const char *arg2, int arg3)
160{
161  complaint (&symfile_complaints,
162	     "DIE @ 0x%x \"%s\", bad array element type attribute 0x%x", arg1,
163	     arg2, arg3);
164}
165
166typedef unsigned int DIE_REF;	/* Reference to a DIE */
167
168#ifndef GCC_PRODUCER
169#define GCC_PRODUCER "GNU C "
170#endif
171
172#ifndef GPLUS_PRODUCER
173#define GPLUS_PRODUCER "GNU C++ "
174#endif
175
176#ifndef LCC_PRODUCER
177#define LCC_PRODUCER "NCR C/C++"
178#endif
179
180/* Flags to target_to_host() that tell whether or not the data object is
181   expected to be signed.  Used, for example, when fetching a signed
182   integer in the target environment which is used as a signed integer
183   in the host environment, and the two environments have different sized
184   ints.  In this case, *somebody* has to sign extend the smaller sized
185   int. */
186
187#define GET_UNSIGNED	0	/* No sign extension required */
188#define GET_SIGNED	1	/* Sign extension required */
189
190/* Defines for things which are specified in the document "DWARF Debugging
191   Information Format" published by UNIX International, Programming Languages
192   SIG.  These defines are based on revision 1.0.0, Jan 20, 1992. */
193
194#define SIZEOF_DIE_LENGTH	4
195#define SIZEOF_DIE_TAG		2
196#define SIZEOF_ATTRIBUTE	2
197#define SIZEOF_FORMAT_SPECIFIER	1
198#define SIZEOF_FMT_FT		2
199#define SIZEOF_LINETBL_LENGTH	4
200#define SIZEOF_LINETBL_LINENO	4
201#define SIZEOF_LINETBL_STMT	2
202#define SIZEOF_LINETBL_DELTA	4
203#define SIZEOF_LOC_ATOM_CODE	1
204
205#define FORM_FROM_ATTR(attr)	((attr) & 0xF)	/* Implicitly specified */
206
207/* Macros that return the sizes of various types of data in the target
208   environment.
209
210   FIXME:  Currently these are just compile time constants (as they are in
211   other parts of gdb as well).  They need to be able to get the right size
212   either from the bfd or possibly from the DWARF info.  It would be nice if
213   the DWARF producer inserted DIES that describe the fundamental types in
214   the target environment into the DWARF info, similar to the way dbx stabs
215   producers produce information about their fundamental types. */
216
217#define TARGET_FT_POINTER_SIZE(objfile)	(TARGET_PTR_BIT / TARGET_CHAR_BIT)
218#define TARGET_FT_LONG_SIZE(objfile)	(TARGET_LONG_BIT / TARGET_CHAR_BIT)
219
220/* The Amiga SVR4 header file <dwarf.h> defines AT_element_list as a
221   FORM_BLOCK2, and this is the value emitted by the AT&T compiler.
222   However, the Issue 2 DWARF specification from AT&T defines it as
223   a FORM_BLOCK4, as does the latest specification from UI/PLSIG.
224   For backwards compatibility with the AT&T compiler produced executables
225   we define AT_short_element_list for this variant. */
226
227#define	AT_short_element_list	 (0x00f0|FORM_BLOCK2)
228
229/* The DWARF debugging information consists of two major pieces,
230   one is a block of DWARF Information Entries (DIE's) and the other
231   is a line number table.  The "struct dieinfo" structure contains
232   the information for a single DIE, the one currently being processed.
233
234   In order to make it easier to randomly access the attribute fields
235   of the current DIE, which are specifically unordered within the DIE,
236   each DIE is scanned and an instance of the "struct dieinfo"
237   structure is initialized.
238
239   Initialization is done in two levels.  The first, done by basicdieinfo(),
240   just initializes those fields that are vital to deciding whether or not
241   to use this DIE, how to skip past it, etc.  The second, done by the
242   function completedieinfo(), fills in the rest of the information.
243
244   Attributes which have block forms are not interpreted at the time
245   the DIE is scanned, instead we just save pointers to the start
246   of their value fields.
247
248   Some fields have a flag <name>_p that is set when the value of the
249   field is valid (I.E. we found a matching attribute in the DIE).  Since
250   we may want to test for the presence of some attributes in the DIE,
251   such as AT_low_pc, without restricting the values of the field,
252   we need someway to note that we found such an attribute.
253
254 */
255
256typedef char BLOCK;
257
258struct dieinfo
259  {
260    char *die;			/* Pointer to the raw DIE data */
261    unsigned long die_length;	/* Length of the raw DIE data */
262    DIE_REF die_ref;		/* Offset of this DIE */
263    unsigned short die_tag;	/* Tag for this DIE */
264    unsigned long at_padding;
265    unsigned long at_sibling;
266    BLOCK *at_location;
267    char *at_name;
268    unsigned short at_fund_type;
269    BLOCK *at_mod_fund_type;
270    unsigned long at_user_def_type;
271    BLOCK *at_mod_u_d_type;
272    unsigned short at_ordering;
273    BLOCK *at_subscr_data;
274    unsigned long at_byte_size;
275    unsigned short at_bit_offset;
276    unsigned long at_bit_size;
277    BLOCK *at_element_list;
278    unsigned long at_stmt_list;
279    CORE_ADDR at_low_pc;
280    CORE_ADDR at_high_pc;
281    unsigned long at_language;
282    unsigned long at_member;
283    unsigned long at_discr;
284    BLOCK *at_discr_value;
285    BLOCK *at_string_length;
286    char *at_comp_dir;
287    char *at_producer;
288    unsigned long at_start_scope;
289    unsigned long at_stride_size;
290    unsigned long at_src_info;
291    char *at_prototyped;
292    unsigned int has_at_low_pc:1;
293    unsigned int has_at_stmt_list:1;
294    unsigned int has_at_byte_size:1;
295    unsigned int short_element_list:1;
296
297    /* Kludge to identify register variables */
298
299    unsigned int isreg;
300
301    /* Kludge to identify optimized out variables */
302
303    unsigned int optimized_out;
304
305    /* Kludge to identify basereg references.
306       Nonzero if we have an offset relative to a basereg.  */
307
308    unsigned int offreg;
309
310    /* Kludge to identify which base register is it relative to.  */
311
312    unsigned int basereg;
313  };
314
315static int diecount;		/* Approximate count of dies for compilation unit */
316static struct dieinfo *curdie;	/* For warnings and such */
317
318static char *dbbase;		/* Base pointer to dwarf info */
319static int dbsize;		/* Size of dwarf info in bytes */
320static int dbroff;		/* Relative offset from start of .debug section */
321static char *lnbase;		/* Base pointer to line section */
322
323/* This value is added to each symbol value.  FIXME:  Generalize to
324   the section_offsets structure used by dbxread (once this is done,
325   pass the appropriate section number to end_symtab).  */
326static CORE_ADDR baseaddr;	/* Add to each symbol value */
327
328/* The section offsets used in the current psymtab or symtab.  FIXME,
329   only used to pass one value (baseaddr) at the moment.  */
330static struct section_offsets *base_section_offsets;
331
332/* We put a pointer to this structure in the read_symtab_private field
333   of the psymtab.  */
334
335struct dwfinfo
336  {
337    /* Always the absolute file offset to the start of the ".debug"
338       section for the file containing the DIE's being accessed.  */
339    file_ptr dbfoff;
340    /* Relative offset from the start of the ".debug" section to the
341       first DIE to be accessed.  When building the partial symbol
342       table, this value will be zero since we are accessing the
343       entire ".debug" section.  When expanding a partial symbol
344       table entry, this value will be the offset to the first
345       DIE for the compilation unit containing the symbol that
346       triggers the expansion.  */
347    int dbroff;
348    /* The size of the chunk of DIE's being examined, in bytes.  */
349    int dblength;
350    /* The absolute file offset to the line table fragment.  Ignored
351       when building partial symbol tables, but used when expanding
352       them, and contains the absolute file offset to the fragment
353       of the ".line" section containing the line numbers for the
354       current compilation unit.  */
355    file_ptr lnfoff;
356  };
357
358#define DBFOFF(p) (((struct dwfinfo *)((p)->read_symtab_private))->dbfoff)
359#define DBROFF(p) (((struct dwfinfo *)((p)->read_symtab_private))->dbroff)
360#define DBLENGTH(p) (((struct dwfinfo *)((p)->read_symtab_private))->dblength)
361#define LNFOFF(p) (((struct dwfinfo *)((p)->read_symtab_private))->lnfoff)
362
363/* The generic symbol table building routines have separate lists for
364   file scope symbols and all all other scopes (local scopes).  So
365   we need to select the right one to pass to add_symbol_to_list().
366   We do it by keeping a pointer to the correct list in list_in_scope.
367
368   FIXME:  The original dwarf code just treated the file scope as the first
369   local scope, and all other local scopes as nested local scopes, and worked
370   fine.  Check to see if we really need to distinguish these in buildsym.c */
371
372struct pending **list_in_scope = &file_symbols;
373
374/* DIES which have user defined types or modified user defined types refer to
375   other DIES for the type information.  Thus we need to associate the offset
376   of a DIE for a user defined type with a pointer to the type information.
377
378   Originally this was done using a simple but expensive algorithm, with an
379   array of unsorted structures, each containing an offset/type-pointer pair.
380   This array was scanned linearly each time a lookup was done.  The result
381   was that gdb was spending over half it's startup time munging through this
382   array of pointers looking for a structure that had the right offset member.
383
384   The second attempt used the same array of structures, but the array was
385   sorted using qsort each time a new offset/type was recorded, and a binary
386   search was used to find the type pointer for a given DIE offset.  This was
387   even slower, due to the overhead of sorting the array each time a new
388   offset/type pair was entered.
389
390   The third attempt uses a fixed size array of type pointers, indexed by a
391   value derived from the DIE offset.  Since the minimum DIE size is 4 bytes,
392   we can divide any DIE offset by 4 to obtain a unique index into this fixed
393   size array.  Since each element is a 4 byte pointer, it takes exactly as
394   much memory to hold this array as to hold the DWARF info for a given
395   compilation unit.  But it gets freed as soon as we are done with it.
396   This has worked well in practice, as a reasonable tradeoff between memory
397   consumption and speed, without having to resort to much more complicated
398   algorithms. */
399
400static struct type **utypes;	/* Pointer to array of user type pointers */
401static int numutypes;		/* Max number of user type pointers */
402
403/* Maintain an array of referenced fundamental types for the current
404   compilation unit being read.  For DWARF version 1, we have to construct
405   the fundamental types on the fly, since no information about the
406   fundamental types is supplied.  Each such fundamental type is created by
407   calling a language dependent routine to create the type, and then a
408   pointer to that type is then placed in the array at the index specified
409   by it's FT_<TYPENAME> value.  The array has a fixed size set by the
410   FT_NUM_MEMBERS compile time constant, which is the number of predefined
411   fundamental types gdb knows how to construct. */
412
413static struct type *ftypes[FT_NUM_MEMBERS];	/* Fundamental types */
414
415/* Record the language for the compilation unit which is currently being
416   processed.  We know it once we have seen the TAG_compile_unit DIE,
417   and we need it while processing the DIE's for that compilation unit.
418   It is eventually saved in the symtab structure, but we don't finalize
419   the symtab struct until we have processed all the DIE's for the
420   compilation unit.  We also need to get and save a pointer to the
421   language struct for this language, so we can call the language
422   dependent routines for doing things such as creating fundamental
423   types. */
424
425static enum language cu_language;
426static const struct language_defn *cu_language_defn;
427
428/* Forward declarations of static functions so we don't have to worry
429   about ordering within this file.  */
430
431static void free_utypes (void *);
432
433static int attribute_size (unsigned int);
434
435static CORE_ADDR target_to_host (char *, int, int, struct objfile *);
436
437static void add_enum_psymbol (struct dieinfo *, struct objfile *);
438
439static void handle_producer (char *);
440
441static void read_file_scope (struct dieinfo *, char *, char *,
442			     struct objfile *);
443
444static void read_func_scope (struct dieinfo *, char *, char *,
445			     struct objfile *);
446
447static void read_lexical_block_scope (struct dieinfo *, char *, char *,
448				      struct objfile *);
449
450static void scan_partial_symbols (char *, char *, struct objfile *);
451
452static void scan_compilation_units (char *, char *, file_ptr, file_ptr,
453				    struct objfile *);
454
455static void add_partial_symbol (struct dieinfo *, struct objfile *);
456
457static void basicdieinfo (struct dieinfo *, char *, struct objfile *);
458
459static void completedieinfo (struct dieinfo *, struct objfile *);
460
461static void dwarf_psymtab_to_symtab (struct partial_symtab *);
462
463static void psymtab_to_symtab_1 (struct partial_symtab *);
464
465static void read_ofile_symtab (struct partial_symtab *);
466
467static void process_dies (char *, char *, struct objfile *);
468
469static void read_structure_scope (struct dieinfo *, char *, char *,
470				  struct objfile *);
471
472static struct type *decode_array_element_type (char *);
473
474static struct type *decode_subscript_data_item (char *, char *);
475
476static void dwarf_read_array_type (struct dieinfo *);
477
478static void read_tag_pointer_type (struct dieinfo *dip);
479
480static void read_tag_string_type (struct dieinfo *dip);
481
482static void read_subroutine_type (struct dieinfo *, char *, char *);
483
484static void read_enumeration (struct dieinfo *, char *, char *,
485			      struct objfile *);
486
487static struct type *struct_type (struct dieinfo *, char *, char *,
488				 struct objfile *);
489
490static struct type *enum_type (struct dieinfo *, struct objfile *);
491
492static void decode_line_numbers (char *);
493
494static struct type *decode_die_type (struct dieinfo *);
495
496static struct type *decode_mod_fund_type (char *);
497
498static struct type *decode_mod_u_d_type (char *);
499
500static struct type *decode_modified_type (char *, unsigned int, int);
501
502static struct type *decode_fund_type (unsigned int);
503
504static char *create_name (char *, struct obstack *);
505
506static struct type *lookup_utype (DIE_REF);
507
508static struct type *alloc_utype (DIE_REF, struct type *);
509
510static struct symbol *new_symbol (struct dieinfo *, struct objfile *);
511
512static void synthesize_typedef (struct dieinfo *, struct objfile *,
513				struct type *);
514
515static int locval (struct dieinfo *);
516
517static void set_cu_language (struct dieinfo *);
518
519static struct type *dwarf_fundamental_type (struct objfile *, int);
520
521
522/*
523
524   LOCAL FUNCTION
525
526   dwarf_fundamental_type -- lookup or create a fundamental type
527
528   SYNOPSIS
529
530   struct type *
531   dwarf_fundamental_type (struct objfile *objfile, int typeid)
532
533   DESCRIPTION
534
535   DWARF version 1 doesn't supply any fundamental type information,
536   so gdb has to construct such types.  It has a fixed number of
537   fundamental types that it knows how to construct, which is the
538   union of all types that it knows how to construct for all languages
539   that it knows about.  These are enumerated in gdbtypes.h.
540
541   As an example, assume we find a DIE that references a DWARF
542   fundamental type of FT_integer.  We first look in the ftypes
543   array to see if we already have such a type, indexed by the
544   gdb internal value of FT_INTEGER.  If so, we simply return a
545   pointer to that type.  If not, then we ask an appropriate
546   language dependent routine to create a type FT_INTEGER, using
547   defaults reasonable for the current target machine, and install
548   that type in ftypes for future reference.
549
550   RETURNS
551
552   Pointer to a fundamental type.
553
554 */
555
556static struct type *
557dwarf_fundamental_type (struct objfile *objfile, int typeid)
558{
559  if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
560    {
561      error ("internal error - invalid fundamental type id %d", typeid);
562    }
563
564  /* Look for this particular type in the fundamental type vector.  If one is
565     not found, create and install one appropriate for the current language
566     and the current target machine. */
567
568  if (ftypes[typeid] == NULL)
569    {
570      ftypes[typeid] = cu_language_defn->la_fund_type (objfile, typeid);
571    }
572
573  return (ftypes[typeid]);
574}
575
576/*
577
578   LOCAL FUNCTION
579
580   set_cu_language -- set local copy of language for compilation unit
581
582   SYNOPSIS
583
584   void
585   set_cu_language (struct dieinfo *dip)
586
587   DESCRIPTION
588
589   Decode the language attribute for a compilation unit DIE and
590   remember what the language was.  We use this at various times
591   when processing DIE's for a given compilation unit.
592
593   RETURNS
594
595   No return value.
596
597 */
598
599static void
600set_cu_language (struct dieinfo *dip)
601{
602  switch (dip->at_language)
603    {
604    case LANG_C89:
605    case LANG_C:
606      cu_language = language_c;
607      break;
608    case LANG_C_PLUS_PLUS:
609      cu_language = language_cplus;
610      break;
611    case LANG_MODULA2:
612      cu_language = language_m2;
613      break;
614    case LANG_FORTRAN77:
615    case LANG_FORTRAN90:
616      cu_language = language_fortran;
617      break;
618    case LANG_ADA83:
619    case LANG_COBOL74:
620    case LANG_COBOL85:
621    case LANG_PASCAL83:
622      /* We don't know anything special about these yet. */
623      cu_language = language_unknown;
624      break;
625    default:
626      /* If no at_language, try to deduce one from the filename */
627      cu_language = deduce_language_from_filename (dip->at_name);
628      break;
629    }
630  cu_language_defn = language_def (cu_language);
631}
632
633/*
634
635   GLOBAL FUNCTION
636
637   dwarf_build_psymtabs -- build partial symtabs from DWARF debug info
638
639   SYNOPSIS
640
641   void dwarf_build_psymtabs (struct objfile *objfile,
642   int mainline, file_ptr dbfoff, unsigned int dbfsize,
643   file_ptr lnoffset, unsigned int lnsize)
644
645   DESCRIPTION
646
647   This function is called upon to build partial symtabs from files
648   containing DIE's (Dwarf Information Entries) and DWARF line numbers.
649
650   It is passed a bfd* containing the DIES
651   and line number information, the corresponding filename for that
652   file, a base address for relocating the symbols, a flag indicating
653   whether or not this debugging information is from a "main symbol
654   table" rather than a shared library or dynamically linked file,
655   and file offset/size pairs for the DIE information and line number
656   information.
657
658   RETURNS
659
660   No return value.
661
662 */
663
664void
665dwarf_build_psymtabs (struct objfile *objfile, int mainline, file_ptr dbfoff,
666		      unsigned int dbfsize, file_ptr lnoffset,
667		      unsigned int lnsize)
668{
669  bfd *abfd = objfile->obfd;
670  struct cleanup *back_to;
671
672  current_objfile = objfile;
673  dbsize = dbfsize;
674  dbbase = xmalloc (dbsize);
675  dbroff = 0;
676  if ((bfd_seek (abfd, dbfoff, SEEK_SET) != 0) ||
677      (bfd_bread (dbbase, dbsize, abfd) != dbsize))
678    {
679      xfree (dbbase);
680      error ("can't read DWARF data from '%s'", bfd_get_filename (abfd));
681    }
682  back_to = make_cleanup (xfree, dbbase);
683
684  /* If we are reinitializing, or if we have never loaded syms yet, init.
685     Since we have no idea how many DIES we are looking at, we just guess
686     some arbitrary value. */
687
688  if (mainline
689      || (objfile->global_psymbols.size == 0
690	  && objfile->static_psymbols.size == 0))
691    {
692      init_psymbol_list (objfile, 1024);
693    }
694
695  /* Save the relocation factor where everybody can see it.  */
696
697  base_section_offsets = objfile->section_offsets;
698  baseaddr = ANOFFSET (objfile->section_offsets, 0);
699
700  /* Follow the compilation unit sibling chain, building a partial symbol
701     table entry for each one.  Save enough information about each compilation
702     unit to locate the full DWARF information later. */
703
704  scan_compilation_units (dbbase, dbbase + dbsize, dbfoff, lnoffset, objfile);
705
706  do_cleanups (back_to);
707  current_objfile = NULL;
708}
709
710/*
711
712   LOCAL FUNCTION
713
714   read_lexical_block_scope -- process all dies in a lexical block
715
716   SYNOPSIS
717
718   static void read_lexical_block_scope (struct dieinfo *dip,
719   char *thisdie, char *enddie)
720
721   DESCRIPTION
722
723   Process all the DIES contained within a lexical block scope.
724   Start a new scope, process the dies, and then close the scope.
725
726 */
727
728static void
729read_lexical_block_scope (struct dieinfo *dip, char *thisdie, char *enddie,
730			  struct objfile *objfile)
731{
732  struct context_stack *new;
733
734  push_context (0, dip->at_low_pc);
735  process_dies (thisdie + dip->die_length, enddie, objfile);
736  new = pop_context ();
737  if (local_symbols != NULL)
738    {
739      finish_block (0, &local_symbols, new->old_blocks, new->start_addr,
740		    dip->at_high_pc, objfile);
741    }
742  local_symbols = new->locals;
743}
744
745/*
746
747   LOCAL FUNCTION
748
749   lookup_utype -- look up a user defined type from die reference
750
751   SYNOPSIS
752
753   static type *lookup_utype (DIE_REF die_ref)
754
755   DESCRIPTION
756
757   Given a DIE reference, lookup the user defined type associated with
758   that DIE, if it has been registered already.  If not registered, then
759   return NULL.  Alloc_utype() can be called to register an empty
760   type for this reference, which will be filled in later when the
761   actual referenced DIE is processed.
762 */
763
764static struct type *
765lookup_utype (DIE_REF die_ref)
766{
767  struct type *type = NULL;
768  int utypeidx;
769
770  utypeidx = (die_ref - dbroff) / 4;
771  if ((utypeidx < 0) || (utypeidx >= numutypes))
772    {
773      bad_die_ref_complaint (DIE_ID, DIE_NAME, die_ref);
774    }
775  else
776    {
777      type = *(utypes + utypeidx);
778    }
779  return (type);
780}
781
782
783/*
784
785   LOCAL FUNCTION
786
787   alloc_utype  -- add a user defined type for die reference
788
789   SYNOPSIS
790
791   static type *alloc_utype (DIE_REF die_ref, struct type *utypep)
792
793   DESCRIPTION
794
795   Given a die reference DIE_REF, and a possible pointer to a user
796   defined type UTYPEP, register that this reference has a user
797   defined type and either use the specified type in UTYPEP or
798   make a new empty type that will be filled in later.
799
800   We should only be called after calling lookup_utype() to verify that
801   there is not currently a type registered for DIE_REF.
802 */
803
804static struct type *
805alloc_utype (DIE_REF die_ref, struct type *utypep)
806{
807  struct type **typep;
808  int utypeidx;
809
810  utypeidx = (die_ref - dbroff) / 4;
811  typep = utypes + utypeidx;
812  if ((utypeidx < 0) || (utypeidx >= numutypes))
813    {
814      utypep = dwarf_fundamental_type (current_objfile, FT_INTEGER);
815      bad_die_ref_complaint (DIE_ID, DIE_NAME, die_ref);
816    }
817  else if (*typep != NULL)
818    {
819      utypep = *typep;
820      complaint (&symfile_complaints,
821		 "DIE @ 0x%x \"%s\", internal error: duplicate user type allocation",
822		 DIE_ID, DIE_NAME);
823    }
824  else
825    {
826      if (utypep == NULL)
827	{
828	  utypep = alloc_type (current_objfile);
829	}
830      *typep = utypep;
831    }
832  return (utypep);
833}
834
835/*
836
837   LOCAL FUNCTION
838
839   free_utypes -- free the utypes array and reset pointer & count
840
841   SYNOPSIS
842
843   static void free_utypes (void *dummy)
844
845   DESCRIPTION
846
847   Called via do_cleanups to free the utypes array, reset the pointer to NULL,
848   and set numutypes back to zero.  This ensures that the utypes does not get
849   referenced after being freed.
850 */
851
852static void
853free_utypes (void *dummy)
854{
855  xfree (utypes);
856  utypes = NULL;
857  numutypes = 0;
858}
859
860
861/*
862
863   LOCAL FUNCTION
864
865   decode_die_type -- return a type for a specified die
866
867   SYNOPSIS
868
869   static struct type *decode_die_type (struct dieinfo *dip)
870
871   DESCRIPTION
872
873   Given a pointer to a die information structure DIP, decode the
874   type of the die and return a pointer to the decoded type.  All
875   dies without specific types default to type int.
876 */
877
878static struct type *
879decode_die_type (struct dieinfo *dip)
880{
881  struct type *type = NULL;
882
883  if (dip->at_fund_type != 0)
884    {
885      type = decode_fund_type (dip->at_fund_type);
886    }
887  else if (dip->at_mod_fund_type != NULL)
888    {
889      type = decode_mod_fund_type (dip->at_mod_fund_type);
890    }
891  else if (dip->at_user_def_type)
892    {
893      type = lookup_utype (dip->at_user_def_type);
894      if (type == NULL)
895	{
896	  type = alloc_utype (dip->at_user_def_type, NULL);
897	}
898    }
899  else if (dip->at_mod_u_d_type)
900    {
901      type = decode_mod_u_d_type (dip->at_mod_u_d_type);
902    }
903  else
904    {
905      type = dwarf_fundamental_type (current_objfile, FT_VOID);
906    }
907  return (type);
908}
909
910/*
911
912   LOCAL FUNCTION
913
914   struct_type -- compute and return the type for a struct or union
915
916   SYNOPSIS
917
918   static struct type *struct_type (struct dieinfo *dip, char *thisdie,
919   char *enddie, struct objfile *objfile)
920
921   DESCRIPTION
922
923   Given pointer to a die information structure for a die which
924   defines a union or structure (and MUST define one or the other),
925   and pointers to the raw die data that define the range of dies which
926   define the members, compute and return the user defined type for the
927   structure or union.
928 */
929
930static struct type *
931struct_type (struct dieinfo *dip, char *thisdie, char *enddie,
932	     struct objfile *objfile)
933{
934  struct type *type;
935  struct nextfield
936    {
937      struct nextfield *next;
938      struct field field;
939    };
940  struct nextfield *list = NULL;
941  struct nextfield *new;
942  int nfields = 0;
943  int n;
944  struct dieinfo mbr;
945  char *nextdie;
946  int anonymous_size;
947
948  type = lookup_utype (dip->die_ref);
949  if (type == NULL)
950    {
951      /* No forward references created an empty type, so install one now */
952      type = alloc_utype (dip->die_ref, NULL);
953    }
954  INIT_CPLUS_SPECIFIC (type);
955  switch (dip->die_tag)
956    {
957    case TAG_class_type:
958      TYPE_CODE (type) = TYPE_CODE_CLASS;
959      break;
960    case TAG_structure_type:
961      TYPE_CODE (type) = TYPE_CODE_STRUCT;
962      break;
963    case TAG_union_type:
964      TYPE_CODE (type) = TYPE_CODE_UNION;
965      break;
966    default:
967      /* Should never happen */
968      TYPE_CODE (type) = TYPE_CODE_UNDEF;
969      complaint (&symfile_complaints,
970		 "DIE @ 0x%x \"%s\", missing class, structure, or union tag",
971		 DIE_ID, DIE_NAME);
972      break;
973    }
974  /* Some compilers try to be helpful by inventing "fake" names for
975     anonymous enums, structures, and unions, like "~0fake" or ".0fake".
976     Thanks, but no thanks... */
977  if (dip->at_name != NULL
978      && *dip->at_name != '~'
979      && *dip->at_name != '.')
980    {
981      TYPE_TAG_NAME (type) = obconcat (&objfile->objfile_obstack,
982				       "", "", dip->at_name);
983    }
984  /* Use whatever size is known.  Zero is a valid size.  We might however
985     wish to check has_at_byte_size to make sure that some byte size was
986     given explicitly, but DWARF doesn't specify that explicit sizes of
987     zero have to present, so complaining about missing sizes should
988     probably not be the default. */
989  TYPE_LENGTH (type) = dip->at_byte_size;
990  thisdie += dip->die_length;
991  while (thisdie < enddie)
992    {
993      basicdieinfo (&mbr, thisdie, objfile);
994      completedieinfo (&mbr, objfile);
995      if (mbr.die_length <= SIZEOF_DIE_LENGTH)
996	{
997	  break;
998	}
999      else if (mbr.at_sibling != 0)
1000	{
1001	  nextdie = dbbase + mbr.at_sibling - dbroff;
1002	}
1003      else
1004	{
1005	  nextdie = thisdie + mbr.die_length;
1006	}
1007      switch (mbr.die_tag)
1008	{
1009	case TAG_member:
1010	  /* Static fields can be either TAG_global_variable (GCC) or else
1011	     TAG_member with no location (Diab).  We could treat the latter like
1012	     the former... but since we don't support the former, just avoid
1013	     crashing on the latter for now.  */
1014	  if (mbr.at_location == NULL)
1015	    break;
1016
1017	  /* Get space to record the next field's data.  */
1018	  new = (struct nextfield *) alloca (sizeof (struct nextfield));
1019	  new->next = list;
1020	  list = new;
1021	  /* Save the data.  */
1022	  list->field.name =
1023	    obsavestring (mbr.at_name, strlen (mbr.at_name),
1024			  &objfile->objfile_obstack);
1025	  FIELD_TYPE (list->field) = decode_die_type (&mbr);
1026	  FIELD_BITPOS (list->field) = 8 * locval (&mbr);
1027	  FIELD_STATIC_KIND (list->field) = 0;
1028	  /* Handle bit fields. */
1029	  FIELD_BITSIZE (list->field) = mbr.at_bit_size;
1030	  if (BITS_BIG_ENDIAN)
1031	    {
1032	      /* For big endian bits, the at_bit_offset gives the
1033	         additional bit offset from the MSB of the containing
1034	         anonymous object to the MSB of the field.  We don't
1035	         have to do anything special since we don't need to
1036	         know the size of the anonymous object. */
1037	      FIELD_BITPOS (list->field) += mbr.at_bit_offset;
1038	    }
1039	  else
1040	    {
1041	      /* For little endian bits, we need to have a non-zero
1042	         at_bit_size, so that we know we are in fact dealing
1043	         with a bitfield.  Compute the bit offset to the MSB
1044	         of the anonymous object, subtract off the number of
1045	         bits from the MSB of the field to the MSB of the
1046	         object, and then subtract off the number of bits of
1047	         the field itself.  The result is the bit offset of
1048	         the LSB of the field. */
1049	      if (mbr.at_bit_size > 0)
1050		{
1051		  if (mbr.has_at_byte_size)
1052		    {
1053		      /* The size of the anonymous object containing
1054		         the bit field is explicit, so use the
1055		         indicated size (in bytes). */
1056		      anonymous_size = mbr.at_byte_size;
1057		    }
1058		  else
1059		    {
1060		      /* The size of the anonymous object containing
1061		         the bit field matches the size of an object
1062		         of the bit field's type.  DWARF allows
1063		         at_byte_size to be left out in such cases, as
1064		         a debug information size optimization. */
1065		      anonymous_size = TYPE_LENGTH (list->field.type);
1066		    }
1067		  FIELD_BITPOS (list->field) +=
1068		    anonymous_size * 8 - mbr.at_bit_offset - mbr.at_bit_size;
1069		}
1070	    }
1071	  nfields++;
1072	  break;
1073	default:
1074	  process_dies (thisdie, nextdie, objfile);
1075	  break;
1076	}
1077      thisdie = nextdie;
1078    }
1079  /* Now create the vector of fields, and record how big it is.  We may
1080     not even have any fields, if this DIE was generated due to a reference
1081     to an anonymous structure or union.  In this case, TYPE_FLAG_STUB is
1082     set, which clues gdb in to the fact that it needs to search elsewhere
1083     for the full structure definition. */
1084  if (nfields == 0)
1085    {
1086      TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
1087    }
1088  else
1089    {
1090      TYPE_NFIELDS (type) = nfields;
1091      TYPE_FIELDS (type) = (struct field *)
1092	TYPE_ALLOC (type, sizeof (struct field) * nfields);
1093      /* Copy the saved-up fields into the field vector.  */
1094      for (n = nfields; list; list = list->next)
1095	{
1096	  TYPE_FIELD (type, --n) = list->field;
1097	}
1098    }
1099  return (type);
1100}
1101
1102/*
1103
1104   LOCAL FUNCTION
1105
1106   read_structure_scope -- process all dies within struct or union
1107
1108   SYNOPSIS
1109
1110   static void read_structure_scope (struct dieinfo *dip,
1111   char *thisdie, char *enddie, struct objfile *objfile)
1112
1113   DESCRIPTION
1114
1115   Called when we find the DIE that starts a structure or union
1116   scope (definition) to process all dies that define the members
1117   of the structure or union.  DIP is a pointer to the die info
1118   struct for the DIE that names the structure or union.
1119
1120   NOTES
1121
1122   Note that we need to call struct_type regardless of whether or not
1123   the DIE has an at_name attribute, since it might be an anonymous
1124   structure or union.  This gets the type entered into our set of
1125   user defined types.
1126
1127   However, if the structure is incomplete (an opaque struct/union)
1128   then suppress creating a symbol table entry for it since gdb only
1129   wants to find the one with the complete definition.  Note that if
1130   it is complete, we just call new_symbol, which does it's own
1131   checking about whether the struct/union is anonymous or not (and
1132   suppresses creating a symbol table entry itself).
1133
1134 */
1135
1136static void
1137read_structure_scope (struct dieinfo *dip, char *thisdie, char *enddie,
1138		      struct objfile *objfile)
1139{
1140  struct type *type;
1141  struct symbol *sym;
1142
1143  type = struct_type (dip, thisdie, enddie, objfile);
1144  if (!TYPE_STUB (type))
1145    {
1146      sym = new_symbol (dip, objfile);
1147      if (sym != NULL)
1148	{
1149	  SYMBOL_TYPE (sym) = type;
1150	  if (cu_language == language_cplus)
1151	    {
1152	      synthesize_typedef (dip, objfile, type);
1153	    }
1154	}
1155    }
1156}
1157
1158/*
1159
1160   LOCAL FUNCTION
1161
1162   decode_array_element_type -- decode type of the array elements
1163
1164   SYNOPSIS
1165
1166   static struct type *decode_array_element_type (char *scan, char *end)
1167
1168   DESCRIPTION
1169
1170   As the last step in decoding the array subscript information for an
1171   array DIE, we need to decode the type of the array elements.  We are
1172   passed a pointer to this last part of the subscript information and
1173   must return the appropriate type.  If the type attribute is not
1174   recognized, just warn about the problem and return type int.
1175 */
1176
1177static struct type *
1178decode_array_element_type (char *scan)
1179{
1180  struct type *typep;
1181  DIE_REF die_ref;
1182  unsigned short attribute;
1183  unsigned short fundtype;
1184  int nbytes;
1185
1186  attribute = target_to_host (scan, SIZEOF_ATTRIBUTE, GET_UNSIGNED,
1187			      current_objfile);
1188  scan += SIZEOF_ATTRIBUTE;
1189  nbytes = attribute_size (attribute);
1190  if (nbytes == -1)
1191    {
1192      bad_array_element_type_complaint (DIE_ID, DIE_NAME, attribute);
1193      typep = dwarf_fundamental_type (current_objfile, FT_INTEGER);
1194    }
1195  else
1196    {
1197      switch (attribute)
1198	{
1199	case AT_fund_type:
1200	  fundtype = target_to_host (scan, nbytes, GET_UNSIGNED,
1201				     current_objfile);
1202	  typep = decode_fund_type (fundtype);
1203	  break;
1204	case AT_mod_fund_type:
1205	  typep = decode_mod_fund_type (scan);
1206	  break;
1207	case AT_user_def_type:
1208	  die_ref = target_to_host (scan, nbytes, GET_UNSIGNED,
1209				    current_objfile);
1210	  typep = lookup_utype (die_ref);
1211	  if (typep == NULL)
1212	    {
1213	      typep = alloc_utype (die_ref, NULL);
1214	    }
1215	  break;
1216	case AT_mod_u_d_type:
1217	  typep = decode_mod_u_d_type (scan);
1218	  break;
1219	default:
1220	  bad_array_element_type_complaint (DIE_ID, DIE_NAME, attribute);
1221	  typep = dwarf_fundamental_type (current_objfile, FT_INTEGER);
1222	  break;
1223	}
1224    }
1225  return (typep);
1226}
1227
1228/*
1229
1230   LOCAL FUNCTION
1231
1232   decode_subscript_data_item -- decode array subscript item
1233
1234   SYNOPSIS
1235
1236   static struct type *
1237   decode_subscript_data_item (char *scan, char *end)
1238
1239   DESCRIPTION
1240
1241   The array subscripts and the data type of the elements of an
1242   array are described by a list of data items, stored as a block
1243   of contiguous bytes.  There is a data item describing each array
1244   dimension, and a final data item describing the element type.
1245   The data items are ordered the same as their appearance in the
1246   source (I.E. leftmost dimension first, next to leftmost second,
1247   etc).
1248
1249   The data items describing each array dimension consist of four
1250   parts: (1) a format specifier, (2) type type of the subscript
1251   index, (3) a description of the low bound of the array dimension,
1252   and (4) a description of the high bound of the array dimension.
1253
1254   The last data item is the description of the type of each of
1255   the array elements.
1256
1257   We are passed a pointer to the start of the block of bytes
1258   containing the remaining data items, and a pointer to the first
1259   byte past the data.  This function recursively decodes the
1260   remaining data items and returns a type.
1261
1262   If we somehow fail to decode some data, we complain about it
1263   and return a type "array of int".
1264
1265   BUGS
1266   FIXME:  This code only implements the forms currently used
1267   by the AT&T and GNU C compilers.
1268
1269   The end pointer is supplied for error checking, maybe we should
1270   use it for that...
1271 */
1272
1273static struct type *
1274decode_subscript_data_item (char *scan, char *end)
1275{
1276  struct type *typep = NULL;	/* Array type we are building */
1277  struct type *nexttype;	/* Type of each element (may be array) */
1278  struct type *indextype;	/* Type of this index */
1279  struct type *rangetype;
1280  unsigned int format;
1281  unsigned short fundtype;
1282  unsigned long lowbound;
1283  unsigned long highbound;
1284  int nbytes;
1285
1286  format = target_to_host (scan, SIZEOF_FORMAT_SPECIFIER, GET_UNSIGNED,
1287			   current_objfile);
1288  scan += SIZEOF_FORMAT_SPECIFIER;
1289  switch (format)
1290    {
1291    case FMT_ET:
1292      typep = decode_array_element_type (scan);
1293      break;
1294    case FMT_FT_C_C:
1295      fundtype = target_to_host (scan, SIZEOF_FMT_FT, GET_UNSIGNED,
1296				 current_objfile);
1297      indextype = decode_fund_type (fundtype);
1298      scan += SIZEOF_FMT_FT;
1299      nbytes = TARGET_FT_LONG_SIZE (current_objfile);
1300      lowbound = target_to_host (scan, nbytes, GET_UNSIGNED, current_objfile);
1301      scan += nbytes;
1302      highbound = target_to_host (scan, nbytes, GET_UNSIGNED, current_objfile);
1303      scan += nbytes;
1304      nexttype = decode_subscript_data_item (scan, end);
1305      if (nexttype == NULL)
1306	{
1307	  /* Munged subscript data or other problem, fake it. */
1308	  complaint (&symfile_complaints,
1309		     "DIE @ 0x%x \"%s\", can't decode subscript data items",
1310		     DIE_ID, DIE_NAME);
1311	  nexttype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
1312	}
1313      rangetype = create_range_type ((struct type *) NULL, indextype,
1314				     lowbound, highbound);
1315      typep = create_array_type ((struct type *) NULL, nexttype, rangetype);
1316      break;
1317    case FMT_FT_C_X:
1318    case FMT_FT_X_C:
1319    case FMT_FT_X_X:
1320    case FMT_UT_C_C:
1321    case FMT_UT_C_X:
1322    case FMT_UT_X_C:
1323    case FMT_UT_X_X:
1324      complaint (&symfile_complaints,
1325		 "DIE @ 0x%x \"%s\", array subscript format 0x%x not handled yet",
1326		 DIE_ID, DIE_NAME, format);
1327      nexttype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
1328      rangetype = create_range_type ((struct type *) NULL, nexttype, 0, 0);
1329      typep = create_array_type ((struct type *) NULL, nexttype, rangetype);
1330      break;
1331    default:
1332      complaint (&symfile_complaints,
1333		 "DIE @ 0x%x \"%s\", unknown array subscript format %x", DIE_ID,
1334		 DIE_NAME, format);
1335      nexttype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
1336      rangetype = create_range_type ((struct type *) NULL, nexttype, 0, 0);
1337      typep = create_array_type ((struct type *) NULL, nexttype, rangetype);
1338      break;
1339    }
1340  return (typep);
1341}
1342
1343/*
1344
1345   LOCAL FUNCTION
1346
1347   dwarf_read_array_type -- read TAG_array_type DIE
1348
1349   SYNOPSIS
1350
1351   static void dwarf_read_array_type (struct dieinfo *dip)
1352
1353   DESCRIPTION
1354
1355   Extract all information from a TAG_array_type DIE and add to
1356   the user defined type vector.
1357 */
1358
1359static void
1360dwarf_read_array_type (struct dieinfo *dip)
1361{
1362  struct type *type;
1363  struct type *utype;
1364  char *sub;
1365  char *subend;
1366  unsigned short blocksz;
1367  int nbytes;
1368
1369  if (dip->at_ordering != ORD_row_major)
1370    {
1371      /* FIXME:  Can gdb even handle column major arrays? */
1372      complaint (&symfile_complaints,
1373		 "DIE @ 0x%x \"%s\", array not row major; not handled correctly",
1374		 DIE_ID, DIE_NAME);
1375    }
1376  sub = dip->at_subscr_data;
1377  if (sub != NULL)
1378    {
1379      nbytes = attribute_size (AT_subscr_data);
1380      blocksz = target_to_host (sub, nbytes, GET_UNSIGNED, current_objfile);
1381      subend = sub + nbytes + blocksz;
1382      sub += nbytes;
1383      type = decode_subscript_data_item (sub, subend);
1384      utype = lookup_utype (dip->die_ref);
1385      if (utype == NULL)
1386	{
1387	  /* Install user defined type that has not been referenced yet. */
1388	  alloc_utype (dip->die_ref, type);
1389	}
1390      else if (TYPE_CODE (utype) == TYPE_CODE_UNDEF)
1391	{
1392	  /* Ick!  A forward ref has already generated a blank type in our
1393	     slot, and this type probably already has things pointing to it
1394	     (which is what caused it to be created in the first place).
1395	     If it's just a place holder we can plop our fully defined type
1396	     on top of it.  We can't recover the space allocated for our
1397	     new type since it might be on an obstack, but we could reuse
1398	     it if we kept a list of them, but it might not be worth it
1399	     (FIXME). */
1400	  *utype = *type;
1401	}
1402      else
1403	{
1404	  /* Double ick!  Not only is a type already in our slot, but
1405	     someone has decorated it.  Complain and leave it alone. */
1406	  dup_user_type_definition_complaint (DIE_ID, DIE_NAME);
1407	}
1408    }
1409}
1410
1411/*
1412
1413   LOCAL FUNCTION
1414
1415   read_tag_pointer_type -- read TAG_pointer_type DIE
1416
1417   SYNOPSIS
1418
1419   static void read_tag_pointer_type (struct dieinfo *dip)
1420
1421   DESCRIPTION
1422
1423   Extract all information from a TAG_pointer_type DIE and add to
1424   the user defined type vector.
1425 */
1426
1427static void
1428read_tag_pointer_type (struct dieinfo *dip)
1429{
1430  struct type *type;
1431  struct type *utype;
1432
1433  type = decode_die_type (dip);
1434  utype = lookup_utype (dip->die_ref);
1435  if (utype == NULL)
1436    {
1437      utype = lookup_pointer_type (type);
1438      alloc_utype (dip->die_ref, utype);
1439    }
1440  else
1441    {
1442      TYPE_TARGET_TYPE (utype) = type;
1443      TYPE_POINTER_TYPE (type) = utype;
1444
1445      /* We assume the machine has only one representation for pointers!  */
1446      /* FIXME:  Possably a poor assumption  */
1447      TYPE_LENGTH (utype) = TARGET_PTR_BIT / TARGET_CHAR_BIT;
1448      TYPE_CODE (utype) = TYPE_CODE_PTR;
1449    }
1450}
1451
1452/*
1453
1454   LOCAL FUNCTION
1455
1456   read_tag_string_type -- read TAG_string_type DIE
1457
1458   SYNOPSIS
1459
1460   static void read_tag_string_type (struct dieinfo *dip)
1461
1462   DESCRIPTION
1463
1464   Extract all information from a TAG_string_type DIE and add to
1465   the user defined type vector.  It isn't really a user defined
1466   type, but it behaves like one, with other DIE's using an
1467   AT_user_def_type attribute to reference it.
1468 */
1469
1470static void
1471read_tag_string_type (struct dieinfo *dip)
1472{
1473  struct type *utype;
1474  struct type *indextype;
1475  struct type *rangetype;
1476  unsigned long lowbound = 0;
1477  unsigned long highbound;
1478
1479  if (dip->has_at_byte_size)
1480    {
1481      /* A fixed bounds string */
1482      highbound = dip->at_byte_size - 1;
1483    }
1484  else
1485    {
1486      /* A varying length string.  Stub for now.  (FIXME) */
1487      highbound = 1;
1488    }
1489  indextype = dwarf_fundamental_type (current_objfile, FT_INTEGER);
1490  rangetype = create_range_type ((struct type *) NULL, indextype, lowbound,
1491				 highbound);
1492
1493  utype = lookup_utype (dip->die_ref);
1494  if (utype == NULL)
1495    {
1496      /* No type defined, go ahead and create a blank one to use. */
1497      utype = alloc_utype (dip->die_ref, (struct type *) NULL);
1498    }
1499  else
1500    {
1501      /* Already a type in our slot due to a forward reference. Make sure it
1502         is a blank one.  If not, complain and leave it alone. */
1503      if (TYPE_CODE (utype) != TYPE_CODE_UNDEF)
1504	{
1505	  dup_user_type_definition_complaint (DIE_ID, DIE_NAME);
1506	  return;
1507	}
1508    }
1509
1510  /* Create the string type using the blank type we either found or created. */
1511  utype = create_string_type (utype, rangetype);
1512}
1513
1514/*
1515
1516   LOCAL FUNCTION
1517
1518   read_subroutine_type -- process TAG_subroutine_type dies
1519
1520   SYNOPSIS
1521
1522   static void read_subroutine_type (struct dieinfo *dip, char thisdie,
1523   char *enddie)
1524
1525   DESCRIPTION
1526
1527   Handle DIES due to C code like:
1528
1529   struct foo {
1530   int (*funcp)(int a, long l);  (Generates TAG_subroutine_type DIE)
1531   int b;
1532   };
1533
1534   NOTES
1535
1536   The parameter DIES are currently ignored.  See if gdb has a way to
1537   include this info in it's type system, and decode them if so.  Is
1538   this what the type structure's "arg_types" field is for?  (FIXME)
1539 */
1540
1541static void
1542read_subroutine_type (struct dieinfo *dip, char *thisdie, char *enddie)
1543{
1544  struct type *type;		/* Type that this function returns */
1545  struct type *ftype;		/* Function that returns above type */
1546
1547  /* Decode the type that this subroutine returns */
1548
1549  type = decode_die_type (dip);
1550
1551  /* Check to see if we already have a partially constructed user
1552     defined type for this DIE, from a forward reference. */
1553
1554  ftype = lookup_utype (dip->die_ref);
1555  if (ftype == NULL)
1556    {
1557      /* This is the first reference to one of these types.  Make
1558         a new one and place it in the user defined types. */
1559      ftype = lookup_function_type (type);
1560      alloc_utype (dip->die_ref, ftype);
1561    }
1562  else if (TYPE_CODE (ftype) == TYPE_CODE_UNDEF)
1563    {
1564      /* We have an existing partially constructed type, so bash it
1565         into the correct type. */
1566      TYPE_TARGET_TYPE (ftype) = type;
1567      TYPE_LENGTH (ftype) = 1;
1568      TYPE_CODE (ftype) = TYPE_CODE_FUNC;
1569    }
1570  else
1571    {
1572      dup_user_type_definition_complaint (DIE_ID, DIE_NAME);
1573    }
1574}
1575
1576/*
1577
1578   LOCAL FUNCTION
1579
1580   read_enumeration -- process dies which define an enumeration
1581
1582   SYNOPSIS
1583
1584   static void read_enumeration (struct dieinfo *dip, char *thisdie,
1585   char *enddie, struct objfile *objfile)
1586
1587   DESCRIPTION
1588
1589   Given a pointer to a die which begins an enumeration, process all
1590   the dies that define the members of the enumeration.
1591
1592   NOTES
1593
1594   Note that we need to call enum_type regardless of whether or not we
1595   have a symbol, since we might have an enum without a tag name (thus
1596   no symbol for the tagname).
1597 */
1598
1599static void
1600read_enumeration (struct dieinfo *dip, char *thisdie, char *enddie,
1601		  struct objfile *objfile)
1602{
1603  struct type *type;
1604  struct symbol *sym;
1605
1606  type = enum_type (dip, objfile);
1607  sym = new_symbol (dip, objfile);
1608  if (sym != NULL)
1609    {
1610      SYMBOL_TYPE (sym) = type;
1611      if (cu_language == language_cplus)
1612	{
1613	  synthesize_typedef (dip, objfile, type);
1614	}
1615    }
1616}
1617
1618/*
1619
1620   LOCAL FUNCTION
1621
1622   enum_type -- decode and return a type for an enumeration
1623
1624   SYNOPSIS
1625
1626   static type *enum_type (struct dieinfo *dip, struct objfile *objfile)
1627
1628   DESCRIPTION
1629
1630   Given a pointer to a die information structure for the die which
1631   starts an enumeration, process all the dies that define the members
1632   of the enumeration and return a type pointer for the enumeration.
1633
1634   At the same time, for each member of the enumeration, create a
1635   symbol for it with domain VAR_DOMAIN and class LOC_CONST,
1636   and give it the type of the enumeration itself.
1637
1638   NOTES
1639
1640   Note that the DWARF specification explicitly mandates that enum
1641   constants occur in reverse order from the source program order,
1642   for "consistency" and because this ordering is easier for many
1643   compilers to generate. (Draft 6, sec 3.8.5, Enumeration type
1644   Entries).  Because gdb wants to see the enum members in program
1645   source order, we have to ensure that the order gets reversed while
1646   we are processing them.
1647 */
1648
1649static struct type *
1650enum_type (struct dieinfo *dip, struct objfile *objfile)
1651{
1652  struct type *type;
1653  struct nextfield
1654    {
1655      struct nextfield *next;
1656      struct field field;
1657    };
1658  struct nextfield *list = NULL;
1659  struct nextfield *new;
1660  int nfields = 0;
1661  int n;
1662  char *scan;
1663  char *listend;
1664  unsigned short blocksz;
1665  struct symbol *sym;
1666  int nbytes;
1667  int unsigned_enum = 1;
1668
1669  type = lookup_utype (dip->die_ref);
1670  if (type == NULL)
1671    {
1672      /* No forward references created an empty type, so install one now */
1673      type = alloc_utype (dip->die_ref, NULL);
1674    }
1675  TYPE_CODE (type) = TYPE_CODE_ENUM;
1676  /* Some compilers try to be helpful by inventing "fake" names for
1677     anonymous enums, structures, and unions, like "~0fake" or ".0fake".
1678     Thanks, but no thanks... */
1679  if (dip->at_name != NULL
1680      && *dip->at_name != '~'
1681      && *dip->at_name != '.')
1682    {
1683      TYPE_TAG_NAME (type) = obconcat (&objfile->objfile_obstack,
1684				       "", "", dip->at_name);
1685    }
1686  if (dip->at_byte_size != 0)
1687    {
1688      TYPE_LENGTH (type) = dip->at_byte_size;
1689    }
1690  scan = dip->at_element_list;
1691  if (scan != NULL)
1692    {
1693      if (dip->short_element_list)
1694	{
1695	  nbytes = attribute_size (AT_short_element_list);
1696	}
1697      else
1698	{
1699	  nbytes = attribute_size (AT_element_list);
1700	}
1701      blocksz = target_to_host (scan, nbytes, GET_UNSIGNED, objfile);
1702      listend = scan + nbytes + blocksz;
1703      scan += nbytes;
1704      while (scan < listend)
1705	{
1706	  new = (struct nextfield *) alloca (sizeof (struct nextfield));
1707	  new->next = list;
1708	  list = new;
1709	  FIELD_TYPE (list->field) = NULL;
1710	  FIELD_BITSIZE (list->field) = 0;
1711	  FIELD_STATIC_KIND (list->field) = 0;
1712	  FIELD_BITPOS (list->field) =
1713	    target_to_host (scan, TARGET_FT_LONG_SIZE (objfile), GET_SIGNED,
1714			    objfile);
1715	  scan += TARGET_FT_LONG_SIZE (objfile);
1716	  list->field.name = obsavestring (scan, strlen (scan),
1717					   &objfile->objfile_obstack);
1718	  scan += strlen (scan) + 1;
1719	  nfields++;
1720	  /* Handcraft a new symbol for this enum member. */
1721	  sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
1722						 sizeof (struct symbol));
1723	  memset (sym, 0, sizeof (struct symbol));
1724	  DEPRECATED_SYMBOL_NAME (sym) = create_name (list->field.name,
1725					   &objfile->objfile_obstack);
1726	  SYMBOL_INIT_LANGUAGE_SPECIFIC (sym, cu_language);
1727	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1728	  SYMBOL_CLASS (sym) = LOC_CONST;
1729	  SYMBOL_TYPE (sym) = type;
1730	  SYMBOL_VALUE (sym) = FIELD_BITPOS (list->field);
1731	  if (SYMBOL_VALUE (sym) < 0)
1732	    unsigned_enum = 0;
1733	  add_symbol_to_list (sym, list_in_scope);
1734	}
1735      /* Now create the vector of fields, and record how big it is. This is
1736         where we reverse the order, by pulling the members off the list in
1737         reverse order from how they were inserted.  If we have no fields
1738         (this is apparently possible in C++) then skip building a field
1739         vector. */
1740      if (nfields > 0)
1741	{
1742	  if (unsigned_enum)
1743	    TYPE_FLAGS (type) |= TYPE_FLAG_UNSIGNED;
1744	  TYPE_NFIELDS (type) = nfields;
1745	  TYPE_FIELDS (type) = (struct field *)
1746	    obstack_alloc (&objfile->objfile_obstack, sizeof (struct field) * nfields);
1747	  /* Copy the saved-up fields into the field vector.  */
1748	  for (n = 0; (n < nfields) && (list != NULL); list = list->next)
1749	    {
1750	      TYPE_FIELD (type, n++) = list->field;
1751	    }
1752	}
1753    }
1754  return (type);
1755}
1756
1757/*
1758
1759   LOCAL FUNCTION
1760
1761   read_func_scope -- process all dies within a function scope
1762
1763   DESCRIPTION
1764
1765   Process all dies within a given function scope.  We are passed
1766   a die information structure pointer DIP for the die which
1767   starts the function scope, and pointers into the raw die data
1768   that define the dies within the function scope.
1769
1770   For now, we ignore lexical block scopes within the function.
1771   The problem is that AT&T cc does not define a DWARF lexical
1772   block scope for the function itself, while gcc defines a
1773   lexical block scope for the function.  We need to think about
1774   how to handle this difference, or if it is even a problem.
1775   (FIXME)
1776 */
1777
1778static void
1779read_func_scope (struct dieinfo *dip, char *thisdie, char *enddie,
1780		 struct objfile *objfile)
1781{
1782  struct context_stack *new;
1783
1784  /* AT_name is absent if the function is described with an
1785     AT_abstract_origin tag.
1786     Ignore the function description for now to avoid GDB core dumps.
1787     FIXME: Add code to handle AT_abstract_origin tags properly.  */
1788  if (dip->at_name == NULL)
1789    {
1790      complaint (&symfile_complaints, "DIE @ 0x%x, AT_name tag missing",
1791		 DIE_ID);
1792      return;
1793    }
1794
1795  new = push_context (0, dip->at_low_pc);
1796  new->name = new_symbol (dip, objfile);
1797  list_in_scope = &local_symbols;
1798  process_dies (thisdie + dip->die_length, enddie, objfile);
1799  new = pop_context ();
1800  /* Make a block for the local symbols within.  */
1801  finish_block (new->name, &local_symbols, new->old_blocks,
1802		new->start_addr, dip->at_high_pc, objfile);
1803  list_in_scope = &file_symbols;
1804}
1805
1806
1807/*
1808
1809   LOCAL FUNCTION
1810
1811   handle_producer -- process the AT_producer attribute
1812
1813   DESCRIPTION
1814
1815   Perform any operations that depend on finding a particular
1816   AT_producer attribute.
1817
1818 */
1819
1820static void
1821handle_producer (char *producer)
1822{
1823
1824  /* If this compilation unit was compiled with g++ or gcc, then set the
1825     processing_gcc_compilation flag. */
1826
1827  if (DEPRECATED_STREQN (producer, GCC_PRODUCER, strlen (GCC_PRODUCER)))
1828    {
1829      char version = producer[strlen (GCC_PRODUCER)];
1830      processing_gcc_compilation = (version == '2' ? 2 : 1);
1831    }
1832  else
1833    {
1834      processing_gcc_compilation =
1835	strncmp (producer, GPLUS_PRODUCER, strlen (GPLUS_PRODUCER)) == 0;
1836    }
1837
1838  /* Select a demangling style if we can identify the producer and if
1839     the current style is auto.  We leave the current style alone if it
1840     is not auto.  We also leave the demangling style alone if we find a
1841     gcc (cc1) producer, as opposed to a g++ (cc1plus) producer. */
1842
1843  if (AUTO_DEMANGLING)
1844    {
1845      if (DEPRECATED_STREQN (producer, GPLUS_PRODUCER, strlen (GPLUS_PRODUCER)))
1846	{
1847#if 0
1848	  /* For now, stay with AUTO_DEMANGLING for g++ output, as we don't
1849	     know whether it will use the old style or v3 mangling.  */
1850	  set_demangling_style (GNU_DEMANGLING_STYLE_STRING);
1851#endif
1852	}
1853      else if (DEPRECATED_STREQN (producer, LCC_PRODUCER, strlen (LCC_PRODUCER)))
1854	{
1855	  set_demangling_style (LUCID_DEMANGLING_STYLE_STRING);
1856	}
1857    }
1858}
1859
1860
1861/*
1862
1863   LOCAL FUNCTION
1864
1865   read_file_scope -- process all dies within a file scope
1866
1867   DESCRIPTION
1868
1869   Process all dies within a given file scope.  We are passed a
1870   pointer to the die information structure for the die which
1871   starts the file scope, and pointers into the raw die data which
1872   mark the range of dies within the file scope.
1873
1874   When the partial symbol table is built, the file offset for the line
1875   number table for each compilation unit is saved in the partial symbol
1876   table entry for that compilation unit.  As the symbols for each
1877   compilation unit are read, the line number table is read into memory
1878   and the variable lnbase is set to point to it.  Thus all we have to
1879   do is use lnbase to access the line number table for the current
1880   compilation unit.
1881 */
1882
1883static void
1884read_file_scope (struct dieinfo *dip, char *thisdie, char *enddie,
1885		 struct objfile *objfile)
1886{
1887  struct cleanup *back_to;
1888  struct symtab *symtab;
1889
1890  set_cu_language (dip);
1891  if (dip->at_producer != NULL)
1892    {
1893      handle_producer (dip->at_producer);
1894    }
1895  numutypes = (enddie - thisdie) / 4;
1896  utypes = (struct type **) xmalloc (numutypes * sizeof (struct type *));
1897  back_to = make_cleanup (free_utypes, NULL);
1898  memset (utypes, 0, numutypes * sizeof (struct type *));
1899  memset (ftypes, 0, FT_NUM_MEMBERS * sizeof (struct type *));
1900  start_symtab (dip->at_name, dip->at_comp_dir, dip->at_low_pc);
1901  record_debugformat ("DWARF 1");
1902  decode_line_numbers (lnbase);
1903  process_dies (thisdie + dip->die_length, enddie, objfile);
1904
1905  symtab = end_symtab (dip->at_high_pc, objfile, 0);
1906  if (symtab != NULL)
1907    {
1908      symtab->language = cu_language;
1909    }
1910  do_cleanups (back_to);
1911}
1912
1913/*
1914
1915   LOCAL FUNCTION
1916
1917   process_dies -- process a range of DWARF Information Entries
1918
1919   SYNOPSIS
1920
1921   static void process_dies (char *thisdie, char *enddie,
1922   struct objfile *objfile)
1923
1924   DESCRIPTION
1925
1926   Process all DIE's in a specified range.  May be (and almost
1927   certainly will be) called recursively.
1928 */
1929
1930static void
1931process_dies (char *thisdie, char *enddie, struct objfile *objfile)
1932{
1933  char *nextdie;
1934  struct dieinfo di;
1935
1936  while (thisdie < enddie)
1937    {
1938      basicdieinfo (&di, thisdie, objfile);
1939      if (di.die_length < SIZEOF_DIE_LENGTH)
1940	{
1941	  break;
1942	}
1943      else if (di.die_tag == TAG_padding)
1944	{
1945	  nextdie = thisdie + di.die_length;
1946	}
1947      else
1948	{
1949	  completedieinfo (&di, objfile);
1950	  if (di.at_sibling != 0)
1951	    {
1952	      nextdie = dbbase + di.at_sibling - dbroff;
1953	    }
1954	  else
1955	    {
1956	      nextdie = thisdie + di.die_length;
1957	    }
1958	  /* I think that these are always text, not data, addresses.  */
1959	  di.at_low_pc = SMASH_TEXT_ADDRESS (di.at_low_pc);
1960	  di.at_high_pc = SMASH_TEXT_ADDRESS (di.at_high_pc);
1961	  switch (di.die_tag)
1962	    {
1963	    case TAG_compile_unit:
1964	      /* Skip Tag_compile_unit if we are already inside a compilation
1965	         unit, we are unable to handle nested compilation units
1966	         properly (FIXME).  */
1967	      if (current_subfile == NULL)
1968		read_file_scope (&di, thisdie, nextdie, objfile);
1969	      else
1970		nextdie = thisdie + di.die_length;
1971	      break;
1972	    case TAG_global_subroutine:
1973	    case TAG_subroutine:
1974	      if (di.has_at_low_pc)
1975		{
1976		  read_func_scope (&di, thisdie, nextdie, objfile);
1977		}
1978	      break;
1979	    case TAG_lexical_block:
1980	      read_lexical_block_scope (&di, thisdie, nextdie, objfile);
1981	      break;
1982	    case TAG_class_type:
1983	    case TAG_structure_type:
1984	    case TAG_union_type:
1985	      read_structure_scope (&di, thisdie, nextdie, objfile);
1986	      break;
1987	    case TAG_enumeration_type:
1988	      read_enumeration (&di, thisdie, nextdie, objfile);
1989	      break;
1990	    case TAG_subroutine_type:
1991	      read_subroutine_type (&di, thisdie, nextdie);
1992	      break;
1993	    case TAG_array_type:
1994	      dwarf_read_array_type (&di);
1995	      break;
1996	    case TAG_pointer_type:
1997	      read_tag_pointer_type (&di);
1998	      break;
1999	    case TAG_string_type:
2000	      read_tag_string_type (&di);
2001	      break;
2002	    default:
2003	      new_symbol (&di, objfile);
2004	      break;
2005	    }
2006	}
2007      thisdie = nextdie;
2008    }
2009}
2010
2011/*
2012
2013   LOCAL FUNCTION
2014
2015   decode_line_numbers -- decode a line number table fragment
2016
2017   SYNOPSIS
2018
2019   static void decode_line_numbers (char *tblscan, char *tblend,
2020   long length, long base, long line, long pc)
2021
2022   DESCRIPTION
2023
2024   Translate the DWARF line number information to gdb form.
2025
2026   The ".line" section contains one or more line number tables, one for
2027   each ".line" section from the objects that were linked.
2028
2029   The AT_stmt_list attribute for each TAG_source_file entry in the
2030   ".debug" section contains the offset into the ".line" section for the
2031   start of the table for that file.
2032
2033   The table itself has the following structure:
2034
2035   <table length><base address><source statement entry>
2036   4 bytes       4 bytes       10 bytes
2037
2038   The table length is the total size of the table, including the 4 bytes
2039   for the length information.
2040
2041   The base address is the address of the first instruction generated
2042   for the source file.
2043
2044   Each source statement entry has the following structure:
2045
2046   <line number><statement position><address delta>
2047   4 bytes      2 bytes             4 bytes
2048
2049   The line number is relative to the start of the file, starting with
2050   line 1.
2051
2052   The statement position either -1 (0xFFFF) or the number of characters
2053   from the beginning of the line to the beginning of the statement.
2054
2055   The address delta is the difference between the base address and
2056   the address of the first instruction for the statement.
2057
2058   Note that we must copy the bytes from the packed table to our local
2059   variables before attempting to use them, to avoid alignment problems
2060   on some machines, particularly RISC processors.
2061
2062   BUGS
2063
2064   Does gdb expect the line numbers to be sorted?  They are now by
2065   chance/luck, but are not required to be.  (FIXME)
2066
2067   The line with number 0 is unused, gdb apparently can discover the
2068   span of the last line some other way. How?  (FIXME)
2069 */
2070
2071static void
2072decode_line_numbers (char *linetable)
2073{
2074  char *tblscan;
2075  char *tblend;
2076  unsigned long length;
2077  unsigned long base;
2078  unsigned long line;
2079  unsigned long pc;
2080
2081  if (linetable != NULL)
2082    {
2083      tblscan = tblend = linetable;
2084      length = target_to_host (tblscan, SIZEOF_LINETBL_LENGTH, GET_UNSIGNED,
2085			       current_objfile);
2086      tblscan += SIZEOF_LINETBL_LENGTH;
2087      tblend += length;
2088      base = target_to_host (tblscan, TARGET_FT_POINTER_SIZE (objfile),
2089			     GET_UNSIGNED, current_objfile);
2090      tblscan += TARGET_FT_POINTER_SIZE (objfile);
2091      base += baseaddr;
2092      while (tblscan < tblend)
2093	{
2094	  line = target_to_host (tblscan, SIZEOF_LINETBL_LINENO, GET_UNSIGNED,
2095				 current_objfile);
2096	  tblscan += SIZEOF_LINETBL_LINENO + SIZEOF_LINETBL_STMT;
2097	  pc = target_to_host (tblscan, SIZEOF_LINETBL_DELTA, GET_UNSIGNED,
2098			       current_objfile);
2099	  tblscan += SIZEOF_LINETBL_DELTA;
2100	  pc += base;
2101	  if (line != 0)
2102	    {
2103	      record_line (current_subfile, line, pc);
2104	    }
2105	}
2106    }
2107}
2108
2109/*
2110
2111   LOCAL FUNCTION
2112
2113   locval -- compute the value of a location attribute
2114
2115   SYNOPSIS
2116
2117   static int locval (struct dieinfo *dip)
2118
2119   DESCRIPTION
2120
2121   Given pointer to a string of bytes that define a location, compute
2122   the location and return the value.
2123   A location description containing no atoms indicates that the
2124   object is optimized out. The optimized_out flag is set for those,
2125   the return value is meaningless.
2126
2127   When computing values involving the current value of the frame pointer,
2128   the value zero is used, which results in a value relative to the frame
2129   pointer, rather than the absolute value.  This is what GDB wants
2130   anyway.
2131
2132   When the result is a register number, the isreg flag is set, otherwise
2133   it is cleared.  This is a kludge until we figure out a better
2134   way to handle the problem.  Gdb's design does not mesh well with the
2135   DWARF notion of a location computing interpreter, which is a shame
2136   because the flexibility goes unused.
2137
2138   NOTES
2139
2140   Note that stack[0] is unused except as a default error return.
2141   Note that stack overflow is not yet handled.
2142 */
2143
2144static int
2145locval (struct dieinfo *dip)
2146{
2147  unsigned short nbytes;
2148  unsigned short locsize;
2149  auto long stack[64];
2150  int stacki;
2151  char *loc;
2152  char *end;
2153  int loc_atom_code;
2154  int loc_value_size;
2155
2156  loc = dip->at_location;
2157  nbytes = attribute_size (AT_location);
2158  locsize = target_to_host (loc, nbytes, GET_UNSIGNED, current_objfile);
2159  loc += nbytes;
2160  end = loc + locsize;
2161  stacki = 0;
2162  stack[stacki] = 0;
2163  dip->isreg = 0;
2164  dip->offreg = 0;
2165  dip->optimized_out = 1;
2166  loc_value_size = TARGET_FT_LONG_SIZE (current_objfile);
2167  while (loc < end)
2168    {
2169      dip->optimized_out = 0;
2170      loc_atom_code = target_to_host (loc, SIZEOF_LOC_ATOM_CODE, GET_UNSIGNED,
2171				      current_objfile);
2172      loc += SIZEOF_LOC_ATOM_CODE;
2173      switch (loc_atom_code)
2174	{
2175	case 0:
2176	  /* error */
2177	  loc = end;
2178	  break;
2179	case OP_REG:
2180	  /* push register (number) */
2181	  stack[++stacki]
2182	    = DWARF_REG_TO_REGNUM (target_to_host (loc, loc_value_size,
2183						   GET_UNSIGNED,
2184						   current_objfile));
2185	  loc += loc_value_size;
2186	  dip->isreg = 1;
2187	  break;
2188	case OP_BASEREG:
2189	  /* push value of register (number) */
2190	  /* Actually, we compute the value as if register has 0, so the
2191	     value ends up being the offset from that register.  */
2192	  dip->offreg = 1;
2193	  dip->basereg = target_to_host (loc, loc_value_size, GET_UNSIGNED,
2194					 current_objfile);
2195	  loc += loc_value_size;
2196	  stack[++stacki] = 0;
2197	  break;
2198	case OP_ADDR:
2199	  /* push address (relocated address) */
2200	  stack[++stacki] = target_to_host (loc, loc_value_size,
2201					    GET_UNSIGNED, current_objfile);
2202	  loc += loc_value_size;
2203	  break;
2204	case OP_CONST:
2205	  /* push constant (number)   FIXME: signed or unsigned! */
2206	  stack[++stacki] = target_to_host (loc, loc_value_size,
2207					    GET_SIGNED, current_objfile);
2208	  loc += loc_value_size;
2209	  break;
2210	case OP_DEREF2:
2211	  /* pop, deref and push 2 bytes (as a long) */
2212	  complaint (&symfile_complaints,
2213		     "DIE @ 0x%x \"%s\", OP_DEREF2 address 0x%lx not handled",
2214		     DIE_ID, DIE_NAME, stack[stacki]);
2215	  break;
2216	case OP_DEREF4:	/* pop, deref and push 4 bytes (as a long) */
2217	  complaint (&symfile_complaints,
2218		     "DIE @ 0x%x \"%s\", OP_DEREF4 address 0x%lx not handled",
2219		     DIE_ID, DIE_NAME, stack[stacki]);
2220	  break;
2221	case OP_ADD:		/* pop top 2 items, add, push result */
2222	  stack[stacki - 1] += stack[stacki];
2223	  stacki--;
2224	  break;
2225	}
2226    }
2227  return (stack[stacki]);
2228}
2229
2230/*
2231
2232   LOCAL FUNCTION
2233
2234   read_ofile_symtab -- build a full symtab entry from chunk of DIE's
2235
2236   SYNOPSIS
2237
2238   static void read_ofile_symtab (struct partial_symtab *pst)
2239
2240   DESCRIPTION
2241
2242   When expanding a partial symbol table entry to a full symbol table
2243   entry, this is the function that gets called to read in the symbols
2244   for the compilation unit.  A pointer to the newly constructed symtab,
2245   which is now the new first one on the objfile's symtab list, is
2246   stashed in the partial symbol table entry.
2247 */
2248
2249static void
2250read_ofile_symtab (struct partial_symtab *pst)
2251{
2252  struct cleanup *back_to;
2253  unsigned long lnsize;
2254  file_ptr foffset;
2255  bfd *abfd;
2256  char lnsizedata[SIZEOF_LINETBL_LENGTH];
2257
2258  abfd = pst->objfile->obfd;
2259  current_objfile = pst->objfile;
2260
2261  /* Allocate a buffer for the entire chunk of DIE's for this compilation
2262     unit, seek to the location in the file, and read in all the DIE's. */
2263
2264  diecount = 0;
2265  dbsize = DBLENGTH (pst);
2266  dbbase = xmalloc (dbsize);
2267  dbroff = DBROFF (pst);
2268  foffset = DBFOFF (pst) + dbroff;
2269  base_section_offsets = pst->section_offsets;
2270  baseaddr = ANOFFSET (pst->section_offsets, 0);
2271  if (bfd_seek (abfd, foffset, SEEK_SET) ||
2272      (bfd_bread (dbbase, dbsize, abfd) != dbsize))
2273    {
2274      xfree (dbbase);
2275      error ("can't read DWARF data");
2276    }
2277  back_to = make_cleanup (xfree, dbbase);
2278
2279  /* If there is a line number table associated with this compilation unit
2280     then read the size of this fragment in bytes, from the fragment itself.
2281     Allocate a buffer for the fragment and read it in for future
2282     processing. */
2283
2284  lnbase = NULL;
2285  if (LNFOFF (pst))
2286    {
2287      if (bfd_seek (abfd, LNFOFF (pst), SEEK_SET) ||
2288	  (bfd_bread (lnsizedata, sizeof (lnsizedata), abfd)
2289	   != sizeof (lnsizedata)))
2290	{
2291	  error ("can't read DWARF line number table size");
2292	}
2293      lnsize = target_to_host (lnsizedata, SIZEOF_LINETBL_LENGTH,
2294			       GET_UNSIGNED, pst->objfile);
2295      lnbase = xmalloc (lnsize);
2296      if (bfd_seek (abfd, LNFOFF (pst), SEEK_SET) ||
2297	  (bfd_bread (lnbase, lnsize, abfd) != lnsize))
2298	{
2299	  xfree (lnbase);
2300	  error ("can't read DWARF line numbers");
2301	}
2302      make_cleanup (xfree, lnbase);
2303    }
2304
2305  process_dies (dbbase, dbbase + dbsize, pst->objfile);
2306  do_cleanups (back_to);
2307  current_objfile = NULL;
2308  pst->symtab = pst->objfile->symtabs;
2309}
2310
2311/*
2312
2313   LOCAL FUNCTION
2314
2315   psymtab_to_symtab_1 -- do grunt work for building a full symtab entry
2316
2317   SYNOPSIS
2318
2319   static void psymtab_to_symtab_1 (struct partial_symtab *pst)
2320
2321   DESCRIPTION
2322
2323   Called once for each partial symbol table entry that needs to be
2324   expanded into a full symbol table entry.
2325
2326 */
2327
2328static void
2329psymtab_to_symtab_1 (struct partial_symtab *pst)
2330{
2331  int i;
2332  struct cleanup *old_chain;
2333
2334  if (pst != NULL)
2335    {
2336      if (pst->readin)
2337	{
2338	  warning ("psymtab for %s already read in.  Shouldn't happen.",
2339		   pst->filename);
2340	}
2341      else
2342	{
2343	  /* Read in all partial symtabs on which this one is dependent */
2344	  for (i = 0; i < pst->number_of_dependencies; i++)
2345	    {
2346	      if (!pst->dependencies[i]->readin)
2347		{
2348		  /* Inform about additional files that need to be read in. */
2349		  if (info_verbose)
2350		    {
2351		      fputs_filtered (" ", gdb_stdout);
2352		      wrap_here ("");
2353		      fputs_filtered ("and ", gdb_stdout);
2354		      wrap_here ("");
2355		      printf_filtered ("%s...",
2356				       pst->dependencies[i]->filename);
2357		      wrap_here ("");
2358		      gdb_flush (gdb_stdout);	/* Flush output */
2359		    }
2360		  psymtab_to_symtab_1 (pst->dependencies[i]);
2361		}
2362	    }
2363	  if (DBLENGTH (pst))	/* Otherwise it's a dummy */
2364	    {
2365	      buildsym_init ();
2366	      old_chain = make_cleanup (really_free_pendings, 0);
2367	      read_ofile_symtab (pst);
2368	      if (info_verbose)
2369		{
2370		  printf_filtered ("%d DIE's, sorting...", diecount);
2371		  wrap_here ("");
2372		  gdb_flush (gdb_stdout);
2373		}
2374	      do_cleanups (old_chain);
2375	    }
2376	  pst->readin = 1;
2377	}
2378    }
2379}
2380
2381/*
2382
2383   LOCAL FUNCTION
2384
2385   dwarf_psymtab_to_symtab -- build a full symtab entry from partial one
2386
2387   SYNOPSIS
2388
2389   static void dwarf_psymtab_to_symtab (struct partial_symtab *pst)
2390
2391   DESCRIPTION
2392
2393   This is the DWARF support entry point for building a full symbol
2394   table entry from a partial symbol table entry.  We are passed a
2395   pointer to the partial symbol table entry that needs to be expanded.
2396
2397 */
2398
2399static void
2400dwarf_psymtab_to_symtab (struct partial_symtab *pst)
2401{
2402
2403  if (pst != NULL)
2404    {
2405      if (pst->readin)
2406	{
2407	  warning ("psymtab for %s already read in.  Shouldn't happen.",
2408		   pst->filename);
2409	}
2410      else
2411	{
2412	  if (DBLENGTH (pst) || pst->number_of_dependencies)
2413	    {
2414	      /* Print the message now, before starting serious work, to avoid
2415	         disconcerting pauses.  */
2416	      if (info_verbose)
2417		{
2418		  printf_filtered ("Reading in symbols for %s...",
2419				   pst->filename);
2420		  gdb_flush (gdb_stdout);
2421		}
2422
2423	      psymtab_to_symtab_1 (pst);
2424
2425#if 0				/* FIXME:  Check to see what dbxread is doing here and see if
2426				   we need to do an equivalent or is this something peculiar to
2427				   stabs/a.out format.
2428				   Match with global symbols.  This only needs to be done once,
2429				   after all of the symtabs and dependencies have been read in.
2430				 */
2431	      scan_file_globals (pst->objfile);
2432#endif
2433
2434	      /* Finish up the verbose info message.  */
2435	      if (info_verbose)
2436		{
2437		  printf_filtered ("done.\n");
2438		  gdb_flush (gdb_stdout);
2439		}
2440	    }
2441	}
2442    }
2443}
2444
2445/*
2446
2447   LOCAL FUNCTION
2448
2449   add_enum_psymbol -- add enumeration members to partial symbol table
2450
2451   DESCRIPTION
2452
2453   Given pointer to a DIE that is known to be for an enumeration,
2454   extract the symbolic names of the enumeration members and add
2455   partial symbols for them.
2456 */
2457
2458static void
2459add_enum_psymbol (struct dieinfo *dip, struct objfile *objfile)
2460{
2461  char *scan;
2462  char *listend;
2463  unsigned short blocksz;
2464  int nbytes;
2465
2466  scan = dip->at_element_list;
2467  if (scan != NULL)
2468    {
2469      if (dip->short_element_list)
2470	{
2471	  nbytes = attribute_size (AT_short_element_list);
2472	}
2473      else
2474	{
2475	  nbytes = attribute_size (AT_element_list);
2476	}
2477      blocksz = target_to_host (scan, nbytes, GET_UNSIGNED, objfile);
2478      scan += nbytes;
2479      listend = scan + blocksz;
2480      while (scan < listend)
2481	{
2482	  scan += TARGET_FT_LONG_SIZE (objfile);
2483	  add_psymbol_to_list (scan, strlen (scan), VAR_DOMAIN, LOC_CONST,
2484			       &objfile->static_psymbols, 0, 0, cu_language,
2485			       objfile);
2486	  scan += strlen (scan) + 1;
2487	}
2488    }
2489}
2490
2491/*
2492
2493   LOCAL FUNCTION
2494
2495   add_partial_symbol -- add symbol to partial symbol table
2496
2497   DESCRIPTION
2498
2499   Given a DIE, if it is one of the types that we want to
2500   add to a partial symbol table, finish filling in the die info
2501   and then add a partial symbol table entry for it.
2502
2503   NOTES
2504
2505   The caller must ensure that the DIE has a valid name attribute.
2506 */
2507
2508static void
2509add_partial_symbol (struct dieinfo *dip, struct objfile *objfile)
2510{
2511  switch (dip->die_tag)
2512    {
2513    case TAG_global_subroutine:
2514      add_psymbol_to_list (dip->at_name, strlen (dip->at_name),
2515			   VAR_DOMAIN, LOC_BLOCK,
2516			   &objfile->global_psymbols,
2517			   0, dip->at_low_pc, cu_language, objfile);
2518      break;
2519    case TAG_global_variable:
2520      add_psymbol_to_list (dip->at_name, strlen (dip->at_name),
2521			   VAR_DOMAIN, LOC_STATIC,
2522			   &objfile->global_psymbols,
2523			   0, 0, cu_language, objfile);
2524      break;
2525    case TAG_subroutine:
2526      add_psymbol_to_list (dip->at_name, strlen (dip->at_name),
2527			   VAR_DOMAIN, LOC_BLOCK,
2528			   &objfile->static_psymbols,
2529			   0, dip->at_low_pc, cu_language, objfile);
2530      break;
2531    case TAG_local_variable:
2532      add_psymbol_to_list (dip->at_name, strlen (dip->at_name),
2533			   VAR_DOMAIN, LOC_STATIC,
2534			   &objfile->static_psymbols,
2535			   0, 0, cu_language, objfile);
2536      break;
2537    case TAG_typedef:
2538      add_psymbol_to_list (dip->at_name, strlen (dip->at_name),
2539			   VAR_DOMAIN, LOC_TYPEDEF,
2540			   &objfile->static_psymbols,
2541			   0, 0, cu_language, objfile);
2542      break;
2543    case TAG_class_type:
2544    case TAG_structure_type:
2545    case TAG_union_type:
2546    case TAG_enumeration_type:
2547      /* Do not add opaque aggregate definitions to the psymtab.  */
2548      if (!dip->has_at_byte_size)
2549	break;
2550      add_psymbol_to_list (dip->at_name, strlen (dip->at_name),
2551			   STRUCT_DOMAIN, LOC_TYPEDEF,
2552			   &objfile->static_psymbols,
2553			   0, 0, cu_language, objfile);
2554      if (cu_language == language_cplus)
2555	{
2556	  /* For C++, these implicitly act as typedefs as well. */
2557	  add_psymbol_to_list (dip->at_name, strlen (dip->at_name),
2558			       VAR_DOMAIN, LOC_TYPEDEF,
2559			       &objfile->static_psymbols,
2560			       0, 0, cu_language, objfile);
2561	}
2562      break;
2563    }
2564}
2565/* *INDENT-OFF* */
2566/*
2567
2568LOCAL FUNCTION
2569
2570	scan_partial_symbols -- scan DIE's within a single compilation unit
2571
2572DESCRIPTION
2573
2574	Process the DIE's within a single compilation unit, looking for
2575	interesting DIE's that contribute to the partial symbol table entry
2576	for this compilation unit.
2577
2578NOTES
2579
2580	There are some DIE's that may appear both at file scope and within
2581	the scope of a function.  We are only interested in the ones at file
2582	scope, and the only way to tell them apart is to keep track of the
2583	scope.  For example, consider the test case:
2584
2585		static int i;
2586		main () { int j; }
2587
2588	for which the relevant DWARF segment has the structure:
2589
2590		0x51:
2591		0x23   global subrtn   sibling     0x9b
2592		                       name        main
2593		                       fund_type   FT_integer
2594		                       low_pc      0x800004cc
2595		                       high_pc     0x800004d4
2596
2597		0x74:
2598		0x23   local var       sibling     0x97
2599		                       name        j
2600		                       fund_type   FT_integer
2601		                       location    OP_BASEREG 0xe
2602		                                   OP_CONST 0xfffffffc
2603		                                   OP_ADD
2604		0x97:
2605		0x4
2606
2607		0x9b:
2608		0x1d   local var       sibling     0xb8
2609		                       name        i
2610		                       fund_type   FT_integer
2611		                       location    OP_ADDR 0x800025dc
2612
2613		0xb8:
2614		0x4
2615
2616	We want to include the symbol 'i' in the partial symbol table, but
2617	not the symbol 'j'.  In essence, we want to skip all the dies within
2618	the scope of a TAG_global_subroutine DIE.
2619
2620	Don't attempt to add anonymous structures or unions since they have
2621	no name.  Anonymous enumerations however are processed, because we
2622	want to extract their member names (the check for a tag name is
2623	done later).
2624
2625	Also, for variables and subroutines, check that this is the place
2626	where the actual definition occurs, rather than just a reference
2627	to an external.
2628 */
2629/* *INDENT-ON* */
2630
2631
2632
2633static void
2634scan_partial_symbols (char *thisdie, char *enddie, struct objfile *objfile)
2635{
2636  char *nextdie;
2637  char *temp;
2638  struct dieinfo di;
2639
2640  while (thisdie < enddie)
2641    {
2642      basicdieinfo (&di, thisdie, objfile);
2643      if (di.die_length < SIZEOF_DIE_LENGTH)
2644	{
2645	  break;
2646	}
2647      else
2648	{
2649	  nextdie = thisdie + di.die_length;
2650	  /* To avoid getting complete die information for every die, we
2651	     only do it (below) for the cases we are interested in. */
2652	  switch (di.die_tag)
2653	    {
2654	    case TAG_global_subroutine:
2655	    case TAG_subroutine:
2656	      completedieinfo (&di, objfile);
2657	      if (di.at_name && (di.has_at_low_pc || di.at_location))
2658		{
2659		  add_partial_symbol (&di, objfile);
2660		  /* If there is a sibling attribute, adjust the nextdie
2661		     pointer to skip the entire scope of the subroutine.
2662		     Apply some sanity checking to make sure we don't
2663		     overrun or underrun the range of remaining DIE's */
2664		  if (di.at_sibling != 0)
2665		    {
2666		      temp = dbbase + di.at_sibling - dbroff;
2667		      if ((temp < thisdie) || (temp >= enddie))
2668			{
2669			  bad_die_ref_complaint (DIE_ID, DIE_NAME,
2670						 di.at_sibling);
2671			}
2672		      else
2673			{
2674			  nextdie = temp;
2675			}
2676		    }
2677		}
2678	      break;
2679	    case TAG_global_variable:
2680	    case TAG_local_variable:
2681	      completedieinfo (&di, objfile);
2682	      if (di.at_name && (di.has_at_low_pc || di.at_location))
2683		{
2684		  add_partial_symbol (&di, objfile);
2685		}
2686	      break;
2687	    case TAG_typedef:
2688	    case TAG_class_type:
2689	    case TAG_structure_type:
2690	    case TAG_union_type:
2691	      completedieinfo (&di, objfile);
2692	      if (di.at_name)
2693		{
2694		  add_partial_symbol (&di, objfile);
2695		}
2696	      break;
2697	    case TAG_enumeration_type:
2698	      completedieinfo (&di, objfile);
2699	      if (di.at_name)
2700		{
2701		  add_partial_symbol (&di, objfile);
2702		}
2703	      add_enum_psymbol (&di, objfile);
2704	      break;
2705	    }
2706	}
2707      thisdie = nextdie;
2708    }
2709}
2710
2711/*
2712
2713   LOCAL FUNCTION
2714
2715   scan_compilation_units -- build a psymtab entry for each compilation
2716
2717   DESCRIPTION
2718
2719   This is the top level dwarf parsing routine for building partial
2720   symbol tables.
2721
2722   It scans from the beginning of the DWARF table looking for the first
2723   TAG_compile_unit DIE, and then follows the sibling chain to locate
2724   each additional TAG_compile_unit DIE.
2725
2726   For each TAG_compile_unit DIE it creates a partial symtab structure,
2727   calls a subordinate routine to collect all the compilation unit's
2728   global DIE's, file scope DIEs, typedef DIEs, etc, and then links the
2729   new partial symtab structure into the partial symbol table.  It also
2730   records the appropriate information in the partial symbol table entry
2731   to allow the chunk of DIE's and line number table for this compilation
2732   unit to be located and re-read later, to generate a complete symbol
2733   table entry for the compilation unit.
2734
2735   Thus it effectively partitions up a chunk of DIE's for multiple
2736   compilation units into smaller DIE chunks and line number tables,
2737   and associates them with a partial symbol table entry.
2738
2739   NOTES
2740
2741   If any compilation unit has no line number table associated with
2742   it for some reason (a missing at_stmt_list attribute, rather than
2743   just one with a value of zero, which is valid) then we ensure that
2744   the recorded file offset is zero so that the routine which later
2745   reads line number table fragments knows that there is no fragment
2746   to read.
2747
2748   RETURNS
2749
2750   Returns no value.
2751
2752 */
2753
2754static void
2755scan_compilation_units (char *thisdie, char *enddie, file_ptr dbfoff,
2756			file_ptr lnoffset, struct objfile *objfile)
2757{
2758  char *nextdie;
2759  struct dieinfo di;
2760  struct partial_symtab *pst;
2761  int culength;
2762  int curoff;
2763  file_ptr curlnoffset;
2764
2765  while (thisdie < enddie)
2766    {
2767      basicdieinfo (&di, thisdie, objfile);
2768      if (di.die_length < SIZEOF_DIE_LENGTH)
2769	{
2770	  break;
2771	}
2772      else if (di.die_tag != TAG_compile_unit)
2773	{
2774	  nextdie = thisdie + di.die_length;
2775	}
2776      else
2777	{
2778	  completedieinfo (&di, objfile);
2779	  set_cu_language (&di);
2780	  if (di.at_sibling != 0)
2781	    {
2782	      nextdie = dbbase + di.at_sibling - dbroff;
2783	    }
2784	  else
2785	    {
2786	      nextdie = thisdie + di.die_length;
2787	    }
2788	  curoff = thisdie - dbbase;
2789	  culength = nextdie - thisdie;
2790	  curlnoffset = di.has_at_stmt_list ? lnoffset + di.at_stmt_list : 0;
2791
2792	  /* First allocate a new partial symbol table structure */
2793
2794	  pst = start_psymtab_common (objfile, base_section_offsets,
2795				      di.at_name, di.at_low_pc,
2796				      objfile->global_psymbols.next,
2797				      objfile->static_psymbols.next);
2798
2799	  pst->texthigh = di.at_high_pc;
2800	  pst->read_symtab_private = (char *)
2801	    obstack_alloc (&objfile->objfile_obstack,
2802			   sizeof (struct dwfinfo));
2803	  DBFOFF (pst) = dbfoff;
2804	  DBROFF (pst) = curoff;
2805	  DBLENGTH (pst) = culength;
2806	  LNFOFF (pst) = curlnoffset;
2807	  pst->read_symtab = dwarf_psymtab_to_symtab;
2808
2809	  /* Now look for partial symbols */
2810
2811	  scan_partial_symbols (thisdie + di.die_length, nextdie, objfile);
2812
2813	  pst->n_global_syms = objfile->global_psymbols.next -
2814	    (objfile->global_psymbols.list + pst->globals_offset);
2815	  pst->n_static_syms = objfile->static_psymbols.next -
2816	    (objfile->static_psymbols.list + pst->statics_offset);
2817	  sort_pst_symbols (pst);
2818	  /* If there is already a psymtab or symtab for a file of this name,
2819	     remove it. (If there is a symtab, more drastic things also
2820	     happen.)  This happens in VxWorks.  */
2821	  free_named_symtabs (pst->filename);
2822	}
2823      thisdie = nextdie;
2824    }
2825}
2826
2827/*
2828
2829   LOCAL FUNCTION
2830
2831   new_symbol -- make a symbol table entry for a new symbol
2832
2833   SYNOPSIS
2834
2835   static struct symbol *new_symbol (struct dieinfo *dip,
2836   struct objfile *objfile)
2837
2838   DESCRIPTION
2839
2840   Given a pointer to a DWARF information entry, figure out if we need
2841   to make a symbol table entry for it, and if so, create a new entry
2842   and return a pointer to it.
2843 */
2844
2845static struct symbol *
2846new_symbol (struct dieinfo *dip, struct objfile *objfile)
2847{
2848  struct symbol *sym = NULL;
2849
2850  if (dip->at_name != NULL)
2851    {
2852      sym = (struct symbol *) obstack_alloc (&objfile->objfile_obstack,
2853					     sizeof (struct symbol));
2854      OBJSTAT (objfile, n_syms++);
2855      memset (sym, 0, sizeof (struct symbol));
2856      /* default assumptions */
2857      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
2858      SYMBOL_CLASS (sym) = LOC_STATIC;
2859      SYMBOL_TYPE (sym) = decode_die_type (dip);
2860
2861      /* If this symbol is from a C++ compilation, then attempt to cache the
2862         demangled form for future reference.  This is a typical time versus
2863         space tradeoff, that was decided in favor of time because it sped up
2864         C++ symbol lookups by a factor of about 20. */
2865
2866      SYMBOL_LANGUAGE (sym) = cu_language;
2867      SYMBOL_SET_NAMES (sym, dip->at_name, strlen (dip->at_name), objfile);
2868      switch (dip->die_tag)
2869	{
2870	case TAG_label:
2871	  SYMBOL_VALUE_ADDRESS (sym) = dip->at_low_pc;
2872	  SYMBOL_CLASS (sym) = LOC_LABEL;
2873	  break;
2874	case TAG_global_subroutine:
2875	case TAG_subroutine:
2876	  SYMBOL_VALUE_ADDRESS (sym) = dip->at_low_pc;
2877	  SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
2878	  if (dip->at_prototyped)
2879	    TYPE_FLAGS (SYMBOL_TYPE (sym)) |= TYPE_FLAG_PROTOTYPED;
2880	  SYMBOL_CLASS (sym) = LOC_BLOCK;
2881	  if (dip->die_tag == TAG_global_subroutine)
2882	    {
2883	      add_symbol_to_list (sym, &global_symbols);
2884	    }
2885	  else
2886	    {
2887	      add_symbol_to_list (sym, list_in_scope);
2888	    }
2889	  break;
2890	case TAG_global_variable:
2891	  if (dip->at_location != NULL)
2892	    {
2893	      SYMBOL_VALUE_ADDRESS (sym) = locval (dip);
2894	      add_symbol_to_list (sym, &global_symbols);
2895	      SYMBOL_CLASS (sym) = LOC_STATIC;
2896	      SYMBOL_VALUE (sym) += baseaddr;
2897	    }
2898	  break;
2899	case TAG_local_variable:
2900	  if (dip->at_location != NULL)
2901	    {
2902	      int loc = locval (dip);
2903	      if (dip->optimized_out)
2904		{
2905		  SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
2906		}
2907	      else if (dip->isreg)
2908		{
2909		  SYMBOL_CLASS (sym) = LOC_REGISTER;
2910		}
2911	      else if (dip->offreg)
2912		{
2913		  SYMBOL_CLASS (sym) = LOC_BASEREG;
2914		  SYMBOL_BASEREG (sym) = dip->basereg;
2915		}
2916	      else
2917		{
2918		  SYMBOL_CLASS (sym) = LOC_STATIC;
2919		  SYMBOL_VALUE (sym) += baseaddr;
2920		}
2921	      if (SYMBOL_CLASS (sym) == LOC_STATIC)
2922		{
2923		  /* LOC_STATIC address class MUST use SYMBOL_VALUE_ADDRESS,
2924		     which may store to a bigger location than SYMBOL_VALUE. */
2925		  SYMBOL_VALUE_ADDRESS (sym) = loc;
2926		}
2927	      else
2928		{
2929		  SYMBOL_VALUE (sym) = loc;
2930		}
2931	      add_symbol_to_list (sym, list_in_scope);
2932	    }
2933	  break;
2934	case TAG_formal_parameter:
2935	  if (dip->at_location != NULL)
2936	    {
2937	      SYMBOL_VALUE (sym) = locval (dip);
2938	    }
2939	  add_symbol_to_list (sym, list_in_scope);
2940	  if (dip->isreg)
2941	    {
2942	      SYMBOL_CLASS (sym) = LOC_REGPARM;
2943	    }
2944	  else if (dip->offreg)
2945	    {
2946	      SYMBOL_CLASS (sym) = LOC_BASEREG_ARG;
2947	      SYMBOL_BASEREG (sym) = dip->basereg;
2948	    }
2949	  else
2950	    {
2951	      SYMBOL_CLASS (sym) = LOC_ARG;
2952	    }
2953	  break;
2954	case TAG_unspecified_parameters:
2955	  /* From varargs functions; gdb doesn't seem to have any interest in
2956	     this information, so just ignore it for now. (FIXME?) */
2957	  break;
2958	case TAG_class_type:
2959	case TAG_structure_type:
2960	case TAG_union_type:
2961	case TAG_enumeration_type:
2962	  SYMBOL_CLASS (sym) = LOC_TYPEDEF;
2963	  SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
2964	  add_symbol_to_list (sym, list_in_scope);
2965	  break;
2966	case TAG_typedef:
2967	  SYMBOL_CLASS (sym) = LOC_TYPEDEF;
2968	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
2969	  add_symbol_to_list (sym, list_in_scope);
2970	  break;
2971	default:
2972	  /* Not a tag we recognize.  Hopefully we aren't processing trash
2973	     data, but since we must specifically ignore things we don't
2974	     recognize, there is nothing else we should do at this point. */
2975	  break;
2976	}
2977    }
2978  return (sym);
2979}
2980
2981/*
2982
2983   LOCAL FUNCTION
2984
2985   synthesize_typedef -- make a symbol table entry for a "fake" typedef
2986
2987   SYNOPSIS
2988
2989   static void synthesize_typedef (struct dieinfo *dip,
2990   struct objfile *objfile,
2991   struct type *type);
2992
2993   DESCRIPTION
2994
2995   Given a pointer to a DWARF information entry, synthesize a typedef
2996   for the name in the DIE, using the specified type.
2997
2998   This is used for C++ class, structs, unions, and enumerations to
2999   set up the tag name as a type.
3000
3001 */
3002
3003static void
3004synthesize_typedef (struct dieinfo *dip, struct objfile *objfile,
3005		    struct type *type)
3006{
3007  struct symbol *sym = NULL;
3008
3009  if (dip->at_name != NULL)
3010    {
3011      sym = (struct symbol *)
3012	obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
3013      OBJSTAT (objfile, n_syms++);
3014      memset (sym, 0, sizeof (struct symbol));
3015      DEPRECATED_SYMBOL_NAME (sym) = create_name (dip->at_name,
3016				       &objfile->objfile_obstack);
3017      SYMBOL_INIT_LANGUAGE_SPECIFIC (sym, cu_language);
3018      SYMBOL_TYPE (sym) = type;
3019      SYMBOL_CLASS (sym) = LOC_TYPEDEF;
3020      SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
3021      add_symbol_to_list (sym, list_in_scope);
3022    }
3023}
3024
3025/*
3026
3027   LOCAL FUNCTION
3028
3029   decode_mod_fund_type -- decode a modified fundamental type
3030
3031   SYNOPSIS
3032
3033   static struct type *decode_mod_fund_type (char *typedata)
3034
3035   DESCRIPTION
3036
3037   Decode a block of data containing a modified fundamental
3038   type specification.  TYPEDATA is a pointer to the block,
3039   which starts with a length containing the size of the rest
3040   of the block.  At the end of the block is a fundmental type
3041   code value that gives the fundamental type.  Everything
3042   in between are type modifiers.
3043
3044   We simply compute the number of modifiers and call the general
3045   function decode_modified_type to do the actual work.
3046 */
3047
3048static struct type *
3049decode_mod_fund_type (char *typedata)
3050{
3051  struct type *typep = NULL;
3052  unsigned short modcount;
3053  int nbytes;
3054
3055  /* Get the total size of the block, exclusive of the size itself */
3056
3057  nbytes = attribute_size (AT_mod_fund_type);
3058  modcount = target_to_host (typedata, nbytes, GET_UNSIGNED, current_objfile);
3059  typedata += nbytes;
3060
3061  /* Deduct the size of the fundamental type bytes at the end of the block. */
3062
3063  modcount -= attribute_size (AT_fund_type);
3064
3065  /* Now do the actual decoding */
3066
3067  typep = decode_modified_type (typedata, modcount, AT_mod_fund_type);
3068  return (typep);
3069}
3070
3071/*
3072
3073   LOCAL FUNCTION
3074
3075   decode_mod_u_d_type -- decode a modified user defined type
3076
3077   SYNOPSIS
3078
3079   static struct type *decode_mod_u_d_type (char *typedata)
3080
3081   DESCRIPTION
3082
3083   Decode a block of data containing a modified user defined
3084   type specification.  TYPEDATA is a pointer to the block,
3085   which consists of a two byte length, containing the size
3086   of the rest of the block.  At the end of the block is a
3087   four byte value that gives a reference to a user defined type.
3088   Everything in between are type modifiers.
3089
3090   We simply compute the number of modifiers and call the general
3091   function decode_modified_type to do the actual work.
3092 */
3093
3094static struct type *
3095decode_mod_u_d_type (char *typedata)
3096{
3097  struct type *typep = NULL;
3098  unsigned short modcount;
3099  int nbytes;
3100
3101  /* Get the total size of the block, exclusive of the size itself */
3102
3103  nbytes = attribute_size (AT_mod_u_d_type);
3104  modcount = target_to_host (typedata, nbytes, GET_UNSIGNED, current_objfile);
3105  typedata += nbytes;
3106
3107  /* Deduct the size of the reference type bytes at the end of the block. */
3108
3109  modcount -= attribute_size (AT_user_def_type);
3110
3111  /* Now do the actual decoding */
3112
3113  typep = decode_modified_type (typedata, modcount, AT_mod_u_d_type);
3114  return (typep);
3115}
3116
3117/*
3118
3119   LOCAL FUNCTION
3120
3121   decode_modified_type -- decode modified user or fundamental type
3122
3123   SYNOPSIS
3124
3125   static struct type *decode_modified_type (char *modifiers,
3126   unsigned short modcount, int mtype)
3127
3128   DESCRIPTION
3129
3130   Decode a modified type, either a modified fundamental type or
3131   a modified user defined type.  MODIFIERS is a pointer to the
3132   block of bytes that define MODCOUNT modifiers.  Immediately
3133   following the last modifier is a short containing the fundamental
3134   type or a long containing the reference to the user defined
3135   type.  Which one is determined by MTYPE, which is either
3136   AT_mod_fund_type or AT_mod_u_d_type to indicate what modified
3137   type we are generating.
3138
3139   We call ourself recursively to generate each modified type,`
3140   until MODCOUNT reaches zero, at which point we have consumed
3141   all the modifiers and generate either the fundamental type or
3142   user defined type.  When the recursion unwinds, each modifier
3143   is applied in turn to generate the full modified type.
3144
3145   NOTES
3146
3147   If we find a modifier that we don't recognize, and it is not one
3148   of those reserved for application specific use, then we issue a
3149   warning and simply ignore the modifier.
3150
3151   BUGS
3152
3153   We currently ignore MOD_const and MOD_volatile.  (FIXME)
3154
3155 */
3156
3157static struct type *
3158decode_modified_type (char *modifiers, unsigned int modcount, int mtype)
3159{
3160  struct type *typep = NULL;
3161  unsigned short fundtype;
3162  DIE_REF die_ref;
3163  char modifier;
3164  int nbytes;
3165
3166  if (modcount == 0)
3167    {
3168      switch (mtype)
3169	{
3170	case AT_mod_fund_type:
3171	  nbytes = attribute_size (AT_fund_type);
3172	  fundtype = target_to_host (modifiers, nbytes, GET_UNSIGNED,
3173				     current_objfile);
3174	  typep = decode_fund_type (fundtype);
3175	  break;
3176	case AT_mod_u_d_type:
3177	  nbytes = attribute_size (AT_user_def_type);
3178	  die_ref = target_to_host (modifiers, nbytes, GET_UNSIGNED,
3179				    current_objfile);
3180	  typep = lookup_utype (die_ref);
3181	  if (typep == NULL)
3182	    {
3183	      typep = alloc_utype (die_ref, NULL);
3184	    }
3185	  break;
3186	default:
3187	  complaint (&symfile_complaints,
3188		     "DIE @ 0x%x \"%s\", botched modified type decoding (mtype 0x%x)",
3189		     DIE_ID, DIE_NAME, mtype);
3190	  typep = dwarf_fundamental_type (current_objfile, FT_INTEGER);
3191	  break;
3192	}
3193    }
3194  else
3195    {
3196      modifier = *modifiers++;
3197      typep = decode_modified_type (modifiers, --modcount, mtype);
3198      switch (modifier)
3199	{
3200	case MOD_pointer_to:
3201	  typep = lookup_pointer_type (typep);
3202	  break;
3203	case MOD_reference_to:
3204	  typep = lookup_reference_type (typep);
3205	  break;
3206	case MOD_const:
3207	  complaint (&symfile_complaints,
3208		     "DIE @ 0x%x \"%s\", type modifier 'const' ignored", DIE_ID,
3209		     DIE_NAME);	/* FIXME */
3210	  break;
3211	case MOD_volatile:
3212	  complaint (&symfile_complaints,
3213		     "DIE @ 0x%x \"%s\", type modifier 'volatile' ignored",
3214		     DIE_ID, DIE_NAME);	/* FIXME */
3215	  break;
3216	default:
3217	  if (!(MOD_lo_user <= (unsigned char) modifier))
3218#if 0
3219/* This part of the test would always be true, and it triggers a compiler
3220   warning.  */
3221		&& (unsigned char) modifier <= MOD_hi_user))
3222#endif
3223	    {
3224	      complaint (&symfile_complaints,
3225			 "DIE @ 0x%x \"%s\", unknown type modifier %u", DIE_ID,
3226			 DIE_NAME, modifier);
3227	    }
3228	  break;
3229	}
3230    }
3231  return (typep);
3232}
3233
3234/*
3235
3236   LOCAL FUNCTION
3237
3238   decode_fund_type -- translate basic DWARF type to gdb base type
3239
3240   DESCRIPTION
3241
3242   Given an integer that is one of the fundamental DWARF types,
3243   translate it to one of the basic internal gdb types and return
3244   a pointer to the appropriate gdb type (a "struct type *").
3245
3246   NOTES
3247
3248   For robustness, if we are asked to translate a fundamental
3249   type that we are unprepared to deal with, we return int so
3250   callers can always depend upon a valid type being returned,
3251   and so gdb may at least do something reasonable by default.
3252   If the type is not in the range of those types defined as
3253   application specific types, we also issue a warning.
3254 */
3255
3256static struct type *
3257decode_fund_type (unsigned int fundtype)
3258{
3259  struct type *typep = NULL;
3260
3261  switch (fundtype)
3262    {
3263
3264    case FT_void:
3265      typep = dwarf_fundamental_type (current_objfile, FT_VOID);
3266      break;
3267
3268    case FT_boolean:		/* Was FT_set in AT&T version */
3269      typep = dwarf_fundamental_type (current_objfile, FT_BOOLEAN);
3270      break;
3271
3272    case FT_pointer:		/* (void *) */
3273      typep = dwarf_fundamental_type (current_objfile, FT_VOID);
3274      typep = lookup_pointer_type (typep);
3275      break;
3276
3277    case FT_char:
3278      typep = dwarf_fundamental_type (current_objfile, FT_CHAR);
3279      break;
3280
3281    case FT_signed_char:
3282      typep = dwarf_fundamental_type (current_objfile, FT_SIGNED_CHAR);
3283      break;
3284
3285    case FT_unsigned_char:
3286      typep = dwarf_fundamental_type (current_objfile, FT_UNSIGNED_CHAR);
3287      break;
3288
3289    case FT_short:
3290      typep = dwarf_fundamental_type (current_objfile, FT_SHORT);
3291      break;
3292
3293    case FT_signed_short:
3294      typep = dwarf_fundamental_type (current_objfile, FT_SIGNED_SHORT);
3295      break;
3296
3297    case FT_unsigned_short:
3298      typep = dwarf_fundamental_type (current_objfile, FT_UNSIGNED_SHORT);
3299      break;
3300
3301    case FT_integer:
3302      typep = dwarf_fundamental_type (current_objfile, FT_INTEGER);
3303      break;
3304
3305    case FT_signed_integer:
3306      typep = dwarf_fundamental_type (current_objfile, FT_SIGNED_INTEGER);
3307      break;
3308
3309    case FT_unsigned_integer:
3310      typep = dwarf_fundamental_type (current_objfile, FT_UNSIGNED_INTEGER);
3311      break;
3312
3313    case FT_long:
3314      typep = dwarf_fundamental_type (current_objfile, FT_LONG);
3315      break;
3316
3317    case FT_signed_long:
3318      typep = dwarf_fundamental_type (current_objfile, FT_SIGNED_LONG);
3319      break;
3320
3321    case FT_unsigned_long:
3322      typep = dwarf_fundamental_type (current_objfile, FT_UNSIGNED_LONG);
3323      break;
3324
3325    case FT_long_long:
3326      typep = dwarf_fundamental_type (current_objfile, FT_LONG_LONG);
3327      break;
3328
3329    case FT_signed_long_long:
3330      typep = dwarf_fundamental_type (current_objfile, FT_SIGNED_LONG_LONG);
3331      break;
3332
3333    case FT_unsigned_long_long:
3334      typep = dwarf_fundamental_type (current_objfile, FT_UNSIGNED_LONG_LONG);
3335      break;
3336
3337    case FT_float:
3338      typep = dwarf_fundamental_type (current_objfile, FT_FLOAT);
3339      break;
3340
3341    case FT_dbl_prec_float:
3342      typep = dwarf_fundamental_type (current_objfile, FT_DBL_PREC_FLOAT);
3343      break;
3344
3345    case FT_ext_prec_float:
3346      typep = dwarf_fundamental_type (current_objfile, FT_EXT_PREC_FLOAT);
3347      break;
3348
3349    case FT_complex:
3350      typep = dwarf_fundamental_type (current_objfile, FT_COMPLEX);
3351      break;
3352
3353    case FT_dbl_prec_complex:
3354      typep = dwarf_fundamental_type (current_objfile, FT_DBL_PREC_COMPLEX);
3355      break;
3356
3357    case FT_ext_prec_complex:
3358      typep = dwarf_fundamental_type (current_objfile, FT_EXT_PREC_COMPLEX);
3359      break;
3360
3361    }
3362
3363  if (typep == NULL)
3364    {
3365      typep = dwarf_fundamental_type (current_objfile, FT_INTEGER);
3366      if (!(FT_lo_user <= fundtype && fundtype <= FT_hi_user))
3367	{
3368	  complaint (&symfile_complaints,
3369		     "DIE @ 0x%x \"%s\", unexpected fundamental type 0x%x",
3370		     DIE_ID, DIE_NAME, fundtype);
3371	}
3372    }
3373
3374  return (typep);
3375}
3376
3377/*
3378
3379   LOCAL FUNCTION
3380
3381   create_name -- allocate a fresh copy of a string on an obstack
3382
3383   DESCRIPTION
3384
3385   Given a pointer to a string and a pointer to an obstack, allocates
3386   a fresh copy of the string on the specified obstack.
3387
3388 */
3389
3390static char *
3391create_name (char *name, struct obstack *obstackp)
3392{
3393  int length;
3394  char *newname;
3395
3396  length = strlen (name) + 1;
3397  newname = (char *) obstack_alloc (obstackp, length);
3398  strcpy (newname, name);
3399  return (newname);
3400}
3401
3402/*
3403
3404   LOCAL FUNCTION
3405
3406   basicdieinfo -- extract the minimal die info from raw die data
3407
3408   SYNOPSIS
3409
3410   void basicdieinfo (char *diep, struct dieinfo *dip,
3411   struct objfile *objfile)
3412
3413   DESCRIPTION
3414
3415   Given a pointer to raw DIE data, and a pointer to an instance of a
3416   die info structure, this function extracts the basic information
3417   from the DIE data required to continue processing this DIE, along
3418   with some bookkeeping information about the DIE.
3419
3420   The information we absolutely must have includes the DIE tag,
3421   and the DIE length.  If we need the sibling reference, then we
3422   will have to call completedieinfo() to process all the remaining
3423   DIE information.
3424
3425   Note that since there is no guarantee that the data is properly
3426   aligned in memory for the type of access required (indirection
3427   through anything other than a char pointer), and there is no
3428   guarantee that it is in the same byte order as the gdb host,
3429   we call a function which deals with both alignment and byte
3430   swapping issues.  Possibly inefficient, but quite portable.
3431
3432   We also take care of some other basic things at this point, such
3433   as ensuring that the instance of the die info structure starts
3434   out completely zero'd and that curdie is initialized for use
3435   in error reporting if we have a problem with the current die.
3436
3437   NOTES
3438
3439   All DIE's must have at least a valid length, thus the minimum
3440   DIE size is SIZEOF_DIE_LENGTH.  In order to have a valid tag, the
3441   DIE size must be at least SIZEOF_DIE_TAG larger, otherwise they
3442   are forced to be TAG_padding DIES.
3443
3444   Padding DIES must be at least SIZEOF_DIE_LENGTH in length, implying
3445   that if a padding DIE is used for alignment and the amount needed is
3446   less than SIZEOF_DIE_LENGTH, then the padding DIE has to be big
3447   enough to align to the next alignment boundry.
3448
3449   We do some basic sanity checking here, such as verifying that the
3450   length of the die would not cause it to overrun the recorded end of
3451   the buffer holding the DIE info.  If we find a DIE that is either
3452   too small or too large, we force it's length to zero which should
3453   cause the caller to take appropriate action.
3454 */
3455
3456static void
3457basicdieinfo (struct dieinfo *dip, char *diep, struct objfile *objfile)
3458{
3459  curdie = dip;
3460  memset (dip, 0, sizeof (struct dieinfo));
3461  dip->die = diep;
3462  dip->die_ref = dbroff + (diep - dbbase);
3463  dip->die_length = target_to_host (diep, SIZEOF_DIE_LENGTH, GET_UNSIGNED,
3464				    objfile);
3465  if ((dip->die_length < SIZEOF_DIE_LENGTH) ||
3466      ((diep + dip->die_length) > (dbbase + dbsize)))
3467    {
3468      complaint (&symfile_complaints,
3469		 "DIE @ 0x%x \"%s\", malformed DIE, bad length (%ld bytes)",
3470		 DIE_ID, DIE_NAME, dip->die_length);
3471      dip->die_length = 0;
3472    }
3473  else if (dip->die_length < (SIZEOF_DIE_LENGTH + SIZEOF_DIE_TAG))
3474    {
3475      dip->die_tag = TAG_padding;
3476    }
3477  else
3478    {
3479      diep += SIZEOF_DIE_LENGTH;
3480      dip->die_tag = target_to_host (diep, SIZEOF_DIE_TAG, GET_UNSIGNED,
3481				     objfile);
3482    }
3483}
3484
3485/*
3486
3487   LOCAL FUNCTION
3488
3489   completedieinfo -- finish reading the information for a given DIE
3490
3491   SYNOPSIS
3492
3493   void completedieinfo (struct dieinfo *dip, struct objfile *objfile)
3494
3495   DESCRIPTION
3496
3497   Given a pointer to an already partially initialized die info structure,
3498   scan the raw DIE data and finish filling in the die info structure
3499   from the various attributes found.
3500
3501   Note that since there is no guarantee that the data is properly
3502   aligned in memory for the type of access required (indirection
3503   through anything other than a char pointer), and there is no
3504   guarantee that it is in the same byte order as the gdb host,
3505   we call a function which deals with both alignment and byte
3506   swapping issues.  Possibly inefficient, but quite portable.
3507
3508   NOTES
3509
3510   Each time we are called, we increment the diecount variable, which
3511   keeps an approximate count of the number of dies processed for
3512   each compilation unit.  This information is presented to the user
3513   if the info_verbose flag is set.
3514
3515 */
3516
3517static void
3518completedieinfo (struct dieinfo *dip, struct objfile *objfile)
3519{
3520  char *diep;			/* Current pointer into raw DIE data */
3521  char *end;			/* Terminate DIE scan here */
3522  unsigned short attr;		/* Current attribute being scanned */
3523  unsigned short form;		/* Form of the attribute */
3524  int nbytes;			/* Size of next field to read */
3525
3526  diecount++;
3527  diep = dip->die;
3528  end = diep + dip->die_length;
3529  diep += SIZEOF_DIE_LENGTH + SIZEOF_DIE_TAG;
3530  while (diep < end)
3531    {
3532      attr = target_to_host (diep, SIZEOF_ATTRIBUTE, GET_UNSIGNED, objfile);
3533      diep += SIZEOF_ATTRIBUTE;
3534      nbytes = attribute_size (attr);
3535      if (nbytes == -1)
3536	{
3537	  complaint (&symfile_complaints,
3538		     "DIE @ 0x%x \"%s\", unknown attribute length, skipped remaining attributes",
3539		     DIE_ID, DIE_NAME);
3540	  diep = end;
3541	  continue;
3542	}
3543      switch (attr)
3544	{
3545	case AT_fund_type:
3546	  dip->at_fund_type = target_to_host (diep, nbytes, GET_UNSIGNED,
3547					      objfile);
3548	  break;
3549	case AT_ordering:
3550	  dip->at_ordering = target_to_host (diep, nbytes, GET_UNSIGNED,
3551					     objfile);
3552	  break;
3553	case AT_bit_offset:
3554	  dip->at_bit_offset = target_to_host (diep, nbytes, GET_UNSIGNED,
3555					       objfile);
3556	  break;
3557	case AT_sibling:
3558	  dip->at_sibling = target_to_host (diep, nbytes, GET_UNSIGNED,
3559					    objfile);
3560	  break;
3561	case AT_stmt_list:
3562	  dip->at_stmt_list = target_to_host (diep, nbytes, GET_UNSIGNED,
3563					      objfile);
3564	  dip->has_at_stmt_list = 1;
3565	  break;
3566	case AT_low_pc:
3567	  dip->at_low_pc = target_to_host (diep, nbytes, GET_UNSIGNED,
3568					   objfile);
3569	  dip->at_low_pc += baseaddr;
3570	  dip->has_at_low_pc = 1;
3571	  break;
3572	case AT_high_pc:
3573	  dip->at_high_pc = target_to_host (diep, nbytes, GET_UNSIGNED,
3574					    objfile);
3575	  dip->at_high_pc += baseaddr;
3576	  break;
3577	case AT_language:
3578	  dip->at_language = target_to_host (diep, nbytes, GET_UNSIGNED,
3579					     objfile);
3580	  break;
3581	case AT_user_def_type:
3582	  dip->at_user_def_type = target_to_host (diep, nbytes,
3583						  GET_UNSIGNED, objfile);
3584	  break;
3585	case AT_byte_size:
3586	  dip->at_byte_size = target_to_host (diep, nbytes, GET_UNSIGNED,
3587					      objfile);
3588	  dip->has_at_byte_size = 1;
3589	  break;
3590	case AT_bit_size:
3591	  dip->at_bit_size = target_to_host (diep, nbytes, GET_UNSIGNED,
3592					     objfile);
3593	  break;
3594	case AT_member:
3595	  dip->at_member = target_to_host (diep, nbytes, GET_UNSIGNED,
3596					   objfile);
3597	  break;
3598	case AT_discr:
3599	  dip->at_discr = target_to_host (diep, nbytes, GET_UNSIGNED,
3600					  objfile);
3601	  break;
3602	case AT_location:
3603	  dip->at_location = diep;
3604	  break;
3605	case AT_mod_fund_type:
3606	  dip->at_mod_fund_type = diep;
3607	  break;
3608	case AT_subscr_data:
3609	  dip->at_subscr_data = diep;
3610	  break;
3611	case AT_mod_u_d_type:
3612	  dip->at_mod_u_d_type = diep;
3613	  break;
3614	case AT_element_list:
3615	  dip->at_element_list = diep;
3616	  dip->short_element_list = 0;
3617	  break;
3618	case AT_short_element_list:
3619	  dip->at_element_list = diep;
3620	  dip->short_element_list = 1;
3621	  break;
3622	case AT_discr_value:
3623	  dip->at_discr_value = diep;
3624	  break;
3625	case AT_string_length:
3626	  dip->at_string_length = diep;
3627	  break;
3628	case AT_name:
3629	  dip->at_name = diep;
3630	  break;
3631	case AT_comp_dir:
3632	  /* For now, ignore any "hostname:" portion, since gdb doesn't
3633	     know how to deal with it.  (FIXME). */
3634	  dip->at_comp_dir = strrchr (diep, ':');
3635	  if (dip->at_comp_dir != NULL)
3636	    {
3637	      dip->at_comp_dir++;
3638	    }
3639	  else
3640	    {
3641	      dip->at_comp_dir = diep;
3642	    }
3643	  break;
3644	case AT_producer:
3645	  dip->at_producer = diep;
3646	  break;
3647	case AT_start_scope:
3648	  dip->at_start_scope = target_to_host (diep, nbytes, GET_UNSIGNED,
3649						objfile);
3650	  break;
3651	case AT_stride_size:
3652	  dip->at_stride_size = target_to_host (diep, nbytes, GET_UNSIGNED,
3653						objfile);
3654	  break;
3655	case AT_src_info:
3656	  dip->at_src_info = target_to_host (diep, nbytes, GET_UNSIGNED,
3657					     objfile);
3658	  break;
3659	case AT_prototyped:
3660	  dip->at_prototyped = diep;
3661	  break;
3662	default:
3663	  /* Found an attribute that we are unprepared to handle.  However
3664	     it is specifically one of the design goals of DWARF that
3665	     consumers should ignore unknown attributes.  As long as the
3666	     form is one that we recognize (so we know how to skip it),
3667	     we can just ignore the unknown attribute. */
3668	  break;
3669	}
3670      form = FORM_FROM_ATTR (attr);
3671      switch (form)
3672	{
3673	case FORM_DATA2:
3674	  diep += 2;
3675	  break;
3676	case FORM_DATA4:
3677	case FORM_REF:
3678	  diep += 4;
3679	  break;
3680	case FORM_DATA8:
3681	  diep += 8;
3682	  break;
3683	case FORM_ADDR:
3684	  diep += TARGET_FT_POINTER_SIZE (objfile);
3685	  break;
3686	case FORM_BLOCK2:
3687	  diep += 2 + target_to_host (diep, nbytes, GET_UNSIGNED, objfile);
3688	  break;
3689	case FORM_BLOCK4:
3690	  diep += 4 + target_to_host (diep, nbytes, GET_UNSIGNED, objfile);
3691	  break;
3692	case FORM_STRING:
3693	  diep += strlen (diep) + 1;
3694	  break;
3695	default:
3696	  unknown_attribute_form_complaint (DIE_ID, DIE_NAME, form);
3697	  diep = end;
3698	  break;
3699	}
3700    }
3701}
3702
3703/*
3704
3705   LOCAL FUNCTION
3706
3707   target_to_host -- swap in target data to host
3708
3709   SYNOPSIS
3710
3711   target_to_host (char *from, int nbytes, int signextend,
3712   struct objfile *objfile)
3713
3714   DESCRIPTION
3715
3716   Given pointer to data in target format in FROM, a byte count for
3717   the size of the data in NBYTES, a flag indicating whether or not
3718   the data is signed in SIGNEXTEND, and a pointer to the current
3719   objfile in OBJFILE, convert the data to host format and return
3720   the converted value.
3721
3722   NOTES
3723
3724   FIXME:  If we read data that is known to be signed, and expect to
3725   use it as signed data, then we need to explicitly sign extend the
3726   result until the bfd library is able to do this for us.
3727
3728   FIXME: Would a 32 bit target ever need an 8 byte result?
3729
3730 */
3731
3732static CORE_ADDR
3733target_to_host (char *from, int nbytes, int signextend,	/* FIXME:  Unused */
3734		struct objfile *objfile)
3735{
3736  CORE_ADDR rtnval;
3737
3738  switch (nbytes)
3739    {
3740    case 8:
3741      rtnval = bfd_get_64 (objfile->obfd, (bfd_byte *) from);
3742      break;
3743    case 4:
3744      rtnval = bfd_get_32 (objfile->obfd, (bfd_byte *) from);
3745      break;
3746    case 2:
3747      rtnval = bfd_get_16 (objfile->obfd, (bfd_byte *) from);
3748      break;
3749    case 1:
3750      rtnval = bfd_get_8 (objfile->obfd, (bfd_byte *) from);
3751      break;
3752    default:
3753      complaint (&symfile_complaints,
3754		 "DIE @ 0x%x \"%s\", no bfd support for %d byte data object",
3755		 DIE_ID, DIE_NAME, nbytes);
3756      rtnval = 0;
3757      break;
3758    }
3759  return (rtnval);
3760}
3761
3762/*
3763
3764   LOCAL FUNCTION
3765
3766   attribute_size -- compute size of data for a DWARF attribute
3767
3768   SYNOPSIS
3769
3770   static int attribute_size (unsigned int attr)
3771
3772   DESCRIPTION
3773
3774   Given a DWARF attribute in ATTR, compute the size of the first
3775   piece of data associated with this attribute and return that
3776   size.
3777
3778   Returns -1 for unrecognized attributes.
3779
3780 */
3781
3782static int
3783attribute_size (unsigned int attr)
3784{
3785  int nbytes;			/* Size of next data for this attribute */
3786  unsigned short form;		/* Form of the attribute */
3787
3788  form = FORM_FROM_ATTR (attr);
3789  switch (form)
3790    {
3791    case FORM_STRING:		/* A variable length field is next */
3792      nbytes = 0;
3793      break;
3794    case FORM_DATA2:		/* Next 2 byte field is the data itself */
3795    case FORM_BLOCK2:		/* Next 2 byte field is a block length */
3796      nbytes = 2;
3797      break;
3798    case FORM_DATA4:		/* Next 4 byte field is the data itself */
3799    case FORM_BLOCK4:		/* Next 4 byte field is a block length */
3800    case FORM_REF:		/* Next 4 byte field is a DIE offset */
3801      nbytes = 4;
3802      break;
3803    case FORM_DATA8:		/* Next 8 byte field is the data itself */
3804      nbytes = 8;
3805      break;
3806    case FORM_ADDR:		/* Next field size is target sizeof(void *) */
3807      nbytes = TARGET_FT_POINTER_SIZE (objfile);
3808      break;
3809    default:
3810      unknown_attribute_form_complaint (DIE_ID, DIE_NAME, form);
3811      nbytes = -1;
3812      break;
3813    }
3814  return (nbytes);
3815}
3816