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