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