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