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