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