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