06b61ece81efd0505d5ac9f5ef35e6497436762e
[deliverable/binutils-gdb.git] / gdb / stabsread.c
1 /* Support routines for decoding "stabs" debugging information format.
2 Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992
3 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
20
21 /* Support routines for reading and decoding debugging information in
22 the "stabs" format. This format is used with many systems that use
23 the a.out object file format, as well as some systems that use
24 COFF or ELF where the stabs data is placed in a special section.
25 Avoid placing any object file format specific code in this file. */
26
27 #include "defs.h"
28 #include "bfd.h"
29 #include "obstack.h"
30 #include "symtab.h"
31 #include "gdbtypes.h"
32 #include "symfile.h" /* Needed for "struct complaint" */
33 #include "objfiles.h"
34 #include "aout/stab_gnu.h" /* We always use GNU stabs, not native */
35 #include "buildsym.h"
36
37 /* Ask stabsread.h to define the vars it normally declares `extern'. */
38 #define EXTERN /**/
39 #include "stabsread.h" /* Our own declarations */
40 #undef EXTERN
41
42 static struct type *
43 dbx_alloc_type PARAMS ((int [2], struct objfile *));
44
45 static void
46 read_huge_number PARAMS ((char **, int, long *, int *));
47
48 static void
49 patch_block_stabs PARAMS ((struct pending *, struct pending_stabs *,
50 struct objfile *));
51
52 static void
53 fix_common_block PARAMS ((struct symbol *, int));
54
55 static struct type *
56 read_range_type PARAMS ((char **, int [2], struct objfile *));
57
58 static struct type *
59 read_sun_builtin_type PARAMS ((char **, int [2], struct objfile *));
60
61 static struct type *
62 read_sun_floating_type PARAMS ((char **, int [2], struct objfile *));
63
64 static struct type *
65 read_enum_type PARAMS ((char **, struct type *, struct objfile *));
66
67 static struct type *
68 read_struct_type PARAMS ((char **, struct type *, struct objfile *));
69
70 static struct type *
71 read_array_type PARAMS ((char **, struct type *, struct objfile *));
72
73 static struct type **
74 read_args PARAMS ((char **, int, struct objfile *));
75
76 static const char vptr_name[] = { '_','v','p','t','r',CPLUS_MARKER,'\0' };
77 static const char vb_name[] = { '_','v','b',CPLUS_MARKER,'\0' };
78
79 /* Define this as 1 if a pcc declaration of a char or short argument
80 gives the correct address. Otherwise assume pcc gives the
81 address of the corresponding int, which is not the same on a
82 big-endian machine. */
83
84 #ifndef BELIEVE_PCC_PROMOTION
85 #define BELIEVE_PCC_PROMOTION 0
86 #endif
87
88 /* During some calls to read_type (and thus to read_range_type), this
89 contains the name of the type being defined. Range types are only
90 used in C as basic types. We use the name to distinguish the otherwise
91 identical basic types "int" and "long" and their unsigned versions.
92 FIXME, this should disappear with better type management. */
93
94 static char *long_kludge_name;
95
96 #if 0
97 struct complaint dbx_class_complaint =
98 {
99 "encountered DBX-style class variable debugging information.\n\
100 You seem to have compiled your program with \
101 \"g++ -g0\" instead of \"g++ -g\".\n\
102 Therefore GDB will not know about your class variables", 0, 0
103 };
104 #endif
105
106 struct complaint invalid_cpp_abbrev_complaint =
107 {"invalid C++ abbreviation `%s'", 0, 0};
108
109 struct complaint invalid_cpp_type_complaint =
110 {"C++ abbreviated type name unknown at symtab pos %d", 0, 0};
111
112 struct complaint member_fn_complaint =
113 {"member function type missing, got '%c'", 0, 0};
114
115 struct complaint const_vol_complaint =
116 {"const/volatile indicator missing, got '%c'", 0, 0};
117
118 struct complaint error_type_complaint =
119 {"debug info mismatch between compiler and debugger", 0, 0};
120
121 struct complaint invalid_member_complaint =
122 {"invalid (minimal) member type data format at symtab pos %d.", 0, 0};
123
124 struct complaint range_type_base_complaint =
125 {"base type %d of range type is not defined", 0, 0};
126
127 struct complaint reg_value_complaint =
128 {"register number too large in symbol %s", 0, 0};
129
130 /* Make a list of forward references which haven't been defined. */
131
132 static struct type **undef_types;
133 static int undef_types_allocated;
134 static int undef_types_length;
135
136 \f
137 int
138 hashname (name)
139 char *name;
140 {
141 register char *p = name;
142 register int total = p[0];
143 register int c;
144
145 c = p[1];
146 total += c << 2;
147 if (c)
148 {
149 c = p[2];
150 total += c << 4;
151 if (c)
152 {
153 total += p[3] << 6;
154 }
155 }
156
157 /* Ensure result is positive. */
158 if (total < 0)
159 {
160 total += (1000 << 6);
161 }
162 return (total % HASHSIZE);
163 }
164
165 \f
166 /* Look up a dbx type-number pair. Return the address of the slot
167 where the type for that number-pair is stored.
168 The number-pair is in TYPENUMS.
169
170 This can be used for finding the type associated with that pair
171 or for associating a new type with the pair. */
172
173 struct type **
174 dbx_lookup_type (typenums)
175 int typenums[2];
176 {
177 register int filenum = typenums[0];
178 register int index = typenums[1];
179 unsigned old_len;
180 register int real_filenum;
181 register struct header_file *f;
182 int f_orig_length;
183
184 if (filenum == -1) /* -1,-1 is for temporary types. */
185 return 0;
186
187 if (filenum < 0 || filenum >= n_this_object_header_files)
188 error ("Invalid symbol data: type number (%d,%d) out of range at symtab pos %d.",
189 filenum, index, symnum);
190
191 if (filenum == 0)
192 {
193 /* Type is defined outside of header files.
194 Find it in this object file's type vector. */
195 if (index >= type_vector_length)
196 {
197 old_len = type_vector_length;
198 if (old_len == 0)
199 {
200 type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
201 type_vector = (struct type **)
202 malloc (type_vector_length * sizeof (struct type *));
203 }
204 while (index >= type_vector_length)
205 {
206 type_vector_length *= 2;
207 }
208 type_vector = (struct type **)
209 xrealloc ((char *) type_vector,
210 (type_vector_length * sizeof (struct type *)));
211 memset (&type_vector[old_len], 0,
212 (type_vector_length - old_len) * sizeof (struct type *));
213 }
214 return (&type_vector[index]);
215 }
216 else
217 {
218 real_filenum = this_object_header_files[filenum];
219
220 if (real_filenum >= n_header_files)
221 {
222 abort ();
223 }
224
225 f = &header_files[real_filenum];
226
227 f_orig_length = f->length;
228 if (index >= f_orig_length)
229 {
230 while (index >= f->length)
231 {
232 f->length *= 2;
233 }
234 f->vector = (struct type **)
235 xrealloc ((char *) f->vector, f->length * sizeof (struct type *));
236 memset (&f->vector[f_orig_length], 0,
237 (f->length - f_orig_length) * sizeof (struct type *));
238 }
239 return (&f->vector[index]);
240 }
241 }
242
243 /* Make sure there is a type allocated for type numbers TYPENUMS
244 and return the type object.
245 This can create an empty (zeroed) type object.
246 TYPENUMS may be (-1, -1) to return a new type object that is not
247 put into the type vector, and so may not be referred to by number. */
248
249 static struct type *
250 dbx_alloc_type (typenums, objfile)
251 int typenums[2];
252 struct objfile *objfile;
253 {
254 register struct type **type_addr;
255
256 if (typenums[0] == -1)
257 {
258 return (alloc_type (objfile));
259 }
260
261 type_addr = dbx_lookup_type (typenums);
262
263 /* If we are referring to a type not known at all yet,
264 allocate an empty type for it.
265 We will fill it in later if we find out how. */
266 if (*type_addr == 0)
267 {
268 *type_addr = alloc_type (objfile);
269 }
270
271 return (*type_addr);
272 }
273
274 /* for all the stabs in a given stab vector, build appropriate types
275 and fix their symbols in given symbol vector. */
276
277 static void
278 patch_block_stabs (symbols, stabs, objfile)
279 struct pending *symbols;
280 struct pending_stabs *stabs;
281 struct objfile *objfile;
282 {
283 int ii;
284 char *name;
285 char *pp;
286 struct symbol *sym;
287
288 if (stabs)
289 {
290
291 /* for all the stab entries, find their corresponding symbols and
292 patch their types! */
293
294 for (ii = 0; ii < stabs->count; ++ii)
295 {
296 name = stabs->stab[ii];
297 pp = (char*) strchr (name, ':');
298 sym = find_symbol_in_list (symbols, name, pp-name);
299 if (!sym)
300 {
301 #ifndef IBM6000_TARGET
302 printf ("ERROR! stab symbol not found!\n"); /* FIXME */
303 #endif
304 }
305 else
306 {
307 pp += 2;
308 if (*(pp-1) == 'F' || *(pp-1) == 'f')
309 {
310 SYMBOL_TYPE (sym) =
311 lookup_function_type (read_type (&pp, objfile));
312 }
313 else
314 {
315 SYMBOL_TYPE (sym) = read_type (&pp, objfile);
316 }
317 }
318 }
319 }
320 }
321
322 \f
323 /* Read a number by which a type is referred to in dbx data,
324 or perhaps read a pair (FILENUM, TYPENUM) in parentheses.
325 Just a single number N is equivalent to (0,N).
326 Return the two numbers by storing them in the vector TYPENUMS.
327 TYPENUMS will then be used as an argument to dbx_lookup_type. */
328
329 void
330 read_type_number (pp, typenums)
331 register char **pp;
332 register int *typenums;
333 {
334 if (**pp == '(')
335 {
336 (*pp)++;
337 typenums[0] = read_number (pp, ',');
338 typenums[1] = read_number (pp, ')');
339 }
340 else
341 {
342 typenums[0] = 0;
343 typenums[1] = read_number (pp, 0);
344 }
345 }
346
347 \f
348 /* To handle GNU C++ typename abbreviation, we need to be able to
349 fill in a type's name as soon as space for that type is allocated.
350 `type_synonym_name' is the name of the type being allocated.
351 It is cleared as soon as it is used (lest all allocated types
352 get this name). */
353
354 static char *type_synonym_name;
355
356 /* ARGSUSED */
357 struct symbol *
358 define_symbol (valu, string, desc, type, objfile)
359 unsigned int valu;
360 char *string;
361 int desc;
362 int type;
363 struct objfile *objfile;
364 {
365 register struct symbol *sym;
366 char *p = (char *) strchr (string, ':');
367 int deftype;
368 int synonym = 0;
369 register int i;
370 struct type *temptype;
371
372 /* We would like to eliminate nameless symbols, but keep their types.
373 E.g. stab entry ":t10=*2" should produce a type 10, which is a pointer
374 to type 2, but, should not creat a symbol to address that type. Since
375 the symbol will be nameless, there is no way any user can refer to it. */
376
377 int nameless;
378
379 /* Ignore syms with empty names. */
380 if (string[0] == 0)
381 return 0;
382
383 /* Ignore old-style symbols from cc -go */
384 if (p == 0)
385 return 0;
386
387 /* If a nameless stab entry, all we need is the type, not the symbol.
388 e.g. ":t10=*2" */
389 nameless = (p == string);
390
391 sym = (struct symbol *)
392 obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
393 memset (sym, 0, sizeof (struct symbol));
394
395 if (processing_gcc_compilation)
396 {
397 /* GCC 2.x puts the line number in desc. SunOS apparently puts in the
398 number of bytes occupied by a type or object, which we ignore. */
399 SYMBOL_LINE(sym) = desc;
400 }
401 else
402 {
403 SYMBOL_LINE(sym) = 0; /* unknown */
404 }
405
406 if (string[0] == CPLUS_MARKER)
407 {
408 /* Special GNU C++ names. */
409 switch (string[1])
410 {
411 case 't':
412 SYMBOL_NAME (sym) = obsavestring ("this", strlen ("this"),
413 &objfile -> symbol_obstack);
414 break;
415
416 case 'v': /* $vtbl_ptr_type */
417 /* Was: SYMBOL_NAME (sym) = "vptr"; */
418 goto normal;
419
420 case 'e':
421 SYMBOL_NAME (sym) = obsavestring ("eh_throw", strlen ("eh_throw"),
422 &objfile -> symbol_obstack);
423 break;
424
425 case '_':
426 /* This was an anonymous type that was never fixed up. */
427 goto normal;
428
429 default:
430 abort ();
431 }
432 }
433 else
434 {
435 normal:
436 SYMBOL_NAME (sym) = (char *)
437 obstack_alloc (&objfile -> symbol_obstack, ((p - string) + 1));
438 /* Open-coded bcopy--saves function call time. */
439 {
440 register char *p1 = string;
441 register char *p2 = SYMBOL_NAME (sym);
442 while (p1 != p)
443 {
444 *p2++ = *p1++;
445 }
446 *p2++ = '\0';
447 }
448 }
449 p++;
450
451 /* Determine the type of name being defined. */
452 /* The Acorn RISC machine's compiler can put out locals that don't
453 start with "234=" or "(3,4)=", so assume anything other than the
454 deftypes we know how to handle is a local. */
455 if (!strchr ("cfFGpPrStTvVXCR", *p))
456 deftype = 'l';
457 else
458 deftype = *p++;
459
460 /* c is a special case, not followed by a type-number.
461 SYMBOL:c=iVALUE for an integer constant symbol.
462 SYMBOL:c=rVALUE for a floating constant symbol.
463 SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
464 e.g. "b:c=e6,0" for "const b = blob1"
465 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
466 if (deftype == 'c')
467 {
468 if (*p++ != '=')
469 error ("Invalid symbol data at symtab pos %d.", symnum);
470 switch (*p++)
471 {
472 case 'r':
473 {
474 double d = atof (p);
475 char *dbl_valu;
476
477 SYMBOL_TYPE (sym) = lookup_fundamental_type (objfile,
478 FT_DBL_PREC_FLOAT);
479 dbl_valu = (char *)
480 obstack_alloc (&objfile -> symbol_obstack, sizeof (double));
481 memcpy (dbl_valu, &d, sizeof (double));
482 SWAP_TARGET_AND_HOST (dbl_valu, sizeof (double));
483 SYMBOL_VALUE_BYTES (sym) = dbl_valu;
484 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
485 }
486 break;
487 case 'i':
488 {
489 SYMBOL_TYPE (sym) = lookup_fundamental_type (objfile,
490 FT_INTEGER);
491 SYMBOL_VALUE (sym) = atoi (p);
492 SYMBOL_CLASS (sym) = LOC_CONST;
493 }
494 break;
495 case 'e':
496 /* SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
497 e.g. "b:c=e6,0" for "const b = blob1"
498 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
499 {
500 int typenums[2];
501
502 read_type_number (&p, typenums);
503 if (*p++ != ',')
504 error ("Invalid symbol data: no comma in enum const symbol");
505
506 SYMBOL_TYPE (sym) = *dbx_lookup_type (typenums);
507 SYMBOL_VALUE (sym) = atoi (p);
508 SYMBOL_CLASS (sym) = LOC_CONST;
509 }
510 break;
511 default:
512 error ("Invalid symbol data at symtab pos %d.", symnum);
513 }
514 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
515 add_symbol_to_list (sym, &file_symbols);
516 return sym;
517 }
518
519 /* Now usually comes a number that says which data type,
520 and possibly more stuff to define the type
521 (all of which is handled by read_type) */
522
523 if (deftype == 'p' && *p == 'F')
524 /* pF is a two-letter code that means a function parameter in Fortran.
525 The type-number specifies the type of the return value.
526 Translate it into a pointer-to-function type. */
527 {
528 p++;
529 SYMBOL_TYPE (sym)
530 = lookup_pointer_type (lookup_function_type (read_type (&p, objfile)));
531 }
532 else
533 {
534 /* The symbol class letter is followed by a type (typically the
535 type of the symbol, or its return-type, or etc). Read it. */
536
537 synonym = *p == 't';
538
539 if (synonym)
540 {
541 p += 1;
542 type_synonym_name = obsavestring (SYMBOL_NAME (sym),
543 strlen (SYMBOL_NAME (sym)),
544 &objfile -> symbol_obstack);
545 }
546
547 /* Here we save the name of the symbol for read_range_type, which
548 ends up reading in the basic types. In stabs, unfortunately there
549 is no distinction between "int" and "long" types except their
550 names. Until we work out a saner type policy (eliminating most
551 builtin types and using the names specified in the files), we
552 save away the name so that far away from here in read_range_type,
553 we can examine it to decide between "int" and "long". FIXME. */
554 long_kludge_name = SYMBOL_NAME (sym);
555
556 SYMBOL_TYPE (sym) = read_type (&p, objfile);
557 }
558
559 switch (deftype)
560 {
561 case 'C':
562 /* The name of a caught exception. */
563 SYMBOL_CLASS (sym) = LOC_LABEL;
564 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
565 SYMBOL_VALUE_ADDRESS (sym) = valu;
566 add_symbol_to_list (sym, &local_symbols);
567 break;
568
569 case 'f':
570 /* A static function definition. */
571 SYMBOL_CLASS (sym) = LOC_BLOCK;
572 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
573 add_symbol_to_list (sym, &file_symbols);
574 /* fall into process_function_types. */
575
576 process_function_types:
577 /* Function result types are described as the result type in stabs.
578 We need to convert this to the function-returning-type-X type
579 in GDB. E.g. "int" is converted to "function returning int". */
580 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
581 {
582 #if 0
583 /* This code doesn't work -- it needs to realloc and can't. */
584 /* Attempt to set up to record a function prototype... */
585 struct type *new = alloc_type (objfile);
586
587 /* Generate a template for the type of this function. The
588 types of the arguments will be added as we read the symbol
589 table. */
590 *new = *lookup_function_type (SYMBOL_TYPE(sym));
591 SYMBOL_TYPE(sym) = new;
592 TYPE_OBJFILE (new) = objfile;
593 in_function_type = new;
594 #else
595 SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
596 #endif
597 }
598 /* fall into process_prototype_types */
599
600 process_prototype_types:
601 /* Sun acc puts declared types of arguments here. We don't care
602 about their actual types (FIXME -- we should remember the whole
603 function prototype), but the list may define some new types
604 that we have to remember, so we must scan it now. */
605 while (*p == ';') {
606 p++;
607 read_type (&p, objfile);
608 }
609 break;
610
611 case 'F':
612 /* A global function definition. */
613 SYMBOL_CLASS (sym) = LOC_BLOCK;
614 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
615 add_symbol_to_list (sym, &global_symbols);
616 goto process_function_types;
617
618 case 'G':
619 /* For a class G (global) symbol, it appears that the
620 value is not correct. It is necessary to search for the
621 corresponding linker definition to find the value.
622 These definitions appear at the end of the namelist. */
623 i = hashname (SYMBOL_NAME (sym));
624 SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
625 global_sym_chain[i] = sym;
626 SYMBOL_CLASS (sym) = LOC_STATIC;
627 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
628 add_symbol_to_list (sym, &global_symbols);
629 break;
630
631 /* This case is faked by a conditional above,
632 when there is no code letter in the dbx data.
633 Dbx data never actually contains 'l'. */
634 case 'l':
635 SYMBOL_CLASS (sym) = LOC_LOCAL;
636 SYMBOL_VALUE (sym) = valu;
637 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
638 add_symbol_to_list (sym, &local_symbols);
639 break;
640
641 case 'p':
642 /* Normally this is a parameter, a LOC_ARG. On the i960, it
643 can also be a LOC_LOCAL_ARG depending on symbol type. */
644 #ifndef DBX_PARM_SYMBOL_CLASS
645 #define DBX_PARM_SYMBOL_CLASS(type) LOC_ARG
646 #endif
647 SYMBOL_CLASS (sym) = DBX_PARM_SYMBOL_CLASS (type);
648 SYMBOL_VALUE (sym) = valu;
649 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
650 #if 0
651 /* This doesn't work yet. */
652 add_param_to_type (&in_function_type, sym);
653 #endif
654 add_symbol_to_list (sym, &local_symbols);
655
656 /* If it's gcc-compiled, if it says `short', believe it. */
657 if (processing_gcc_compilation || BELIEVE_PCC_PROMOTION)
658 break;
659
660 #if defined(BELIEVE_PCC_PROMOTION_TYPE)
661 /* This macro is defined on machines (e.g. sparc) where
662 we should believe the type of a PCC 'short' argument,
663 but shouldn't believe the address (the address is
664 the address of the corresponding int). Note that
665 this is only different from the BELIEVE_PCC_PROMOTION
666 case on big-endian machines.
667
668 My guess is that this correction, as opposed to changing
669 the parameter to an 'int' (as done below, for PCC
670 on most machines), is the right thing to do
671 on all machines, but I don't want to risk breaking
672 something that already works. On most PCC machines,
673 the sparc problem doesn't come up because the calling
674 function has to zero the top bytes (not knowing whether
675 the called function wants an int or a short), so there
676 is no practical difference between an int and a short
677 (except perhaps what happens when the GDB user types
678 "print short_arg = 0x10000;").
679
680 Hacked for SunOS 4.1 by gnu@cygnus.com. In 4.1, the compiler
681 actually produces the correct address (we don't need to fix it
682 up). I made this code adapt so that it will offset the symbol
683 if it was pointing at an int-aligned location and not
684 otherwise. This way you can use the same gdb for 4.0.x and
685 4.1 systems.
686
687 If the parameter is shorter than an int, and is integral
688 (e.g. char, short, or unsigned equivalent), and is claimed to
689 be passed on an integer boundary, don't believe it! Offset the
690 parameter's address to the tail-end of that integer. */
691
692 temptype = lookup_fundamental_type (objfile, FT_INTEGER);
693 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (temptype)
694 && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT
695 && 0 == SYMBOL_VALUE (sym) % TYPE_LENGTH (temptype))
696 {
697 SYMBOL_VALUE (sym) += TYPE_LENGTH (temptype)
698 - TYPE_LENGTH (SYMBOL_TYPE (sym));
699 }
700 break;
701
702 #else /* no BELIEVE_PCC_PROMOTION_TYPE. */
703
704 /* If PCC says a parameter is a short or a char,
705 it is really an int. */
706 temptype = lookup_fundamental_type (objfile, FT_INTEGER);
707 if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (temptype)
708 && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
709 {
710 SYMBOL_TYPE (sym) = TYPE_UNSIGNED (SYMBOL_TYPE (sym))
711 ? lookup_fundamental_type (objfile, FT_UNSIGNED_INTEGER)
712 : temptype;
713 }
714 break;
715
716 #endif /* no BELIEVE_PCC_PROMOTION_TYPE. */
717
718 case 'P':
719 /* acc seems to use P to delare the prototypes of functions that
720 are referenced by this file. gdb is not prepared to deal
721 with this extra information. FIXME, it ought to. */
722 if (type == N_FUN)
723 goto process_prototype_types;
724
725 /* Parameter which is in a register. */
726 SYMBOL_CLASS (sym) = LOC_REGPARM;
727 SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (valu);
728 if (SYMBOL_VALUE (sym) >= NUM_REGS)
729 {
730 complain (&reg_value_complaint, SYMBOL_NAME (sym));
731 SYMBOL_VALUE (sym) = SP_REGNUM; /* Known safe, though useless */
732 }
733 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
734 add_symbol_to_list (sym, &local_symbols);
735 break;
736
737 case 'R':
738 case 'r':
739 /* Register variable (either global or local). */
740 SYMBOL_CLASS (sym) = LOC_REGISTER;
741 SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (valu);
742 if (SYMBOL_VALUE (sym) >= NUM_REGS)
743 {
744 complain (&reg_value_complaint, SYMBOL_NAME (sym));
745 SYMBOL_VALUE (sym) = SP_REGNUM; /* Known safe, though useless */
746 }
747 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
748 if (within_function)
749 add_symbol_to_list (sym, &local_symbols);
750 else
751 add_symbol_to_list (sym, &file_symbols);
752 break;
753
754 case 'S':
755 /* Static symbol at top level of file */
756 SYMBOL_CLASS (sym) = LOC_STATIC;
757 SYMBOL_VALUE_ADDRESS (sym) = valu;
758 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
759 add_symbol_to_list (sym, &file_symbols);
760 break;
761
762 case 't':
763 /* For a nameless type, we don't want a create a symbol, thus we
764 did not use `sym'. Return without further processing. */
765 if (nameless) return NULL;
766
767 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
768 SYMBOL_VALUE (sym) = valu;
769 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
770 /* C++ vagaries: we may have a type which is derived from
771 a base type which did not have its name defined when the
772 derived class was output. We fill in the derived class's
773 base part member's name here in that case. */
774 if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
775 if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
776 || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)
777 && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
778 {
779 int j;
780 for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
781 if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
782 TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
783 type_name_no_tag (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
784 }
785
786 add_symbol_to_list (sym, &file_symbols);
787 break;
788
789 case 'T':
790 /* For a nameless type, we don't want a create a symbol, thus we
791 did not use `sym'. Return without further processing. */
792 if (nameless) return NULL;
793
794 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
795 SYMBOL_VALUE (sym) = valu;
796 SYMBOL_NAMESPACE (sym) = STRUCT_NAMESPACE;
797 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
798 TYPE_NAME (SYMBOL_TYPE (sym))
799 = obconcat (&objfile -> type_obstack, "",
800 (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_ENUM
801 ? "enum "
802 : (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
803 ? "struct " : "union ")),
804 SYMBOL_NAME (sym));
805 add_symbol_to_list (sym, &file_symbols);
806
807 if (synonym)
808 {
809 register struct symbol *typedef_sym = (struct symbol *)
810 obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
811 memset (typedef_sym, 0, sizeof (struct symbol));
812 SYMBOL_NAME (typedef_sym) = SYMBOL_NAME (sym);
813 SYMBOL_TYPE (typedef_sym) = SYMBOL_TYPE (sym);
814
815 SYMBOL_CLASS (typedef_sym) = LOC_TYPEDEF;
816 SYMBOL_VALUE (typedef_sym) = valu;
817 SYMBOL_NAMESPACE (typedef_sym) = VAR_NAMESPACE;
818 add_symbol_to_list (typedef_sym, &file_symbols);
819 }
820 break;
821
822 case 'V':
823 /* Static symbol of local scope */
824 SYMBOL_CLASS (sym) = LOC_STATIC;
825 SYMBOL_VALUE_ADDRESS (sym) = valu;
826 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
827 add_symbol_to_list (sym, &local_symbols);
828 break;
829
830 case 'v':
831 /* Reference parameter */
832 SYMBOL_CLASS (sym) = LOC_REF_ARG;
833 SYMBOL_VALUE (sym) = valu;
834 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
835 add_symbol_to_list (sym, &local_symbols);
836 break;
837
838 case 'X':
839 /* This is used by Sun FORTRAN for "function result value".
840 Sun claims ("dbx and dbxtool interfaces", 2nd ed)
841 that Pascal uses it too, but when I tried it Pascal used
842 "x:3" (local symbol) instead. */
843 SYMBOL_CLASS (sym) = LOC_LOCAL;
844 SYMBOL_VALUE (sym) = valu;
845 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
846 add_symbol_to_list (sym, &local_symbols);
847 break;
848
849 default:
850 error ("Invalid symbol data: unknown symbol-type code `%c' at symtab pos %d.", deftype, symnum);
851 }
852 return sym;
853 }
854
855 \f
856 /* Skip rest of this symbol and return an error type.
857
858 General notes on error recovery: error_type always skips to the
859 end of the symbol (modulo cretinous dbx symbol name continuation).
860 Thus code like this:
861
862 if (*(*pp)++ != ';')
863 return error_type (pp);
864
865 is wrong because if *pp starts out pointing at '\0' (typically as the
866 result of an earlier error), it will be incremented to point to the
867 start of the next symbol, which might produce strange results, at least
868 if you run off the end of the string table. Instead use
869
870 if (**pp != ';')
871 return error_type (pp);
872 ++*pp;
873
874 or
875
876 if (**pp != ';')
877 foo = error_type (pp);
878 else
879 ++*pp;
880
881 And in case it isn't obvious, the point of all this hair is so the compiler
882 can define new types and new syntaxes, and old versions of the
883 debugger will be able to read the new symbol tables. */
884
885 struct type *
886 error_type (pp)
887 char **pp;
888 {
889 complain (&error_type_complaint, 0);
890 while (1)
891 {
892 /* Skip to end of symbol. */
893 while (**pp != '\0')
894 (*pp)++;
895
896 /* Check for and handle cretinous dbx symbol name continuation! */
897 if ((*pp)[-1] == '\\')
898 *pp = next_symbol_text ();
899 else
900 break;
901 }
902 return builtin_type_error;
903 }
904
905 \f
906 /* Read a dbx type reference or definition;
907 return the type that is meant.
908 This can be just a number, in which case it references
909 a type already defined and placed in type_vector.
910 Or the number can be followed by an =, in which case
911 it means to define a new type according to the text that
912 follows the =. */
913
914 struct type *
915 read_type (pp, objfile)
916 register char **pp;
917 struct objfile *objfile;
918 {
919 register struct type *type = 0;
920 struct type *type1;
921 int typenums[2];
922 int xtypenums[2];
923
924 /* Read type number if present. The type number may be omitted.
925 for instance in a two-dimensional array declared with type
926 "ar1;1;10;ar1;1;10;4". */
927 if ((**pp >= '0' && **pp <= '9')
928 || **pp == '(')
929 {
930 read_type_number (pp, typenums);
931
932 /* Type is not being defined here. Either it already exists,
933 or this is a forward reference to it. dbx_alloc_type handles
934 both cases. */
935 if (**pp != '=')
936 return dbx_alloc_type (typenums, objfile);
937
938 /* Type is being defined here. */
939 #if 0 /* Callers aren't prepared for a NULL result! FIXME -- metin! */
940 {
941 struct type *tt;
942
943 /* if such a type already exists, this is an unnecessary duplication
944 of the stab string, which is common in (RS/6000) xlc generated
945 objects. In that case, simply return NULL and let the caller take
946 care of it. */
947
948 tt = *dbx_lookup_type (typenums);
949 if (tt && tt->length && tt->code)
950 return NULL;
951 }
952 #endif
953
954 *pp += 2;
955 }
956 else
957 {
958 /* 'typenums=' not present, type is anonymous. Read and return
959 the definition, but don't put it in the type vector. */
960 typenums[0] = typenums[1] = -1;
961 *pp += 1;
962 }
963
964 switch ((*pp)[-1])
965 {
966 case 'x':
967 {
968 enum type_code code;
969
970 /* Used to index through file_symbols. */
971 struct pending *ppt;
972 int i;
973
974 /* Name including "struct", etc. */
975 char *type_name;
976
977 /* Name without "struct", etc. */
978 char *type_name_only;
979
980 {
981 char *prefix;
982 char *from, *to;
983
984 /* Set the type code according to the following letter. */
985 switch ((*pp)[0])
986 {
987 case 's':
988 code = TYPE_CODE_STRUCT;
989 prefix = "struct ";
990 break;
991 case 'u':
992 code = TYPE_CODE_UNION;
993 prefix = "union ";
994 break;
995 case 'e':
996 code = TYPE_CODE_ENUM;
997 prefix = "enum ";
998 break;
999 default:
1000 return error_type (pp);
1001 }
1002
1003 to = type_name = (char *)
1004 obstack_alloc (&objfile -> type_obstack,
1005 (strlen (prefix) +
1006 ((char *) strchr (*pp, ':') - (*pp)) + 1));
1007
1008 /* Copy the prefix. */
1009 from = prefix;
1010 while (*to++ = *from++)
1011 ;
1012 to--;
1013
1014 type_name_only = to;
1015
1016 /* Copy the name. */
1017 from = *pp + 1;
1018 while ((*to++ = *from++) != ':')
1019 ;
1020 *--to = '\0';
1021
1022 /* Set the pointer ahead of the name which we just read. */
1023 *pp = from;
1024
1025 #if 0
1026 /* The following hack is clearly wrong, because it doesn't
1027 check whether we are in a baseclass. I tried to reproduce
1028 the case that it is trying to fix, but I couldn't get
1029 g++ to put out a cross reference to a basetype. Perhaps
1030 it doesn't do it anymore. */
1031 /* Note: for C++, the cross reference may be to a base type which
1032 has not yet been seen. In this case, we skip to the comma,
1033 which will mark the end of the base class name. (The ':'
1034 at the end of the base class name will be skipped as well.)
1035 But sometimes (ie. when the cross ref is the last thing on
1036 the line) there will be no ','. */
1037 from = (char *) strchr (*pp, ',');
1038 if (from)
1039 *pp = from;
1040 #endif /* 0 */
1041 }
1042
1043 /* Now check to see whether the type has already been declared. */
1044 /* This is necessary at least in the case where the
1045 program says something like
1046 struct foo bar[5];
1047 The compiler puts out a cross-reference; we better find
1048 set the length of the structure correctly so we can
1049 set the length of the array. */
1050 for (ppt = file_symbols; ppt; ppt = ppt->next)
1051 for (i = 0; i < ppt->nsyms; i++)
1052 {
1053 struct symbol *sym = ppt->symbol[i];
1054
1055 if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
1056 && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
1057 && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
1058 && !strcmp (SYMBOL_NAME (sym), type_name_only))
1059 {
1060 obstack_free (&objfile -> type_obstack, type_name);
1061 type = SYMBOL_TYPE (sym);
1062 return type;
1063 }
1064 }
1065
1066 /* Didn't find the type to which this refers, so we must
1067 be dealing with a forward reference. Allocate a type
1068 structure for it, and keep track of it so we can
1069 fill in the rest of the fields when we get the full
1070 type. */
1071 type = dbx_alloc_type (typenums, objfile);
1072 TYPE_CODE (type) = code;
1073 TYPE_NAME (type) = type_name;
1074 INIT_CPLUS_SPECIFIC(type);
1075 TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
1076
1077 add_undefined_type (type);
1078 return type;
1079 }
1080
1081 case '-': /* RS/6000 built-in type */
1082 (*pp)--;
1083 type = builtin_type (pp); /* (in xcoffread.c) */
1084 goto after_digits;
1085
1086 case '0':
1087 case '1':
1088 case '2':
1089 case '3':
1090 case '4':
1091 case '5':
1092 case '6':
1093 case '7':
1094 case '8':
1095 case '9':
1096 case '(':
1097 (*pp)--;
1098 read_type_number (pp, xtypenums);
1099 type = *dbx_lookup_type (xtypenums);
1100 /* fall through */
1101
1102 after_digits:
1103 if (type == 0)
1104 type = lookup_fundamental_type (objfile, FT_VOID);
1105 if (typenums[0] != -1)
1106 *dbx_lookup_type (typenums) = type;
1107 break;
1108
1109 /* In the following types, we must be sure to overwrite any existing
1110 type that the typenums refer to, rather than allocating a new one
1111 and making the typenums point to the new one. This is because there
1112 may already be pointers to the existing type (if it had been
1113 forward-referenced), and we must change it to a pointer, function,
1114 reference, or whatever, *in-place*. */
1115
1116 case '*':
1117 type1 = read_type (pp, objfile);
1118 type = make_pointer_type (type1, dbx_lookup_type (typenums));
1119 break;
1120
1121 case '&': /* Reference to another type */
1122 type1 = read_type (pp, objfile);
1123 type = make_reference_type (type1, dbx_lookup_type (typenums));
1124 break;
1125
1126 case 'f': /* Function returning another type */
1127 type1 = read_type (pp, objfile);
1128 type = make_function_type (type1, dbx_lookup_type (typenums));
1129 break;
1130
1131 case 'k': /* Const qualifier on some type (Sun) */
1132 type = read_type (pp, objfile);
1133 /* FIXME! For now, we ignore const and volatile qualifiers. */
1134 break;
1135
1136 case 'B': /* Volatile qual on some type (Sun) */
1137 type = read_type (pp, objfile);
1138 /* FIXME! For now, we ignore const and volatile qualifiers. */
1139 break;
1140
1141 /* FIXME -- we should be doing smash_to_XXX types here. */
1142 case '@': /* Member (class & variable) type */
1143 {
1144 struct type *domain = read_type (pp, objfile);
1145 struct type *memtype;
1146
1147 if (**pp != ',')
1148 /* Invalid member type data format. */
1149 return error_type (pp);
1150 ++*pp;
1151
1152 memtype = read_type (pp, objfile);
1153 type = dbx_alloc_type (typenums, objfile);
1154 smash_to_member_type (type, domain, memtype);
1155 }
1156 break;
1157
1158 case '#': /* Method (class & fn) type */
1159 if ((*pp)[0] == '#')
1160 {
1161 /* This "minimized" format bogus, because it doesn't yield
1162 enough information. I've changed gcc to not emit it. --Per */
1163 struct type *return_type;
1164
1165 *pp += 1;
1166 return_type = read_type (pp, objfile);
1167 if (*(*pp)++ != ';')
1168 complain (&invalid_member_complaint, (char *) symnum);
1169 type = allocate_stub_method (return_type);
1170 if (typenums[0] != -1)
1171 *dbx_lookup_type (typenums) = type;
1172 }
1173 else
1174 {
1175 struct type *domain = read_type (pp, objfile);
1176 struct type *return_type;
1177 struct type **args;
1178
1179 if (*(*pp)++ != ',')
1180 error ("invalid member type data format, at symtab pos %d.",
1181 symnum);
1182
1183 return_type = read_type (pp, objfile);
1184 args = read_args (pp, ';', objfile);
1185 type = dbx_alloc_type (typenums, objfile);
1186 smash_to_method_type (type, domain, return_type, args);
1187 }
1188 break;
1189
1190 case 'r': /* Range type */
1191 type = read_range_type (pp, typenums, objfile);
1192 if (typenums[0] != -1)
1193 *dbx_lookup_type (typenums) = type;
1194 break;
1195
1196 case 'b': /* Sun ACC builtin int type */
1197 type = read_sun_builtin_type (pp, typenums, objfile);
1198 if (typenums[0] != -1)
1199 *dbx_lookup_type (typenums) = type;
1200 break;
1201
1202 case 'R': /* Sun ACC builtin float type */
1203 type = read_sun_floating_type (pp, typenums, objfile);
1204 if (typenums[0] != -1)
1205 *dbx_lookup_type (typenums) = type;
1206 break;
1207
1208 case 'e': /* Enumeration type */
1209 type = dbx_alloc_type (typenums, objfile);
1210 type = read_enum_type (pp, type, objfile);
1211 *dbx_lookup_type (typenums) = type;
1212 break;
1213
1214 case 's': /* Struct type */
1215 type = dbx_alloc_type (typenums, objfile);
1216 if (!TYPE_NAME (type))
1217 TYPE_NAME (type) = type_synonym_name;
1218 type_synonym_name = 0;
1219 type = read_struct_type (pp, type, objfile);
1220 break;
1221
1222 case 'u': /* Union type */
1223 type = dbx_alloc_type (typenums, objfile);
1224 if (!TYPE_NAME (type))
1225 TYPE_NAME (type) = type_synonym_name;
1226 type_synonym_name = 0;
1227 type = read_struct_type (pp, type, objfile);
1228 TYPE_CODE (type) = TYPE_CODE_UNION;
1229 break;
1230
1231 case 'a': /* Array type */
1232 if (**pp != 'r')
1233 return error_type (pp);
1234 ++*pp;
1235
1236 type = dbx_alloc_type (typenums, objfile);
1237 type = read_array_type (pp, type, objfile);
1238 break;
1239
1240 default:
1241 --*pp; /* Go back to the symbol in error */
1242 /* Particularly important if it was \0! */
1243 return error_type (pp);
1244 }
1245
1246 if (type == 0)
1247 abort ();
1248
1249 return type;
1250 }
1251 \f
1252 /* This page contains subroutines of read_type. */
1253
1254 /* Read the description of a structure (or union type)
1255 and return an object describing the type. */
1256
1257 static struct type *
1258 read_struct_type (pp, type, objfile)
1259 char **pp;
1260 register struct type *type;
1261 struct objfile *objfile;
1262 {
1263 /* Total number of methods defined in this class.
1264 If the class defines two `f' methods, and one `g' method,
1265 then this will have the value 3. */
1266 int total_length = 0;
1267
1268 struct nextfield
1269 {
1270 struct nextfield *next;
1271 int visibility; /* 0=public, 1=protected, 2=public */
1272 struct field field;
1273 };
1274
1275 struct next_fnfield
1276 {
1277 struct next_fnfield *next;
1278 struct fn_field fn_field;
1279 };
1280
1281 struct next_fnfieldlist
1282 {
1283 struct next_fnfieldlist *next;
1284 struct fn_fieldlist fn_fieldlist;
1285 };
1286
1287 register struct nextfield *list = 0;
1288 struct nextfield *new;
1289 register char *p;
1290 int nfields = 0;
1291 int non_public_fields = 0;
1292 register int n;
1293
1294 register struct next_fnfieldlist *mainlist = 0;
1295 int nfn_fields = 0;
1296
1297 TYPE_CODE (type) = TYPE_CODE_STRUCT;
1298 INIT_CPLUS_SPECIFIC(type);
1299 TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
1300
1301 /* First comes the total size in bytes. */
1302
1303 TYPE_LENGTH (type) = read_number (pp, 0);
1304
1305 /* C++: Now, if the class is a derived class, then the next character
1306 will be a '!', followed by the number of base classes derived from.
1307 Each element in the list contains visibility information,
1308 the offset of this base class in the derived structure,
1309 and then the base type. */
1310 if (**pp == '!')
1311 {
1312 int i, n_baseclasses, offset;
1313 struct type *baseclass;
1314 int via_public;
1315
1316 /* Nonzero if it is a virtual baseclass, i.e.,
1317
1318 struct A{};
1319 struct B{};
1320 struct C : public B, public virtual A {};
1321
1322 B is a baseclass of C; A is a virtual baseclass for C. This is a C++
1323 2.0 language feature. */
1324 int via_virtual;
1325
1326 *pp += 1;
1327
1328 ALLOCATE_CPLUS_STRUCT_TYPE(type);
1329
1330 n_baseclasses = read_number (pp, ',');
1331 TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *)
1332 TYPE_ALLOC (type, B_BYTES (n_baseclasses));
1333 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), n_baseclasses);
1334
1335 for (i = 0; i < n_baseclasses; i++)
1336 {
1337 if (**pp == '\\')
1338 *pp = next_symbol_text ();
1339
1340 switch (**pp)
1341 {
1342 case '0':
1343 via_virtual = 0;
1344 break;
1345 case '1':
1346 via_virtual = 1;
1347 break;
1348 default:
1349 /* Bad visibility format. */
1350 return error_type (pp);
1351 }
1352 ++*pp;
1353
1354 switch (**pp)
1355 {
1356 case '0':
1357 via_public = 0;
1358 non_public_fields++;
1359 break;
1360 case '2':
1361 via_public = 2;
1362 break;
1363 default:
1364 /* Bad visibility format. */
1365 return error_type (pp);
1366 }
1367 if (via_virtual)
1368 SET_TYPE_FIELD_VIRTUAL (type, i);
1369 ++*pp;
1370
1371 /* Offset of the portion of the object corresponding to
1372 this baseclass. Always zero in the absence of
1373 multiple inheritance. */
1374 offset = read_number (pp, ',');
1375 baseclass = read_type (pp, objfile);
1376 *pp += 1; /* skip trailing ';' */
1377
1378 /* Make this baseclass visible for structure-printing purposes. */
1379 new = (struct nextfield *) alloca (sizeof (struct nextfield));
1380 memset (new, 0, sizeof (struct nextfield));
1381 new->next = list;
1382 list = new;
1383 list->visibility = via_public;
1384 list->field.type = baseclass;
1385 list->field.name = type_name_no_tag (baseclass);
1386 list->field.bitpos = offset;
1387 list->field.bitsize = 0; /* this should be an unpacked field! */
1388 nfields++;
1389 }
1390 TYPE_N_BASECLASSES (type) = n_baseclasses;
1391 }
1392
1393 /* Now come the fields, as NAME:?TYPENUM,BITPOS,BITSIZE; for each one.
1394 At the end, we see a semicolon instead of a field.
1395
1396 In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
1397 a static field.
1398
1399 The `?' is a placeholder for one of '/2' (public visibility),
1400 '/1' (protected visibility), '/0' (private visibility), or nothing
1401 (C style symbol table, public visibility). */
1402
1403 /* We better set p right now, in case there are no fields at all... */
1404 p = *pp;
1405
1406 while (**pp != ';')
1407 {
1408 /* Check for and handle cretinous dbx symbol name continuation! */
1409 if (**pp == '\\') *pp = next_symbol_text ();
1410
1411 /* Get space to record the next field's data. */
1412 new = (struct nextfield *) alloca (sizeof (struct nextfield));
1413 memset (new, 0, sizeof (struct nextfield));
1414 new->next = list;
1415 list = new;
1416
1417 /* Get the field name. */
1418 p = *pp;
1419 if (*p == CPLUS_MARKER)
1420 {
1421 if (*p == '_') /* GNU C++ anonymous type. */
1422 ;
1423 /* Special GNU C++ name. */
1424 else if (*++p == 'v')
1425 {
1426 const char *prefix;
1427 char *name = 0;
1428 struct type *context;
1429
1430 switch (*++p)
1431 {
1432 case 'f':
1433 prefix = vptr_name;
1434 break;
1435 case 'b':
1436 prefix = vb_name;
1437 break;
1438 default:
1439 complain (&invalid_cpp_abbrev_complaint, *pp);
1440 prefix = "INVALID_C++_ABBREV";
1441 break;
1442 }
1443 *pp = p + 1;
1444 context = read_type (pp, objfile);
1445 name = type_name_no_tag (context);
1446 if (name == 0)
1447 {
1448 complain (&invalid_cpp_type_complaint, (char *) symnum);
1449 name = "FOO";
1450 }
1451 list->field.name = obconcat (&objfile -> type_obstack,
1452 prefix, name, "");
1453 p = ++(*pp);
1454 if (p[-1] != ':')
1455 complain (&invalid_cpp_abbrev_complaint, *pp);
1456 list->field.type = read_type (pp, objfile);
1457 (*pp)++; /* Skip the comma. */
1458 list->field.bitpos = read_number (pp, ';');
1459 /* This field is unpacked. */
1460 list->field.bitsize = 0;
1461 list->visibility = 0; /* private */
1462 non_public_fields++;
1463
1464 nfields++;
1465 continue;
1466 }
1467 else
1468 complain (&invalid_cpp_abbrev_complaint, *pp);
1469 }
1470
1471 while (*p != ':') p++;
1472 list->field.name = obsavestring (*pp, p - *pp,
1473 &objfile -> type_obstack);
1474
1475 /* C++: Check to see if we have hit the methods yet. */
1476 if (p[1] == ':')
1477 break;
1478
1479 *pp = p + 1;
1480
1481 /* This means we have a visibility for a field coming. */
1482 if (**pp == '/')
1483 {
1484 switch (*++*pp)
1485 {
1486 case '0':
1487 list->visibility = 0; /* private */
1488 non_public_fields++;
1489 *pp += 1;
1490 break;
1491
1492 case '1':
1493 list->visibility = 1; /* protected */
1494 non_public_fields++;
1495 *pp += 1;
1496 break;
1497
1498 case '2':
1499 list->visibility = 2; /* public */
1500 *pp += 1;
1501 break;
1502 }
1503 }
1504 else /* normal dbx-style format. */
1505 list->visibility = 2; /* public */
1506
1507 list->field.type = read_type (pp, objfile);
1508 if (**pp == ':')
1509 {
1510 p = ++(*pp);
1511 if (**pp == '!')
1512 { /* C++ nested type -as in FOO::BAR */
1513 list->field.bitpos = (long)(-2); /* nested type */
1514 p = ++(*pp);
1515 if (TYPE_NAME (list->field.type) == NULL && **pp == '\'')
1516 {
1517 for (p = ++(*pp); *p != '\''; ) p++;
1518 TYPE_NAME (list->field.type) = savestring (*pp, p - *pp);
1519 }
1520 while (*p != ';') p++;
1521 list->field.bitsize = 0;
1522 *pp = p + 1;
1523 }
1524 else
1525 { /* Static class member. */
1526 list->field.bitpos = (long)(-1);
1527 while (*p != ';') p++;
1528 list->field.bitsize = (long) savestring (*pp, p - *pp);
1529 *pp = p + 1;
1530 }
1531 nfields++;
1532 continue;
1533 }
1534 else if (**pp != ',')
1535 /* Bad structure-type format. */
1536 return error_type (pp);
1537
1538 (*pp)++; /* Skip the comma. */
1539 list->field.bitpos = read_number (pp, ',');
1540 list->field.bitsize = read_number (pp, ';');
1541
1542 #if 0
1543 /* FIXME-tiemann: Can't the compiler put out something which
1544 lets us distinguish these? (or maybe just not put out anything
1545 for the field). What is the story here? What does the compiler
1546 really do? Also, patch gdb.texinfo for this case; I document
1547 it as a possible problem there. Search for "DBX-style". */
1548
1549 /* This is wrong because this is identical to the symbols
1550 produced for GCC 0-size arrays. For example:
1551 typedef union {
1552 int num;
1553 char str[0];
1554 } foo;
1555 The code which dumped core in such circumstances should be
1556 fixed not to dump core. */
1557
1558 /* g++ -g0 can put out bitpos & bitsize zero for a static
1559 field. This does not give us any way of getting its
1560 class, so we can't know its name. But we can just
1561 ignore the field so we don't dump core and other nasty
1562 stuff. */
1563 if (list->field.bitpos == 0
1564 && list->field.bitsize == 0)
1565 {
1566 complain (&dbx_class_complaint, 0);
1567 /* Ignore this field. */
1568 list = list->next;
1569 }
1570 else
1571 #endif /* 0 */
1572 {
1573 /* Detect an unpacked field and mark it as such.
1574 dbx gives a bit size for all fields.
1575 Note that forward refs cannot be packed,
1576 and treat enums as if they had the width of ints. */
1577 if (TYPE_CODE (list->field.type) != TYPE_CODE_INT
1578 && TYPE_CODE (list->field.type) != TYPE_CODE_ENUM)
1579 list->field.bitsize = 0;
1580 if ((list->field.bitsize == 8 * TYPE_LENGTH (list->field.type)
1581 || (TYPE_CODE (list->field.type) == TYPE_CODE_ENUM
1582 && (list->field.bitsize
1583 == 8 * TYPE_LENGTH (lookup_fundamental_type (objfile, FT_INTEGER)))
1584 )
1585 )
1586 &&
1587 list->field.bitpos % 8 == 0)
1588 list->field.bitsize = 0;
1589 nfields++;
1590 }
1591 }
1592
1593 if (p[1] == ':')
1594 /* chill the list of fields: the last entry (at the head)
1595 is a partially constructed entry which we now scrub. */
1596 list = list->next;
1597
1598 /* Now create the vector of fields, and record how big it is.
1599 We need this info to record proper virtual function table information
1600 for this class's virtual functions. */
1601
1602 TYPE_NFIELDS (type) = nfields;
1603 TYPE_FIELDS (type) = (struct field *)
1604 TYPE_ALLOC (type, sizeof (struct field) * nfields);
1605 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
1606
1607 if (non_public_fields)
1608 {
1609 ALLOCATE_CPLUS_STRUCT_TYPE (type);
1610
1611 TYPE_FIELD_PRIVATE_BITS (type) = (B_TYPE *)
1612 TYPE_ALLOC (type, B_BYTES (nfields));
1613 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
1614
1615 TYPE_FIELD_PROTECTED_BITS (type) = (B_TYPE *)
1616 TYPE_ALLOC (type, B_BYTES (nfields));
1617 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
1618 }
1619
1620 /* Copy the saved-up fields into the field vector. */
1621
1622 for (n = nfields; list; list = list->next)
1623 {
1624 n -= 1;
1625 TYPE_FIELD (type, n) = list->field;
1626 if (list->visibility == 0)
1627 SET_TYPE_FIELD_PRIVATE (type, n);
1628 else if (list->visibility == 1)
1629 SET_TYPE_FIELD_PROTECTED (type, n);
1630 }
1631
1632 /* Now come the method fields, as NAME::methods
1633 where each method is of the form TYPENUM,ARGS,...:PHYSNAME;
1634 At the end, we see a semicolon instead of a field.
1635
1636 For the case of overloaded operators, the format is
1637 op$::*.methods, where $ is the CPLUS_MARKER (usually '$'),
1638 `*' holds the place for an operator name (such as `+=')
1639 and `.' marks the end of the operator name. */
1640 if (p[1] == ':')
1641 {
1642 /* Now, read in the methods. To simplify matters, we
1643 "unread" the name that has been read, so that we can
1644 start from the top. */
1645
1646 ALLOCATE_CPLUS_STRUCT_TYPE (type);
1647 /* For each list of method lists... */
1648 do
1649 {
1650 int i;
1651 struct next_fnfield *sublist = 0;
1652 struct type *look_ahead_type = NULL;
1653 int length = 0;
1654 struct next_fnfieldlist *new_mainlist;
1655 char *main_fn_name;
1656
1657 new_mainlist = (struct next_fnfieldlist *)
1658 alloca (sizeof (struct next_fnfieldlist));
1659 memset (new_mainlist, 0, sizeof (struct next_fnfieldlist));
1660
1661 p = *pp;
1662
1663 /* read in the name. */
1664 while (*p != ':') p++;
1665 if ((*pp)[0] == 'o' && (*pp)[1] == 'p' && (*pp)[2] == CPLUS_MARKER)
1666 {
1667 /* This is a completely wierd case. In order to stuff in the
1668 names that might contain colons (the usual name delimiter),
1669 Mike Tiemann defined a different name format which is
1670 signalled if the identifier is "op$". In that case, the
1671 format is "op$::XXXX." where XXXX is the name. This is
1672 used for names like "+" or "=". YUUUUUUUK! FIXME! */
1673 /* This lets the user type "break operator+".
1674 We could just put in "+" as the name, but that wouldn't
1675 work for "*". */
1676 static char opname[32] = {'o', 'p', CPLUS_MARKER};
1677 char *o = opname + 3;
1678
1679 /* Skip past '::'. */
1680 *pp = p + 2;
1681 if (**pp == '\\') *pp = next_symbol_text ();
1682 p = *pp;
1683 while (*p != '.')
1684 *o++ = *p++;
1685 main_fn_name = savestring (opname, o - opname);
1686 /* Skip past '.' */
1687 *pp = p + 1;
1688 }
1689 else
1690 {
1691 main_fn_name = savestring (*pp, p - *pp);
1692 /* Skip past '::'. */
1693 *pp = p + 2;
1694 }
1695 new_mainlist->fn_fieldlist.name = main_fn_name;
1696
1697 do
1698 {
1699 struct next_fnfield *new_sublist =
1700 (struct next_fnfield *) alloca (sizeof (struct next_fnfield));
1701 memset (new_sublist, 0, sizeof (struct next_fnfield));
1702
1703 /* Check for and handle cretinous dbx symbol name continuation! */
1704 if (look_ahead_type == NULL) /* Normal case. */
1705 {
1706 if (**pp == '\\') *pp = next_symbol_text ();
1707
1708 new_sublist->fn_field.type = read_type (pp, objfile);
1709 if (**pp != ':')
1710 /* Invalid symtab info for method. */
1711 return error_type (pp);
1712 }
1713 else
1714 { /* g++ version 1 kludge */
1715 new_sublist->fn_field.type = look_ahead_type;
1716 look_ahead_type = NULL;
1717 }
1718
1719 *pp += 1;
1720 p = *pp;
1721 while (*p != ';') p++;
1722
1723 /* If this is just a stub, then we don't have the
1724 real name here. */
1725 if (TYPE_FLAGS (new_sublist->fn_field.type) & TYPE_FLAG_STUB)
1726 new_sublist->fn_field.is_stub = 1;
1727 new_sublist->fn_field.physname = savestring (*pp, p - *pp);
1728 *pp = p + 1;
1729
1730 /* Set this method's visibility fields. */
1731 switch (*(*pp)++ - '0')
1732 {
1733 case 0:
1734 new_sublist->fn_field.is_private = 1;
1735 break;
1736 case 1:
1737 new_sublist->fn_field.is_protected = 1;
1738 break;
1739 }
1740
1741 if (**pp == '\\') *pp = next_symbol_text ();
1742 switch (**pp)
1743 {
1744 case 'A': /* Normal functions. */
1745 new_sublist->fn_field.is_const = 0;
1746 new_sublist->fn_field.is_volatile = 0;
1747 (*pp)++;
1748 break;
1749 case 'B': /* `const' member functions. */
1750 new_sublist->fn_field.is_const = 1;
1751 new_sublist->fn_field.is_volatile = 0;
1752 (*pp)++;
1753 break;
1754 case 'C': /* `volatile' member function. */
1755 new_sublist->fn_field.is_const = 0;
1756 new_sublist->fn_field.is_volatile = 1;
1757 (*pp)++;
1758 break;
1759 case 'D': /* `const volatile' member function. */
1760 new_sublist->fn_field.is_const = 1;
1761 new_sublist->fn_field.is_volatile = 1;
1762 (*pp)++;
1763 break;
1764 case '*': /* File compiled with g++ version 1 -- no info */
1765 case '?':
1766 case '.':
1767 break;
1768 default:
1769 complain (&const_vol_complaint, (char *) (long) **pp);
1770 break;
1771 }
1772
1773 switch (*(*pp)++)
1774 {
1775 case '*':
1776 /* virtual member function, followed by index. */
1777 /* The sign bit is set to distinguish pointers-to-methods
1778 from virtual function indicies. Since the array is
1779 in words, the quantity must be shifted left by 1
1780 on 16 bit machine, and by 2 on 32 bit machine, forcing
1781 the sign bit out, and usable as a valid index into
1782 the array. Remove the sign bit here. */
1783 new_sublist->fn_field.voffset =
1784 (0x7fffffff & read_number (pp, ';')) + 2;
1785
1786 if (**pp == '\\') *pp = next_symbol_text ();
1787
1788 if (**pp == ';' || **pp == '\0')
1789 /* Must be g++ version 1. */
1790 new_sublist->fn_field.fcontext = 0;
1791 else
1792 {
1793 /* Figure out from whence this virtual function came.
1794 It may belong to virtual function table of
1795 one of its baseclasses. */
1796 look_ahead_type = read_type (pp, objfile);
1797 if (**pp == ':')
1798 { /* g++ version 1 overloaded methods. */ }
1799 else
1800 {
1801 new_sublist->fn_field.fcontext = look_ahead_type;
1802 if (**pp != ';')
1803 return error_type (pp);
1804 else
1805 ++*pp;
1806 look_ahead_type = NULL;
1807 }
1808 }
1809 break;
1810
1811 case '?':
1812 /* static member function. */
1813 new_sublist->fn_field.voffset = VOFFSET_STATIC;
1814 if (strncmp (new_sublist->fn_field.physname,
1815 main_fn_name, strlen (main_fn_name)))
1816 new_sublist->fn_field.is_stub = 1;
1817 break;
1818
1819 default:
1820 /* error */
1821 complain (&member_fn_complaint, (char *) (long) (*pp)[-1]);
1822 /* Fall through into normal member function. */
1823
1824 case '.':
1825 /* normal member function. */
1826 new_sublist->fn_field.voffset = 0;
1827 new_sublist->fn_field.fcontext = 0;
1828 break;
1829 }
1830
1831 new_sublist->next = sublist;
1832 sublist = new_sublist;
1833 length++;
1834 if (**pp == '\\') *pp = next_symbol_text ();
1835 }
1836 while (**pp != ';' && **pp != '\0');
1837
1838 *pp += 1;
1839
1840 new_mainlist->fn_fieldlist.fn_fields = (struct fn_field *)
1841 obstack_alloc (&objfile -> type_obstack,
1842 sizeof (struct fn_field) * length);
1843 memset (new_mainlist->fn_fieldlist.fn_fields, 0,
1844 sizeof (struct fn_field) * length);
1845 for (i = length; (i--, sublist); sublist = sublist->next)
1846 new_mainlist->fn_fieldlist.fn_fields[i] = sublist->fn_field;
1847
1848 new_mainlist->fn_fieldlist.length = length;
1849 new_mainlist->next = mainlist;
1850 mainlist = new_mainlist;
1851 nfn_fields++;
1852 total_length += length;
1853 if (**pp == '\\') *pp = next_symbol_text ();
1854 }
1855 while (**pp != ';');
1856 }
1857
1858 *pp += 1;
1859
1860
1861 if (nfn_fields)
1862 {
1863 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
1864 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * nfn_fields);
1865 memset (TYPE_FN_FIELDLISTS (type), 0,
1866 sizeof (struct fn_fieldlist) * nfn_fields);
1867 TYPE_NFN_FIELDS (type) = nfn_fields;
1868 TYPE_NFN_FIELDS_TOTAL (type) = total_length;
1869 }
1870
1871 {
1872 int i;
1873 for (i = 0; i < TYPE_N_BASECLASSES (type); ++i)
1874 {
1875 if (TYPE_CODE (TYPE_BASECLASS (type, i)) == TYPE_CODE_UNDEF)
1876 /* @@ Memory leak on objfile->type_obstack? */
1877 return error_type (pp);
1878 TYPE_NFN_FIELDS_TOTAL (type) +=
1879 TYPE_NFN_FIELDS_TOTAL (TYPE_BASECLASS (type, i));
1880 }
1881 }
1882
1883 for (n = nfn_fields; mainlist; mainlist = mainlist->next) {
1884 --n; /* Circumvent Sun3 compiler bug */
1885 TYPE_FN_FIELDLISTS (type)[n] = mainlist->fn_fieldlist;
1886 }
1887
1888 if (**pp == '~')
1889 {
1890 *pp += 1;
1891
1892 if (**pp == '=' || **pp == '+' || **pp == '-')
1893 {
1894 /* Obsolete flags that used to indicate the presence
1895 of constructors and/or destructors. */
1896 *pp += 1;
1897 }
1898
1899 /* Read either a '%' or the final ';'. */
1900 if (*(*pp)++ == '%')
1901 {
1902 /* We'd like to be able to derive the vtable pointer field
1903 from the type information, but when it's inherited, that's
1904 hard. A reason it's hard is because we may read in the
1905 info about a derived class before we read in info about
1906 the base class that provides the vtable pointer field.
1907 Once the base info has been read, we could fill in the info
1908 for the derived classes, but for the fact that by then,
1909 we don't remember who needs what. */
1910
1911 #if 0
1912 int predicted_fieldno = -1;
1913 #endif
1914
1915 /* Now we must record the virtual function table pointer's
1916 field information. */
1917
1918 struct type *t;
1919 int i;
1920
1921
1922 #if 0
1923 {
1924 /* In version 2, we derive the vfield ourselves. */
1925 for (n = 0; n < nfields; n++)
1926 {
1927 if (! strncmp (TYPE_FIELD_NAME (type, n), vptr_name,
1928 sizeof (vptr_name) -1))
1929 {
1930 predicted_fieldno = n;
1931 break;
1932 }
1933 }
1934 if (predicted_fieldno < 0)
1935 for (n = 0; n < TYPE_N_BASECLASSES (type); n++)
1936 if (! TYPE_FIELD_VIRTUAL (type, n)
1937 && TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, n)) >= 0)
1938 {
1939 predicted_fieldno = TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, n));
1940 break;
1941 }
1942 }
1943 #endif
1944
1945 t = read_type (pp, objfile);
1946 p = (*pp)++;
1947 while (*p != '\0' && *p != ';')
1948 p++;
1949 if (*p == '\0')
1950 /* Premature end of symbol. */
1951 return error_type (pp);
1952
1953 TYPE_VPTR_BASETYPE (type) = t;
1954 if (type == t)
1955 {
1956 if (TYPE_FIELD_NAME (t, TYPE_N_BASECLASSES (t)) == 0)
1957 {
1958 /* FIXME-tiemann: what's this? */
1959 #if 0
1960 TYPE_VPTR_FIELDNO (type) = i = TYPE_N_BASECLASSES (t);
1961 #else
1962 error_type (pp);
1963 #endif
1964 }
1965 else for (i = TYPE_NFIELDS (t) - 1; i >= TYPE_N_BASECLASSES (t); --i)
1966 if (! strncmp (TYPE_FIELD_NAME (t, i), vptr_name,
1967 sizeof (vptr_name) - 1))
1968 {
1969 TYPE_VPTR_FIELDNO (type) = i;
1970 break;
1971 }
1972 if (i < 0)
1973 /* Virtual function table field not found. */
1974 return error_type (pp);
1975 }
1976 else
1977 TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
1978
1979 #if 0
1980 if (TYPE_VPTR_FIELDNO (type) != predicted_fieldno)
1981 error ("TYPE_VPTR_FIELDNO miscalculated");
1982 #endif
1983
1984 *pp = p + 1;
1985 }
1986 }
1987
1988 return type;
1989 }
1990
1991 /* Read a definition of an array type,
1992 and create and return a suitable type object.
1993 Also creates a range type which represents the bounds of that
1994 array. */
1995
1996 static struct type *
1997 read_array_type (pp, type, objfile)
1998 register char **pp;
1999 register struct type *type;
2000 struct objfile *objfile;
2001 {
2002 struct type *index_type, *element_type, *range_type;
2003 int lower, upper;
2004 int adjustable = 0;
2005
2006 /* Format of an array type:
2007 "ar<index type>;lower;upper;<array_contents_type>". Put code in
2008 to handle this.
2009
2010 Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
2011 for these, produce a type like float[][]. */
2012
2013 index_type = read_type (pp, objfile);
2014 if (**pp != ';')
2015 /* Improper format of array type decl. */
2016 return error_type (pp);
2017 ++*pp;
2018
2019 if (!(**pp >= '0' && **pp <= '9'))
2020 {
2021 *pp += 1;
2022 adjustable = 1;
2023 }
2024 lower = read_number (pp, ';');
2025
2026 if (!(**pp >= '0' && **pp <= '9'))
2027 {
2028 *pp += 1;
2029 adjustable = 1;
2030 }
2031 upper = read_number (pp, ';');
2032
2033 element_type = read_type (pp, objfile);
2034
2035 if (adjustable)
2036 {
2037 lower = 0;
2038 upper = -1;
2039 }
2040
2041 {
2042 /* Create range type. */
2043 range_type = alloc_type (objfile);
2044 TYPE_CODE (range_type) = TYPE_CODE_RANGE;
2045 TYPE_TARGET_TYPE (range_type) = index_type;
2046
2047 /* This should never be needed. */
2048 TYPE_LENGTH (range_type) = sizeof (int);
2049
2050 TYPE_NFIELDS (range_type) = 2;
2051 TYPE_FIELDS (range_type) = (struct field *)
2052 TYPE_ALLOC (range_type, 2 * sizeof (struct field));
2053 memset (TYPE_FIELDS (range_type), 0, 2 * sizeof (struct field));
2054 TYPE_FIELD_BITPOS (range_type, 0) = lower;
2055 TYPE_FIELD_BITPOS (range_type, 1) = upper;
2056 }
2057
2058 TYPE_CODE (type) = TYPE_CODE_ARRAY;
2059 TYPE_TARGET_TYPE (type) = element_type;
2060 TYPE_LENGTH (type) = (upper - lower + 1) * TYPE_LENGTH (element_type);
2061 TYPE_NFIELDS (type) = 1;
2062 TYPE_FIELDS (type) = (struct field *)
2063 TYPE_ALLOC (type, sizeof (struct field));
2064 memset (TYPE_FIELDS (type), 0, sizeof (struct field));
2065 TYPE_FIELD_TYPE (type, 0) = range_type;
2066
2067 /* If we have an array whose element type is not yet known, but whose
2068 bounds *are* known, record it to be adjusted at the end of the file. */
2069 if (TYPE_LENGTH (element_type) == 0 && !adjustable)
2070 add_undefined_type (type);
2071
2072 return type;
2073 }
2074
2075
2076 /* Read a definition of an enumeration type,
2077 and create and return a suitable type object.
2078 Also defines the symbols that represent the values of the type. */
2079
2080 static struct type *
2081 read_enum_type (pp, type, objfile)
2082 register char **pp;
2083 register struct type *type;
2084 struct objfile *objfile;
2085 {
2086 register char *p;
2087 char *name;
2088 register long n;
2089 register struct symbol *sym;
2090 int nsyms = 0;
2091 struct pending **symlist;
2092 struct pending *osyms, *syms;
2093 int o_nsyms;
2094
2095 #if 0
2096 /* FIXME! The stabs produced by Sun CC merrily define things that ought
2097 to be file-scope, between N_FN entries, using N_LSYM. What's a mother
2098 to do? For now, force all enum values to file scope. */
2099 if (within_function)
2100 symlist = &local_symbols;
2101 else
2102 #endif
2103 symlist = &file_symbols;
2104 osyms = *symlist;
2105 o_nsyms = osyms ? osyms->nsyms : 0;
2106
2107 /* Read the value-names and their values.
2108 The input syntax is NAME:VALUE,NAME:VALUE, and so on.
2109 A semicolon or comma instead of a NAME means the end. */
2110 while (**pp && **pp != ';' && **pp != ',')
2111 {
2112 /* Check for and handle cretinous dbx symbol name continuation! */
2113 if (**pp == '\\') *pp = next_symbol_text ();
2114
2115 p = *pp;
2116 while (*p != ':') p++;
2117 name = obsavestring (*pp, p - *pp, &objfile -> symbol_obstack);
2118 *pp = p + 1;
2119 n = read_number (pp, ',');
2120
2121 sym = (struct symbol *)
2122 obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
2123 memset (sym, 0, sizeof (struct symbol));
2124 SYMBOL_NAME (sym) = name;
2125 SYMBOL_CLASS (sym) = LOC_CONST;
2126 SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
2127 SYMBOL_VALUE (sym) = n;
2128 add_symbol_to_list (sym, symlist);
2129 nsyms++;
2130 }
2131
2132 if (**pp == ';')
2133 (*pp)++; /* Skip the semicolon. */
2134
2135 /* Now fill in the fields of the type-structure. */
2136
2137 TYPE_LENGTH (type) = sizeof (int);
2138 TYPE_CODE (type) = TYPE_CODE_ENUM;
2139 TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
2140 TYPE_NFIELDS (type) = nsyms;
2141 TYPE_FIELDS (type) = (struct field *)
2142 TYPE_ALLOC (type, sizeof (struct field) * nsyms);
2143 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
2144
2145 /* Find the symbols for the values and put them into the type.
2146 The symbols can be found in the symlist that we put them on
2147 to cause them to be defined. osyms contains the old value
2148 of that symlist; everything up to there was defined by us. */
2149 /* Note that we preserve the order of the enum constants, so
2150 that in something like "enum {FOO, LAST_THING=FOO}" we print
2151 FOO, not LAST_THING. */
2152
2153 for (syms = *symlist, n = 0; syms; syms = syms->next)
2154 {
2155 int j = 0;
2156 if (syms == osyms)
2157 j = o_nsyms;
2158 for (; j < syms->nsyms; j++,n++)
2159 {
2160 struct symbol *xsym = syms->symbol[j];
2161 SYMBOL_TYPE (xsym) = type;
2162 TYPE_FIELD_NAME (type, n) = SYMBOL_NAME (xsym);
2163 TYPE_FIELD_VALUE (type, n) = 0;
2164 TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym);
2165 TYPE_FIELD_BITSIZE (type, n) = 0;
2166 }
2167 if (syms == osyms)
2168 break;
2169 }
2170
2171 #if 0
2172 /* This screws up perfectly good C programs with enums. FIXME. */
2173 /* Is this Modula-2's BOOLEAN type? Flag it as such if so. */
2174 if(TYPE_NFIELDS(type) == 2 &&
2175 ((!strcmp(TYPE_FIELD_NAME(type,0),"TRUE") &&
2176 !strcmp(TYPE_FIELD_NAME(type,1),"FALSE")) ||
2177 (!strcmp(TYPE_FIELD_NAME(type,1),"TRUE") &&
2178 !strcmp(TYPE_FIELD_NAME(type,0),"FALSE"))))
2179 TYPE_CODE(type) = TYPE_CODE_BOOL;
2180 #endif
2181
2182 return type;
2183 }
2184
2185 /* Sun's ACC uses a somewhat saner method for specifying the builtin
2186 typedefs in every file (for int, long, etc):
2187
2188 type = b <signed> <width>; <offset>; <nbits>
2189 signed = u or s. Possible c in addition to u or s (for char?).
2190 offset = offset from high order bit to start bit of type.
2191 width is # bytes in object of this type, nbits is # bits in type.
2192
2193 The width/offset stuff appears to be for small objects stored in
2194 larger ones (e.g. `shorts' in `int' registers). We ignore it for now,
2195 FIXME. */
2196
2197 static struct type *
2198 read_sun_builtin_type (pp, typenums, objfile)
2199 char **pp;
2200 int typenums[2];
2201 struct objfile *objfile;
2202 {
2203 int nbits;
2204 int signed_type;
2205
2206 switch (**pp)
2207 {
2208 case 's':
2209 signed_type = 1;
2210 break;
2211 case 'u':
2212 signed_type = 0;
2213 break;
2214 default:
2215 return error_type (pp);
2216 }
2217 (*pp)++;
2218
2219 /* For some odd reason, all forms of char put a c here. This is strange
2220 because no other type has this honor. We can safely ignore this because
2221 we actually determine 'char'acterness by the number of bits specified in
2222 the descriptor. */
2223
2224 if (**pp == 'c')
2225 (*pp)++;
2226
2227 /* The first number appears to be the number of bytes occupied
2228 by this type, except that unsigned short is 4 instead of 2.
2229 Since this information is redundant with the third number,
2230 we will ignore it. */
2231 read_number (pp, ';');
2232
2233 /* The second number is always 0, so ignore it too. */
2234 read_number (pp, ';');
2235
2236 /* The third number is the number of bits for this type. */
2237 nbits = read_number (pp, 0);
2238
2239 /* FIXME. Here we should just be able to make a type of the right
2240 number of bits and signedness. FIXME. */
2241
2242 if (nbits == TARGET_LONG_LONG_BIT)
2243 return (lookup_fundamental_type (objfile,
2244 signed_type? FT_LONG_LONG: FT_UNSIGNED_LONG_LONG));
2245
2246 if (nbits == TARGET_INT_BIT)
2247 {
2248 /* FIXME -- the only way to distinguish `int' from `long'
2249 is to look at its name! */
2250 if (signed_type)
2251 {
2252 if (long_kludge_name && long_kludge_name[0] == 'l' /* long */)
2253 return lookup_fundamental_type (objfile, FT_LONG);
2254 else
2255 return lookup_fundamental_type (objfile, FT_INTEGER);
2256 }
2257 else
2258 {
2259 if (long_kludge_name
2260 && ((long_kludge_name[0] == 'u' /* unsigned */ &&
2261 long_kludge_name[9] == 'l' /* long */)
2262 || (long_kludge_name[0] == 'l' /* long unsigned */)))
2263 return lookup_fundamental_type (objfile, FT_UNSIGNED_LONG);
2264 else
2265 return lookup_fundamental_type (objfile, FT_UNSIGNED_INTEGER);
2266 }
2267 }
2268
2269 if (nbits == TARGET_SHORT_BIT)
2270 return (lookup_fundamental_type (objfile,
2271 signed_type? FT_SHORT: FT_UNSIGNED_SHORT));
2272
2273 if (nbits == TARGET_CHAR_BIT)
2274 return (lookup_fundamental_type (objfile,
2275 signed_type? FT_CHAR: FT_UNSIGNED_CHAR));
2276
2277 if (nbits == 0)
2278 return lookup_fundamental_type (objfile, FT_VOID);
2279
2280 return error_type (pp);
2281 }
2282
2283 static struct type *
2284 read_sun_floating_type (pp, typenums, objfile)
2285 char **pp;
2286 int typenums[2];
2287 struct objfile *objfile;
2288 {
2289 int nbytes;
2290
2291 /* The first number has more details about the type, for example
2292 FN_COMPLEX. See the sun stab.h. */
2293 read_number (pp, ';');
2294
2295 /* The second number is the number of bytes occupied by this type */
2296 nbytes = read_number (pp, ';');
2297
2298 if (**pp != 0)
2299 return error_type (pp);
2300
2301 if (nbytes == TARGET_FLOAT_BIT / TARGET_CHAR_BIT)
2302 return lookup_fundamental_type (objfile, FT_FLOAT);
2303
2304 if (nbytes == TARGET_DOUBLE_BIT / TARGET_CHAR_BIT)
2305 return lookup_fundamental_type (objfile, FT_DBL_PREC_FLOAT);
2306
2307 if (nbytes == TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT)
2308 return lookup_fundamental_type (objfile, FT_EXT_PREC_FLOAT);
2309
2310 return error_type (pp);
2311 }
2312
2313 /* Read a number from the string pointed to by *PP.
2314 The value of *PP is advanced over the number.
2315 If END is nonzero, the character that ends the
2316 number must match END, or an error happens;
2317 and that character is skipped if it does match.
2318 If END is zero, *PP is left pointing to that character.
2319
2320 If the number fits in a long, set *VALUE and set *BITS to 0.
2321 If not, set *BITS to be the number of bits in the number.
2322
2323 If encounter garbage, set *BITS to -1. */
2324
2325 static void
2326 read_huge_number (pp, end, valu, bits)
2327 char **pp;
2328 int end;
2329 long *valu;
2330 int *bits;
2331 {
2332 char *p = *pp;
2333 int sign = 1;
2334 long n = 0;
2335 int radix = 10;
2336 char overflow = 0;
2337 int nbits = 0;
2338 int c;
2339 long upper_limit;
2340
2341 if (*p == '-')
2342 {
2343 sign = -1;
2344 p++;
2345 }
2346
2347 /* Leading zero means octal. GCC uses this to output values larger
2348 than an int (because that would be hard in decimal). */
2349 if (*p == '0')
2350 {
2351 radix = 8;
2352 p++;
2353 }
2354
2355 upper_limit = LONG_MAX / radix;
2356 while ((c = *p++) >= '0' && c <= ('0' + radix))
2357 {
2358 if (n <= upper_limit)
2359 {
2360 n *= radix;
2361 n += c - '0'; /* FIXME this overflows anyway */
2362 }
2363 else
2364 overflow = 1;
2365
2366 /* This depends on large values being output in octal, which is
2367 what GCC does. */
2368 if (radix == 8)
2369 {
2370 if (nbits == 0)
2371 {
2372 if (c == '0')
2373 /* Ignore leading zeroes. */
2374 ;
2375 else if (c == '1')
2376 nbits = 1;
2377 else if (c == '2' || c == '3')
2378 nbits = 2;
2379 else
2380 nbits = 3;
2381 }
2382 else
2383 nbits += 3;
2384 }
2385 }
2386 if (end)
2387 {
2388 if (c && c != end)
2389 {
2390 if (bits != NULL)
2391 *bits = -1;
2392 return;
2393 }
2394 }
2395 else
2396 --p;
2397
2398 *pp = p;
2399 if (overflow)
2400 {
2401 if (nbits == 0)
2402 {
2403 /* Large decimal constants are an error (because it is hard to
2404 count how many bits are in them). */
2405 if (bits != NULL)
2406 *bits = -1;
2407 return;
2408 }
2409
2410 /* -0x7f is the same as 0x80. So deal with it by adding one to
2411 the number of bits. */
2412 if (sign == -1)
2413 ++nbits;
2414 if (bits)
2415 *bits = nbits;
2416 }
2417 else
2418 {
2419 if (valu)
2420 *valu = n * sign;
2421 if (bits)
2422 *bits = 0;
2423 }
2424 }
2425
2426 static struct type *
2427 read_range_type (pp, typenums, objfile)
2428 char **pp;
2429 int typenums[2];
2430 struct objfile *objfile;
2431 {
2432 int rangenums[2];
2433 long n2, n3;
2434 int n2bits, n3bits;
2435 int self_subrange;
2436 struct type *result_type;
2437
2438 /* First comes a type we are a subrange of.
2439 In C it is usually 0, 1 or the type being defined. */
2440 read_type_number (pp, rangenums);
2441 self_subrange = (rangenums[0] == typenums[0] &&
2442 rangenums[1] == typenums[1]);
2443
2444 /* A semicolon should now follow; skip it. */
2445 if (**pp == ';')
2446 (*pp)++;
2447
2448 /* The remaining two operands are usually lower and upper bounds
2449 of the range. But in some special cases they mean something else. */
2450 read_huge_number (pp, ';', &n2, &n2bits);
2451 read_huge_number (pp, ';', &n3, &n3bits);
2452
2453 if (n2bits == -1 || n3bits == -1)
2454 return error_type (pp);
2455
2456 /* If limits are huge, must be large integral type. */
2457 if (n2bits != 0 || n3bits != 0)
2458 {
2459 char got_signed = 0;
2460 char got_unsigned = 0;
2461 /* Number of bits in the type. */
2462 int nbits;
2463
2464 /* Range from 0 to <large number> is an unsigned large integral type. */
2465 if ((n2bits == 0 && n2 == 0) && n3bits != 0)
2466 {
2467 got_unsigned = 1;
2468 nbits = n3bits;
2469 }
2470 /* Range from <large number> to <large number>-1 is a large signed
2471 integral type. */
2472 else if (n2bits != 0 && n3bits != 0 && n2bits == n3bits + 1)
2473 {
2474 got_signed = 1;
2475 nbits = n2bits;
2476 }
2477
2478 /* Check for "long long". */
2479 if (got_signed && nbits == TARGET_LONG_LONG_BIT)
2480 return (lookup_fundamental_type (objfile, FT_LONG_LONG));
2481 if (got_unsigned && nbits == TARGET_LONG_LONG_BIT)
2482 return (lookup_fundamental_type (objfile, FT_UNSIGNED_LONG_LONG));
2483
2484 if (got_signed || got_unsigned)
2485 {
2486 result_type = alloc_type (objfile);
2487 TYPE_LENGTH (result_type) = nbits / TARGET_CHAR_BIT;
2488 TYPE_CODE (result_type) = TYPE_CODE_INT;
2489 if (got_unsigned)
2490 TYPE_FLAGS (result_type) |= TYPE_FLAG_UNSIGNED;
2491 return result_type;
2492 }
2493 else
2494 return error_type (pp);
2495 }
2496
2497 /* A type defined as a subrange of itself, with bounds both 0, is void. */
2498 if (self_subrange && n2 == 0 && n3 == 0)
2499 return (lookup_fundamental_type (objfile, FT_VOID));
2500
2501 /* If n3 is zero and n2 is not, we want a floating type,
2502 and n2 is the width in bytes.
2503
2504 Fortran programs appear to use this for complex types also,
2505 and they give no way to distinguish between double and single-complex!
2506 We don't have complex types, so we would lose on all fortran files!
2507 So return type `double' for all of those. It won't work right
2508 for the complex values, but at least it makes the file loadable.
2509
2510 FIXME, we may be able to distinguish these by their names. FIXME. */
2511
2512 if (n3 == 0 && n2 > 0)
2513 {
2514 if (n2 == sizeof (float))
2515 return (lookup_fundamental_type (objfile, FT_FLOAT));
2516 return (lookup_fundamental_type (objfile, FT_DBL_PREC_FLOAT));
2517 }
2518
2519 /* If the upper bound is -1, it must really be an unsigned int. */
2520
2521 else if (n2 == 0 && n3 == -1)
2522 {
2523 /* FIXME -- the only way to distinguish `unsigned int' from `unsigned
2524 long' is to look at its name! */
2525 if (
2526 long_kludge_name && ((long_kludge_name[0] == 'u' /* unsigned */ &&
2527 long_kludge_name[9] == 'l' /* long */)
2528 || (long_kludge_name[0] == 'l' /* long unsigned */)))
2529 return (lookup_fundamental_type (objfile, FT_UNSIGNED_LONG));
2530 else
2531 return (lookup_fundamental_type (objfile, FT_UNSIGNED_INTEGER));
2532 }
2533
2534 /* Special case: char is defined (Who knows why) as a subrange of
2535 itself with range 0-127. */
2536 else if (self_subrange && n2 == 0 && n3 == 127)
2537 return (lookup_fundamental_type (objfile, FT_CHAR));
2538
2539 /* Assumptions made here: Subrange of self is equivalent to subrange
2540 of int. FIXME: Host and target type-sizes assumed the same. */
2541 /* FIXME: This is the *only* place in GDB that depends on comparing
2542 some type to a builtin type with ==. Fix it! */
2543 else if (n2 == 0
2544 && (self_subrange ||
2545 *dbx_lookup_type (rangenums) == lookup_fundamental_type (objfile, FT_INTEGER)))
2546 {
2547 /* an unsigned type */
2548 #ifdef LONG_LONG
2549 if (n3 == - sizeof (long long))
2550 return (lookup_fundamental_type (objfile, FT_UNSIGNED_LONG_LONG));
2551 #endif
2552 /* FIXME -- the only way to distinguish `unsigned int' from `unsigned
2553 long' is to look at its name! */
2554 if (n3 == (unsigned long)~0L &&
2555 long_kludge_name && ((long_kludge_name[0] == 'u' /* unsigned */ &&
2556 long_kludge_name[9] == 'l' /* long */)
2557 || (long_kludge_name[0] == 'l' /* long unsigned */)))
2558 return (lookup_fundamental_type (objfile, FT_UNSIGNED_LONG));
2559 if (n3 == (unsigned int)~0L)
2560 return (lookup_fundamental_type (objfile, FT_UNSIGNED_INTEGER));
2561 if (n3 == (unsigned short)~0L)
2562 return (lookup_fundamental_type (objfile, FT_UNSIGNED_SHORT));
2563 if (n3 == (unsigned char)~0L)
2564 return (lookup_fundamental_type (objfile, FT_UNSIGNED_CHAR));
2565 }
2566 #ifdef LONG_LONG
2567 else if (n3 == 0 && n2 == -sizeof (long long))
2568 return (lookup_fundamental_type (objfile, FT_LONG_LONG));
2569 #endif
2570 else if (n2 == -n3 -1)
2571 {
2572 /* a signed type */
2573 /* FIXME -- the only way to distinguish `int' from `long' is to look
2574 at its name! */
2575 if ((n3 ==(long)(((unsigned long)1 << (8 * sizeof (long) - 1)) - 1)) &&
2576 long_kludge_name && long_kludge_name[0] == 'l' /* long */)
2577 return (lookup_fundamental_type (objfile, FT_LONG));
2578 if (n3 == (long)(((unsigned long)1 << (8 * sizeof (int) - 1)) - 1))
2579 return (lookup_fundamental_type (objfile, FT_INTEGER));
2580 if (n3 == ( 1 << (8 * sizeof (short) - 1)) - 1)
2581 return (lookup_fundamental_type (objfile, FT_SHORT));
2582 if (n3 == ( 1 << (8 * sizeof (char) - 1)) - 1)
2583 return (lookup_fundamental_type (objfile, FT_SIGNED_CHAR));
2584 }
2585
2586 /* We have a real range type on our hands. Allocate space and
2587 return a real pointer. */
2588
2589 /* At this point I don't have the faintest idea how to deal with
2590 a self_subrange type; I'm going to assume that this is used
2591 as an idiom, and that all of them are special cases. So . . . */
2592 if (self_subrange)
2593 return error_type (pp);
2594
2595 result_type = alloc_type (objfile);
2596
2597 TYPE_CODE (result_type) = TYPE_CODE_RANGE;
2598
2599 TYPE_TARGET_TYPE (result_type) = *dbx_lookup_type(rangenums);
2600 if (TYPE_TARGET_TYPE (result_type) == 0) {
2601 complain (&range_type_base_complaint, (char *) rangenums[1]);
2602 TYPE_TARGET_TYPE (result_type) = lookup_fundamental_type (objfile, FT_INTEGER);
2603 }
2604
2605 TYPE_NFIELDS (result_type) = 2;
2606 TYPE_FIELDS (result_type) = (struct field *)
2607 TYPE_ALLOC (result_type, 2 * sizeof (struct field));
2608 memset (TYPE_FIELDS (result_type), 0, 2 * sizeof (struct field));
2609 TYPE_FIELD_BITPOS (result_type, 0) = n2;
2610 TYPE_FIELD_BITPOS (result_type, 1) = n3;
2611
2612 TYPE_LENGTH (result_type) = TYPE_LENGTH (TYPE_TARGET_TYPE (result_type));
2613
2614 return result_type;
2615 }
2616
2617 /* Read a number from the string pointed to by *PP.
2618 The value of *PP is advanced over the number.
2619 If END is nonzero, the character that ends the
2620 number must match END, or an error happens;
2621 and that character is skipped if it does match.
2622 If END is zero, *PP is left pointing to that character. */
2623
2624 long
2625 read_number (pp, end)
2626 char **pp;
2627 int end;
2628 {
2629 register char *p = *pp;
2630 register long n = 0;
2631 register int c;
2632 int sign = 1;
2633
2634 /* Handle an optional leading minus sign. */
2635
2636 if (*p == '-')
2637 {
2638 sign = -1;
2639 p++;
2640 }
2641
2642 /* Read the digits, as far as they go. */
2643
2644 while ((c = *p++) >= '0' && c <= '9')
2645 {
2646 n *= 10;
2647 n += c - '0';
2648 }
2649 if (end)
2650 {
2651 if (c && c != end)
2652 error ("Invalid symbol data: invalid character \\%03o at symbol pos %d.", c, symnum);
2653 }
2654 else
2655 --p;
2656
2657 *pp = p;
2658 return n * sign;
2659 }
2660
2661 /* Read in an argument list. This is a list of types, separated by commas
2662 and terminated with END. Return the list of types read in, or (struct type
2663 **)-1 if there is an error. */
2664
2665 static struct type **
2666 read_args (pp, end, objfile)
2667 char **pp;
2668 int end;
2669 struct objfile *objfile;
2670 {
2671 /* FIXME! Remove this arbitrary limit! */
2672 struct type *types[1024], **rval; /* allow for fns of 1023 parameters */
2673 int n = 0;
2674
2675 while (**pp != end)
2676 {
2677 if (**pp != ',')
2678 /* Invalid argument list: no ','. */
2679 return (struct type **)-1;
2680 *pp += 1;
2681
2682 /* Check for and handle cretinous dbx symbol name continuation! */
2683 if (**pp == '\\')
2684 *pp = next_symbol_text ();
2685
2686 types[n++] = read_type (pp, objfile);
2687 }
2688 *pp += 1; /* get past `end' (the ':' character) */
2689
2690 if (n == 1)
2691 {
2692 rval = (struct type **) xmalloc (2 * sizeof (struct type *));
2693 }
2694 else if (TYPE_CODE (types[n-1]) != TYPE_CODE_VOID)
2695 {
2696 rval = (struct type **) xmalloc ((n + 1) * sizeof (struct type *));
2697 memset (rval + n, 0, sizeof (struct type *));
2698 }
2699 else
2700 {
2701 rval = (struct type **) xmalloc (n * sizeof (struct type *));
2702 }
2703 memcpy (rval, types, n * sizeof (struct type *));
2704 return rval;
2705 }
2706
2707 /* Add a common block's start address to the offset of each symbol
2708 declared to be in it (by being between a BCOMM/ECOMM pair that uses
2709 the common block name). */
2710
2711 static void
2712 fix_common_block (sym, valu)
2713 struct symbol *sym;
2714 int valu;
2715 {
2716 struct pending *next = (struct pending *) SYMBOL_NAMESPACE (sym);
2717 for ( ; next; next = next->next)
2718 {
2719 register int j;
2720 for (j = next->nsyms - 1; j >= 0; j--)
2721 SYMBOL_VALUE_ADDRESS (next->symbol[j]) += valu;
2722 }
2723 }
2724
2725
2726 \f
2727 /* What about types defined as forward references inside of a small lexical
2728 scope? */
2729 /* Add a type to the list of undefined types to be checked through
2730 once this file has been read in. */
2731
2732 void
2733 add_undefined_type (type)
2734 struct type *type;
2735 {
2736 if (undef_types_length == undef_types_allocated)
2737 {
2738 undef_types_allocated *= 2;
2739 undef_types = (struct type **)
2740 xrealloc ((char *) undef_types,
2741 undef_types_allocated * sizeof (struct type *));
2742 }
2743 undef_types[undef_types_length++] = type;
2744 }
2745
2746 /* Go through each undefined type, see if it's still undefined, and fix it
2747 up if possible. We have two kinds of undefined types:
2748
2749 TYPE_CODE_ARRAY: Array whose target type wasn't defined yet.
2750 Fix: update array length using the element bounds
2751 and the target type's length.
2752 TYPE_CODE_STRUCT, TYPE_CODE_UNION: Structure whose fields were not
2753 yet defined at the time a pointer to it was made.
2754 Fix: Do a full lookup on the struct/union tag. */
2755 void
2756 cleanup_undefined_types ()
2757 {
2758 struct type **type;
2759
2760 for (type = undef_types; type < undef_types + undef_types_length; type++)
2761 {
2762 switch (TYPE_CODE (*type))
2763 {
2764
2765 case TYPE_CODE_STRUCT:
2766 case TYPE_CODE_UNION:
2767 case TYPE_CODE_ENUM:
2768 {
2769 /* Check if it has been defined since. */
2770 if (TYPE_FLAGS (*type) & TYPE_FLAG_STUB)
2771 {
2772 struct pending *ppt;
2773 int i;
2774 /* Name of the type, without "struct" or "union" */
2775 char *typename = TYPE_NAME (*type);
2776
2777 if (!strncmp (typename, "struct ", 7))
2778 typename += 7;
2779 if (!strncmp (typename, "union ", 6))
2780 typename += 6;
2781 if (!strncmp (typename, "enum ", 5))
2782 typename += 5;
2783
2784 for (ppt = file_symbols; ppt; ppt = ppt->next)
2785 {
2786 for (i = 0; i < ppt->nsyms; i++)
2787 {
2788 struct symbol *sym = ppt->symbol[i];
2789
2790 if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
2791 && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
2792 && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
2793 TYPE_CODE (*type))
2794 && !strcmp (SYMBOL_NAME (sym), typename))
2795 {
2796 memcpy (*type, SYMBOL_TYPE (sym),
2797 sizeof (struct type));
2798 }
2799 }
2800 }
2801 }
2802 }
2803 break;
2804
2805 case TYPE_CODE_ARRAY:
2806 {
2807 struct type *range_type;
2808 int lower, upper;
2809
2810 if (TYPE_LENGTH (*type) != 0) /* Better be unknown */
2811 goto badtype;
2812 if (TYPE_NFIELDS (*type) != 1)
2813 goto badtype;
2814 range_type = TYPE_FIELD_TYPE (*type, 0);
2815 if (TYPE_CODE (range_type) != TYPE_CODE_RANGE)
2816 goto badtype;
2817
2818 /* Now recompute the length of the array type, based on its
2819 number of elements and the target type's length. */
2820 lower = TYPE_FIELD_BITPOS (range_type, 0);
2821 upper = TYPE_FIELD_BITPOS (range_type, 1);
2822 TYPE_LENGTH (*type) = (upper - lower + 1)
2823 * TYPE_LENGTH (TYPE_TARGET_TYPE (*type));
2824 }
2825 break;
2826
2827 default:
2828 badtype:
2829 error ("GDB internal error. cleanup_undefined_types with bad type %d.", TYPE_CODE (*type));
2830 break;
2831 }
2832 }
2833 undef_types_length = 0;
2834 }
2835
2836 /* Scan through all of the global symbols defined in the object file,
2837 assigning values to the debugging symbols that need to be assigned
2838 to. Get these symbols from the minimal symbol table. */
2839
2840 void
2841 scan_file_globals (objfile)
2842 struct objfile *objfile;
2843 {
2844 int hash;
2845 struct minimal_symbol *msymbol;
2846 struct symbol *sym, *prev;
2847
2848 if (objfile->msymbols == 0) /* Beware the null file. */
2849 return;
2850
2851 for (msymbol = objfile -> msymbols; msymbol -> name != NULL; msymbol++)
2852 {
2853 QUIT;
2854
2855 prev = NULL;
2856
2857 /* Get the hash index and check all the symbols
2858 under that hash index. */
2859
2860 hash = hashname (msymbol -> name);
2861
2862 for (sym = global_sym_chain[hash]; sym;)
2863 {
2864 if (*(msymbol -> name) == SYMBOL_NAME (sym)[0]
2865 && !strcmp(msymbol -> name + 1, SYMBOL_NAME (sym) + 1))
2866 {
2867 /* Splice this symbol out of the hash chain and
2868 assign the value we have to it. */
2869 if (prev)
2870 {
2871 SYMBOL_VALUE_CHAIN (prev) = SYMBOL_VALUE_CHAIN (sym);
2872 }
2873 else
2874 {
2875 global_sym_chain[hash] = SYMBOL_VALUE_CHAIN (sym);
2876 }
2877
2878 /* Check to see whether we need to fix up a common block. */
2879 /* Note: this code might be executed several times for
2880 the same symbol if there are multiple references. */
2881
2882 if (SYMBOL_CLASS (sym) == LOC_BLOCK)
2883 {
2884 fix_common_block (sym, msymbol -> address);
2885 }
2886 else
2887 {
2888 SYMBOL_VALUE_ADDRESS (sym) = msymbol -> address;
2889 }
2890
2891 if (prev)
2892 {
2893 sym = SYMBOL_VALUE_CHAIN (prev);
2894 }
2895 else
2896 {
2897 sym = global_sym_chain[hash];
2898 }
2899 }
2900 else
2901 {
2902 prev = sym;
2903 sym = SYMBOL_VALUE_CHAIN (sym);
2904 }
2905 }
2906 }
2907 }
2908
2909 /* Initialize anything that needs initializing when starting to read
2910 a fresh piece of a symbol file, e.g. reading in the stuff corresponding
2911 to a psymtab. */
2912
2913 void
2914 stabsread_init ()
2915 {
2916 }
2917
2918 /* Initialize anything that needs initializing when a completely new
2919 symbol file is specified (not just adding some symbols from another
2920 file, e.g. a shared library). */
2921
2922 void
2923 stabsread_new_init ()
2924 {
2925 /* Empty the hash table of global syms looking for values. */
2926 memset (global_sym_chain, 0, sizeof (global_sym_chain));
2927 }
2928
2929 /* Initialize anything that needs initializing at the same time as
2930 start_symtab() is called. */
2931
2932 void start_stabs ()
2933 {
2934 global_stabs = NULL; /* AIX COFF */
2935 /* Leave FILENUM of 0 free for builtin types and this file's types. */
2936 n_this_object_header_files = 1;
2937 type_vector_length = 0;
2938 type_vector = (struct type **) 0;
2939 }
2940
2941 /* Call after end_symtab() */
2942
2943 void end_stabs ()
2944 {
2945 if (type_vector)
2946 {
2947 free ((char *) type_vector);
2948 }
2949 type_vector = 0;
2950 type_vector_length = 0;
2951 previous_stab_code = 0;
2952 }
2953
2954 void
2955 finish_global_stabs (objfile)
2956 struct objfile *objfile;
2957 {
2958 if (global_stabs)
2959 {
2960 patch_block_stabs (global_symbols, global_stabs, objfile);
2961 free ((PTR) global_stabs);
2962 global_stabs = NULL;
2963 }
2964 }
2965
2966 /* Initializer for this module */
2967
2968 void
2969 _initialize_stabsread ()
2970 {
2971 undef_types_allocated = 20;
2972 undef_types_length = 0;
2973 undef_types = (struct type **)
2974 xmalloc (undef_types_allocated * sizeof (struct type *));
2975 }
This page took 0.091216 seconds and 4 git commands to generate.