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