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