* configure.ac (mips*-*-*linux*, mips*-*-gnu*): Use mt-mips-gnu.
[deliverable/binutils-gdb.git] / gdb / stabsread.c
1 /* Support routines for decoding "stabs" debugging information format.
2
3 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
5 2008 Free Software Foundation, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 /* Support routines for reading and decoding debugging information in
23 the "stabs" format. This format is used with many systems that use
24 the a.out object file format, as well as some systems that use
25 COFF or ELF where the stabs data is placed in a special section.
26 Avoid placing any object file format specific code in this file. */
27
28 #include "defs.h"
29 #include "gdb_string.h"
30 #include "bfd.h"
31 #include "gdb_obstack.h"
32 #include "symtab.h"
33 #include "gdbtypes.h"
34 #include "expression.h"
35 #include "symfile.h"
36 #include "objfiles.h"
37 #include "aout/stab_gnu.h" /* We always use GNU stabs, not native */
38 #include "libaout.h"
39 #include "aout/aout64.h"
40 #include "gdb-stabs.h"
41 #include "buildsym.h"
42 #include "complaints.h"
43 #include "demangle.h"
44 #include "language.h"
45 #include "doublest.h"
46 #include "cp-abi.h"
47 #include "cp-support.h"
48 #include "gdb_assert.h"
49
50 #include <ctype.h>
51
52 /* Ask stabsread.h to define the vars it normally declares `extern'. */
53 #define EXTERN
54 /**/
55 #include "stabsread.h" /* Our own declarations */
56 #undef EXTERN
57
58 extern void _initialize_stabsread (void);
59
60 /* The routines that read and process a complete stabs for a C struct or
61 C++ class pass lists of data member fields and lists of member function
62 fields in an instance of a field_info structure, as defined below.
63 This is part of some reorganization of low level C++ support and is
64 expected to eventually go away... (FIXME) */
65
66 struct field_info
67 {
68 struct nextfield
69 {
70 struct nextfield *next;
71
72 /* This is the raw visibility from the stab. It is not checked
73 for being one of the visibilities we recognize, so code which
74 examines this field better be able to deal. */
75 int visibility;
76
77 struct field field;
78 }
79 *list;
80 struct next_fnfieldlist
81 {
82 struct next_fnfieldlist *next;
83 struct fn_fieldlist fn_fieldlist;
84 }
85 *fnlist;
86 };
87
88 static void
89 read_one_struct_field (struct field_info *, char **, char *,
90 struct type *, struct objfile *);
91
92 static struct type *dbx_alloc_type (int[2], struct objfile *);
93
94 static long read_huge_number (char **, int, int *, int);
95
96 static struct type *error_type (char **, struct objfile *);
97
98 static void
99 patch_block_stabs (struct pending *, struct pending_stabs *,
100 struct objfile *);
101
102 static void fix_common_block (struct symbol *, int);
103
104 static int read_type_number (char **, int *);
105
106 static struct type *read_type (char **, struct objfile *);
107
108 static struct type *read_range_type (char **, int[2], int, struct objfile *);
109
110 static struct type *read_sun_builtin_type (char **, int[2], struct objfile *);
111
112 static struct type *read_sun_floating_type (char **, int[2],
113 struct objfile *);
114
115 static struct type *read_enum_type (char **, struct type *, struct objfile *);
116
117 static struct type *rs6000_builtin_type (int);
118
119 static int
120 read_member_functions (struct field_info *, char **, struct type *,
121 struct objfile *);
122
123 static int
124 read_struct_fields (struct field_info *, char **, struct type *,
125 struct objfile *);
126
127 static int
128 read_baseclasses (struct field_info *, char **, struct type *,
129 struct objfile *);
130
131 static int
132 read_tilde_fields (struct field_info *, char **, struct type *,
133 struct objfile *);
134
135 static int attach_fn_fields_to_type (struct field_info *, struct type *);
136
137 static int attach_fields_to_type (struct field_info *, struct type *,
138 struct objfile *);
139
140 static struct type *read_struct_type (char **, struct type *,
141 enum type_code,
142 struct objfile *);
143
144 static struct type *read_array_type (char **, struct type *,
145 struct objfile *);
146
147 static struct field *read_args (char **, int, struct objfile *, int *, int *);
148
149 static void add_undefined_type (struct type *, int[2]);
150
151 static int
152 read_cpp_abbrev (struct field_info *, char **, struct type *,
153 struct objfile *);
154
155 static char *find_name_end (char *name);
156
157 static int process_reference (char **string);
158
159 void stabsread_clear_cache (void);
160
161 static const char vptr_name[] = "_vptr$";
162 static const char vb_name[] = "_vb$";
163
164 static void
165 invalid_cpp_abbrev_complaint (const char *arg1)
166 {
167 complaint (&symfile_complaints, _("invalid C++ abbreviation `%s'"), arg1);
168 }
169
170 static void
171 reg_value_complaint (int regnum, int num_regs, const char *sym)
172 {
173 complaint (&symfile_complaints,
174 _("register number %d too large (max %d) in symbol %s"),
175 regnum, num_regs - 1, sym);
176 }
177
178 static void
179 stabs_general_complaint (const char *arg1)
180 {
181 complaint (&symfile_complaints, "%s", arg1);
182 }
183
184 /* Make a list of forward references which haven't been defined. */
185
186 static struct type **undef_types;
187 static int undef_types_allocated;
188 static int undef_types_length;
189 static struct symbol *current_symbol = NULL;
190
191 /* Make a list of nameless types that are undefined.
192 This happens when another type is referenced by its number
193 before this type is actually defined. For instance "t(0,1)=k(0,2)"
194 and type (0,2) is defined only later. */
195
196 struct nat
197 {
198 int typenums[2];
199 struct type *type;
200 };
201 static struct nat *noname_undefs;
202 static int noname_undefs_allocated;
203 static int noname_undefs_length;
204
205 /* Check for and handle cretinous stabs symbol name continuation! */
206 #define STABS_CONTINUE(pp,objfile) \
207 do { \
208 if (**(pp) == '\\' || (**(pp) == '?' && (*(pp))[1] == '\0')) \
209 *(pp) = next_symbol_text (objfile); \
210 } while (0)
211 \f
212
213 /* Look up a dbx type-number pair. Return the address of the slot
214 where the type for that number-pair is stored.
215 The number-pair is in TYPENUMS.
216
217 This can be used for finding the type associated with that pair
218 or for associating a new type with the pair. */
219
220 static struct type **
221 dbx_lookup_type (int typenums[2])
222 {
223 int filenum = typenums[0];
224 int index = typenums[1];
225 unsigned old_len;
226 int real_filenum;
227 struct header_file *f;
228 int f_orig_length;
229
230 if (filenum == -1) /* -1,-1 is for temporary types. */
231 return 0;
232
233 if (filenum < 0 || filenum >= n_this_object_header_files)
234 {
235 complaint (&symfile_complaints,
236 _("Invalid symbol data: type number (%d,%d) out of range at symtab pos %d."),
237 filenum, index, symnum);
238 goto error_return;
239 }
240
241 if (filenum == 0)
242 {
243 if (index < 0)
244 {
245 /* Caller wants address of address of type. We think
246 that negative (rs6k builtin) types will never appear as
247 "lvalues", (nor should they), so we stuff the real type
248 pointer into a temp, and return its address. If referenced,
249 this will do the right thing. */
250 static struct type *temp_type;
251
252 temp_type = rs6000_builtin_type (index);
253 return &temp_type;
254 }
255
256 /* Type is defined outside of header files.
257 Find it in this object file's type vector. */
258 if (index >= type_vector_length)
259 {
260 old_len = type_vector_length;
261 if (old_len == 0)
262 {
263 type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
264 type_vector = (struct type **)
265 xmalloc (type_vector_length * sizeof (struct type *));
266 }
267 while (index >= type_vector_length)
268 {
269 type_vector_length *= 2;
270 }
271 type_vector = (struct type **)
272 xrealloc ((char *) type_vector,
273 (type_vector_length * sizeof (struct type *)));
274 memset (&type_vector[old_len], 0,
275 (type_vector_length - old_len) * sizeof (struct type *));
276 }
277 return (&type_vector[index]);
278 }
279 else
280 {
281 real_filenum = this_object_header_files[filenum];
282
283 if (real_filenum >= N_HEADER_FILES (current_objfile))
284 {
285 static struct type **temp_type_p;
286
287 warning (_("GDB internal error: bad real_filenum"));
288
289 error_return:
290 temp_type_p = &builtin_type_error;
291 return temp_type_p;
292 }
293
294 f = HEADER_FILES (current_objfile) + real_filenum;
295
296 f_orig_length = f->length;
297 if (index >= f_orig_length)
298 {
299 while (index >= f->length)
300 {
301 f->length *= 2;
302 }
303 f->vector = (struct type **)
304 xrealloc ((char *) f->vector, f->length * sizeof (struct type *));
305 memset (&f->vector[f_orig_length], 0,
306 (f->length - f_orig_length) * sizeof (struct type *));
307 }
308 return (&f->vector[index]);
309 }
310 }
311
312 /* Make sure there is a type allocated for type numbers TYPENUMS
313 and return the type object.
314 This can create an empty (zeroed) type object.
315 TYPENUMS may be (-1, -1) to return a new type object that is not
316 put into the type vector, and so may not be referred to by number. */
317
318 static struct type *
319 dbx_alloc_type (int typenums[2], struct objfile *objfile)
320 {
321 struct type **type_addr;
322
323 if (typenums[0] == -1)
324 {
325 return (alloc_type (objfile));
326 }
327
328 type_addr = dbx_lookup_type (typenums);
329
330 /* If we are referring to a type not known at all yet,
331 allocate an empty type for it.
332 We will fill it in later if we find out how. */
333 if (*type_addr == 0)
334 {
335 *type_addr = alloc_type (objfile);
336 }
337
338 return (*type_addr);
339 }
340
341 /* for all the stabs in a given stab vector, build appropriate types
342 and fix their symbols in given symbol vector. */
343
344 static void
345 patch_block_stabs (struct pending *symbols, struct pending_stabs *stabs,
346 struct objfile *objfile)
347 {
348 int ii;
349 char *name;
350 char *pp;
351 struct symbol *sym;
352
353 if (stabs)
354 {
355
356 /* for all the stab entries, find their corresponding symbols and
357 patch their types! */
358
359 for (ii = 0; ii < stabs->count; ++ii)
360 {
361 name = stabs->stab[ii];
362 pp = (char *) strchr (name, ':');
363 gdb_assert (pp); /* Must find a ':' or game's over. */
364 while (pp[1] == ':')
365 {
366 pp += 2;
367 pp = (char *) strchr (pp, ':');
368 }
369 sym = find_symbol_in_list (symbols, name, pp - name);
370 if (!sym)
371 {
372 /* FIXME-maybe: it would be nice if we noticed whether
373 the variable was defined *anywhere*, not just whether
374 it is defined in this compilation unit. But neither
375 xlc or GCC seem to need such a definition, and until
376 we do psymtabs (so that the minimal symbols from all
377 compilation units are available now), I'm not sure
378 how to get the information. */
379
380 /* On xcoff, if a global is defined and never referenced,
381 ld will remove it from the executable. There is then
382 a N_GSYM stab for it, but no regular (C_EXT) symbol. */
383 sym = (struct symbol *)
384 obstack_alloc (&objfile->objfile_obstack,
385 sizeof (struct symbol));
386
387 memset (sym, 0, sizeof (struct symbol));
388 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
389 SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
390 DEPRECATED_SYMBOL_NAME (sym) =
391 obsavestring (name, pp - name, &objfile->objfile_obstack);
392 pp += 2;
393 if (*(pp - 1) == 'F' || *(pp - 1) == 'f')
394 {
395 /* I don't think the linker does this with functions,
396 so as far as I know this is never executed.
397 But it doesn't hurt to check. */
398 SYMBOL_TYPE (sym) =
399 lookup_function_type (read_type (&pp, objfile));
400 }
401 else
402 {
403 SYMBOL_TYPE (sym) = read_type (&pp, objfile);
404 }
405 add_symbol_to_list (sym, &global_symbols);
406 }
407 else
408 {
409 pp += 2;
410 if (*(pp - 1) == 'F' || *(pp - 1) == 'f')
411 {
412 SYMBOL_TYPE (sym) =
413 lookup_function_type (read_type (&pp, objfile));
414 }
415 else
416 {
417 SYMBOL_TYPE (sym) = read_type (&pp, objfile);
418 }
419 }
420 }
421 }
422 }
423 \f
424
425 /* Read a number by which a type is referred to in dbx data,
426 or perhaps read a pair (FILENUM, TYPENUM) in parentheses.
427 Just a single number N is equivalent to (0,N).
428 Return the two numbers by storing them in the vector TYPENUMS.
429 TYPENUMS will then be used as an argument to dbx_lookup_type.
430
431 Returns 0 for success, -1 for error. */
432
433 static int
434 read_type_number (char **pp, int *typenums)
435 {
436 int nbits;
437 if (**pp == '(')
438 {
439 (*pp)++;
440 typenums[0] = read_huge_number (pp, ',', &nbits, 0);
441 if (nbits != 0)
442 return -1;
443 typenums[1] = read_huge_number (pp, ')', &nbits, 0);
444 if (nbits != 0)
445 return -1;
446 }
447 else
448 {
449 typenums[0] = 0;
450 typenums[1] = read_huge_number (pp, 0, &nbits, 0);
451 if (nbits != 0)
452 return -1;
453 }
454 return 0;
455 }
456 \f
457
458 #define VISIBILITY_PRIVATE '0' /* Stabs character for private field */
459 #define VISIBILITY_PROTECTED '1' /* Stabs character for protected fld */
460 #define VISIBILITY_PUBLIC '2' /* Stabs character for public field */
461 #define VISIBILITY_IGNORE '9' /* Optimized out or zero length */
462
463 /* Structure for storing pointers to reference definitions for fast lookup
464 during "process_later". */
465
466 struct ref_map
467 {
468 char *stabs;
469 CORE_ADDR value;
470 struct symbol *sym;
471 };
472
473 #define MAX_CHUNK_REFS 100
474 #define REF_CHUNK_SIZE (MAX_CHUNK_REFS * sizeof (struct ref_map))
475 #define REF_MAP_SIZE(ref_chunk) ((ref_chunk) * REF_CHUNK_SIZE)
476
477 static struct ref_map *ref_map;
478
479 /* Ptr to free cell in chunk's linked list. */
480 static int ref_count = 0;
481
482 /* Number of chunks malloced. */
483 static int ref_chunk = 0;
484
485 /* This file maintains a cache of stabs aliases found in the symbol
486 table. If the symbol table changes, this cache must be cleared
487 or we are left holding onto data in invalid obstacks. */
488 void
489 stabsread_clear_cache (void)
490 {
491 ref_count = 0;
492 ref_chunk = 0;
493 }
494
495 /* Create array of pointers mapping refids to symbols and stab strings.
496 Add pointers to reference definition symbols and/or their values as we
497 find them, using their reference numbers as our index.
498 These will be used later when we resolve references. */
499 void
500 ref_add (int refnum, struct symbol *sym, char *stabs, CORE_ADDR value)
501 {
502 if (ref_count == 0)
503 ref_chunk = 0;
504 if (refnum >= ref_count)
505 ref_count = refnum + 1;
506 if (ref_count > ref_chunk * MAX_CHUNK_REFS)
507 {
508 int new_slots = ref_count - ref_chunk * MAX_CHUNK_REFS;
509 int new_chunks = new_slots / MAX_CHUNK_REFS + 1;
510 ref_map = (struct ref_map *)
511 xrealloc (ref_map, REF_MAP_SIZE (ref_chunk + new_chunks));
512 memset (ref_map + ref_chunk * MAX_CHUNK_REFS, 0, new_chunks * REF_CHUNK_SIZE);
513 ref_chunk += new_chunks;
514 }
515 ref_map[refnum].stabs = stabs;
516 ref_map[refnum].sym = sym;
517 ref_map[refnum].value = value;
518 }
519
520 /* Return defined sym for the reference REFNUM. */
521 struct symbol *
522 ref_search (int refnum)
523 {
524 if (refnum < 0 || refnum > ref_count)
525 return 0;
526 return ref_map[refnum].sym;
527 }
528
529 /* Parse a reference id in STRING and return the resulting
530 reference number. Move STRING beyond the reference id. */
531
532 static int
533 process_reference (char **string)
534 {
535 char *p;
536 int refnum = 0;
537
538 if (**string != '#')
539 return 0;
540
541 /* Advance beyond the initial '#'. */
542 p = *string + 1;
543
544 /* Read number as reference id. */
545 while (*p && isdigit (*p))
546 {
547 refnum = refnum * 10 + *p - '0';
548 p++;
549 }
550 *string = p;
551 return refnum;
552 }
553
554 /* If STRING defines a reference, store away a pointer to the reference
555 definition for later use. Return the reference number. */
556
557 int
558 symbol_reference_defined (char **string)
559 {
560 char *p = *string;
561 int refnum = 0;
562
563 refnum = process_reference (&p);
564
565 /* Defining symbols end in '=' */
566 if (*p == '=')
567 {
568 /* Symbol is being defined here. */
569 *string = p + 1;
570 return refnum;
571 }
572 else
573 {
574 /* Must be a reference. Either the symbol has already been defined,
575 or this is a forward reference to it. */
576 *string = p;
577 return -1;
578 }
579 }
580
581 struct symbol *
582 define_symbol (CORE_ADDR valu, char *string, int desc, int type,
583 struct objfile *objfile)
584 {
585 struct gdbarch *gdbarch = get_objfile_arch (objfile);
586 struct symbol *sym;
587 char *p = (char *) find_name_end (string);
588 int deftype;
589 int synonym = 0;
590 int i;
591
592 /* We would like to eliminate nameless symbols, but keep their types.
593 E.g. stab entry ":t10=*2" should produce a type 10, which is a pointer
594 to type 2, but, should not create a symbol to address that type. Since
595 the symbol will be nameless, there is no way any user can refer to it. */
596
597 int nameless;
598
599 /* Ignore syms with empty names. */
600 if (string[0] == 0)
601 return 0;
602
603 /* Ignore old-style symbols from cc -go */
604 if (p == 0)
605 return 0;
606
607 while (p[1] == ':')
608 {
609 p += 2;
610 p = strchr (p, ':');
611 }
612
613 /* If a nameless stab entry, all we need is the type, not the symbol.
614 e.g. ":t10=*2" or a nameless enum like " :T16=ered:0,green:1,blue:2,;" */
615 nameless = (p == string || ((string[0] == ' ') && (string[1] == ':')));
616
617 current_symbol = sym = (struct symbol *)
618 obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
619 memset (sym, 0, sizeof (struct symbol));
620
621 switch (type & N_TYPE)
622 {
623 case N_TEXT:
624 SYMBOL_SECTION (sym) = SECT_OFF_TEXT (objfile);
625 break;
626 case N_DATA:
627 SYMBOL_SECTION (sym) = SECT_OFF_DATA (objfile);
628 break;
629 case N_BSS:
630 SYMBOL_SECTION (sym) = SECT_OFF_BSS (objfile);
631 break;
632 }
633
634 if (processing_gcc_compilation)
635 {
636 /* GCC 2.x puts the line number in desc. SunOS apparently puts in the
637 number of bytes occupied by a type or object, which we ignore. */
638 SYMBOL_LINE (sym) = desc;
639 }
640 else
641 {
642 SYMBOL_LINE (sym) = 0; /* unknown */
643 }
644
645 if (is_cplus_marker (string[0]))
646 {
647 /* Special GNU C++ names. */
648 switch (string[1])
649 {
650 case 't':
651 DEPRECATED_SYMBOL_NAME (sym) = obsavestring ("this", strlen ("this"),
652 &objfile->objfile_obstack);
653 break;
654
655 case 'v': /* $vtbl_ptr_type */
656 /* Was: DEPRECATED_SYMBOL_NAME (sym) = "vptr"; */
657 goto normal;
658
659 case 'e':
660 DEPRECATED_SYMBOL_NAME (sym) = obsavestring ("eh_throw", strlen ("eh_throw"),
661 &objfile->objfile_obstack);
662 break;
663
664 case '_':
665 /* This was an anonymous type that was never fixed up. */
666 goto normal;
667
668 case 'X':
669 /* SunPRO (3.0 at least) static variable encoding. */
670 if (gdbarch_static_transform_name_p (gdbarch))
671 goto normal;
672 /* ... fall through ... */
673
674 default:
675 complaint (&symfile_complaints, _("Unknown C++ symbol name `%s'"),
676 string);
677 goto normal; /* Do *something* with it */
678 }
679 }
680 else
681 {
682 normal:
683 SYMBOL_LANGUAGE (sym) = current_subfile->language;
684 SYMBOL_SET_NAMES (sym, string, p - string, objfile);
685 }
686 p++;
687
688 /* Determine the type of name being defined. */
689 #if 0
690 /* Getting GDB to correctly skip the symbol on an undefined symbol
691 descriptor and not ever dump core is a very dodgy proposition if
692 we do things this way. I say the acorn RISC machine can just
693 fix their compiler. */
694 /* The Acorn RISC machine's compiler can put out locals that don't
695 start with "234=" or "(3,4)=", so assume anything other than the
696 deftypes we know how to handle is a local. */
697 if (!strchr ("cfFGpPrStTvVXCR", *p))
698 #else
699 if (isdigit (*p) || *p == '(' || *p == '-')
700 #endif
701 deftype = 'l';
702 else
703 deftype = *p++;
704
705 switch (deftype)
706 {
707 case 'c':
708 /* c is a special case, not followed by a type-number.
709 SYMBOL:c=iVALUE for an integer constant symbol.
710 SYMBOL:c=rVALUE for a floating constant symbol.
711 SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
712 e.g. "b:c=e6,0" for "const b = blob1"
713 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
714 if (*p != '=')
715 {
716 SYMBOL_CLASS (sym) = LOC_CONST;
717 SYMBOL_TYPE (sym) = error_type (&p, objfile);
718 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
719 add_symbol_to_list (sym, &file_symbols);
720 return sym;
721 }
722 ++p;
723 switch (*p++)
724 {
725 case 'r':
726 {
727 double d = atof (p);
728 gdb_byte *dbl_valu;
729 struct type *dbl_type;
730
731 /* FIXME-if-picky-about-floating-accuracy: Should be using
732 target arithmetic to get the value. real.c in GCC
733 probably has the necessary code. */
734
735 dbl_type = builtin_type (gdbarch)->builtin_double;
736 dbl_valu =
737 obstack_alloc (&objfile->objfile_obstack,
738 TYPE_LENGTH (dbl_type));
739 store_typed_floating (dbl_valu, dbl_type, d);
740
741 SYMBOL_TYPE (sym) = dbl_type;
742 SYMBOL_VALUE_BYTES (sym) = dbl_valu;
743 SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
744 }
745 break;
746 case 'i':
747 {
748 /* Defining integer constants this way is kind of silly,
749 since 'e' constants allows the compiler to give not
750 only the value, but the type as well. C has at least
751 int, long, unsigned int, and long long as constant
752 types; other languages probably should have at least
753 unsigned as well as signed constants. */
754
755 SYMBOL_TYPE (sym) = builtin_type (gdbarch)->builtin_long;
756 SYMBOL_VALUE (sym) = atoi (p);
757 SYMBOL_CLASS (sym) = LOC_CONST;
758 }
759 break;
760 case 'e':
761 /* SYMBOL:c=eTYPE,INTVALUE for a constant symbol whose value
762 can be represented as integral.
763 e.g. "b:c=e6,0" for "const b = blob1"
764 (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
765 {
766 SYMBOL_CLASS (sym) = LOC_CONST;
767 SYMBOL_TYPE (sym) = read_type (&p, objfile);
768
769 if (*p != ',')
770 {
771 SYMBOL_TYPE (sym) = error_type (&p, objfile);
772 break;
773 }
774 ++p;
775
776 /* If the value is too big to fit in an int (perhaps because
777 it is unsigned), or something like that, we silently get
778 a bogus value. The type and everything else about it is
779 correct. Ideally, we should be using whatever we have
780 available for parsing unsigned and long long values,
781 however. */
782 SYMBOL_VALUE (sym) = atoi (p);
783 }
784 break;
785 default:
786 {
787 SYMBOL_CLASS (sym) = LOC_CONST;
788 SYMBOL_TYPE (sym) = error_type (&p, objfile);
789 }
790 }
791 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
792 add_symbol_to_list (sym, &file_symbols);
793 return sym;
794
795 case 'C':
796 /* The name of a caught exception. */
797 SYMBOL_TYPE (sym) = read_type (&p, objfile);
798 SYMBOL_CLASS (sym) = LOC_LABEL;
799 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
800 SYMBOL_VALUE_ADDRESS (sym) = valu;
801 add_symbol_to_list (sym, &local_symbols);
802 break;
803
804 case 'f':
805 /* A static function definition. */
806 SYMBOL_TYPE (sym) = read_type (&p, objfile);
807 SYMBOL_CLASS (sym) = LOC_BLOCK;
808 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
809 add_symbol_to_list (sym, &file_symbols);
810 /* fall into process_function_types. */
811
812 process_function_types:
813 /* Function result types are described as the result type in stabs.
814 We need to convert this to the function-returning-type-X type
815 in GDB. E.g. "int" is converted to "function returning int". */
816 if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
817 SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
818
819 /* All functions in C++ have prototypes. Stabs does not offer an
820 explicit way to identify prototyped or unprototyped functions,
821 but both GCC and Sun CC emit stabs for the "call-as" type rather
822 than the "declared-as" type for unprototyped functions, so
823 we treat all functions as if they were prototyped. This is used
824 primarily for promotion when calling the function from GDB. */
825 TYPE_FLAGS (SYMBOL_TYPE (sym)) |= TYPE_FLAG_PROTOTYPED;
826
827 /* fall into process_prototype_types */
828
829 process_prototype_types:
830 /* Sun acc puts declared types of arguments here. */
831 if (*p == ';')
832 {
833 struct type *ftype = SYMBOL_TYPE (sym);
834 int nsemi = 0;
835 int nparams = 0;
836 char *p1 = p;
837
838 /* Obtain a worst case guess for the number of arguments
839 by counting the semicolons. */
840 while (*p1)
841 {
842 if (*p1++ == ';')
843 nsemi++;
844 }
845
846 /* Allocate parameter information fields and fill them in. */
847 TYPE_FIELDS (ftype) = (struct field *)
848 TYPE_ALLOC (ftype, nsemi * sizeof (struct field));
849 while (*p++ == ';')
850 {
851 struct type *ptype;
852
853 /* A type number of zero indicates the start of varargs.
854 FIXME: GDB currently ignores vararg functions. */
855 if (p[0] == '0' && p[1] == '\0')
856 break;
857 ptype = read_type (&p, objfile);
858
859 /* The Sun compilers mark integer arguments, which should
860 be promoted to the width of the calling conventions, with
861 a type which references itself. This type is turned into
862 a TYPE_CODE_VOID type by read_type, and we have to turn
863 it back into builtin_int here.
864 FIXME: Do we need a new builtin_promoted_int_arg ? */
865 if (TYPE_CODE (ptype) == TYPE_CODE_VOID)
866 ptype = builtin_type (gdbarch)->builtin_int;
867 TYPE_FIELD_TYPE (ftype, nparams) = ptype;
868 TYPE_FIELD_ARTIFICIAL (ftype, nparams++) = 0;
869 }
870 TYPE_NFIELDS (ftype) = nparams;
871 TYPE_FLAGS (ftype) |= TYPE_FLAG_PROTOTYPED;
872 }
873 break;
874
875 case 'F':
876 /* A global function definition. */
877 SYMBOL_TYPE (sym) = read_type (&p, objfile);
878 SYMBOL_CLASS (sym) = LOC_BLOCK;
879 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
880 add_symbol_to_list (sym, &global_symbols);
881 goto process_function_types;
882
883 case 'G':
884 /* For a class G (global) symbol, it appears that the
885 value is not correct. It is necessary to search for the
886 corresponding linker definition to find the value.
887 These definitions appear at the end of the namelist. */
888 SYMBOL_TYPE (sym) = read_type (&p, objfile);
889 SYMBOL_CLASS (sym) = LOC_STATIC;
890 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
891 /* Don't add symbol references to global_sym_chain.
892 Symbol references don't have valid names and wont't match up with
893 minimal symbols when the global_sym_chain is relocated.
894 We'll fixup symbol references when we fixup the defining symbol. */
895 if (DEPRECATED_SYMBOL_NAME (sym) && DEPRECATED_SYMBOL_NAME (sym)[0] != '#')
896 {
897 i = hashname (DEPRECATED_SYMBOL_NAME (sym));
898 SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
899 global_sym_chain[i] = sym;
900 }
901 add_symbol_to_list (sym, &global_symbols);
902 break;
903
904 /* This case is faked by a conditional above,
905 when there is no code letter in the dbx data.
906 Dbx data never actually contains 'l'. */
907 case 's':
908 case 'l':
909 SYMBOL_TYPE (sym) = read_type (&p, objfile);
910 SYMBOL_CLASS (sym) = LOC_LOCAL;
911 SYMBOL_VALUE (sym) = valu;
912 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
913 add_symbol_to_list (sym, &local_symbols);
914 break;
915
916 case 'p':
917 if (*p == 'F')
918 /* pF is a two-letter code that means a function parameter in Fortran.
919 The type-number specifies the type of the return value.
920 Translate it into a pointer-to-function type. */
921 {
922 p++;
923 SYMBOL_TYPE (sym)
924 = lookup_pointer_type
925 (lookup_function_type (read_type (&p, objfile)));
926 }
927 else
928 SYMBOL_TYPE (sym) = read_type (&p, objfile);
929
930 SYMBOL_CLASS (sym) = LOC_ARG;
931 SYMBOL_VALUE (sym) = valu;
932 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
933 SYMBOL_IS_ARGUMENT (sym) = 1;
934 add_symbol_to_list (sym, &local_symbols);
935
936 if (gdbarch_byte_order (gdbarch) != BFD_ENDIAN_BIG)
937 {
938 /* On little-endian machines, this crud is never necessary,
939 and, if the extra bytes contain garbage, is harmful. */
940 break;
941 }
942
943 /* If it's gcc-compiled, if it says `short', believe it. */
944 if (processing_gcc_compilation
945 || gdbarch_believe_pcc_promotion (gdbarch))
946 break;
947
948 if (!gdbarch_believe_pcc_promotion (gdbarch))
949 {
950 /* If PCC says a parameter is a short or a char, it is
951 really an int. */
952 if (TYPE_LENGTH (SYMBOL_TYPE (sym))
953 < gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT
954 && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
955 {
956 SYMBOL_TYPE (sym) =
957 TYPE_UNSIGNED (SYMBOL_TYPE (sym))
958 ? builtin_type (gdbarch)->builtin_unsigned_int
959 : builtin_type (gdbarch)->builtin_int;
960 }
961 break;
962 }
963
964 case 'P':
965 /* acc seems to use P to declare the prototypes of functions that
966 are referenced by this file. gdb is not prepared to deal
967 with this extra information. FIXME, it ought to. */
968 if (type == N_FUN)
969 {
970 SYMBOL_TYPE (sym) = read_type (&p, objfile);
971 goto process_prototype_types;
972 }
973 /*FALLTHROUGH */
974
975 case 'R':
976 /* Parameter which is in a register. */
977 SYMBOL_TYPE (sym) = read_type (&p, objfile);
978 SYMBOL_CLASS (sym) = LOC_REGISTER;
979 SYMBOL_IS_ARGUMENT (sym) = 1;
980 SYMBOL_VALUE (sym) = gdbarch_stab_reg_to_regnum (current_gdbarch, valu);
981 if (SYMBOL_VALUE (sym) >= gdbarch_num_regs (current_gdbarch)
982 + gdbarch_num_pseudo_regs (current_gdbarch))
983 {
984 reg_value_complaint (SYMBOL_VALUE (sym),
985 gdbarch_num_regs (current_gdbarch)
986 + gdbarch_num_pseudo_regs (current_gdbarch),
987 SYMBOL_PRINT_NAME (sym));
988 SYMBOL_VALUE (sym) = gdbarch_sp_regnum (current_gdbarch);
989 /* Known safe, though useless */
990 }
991 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
992 add_symbol_to_list (sym, &local_symbols);
993 break;
994
995 case 'r':
996 /* Register variable (either global or local). */
997 SYMBOL_TYPE (sym) = read_type (&p, objfile);
998 SYMBOL_CLASS (sym) = LOC_REGISTER;
999 SYMBOL_VALUE (sym) = gdbarch_stab_reg_to_regnum (current_gdbarch, valu);
1000 if (SYMBOL_VALUE (sym) >= gdbarch_num_regs (current_gdbarch)
1001 + gdbarch_num_pseudo_regs (current_gdbarch))
1002 {
1003 reg_value_complaint (SYMBOL_VALUE (sym),
1004 gdbarch_num_regs (current_gdbarch)
1005 + gdbarch_num_pseudo_regs (current_gdbarch),
1006 SYMBOL_PRINT_NAME (sym));
1007 SYMBOL_VALUE (sym) = gdbarch_sp_regnum (current_gdbarch);
1008 /* Known safe, though useless */
1009 }
1010 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1011 if (within_function)
1012 {
1013 /* Sun cc uses a pair of symbols, one 'p' and one 'r', with
1014 the same name to represent an argument passed in a
1015 register. GCC uses 'P' for the same case. So if we find
1016 such a symbol pair we combine it into one 'P' symbol.
1017 For Sun cc we need to do this regardless of
1018 stabs_argument_has_addr, because the compiler puts out
1019 the 'p' symbol even if it never saves the argument onto
1020 the stack.
1021
1022 On most machines, we want to preserve both symbols, so
1023 that we can still get information about what is going on
1024 with the stack (VAX for computing args_printed, using
1025 stack slots instead of saved registers in backtraces,
1026 etc.).
1027
1028 Note that this code illegally combines
1029 main(argc) struct foo argc; { register struct foo argc; }
1030 but this case is considered pathological and causes a warning
1031 from a decent compiler. */
1032
1033 if (local_symbols
1034 && local_symbols->nsyms > 0
1035 && gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym)))
1036 {
1037 struct symbol *prev_sym;
1038 prev_sym = local_symbols->symbol[local_symbols->nsyms - 1];
1039 if ((SYMBOL_CLASS (prev_sym) == LOC_REF_ARG
1040 || SYMBOL_CLASS (prev_sym) == LOC_ARG)
1041 && strcmp (DEPRECATED_SYMBOL_NAME (prev_sym),
1042 DEPRECATED_SYMBOL_NAME (sym)) == 0)
1043 {
1044 SYMBOL_CLASS (prev_sym) = LOC_REGISTER;
1045 /* Use the type from the LOC_REGISTER; that is the type
1046 that is actually in that register. */
1047 SYMBOL_TYPE (prev_sym) = SYMBOL_TYPE (sym);
1048 SYMBOL_VALUE (prev_sym) = SYMBOL_VALUE (sym);
1049 sym = prev_sym;
1050 break;
1051 }
1052 }
1053 add_symbol_to_list (sym, &local_symbols);
1054 }
1055 else
1056 add_symbol_to_list (sym, &file_symbols);
1057 break;
1058
1059 case 'S':
1060 /* Static symbol at top level of file */
1061 SYMBOL_TYPE (sym) = read_type (&p, objfile);
1062 SYMBOL_CLASS (sym) = LOC_STATIC;
1063 SYMBOL_VALUE_ADDRESS (sym) = valu;
1064 if (gdbarch_static_transform_name_p (gdbarch)
1065 && gdbarch_static_transform_name (gdbarch,
1066 DEPRECATED_SYMBOL_NAME (sym))
1067 != DEPRECATED_SYMBOL_NAME (sym))
1068 {
1069 struct minimal_symbol *msym;
1070 msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), NULL, objfile);
1071 if (msym != NULL)
1072 {
1073 DEPRECATED_SYMBOL_NAME (sym) = gdbarch_static_transform_name
1074 (gdbarch,
1075 DEPRECATED_SYMBOL_NAME (sym));
1076 SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym);
1077 }
1078 }
1079 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1080 add_symbol_to_list (sym, &file_symbols);
1081 break;
1082
1083 case 't':
1084 /* In Ada, there is no distinction between typedef and non-typedef;
1085 any type declaration implicitly has the equivalent of a typedef,
1086 and thus 't' is in fact equivalent to 'Tt'.
1087
1088 Therefore, for Ada units, we check the character immediately
1089 before the 't', and if we do not find a 'T', then make sure to
1090 create the associated symbol in the STRUCT_DOMAIN ('t' definitions
1091 will be stored in the VAR_DOMAIN). If the symbol was indeed
1092 defined as 'Tt' then the STRUCT_DOMAIN symbol will be created
1093 elsewhere, so we don't need to take care of that.
1094
1095 This is important to do, because of forward references:
1096 The cleanup of undefined types stored in undef_types only uses
1097 STRUCT_DOMAIN symbols to perform the replacement. */
1098 synonym = (SYMBOL_LANGUAGE (sym) == language_ada && p[-2] != 'T');
1099
1100 /* Typedef */
1101 SYMBOL_TYPE (sym) = read_type (&p, objfile);
1102
1103 /* For a nameless type, we don't want a create a symbol, thus we
1104 did not use `sym'. Return without further processing. */
1105 if (nameless)
1106 return NULL;
1107
1108 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
1109 SYMBOL_VALUE (sym) = valu;
1110 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1111 /* C++ vagaries: we may have a type which is derived from
1112 a base type which did not have its name defined when the
1113 derived class was output. We fill in the derived class's
1114 base part member's name here in that case. */
1115 if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
1116 if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
1117 || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)
1118 && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
1119 {
1120 int j;
1121 for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
1122 if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
1123 TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
1124 type_name_no_tag (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
1125 }
1126
1127 if (TYPE_NAME (SYMBOL_TYPE (sym)) == NULL)
1128 {
1129 /* gcc-2.6 or later (when using -fvtable-thunks)
1130 emits a unique named type for a vtable entry.
1131 Some gdb code depends on that specific name. */
1132 extern const char vtbl_ptr_name[];
1133
1134 if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR
1135 && strcmp (DEPRECATED_SYMBOL_NAME (sym), vtbl_ptr_name))
1136 || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FUNC)
1137 {
1138 /* If we are giving a name to a type such as "pointer to
1139 foo" or "function returning foo", we better not set
1140 the TYPE_NAME. If the program contains "typedef char
1141 *caddr_t;", we don't want all variables of type char
1142 * to print as caddr_t. This is not just a
1143 consequence of GDB's type management; PCC and GCC (at
1144 least through version 2.4) both output variables of
1145 either type char * or caddr_t with the type number
1146 defined in the 't' symbol for caddr_t. If a future
1147 compiler cleans this up it GDB is not ready for it
1148 yet, but if it becomes ready we somehow need to
1149 disable this check (without breaking the PCC/GCC2.4
1150 case).
1151
1152 Sigh.
1153
1154 Fortunately, this check seems not to be necessary
1155 for anything except pointers or functions. */
1156 /* ezannoni: 2000-10-26. This seems to apply for
1157 versions of gcc older than 2.8. This was the original
1158 problem: with the following code gdb would tell that
1159 the type for name1 is caddr_t, and func is char()
1160 typedef char *caddr_t;
1161 char *name2;
1162 struct x
1163 {
1164 char *name1;
1165 } xx;
1166 char *func()
1167 {
1168 }
1169 main () {}
1170 */
1171
1172 /* Pascal accepts names for pointer types. */
1173 if (current_subfile->language == language_pascal)
1174 {
1175 TYPE_NAME (SYMBOL_TYPE (sym)) = DEPRECATED_SYMBOL_NAME (sym);
1176 }
1177 }
1178 else
1179 TYPE_NAME (SYMBOL_TYPE (sym)) = DEPRECATED_SYMBOL_NAME (sym);
1180 }
1181
1182 add_symbol_to_list (sym, &file_symbols);
1183
1184 if (synonym)
1185 {
1186 /* Create the STRUCT_DOMAIN clone. */
1187 struct symbol *struct_sym = (struct symbol *)
1188 obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
1189
1190 *struct_sym = *sym;
1191 SYMBOL_CLASS (struct_sym) = LOC_TYPEDEF;
1192 SYMBOL_VALUE (struct_sym) = valu;
1193 SYMBOL_DOMAIN (struct_sym) = STRUCT_DOMAIN;
1194 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
1195 TYPE_NAME (SYMBOL_TYPE (sym))
1196 = obconcat (&objfile->objfile_obstack, "", "",
1197 DEPRECATED_SYMBOL_NAME (sym));
1198 add_symbol_to_list (struct_sym, &file_symbols);
1199 }
1200
1201 break;
1202
1203 case 'T':
1204 /* Struct, union, or enum tag. For GNU C++, this can be be followed
1205 by 't' which means we are typedef'ing it as well. */
1206 synonym = *p == 't';
1207
1208 if (synonym)
1209 p++;
1210
1211 SYMBOL_TYPE (sym) = read_type (&p, objfile);
1212
1213 /* For a nameless type, we don't want a create a symbol, thus we
1214 did not use `sym'. Return without further processing. */
1215 if (nameless)
1216 return NULL;
1217
1218 SYMBOL_CLASS (sym) = LOC_TYPEDEF;
1219 SYMBOL_VALUE (sym) = valu;
1220 SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
1221 if (TYPE_TAG_NAME (SYMBOL_TYPE (sym)) == 0)
1222 TYPE_TAG_NAME (SYMBOL_TYPE (sym))
1223 = obconcat (&objfile->objfile_obstack, "", "", DEPRECATED_SYMBOL_NAME (sym));
1224 add_symbol_to_list (sym, &file_symbols);
1225
1226 if (synonym)
1227 {
1228 /* Clone the sym and then modify it. */
1229 struct symbol *typedef_sym = (struct symbol *)
1230 obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
1231 *typedef_sym = *sym;
1232 SYMBOL_CLASS (typedef_sym) = LOC_TYPEDEF;
1233 SYMBOL_VALUE (typedef_sym) = valu;
1234 SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
1235 if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
1236 TYPE_NAME (SYMBOL_TYPE (sym))
1237 = obconcat (&objfile->objfile_obstack, "", "", DEPRECATED_SYMBOL_NAME (sym));
1238 add_symbol_to_list (typedef_sym, &file_symbols);
1239 }
1240 break;
1241
1242 case 'V':
1243 /* Static symbol of local scope */
1244 SYMBOL_TYPE (sym) = read_type (&p, objfile);
1245 SYMBOL_CLASS (sym) = LOC_STATIC;
1246 SYMBOL_VALUE_ADDRESS (sym) = valu;
1247 if (gdbarch_static_transform_name_p (gdbarch)
1248 && gdbarch_static_transform_name (gdbarch,
1249 DEPRECATED_SYMBOL_NAME (sym))
1250 != DEPRECATED_SYMBOL_NAME (sym))
1251 {
1252 struct minimal_symbol *msym;
1253 msym = lookup_minimal_symbol (DEPRECATED_SYMBOL_NAME (sym), NULL, objfile);
1254 if (msym != NULL)
1255 {
1256 DEPRECATED_SYMBOL_NAME (sym) = gdbarch_static_transform_name
1257 (gdbarch,
1258 DEPRECATED_SYMBOL_NAME (sym));
1259 SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msym);
1260 }
1261 }
1262 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1263 add_symbol_to_list (sym, &local_symbols);
1264 break;
1265
1266 case 'v':
1267 /* Reference parameter */
1268 SYMBOL_TYPE (sym) = read_type (&p, objfile);
1269 SYMBOL_CLASS (sym) = LOC_REF_ARG;
1270 SYMBOL_IS_ARGUMENT (sym) = 1;
1271 SYMBOL_VALUE (sym) = valu;
1272 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1273 add_symbol_to_list (sym, &local_symbols);
1274 break;
1275
1276 case 'a':
1277 /* Reference parameter which is in a register. */
1278 SYMBOL_TYPE (sym) = read_type (&p, objfile);
1279 SYMBOL_CLASS (sym) = LOC_REGPARM_ADDR;
1280 SYMBOL_IS_ARGUMENT (sym) = 1;
1281 SYMBOL_VALUE (sym) = gdbarch_stab_reg_to_regnum (current_gdbarch, valu);
1282 if (SYMBOL_VALUE (sym) >= gdbarch_num_regs (current_gdbarch)
1283 + gdbarch_num_pseudo_regs (current_gdbarch))
1284 {
1285 reg_value_complaint (SYMBOL_VALUE (sym),
1286 gdbarch_num_regs (current_gdbarch)
1287 + gdbarch_num_pseudo_regs (current_gdbarch),
1288 SYMBOL_PRINT_NAME (sym));
1289 SYMBOL_VALUE (sym) = gdbarch_sp_regnum (current_gdbarch);
1290 /* Known safe, though useless */
1291 }
1292 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1293 add_symbol_to_list (sym, &local_symbols);
1294 break;
1295
1296 case 'X':
1297 /* This is used by Sun FORTRAN for "function result value".
1298 Sun claims ("dbx and dbxtool interfaces", 2nd ed)
1299 that Pascal uses it too, but when I tried it Pascal used
1300 "x:3" (local symbol) instead. */
1301 SYMBOL_TYPE (sym) = read_type (&p, objfile);
1302 SYMBOL_CLASS (sym) = LOC_LOCAL;
1303 SYMBOL_VALUE (sym) = valu;
1304 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1305 add_symbol_to_list (sym, &local_symbols);
1306 break;
1307
1308 default:
1309 SYMBOL_TYPE (sym) = error_type (&p, objfile);
1310 SYMBOL_CLASS (sym) = LOC_CONST;
1311 SYMBOL_VALUE (sym) = 0;
1312 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1313 add_symbol_to_list (sym, &file_symbols);
1314 break;
1315 }
1316
1317 /* Some systems pass variables of certain types by reference instead
1318 of by value, i.e. they will pass the address of a structure (in a
1319 register or on the stack) instead of the structure itself. */
1320
1321 if (gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym))
1322 && SYMBOL_IS_ARGUMENT (sym))
1323 {
1324 /* We have to convert LOC_REGISTER to LOC_REGPARM_ADDR (for
1325 variables passed in a register). */
1326 if (SYMBOL_CLASS (sym) == LOC_REGISTER)
1327 SYMBOL_CLASS (sym) = LOC_REGPARM_ADDR;
1328 /* Likewise for converting LOC_ARG to LOC_REF_ARG (for the 7th
1329 and subsequent arguments on SPARC, for example). */
1330 else if (SYMBOL_CLASS (sym) == LOC_ARG)
1331 SYMBOL_CLASS (sym) = LOC_REF_ARG;
1332 }
1333
1334 return sym;
1335 }
1336
1337 /* Skip rest of this symbol and return an error type.
1338
1339 General notes on error recovery: error_type always skips to the
1340 end of the symbol (modulo cretinous dbx symbol name continuation).
1341 Thus code like this:
1342
1343 if (*(*pp)++ != ';')
1344 return error_type (pp, objfile);
1345
1346 is wrong because if *pp starts out pointing at '\0' (typically as the
1347 result of an earlier error), it will be incremented to point to the
1348 start of the next symbol, which might produce strange results, at least
1349 if you run off the end of the string table. Instead use
1350
1351 if (**pp != ';')
1352 return error_type (pp, objfile);
1353 ++*pp;
1354
1355 or
1356
1357 if (**pp != ';')
1358 foo = error_type (pp, objfile);
1359 else
1360 ++*pp;
1361
1362 And in case it isn't obvious, the point of all this hair is so the compiler
1363 can define new types and new syntaxes, and old versions of the
1364 debugger will be able to read the new symbol tables. */
1365
1366 static struct type *
1367 error_type (char **pp, struct objfile *objfile)
1368 {
1369 complaint (&symfile_complaints, _("couldn't parse type; debugger out of date?"));
1370 while (1)
1371 {
1372 /* Skip to end of symbol. */
1373 while (**pp != '\0')
1374 {
1375 (*pp)++;
1376 }
1377
1378 /* Check for and handle cretinous dbx symbol name continuation! */
1379 if ((*pp)[-1] == '\\' || (*pp)[-1] == '?')
1380 {
1381 *pp = next_symbol_text (objfile);
1382 }
1383 else
1384 {
1385 break;
1386 }
1387 }
1388 return (builtin_type_error);
1389 }
1390 \f
1391
1392 /* Read type information or a type definition; return the type. Even
1393 though this routine accepts either type information or a type
1394 definition, the distinction is relevant--some parts of stabsread.c
1395 assume that type information starts with a digit, '-', or '(' in
1396 deciding whether to call read_type. */
1397
1398 static struct type *
1399 read_type (char **pp, struct objfile *objfile)
1400 {
1401 struct type *type = 0;
1402 struct type *type1;
1403 int typenums[2];
1404 char type_descriptor;
1405
1406 /* Size in bits of type if specified by a type attribute, or -1 if
1407 there is no size attribute. */
1408 int type_size = -1;
1409
1410 /* Used to distinguish string and bitstring from char-array and set. */
1411 int is_string = 0;
1412
1413 /* Used to distinguish vector from array. */
1414 int is_vector = 0;
1415
1416 /* Read type number if present. The type number may be omitted.
1417 for instance in a two-dimensional array declared with type
1418 "ar1;1;10;ar1;1;10;4". */
1419 if ((**pp >= '0' && **pp <= '9')
1420 || **pp == '('
1421 || **pp == '-')
1422 {
1423 if (read_type_number (pp, typenums) != 0)
1424 return error_type (pp, objfile);
1425
1426 if (**pp != '=')
1427 {
1428 /* Type is not being defined here. Either it already
1429 exists, or this is a forward reference to it.
1430 dbx_alloc_type handles both cases. */
1431 type = dbx_alloc_type (typenums, objfile);
1432
1433 /* If this is a forward reference, arrange to complain if it
1434 doesn't get patched up by the time we're done
1435 reading. */
1436 if (TYPE_CODE (type) == TYPE_CODE_UNDEF)
1437 add_undefined_type (type, typenums);
1438
1439 return type;
1440 }
1441
1442 /* Type is being defined here. */
1443 /* Skip the '='.
1444 Also skip the type descriptor - we get it below with (*pp)[-1]. */
1445 (*pp) += 2;
1446 }
1447 else
1448 {
1449 /* 'typenums=' not present, type is anonymous. Read and return
1450 the definition, but don't put it in the type vector. */
1451 typenums[0] = typenums[1] = -1;
1452 (*pp)++;
1453 }
1454
1455 again:
1456 type_descriptor = (*pp)[-1];
1457 switch (type_descriptor)
1458 {
1459 case 'x':
1460 {
1461 enum type_code code;
1462
1463 /* Used to index through file_symbols. */
1464 struct pending *ppt;
1465 int i;
1466
1467 /* Name including "struct", etc. */
1468 char *type_name;
1469
1470 {
1471 char *from, *to, *p, *q1, *q2;
1472
1473 /* Set the type code according to the following letter. */
1474 switch ((*pp)[0])
1475 {
1476 case 's':
1477 code = TYPE_CODE_STRUCT;
1478 break;
1479 case 'u':
1480 code = TYPE_CODE_UNION;
1481 break;
1482 case 'e':
1483 code = TYPE_CODE_ENUM;
1484 break;
1485 default:
1486 {
1487 /* Complain and keep going, so compilers can invent new
1488 cross-reference types. */
1489 complaint (&symfile_complaints,
1490 _("Unrecognized cross-reference type `%c'"), (*pp)[0]);
1491 code = TYPE_CODE_STRUCT;
1492 break;
1493 }
1494 }
1495
1496 q1 = strchr (*pp, '<');
1497 p = strchr (*pp, ':');
1498 if (p == NULL)
1499 return error_type (pp, objfile);
1500 if (q1 && p > q1 && p[1] == ':')
1501 {
1502 int nesting_level = 0;
1503 for (q2 = q1; *q2; q2++)
1504 {
1505 if (*q2 == '<')
1506 nesting_level++;
1507 else if (*q2 == '>')
1508 nesting_level--;
1509 else if (*q2 == ':' && nesting_level == 0)
1510 break;
1511 }
1512 p = q2;
1513 if (*p != ':')
1514 return error_type (pp, objfile);
1515 }
1516 to = type_name =
1517 (char *) obstack_alloc (&objfile->objfile_obstack, p - *pp + 1);
1518
1519 /* Copy the name. */
1520 from = *pp + 1;
1521 while (from < p)
1522 *to++ = *from++;
1523 *to = '\0';
1524
1525 /* Set the pointer ahead of the name which we just read, and
1526 the colon. */
1527 *pp = from + 1;
1528 }
1529
1530 /* If this type has already been declared, then reuse the same
1531 type, rather than allocating a new one. This saves some
1532 memory. */
1533
1534 for (ppt = file_symbols; ppt; ppt = ppt->next)
1535 for (i = 0; i < ppt->nsyms; i++)
1536 {
1537 struct symbol *sym = ppt->symbol[i];
1538
1539 if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
1540 && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
1541 && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
1542 && strcmp (DEPRECATED_SYMBOL_NAME (sym), type_name) == 0)
1543 {
1544 obstack_free (&objfile->objfile_obstack, type_name);
1545 type = SYMBOL_TYPE (sym);
1546 if (typenums[0] != -1)
1547 *dbx_lookup_type (typenums) = type;
1548 return type;
1549 }
1550 }
1551
1552 /* Didn't find the type to which this refers, so we must
1553 be dealing with a forward reference. Allocate a type
1554 structure for it, and keep track of it so we can
1555 fill in the rest of the fields when we get the full
1556 type. */
1557 type = dbx_alloc_type (typenums, objfile);
1558 TYPE_CODE (type) = code;
1559 TYPE_TAG_NAME (type) = type_name;
1560 INIT_CPLUS_SPECIFIC (type);
1561 TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
1562
1563 add_undefined_type (type, typenums);
1564 return type;
1565 }
1566
1567 case '-': /* RS/6000 built-in type */
1568 case '0':
1569 case '1':
1570 case '2':
1571 case '3':
1572 case '4':
1573 case '5':
1574 case '6':
1575 case '7':
1576 case '8':
1577 case '9':
1578 case '(':
1579 (*pp)--;
1580
1581 /* We deal with something like t(1,2)=(3,4)=... which
1582 the Lucid compiler and recent gcc versions (post 2.7.3) use. */
1583
1584 /* Allocate and enter the typedef type first.
1585 This handles recursive types. */
1586 type = dbx_alloc_type (typenums, objfile);
1587 TYPE_CODE (type) = TYPE_CODE_TYPEDEF;
1588 {
1589 struct type *xtype = read_type (pp, objfile);
1590 if (type == xtype)
1591 {
1592 /* It's being defined as itself. That means it is "void". */
1593 TYPE_CODE (type) = TYPE_CODE_VOID;
1594 TYPE_LENGTH (type) = 1;
1595 }
1596 else if (type_size >= 0 || is_string)
1597 {
1598 /* This is the absolute wrong way to construct types. Every
1599 other debug format has found a way around this problem and
1600 the related problems with unnecessarily stubbed types;
1601 someone motivated should attempt to clean up the issue
1602 here as well. Once a type pointed to has been created it
1603 should not be modified.
1604
1605 Well, it's not *absolutely* wrong. Constructing recursive
1606 types (trees, linked lists) necessarily entails modifying
1607 types after creating them. Constructing any loop structure
1608 entails side effects. The Dwarf 2 reader does handle this
1609 more gracefully (it never constructs more than once
1610 instance of a type object, so it doesn't have to copy type
1611 objects wholesale), but it still mutates type objects after
1612 other folks have references to them.
1613
1614 Keep in mind that this circularity/mutation issue shows up
1615 at the source language level, too: C's "incomplete types",
1616 for example. So the proper cleanup, I think, would be to
1617 limit GDB's type smashing to match exactly those required
1618 by the source language. So GDB could have a
1619 "complete_this_type" function, but never create unnecessary
1620 copies of a type otherwise. */
1621 replace_type (type, xtype);
1622 TYPE_NAME (type) = NULL;
1623 TYPE_TAG_NAME (type) = NULL;
1624 }
1625 else
1626 {
1627 TYPE_FLAGS (type) |= TYPE_FLAG_TARGET_STUB;
1628 TYPE_TARGET_TYPE (type) = xtype;
1629 }
1630 }
1631 break;
1632
1633 /* In the following types, we must be sure to overwrite any existing
1634 type that the typenums refer to, rather than allocating a new one
1635 and making the typenums point to the new one. This is because there
1636 may already be pointers to the existing type (if it had been
1637 forward-referenced), and we must change it to a pointer, function,
1638 reference, or whatever, *in-place*. */
1639
1640 case '*': /* Pointer to another type */
1641 type1 = read_type (pp, objfile);
1642 type = make_pointer_type (type1, dbx_lookup_type (typenums));
1643 break;
1644
1645 case '&': /* Reference to another type */
1646 type1 = read_type (pp, objfile);
1647 type = make_reference_type (type1, dbx_lookup_type (typenums));
1648 break;
1649
1650 case 'f': /* Function returning another type */
1651 type1 = read_type (pp, objfile);
1652 type = make_function_type (type1, dbx_lookup_type (typenums));
1653 break;
1654
1655 case 'g': /* Prototyped function. (Sun) */
1656 {
1657 /* Unresolved questions:
1658
1659 - According to Sun's ``STABS Interface Manual'', for 'f'
1660 and 'F' symbol descriptors, a `0' in the argument type list
1661 indicates a varargs function. But it doesn't say how 'g'
1662 type descriptors represent that info. Someone with access
1663 to Sun's toolchain should try it out.
1664
1665 - According to the comment in define_symbol (search for
1666 `process_prototype_types:'), Sun emits integer arguments as
1667 types which ref themselves --- like `void' types. Do we
1668 have to deal with that here, too? Again, someone with
1669 access to Sun's toolchain should try it out and let us
1670 know. */
1671
1672 const char *type_start = (*pp) - 1;
1673 struct type *return_type = read_type (pp, objfile);
1674 struct type *func_type
1675 = make_function_type (return_type, dbx_lookup_type (typenums));
1676 struct type_list {
1677 struct type *type;
1678 struct type_list *next;
1679 } *arg_types = 0;
1680 int num_args = 0;
1681
1682 while (**pp && **pp != '#')
1683 {
1684 struct type *arg_type = read_type (pp, objfile);
1685 struct type_list *new = alloca (sizeof (*new));
1686 new->type = arg_type;
1687 new->next = arg_types;
1688 arg_types = new;
1689 num_args++;
1690 }
1691 if (**pp == '#')
1692 ++*pp;
1693 else
1694 {
1695 complaint (&symfile_complaints,
1696 _("Prototyped function type didn't end arguments with `#':\n%s"),
1697 type_start);
1698 }
1699
1700 /* If there is just one argument whose type is `void', then
1701 that's just an empty argument list. */
1702 if (arg_types
1703 && ! arg_types->next
1704 && TYPE_CODE (arg_types->type) == TYPE_CODE_VOID)
1705 num_args = 0;
1706
1707 TYPE_FIELDS (func_type)
1708 = (struct field *) TYPE_ALLOC (func_type,
1709 num_args * sizeof (struct field));
1710 memset (TYPE_FIELDS (func_type), 0, num_args * sizeof (struct field));
1711 {
1712 int i;
1713 struct type_list *t;
1714
1715 /* We stuck each argument type onto the front of the list
1716 when we read it, so the list is reversed. Build the
1717 fields array right-to-left. */
1718 for (t = arg_types, i = num_args - 1; t; t = t->next, i--)
1719 TYPE_FIELD_TYPE (func_type, i) = t->type;
1720 }
1721 TYPE_NFIELDS (func_type) = num_args;
1722 TYPE_FLAGS (func_type) |= TYPE_FLAG_PROTOTYPED;
1723
1724 type = func_type;
1725 break;
1726 }
1727
1728 case 'k': /* Const qualifier on some type (Sun) */
1729 type = read_type (pp, objfile);
1730 type = make_cv_type (1, TYPE_VOLATILE (type), type,
1731 dbx_lookup_type (typenums));
1732 break;
1733
1734 case 'B': /* Volatile qual on some type (Sun) */
1735 type = read_type (pp, objfile);
1736 type = make_cv_type (TYPE_CONST (type), 1, type,
1737 dbx_lookup_type (typenums));
1738 break;
1739
1740 case '@':
1741 if (isdigit (**pp) || **pp == '(' || **pp == '-')
1742 { /* Member (class & variable) type */
1743 /* FIXME -- we should be doing smash_to_XXX types here. */
1744
1745 struct type *domain = read_type (pp, objfile);
1746 struct type *memtype;
1747
1748 if (**pp != ',')
1749 /* Invalid member type data format. */
1750 return error_type (pp, objfile);
1751 ++*pp;
1752
1753 memtype = read_type (pp, objfile);
1754 type = dbx_alloc_type (typenums, objfile);
1755 smash_to_memberptr_type (type, domain, memtype);
1756 }
1757 else
1758 /* type attribute */
1759 {
1760 char *attr = *pp;
1761 /* Skip to the semicolon. */
1762 while (**pp != ';' && **pp != '\0')
1763 ++(*pp);
1764 if (**pp == '\0')
1765 return error_type (pp, objfile);
1766 else
1767 ++ * pp; /* Skip the semicolon. */
1768
1769 switch (*attr)
1770 {
1771 case 's': /* Size attribute */
1772 type_size = atoi (attr + 1);
1773 if (type_size <= 0)
1774 type_size = -1;
1775 break;
1776
1777 case 'S': /* String attribute */
1778 /* FIXME: check to see if following type is array? */
1779 is_string = 1;
1780 break;
1781
1782 case 'V': /* Vector attribute */
1783 /* FIXME: check to see if following type is array? */
1784 is_vector = 1;
1785 break;
1786
1787 default:
1788 /* Ignore unrecognized type attributes, so future compilers
1789 can invent new ones. */
1790 break;
1791 }
1792 ++*pp;
1793 goto again;
1794 }
1795 break;
1796
1797 case '#': /* Method (class & fn) type */
1798 if ((*pp)[0] == '#')
1799 {
1800 /* We'll get the parameter types from the name. */
1801 struct type *return_type;
1802
1803 (*pp)++;
1804 return_type = read_type (pp, objfile);
1805 if (*(*pp)++ != ';')
1806 complaint (&symfile_complaints,
1807 _("invalid (minimal) member type data format at symtab pos %d."),
1808 symnum);
1809 type = allocate_stub_method (return_type);
1810 if (typenums[0] != -1)
1811 *dbx_lookup_type (typenums) = type;
1812 }
1813 else
1814 {
1815 struct type *domain = read_type (pp, objfile);
1816 struct type *return_type;
1817 struct field *args;
1818 int nargs, varargs;
1819
1820 if (**pp != ',')
1821 /* Invalid member type data format. */
1822 return error_type (pp, objfile);
1823 else
1824 ++(*pp);
1825
1826 return_type = read_type (pp, objfile);
1827 args = read_args (pp, ';', objfile, &nargs, &varargs);
1828 if (args == NULL)
1829 return error_type (pp, objfile);
1830 type = dbx_alloc_type (typenums, objfile);
1831 smash_to_method_type (type, domain, return_type, args,
1832 nargs, varargs);
1833 }
1834 break;
1835
1836 case 'r': /* Range type */
1837 type = read_range_type (pp, typenums, type_size, objfile);
1838 if (typenums[0] != -1)
1839 *dbx_lookup_type (typenums) = type;
1840 break;
1841
1842 case 'b':
1843 {
1844 /* Sun ACC builtin int type */
1845 type = read_sun_builtin_type (pp, typenums, objfile);
1846 if (typenums[0] != -1)
1847 *dbx_lookup_type (typenums) = type;
1848 }
1849 break;
1850
1851 case 'R': /* Sun ACC builtin float type */
1852 type = read_sun_floating_type (pp, typenums, objfile);
1853 if (typenums[0] != -1)
1854 *dbx_lookup_type (typenums) = type;
1855 break;
1856
1857 case 'e': /* Enumeration type */
1858 type = dbx_alloc_type (typenums, objfile);
1859 type = read_enum_type (pp, type, objfile);
1860 if (typenums[0] != -1)
1861 *dbx_lookup_type (typenums) = type;
1862 break;
1863
1864 case 's': /* Struct type */
1865 case 'u': /* Union type */
1866 {
1867 enum type_code type_code = TYPE_CODE_UNDEF;
1868 type = dbx_alloc_type (typenums, objfile);
1869 switch (type_descriptor)
1870 {
1871 case 's':
1872 type_code = TYPE_CODE_STRUCT;
1873 break;
1874 case 'u':
1875 type_code = TYPE_CODE_UNION;
1876 break;
1877 }
1878 type = read_struct_type (pp, type, type_code, objfile);
1879 break;
1880 }
1881
1882 case 'a': /* Array type */
1883 if (**pp != 'r')
1884 return error_type (pp, objfile);
1885 ++*pp;
1886
1887 type = dbx_alloc_type (typenums, objfile);
1888 type = read_array_type (pp, type, objfile);
1889 if (is_string)
1890 TYPE_CODE (type) = TYPE_CODE_STRING;
1891 if (is_vector)
1892 make_vector_type (type);
1893 break;
1894
1895 case 'S': /* Set or bitstring type */
1896 type1 = read_type (pp, objfile);
1897 type = create_set_type ((struct type *) NULL, type1);
1898 if (is_string)
1899 TYPE_CODE (type) = TYPE_CODE_BITSTRING;
1900 if (typenums[0] != -1)
1901 *dbx_lookup_type (typenums) = type;
1902 break;
1903
1904 default:
1905 --*pp; /* Go back to the symbol in error */
1906 /* Particularly important if it was \0! */
1907 return error_type (pp, objfile);
1908 }
1909
1910 if (type == 0)
1911 {
1912 warning (_("GDB internal error, type is NULL in stabsread.c."));
1913 return error_type (pp, objfile);
1914 }
1915
1916 /* Size specified in a type attribute overrides any other size. */
1917 if (type_size != -1)
1918 TYPE_LENGTH (type) = (type_size + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
1919
1920 return type;
1921 }
1922 \f
1923 /* RS/6000 xlc/dbx combination uses a set of builtin types, starting from -1.
1924 Return the proper type node for a given builtin type number. */
1925
1926 static struct type *
1927 rs6000_builtin_type (int typenum)
1928 {
1929 /* We recognize types numbered from -NUMBER_RECOGNIZED to -1. */
1930 #define NUMBER_RECOGNIZED 34
1931 /* This includes an empty slot for type number -0. */
1932 static struct type *negative_types[NUMBER_RECOGNIZED + 1];
1933 struct type *rettype = NULL;
1934
1935 if (typenum >= 0 || typenum < -NUMBER_RECOGNIZED)
1936 {
1937 complaint (&symfile_complaints, _("Unknown builtin type %d"), typenum);
1938 return builtin_type_error;
1939 }
1940 if (negative_types[-typenum] != NULL)
1941 return negative_types[-typenum];
1942
1943 #if TARGET_CHAR_BIT != 8
1944 #error This code wrong for TARGET_CHAR_BIT not 8
1945 /* These definitions all assume that TARGET_CHAR_BIT is 8. I think
1946 that if that ever becomes not true, the correct fix will be to
1947 make the size in the struct type to be in bits, not in units of
1948 TARGET_CHAR_BIT. */
1949 #endif
1950
1951 switch (-typenum)
1952 {
1953 case 1:
1954 /* The size of this and all the other types are fixed, defined
1955 by the debugging format. If there is a type called "int" which
1956 is other than 32 bits, then it should use a new negative type
1957 number (or avoid negative type numbers for that case).
1958 See stabs.texinfo. */
1959 rettype = init_type (TYPE_CODE_INT, 4, 0, "int", NULL);
1960 break;
1961 case 2:
1962 rettype = init_type (TYPE_CODE_INT, 1, 0, "char", NULL);
1963 break;
1964 case 3:
1965 rettype = init_type (TYPE_CODE_INT, 2, 0, "short", NULL);
1966 break;
1967 case 4:
1968 rettype = init_type (TYPE_CODE_INT, 4, 0, "long", NULL);
1969 break;
1970 case 5:
1971 rettype = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED,
1972 "unsigned char", NULL);
1973 break;
1974 case 6:
1975 rettype = init_type (TYPE_CODE_INT, 1, 0, "signed char", NULL);
1976 break;
1977 case 7:
1978 rettype = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED,
1979 "unsigned short", NULL);
1980 break;
1981 case 8:
1982 rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1983 "unsigned int", NULL);
1984 break;
1985 case 9:
1986 rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1987 "unsigned", NULL);
1988 case 10:
1989 rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1990 "unsigned long", NULL);
1991 break;
1992 case 11:
1993 rettype = init_type (TYPE_CODE_VOID, 1, 0, "void", NULL);
1994 break;
1995 case 12:
1996 /* IEEE single precision (32 bit). */
1997 rettype = init_type (TYPE_CODE_FLT, 4, 0, "float", NULL);
1998 break;
1999 case 13:
2000 /* IEEE double precision (64 bit). */
2001 rettype = init_type (TYPE_CODE_FLT, 8, 0, "double", NULL);
2002 break;
2003 case 14:
2004 /* This is an IEEE double on the RS/6000, and different machines with
2005 different sizes for "long double" should use different negative
2006 type numbers. See stabs.texinfo. */
2007 rettype = init_type (TYPE_CODE_FLT, 8, 0, "long double", NULL);
2008 break;
2009 case 15:
2010 rettype = init_type (TYPE_CODE_INT, 4, 0, "integer", NULL);
2011 break;
2012 case 16:
2013 rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
2014 "boolean", NULL);
2015 break;
2016 case 17:
2017 rettype = init_type (TYPE_CODE_FLT, 4, 0, "short real", NULL);
2018 break;
2019 case 18:
2020 rettype = init_type (TYPE_CODE_FLT, 8, 0, "real", NULL);
2021 break;
2022 case 19:
2023 rettype = init_type (TYPE_CODE_ERROR, 0, 0, "stringptr", NULL);
2024 break;
2025 case 20:
2026 rettype = init_type (TYPE_CODE_CHAR, 1, TYPE_FLAG_UNSIGNED,
2027 "character", NULL);
2028 break;
2029 case 21:
2030 rettype = init_type (TYPE_CODE_BOOL, 1, TYPE_FLAG_UNSIGNED,
2031 "logical*1", NULL);
2032 break;
2033 case 22:
2034 rettype = init_type (TYPE_CODE_BOOL, 2, TYPE_FLAG_UNSIGNED,
2035 "logical*2", NULL);
2036 break;
2037 case 23:
2038 rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
2039 "logical*4", NULL);
2040 break;
2041 case 24:
2042 rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
2043 "logical", NULL);
2044 break;
2045 case 25:
2046 /* Complex type consisting of two IEEE single precision values. */
2047 rettype = init_type (TYPE_CODE_COMPLEX, 8, 0, "complex", NULL);
2048 TYPE_TARGET_TYPE (rettype) = init_type (TYPE_CODE_FLT, 4, 0, "float",
2049 NULL);
2050 break;
2051 case 26:
2052 /* Complex type consisting of two IEEE double precision values. */
2053 rettype = init_type (TYPE_CODE_COMPLEX, 16, 0, "double complex", NULL);
2054 TYPE_TARGET_TYPE (rettype) = init_type (TYPE_CODE_FLT, 8, 0, "double",
2055 NULL);
2056 break;
2057 case 27:
2058 rettype = init_type (TYPE_CODE_INT, 1, 0, "integer*1", NULL);
2059 break;
2060 case 28:
2061 rettype = init_type (TYPE_CODE_INT, 2, 0, "integer*2", NULL);
2062 break;
2063 case 29:
2064 rettype = init_type (TYPE_CODE_INT, 4, 0, "integer*4", NULL);
2065 break;
2066 case 30:
2067 rettype = init_type (TYPE_CODE_CHAR, 2, 0, "wchar", NULL);
2068 break;
2069 case 31:
2070 rettype = init_type (TYPE_CODE_INT, 8, 0, "long long", NULL);
2071 break;
2072 case 32:
2073 rettype = init_type (TYPE_CODE_INT, 8, TYPE_FLAG_UNSIGNED,
2074 "unsigned long long", NULL);
2075 break;
2076 case 33:
2077 rettype = init_type (TYPE_CODE_INT, 8, TYPE_FLAG_UNSIGNED,
2078 "logical*8", NULL);
2079 break;
2080 case 34:
2081 rettype = init_type (TYPE_CODE_INT, 8, 0, "integer*8", NULL);
2082 break;
2083 }
2084 negative_types[-typenum] = rettype;
2085 return rettype;
2086 }
2087 \f
2088 /* This page contains subroutines of read_type. */
2089
2090 /* Replace *OLD_NAME with the method name portion of PHYSNAME. */
2091
2092 static void
2093 update_method_name_from_physname (char **old_name, char *physname)
2094 {
2095 char *method_name;
2096
2097 method_name = method_name_from_physname (physname);
2098
2099 if (method_name == NULL)
2100 {
2101 complaint (&symfile_complaints,
2102 _("Method has bad physname %s\n"), physname);
2103 return;
2104 }
2105
2106 if (strcmp (*old_name, method_name) != 0)
2107 {
2108 xfree (*old_name);
2109 *old_name = method_name;
2110 }
2111 else
2112 xfree (method_name);
2113 }
2114
2115 /* Read member function stabs info for C++ classes. The form of each member
2116 function data is:
2117
2118 NAME :: TYPENUM[=type definition] ARGS : PHYSNAME ;
2119
2120 An example with two member functions is:
2121
2122 afunc1::20=##15;:i;2A.;afunc2::20:i;2A.;
2123
2124 For the case of overloaded operators, the format is op$::*.funcs, where
2125 $ is the CPLUS_MARKER (usually '$'), `*' holds the place for an operator
2126 name (such as `+=') and `.' marks the end of the operator name.
2127
2128 Returns 1 for success, 0 for failure. */
2129
2130 static int
2131 read_member_functions (struct field_info *fip, char **pp, struct type *type,
2132 struct objfile *objfile)
2133 {
2134 int nfn_fields = 0;
2135 int length = 0;
2136 /* Total number of member functions defined in this class. If the class
2137 defines two `f' functions, and one `g' function, then this will have
2138 the value 3. */
2139 int total_length = 0;
2140 int i;
2141 struct next_fnfield
2142 {
2143 struct next_fnfield *next;
2144 struct fn_field fn_field;
2145 }
2146 *sublist;
2147 struct type *look_ahead_type;
2148 struct next_fnfieldlist *new_fnlist;
2149 struct next_fnfield *new_sublist;
2150 char *main_fn_name;
2151 char *p;
2152
2153 /* Process each list until we find something that is not a member function
2154 or find the end of the functions. */
2155
2156 while (**pp != ';')
2157 {
2158 /* We should be positioned at the start of the function name.
2159 Scan forward to find the first ':' and if it is not the
2160 first of a "::" delimiter, then this is not a member function. */
2161 p = *pp;
2162 while (*p != ':')
2163 {
2164 p++;
2165 }
2166 if (p[1] != ':')
2167 {
2168 break;
2169 }
2170
2171 sublist = NULL;
2172 look_ahead_type = NULL;
2173 length = 0;
2174
2175 new_fnlist = (struct next_fnfieldlist *)
2176 xmalloc (sizeof (struct next_fnfieldlist));
2177 make_cleanup (xfree, new_fnlist);
2178 memset (new_fnlist, 0, sizeof (struct next_fnfieldlist));
2179
2180 if ((*pp)[0] == 'o' && (*pp)[1] == 'p' && is_cplus_marker ((*pp)[2]))
2181 {
2182 /* This is a completely wierd case. In order to stuff in the
2183 names that might contain colons (the usual name delimiter),
2184 Mike Tiemann defined a different name format which is
2185 signalled if the identifier is "op$". In that case, the
2186 format is "op$::XXXX." where XXXX is the name. This is
2187 used for names like "+" or "=". YUUUUUUUK! FIXME! */
2188 /* This lets the user type "break operator+".
2189 We could just put in "+" as the name, but that wouldn't
2190 work for "*". */
2191 static char opname[32] = "op$";
2192 char *o = opname + 3;
2193
2194 /* Skip past '::'. */
2195 *pp = p + 2;
2196
2197 STABS_CONTINUE (pp, objfile);
2198 p = *pp;
2199 while (*p != '.')
2200 {
2201 *o++ = *p++;
2202 }
2203 main_fn_name = savestring (opname, o - opname);
2204 /* Skip past '.' */
2205 *pp = p + 1;
2206 }
2207 else
2208 {
2209 main_fn_name = savestring (*pp, p - *pp);
2210 /* Skip past '::'. */
2211 *pp = p + 2;
2212 }
2213 new_fnlist->fn_fieldlist.name = main_fn_name;
2214
2215 do
2216 {
2217 new_sublist =
2218 (struct next_fnfield *) xmalloc (sizeof (struct next_fnfield));
2219 make_cleanup (xfree, new_sublist);
2220 memset (new_sublist, 0, sizeof (struct next_fnfield));
2221
2222 /* Check for and handle cretinous dbx symbol name continuation! */
2223 if (look_ahead_type == NULL)
2224 {
2225 /* Normal case. */
2226 STABS_CONTINUE (pp, objfile);
2227
2228 new_sublist->fn_field.type = read_type (pp, objfile);
2229 if (**pp != ':')
2230 {
2231 /* Invalid symtab info for member function. */
2232 return 0;
2233 }
2234 }
2235 else
2236 {
2237 /* g++ version 1 kludge */
2238 new_sublist->fn_field.type = look_ahead_type;
2239 look_ahead_type = NULL;
2240 }
2241
2242 (*pp)++;
2243 p = *pp;
2244 while (*p != ';')
2245 {
2246 p++;
2247 }
2248
2249 /* If this is just a stub, then we don't have the real name here. */
2250
2251 if (TYPE_STUB (new_sublist->fn_field.type))
2252 {
2253 if (!TYPE_DOMAIN_TYPE (new_sublist->fn_field.type))
2254 TYPE_DOMAIN_TYPE (new_sublist->fn_field.type) = type;
2255 new_sublist->fn_field.is_stub = 1;
2256 }
2257 new_sublist->fn_field.physname = savestring (*pp, p - *pp);
2258 *pp = p + 1;
2259
2260 /* Set this member function's visibility fields. */
2261 switch (*(*pp)++)
2262 {
2263 case VISIBILITY_PRIVATE:
2264 new_sublist->fn_field.is_private = 1;
2265 break;
2266 case VISIBILITY_PROTECTED:
2267 new_sublist->fn_field.is_protected = 1;
2268 break;
2269 }
2270
2271 STABS_CONTINUE (pp, objfile);
2272 switch (**pp)
2273 {
2274 case 'A': /* Normal functions. */
2275 new_sublist->fn_field.is_const = 0;
2276 new_sublist->fn_field.is_volatile = 0;
2277 (*pp)++;
2278 break;
2279 case 'B': /* `const' member functions. */
2280 new_sublist->fn_field.is_const = 1;
2281 new_sublist->fn_field.is_volatile = 0;
2282 (*pp)++;
2283 break;
2284 case 'C': /* `volatile' member function. */
2285 new_sublist->fn_field.is_const = 0;
2286 new_sublist->fn_field.is_volatile = 1;
2287 (*pp)++;
2288 break;
2289 case 'D': /* `const volatile' member function. */
2290 new_sublist->fn_field.is_const = 1;
2291 new_sublist->fn_field.is_volatile = 1;
2292 (*pp)++;
2293 break;
2294 case '*': /* File compiled with g++ version 1 -- no info */
2295 case '?':
2296 case '.':
2297 break;
2298 default:
2299 complaint (&symfile_complaints,
2300 _("const/volatile indicator missing, got '%c'"), **pp);
2301 break;
2302 }
2303
2304 switch (*(*pp)++)
2305 {
2306 case '*':
2307 {
2308 int nbits;
2309 /* virtual member function, followed by index.
2310 The sign bit is set to distinguish pointers-to-methods
2311 from virtual function indicies. Since the array is
2312 in words, the quantity must be shifted left by 1
2313 on 16 bit machine, and by 2 on 32 bit machine, forcing
2314 the sign bit out, and usable as a valid index into
2315 the array. Remove the sign bit here. */
2316 new_sublist->fn_field.voffset =
2317 (0x7fffffff & read_huge_number (pp, ';', &nbits, 0)) + 2;
2318 if (nbits != 0)
2319 return 0;
2320
2321 STABS_CONTINUE (pp, objfile);
2322 if (**pp == ';' || **pp == '\0')
2323 {
2324 /* Must be g++ version 1. */
2325 new_sublist->fn_field.fcontext = 0;
2326 }
2327 else
2328 {
2329 /* Figure out from whence this virtual function came.
2330 It may belong to virtual function table of
2331 one of its baseclasses. */
2332 look_ahead_type = read_type (pp, objfile);
2333 if (**pp == ':')
2334 {
2335 /* g++ version 1 overloaded methods. */
2336 }
2337 else
2338 {
2339 new_sublist->fn_field.fcontext = look_ahead_type;
2340 if (**pp != ';')
2341 {
2342 return 0;
2343 }
2344 else
2345 {
2346 ++*pp;
2347 }
2348 look_ahead_type = NULL;
2349 }
2350 }
2351 break;
2352 }
2353 case '?':
2354 /* static member function. */
2355 {
2356 int slen = strlen (main_fn_name);
2357
2358 new_sublist->fn_field.voffset = VOFFSET_STATIC;
2359
2360 /* For static member functions, we can't tell if they
2361 are stubbed, as they are put out as functions, and not as
2362 methods.
2363 GCC v2 emits the fully mangled name if
2364 dbxout.c:flag_minimal_debug is not set, so we have to
2365 detect a fully mangled physname here and set is_stub
2366 accordingly. Fully mangled physnames in v2 start with
2367 the member function name, followed by two underscores.
2368 GCC v3 currently always emits stubbed member functions,
2369 but with fully mangled physnames, which start with _Z. */
2370 if (!(strncmp (new_sublist->fn_field.physname,
2371 main_fn_name, slen) == 0
2372 && new_sublist->fn_field.physname[slen] == '_'
2373 && new_sublist->fn_field.physname[slen + 1] == '_'))
2374 {
2375 new_sublist->fn_field.is_stub = 1;
2376 }
2377 break;
2378 }
2379
2380 default:
2381 /* error */
2382 complaint (&symfile_complaints,
2383 _("member function type missing, got '%c'"), (*pp)[-1]);
2384 /* Fall through into normal member function. */
2385
2386 case '.':
2387 /* normal member function. */
2388 new_sublist->fn_field.voffset = 0;
2389 new_sublist->fn_field.fcontext = 0;
2390 break;
2391 }
2392
2393 new_sublist->next = sublist;
2394 sublist = new_sublist;
2395 length++;
2396 STABS_CONTINUE (pp, objfile);
2397 }
2398 while (**pp != ';' && **pp != '\0');
2399
2400 (*pp)++;
2401 STABS_CONTINUE (pp, objfile);
2402
2403 /* Skip GCC 3.X member functions which are duplicates of the callable
2404 constructor/destructor. */
2405 if (strcmp (main_fn_name, "__base_ctor") == 0
2406 || strcmp (main_fn_name, "__base_dtor") == 0
2407 || strcmp (main_fn_name, "__deleting_dtor") == 0)
2408 {
2409 xfree (main_fn_name);
2410 }
2411 else
2412 {
2413 int has_stub = 0;
2414 int has_destructor = 0, has_other = 0;
2415 int is_v3 = 0;
2416 struct next_fnfield *tmp_sublist;
2417
2418 /* Various versions of GCC emit various mostly-useless
2419 strings in the name field for special member functions.
2420
2421 For stub methods, we need to defer correcting the name
2422 until we are ready to unstub the method, because the current
2423 name string is used by gdb_mangle_name. The only stub methods
2424 of concern here are GNU v2 operators; other methods have their
2425 names correct (see caveat below).
2426
2427 For non-stub methods, in GNU v3, we have a complete physname.
2428 Therefore we can safely correct the name now. This primarily
2429 affects constructors and destructors, whose name will be
2430 __comp_ctor or __comp_dtor instead of Foo or ~Foo. Cast
2431 operators will also have incorrect names; for instance,
2432 "operator int" will be named "operator i" (i.e. the type is
2433 mangled).
2434
2435 For non-stub methods in GNU v2, we have no easy way to
2436 know if we have a complete physname or not. For most
2437 methods the result depends on the platform (if CPLUS_MARKER
2438 can be `$' or `.', it will use minimal debug information, or
2439 otherwise the full physname will be included).
2440
2441 Rather than dealing with this, we take a different approach.
2442 For v3 mangled names, we can use the full physname; for v2,
2443 we use cplus_demangle_opname (which is actually v2 specific),
2444 because the only interesting names are all operators - once again
2445 barring the caveat below. Skip this process if any method in the
2446 group is a stub, to prevent our fouling up the workings of
2447 gdb_mangle_name.
2448
2449 The caveat: GCC 2.95.x (and earlier?) put constructors and
2450 destructors in the same method group. We need to split this
2451 into two groups, because they should have different names.
2452 So for each method group we check whether it contains both
2453 routines whose physname appears to be a destructor (the physnames
2454 for and destructors are always provided, due to quirks in v2
2455 mangling) and routines whose physname does not appear to be a
2456 destructor. If so then we break up the list into two halves.
2457 Even if the constructors and destructors aren't in the same group
2458 the destructor will still lack the leading tilde, so that also
2459 needs to be fixed.
2460
2461 So, to summarize what we expect and handle here:
2462
2463 Given Given Real Real Action
2464 method name physname physname method name
2465
2466 __opi [none] __opi__3Foo operator int opname
2467 [now or later]
2468 Foo _._3Foo _._3Foo ~Foo separate and
2469 rename
2470 operator i _ZN3FoocviEv _ZN3FoocviEv operator int demangle
2471 __comp_ctor _ZN3FooC1ERKS_ _ZN3FooC1ERKS_ Foo demangle
2472 */
2473
2474 tmp_sublist = sublist;
2475 while (tmp_sublist != NULL)
2476 {
2477 if (tmp_sublist->fn_field.is_stub)
2478 has_stub = 1;
2479 if (tmp_sublist->fn_field.physname[0] == '_'
2480 && tmp_sublist->fn_field.physname[1] == 'Z')
2481 is_v3 = 1;
2482
2483 if (is_destructor_name (tmp_sublist->fn_field.physname))
2484 has_destructor++;
2485 else
2486 has_other++;
2487
2488 tmp_sublist = tmp_sublist->next;
2489 }
2490
2491 if (has_destructor && has_other)
2492 {
2493 struct next_fnfieldlist *destr_fnlist;
2494 struct next_fnfield *last_sublist;
2495
2496 /* Create a new fn_fieldlist for the destructors. */
2497
2498 destr_fnlist = (struct next_fnfieldlist *)
2499 xmalloc (sizeof (struct next_fnfieldlist));
2500 make_cleanup (xfree, destr_fnlist);
2501 memset (destr_fnlist, 0, sizeof (struct next_fnfieldlist));
2502 destr_fnlist->fn_fieldlist.name
2503 = obconcat (&objfile->objfile_obstack, "", "~",
2504 new_fnlist->fn_fieldlist.name);
2505
2506 destr_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
2507 obstack_alloc (&objfile->objfile_obstack,
2508 sizeof (struct fn_field) * has_destructor);
2509 memset (destr_fnlist->fn_fieldlist.fn_fields, 0,
2510 sizeof (struct fn_field) * has_destructor);
2511 tmp_sublist = sublist;
2512 last_sublist = NULL;
2513 i = 0;
2514 while (tmp_sublist != NULL)
2515 {
2516 if (!is_destructor_name (tmp_sublist->fn_field.physname))
2517 {
2518 tmp_sublist = tmp_sublist->next;
2519 continue;
2520 }
2521
2522 destr_fnlist->fn_fieldlist.fn_fields[i++]
2523 = tmp_sublist->fn_field;
2524 if (last_sublist)
2525 last_sublist->next = tmp_sublist->next;
2526 else
2527 sublist = tmp_sublist->next;
2528 last_sublist = tmp_sublist;
2529 tmp_sublist = tmp_sublist->next;
2530 }
2531
2532 destr_fnlist->fn_fieldlist.length = has_destructor;
2533 destr_fnlist->next = fip->fnlist;
2534 fip->fnlist = destr_fnlist;
2535 nfn_fields++;
2536 total_length += has_destructor;
2537 length -= has_destructor;
2538 }
2539 else if (is_v3)
2540 {
2541 /* v3 mangling prevents the use of abbreviated physnames,
2542 so we can do this here. There are stubbed methods in v3
2543 only:
2544 - in -gstabs instead of -gstabs+
2545 - or for static methods, which are output as a function type
2546 instead of a method type. */
2547
2548 update_method_name_from_physname (&new_fnlist->fn_fieldlist.name,
2549 sublist->fn_field.physname);
2550 }
2551 else if (has_destructor && new_fnlist->fn_fieldlist.name[0] != '~')
2552 {
2553 new_fnlist->fn_fieldlist.name =
2554 concat ("~", main_fn_name, (char *)NULL);
2555 xfree (main_fn_name);
2556 }
2557 else if (!has_stub)
2558 {
2559 char dem_opname[256];
2560 int ret;
2561 ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name,
2562 dem_opname, DMGL_ANSI);
2563 if (!ret)
2564 ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name,
2565 dem_opname, 0);
2566 if (ret)
2567 new_fnlist->fn_fieldlist.name
2568 = obsavestring (dem_opname, strlen (dem_opname),
2569 &objfile->objfile_obstack);
2570 }
2571
2572 new_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
2573 obstack_alloc (&objfile->objfile_obstack,
2574 sizeof (struct fn_field) * length);
2575 memset (new_fnlist->fn_fieldlist.fn_fields, 0,
2576 sizeof (struct fn_field) * length);
2577 for (i = length; (i--, sublist); sublist = sublist->next)
2578 {
2579 new_fnlist->fn_fieldlist.fn_fields[i] = sublist->fn_field;
2580 }
2581
2582 new_fnlist->fn_fieldlist.length = length;
2583 new_fnlist->next = fip->fnlist;
2584 fip->fnlist = new_fnlist;
2585 nfn_fields++;
2586 total_length += length;
2587 }
2588 }
2589
2590 if (nfn_fields)
2591 {
2592 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2593 TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
2594 TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * nfn_fields);
2595 memset (TYPE_FN_FIELDLISTS (type), 0,
2596 sizeof (struct fn_fieldlist) * nfn_fields);
2597 TYPE_NFN_FIELDS (type) = nfn_fields;
2598 TYPE_NFN_FIELDS_TOTAL (type) = total_length;
2599 }
2600
2601 return 1;
2602 }
2603
2604 /* Special GNU C++ name.
2605
2606 Returns 1 for success, 0 for failure. "failure" means that we can't
2607 keep parsing and it's time for error_type(). */
2608
2609 static int
2610 read_cpp_abbrev (struct field_info *fip, char **pp, struct type *type,
2611 struct objfile *objfile)
2612 {
2613 char *p;
2614 char *name;
2615 char cpp_abbrev;
2616 struct type *context;
2617
2618 p = *pp;
2619 if (*++p == 'v')
2620 {
2621 name = NULL;
2622 cpp_abbrev = *++p;
2623
2624 *pp = p + 1;
2625
2626 /* At this point, *pp points to something like "22:23=*22...",
2627 where the type number before the ':' is the "context" and
2628 everything after is a regular type definition. Lookup the
2629 type, find it's name, and construct the field name. */
2630
2631 context = read_type (pp, objfile);
2632
2633 switch (cpp_abbrev)
2634 {
2635 case 'f': /* $vf -- a virtual function table pointer */
2636 name = type_name_no_tag (context);
2637 if (name == NULL)
2638 {
2639 name = "";
2640 }
2641 fip->list->field.name =
2642 obconcat (&objfile->objfile_obstack, vptr_name, name, "");
2643 break;
2644
2645 case 'b': /* $vb -- a virtual bsomethingorother */
2646 name = type_name_no_tag (context);
2647 if (name == NULL)
2648 {
2649 complaint (&symfile_complaints,
2650 _("C++ abbreviated type name unknown at symtab pos %d"),
2651 symnum);
2652 name = "FOO";
2653 }
2654 fip->list->field.name =
2655 obconcat (&objfile->objfile_obstack, vb_name, name, "");
2656 break;
2657
2658 default:
2659 invalid_cpp_abbrev_complaint (*pp);
2660 fip->list->field.name =
2661 obconcat (&objfile->objfile_obstack,
2662 "INVALID_CPLUSPLUS_ABBREV", "", "");
2663 break;
2664 }
2665
2666 /* At this point, *pp points to the ':'. Skip it and read the
2667 field type. */
2668
2669 p = ++(*pp);
2670 if (p[-1] != ':')
2671 {
2672 invalid_cpp_abbrev_complaint (*pp);
2673 return 0;
2674 }
2675 fip->list->field.type = read_type (pp, objfile);
2676 if (**pp == ',')
2677 (*pp)++; /* Skip the comma. */
2678 else
2679 return 0;
2680
2681 {
2682 int nbits;
2683 FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ';', &nbits,
2684 0);
2685 if (nbits != 0)
2686 return 0;
2687 }
2688 /* This field is unpacked. */
2689 FIELD_BITSIZE (fip->list->field) = 0;
2690 fip->list->visibility = VISIBILITY_PRIVATE;
2691 }
2692 else
2693 {
2694 invalid_cpp_abbrev_complaint (*pp);
2695 /* We have no idea what syntax an unrecognized abbrev would have, so
2696 better return 0. If we returned 1, we would need to at least advance
2697 *pp to avoid an infinite loop. */
2698 return 0;
2699 }
2700 return 1;
2701 }
2702
2703 static void
2704 read_one_struct_field (struct field_info *fip, char **pp, char *p,
2705 struct type *type, struct objfile *objfile)
2706 {
2707 struct gdbarch *gdbarch = get_objfile_arch (objfile);
2708
2709 fip->list->field.name =
2710 obsavestring (*pp, p - *pp, &objfile->objfile_obstack);
2711 *pp = p + 1;
2712
2713 /* This means we have a visibility for a field coming. */
2714 if (**pp == '/')
2715 {
2716 (*pp)++;
2717 fip->list->visibility = *(*pp)++;
2718 }
2719 else
2720 {
2721 /* normal dbx-style format, no explicit visibility */
2722 fip->list->visibility = VISIBILITY_PUBLIC;
2723 }
2724
2725 fip->list->field.type = read_type (pp, objfile);
2726 if (**pp == ':')
2727 {
2728 p = ++(*pp);
2729 #if 0
2730 /* Possible future hook for nested types. */
2731 if (**pp == '!')
2732 {
2733 fip->list->field.bitpos = (long) -2; /* nested type */
2734 p = ++(*pp);
2735 }
2736 else
2737 ...;
2738 #endif
2739 while (*p != ';')
2740 {
2741 p++;
2742 }
2743 /* Static class member. */
2744 SET_FIELD_PHYSNAME (fip->list->field, savestring (*pp, p - *pp));
2745 *pp = p + 1;
2746 return;
2747 }
2748 else if (**pp != ',')
2749 {
2750 /* Bad structure-type format. */
2751 stabs_general_complaint ("bad structure-type format");
2752 return;
2753 }
2754
2755 (*pp)++; /* Skip the comma. */
2756
2757 {
2758 int nbits;
2759 FIELD_BITPOS (fip->list->field) = read_huge_number (pp, ',', &nbits, 0);
2760 if (nbits != 0)
2761 {
2762 stabs_general_complaint ("bad structure-type format");
2763 return;
2764 }
2765 FIELD_BITSIZE (fip->list->field) = read_huge_number (pp, ';', &nbits, 0);
2766 if (nbits != 0)
2767 {
2768 stabs_general_complaint ("bad structure-type format");
2769 return;
2770 }
2771 }
2772
2773 if (FIELD_BITPOS (fip->list->field) == 0
2774 && FIELD_BITSIZE (fip->list->field) == 0)
2775 {
2776 /* This can happen in two cases: (1) at least for gcc 2.4.5 or so,
2777 it is a field which has been optimized out. The correct stab for
2778 this case is to use VISIBILITY_IGNORE, but that is a recent
2779 invention. (2) It is a 0-size array. For example
2780 union { int num; char str[0]; } foo. Printing _("<no value>" for
2781 str in "p foo" is OK, since foo.str (and thus foo.str[3])
2782 will continue to work, and a 0-size array as a whole doesn't
2783 have any contents to print.
2784
2785 I suspect this probably could also happen with gcc -gstabs (not
2786 -gstabs+) for static fields, and perhaps other C++ extensions.
2787 Hopefully few people use -gstabs with gdb, since it is intended
2788 for dbx compatibility. */
2789
2790 /* Ignore this field. */
2791 fip->list->visibility = VISIBILITY_IGNORE;
2792 }
2793 else
2794 {
2795 /* Detect an unpacked field and mark it as such.
2796 dbx gives a bit size for all fields.
2797 Note that forward refs cannot be packed,
2798 and treat enums as if they had the width of ints. */
2799
2800 struct type *field_type = check_typedef (FIELD_TYPE (fip->list->field));
2801
2802 if (TYPE_CODE (field_type) != TYPE_CODE_INT
2803 && TYPE_CODE (field_type) != TYPE_CODE_RANGE
2804 && TYPE_CODE (field_type) != TYPE_CODE_BOOL
2805 && TYPE_CODE (field_type) != TYPE_CODE_ENUM)
2806 {
2807 FIELD_BITSIZE (fip->list->field) = 0;
2808 }
2809 if ((FIELD_BITSIZE (fip->list->field)
2810 == TARGET_CHAR_BIT * TYPE_LENGTH (field_type)
2811 || (TYPE_CODE (field_type) == TYPE_CODE_ENUM
2812 && FIELD_BITSIZE (fip->list->field)
2813 == gdbarch_int_bit (gdbarch))
2814 )
2815 &&
2816 FIELD_BITPOS (fip->list->field) % 8 == 0)
2817 {
2818 FIELD_BITSIZE (fip->list->field) = 0;
2819 }
2820 }
2821 }
2822
2823
2824 /* Read struct or class data fields. They have the form:
2825
2826 NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
2827
2828 At the end, we see a semicolon instead of a field.
2829
2830 In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
2831 a static field.
2832
2833 The optional VISIBILITY is one of:
2834
2835 '/0' (VISIBILITY_PRIVATE)
2836 '/1' (VISIBILITY_PROTECTED)
2837 '/2' (VISIBILITY_PUBLIC)
2838 '/9' (VISIBILITY_IGNORE)
2839
2840 or nothing, for C style fields with public visibility.
2841
2842 Returns 1 for success, 0 for failure. */
2843
2844 static int
2845 read_struct_fields (struct field_info *fip, char **pp, struct type *type,
2846 struct objfile *objfile)
2847 {
2848 char *p;
2849 struct nextfield *new;
2850
2851 /* We better set p right now, in case there are no fields at all... */
2852
2853 p = *pp;
2854
2855 /* Read each data member type until we find the terminating ';' at the end of
2856 the data member list, or break for some other reason such as finding the
2857 start of the member function list. */
2858 /* Stab string for structure/union does not end with two ';' in
2859 SUN C compiler 5.3 i.e. F6U2, hence check for end of string. */
2860
2861 while (**pp != ';' && **pp != '\0')
2862 {
2863 STABS_CONTINUE (pp, objfile);
2864 /* Get space to record the next field's data. */
2865 new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2866 make_cleanup (xfree, new);
2867 memset (new, 0, sizeof (struct nextfield));
2868 new->next = fip->list;
2869 fip->list = new;
2870
2871 /* Get the field name. */
2872 p = *pp;
2873
2874 /* If is starts with CPLUS_MARKER it is a special abbreviation,
2875 unless the CPLUS_MARKER is followed by an underscore, in
2876 which case it is just the name of an anonymous type, which we
2877 should handle like any other type name. */
2878
2879 if (is_cplus_marker (p[0]) && p[1] != '_')
2880 {
2881 if (!read_cpp_abbrev (fip, pp, type, objfile))
2882 return 0;
2883 continue;
2884 }
2885
2886 /* Look for the ':' that separates the field name from the field
2887 values. Data members are delimited by a single ':', while member
2888 functions are delimited by a pair of ':'s. When we hit the member
2889 functions (if any), terminate scan loop and return. */
2890
2891 while (*p != ':' && *p != '\0')
2892 {
2893 p++;
2894 }
2895 if (*p == '\0')
2896 return 0;
2897
2898 /* Check to see if we have hit the member functions yet. */
2899 if (p[1] == ':')
2900 {
2901 break;
2902 }
2903 read_one_struct_field (fip, pp, p, type, objfile);
2904 }
2905 if (p[0] == ':' && p[1] == ':')
2906 {
2907 /* (the deleted) chill the list of fields: the last entry (at
2908 the head) is a partially constructed entry which we now
2909 scrub. */
2910 fip->list = fip->list->next;
2911 }
2912 return 1;
2913 }
2914 /* *INDENT-OFF* */
2915 /* The stabs for C++ derived classes contain baseclass information which
2916 is marked by a '!' character after the total size. This function is
2917 called when we encounter the baseclass marker, and slurps up all the
2918 baseclass information.
2919
2920 Immediately following the '!' marker is the number of base classes that
2921 the class is derived from, followed by information for each base class.
2922 For each base class, there are two visibility specifiers, a bit offset
2923 to the base class information within the derived class, a reference to
2924 the type for the base class, and a terminating semicolon.
2925
2926 A typical example, with two base classes, would be "!2,020,19;0264,21;".
2927 ^^ ^ ^ ^ ^ ^ ^
2928 Baseclass information marker __________________|| | | | | | |
2929 Number of baseclasses __________________________| | | | | | |
2930 Visibility specifiers (2) ________________________| | | | | |
2931 Offset in bits from start of class _________________| | | | |
2932 Type number for base class ___________________________| | | |
2933 Visibility specifiers (2) _______________________________| | |
2934 Offset in bits from start of class ________________________| |
2935 Type number of base class ____________________________________|
2936
2937 Return 1 for success, 0 for (error-type-inducing) failure. */
2938 /* *INDENT-ON* */
2939
2940
2941
2942 static int
2943 read_baseclasses (struct field_info *fip, char **pp, struct type *type,
2944 struct objfile *objfile)
2945 {
2946 int i;
2947 struct nextfield *new;
2948
2949 if (**pp != '!')
2950 {
2951 return 1;
2952 }
2953 else
2954 {
2955 /* Skip the '!' baseclass information marker. */
2956 (*pp)++;
2957 }
2958
2959 ALLOCATE_CPLUS_STRUCT_TYPE (type);
2960 {
2961 int nbits;
2962 TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits, 0);
2963 if (nbits != 0)
2964 return 0;
2965 }
2966
2967 #if 0
2968 /* Some stupid compilers have trouble with the following, so break
2969 it up into simpler expressions. */
2970 TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *)
2971 TYPE_ALLOC (type, B_BYTES (TYPE_N_BASECLASSES (type)));
2972 #else
2973 {
2974 int num_bytes = B_BYTES (TYPE_N_BASECLASSES (type));
2975 char *pointer;
2976
2977 pointer = (char *) TYPE_ALLOC (type, num_bytes);
2978 TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *) pointer;
2979 }
2980 #endif /* 0 */
2981
2982 B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), TYPE_N_BASECLASSES (type));
2983
2984 for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
2985 {
2986 new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2987 make_cleanup (xfree, new);
2988 memset (new, 0, sizeof (struct nextfield));
2989 new->next = fip->list;
2990 fip->list = new;
2991 FIELD_BITSIZE (new->field) = 0; /* this should be an unpacked field! */
2992
2993 STABS_CONTINUE (pp, objfile);
2994 switch (**pp)
2995 {
2996 case '0':
2997 /* Nothing to do. */
2998 break;
2999 case '1':
3000 SET_TYPE_FIELD_VIRTUAL (type, i);
3001 break;
3002 default:
3003 /* Unknown character. Complain and treat it as non-virtual. */
3004 {
3005 complaint (&symfile_complaints,
3006 _("Unknown virtual character `%c' for baseclass"), **pp);
3007 }
3008 }
3009 ++(*pp);
3010
3011 new->visibility = *(*pp)++;
3012 switch (new->visibility)
3013 {
3014 case VISIBILITY_PRIVATE:
3015 case VISIBILITY_PROTECTED:
3016 case VISIBILITY_PUBLIC:
3017 break;
3018 default:
3019 /* Bad visibility format. Complain and treat it as
3020 public. */
3021 {
3022 complaint (&symfile_complaints,
3023 _("Unknown visibility `%c' for baseclass"),
3024 new->visibility);
3025 new->visibility = VISIBILITY_PUBLIC;
3026 }
3027 }
3028
3029 {
3030 int nbits;
3031
3032 /* The remaining value is the bit offset of the portion of the object
3033 corresponding to this baseclass. Always zero in the absence of
3034 multiple inheritance. */
3035
3036 FIELD_BITPOS (new->field) = read_huge_number (pp, ',', &nbits, 0);
3037 if (nbits != 0)
3038 return 0;
3039 }
3040
3041 /* The last piece of baseclass information is the type of the
3042 base class. Read it, and remember it's type name as this
3043 field's name. */
3044
3045 new->field.type = read_type (pp, objfile);
3046 new->field.name = type_name_no_tag (new->field.type);
3047
3048 /* skip trailing ';' and bump count of number of fields seen */
3049 if (**pp == ';')
3050 (*pp)++;
3051 else
3052 return 0;
3053 }
3054 return 1;
3055 }
3056
3057 /* The tail end of stabs for C++ classes that contain a virtual function
3058 pointer contains a tilde, a %, and a type number.
3059 The type number refers to the base class (possibly this class itself) which
3060 contains the vtable pointer for the current class.
3061
3062 This function is called when we have parsed all the method declarations,
3063 so we can look for the vptr base class info. */
3064
3065 static int
3066 read_tilde_fields (struct field_info *fip, char **pp, struct type *type,
3067 struct objfile *objfile)
3068 {
3069 char *p;
3070
3071 STABS_CONTINUE (pp, objfile);
3072
3073 /* If we are positioned at a ';', then skip it. */
3074 if (**pp == ';')
3075 {
3076 (*pp)++;
3077 }
3078
3079 if (**pp == '~')
3080 {
3081 (*pp)++;
3082
3083 if (**pp == '=' || **pp == '+' || **pp == '-')
3084 {
3085 /* Obsolete flags that used to indicate the presence
3086 of constructors and/or destructors. */
3087 (*pp)++;
3088 }
3089
3090 /* Read either a '%' or the final ';'. */
3091 if (*(*pp)++ == '%')
3092 {
3093 /* The next number is the type number of the base class
3094 (possibly our own class) which supplies the vtable for
3095 this class. Parse it out, and search that class to find
3096 its vtable pointer, and install those into TYPE_VPTR_BASETYPE
3097 and TYPE_VPTR_FIELDNO. */
3098
3099 struct type *t;
3100 int i;
3101
3102 t = read_type (pp, objfile);
3103 p = (*pp)++;
3104 while (*p != '\0' && *p != ';')
3105 {
3106 p++;
3107 }
3108 if (*p == '\0')
3109 {
3110 /* Premature end of symbol. */
3111 return 0;
3112 }
3113
3114 TYPE_VPTR_BASETYPE (type) = t;
3115 if (type == t) /* Our own class provides vtbl ptr */
3116 {
3117 for (i = TYPE_NFIELDS (t) - 1;
3118 i >= TYPE_N_BASECLASSES (t);
3119 --i)
3120 {
3121 char *name = TYPE_FIELD_NAME (t, i);
3122 if (!strncmp (name, vptr_name, sizeof (vptr_name) - 2)
3123 && is_cplus_marker (name[sizeof (vptr_name) - 2]))
3124 {
3125 TYPE_VPTR_FIELDNO (type) = i;
3126 goto gotit;
3127 }
3128 }
3129 /* Virtual function table field not found. */
3130 complaint (&symfile_complaints,
3131 _("virtual function table pointer not found when defining class `%s'"),
3132 TYPE_NAME (type));
3133 return 0;
3134 }
3135 else
3136 {
3137 TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
3138 }
3139
3140 gotit:
3141 *pp = p + 1;
3142 }
3143 }
3144 return 1;
3145 }
3146
3147 static int
3148 attach_fn_fields_to_type (struct field_info *fip, struct type *type)
3149 {
3150 int n;
3151
3152 for (n = TYPE_NFN_FIELDS (type);
3153 fip->fnlist != NULL;
3154 fip->fnlist = fip->fnlist->next)
3155 {
3156 --n; /* Circumvent Sun3 compiler bug */
3157 TYPE_FN_FIELDLISTS (type)[n] = fip->fnlist->fn_fieldlist;
3158 }
3159 return 1;
3160 }
3161
3162 /* Create the vector of fields, and record how big it is.
3163 We need this info to record proper virtual function table information
3164 for this class's virtual functions. */
3165
3166 static int
3167 attach_fields_to_type (struct field_info *fip, struct type *type,
3168 struct objfile *objfile)
3169 {
3170 int nfields = 0;
3171 int non_public_fields = 0;
3172 struct nextfield *scan;
3173
3174 /* Count up the number of fields that we have, as well as taking note of
3175 whether or not there are any non-public fields, which requires us to
3176 allocate and build the private_field_bits and protected_field_bits
3177 bitfields. */
3178
3179 for (scan = fip->list; scan != NULL; scan = scan->next)
3180 {
3181 nfields++;
3182 if (scan->visibility != VISIBILITY_PUBLIC)
3183 {
3184 non_public_fields++;
3185 }
3186 }
3187
3188 /* Now we know how many fields there are, and whether or not there are any
3189 non-public fields. Record the field count, allocate space for the
3190 array of fields, and create blank visibility bitfields if necessary. */
3191
3192 TYPE_NFIELDS (type) = nfields;
3193 TYPE_FIELDS (type) = (struct field *)
3194 TYPE_ALLOC (type, sizeof (struct field) * nfields);
3195 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
3196
3197 if (non_public_fields)
3198 {
3199 ALLOCATE_CPLUS_STRUCT_TYPE (type);
3200
3201 TYPE_FIELD_PRIVATE_BITS (type) =
3202 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3203 B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
3204
3205 TYPE_FIELD_PROTECTED_BITS (type) =
3206 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3207 B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
3208
3209 TYPE_FIELD_IGNORE_BITS (type) =
3210 (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3211 B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
3212 }
3213
3214 /* Copy the saved-up fields into the field vector. Start from the head
3215 of the list, adding to the tail of the field array, so that they end
3216 up in the same order in the array in which they were added to the list. */
3217
3218 while (nfields-- > 0)
3219 {
3220 TYPE_FIELD (type, nfields) = fip->list->field;
3221 switch (fip->list->visibility)
3222 {
3223 case VISIBILITY_PRIVATE:
3224 SET_TYPE_FIELD_PRIVATE (type, nfields);
3225 break;
3226
3227 case VISIBILITY_PROTECTED:
3228 SET_TYPE_FIELD_PROTECTED (type, nfields);
3229 break;
3230
3231 case VISIBILITY_IGNORE:
3232 SET_TYPE_FIELD_IGNORE (type, nfields);
3233 break;
3234
3235 case VISIBILITY_PUBLIC:
3236 break;
3237
3238 default:
3239 /* Unknown visibility. Complain and treat it as public. */
3240 {
3241 complaint (&symfile_complaints, _("Unknown visibility `%c' for field"),
3242 fip->list->visibility);
3243 }
3244 break;
3245 }
3246 fip->list = fip->list->next;
3247 }
3248 return 1;
3249 }
3250
3251
3252 /* Complain that the compiler has emitted more than one definition for the
3253 structure type TYPE. */
3254 static void
3255 complain_about_struct_wipeout (struct type *type)
3256 {
3257 char *name = "";
3258 char *kind = "";
3259
3260 if (TYPE_TAG_NAME (type))
3261 {
3262 name = TYPE_TAG_NAME (type);
3263 switch (TYPE_CODE (type))
3264 {
3265 case TYPE_CODE_STRUCT: kind = "struct "; break;
3266 case TYPE_CODE_UNION: kind = "union "; break;
3267 case TYPE_CODE_ENUM: kind = "enum "; break;
3268 default: kind = "";
3269 }
3270 }
3271 else if (TYPE_NAME (type))
3272 {
3273 name = TYPE_NAME (type);
3274 kind = "";
3275 }
3276 else
3277 {
3278 name = "<unknown>";
3279 kind = "";
3280 }
3281
3282 complaint (&symfile_complaints,
3283 _("struct/union type gets multiply defined: %s%s"), kind, name);
3284 }
3285
3286
3287 /* Read the description of a structure (or union type) and return an object
3288 describing the type.
3289
3290 PP points to a character pointer that points to the next unconsumed token
3291 in the the stabs string. For example, given stabs "A:T4=s4a:1,0,32;;",
3292 *PP will point to "4a:1,0,32;;".
3293
3294 TYPE points to an incomplete type that needs to be filled in.
3295
3296 OBJFILE points to the current objfile from which the stabs information is
3297 being read. (Note that it is redundant in that TYPE also contains a pointer
3298 to this same objfile, so it might be a good idea to eliminate it. FIXME).
3299 */
3300
3301 static struct type *
3302 read_struct_type (char **pp, struct type *type, enum type_code type_code,
3303 struct objfile *objfile)
3304 {
3305 struct cleanup *back_to;
3306 struct field_info fi;
3307
3308 fi.list = NULL;
3309 fi.fnlist = NULL;
3310
3311 /* When describing struct/union/class types in stabs, G++ always drops
3312 all qualifications from the name. So if you've got:
3313 struct A { ... struct B { ... }; ... };
3314 then G++ will emit stabs for `struct A::B' that call it simply
3315 `struct B'. Obviously, if you've got a real top-level definition for
3316 `struct B', or other nested definitions, this is going to cause
3317 problems.
3318
3319 Obviously, GDB can't fix this by itself, but it can at least avoid
3320 scribbling on existing structure type objects when new definitions
3321 appear. */
3322 if (! (TYPE_CODE (type) == TYPE_CODE_UNDEF
3323 || TYPE_STUB (type)))
3324 {
3325 complain_about_struct_wipeout (type);
3326
3327 /* It's probably best to return the type unchanged. */
3328 return type;
3329 }
3330
3331 back_to = make_cleanup (null_cleanup, 0);
3332
3333 INIT_CPLUS_SPECIFIC (type);
3334 TYPE_CODE (type) = type_code;
3335 TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
3336
3337 /* First comes the total size in bytes. */
3338
3339 {
3340 int nbits;
3341 TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits, 0);
3342 if (nbits != 0)
3343 return error_type (pp, objfile);
3344 }
3345
3346 /* Now read the baseclasses, if any, read the regular C struct or C++
3347 class member fields, attach the fields to the type, read the C++
3348 member functions, attach them to the type, and then read any tilde
3349 field (baseclass specifier for the class holding the main vtable). */
3350
3351 if (!read_baseclasses (&fi, pp, type, objfile)
3352 || !read_struct_fields (&fi, pp, type, objfile)
3353 || !attach_fields_to_type (&fi, type, objfile)
3354 || !read_member_functions (&fi, pp, type, objfile)
3355 || !attach_fn_fields_to_type (&fi, type)
3356 || !read_tilde_fields (&fi, pp, type, objfile))
3357 {
3358 type = error_type (pp, objfile);
3359 }
3360
3361 do_cleanups (back_to);
3362 return (type);
3363 }
3364
3365 /* Read a definition of an array type,
3366 and create and return a suitable type object.
3367 Also creates a range type which represents the bounds of that
3368 array. */
3369
3370 static struct type *
3371 read_array_type (char **pp, struct type *type,
3372 struct objfile *objfile)
3373 {
3374 struct type *index_type, *element_type, *range_type;
3375 int lower, upper;
3376 int adjustable = 0;
3377 int nbits;
3378
3379 /* Format of an array type:
3380 "ar<index type>;lower;upper;<array_contents_type>".
3381 OS9000: "arlower,upper;<array_contents_type>".
3382
3383 Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
3384 for these, produce a type like float[][]. */
3385
3386 {
3387 index_type = read_type (pp, objfile);
3388 if (**pp != ';')
3389 /* Improper format of array type decl. */
3390 return error_type (pp, objfile);
3391 ++*pp;
3392 }
3393
3394 if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
3395 {
3396 (*pp)++;
3397 adjustable = 1;
3398 }
3399 lower = read_huge_number (pp, ';', &nbits, 0);
3400
3401 if (nbits != 0)
3402 return error_type (pp, objfile);
3403
3404 if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
3405 {
3406 (*pp)++;
3407 adjustable = 1;
3408 }
3409 upper = read_huge_number (pp, ';', &nbits, 0);
3410 if (nbits != 0)
3411 return error_type (pp, objfile);
3412
3413 element_type = read_type (pp, objfile);
3414
3415 if (adjustable)
3416 {
3417 lower = 0;
3418 upper = -1;
3419 }
3420
3421 range_type =
3422 create_range_type ((struct type *) NULL, index_type, lower, upper);
3423 type = create_array_type (type, element_type, range_type);
3424
3425 return type;
3426 }
3427
3428
3429 /* Read a definition of an enumeration type,
3430 and create and return a suitable type object.
3431 Also defines the symbols that represent the values of the type. */
3432
3433 static struct type *
3434 read_enum_type (char **pp, struct type *type,
3435 struct objfile *objfile)
3436 {
3437 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3438 char *p;
3439 char *name;
3440 long n;
3441 struct symbol *sym;
3442 int nsyms = 0;
3443 struct pending **symlist;
3444 struct pending *osyms, *syms;
3445 int o_nsyms;
3446 int nbits;
3447 int unsigned_enum = 1;
3448
3449 #if 0
3450 /* FIXME! The stabs produced by Sun CC merrily define things that ought
3451 to be file-scope, between N_FN entries, using N_LSYM. What's a mother
3452 to do? For now, force all enum values to file scope. */
3453 if (within_function)
3454 symlist = &local_symbols;
3455 else
3456 #endif
3457 symlist = &file_symbols;
3458 osyms = *symlist;
3459 o_nsyms = osyms ? osyms->nsyms : 0;
3460
3461 /* The aix4 compiler emits an extra field before the enum members;
3462 my guess is it's a type of some sort. Just ignore it. */
3463 if (**pp == '-')
3464 {
3465 /* Skip over the type. */
3466 while (**pp != ':')
3467 (*pp)++;
3468
3469 /* Skip over the colon. */
3470 (*pp)++;
3471 }
3472
3473 /* Read the value-names and their values.
3474 The input syntax is NAME:VALUE,NAME:VALUE, and so on.
3475 A semicolon or comma instead of a NAME means the end. */
3476 while (**pp && **pp != ';' && **pp != ',')
3477 {
3478 STABS_CONTINUE (pp, objfile);
3479 p = *pp;
3480 while (*p != ':')
3481 p++;
3482 name = obsavestring (*pp, p - *pp, &objfile->objfile_obstack);
3483 *pp = p + 1;
3484 n = read_huge_number (pp, ',', &nbits, 0);
3485 if (nbits != 0)
3486 return error_type (pp, objfile);
3487
3488 sym = (struct symbol *)
3489 obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
3490 memset (sym, 0, sizeof (struct symbol));
3491 DEPRECATED_SYMBOL_NAME (sym) = name;
3492 SYMBOL_LANGUAGE (sym) = current_subfile->language;
3493 SYMBOL_CLASS (sym) = LOC_CONST;
3494 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
3495 SYMBOL_VALUE (sym) = n;
3496 if (n < 0)
3497 unsigned_enum = 0;
3498 add_symbol_to_list (sym, symlist);
3499 nsyms++;
3500 }
3501
3502 if (**pp == ';')
3503 (*pp)++; /* Skip the semicolon. */
3504
3505 /* Now fill in the fields of the type-structure. */
3506
3507 TYPE_LENGTH (type) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT;
3508 TYPE_CODE (type) = TYPE_CODE_ENUM;
3509 TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
3510 if (unsigned_enum)
3511 TYPE_FLAGS (type) |= TYPE_FLAG_UNSIGNED;
3512 TYPE_NFIELDS (type) = nsyms;
3513 TYPE_FIELDS (type) = (struct field *)
3514 TYPE_ALLOC (type, sizeof (struct field) * nsyms);
3515 memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
3516
3517 /* Find the symbols for the values and put them into the type.
3518 The symbols can be found in the symlist that we put them on
3519 to cause them to be defined. osyms contains the old value
3520 of that symlist; everything up to there was defined by us. */
3521 /* Note that we preserve the order of the enum constants, so
3522 that in something like "enum {FOO, LAST_THING=FOO}" we print
3523 FOO, not LAST_THING. */
3524
3525 for (syms = *symlist, n = nsyms - 1; syms; syms = syms->next)
3526 {
3527 int last = syms == osyms ? o_nsyms : 0;
3528 int j = syms->nsyms;
3529 for (; --j >= last; --n)
3530 {
3531 struct symbol *xsym = syms->symbol[j];
3532 SYMBOL_TYPE (xsym) = type;
3533 TYPE_FIELD_NAME (type, n) = DEPRECATED_SYMBOL_NAME (xsym);
3534 TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym);
3535 TYPE_FIELD_BITSIZE (type, n) = 0;
3536 }
3537 if (syms == osyms)
3538 break;
3539 }
3540
3541 return type;
3542 }
3543
3544 /* Sun's ACC uses a somewhat saner method for specifying the builtin
3545 typedefs in every file (for int, long, etc):
3546
3547 type = b <signed> <width> <format type>; <offset>; <nbits>
3548 signed = u or s.
3549 optional format type = c or b for char or boolean.
3550 offset = offset from high order bit to start bit of type.
3551 width is # bytes in object of this type, nbits is # bits in type.
3552
3553 The width/offset stuff appears to be for small objects stored in
3554 larger ones (e.g. `shorts' in `int' registers). We ignore it for now,
3555 FIXME. */
3556
3557 static struct type *
3558 read_sun_builtin_type (char **pp, int typenums[2], struct objfile *objfile)
3559 {
3560 int type_bits;
3561 int nbits;
3562 int signed_type;
3563 enum type_code code = TYPE_CODE_INT;
3564
3565 switch (**pp)
3566 {
3567 case 's':
3568 signed_type = 1;
3569 break;
3570 case 'u':
3571 signed_type = 0;
3572 break;
3573 default:
3574 return error_type (pp, objfile);
3575 }
3576 (*pp)++;
3577
3578 /* For some odd reason, all forms of char put a c here. This is strange
3579 because no other type has this honor. We can safely ignore this because
3580 we actually determine 'char'acterness by the number of bits specified in
3581 the descriptor.
3582 Boolean forms, e.g Fortran logical*X, put a b here. */
3583
3584 if (**pp == 'c')
3585 (*pp)++;
3586 else if (**pp == 'b')
3587 {
3588 code = TYPE_CODE_BOOL;
3589 (*pp)++;
3590 }
3591
3592 /* The first number appears to be the number of bytes occupied
3593 by this type, except that unsigned short is 4 instead of 2.
3594 Since this information is redundant with the third number,
3595 we will ignore it. */
3596 read_huge_number (pp, ';', &nbits, 0);
3597 if (nbits != 0)
3598 return error_type (pp, objfile);
3599
3600 /* The second number is always 0, so ignore it too. */
3601 read_huge_number (pp, ';', &nbits, 0);
3602 if (nbits != 0)
3603 return error_type (pp, objfile);
3604
3605 /* The third number is the number of bits for this type. */
3606 type_bits = read_huge_number (pp, 0, &nbits, 0);
3607 if (nbits != 0)
3608 return error_type (pp, objfile);
3609 /* The type *should* end with a semicolon. If it are embedded
3610 in a larger type the semicolon may be the only way to know where
3611 the type ends. If this type is at the end of the stabstring we
3612 can deal with the omitted semicolon (but we don't have to like
3613 it). Don't bother to complain(), Sun's compiler omits the semicolon
3614 for "void". */
3615 if (**pp == ';')
3616 ++(*pp);
3617
3618 if (type_bits == 0)
3619 return init_type (TYPE_CODE_VOID, 1,
3620 signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *) NULL,
3621 objfile);
3622 else
3623 return init_type (code,
3624 type_bits / TARGET_CHAR_BIT,
3625 signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *) NULL,
3626 objfile);
3627 }
3628
3629 static struct type *
3630 read_sun_floating_type (char **pp, int typenums[2], struct objfile *objfile)
3631 {
3632 int nbits;
3633 int details;
3634 int nbytes;
3635 struct type *rettype;
3636
3637 /* The first number has more details about the type, for example
3638 FN_COMPLEX. */
3639 details = read_huge_number (pp, ';', &nbits, 0);
3640 if (nbits != 0)
3641 return error_type (pp, objfile);
3642
3643 /* The second number is the number of bytes occupied by this type */
3644 nbytes = read_huge_number (pp, ';', &nbits, 0);
3645 if (nbits != 0)
3646 return error_type (pp, objfile);
3647
3648 if (details == NF_COMPLEX || details == NF_COMPLEX16
3649 || details == NF_COMPLEX32)
3650 {
3651 rettype = init_type (TYPE_CODE_COMPLEX, nbytes, 0, NULL, objfile);
3652 TYPE_TARGET_TYPE (rettype)
3653 = init_type (TYPE_CODE_FLT, nbytes / 2, 0, NULL, objfile);
3654 return rettype;
3655 }
3656
3657 return init_type (TYPE_CODE_FLT, nbytes, 0, NULL, objfile);
3658 }
3659
3660 /* Read a number from the string pointed to by *PP.
3661 The value of *PP is advanced over the number.
3662 If END is nonzero, the character that ends the
3663 number must match END, or an error happens;
3664 and that character is skipped if it does match.
3665 If END is zero, *PP is left pointing to that character.
3666
3667 If TWOS_COMPLEMENT_BITS is set to a strictly positive value and if
3668 the number is represented in an octal representation, assume that
3669 it is represented in a 2's complement representation with a size of
3670 TWOS_COMPLEMENT_BITS.
3671
3672 If the number fits in a long, set *BITS to 0 and return the value.
3673 If not, set *BITS to be the number of bits in the number and return 0.
3674
3675 If encounter garbage, set *BITS to -1 and return 0. */
3676
3677 static long
3678 read_huge_number (char **pp, int end, int *bits, int twos_complement_bits)
3679 {
3680 char *p = *pp;
3681 int sign = 1;
3682 int sign_bit = 0;
3683 long n = 0;
3684 int radix = 10;
3685 char overflow = 0;
3686 int nbits = 0;
3687 int c;
3688 long upper_limit;
3689 int twos_complement_representation = 0;
3690
3691 if (*p == '-')
3692 {
3693 sign = -1;
3694 p++;
3695 }
3696
3697 /* Leading zero means octal. GCC uses this to output values larger
3698 than an int (because that would be hard in decimal). */
3699 if (*p == '0')
3700 {
3701 radix = 8;
3702 p++;
3703 }
3704
3705 /* Skip extra zeros. */
3706 while (*p == '0')
3707 p++;
3708
3709 if (sign > 0 && radix == 8 && twos_complement_bits > 0)
3710 {
3711 /* Octal, possibly signed. Check if we have enough chars for a
3712 negative number. */
3713
3714 size_t len;
3715 char *p1 = p;
3716 while ((c = *p1) >= '0' && c < '8')
3717 p1++;
3718
3719 len = p1 - p;
3720 if (len > twos_complement_bits / 3
3721 || (twos_complement_bits % 3 == 0 && len == twos_complement_bits / 3))
3722 {
3723 /* Ok, we have enough characters for a signed value, check
3724 for signness by testing if the sign bit is set. */
3725 sign_bit = (twos_complement_bits % 3 + 2) % 3;
3726 c = *p - '0';
3727 if (c & (1 << sign_bit))
3728 {
3729 /* Definitely signed. */
3730 twos_complement_representation = 1;
3731 sign = -1;
3732 }
3733 }
3734 }
3735
3736 upper_limit = LONG_MAX / radix;
3737
3738 while ((c = *p++) >= '0' && c < ('0' + radix))
3739 {
3740 if (n <= upper_limit)
3741 {
3742 if (twos_complement_representation)
3743 {
3744 /* Octal, signed, twos complement representation. In
3745 this case, n is the corresponding absolute value. */
3746 if (n == 0)
3747 {
3748 long sn = c - '0' - ((2 * (c - '0')) | (2 << sign_bit));
3749 n = -sn;
3750 }
3751 else
3752 {
3753 n *= radix;
3754 n -= c - '0';
3755 }
3756 }
3757 else
3758 {
3759 /* unsigned representation */
3760 n *= radix;
3761 n += c - '0'; /* FIXME this overflows anyway */
3762 }
3763 }
3764 else
3765 overflow = 1;
3766
3767 /* This depends on large values being output in octal, which is
3768 what GCC does. */
3769 if (radix == 8)
3770 {
3771 if (nbits == 0)
3772 {
3773 if (c == '0')
3774 /* Ignore leading zeroes. */
3775 ;
3776 else if (c == '1')
3777 nbits = 1;
3778 else if (c == '2' || c == '3')
3779 nbits = 2;
3780 else
3781 nbits = 3;
3782 }
3783 else
3784 nbits += 3;
3785 }
3786 }
3787 if (end)
3788 {
3789 if (c && c != end)
3790 {
3791 if (bits != NULL)
3792 *bits = -1;
3793 return 0;
3794 }
3795 }
3796 else
3797 --p;
3798
3799 if (radix == 8 && twos_complement_bits > 0 && nbits > twos_complement_bits)
3800 {
3801 /* We were supposed to parse a number with maximum
3802 TWOS_COMPLEMENT_BITS bits, but something went wrong. */
3803 if (bits != NULL)
3804 *bits = -1;
3805 return 0;
3806 }
3807
3808 *pp = p;
3809 if (overflow)
3810 {
3811 if (nbits == 0)
3812 {
3813 /* Large decimal constants are an error (because it is hard to
3814 count how many bits are in them). */
3815 if (bits != NULL)
3816 *bits = -1;
3817 return 0;
3818 }
3819
3820 /* -0x7f is the same as 0x80. So deal with it by adding one to
3821 the number of bits. Two's complement represention octals
3822 can't have a '-' in front. */
3823 if (sign == -1 && !twos_complement_representation)
3824 ++nbits;
3825 if (bits)
3826 *bits = nbits;
3827 }
3828 else
3829 {
3830 if (bits)
3831 *bits = 0;
3832 return n * sign;
3833 }
3834 /* It's *BITS which has the interesting information. */
3835 return 0;
3836 }
3837
3838 static struct type *
3839 read_range_type (char **pp, int typenums[2], int type_size,
3840 struct objfile *objfile)
3841 {
3842 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3843 char *orig_pp = *pp;
3844 int rangenums[2];
3845 long n2, n3;
3846 int n2bits, n3bits;
3847 int self_subrange;
3848 struct type *result_type;
3849 struct type *index_type = NULL;
3850
3851 /* First comes a type we are a subrange of.
3852 In C it is usually 0, 1 or the type being defined. */
3853 if (read_type_number (pp, rangenums) != 0)
3854 return error_type (pp, objfile);
3855 self_subrange = (rangenums[0] == typenums[0] &&
3856 rangenums[1] == typenums[1]);
3857
3858 if (**pp == '=')
3859 {
3860 *pp = orig_pp;
3861 index_type = read_type (pp, objfile);
3862 }
3863
3864 /* A semicolon should now follow; skip it. */
3865 if (**pp == ';')
3866 (*pp)++;
3867
3868 /* The remaining two operands are usually lower and upper bounds
3869 of the range. But in some special cases they mean something else. */
3870 n2 = read_huge_number (pp, ';', &n2bits, type_size);
3871 n3 = read_huge_number (pp, ';', &n3bits, type_size);
3872
3873 if (n2bits == -1 || n3bits == -1)
3874 return error_type (pp, objfile);
3875
3876 if (index_type)
3877 goto handle_true_range;
3878
3879 /* If limits are huge, must be large integral type. */
3880 if (n2bits != 0 || n3bits != 0)
3881 {
3882 char got_signed = 0;
3883 char got_unsigned = 0;
3884 /* Number of bits in the type. */
3885 int nbits = 0;
3886
3887 /* If a type size attribute has been specified, the bounds of
3888 the range should fit in this size. If the lower bounds needs
3889 more bits than the upper bound, then the type is signed. */
3890 if (n2bits <= type_size && n3bits <= type_size)
3891 {
3892 if (n2bits == type_size && n2bits > n3bits)
3893 got_signed = 1;
3894 else
3895 got_unsigned = 1;
3896 nbits = type_size;
3897 }
3898 /* Range from 0 to <large number> is an unsigned large integral type. */
3899 else if ((n2bits == 0 && n2 == 0) && n3bits != 0)
3900 {
3901 got_unsigned = 1;
3902 nbits = n3bits;
3903 }
3904 /* Range from <large number> to <large number>-1 is a large signed
3905 integral type. Take care of the case where <large number> doesn't
3906 fit in a long but <large number>-1 does. */
3907 else if ((n2bits != 0 && n3bits != 0 && n2bits == n3bits + 1)
3908 || (n2bits != 0 && n3bits == 0
3909 && (n2bits == sizeof (long) * HOST_CHAR_BIT)
3910 && n3 == LONG_MAX))
3911 {
3912 got_signed = 1;
3913 nbits = n2bits;
3914 }
3915
3916 if (got_signed || got_unsigned)
3917 {
3918 return init_type (TYPE_CODE_INT, nbits / TARGET_CHAR_BIT,
3919 got_unsigned ? TYPE_FLAG_UNSIGNED : 0, NULL,
3920 objfile);
3921 }
3922 else
3923 return error_type (pp, objfile);
3924 }
3925
3926 /* A type defined as a subrange of itself, with bounds both 0, is void. */
3927 if (self_subrange && n2 == 0 && n3 == 0)
3928 return init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
3929
3930 /* If n3 is zero and n2 is positive, we want a floating type, and n2
3931 is the width in bytes.
3932
3933 Fortran programs appear to use this for complex types also. To
3934 distinguish between floats and complex, g77 (and others?) seem
3935 to use self-subranges for the complexes, and subranges of int for
3936 the floats.
3937
3938 Also note that for complexes, g77 sets n2 to the size of one of
3939 the member floats, not the whole complex beast. My guess is that
3940 this was to work well with pre-COMPLEX versions of gdb. */
3941
3942 if (n3 == 0 && n2 > 0)
3943 {
3944 struct type *float_type
3945 = init_type (TYPE_CODE_FLT, n2, 0, NULL, objfile);
3946
3947 if (self_subrange)
3948 {
3949 struct type *complex_type =
3950 init_type (TYPE_CODE_COMPLEX, 2 * n2, 0, NULL, objfile);
3951 TYPE_TARGET_TYPE (complex_type) = float_type;
3952 return complex_type;
3953 }
3954 else
3955 return float_type;
3956 }
3957
3958 /* If the upper bound is -1, it must really be an unsigned integral. */
3959
3960 else if (n2 == 0 && n3 == -1)
3961 {
3962 int bits = type_size;
3963 if (bits <= 0)
3964 {
3965 /* We don't know its size. It is unsigned int or unsigned
3966 long. GCC 2.3.3 uses this for long long too, but that is
3967 just a GDB 3.5 compatibility hack. */
3968 bits = gdbarch_int_bit (gdbarch);
3969 }
3970
3971 return init_type (TYPE_CODE_INT, bits / TARGET_CHAR_BIT,
3972 TYPE_FLAG_UNSIGNED, NULL, objfile);
3973 }
3974
3975 /* Special case: char is defined (Who knows why) as a subrange of
3976 itself with range 0-127. */
3977 else if (self_subrange && n2 == 0 && n3 == 127)
3978 return init_type (TYPE_CODE_INT, 1, TYPE_FLAG_NOSIGN, NULL, objfile);
3979
3980 /* We used to do this only for subrange of self or subrange of int. */
3981 else if (n2 == 0)
3982 {
3983 /* -1 is used for the upper bound of (4 byte) "unsigned int" and
3984 "unsigned long", and we already checked for that,
3985 so don't need to test for it here. */
3986
3987 if (n3 < 0)
3988 /* n3 actually gives the size. */
3989 return init_type (TYPE_CODE_INT, -n3, TYPE_FLAG_UNSIGNED,
3990 NULL, objfile);
3991
3992 /* Is n3 == 2**(8n)-1 for some integer n? Then it's an
3993 unsigned n-byte integer. But do require n to be a power of
3994 two; we don't want 3- and 5-byte integers flying around. */
3995 {
3996 int bytes;
3997 unsigned long bits;
3998
3999 bits = n3;
4000 for (bytes = 0; (bits & 0xff) == 0xff; bytes++)
4001 bits >>= 8;
4002 if (bits == 0
4003 && ((bytes - 1) & bytes) == 0) /* "bytes is a power of two" */
4004 return init_type (TYPE_CODE_INT, bytes, TYPE_FLAG_UNSIGNED, NULL,
4005 objfile);
4006 }
4007 }
4008 /* I think this is for Convex "long long". Since I don't know whether
4009 Convex sets self_subrange, I also accept that particular size regardless
4010 of self_subrange. */
4011 else if (n3 == 0 && n2 < 0
4012 && (self_subrange
4013 || n2 == -gdbarch_long_long_bit
4014 (gdbarch) / TARGET_CHAR_BIT))
4015 return init_type (TYPE_CODE_INT, -n2, 0, NULL, objfile);
4016 else if (n2 == -n3 - 1)
4017 {
4018 if (n3 == 0x7f)
4019 return init_type (TYPE_CODE_INT, 1, 0, NULL, objfile);
4020 if (n3 == 0x7fff)
4021 return init_type (TYPE_CODE_INT, 2, 0, NULL, objfile);
4022 if (n3 == 0x7fffffff)
4023 return init_type (TYPE_CODE_INT, 4, 0, NULL, objfile);
4024 }
4025
4026 /* We have a real range type on our hands. Allocate space and
4027 return a real pointer. */
4028 handle_true_range:
4029
4030 if (self_subrange)
4031 index_type = builtin_type (gdbarch)->builtin_int;
4032 else
4033 index_type = *dbx_lookup_type (rangenums);
4034 if (index_type == NULL)
4035 {
4036 /* Does this actually ever happen? Is that why we are worrying
4037 about dealing with it rather than just calling error_type? */
4038
4039 complaint (&symfile_complaints,
4040 _("base type %d of range type is not defined"), rangenums[1]);
4041
4042 index_type = builtin_type (gdbarch)->builtin_int;
4043 }
4044
4045 result_type = create_range_type ((struct type *) NULL, index_type, n2, n3);
4046 return (result_type);
4047 }
4048
4049 /* Read in an argument list. This is a list of types, separated by commas
4050 and terminated with END. Return the list of types read in, or NULL
4051 if there is an error. */
4052
4053 static struct field *
4054 read_args (char **pp, int end, struct objfile *objfile, int *nargsp,
4055 int *varargsp)
4056 {
4057 /* FIXME! Remove this arbitrary limit! */
4058 struct type *types[1024]; /* allow for fns of 1023 parameters */
4059 int n = 0, i;
4060 struct field *rval;
4061
4062 while (**pp != end)
4063 {
4064 if (**pp != ',')
4065 /* Invalid argument list: no ','. */
4066 return NULL;
4067 (*pp)++;
4068 STABS_CONTINUE (pp, objfile);
4069 types[n++] = read_type (pp, objfile);
4070 }
4071 (*pp)++; /* get past `end' (the ':' character) */
4072
4073 if (TYPE_CODE (types[n - 1]) != TYPE_CODE_VOID)
4074 *varargsp = 1;
4075 else
4076 {
4077 n--;
4078 *varargsp = 0;
4079 }
4080
4081 rval = (struct field *) xmalloc (n * sizeof (struct field));
4082 memset (rval, 0, n * sizeof (struct field));
4083 for (i = 0; i < n; i++)
4084 rval[i].type = types[i];
4085 *nargsp = n;
4086 return rval;
4087 }
4088 \f
4089 /* Common block handling. */
4090
4091 /* List of symbols declared since the last BCOMM. This list is a tail
4092 of local_symbols. When ECOMM is seen, the symbols on the list
4093 are noted so their proper addresses can be filled in later,
4094 using the common block base address gotten from the assembler
4095 stabs. */
4096
4097 static struct pending *common_block;
4098 static int common_block_i;
4099
4100 /* Name of the current common block. We get it from the BCOMM instead of the
4101 ECOMM to match IBM documentation (even though IBM puts the name both places
4102 like everyone else). */
4103 static char *common_block_name;
4104
4105 /* Process a N_BCOMM symbol. The storage for NAME is not guaranteed
4106 to remain after this function returns. */
4107
4108 void
4109 common_block_start (char *name, struct objfile *objfile)
4110 {
4111 if (common_block_name != NULL)
4112 {
4113 complaint (&symfile_complaints,
4114 _("Invalid symbol data: common block within common block"));
4115 }
4116 common_block = local_symbols;
4117 common_block_i = local_symbols ? local_symbols->nsyms : 0;
4118 common_block_name = obsavestring (name, strlen (name),
4119 &objfile->objfile_obstack);
4120 }
4121
4122 /* Process a N_ECOMM symbol. */
4123
4124 void
4125 common_block_end (struct objfile *objfile)
4126 {
4127 /* Symbols declared since the BCOMM are to have the common block
4128 start address added in when we know it. common_block and
4129 common_block_i point to the first symbol after the BCOMM in
4130 the local_symbols list; copy the list and hang it off the
4131 symbol for the common block name for later fixup. */
4132 int i;
4133 struct symbol *sym;
4134 struct pending *new = 0;
4135 struct pending *next;
4136 int j;
4137
4138 if (common_block_name == NULL)
4139 {
4140 complaint (&symfile_complaints, _("ECOMM symbol unmatched by BCOMM"));
4141 return;
4142 }
4143
4144 sym = (struct symbol *)
4145 obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol));
4146 memset (sym, 0, sizeof (struct symbol));
4147 /* Note: common_block_name already saved on objfile_obstack */
4148 DEPRECATED_SYMBOL_NAME (sym) = common_block_name;
4149 SYMBOL_CLASS (sym) = LOC_BLOCK;
4150
4151 /* Now we copy all the symbols which have been defined since the BCOMM. */
4152
4153 /* Copy all the struct pendings before common_block. */
4154 for (next = local_symbols;
4155 next != NULL && next != common_block;
4156 next = next->next)
4157 {
4158 for (j = 0; j < next->nsyms; j++)
4159 add_symbol_to_list (next->symbol[j], &new);
4160 }
4161
4162 /* Copy however much of COMMON_BLOCK we need. If COMMON_BLOCK is
4163 NULL, it means copy all the local symbols (which we already did
4164 above). */
4165
4166 if (common_block != NULL)
4167 for (j = common_block_i; j < common_block->nsyms; j++)
4168 add_symbol_to_list (common_block->symbol[j], &new);
4169
4170 SYMBOL_TYPE (sym) = (struct type *) new;
4171
4172 /* Should we be putting local_symbols back to what it was?
4173 Does it matter? */
4174
4175 i = hashname (DEPRECATED_SYMBOL_NAME (sym));
4176 SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
4177 global_sym_chain[i] = sym;
4178 common_block_name = NULL;
4179 }
4180
4181 /* Add a common block's start address to the offset of each symbol
4182 declared to be in it (by being between a BCOMM/ECOMM pair that uses
4183 the common block name). */
4184
4185 static void
4186 fix_common_block (struct symbol *sym, int valu)
4187 {
4188 struct pending *next = (struct pending *) SYMBOL_TYPE (sym);
4189 for (; next; next = next->next)
4190 {
4191 int j;
4192 for (j = next->nsyms - 1; j >= 0; j--)
4193 SYMBOL_VALUE_ADDRESS (next->symbol[j]) += valu;
4194 }
4195 }
4196 \f
4197
4198
4199 /* Add {TYPE, TYPENUMS} to the NONAME_UNDEFS vector.
4200 See add_undefined_type for more details. */
4201
4202 static void
4203 add_undefined_type_noname (struct type *type, int typenums[2])
4204 {
4205 struct nat nat;
4206
4207 nat.typenums[0] = typenums [0];
4208 nat.typenums[1] = typenums [1];
4209 nat.type = type;
4210
4211 if (noname_undefs_length == noname_undefs_allocated)
4212 {
4213 noname_undefs_allocated *= 2;
4214 noname_undefs = (struct nat *)
4215 xrealloc ((char *) noname_undefs,
4216 noname_undefs_allocated * sizeof (struct nat));
4217 }
4218 noname_undefs[noname_undefs_length++] = nat;
4219 }
4220
4221 /* Add TYPE to the UNDEF_TYPES vector.
4222 See add_undefined_type for more details. */
4223
4224 static void
4225 add_undefined_type_1 (struct type *type)
4226 {
4227 if (undef_types_length == undef_types_allocated)
4228 {
4229 undef_types_allocated *= 2;
4230 undef_types = (struct type **)
4231 xrealloc ((char *) undef_types,
4232 undef_types_allocated * sizeof (struct type *));
4233 }
4234 undef_types[undef_types_length++] = type;
4235 }
4236
4237 /* What about types defined as forward references inside of a small lexical
4238 scope? */
4239 /* Add a type to the list of undefined types to be checked through
4240 once this file has been read in.
4241
4242 In practice, we actually maintain two such lists: The first list
4243 (UNDEF_TYPES) is used for types whose name has been provided, and
4244 concerns forward references (eg 'xs' or 'xu' forward references);
4245 the second list (NONAME_UNDEFS) is used for types whose name is
4246 unknown at creation time, because they were referenced through
4247 their type number before the actual type was declared.
4248 This function actually adds the given type to the proper list. */
4249
4250 static void
4251 add_undefined_type (struct type *type, int typenums[2])
4252 {
4253 if (TYPE_TAG_NAME (type) == NULL)
4254 add_undefined_type_noname (type, typenums);
4255 else
4256 add_undefined_type_1 (type);
4257 }
4258
4259 /* Try to fix all undefined types pushed on the UNDEF_TYPES vector. */
4260
4261 void
4262 cleanup_undefined_types_noname (void)
4263 {
4264 int i;
4265
4266 for (i = 0; i < noname_undefs_length; i++)
4267 {
4268 struct nat nat = noname_undefs[i];
4269 struct type **type;
4270
4271 type = dbx_lookup_type (nat.typenums);
4272 if (nat.type != *type && TYPE_CODE (*type) != TYPE_CODE_UNDEF)
4273 {
4274 /* The instance flags of the undefined type are still unset,
4275 and needs to be copied over from the reference type.
4276 Since replace_type expects them to be identical, we need
4277 to set these flags manually before hand. */
4278 TYPE_INSTANCE_FLAGS (nat.type) = TYPE_INSTANCE_FLAGS (*type);
4279 replace_type (nat.type, *type);
4280 }
4281 }
4282
4283 noname_undefs_length = 0;
4284 }
4285
4286 /* Go through each undefined type, see if it's still undefined, and fix it
4287 up if possible. We have two kinds of undefined types:
4288
4289 TYPE_CODE_ARRAY: Array whose target type wasn't defined yet.
4290 Fix: update array length using the element bounds
4291 and the target type's length.
4292 TYPE_CODE_STRUCT, TYPE_CODE_UNION: Structure whose fields were not
4293 yet defined at the time a pointer to it was made.
4294 Fix: Do a full lookup on the struct/union tag. */
4295
4296 void
4297 cleanup_undefined_types_1 (void)
4298 {
4299 struct type **type;
4300
4301 /* Iterate over every undefined type, and look for a symbol whose type
4302 matches our undefined type. The symbol matches if:
4303 1. It is a typedef in the STRUCT domain;
4304 2. It has the same name, and same type code;
4305 3. The instance flags are identical.
4306
4307 It is important to check the instance flags, because we have seen
4308 examples where the debug info contained definitions such as:
4309
4310 "foo_t:t30=B31=xefoo_t:"
4311
4312 In this case, we have created an undefined type named "foo_t" whose
4313 instance flags is null (when processing "xefoo_t"), and then created
4314 another type with the same name, but with different instance flags
4315 ('B' means volatile). I think that the definition above is wrong,
4316 since the same type cannot be volatile and non-volatile at the same
4317 time, but we need to be able to cope with it when it happens. The
4318 approach taken here is to treat these two types as different. */
4319
4320 for (type = undef_types; type < undef_types + undef_types_length; type++)
4321 {
4322 switch (TYPE_CODE (*type))
4323 {
4324
4325 case TYPE_CODE_STRUCT:
4326 case TYPE_CODE_UNION:
4327 case TYPE_CODE_ENUM:
4328 {
4329 /* Check if it has been defined since. Need to do this here
4330 as well as in check_typedef to deal with the (legitimate in
4331 C though not C++) case of several types with the same name
4332 in different source files. */
4333 if (TYPE_STUB (*type))
4334 {
4335 struct pending *ppt;
4336 int i;
4337 /* Name of the type, without "struct" or "union" */
4338 char *typename = TYPE_TAG_NAME (*type);
4339
4340 if (typename == NULL)
4341 {
4342 complaint (&symfile_complaints, _("need a type name"));
4343 break;
4344 }
4345 for (ppt = file_symbols; ppt; ppt = ppt->next)
4346 {
4347 for (i = 0; i < ppt->nsyms; i++)
4348 {
4349 struct symbol *sym = ppt->symbol[i];
4350
4351 if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
4352 && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
4353 && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
4354 TYPE_CODE (*type))
4355 && (TYPE_INSTANCE_FLAGS (*type) ==
4356 TYPE_INSTANCE_FLAGS (SYMBOL_TYPE (sym)))
4357 && strcmp (DEPRECATED_SYMBOL_NAME (sym),
4358 typename) == 0)
4359 replace_type (*type, SYMBOL_TYPE (sym));
4360 }
4361 }
4362 }
4363 }
4364 break;
4365
4366 default:
4367 {
4368 complaint (&symfile_complaints,
4369 _("forward-referenced types left unresolved, "
4370 "type code %d."),
4371 TYPE_CODE (*type));
4372 }
4373 break;
4374 }
4375 }
4376
4377 undef_types_length = 0;
4378 }
4379
4380 /* Try to fix all the undefined types we ecountered while processing
4381 this unit. */
4382
4383 void
4384 cleanup_undefined_types (void)
4385 {
4386 cleanup_undefined_types_1 ();
4387 cleanup_undefined_types_noname ();
4388 }
4389
4390 /* Scan through all of the global symbols defined in the object file,
4391 assigning values to the debugging symbols that need to be assigned
4392 to. Get these symbols from the minimal symbol table. */
4393
4394 void
4395 scan_file_globals (struct objfile *objfile)
4396 {
4397 int hash;
4398 struct minimal_symbol *msymbol;
4399 struct symbol *sym, *prev;
4400 struct objfile *resolve_objfile;
4401
4402 /* SVR4 based linkers copy referenced global symbols from shared
4403 libraries to the main executable.
4404 If we are scanning the symbols for a shared library, try to resolve
4405 them from the minimal symbols of the main executable first. */
4406
4407 if (symfile_objfile && objfile != symfile_objfile)
4408 resolve_objfile = symfile_objfile;
4409 else
4410 resolve_objfile = objfile;
4411
4412 while (1)
4413 {
4414 /* Avoid expensive loop through all minimal symbols if there are
4415 no unresolved symbols. */
4416 for (hash = 0; hash < HASHSIZE; hash++)
4417 {
4418 if (global_sym_chain[hash])
4419 break;
4420 }
4421 if (hash >= HASHSIZE)
4422 return;
4423
4424 for (msymbol = resolve_objfile->msymbols;
4425 msymbol && DEPRECATED_SYMBOL_NAME (msymbol) != NULL;
4426 msymbol++)
4427 {
4428 QUIT;
4429
4430 /* Skip static symbols. */
4431 switch (MSYMBOL_TYPE (msymbol))
4432 {
4433 case mst_file_text:
4434 case mst_file_data:
4435 case mst_file_bss:
4436 continue;
4437 default:
4438 break;
4439 }
4440
4441 prev = NULL;
4442
4443 /* Get the hash index and check all the symbols
4444 under that hash index. */
4445
4446 hash = hashname (DEPRECATED_SYMBOL_NAME (msymbol));
4447
4448 for (sym = global_sym_chain[hash]; sym;)
4449 {
4450 if (DEPRECATED_SYMBOL_NAME (msymbol)[0] == DEPRECATED_SYMBOL_NAME (sym)[0] &&
4451 strcmp (DEPRECATED_SYMBOL_NAME (msymbol) + 1, DEPRECATED_SYMBOL_NAME (sym) + 1) == 0)
4452 {
4453 /* Splice this symbol out of the hash chain and
4454 assign the value we have to it. */
4455 if (prev)
4456 {
4457 SYMBOL_VALUE_CHAIN (prev) = SYMBOL_VALUE_CHAIN (sym);
4458 }
4459 else
4460 {
4461 global_sym_chain[hash] = SYMBOL_VALUE_CHAIN (sym);
4462 }
4463
4464 /* Check to see whether we need to fix up a common block. */
4465 /* Note: this code might be executed several times for
4466 the same symbol if there are multiple references. */
4467 if (sym)
4468 {
4469 if (SYMBOL_CLASS (sym) == LOC_BLOCK)
4470 {
4471 fix_common_block (sym,
4472 SYMBOL_VALUE_ADDRESS (msymbol));
4473 }
4474 else
4475 {
4476 SYMBOL_VALUE_ADDRESS (sym)
4477 = SYMBOL_VALUE_ADDRESS (msymbol);
4478 }
4479 SYMBOL_SECTION (sym) = SYMBOL_SECTION (msymbol);
4480 }
4481
4482 if (prev)
4483 {
4484 sym = SYMBOL_VALUE_CHAIN (prev);
4485 }
4486 else
4487 {
4488 sym = global_sym_chain[hash];
4489 }
4490 }
4491 else
4492 {
4493 prev = sym;
4494 sym = SYMBOL_VALUE_CHAIN (sym);
4495 }
4496 }
4497 }
4498 if (resolve_objfile == objfile)
4499 break;
4500 resolve_objfile = objfile;
4501 }
4502
4503 /* Change the storage class of any remaining unresolved globals to
4504 LOC_UNRESOLVED and remove them from the chain. */
4505 for (hash = 0; hash < HASHSIZE; hash++)
4506 {
4507 sym = global_sym_chain[hash];
4508 while (sym)
4509 {
4510 prev = sym;
4511 sym = SYMBOL_VALUE_CHAIN (sym);
4512
4513 /* Change the symbol address from the misleading chain value
4514 to address zero. */
4515 SYMBOL_VALUE_ADDRESS (prev) = 0;
4516
4517 /* Complain about unresolved common block symbols. */
4518 if (SYMBOL_CLASS (prev) == LOC_STATIC)
4519 SYMBOL_CLASS (prev) = LOC_UNRESOLVED;
4520 else
4521 complaint (&symfile_complaints,
4522 _("%s: common block `%s' from global_sym_chain unresolved"),
4523 objfile->name, DEPRECATED_SYMBOL_NAME (prev));
4524 }
4525 }
4526 memset (global_sym_chain, 0, sizeof (global_sym_chain));
4527 }
4528
4529 /* Initialize anything that needs initializing when starting to read
4530 a fresh piece of a symbol file, e.g. reading in the stuff corresponding
4531 to a psymtab. */
4532
4533 void
4534 stabsread_init (void)
4535 {
4536 }
4537
4538 /* Initialize anything that needs initializing when a completely new
4539 symbol file is specified (not just adding some symbols from another
4540 file, e.g. a shared library). */
4541
4542 void
4543 stabsread_new_init (void)
4544 {
4545 /* Empty the hash table of global syms looking for values. */
4546 memset (global_sym_chain, 0, sizeof (global_sym_chain));
4547 }
4548
4549 /* Initialize anything that needs initializing at the same time as
4550 start_symtab() is called. */
4551
4552 void
4553 start_stabs (void)
4554 {
4555 global_stabs = NULL; /* AIX COFF */
4556 /* Leave FILENUM of 0 free for builtin types and this file's types. */
4557 n_this_object_header_files = 1;
4558 type_vector_length = 0;
4559 type_vector = (struct type **) 0;
4560
4561 /* FIXME: If common_block_name is not already NULL, we should complain(). */
4562 common_block_name = NULL;
4563 }
4564
4565 /* Call after end_symtab() */
4566
4567 void
4568 end_stabs (void)
4569 {
4570 if (type_vector)
4571 {
4572 xfree (type_vector);
4573 }
4574 type_vector = 0;
4575 type_vector_length = 0;
4576 previous_stab_code = 0;
4577 }
4578
4579 void
4580 finish_global_stabs (struct objfile *objfile)
4581 {
4582 if (global_stabs)
4583 {
4584 patch_block_stabs (global_symbols, global_stabs, objfile);
4585 xfree (global_stabs);
4586 global_stabs = NULL;
4587 }
4588 }
4589
4590 /* Find the end of the name, delimited by a ':', but don't match
4591 ObjC symbols which look like -[Foo bar::]:bla. */
4592 static char *
4593 find_name_end (char *name)
4594 {
4595 char *s = name;
4596 if (s[0] == '-' || *s == '+')
4597 {
4598 /* Must be an ObjC method symbol. */
4599 if (s[1] != '[')
4600 {
4601 error (_("invalid symbol name \"%s\""), name);
4602 }
4603 s = strchr (s, ']');
4604 if (s == NULL)
4605 {
4606 error (_("invalid symbol name \"%s\""), name);
4607 }
4608 return strchr (s, ':');
4609 }
4610 else
4611 {
4612 return strchr (s, ':');
4613 }
4614 }
4615
4616 /* Initializer for this module */
4617
4618 void
4619 _initialize_stabsread (void)
4620 {
4621 undef_types_allocated = 20;
4622 undef_types_length = 0;
4623 undef_types = (struct type **)
4624 xmalloc (undef_types_allocated * sizeof (struct type *));
4625
4626 noname_undefs_allocated = 20;
4627 noname_undefs_length = 0;
4628 noname_undefs = (struct nat *)
4629 xmalloc (noname_undefs_allocated * sizeof (struct nat));
4630 }
This page took 0.126394 seconds and 4 git commands to generate.