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