gdb: Remove unused signal mask
[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 <ctype.h>
48
49 #include "stabsread.h"
50
51 /* See stabsread.h for these globals.  */
52 unsigned int symnum;
53 const char *(*next_symbol_text_func) (struct objfile *);
54 unsigned char processing_gcc_compilation;
55 int within_function;
56 struct symbol *global_sym_chain[HASHSIZE];
57 struct pending_stabs *global_stabs;
58 int previous_stab_code;
59 int *this_object_header_files;
60 int n_this_object_header_files;
61 int n_allocated_this_object_header_files;
62
63 struct nextfield
64 {
65   struct nextfield *next;
66
67   /* This is the raw visibility from the stab.  It is not checked
68      for being one of the visibilities we recognize, so code which
69      examines this field better be able to deal.  */
70   int visibility;
71
72   struct field field;
73 };
74
75 struct next_fnfieldlist
76 {
77   struct next_fnfieldlist *next;
78   struct fn_fieldlist fn_fieldlist;
79 };
80
81 /* The routines that read and process a complete stabs for a C struct or 
82    C++ class pass lists of data member fields and lists of member function
83    fields in an instance of a field_info structure, as defined below.
84    This is part of some reorganization of low level C++ support and is
85    expected to eventually go away...  (FIXME) */
86
87 struct stab_field_info
88   {
89     struct nextfield *list = nullptr;
90     struct next_fnfieldlist *fnlist = nullptr;
91
92     auto_obstack obstack;
93   };
94
95 static void
96 read_one_struct_field (struct stab_field_info *, const char **, const char *,
97                        struct type *, struct objfile *);
98
99 static struct type *dbx_alloc_type (int[2], struct objfile *);
100
101 static long read_huge_number (const char **, int, int *, int);
102
103 static struct type *error_type (const char **, struct objfile *);
104
105 static void
106 patch_block_stabs (struct pending *, struct pending_stabs *,
107                    struct objfile *);
108
109 static void fix_common_block (struct symbol *, CORE_ADDR);
110
111 static int read_type_number (const char **, int *);
112
113 static struct type *read_type (const char **, struct objfile *);
114
115 static struct type *read_range_type (const char **, int[2],
116                                      int, struct objfile *);
117
118 static struct type *read_sun_builtin_type (const char **,
119                                            int[2], struct objfile *);
120
121 static struct type *read_sun_floating_type (const char **, int[2],
122                                             struct objfile *);
123
124 static struct type *read_enum_type (const char **, struct type *, struct objfile *);
125
126 static struct type *rs6000_builtin_type (int, struct objfile *);
127
128 static int
129 read_member_functions (struct stab_field_info *, const char **, struct type *,
130                        struct objfile *);
131
132 static int
133 read_struct_fields (struct stab_field_info *, const char **, struct type *,
134                     struct objfile *);
135
136 static int
137 read_baseclasses (struct stab_field_info *, const char **, struct type *,
138                   struct objfile *);
139
140 static int
141 read_tilde_fields (struct stab_field_info *, const char **, struct type *,
142                    struct objfile *);
143
144 static int attach_fn_fields_to_type (struct stab_field_info *, struct type *);
145
146 static int attach_fields_to_type (struct stab_field_info *, struct type *,
147                                   struct objfile *);
148
149 static struct type *read_struct_type (const char **, struct type *,
150                                       enum type_code,
151                                       struct objfile *);
152
153 static struct type *read_array_type (const char **, struct type *,
154                                      struct objfile *);
155
156 static struct field *read_args (const char **, int, struct objfile *,
157                                 int *, int *);
158
159 static void add_undefined_type (struct type *, int[2]);
160
161 static int
162 read_cpp_abbrev (struct stab_field_info *, const char **, struct type *,
163                  struct objfile *);
164
165 static const char *find_name_end (const char *name);
166
167 static int process_reference (const char **string);
168
169 void stabsread_clear_cache (void);
170
171 static const char vptr_name[] = "_vptr$";
172 static const char vb_name[] = "_vb$";
173
174 static void
175 invalid_cpp_abbrev_complaint (const char *arg1)
176 {
177   complaint (_("invalid C++ abbreviation `%s'"), arg1);
178 }
179
180 static void
181 reg_value_complaint (int regnum, int num_regs, const char *sym)
182 {
183   complaint (_("bad register number %d (max %d) in symbol %s"),
184              regnum, num_regs - 1, sym);
185 }
186
187 static void
188 stabs_general_complaint (const char *arg1)
189 {
190   complaint ("%s", arg1);
191 }
192
193 /* Make a list of forward references which haven't been defined.  */
194
195 static struct type **undef_types;
196 static int undef_types_allocated;
197 static int undef_types_length;
198 static struct symbol *current_symbol = NULL;
199
200 /* Make a list of nameless types that are undefined.
201    This happens when another type is referenced by its number
202    before this type is actually defined.  For instance "t(0,1)=k(0,2)"
203    and type (0,2) is defined only later.  */
204
205 struct nat
206 {
207   int typenums[2];
208   struct type *type;
209 };
210 static struct nat *noname_undefs;
211 static int noname_undefs_allocated;
212 static int noname_undefs_length;
213
214 /* Check for and handle cretinous stabs symbol name continuation!  */
215 #define STABS_CONTINUE(pp,objfile)                              \
216   do {                                                  \
217     if (**(pp) == '\\' || (**(pp) == '?' && (*(pp))[1] == '\0')) \
218       *(pp) = next_symbol_text (objfile);       \
219   } while (0)
220
221 /* Vector of types defined so far, indexed by their type numbers.
222    (In newer sun systems, dbx uses a pair of numbers in parens,
223    as in "(SUBFILENUM,NUMWITHINSUBFILE)".
224    Then these numbers must be translated through the type_translations
225    hash table to get the index into the type vector.)  */
226
227 static struct type **type_vector;
228
229 /* Number of elements allocated for type_vector currently.  */
230
231 static int type_vector_length;
232
233 /* Initial size of type vector.  Is realloc'd larger if needed, and
234    realloc'd down to the size actually used, when completed.  */
235
236 #define INITIAL_TYPE_VECTOR_LENGTH 160
237 \f
238
239 /* Look up a dbx type-number pair.  Return the address of the slot
240    where the type for that number-pair is stored.
241    The number-pair is in TYPENUMS.
242
243    This can be used for finding the type associated with that pair
244    or for associating a new type with the pair.  */
245
246 static struct type **
247 dbx_lookup_type (int typenums[2], struct objfile *objfile)
248 {
249   int filenum = typenums[0];
250   int index = typenums[1];
251   unsigned old_len;
252   int real_filenum;
253   struct header_file *f;
254   int f_orig_length;
255
256   if (filenum == -1)            /* -1,-1 is for temporary types.  */
257     return 0;
258
259   if (filenum < 0 || filenum >= n_this_object_header_files)
260     {
261       complaint (_("Invalid symbol data: type number "
262                    "(%d,%d) out of range at symtab pos %d."),
263                  filenum, index, symnum);
264       goto error_return;
265     }
266
267   if (filenum == 0)
268     {
269       if (index < 0)
270         {
271           /* Caller wants address of address of type.  We think
272              that negative (rs6k builtin) types will never appear as
273              "lvalues", (nor should they), so we stuff the real type
274              pointer into a temp, and return its address.  If referenced,
275              this will do the right thing.  */
276           static struct type *temp_type;
277
278           temp_type = rs6000_builtin_type (index, objfile);
279           return &temp_type;
280         }
281
282       /* Type is defined outside of header files.
283          Find it in this object file's type vector.  */
284       if (index >= type_vector_length)
285         {
286           old_len = type_vector_length;
287           if (old_len == 0)
288             {
289               type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
290               type_vector = XNEWVEC (struct type *, type_vector_length);
291             }
292           while (index >= type_vector_length)
293             {
294               type_vector_length *= 2;
295             }
296           type_vector = (struct type **)
297             xrealloc ((char *) type_vector,
298                       (type_vector_length * sizeof (struct type *)));
299           memset (&type_vector[old_len], 0,
300                   (type_vector_length - old_len) * sizeof (struct type *));
301         }
302       return (&type_vector[index]);
303     }
304   else
305     {
306       real_filenum = this_object_header_files[filenum];
307
308       if (real_filenum >= N_HEADER_FILES (objfile))
309         {
310           static struct type *temp_type;
311
312           warning (_("GDB internal error: bad real_filenum"));
313
314         error_return:
315           temp_type = objfile_type (objfile)->builtin_error;
316           return &temp_type;
317         }
318
319       f = HEADER_FILES (objfile) + real_filenum;
320
321       f_orig_length = f->length;
322       if (index >= f_orig_length)
323         {
324           while (index >= f->length)
325             {
326               f->length *= 2;
327             }
328           f->vector = (struct type **)
329             xrealloc ((char *) f->vector, f->length * sizeof (struct type *));
330           memset (&f->vector[f_orig_length], 0,
331                   (f->length - f_orig_length) * sizeof (struct type *));
332         }
333       return (&f->vector[index]);
334     }
335 }
336
337 /* Make sure there is a type allocated for type numbers TYPENUMS
338    and return the type object.
339    This can create an empty (zeroed) type object.
340    TYPENUMS may be (-1, -1) to return a new type object that is not
341    put into the type vector, and so may not be referred to by number.  */
342
343 static struct type *
344 dbx_alloc_type (int typenums[2], struct objfile *objfile)
345 {
346   struct type **type_addr;
347
348   if (typenums[0] == -1)
349     {
350       return (alloc_type (objfile));
351     }
352
353   type_addr = dbx_lookup_type (typenums, objfile);
354
355   /* If we are referring to a type not known at all yet,
356      allocate an empty type for it.
357      We will fill it in later if we find out how.  */
358   if (*type_addr == 0)
359     {
360       *type_addr = alloc_type (objfile);
361     }
362
363   return (*type_addr);
364 }
365
366 /* Allocate a floating-point type of size BITS.  */
367
368 static struct type *
369 dbx_init_float_type (struct objfile *objfile, int bits)
370 {
371   struct gdbarch *gdbarch = get_objfile_arch (objfile);
372   const struct floatformat **format;
373   struct type *type;
374
375   format = gdbarch_floatformat_for_type (gdbarch, NULL, bits);
376   if (format)
377     type = init_float_type (objfile, bits, NULL, format);
378   else
379     type = init_type (objfile, TYPE_CODE_ERROR, bits, NULL);
380
381   return type;
382 }
383
384 /* for all the stabs in a given stab vector, build appropriate types 
385    and fix their symbols in given symbol vector.  */
386
387 static void
388 patch_block_stabs (struct pending *symbols, struct pending_stabs *stabs,
389                    struct objfile *objfile)
390 {
391   int ii;
392   char *name;
393   const char *pp;
394   struct symbol *sym;
395
396   if (stabs)
397     {
398       /* for all the stab entries, find their corresponding symbols and 
399          patch their types!  */
400
401       for (ii = 0; ii < stabs->count; ++ii)
402         {
403           name = stabs->stab[ii];
404           pp = (char *) strchr (name, ':');
405           gdb_assert (pp);      /* Must find a ':' or game's over.  */
406           while (pp[1] == ':')
407             {
408               pp += 2;
409               pp = (char *) strchr (pp, ':');
410             }
411           sym = find_symbol_in_list (symbols, name, pp - name);
412           if (!sym)
413             {
414               /* FIXME-maybe: it would be nice if we noticed whether
415                  the variable was defined *anywhere*, not just whether
416                  it is defined in this compilation unit.  But neither
417                  xlc or GCC seem to need such a definition, and until
418                  we do psymtabs (so that the minimal symbols from all
419                  compilation units are available now), I'm not sure
420                  how to get the information.  */
421
422               /* On xcoff, if a global is defined and never referenced,
423                  ld will remove it from the executable.  There is then
424                  a N_GSYM stab for it, but no regular (C_EXT) symbol.  */
425               sym = allocate_symbol (objfile);
426               SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
427               SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
428               SYMBOL_SET_LINKAGE_NAME
429                 (sym, (char *) obstack_copy0 (&objfile->objfile_obstack,
430                                               name, pp - name));
431               pp += 2;
432               if (*(pp - 1) == 'F' || *(pp - 1) == 'f')
433                 {
434                   /* I don't think the linker does this with functions,
435                      so as far as I know this is never executed.
436                      But it doesn't hurt to check.  */
437                   SYMBOL_TYPE (sym) =
438                     lookup_function_type (read_type (&pp, objfile));
439                 }
440               else
441                 {
442                   SYMBOL_TYPE (sym) = read_type (&pp, objfile);
443                 }
444               add_symbol_to_list (sym, get_global_symbols ());
445             }
446           else
447             {
448               pp += 2;
449               if (*(pp - 1) == 'F' || *(pp - 1) == 'f')
450                 {
451                   SYMBOL_TYPE (sym) =
452                     lookup_function_type (read_type (&pp, objfile));
453                 }
454               else
455                 {
456                   SYMBOL_TYPE (sym) = read_type (&pp, objfile);
457                 }
458             }
459         }
460     }
461 }
462 \f
463
464 /* Read a number by which a type is referred to in dbx data,
465    or perhaps read a pair (FILENUM, TYPENUM) in parentheses.
466    Just a single number N is equivalent to (0,N).
467    Return the two numbers by storing them in the vector TYPENUMS.
468    TYPENUMS will then be used as an argument to dbx_lookup_type.
469
470    Returns 0 for success, -1 for error.  */
471
472 static int
473 read_type_number (const char **pp, int *typenums)
474 {
475   int nbits;
476
477   if (**pp == '(')
478     {
479       (*pp)++;
480       typenums[0] = read_huge_number (pp, ',', &nbits, 0);
481       if (nbits != 0)
482         return -1;
483       typenums[1] = read_huge_number (pp, ')', &nbits, 0);
484       if (nbits != 0)
485         return -1;
486     }
487   else
488     {
489       typenums[0] = 0;
490       typenums[1] = read_huge_number (pp, 0, &nbits, 0);
491       if (nbits != 0)
492         return -1;
493     }
494   return 0;
495 }
496 \f
497
498 #define VISIBILITY_PRIVATE      '0'     /* Stabs character for private field */
499 #define VISIBILITY_PROTECTED    '1'     /* Stabs character for protected fld */
500 #define VISIBILITY_PUBLIC       '2'     /* Stabs character for public field */
501 #define VISIBILITY_IGNORE       '9'     /* Optimized out or zero length */
502
503 /* Structure for storing pointers to reference definitions for fast lookup 
504    during "process_later".  */
505
506 struct ref_map
507 {
508   const char *stabs;
509   CORE_ADDR value;
510   struct symbol *sym;
511 };
512
513 #define MAX_CHUNK_REFS 100
514 #define REF_CHUNK_SIZE (MAX_CHUNK_REFS * sizeof (struct ref_map))
515 #define REF_MAP_SIZE(ref_chunk) ((ref_chunk) * REF_CHUNK_SIZE)
516
517 static struct ref_map *ref_map;
518
519 /* Ptr to free cell in chunk's linked list.  */
520 static int ref_count = 0;
521
522 /* Number of chunks malloced.  */
523 static int ref_chunk = 0;
524
525 /* This file maintains a cache of stabs aliases found in the symbol
526    table.  If the symbol table changes, this cache must be cleared
527    or we are left holding onto data in invalid obstacks.  */
528 void
529 stabsread_clear_cache (void)
530 {
531   ref_count = 0;
532   ref_chunk = 0;
533 }
534
535 /* Create array of pointers mapping refids to symbols and stab strings.
536    Add pointers to reference definition symbols and/or their values as we 
537    find them, using their reference numbers as our index.
538    These will be used later when we resolve references.  */
539 void
540 ref_add (int refnum, struct symbol *sym, const char *stabs, CORE_ADDR value)
541 {
542   if (ref_count == 0)
543     ref_chunk = 0;
544   if (refnum >= ref_count)
545     ref_count = refnum + 1;
546   if (ref_count > ref_chunk * MAX_CHUNK_REFS)
547     {
548       int new_slots = ref_count - ref_chunk * MAX_CHUNK_REFS;
549       int new_chunks = new_slots / MAX_CHUNK_REFS + 1;
550
551       ref_map = (struct ref_map *)
552         xrealloc (ref_map, REF_MAP_SIZE (ref_chunk + new_chunks));
553       memset (ref_map + ref_chunk * MAX_CHUNK_REFS, 0, 
554               new_chunks * REF_CHUNK_SIZE);
555       ref_chunk += new_chunks;
556     }
557   ref_map[refnum].stabs = stabs;
558   ref_map[refnum].sym = sym;
559   ref_map[refnum].value = value;
560 }
561
562 /* Return defined sym for the reference REFNUM.  */
563 struct symbol *
564 ref_search (int refnum)
565 {
566   if (refnum < 0 || refnum > ref_count)
567     return 0;
568   return ref_map[refnum].sym;
569 }
570
571 /* Parse a reference id in STRING and return the resulting
572    reference number.  Move STRING beyond the reference id.  */
573
574 static int
575 process_reference (const char **string)
576 {
577   const char *p;
578   int refnum = 0;
579
580   if (**string != '#')
581     return 0;
582
583   /* Advance beyond the initial '#'.  */
584   p = *string + 1;
585
586   /* Read number as reference id.  */
587   while (*p && isdigit (*p))
588     {
589       refnum = refnum * 10 + *p - '0';
590       p++;
591     }
592   *string = p;
593   return refnum;
594 }
595
596 /* If STRING defines a reference, store away a pointer to the reference 
597    definition for later use.  Return the reference number.  */
598
599 int
600 symbol_reference_defined (const char **string)
601 {
602   const char *p = *string;
603   int refnum = 0;
604
605   refnum = process_reference (&p);
606
607   /* Defining symbols end in '='.  */
608   if (*p == '=')
609     {
610       /* Symbol is being defined here.  */
611       *string = p + 1;
612       return refnum;
613     }
614   else
615     {
616       /* Must be a reference.  Either the symbol has already been defined,
617          or this is a forward reference to it.  */
618       *string = p;
619       return -1;
620     }
621 }
622
623 static int
624 stab_reg_to_regnum (struct symbol *sym, struct gdbarch *gdbarch)
625 {
626   int regno = gdbarch_stab_reg_to_regnum (gdbarch, SYMBOL_VALUE (sym));
627
628   if (regno < 0 || regno >= gdbarch_num_cooked_regs (gdbarch))
629     {
630       reg_value_complaint (regno, gdbarch_num_cooked_regs (gdbarch),
631                            SYMBOL_PRINT_NAME (sym));
632
633       regno = gdbarch_sp_regnum (gdbarch); /* Known safe, though useless.  */
634     }
635
636   return regno;
637 }
638
639 static const struct symbol_register_ops stab_register_funcs = {
640   stab_reg_to_regnum
641 };
642
643 /* The "aclass" indices for computed symbols.  */
644
645 static int stab_register_index;
646 static int stab_regparm_index;
647
648 struct symbol *
649 define_symbol (CORE_ADDR valu, const char *string, int desc, int type,
650                struct objfile *objfile)
651 {
652   struct gdbarch *gdbarch = get_objfile_arch (objfile);
653   struct symbol *sym;
654   const char *p = find_name_end (string);
655   int deftype;
656   int synonym = 0;
657   int i;
658
659   /* We would like to eliminate nameless symbols, but keep their types.
660      E.g. stab entry ":t10=*2" should produce a type 10, which is a pointer
661      to type 2, but, should not create a symbol to address that type.  Since
662      the symbol will be nameless, there is no way any user can refer to it.  */
663
664   int nameless;
665
666   /* Ignore syms with empty names.  */
667   if (string[0] == 0)
668     return 0;
669
670   /* Ignore old-style symbols from cc -go.  */
671   if (p == 0)
672     return 0;
673
674   while (p[1] == ':')
675     {
676       p += 2;
677       p = strchr (p, ':');
678       if (p == NULL)
679         {
680           complaint (
681                      _("Bad stabs string '%s'"), string);
682           return NULL;
683         }
684     }
685
686   /* If a nameless stab entry, all we need is the type, not the symbol.
687      e.g. ":t10=*2" or a nameless enum like " :T16=ered:0,green:1,blue:2,;" */
688   nameless = (p == string || ((string[0] == ' ') && (string[1] == ':')));
689
690   current_symbol = sym = allocate_symbol (objfile);
691
692   if (processing_gcc_compilation)
693     {
694       /* GCC 2.x puts the line number in desc.  SunOS apparently puts in the
695          number of bytes occupied by a type or object, which we ignore.  */
696       SYMBOL_LINE (sym) = desc;
697     }
698   else
699     {
700       SYMBOL_LINE (sym) = 0;    /* unknown */
701     }
702
703   SYMBOL_SET_LANGUAGE (sym, get_current_subfile ()->language,
704                        &objfile->objfile_obstack);
705
706   if (is_cplus_marker (string[0]))
707     {
708       /* Special GNU C++ names.  */
709       switch (string[1])
710         {
711         case 't':
712           SYMBOL_SET_LINKAGE_NAME (sym, "this");
713           break;
714
715         case 'v':               /* $vtbl_ptr_type */
716           goto normal;
717
718         case 'e':
719           SYMBOL_SET_LINKAGE_NAME (sym, "eh_throw");
720           break;
721
722         case '_':
723           /* This was an anonymous type that was never fixed up.  */
724           goto normal;
725
726         case 'X':
727           /* SunPRO (3.0 at least) static variable encoding.  */
728           if (gdbarch_static_transform_name_p (gdbarch))
729             goto normal;
730           /* fall through */
731
732         default:
733           complaint (_("Unknown C++ symbol name `%s'"),
734                      string);
735           goto normal;          /* Do *something* with it.  */
736         }
737     }
738   else
739     {
740     normal:
741       std::string new_name;
742
743       if (SYMBOL_LANGUAGE (sym) == language_cplus)
744         {
745           char *name = (char *) alloca (p - string + 1);
746
747           memcpy (name, string, p - string);
748           name[p - string] = '\0';
749           new_name = cp_canonicalize_string (name);
750         }
751       if (!new_name.empty ())
752         {
753           SYMBOL_SET_NAMES (sym,
754                             new_name.c_str (), new_name.length (),
755                             1, objfile);
756         }
757       else
758         SYMBOL_SET_NAMES (sym, string, p - string, 1, objfile);
759
760       if (SYMBOL_LANGUAGE (sym) == language_cplus)
761         cp_scan_for_anonymous_namespaces (get_buildsym_compunit (), sym,
762                                           objfile);
763
764     }
765   p++;
766
767   /* Determine the type of name being defined.  */
768 #if 0
769   /* Getting GDB to correctly skip the symbol on an undefined symbol
770      descriptor and not ever dump core is a very dodgy proposition if
771      we do things this way.  I say the acorn RISC machine can just
772      fix their compiler.  */
773   /* The Acorn RISC machine's compiler can put out locals that don't
774      start with "234=" or "(3,4)=", so assume anything other than the
775      deftypes we know how to handle is a local.  */
776   if (!strchr ("cfFGpPrStTvVXCR", *p))
777 #else
778   if (isdigit (*p) || *p == '(' || *p == '-')
779 #endif
780     deftype = 'l';
781   else
782     deftype = *p++;
783
784   switch (deftype)
785     {
786     case 'c':
787       /* c is a special case, not followed by a type-number.
788          SYMBOL:c=iVALUE for an integer constant symbol.
789          SYMBOL:c=rVALUE for a floating constant symbol.
790          SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
791          e.g. "b:c=e6,0" for "const b = blob1"
792          (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;").  */
793       if (*p != '=')
794         {
795           SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
796           SYMBOL_TYPE (sym) = error_type (&p, objfile);
797           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
798           add_symbol_to_list (sym, get_file_symbols ());
799           return sym;
800         }
801       ++p;
802       switch (*p++)
803         {
804         case 'r':
805           {
806             gdb_byte *dbl_valu;
807             struct type *dbl_type;
808
809             dbl_type = objfile_type (objfile)->builtin_double;
810             dbl_valu
811               = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack,
812                                             TYPE_LENGTH (dbl_type));
813
814             target_float_from_string (dbl_valu, dbl_type, std::string (p));
815
816             SYMBOL_TYPE (sym) = dbl_type;
817             SYMBOL_VALUE_BYTES (sym) = dbl_valu;
818             SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
819           }
820           break;
821         case 'i':
822           {
823             /* Defining integer constants this way is kind of silly,
824                since 'e' constants allows the compiler to give not
825                only the value, but the type as well.  C has at least
826                int, long, unsigned int, and long long as constant
827                types; other languages probably should have at least
828                unsigned as well as signed constants.  */
829
830             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_long;
831             SYMBOL_VALUE (sym) = atoi (p);
832             SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
833           }
834           break;
835
836         case 'c':
837           {
838             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_char;
839             SYMBOL_VALUE (sym) = atoi (p);
840             SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
841           }
842           break;
843
844         case 's':
845           {
846             struct type *range_type;
847             int ind = 0;
848             char quote = *p++;
849             gdb_byte *string_local = (gdb_byte *) alloca (strlen (p));
850             gdb_byte *string_value;
851
852             if (quote != '\'' && quote != '"')
853               {
854                 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
855                 SYMBOL_TYPE (sym) = error_type (&p, objfile);
856                 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
857                 add_symbol_to_list (sym, get_file_symbols ());
858                 return sym;
859               }
860
861             /* Find matching quote, rejecting escaped quotes.  */
862             while (*p && *p != quote)
863               {
864                 if (*p == '\\' && p[1] == quote)
865                   {
866                     string_local[ind] = (gdb_byte) quote;
867                     ind++;
868                     p += 2;
869                   }
870                 else if (*p) 
871                   {
872                     string_local[ind] = (gdb_byte) (*p);
873                     ind++;
874                     p++;
875                   }
876               }
877             if (*p != quote)
878               {
879                 SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
880                 SYMBOL_TYPE (sym) = error_type (&p, objfile);
881                 SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
882                 add_symbol_to_list (sym, get_file_symbols ());
883                 return sym;
884               }
885
886             /* NULL terminate the string.  */
887             string_local[ind] = 0;
888             range_type
889               = create_static_range_type (NULL,
890                                           objfile_type (objfile)->builtin_int,
891                                           0, ind);
892             SYMBOL_TYPE (sym) = create_array_type (NULL,
893                                   objfile_type (objfile)->builtin_char,
894                                   range_type);
895             string_value
896               = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, ind + 1);
897             memcpy (string_value, string_local, ind + 1);
898             p++;
899
900             SYMBOL_VALUE_BYTES (sym) = string_value;
901             SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
902           }
903           break;
904
905         case 'e':
906           /* SYMBOL:c=eTYPE,INTVALUE for a constant symbol whose value
907              can be represented as integral.
908              e.g. "b:c=e6,0" for "const b = blob1"
909              (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;").  */
910           {
911             SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
912             SYMBOL_TYPE (sym) = read_type (&p, objfile);
913
914             if (*p != ',')
915               {
916                 SYMBOL_TYPE (sym) = error_type (&p, objfile);
917                 break;
918               }
919             ++p;
920
921             /* If the value is too big to fit in an int (perhaps because
922                it is unsigned), or something like that, we silently get
923                a bogus value.  The type and everything else about it is
924                correct.  Ideally, we should be using whatever we have
925                available for parsing unsigned and long long values,
926                however.  */
927             SYMBOL_VALUE (sym) = atoi (p);
928           }
929           break;
930         default:
931           {
932             SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
933             SYMBOL_TYPE (sym) = error_type (&p, objfile);
934           }
935         }
936       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
937       add_symbol_to_list (sym, get_file_symbols ());
938       return sym;
939
940     case 'C':
941       /* The name of a caught exception.  */
942       SYMBOL_TYPE (sym) = read_type (&p, objfile);
943       SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
944       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
945       SYMBOL_VALUE_ADDRESS (sym) = valu;
946       add_symbol_to_list (sym, get_local_symbols ());
947       break;
948
949     case 'f':
950       /* A static function definition.  */
951       SYMBOL_TYPE (sym) = read_type (&p, objfile);
952       SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
953       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
954       add_symbol_to_list (sym, get_file_symbols ());
955       /* fall into process_function_types.  */
956
957     process_function_types:
958       /* Function result types are described as the result type in stabs.
959          We need to convert this to the function-returning-type-X type
960          in GDB.  E.g. "int" is converted to "function returning int".  */
961       if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
962         SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
963
964       /* All functions in C++ have prototypes.  Stabs does not offer an
965          explicit way to identify prototyped or unprototyped functions,
966          but both GCC and Sun CC emit stabs for the "call-as" type rather
967          than the "declared-as" type for unprototyped functions, so
968          we treat all functions as if they were prototyped.  This is used
969          primarily for promotion when calling the function from GDB.  */
970       TYPE_PROTOTYPED (SYMBOL_TYPE (sym)) = 1;
971
972       /* fall into process_prototype_types.  */
973
974     process_prototype_types:
975       /* Sun acc puts declared types of arguments here.  */
976       if (*p == ';')
977         {
978           struct type *ftype = SYMBOL_TYPE (sym);
979           int nsemi = 0;
980           int nparams = 0;
981           const char *p1 = p;
982
983           /* Obtain a worst case guess for the number of arguments
984              by counting the semicolons.  */
985           while (*p1)
986             {
987               if (*p1++ == ';')
988                 nsemi++;
989             }
990
991           /* Allocate parameter information fields and fill them in.  */
992           TYPE_FIELDS (ftype) = (struct field *)
993             TYPE_ALLOC (ftype, nsemi * sizeof (struct field));
994           while (*p++ == ';')
995             {
996               struct type *ptype;
997
998               /* A type number of zero indicates the start of varargs.
999                  FIXME: GDB currently ignores vararg functions.  */
1000               if (p[0] == '0' && p[1] == '\0')
1001                 break;
1002               ptype = read_type (&p, objfile);
1003
1004               /* The Sun compilers mark integer arguments, which should
1005                  be promoted to the width of the calling conventions, with
1006                  a type which references itself.  This type is turned into
1007                  a TYPE_CODE_VOID type by read_type, and we have to turn
1008                  it back into builtin_int here.
1009                  FIXME: Do we need a new builtin_promoted_int_arg ?  */
1010               if (TYPE_CODE (ptype) == TYPE_CODE_VOID)
1011                 ptype = objfile_type (objfile)->builtin_int;
1012               TYPE_FIELD_TYPE (ftype, nparams) = ptype;
1013               TYPE_FIELD_ARTIFICIAL (ftype, nparams++) = 0;
1014             }
1015           TYPE_NFIELDS (ftype) = nparams;
1016           TYPE_PROTOTYPED (ftype) = 1;
1017         }
1018       break;
1019
1020     case 'F':
1021       /* A global function definition.  */
1022       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1023       SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
1024       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1025       add_symbol_to_list (sym, get_global_symbols ());
1026       goto process_function_types;
1027
1028     case 'G':
1029       /* For a class G (global) symbol, it appears that the
1030          value is not correct.  It is necessary to search for the
1031          corresponding linker definition to find the value.
1032          These definitions appear at the end of the namelist.  */
1033       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1034       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
1035       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1036       /* Don't add symbol references to global_sym_chain.
1037          Symbol references don't have valid names and wont't match up with
1038          minimal symbols when the global_sym_chain is relocated.
1039          We'll fixup symbol references when we fixup the defining symbol.  */
1040       if (SYMBOL_LINKAGE_NAME (sym) && SYMBOL_LINKAGE_NAME (sym)[0] != '#')
1041         {
1042           i = hashname (SYMBOL_LINKAGE_NAME (sym));
1043           SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
1044           global_sym_chain[i] = sym;
1045         }
1046       add_symbol_to_list (sym, get_global_symbols ());
1047       break;
1048
1049       /* This case is faked by a conditional above,
1050          when there is no code letter in the dbx data.
1051          Dbx data never actually contains 'l'.  */
1052     case 's':
1053     case 'l':
1054       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1055       SYMBOL_ACLASS_INDEX (sym) = LOC_LOCAL;
1056       SYMBOL_VALUE (sym) = valu;
1057       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1058       add_symbol_to_list (sym, get_local_symbols ());
1059       break;
1060
1061     case 'p':
1062       if (*p == 'F')
1063         /* pF is a two-letter code that means a function parameter in Fortran.
1064            The type-number specifies the type of the return value.
1065            Translate it into a pointer-to-function type.  */
1066         {
1067           p++;
1068           SYMBOL_TYPE (sym)
1069             = lookup_pointer_type
1070             (lookup_function_type (read_type (&p, objfile)));
1071         }
1072       else
1073         SYMBOL_TYPE (sym) = read_type (&p, objfile);
1074
1075       SYMBOL_ACLASS_INDEX (sym) = LOC_ARG;
1076       SYMBOL_VALUE (sym) = valu;
1077       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1078       SYMBOL_IS_ARGUMENT (sym) = 1;
1079       add_symbol_to_list (sym, get_local_symbols ());
1080
1081       if (gdbarch_byte_order (gdbarch) != BFD_ENDIAN_BIG)
1082         {
1083           /* On little-endian machines, this crud is never necessary,
1084              and, if the extra bytes contain garbage, is harmful.  */
1085           break;
1086         }
1087
1088       /* If it's gcc-compiled, if it says `short', believe it.  */
1089       if (processing_gcc_compilation
1090           || gdbarch_believe_pcc_promotion (gdbarch))
1091         break;
1092
1093       if (!gdbarch_believe_pcc_promotion (gdbarch))
1094         {
1095           /* If PCC says a parameter is a short or a char, it is
1096              really an int.  */
1097           if (TYPE_LENGTH (SYMBOL_TYPE (sym))
1098               < gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT
1099               && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
1100             {
1101               SYMBOL_TYPE (sym) =
1102                 TYPE_UNSIGNED (SYMBOL_TYPE (sym))
1103                 ? objfile_type (objfile)->builtin_unsigned_int
1104                 : objfile_type (objfile)->builtin_int;
1105             }
1106           break;
1107         }
1108       /* Fall through.  */
1109
1110     case 'P':
1111       /* acc seems to use P to declare the prototypes of functions that
1112          are referenced by this file.  gdb is not prepared to deal
1113          with this extra information.  FIXME, it ought to.  */
1114       if (type == N_FUN)
1115         {
1116           SYMBOL_TYPE (sym) = read_type (&p, objfile);
1117           goto process_prototype_types;
1118         }
1119       /*FALLTHROUGH */
1120
1121     case 'R':
1122       /* Parameter which is in a register.  */
1123       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1124       SYMBOL_ACLASS_INDEX (sym) = stab_register_index;
1125       SYMBOL_IS_ARGUMENT (sym) = 1;
1126       SYMBOL_VALUE (sym) = valu;
1127       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1128       add_symbol_to_list (sym, get_local_symbols ());
1129       break;
1130
1131     case 'r':
1132       /* Register variable (either global or local).  */
1133       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1134       SYMBOL_ACLASS_INDEX (sym) = stab_register_index;
1135       SYMBOL_VALUE (sym) = valu;
1136       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1137       if (within_function)
1138         {
1139           /* Sun cc uses a pair of symbols, one 'p' and one 'r', with
1140              the same name to represent an argument passed in a
1141              register.  GCC uses 'P' for the same case.  So if we find
1142              such a symbol pair we combine it into one 'P' symbol.
1143              For Sun cc we need to do this regardless of
1144              stabs_argument_has_addr, because the compiler puts out
1145              the 'p' symbol even if it never saves the argument onto
1146              the stack.
1147
1148              On most machines, we want to preserve both symbols, so
1149              that we can still get information about what is going on
1150              with the stack (VAX for computing args_printed, using
1151              stack slots instead of saved registers in backtraces,
1152              etc.).
1153
1154              Note that this code illegally combines
1155              main(argc) struct foo argc; { register struct foo argc; }
1156              but this case is considered pathological and causes a warning
1157              from a decent compiler.  */
1158
1159           struct pending *local_symbols = *get_local_symbols ();
1160           if (local_symbols
1161               && local_symbols->nsyms > 0
1162               && gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym)))
1163             {
1164               struct symbol *prev_sym;
1165
1166               prev_sym = local_symbols->symbol[local_symbols->nsyms - 1];
1167               if ((SYMBOL_CLASS (prev_sym) == LOC_REF_ARG
1168                    || SYMBOL_CLASS (prev_sym) == LOC_ARG)
1169                   && strcmp (SYMBOL_LINKAGE_NAME (prev_sym),
1170                              SYMBOL_LINKAGE_NAME (sym)) == 0)
1171                 {
1172                   SYMBOL_ACLASS_INDEX (prev_sym) = stab_register_index;
1173                   /* Use the type from the LOC_REGISTER; that is the type
1174                      that is actually in that register.  */
1175                   SYMBOL_TYPE (prev_sym) = SYMBOL_TYPE (sym);
1176                   SYMBOL_VALUE (prev_sym) = SYMBOL_VALUE (sym);
1177                   sym = prev_sym;
1178                   break;
1179                 }
1180             }
1181           add_symbol_to_list (sym, get_local_symbols ());
1182         }
1183       else
1184         add_symbol_to_list (sym, get_file_symbols ());
1185       break;
1186
1187     case 'S':
1188       /* Static symbol at top level of file.  */
1189       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1190       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
1191       SYMBOL_VALUE_ADDRESS (sym) = valu;
1192       if (gdbarch_static_transform_name_p (gdbarch)
1193           && gdbarch_static_transform_name (gdbarch,
1194                                             SYMBOL_LINKAGE_NAME (sym))
1195              != SYMBOL_LINKAGE_NAME (sym))
1196         {
1197           struct bound_minimal_symbol msym;
1198
1199           msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym),
1200                                         NULL, objfile);
1201           if (msym.minsym != NULL)
1202             {
1203               const char *new_name = gdbarch_static_transform_name
1204                 (gdbarch, SYMBOL_LINKAGE_NAME (sym));
1205
1206               SYMBOL_SET_LINKAGE_NAME (sym, new_name);
1207               SYMBOL_VALUE_ADDRESS (sym) = BMSYMBOL_VALUE_ADDRESS (msym);
1208             }
1209         }
1210       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1211       add_symbol_to_list (sym, get_file_symbols ());
1212       break;
1213
1214     case 't':
1215       /* In Ada, there is no distinction between typedef and non-typedef;
1216          any type declaration implicitly has the equivalent of a typedef,
1217          and thus 't' is in fact equivalent to 'Tt'.
1218
1219          Therefore, for Ada units, we check the character immediately
1220          before the 't', and if we do not find a 'T', then make sure to
1221          create the associated symbol in the STRUCT_DOMAIN ('t' definitions
1222          will be stored in the VAR_DOMAIN).  If the symbol was indeed
1223          defined as 'Tt' then the STRUCT_DOMAIN symbol will be created
1224          elsewhere, so we don't need to take care of that.
1225          
1226          This is important to do, because of forward references:
1227          The cleanup of undefined types stored in undef_types only uses
1228          STRUCT_DOMAIN symbols to perform the replacement.  */
1229       synonym = (SYMBOL_LANGUAGE (sym) == language_ada && p[-2] != 'T');
1230
1231       /* Typedef */
1232       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1233
1234       /* For a nameless type, we don't want a create a symbol, thus we
1235          did not use `sym'.  Return without further processing.  */
1236       if (nameless)
1237         return NULL;
1238
1239       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
1240       SYMBOL_VALUE (sym) = valu;
1241       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1242       /* C++ vagaries: we may have a type which is derived from
1243          a base type which did not have its name defined when the
1244          derived class was output.  We fill in the derived class's
1245          base part member's name here in that case.  */
1246       if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
1247         if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
1248              || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)
1249             && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
1250           {
1251             int j;
1252
1253             for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
1254               if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
1255                 TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
1256                   TYPE_NAME (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
1257           }
1258
1259       if (TYPE_NAME (SYMBOL_TYPE (sym)) == NULL)
1260         {
1261           /* gcc-2.6 or later (when using -fvtable-thunks)
1262              emits a unique named type for a vtable entry.
1263              Some gdb code depends on that specific name.  */
1264           extern const char vtbl_ptr_name[];
1265
1266           if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR
1267                && strcmp (SYMBOL_LINKAGE_NAME (sym), vtbl_ptr_name))
1268               || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FUNC)
1269             {
1270               /* If we are giving a name to a type such as "pointer to
1271                  foo" or "function returning foo", we better not set
1272                  the TYPE_NAME.  If the program contains "typedef char
1273                  *caddr_t;", we don't want all variables of type char
1274                  * to print as caddr_t.  This is not just a
1275                  consequence of GDB's type management; PCC and GCC (at
1276                  least through version 2.4) both output variables of
1277                  either type char * or caddr_t with the type number
1278                  defined in the 't' symbol for caddr_t.  If a future
1279                  compiler cleans this up it GDB is not ready for it
1280                  yet, but if it becomes ready we somehow need to
1281                  disable this check (without breaking the PCC/GCC2.4
1282                  case).
1283
1284                  Sigh.
1285
1286                  Fortunately, this check seems not to be necessary
1287                  for anything except pointers or functions.  */
1288               /* ezannoni: 2000-10-26.  This seems to apply for
1289                  versions of gcc older than 2.8.  This was the original
1290                  problem: with the following code gdb would tell that
1291                  the type for name1 is caddr_t, and func is char().
1292
1293                  typedef char *caddr_t;
1294                  char *name2;
1295                  struct x
1296                  {
1297                    char *name1;
1298                  } xx;
1299                  char *func()
1300                  {
1301                  }
1302                  main () {}
1303                  */
1304
1305               /* Pascal accepts names for pointer types.  */
1306               if (get_current_subfile ()->language == language_pascal)
1307                 {
1308                   TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_LINKAGE_NAME (sym);
1309                 }
1310             }
1311           else
1312             TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_LINKAGE_NAME (sym);
1313         }
1314
1315       add_symbol_to_list (sym, get_file_symbols ());
1316
1317       if (synonym)
1318         {
1319           /* Create the STRUCT_DOMAIN clone.  */
1320           struct symbol *struct_sym = allocate_symbol (objfile);
1321
1322           *struct_sym = *sym;
1323           SYMBOL_ACLASS_INDEX (struct_sym) = LOC_TYPEDEF;
1324           SYMBOL_VALUE (struct_sym) = valu;
1325           SYMBOL_DOMAIN (struct_sym) = STRUCT_DOMAIN;
1326           if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
1327             TYPE_NAME (SYMBOL_TYPE (sym))
1328               = obconcat (&objfile->objfile_obstack,
1329                           SYMBOL_LINKAGE_NAME (sym),
1330                           (char *) NULL);
1331           add_symbol_to_list (struct_sym, get_file_symbols ());
1332         }
1333       
1334       break;
1335
1336     case 'T':
1337       /* Struct, union, or enum tag.  For GNU C++, this can be be followed
1338          by 't' which means we are typedef'ing it as well.  */
1339       synonym = *p == 't';
1340
1341       if (synonym)
1342         p++;
1343
1344       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1345  
1346       /* For a nameless type, we don't want a create a symbol, thus we
1347          did not use `sym'.  Return without further processing.  */
1348       if (nameless)
1349         return NULL;
1350
1351       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
1352       SYMBOL_VALUE (sym) = valu;
1353       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
1354       if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
1355         TYPE_NAME (SYMBOL_TYPE (sym))
1356           = obconcat (&objfile->objfile_obstack,
1357                       SYMBOL_LINKAGE_NAME (sym),
1358                       (char *) NULL);
1359       add_symbol_to_list (sym, get_file_symbols ());
1360
1361       if (synonym)
1362         {
1363           /* Clone the sym and then modify it.  */
1364           struct symbol *typedef_sym = allocate_symbol (objfile);
1365
1366           *typedef_sym = *sym;
1367           SYMBOL_ACLASS_INDEX (typedef_sym) = LOC_TYPEDEF;
1368           SYMBOL_VALUE (typedef_sym) = valu;
1369           SYMBOL_DOMAIN (typedef_sym) = VAR_DOMAIN;
1370           if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
1371             TYPE_NAME (SYMBOL_TYPE (sym))
1372               = obconcat (&objfile->objfile_obstack,
1373                           SYMBOL_LINKAGE_NAME (sym),
1374                           (char *) NULL);
1375           add_symbol_to_list (typedef_sym, get_file_symbols ());
1376         }
1377       break;
1378
1379     case 'V':
1380       /* Static symbol of local scope.  */
1381       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1382       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
1383       SYMBOL_VALUE_ADDRESS (sym) = valu;
1384       if (gdbarch_static_transform_name_p (gdbarch)
1385           && gdbarch_static_transform_name (gdbarch,
1386                                             SYMBOL_LINKAGE_NAME (sym))
1387              != SYMBOL_LINKAGE_NAME (sym))
1388         {
1389           struct bound_minimal_symbol msym;
1390
1391           msym = lookup_minimal_symbol (SYMBOL_LINKAGE_NAME (sym), 
1392                                         NULL, objfile);
1393           if (msym.minsym != NULL)
1394             {
1395               const char *new_name = gdbarch_static_transform_name
1396                 (gdbarch, SYMBOL_LINKAGE_NAME (sym));
1397
1398               SYMBOL_SET_LINKAGE_NAME (sym, new_name);
1399               SYMBOL_VALUE_ADDRESS (sym) = BMSYMBOL_VALUE_ADDRESS (msym);
1400             }
1401         }
1402       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1403         add_symbol_to_list (sym, get_local_symbols ());
1404       break;
1405
1406     case 'v':
1407       /* Reference parameter */
1408       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1409       SYMBOL_ACLASS_INDEX (sym) = LOC_REF_ARG;
1410       SYMBOL_IS_ARGUMENT (sym) = 1;
1411       SYMBOL_VALUE (sym) = valu;
1412       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1413       add_symbol_to_list (sym, get_local_symbols ());
1414       break;
1415
1416     case 'a':
1417       /* Reference parameter which is in a register.  */
1418       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1419       SYMBOL_ACLASS_INDEX (sym) = stab_regparm_index;
1420       SYMBOL_IS_ARGUMENT (sym) = 1;
1421       SYMBOL_VALUE (sym) = valu;
1422       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1423       add_symbol_to_list (sym, get_local_symbols ());
1424       break;
1425
1426     case 'X':
1427       /* This is used by Sun FORTRAN for "function result value".
1428          Sun claims ("dbx and dbxtool interfaces", 2nd ed)
1429          that Pascal uses it too, but when I tried it Pascal used
1430          "x:3" (local symbol) instead.  */
1431       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1432       SYMBOL_ACLASS_INDEX (sym) = LOC_LOCAL;
1433       SYMBOL_VALUE (sym) = valu;
1434       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1435       add_symbol_to_list (sym, get_local_symbols ());
1436       break;
1437
1438     default:
1439       SYMBOL_TYPE (sym) = error_type (&p, objfile);
1440       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
1441       SYMBOL_VALUE (sym) = 0;
1442       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
1443       add_symbol_to_list (sym, get_file_symbols ());
1444       break;
1445     }
1446
1447   /* Some systems pass variables of certain types by reference instead
1448      of by value, i.e. they will pass the address of a structure (in a
1449      register or on the stack) instead of the structure itself.  */
1450
1451   if (gdbarch_stabs_argument_has_addr (gdbarch, SYMBOL_TYPE (sym))
1452       && SYMBOL_IS_ARGUMENT (sym))
1453     {
1454       /* We have to convert LOC_REGISTER to LOC_REGPARM_ADDR (for
1455          variables passed in a register).  */
1456       if (SYMBOL_CLASS (sym) == LOC_REGISTER)
1457         SYMBOL_ACLASS_INDEX (sym) = LOC_REGPARM_ADDR;
1458       /* Likewise for converting LOC_ARG to LOC_REF_ARG (for the 7th
1459          and subsequent arguments on SPARC, for example).  */
1460       else if (SYMBOL_CLASS (sym) == LOC_ARG)
1461         SYMBOL_ACLASS_INDEX (sym) = LOC_REF_ARG;
1462     }
1463
1464   return sym;
1465 }
1466
1467 /* Skip rest of this symbol and return an error type.
1468
1469    General notes on error recovery:  error_type always skips to the
1470    end of the symbol (modulo cretinous dbx symbol name continuation).
1471    Thus code like this:
1472
1473    if (*(*pp)++ != ';')
1474    return error_type (pp, objfile);
1475
1476    is wrong because if *pp starts out pointing at '\0' (typically as the
1477    result of an earlier error), it will be incremented to point to the
1478    start of the next symbol, which might produce strange results, at least
1479    if you run off the end of the string table.  Instead use
1480
1481    if (**pp != ';')
1482    return error_type (pp, objfile);
1483    ++*pp;
1484
1485    or
1486
1487    if (**pp != ';')
1488    foo = error_type (pp, objfile);
1489    else
1490    ++*pp;
1491
1492    And in case it isn't obvious, the point of all this hair is so the compiler
1493    can define new types and new syntaxes, and old versions of the
1494    debugger will be able to read the new symbol tables.  */
1495
1496 static struct type *
1497 error_type (const char **pp, struct objfile *objfile)
1498 {
1499   complaint (_("couldn't parse type; debugger out of date?"));
1500   while (1)
1501     {
1502       /* Skip to end of symbol.  */
1503       while (**pp != '\0')
1504         {
1505           (*pp)++;
1506         }
1507
1508       /* Check for and handle cretinous dbx symbol name continuation!  */
1509       if ((*pp)[-1] == '\\' || (*pp)[-1] == '?')
1510         {
1511           *pp = next_symbol_text (objfile);
1512         }
1513       else
1514         {
1515           break;
1516         }
1517     }
1518   return objfile_type (objfile)->builtin_error;
1519 }
1520 \f
1521
1522 /* Read type information or a type definition; return the type.  Even
1523    though this routine accepts either type information or a type
1524    definition, the distinction is relevant--some parts of stabsread.c
1525    assume that type information starts with a digit, '-', or '(' in
1526    deciding whether to call read_type.  */
1527
1528 static struct type *
1529 read_type (const char **pp, struct objfile *objfile)
1530 {
1531   struct type *type = 0;
1532   struct type *type1;
1533   int typenums[2];
1534   char type_descriptor;
1535
1536   /* Size in bits of type if specified by a type attribute, or -1 if
1537      there is no size attribute.  */
1538   int type_size = -1;
1539
1540   /* Used to distinguish string and bitstring from char-array and set.  */
1541   int is_string = 0;
1542
1543   /* Used to distinguish vector from array.  */
1544   int is_vector = 0;
1545
1546   /* Read type number if present.  The type number may be omitted.
1547      for instance in a two-dimensional array declared with type
1548      "ar1;1;10;ar1;1;10;4".  */
1549   if ((**pp >= '0' && **pp <= '9')
1550       || **pp == '('
1551       || **pp == '-')
1552     {
1553       if (read_type_number (pp, typenums) != 0)
1554         return error_type (pp, objfile);
1555
1556       if (**pp != '=')
1557         {
1558           /* Type is not being defined here.  Either it already
1559              exists, or this is a forward reference to it.
1560              dbx_alloc_type handles both cases.  */
1561           type = dbx_alloc_type (typenums, objfile);
1562
1563           /* If this is a forward reference, arrange to complain if it
1564              doesn't get patched up by the time we're done
1565              reading.  */
1566           if (TYPE_CODE (type) == TYPE_CODE_UNDEF)
1567             add_undefined_type (type, typenums);
1568
1569           return type;
1570         }
1571
1572       /* Type is being defined here.  */
1573       /* Skip the '='.
1574          Also skip the type descriptor - we get it below with (*pp)[-1].  */
1575       (*pp) += 2;
1576     }
1577   else
1578     {
1579       /* 'typenums=' not present, type is anonymous.  Read and return
1580          the definition, but don't put it in the type vector.  */
1581       typenums[0] = typenums[1] = -1;
1582       (*pp)++;
1583     }
1584
1585 again:
1586   type_descriptor = (*pp)[-1];
1587   switch (type_descriptor)
1588     {
1589     case 'x':
1590       {
1591         enum type_code code;
1592
1593         /* Used to index through file_symbols.  */
1594         struct pending *ppt;
1595         int i;
1596
1597         /* Name including "struct", etc.  */
1598         char *type_name;
1599
1600         {
1601           const char *from, *p, *q1, *q2;
1602
1603           /* Set the type code according to the following letter.  */
1604           switch ((*pp)[0])
1605             {
1606             case 's':
1607               code = TYPE_CODE_STRUCT;
1608               break;
1609             case 'u':
1610               code = TYPE_CODE_UNION;
1611               break;
1612             case 'e':
1613               code = TYPE_CODE_ENUM;
1614               break;
1615             default:
1616               {
1617                 /* Complain and keep going, so compilers can invent new
1618                    cross-reference types.  */
1619                 complaint (_("Unrecognized cross-reference type `%c'"),
1620                            (*pp)[0]);
1621                 code = TYPE_CODE_STRUCT;
1622                 break;
1623               }
1624             }
1625
1626           q1 = strchr (*pp, '<');
1627           p = strchr (*pp, ':');
1628           if (p == NULL)
1629             return error_type (pp, objfile);
1630           if (q1 && p > q1 && p[1] == ':')
1631             {
1632               int nesting_level = 0;
1633
1634               for (q2 = q1; *q2; q2++)
1635                 {
1636                   if (*q2 == '<')
1637                     nesting_level++;
1638                   else if (*q2 == '>')
1639                     nesting_level--;
1640                   else if (*q2 == ':' && nesting_level == 0)
1641                     break;
1642                 }
1643               p = q2;
1644               if (*p != ':')
1645                 return error_type (pp, objfile);
1646             }
1647           type_name = NULL;
1648           if (get_current_subfile ()->language == language_cplus)
1649             {
1650               char *name = (char *) alloca (p - *pp + 1);
1651
1652               memcpy (name, *pp, p - *pp);
1653               name[p - *pp] = '\0';
1654
1655               std::string new_name = cp_canonicalize_string (name);
1656               if (!new_name.empty ())
1657                 {
1658                   type_name
1659                     = (char *) obstack_copy0 (&objfile->objfile_obstack,
1660                                               new_name.c_str (),
1661                                               new_name.length ());
1662                 }
1663             }
1664           if (type_name == NULL)
1665             {
1666               char *to = type_name = (char *)
1667                 obstack_alloc (&objfile->objfile_obstack, p - *pp + 1);
1668
1669               /* Copy the name.  */
1670               from = *pp + 1;
1671               while (from < p)
1672                 *to++ = *from++;
1673               *to = '\0';
1674             }
1675
1676           /* Set the pointer ahead of the name which we just read, and
1677              the colon.  */
1678           *pp = p + 1;
1679         }
1680
1681         /* If this type has already been declared, then reuse the same
1682            type, rather than allocating a new one.  This saves some
1683            memory.  */
1684
1685         for (ppt = *get_file_symbols (); ppt; ppt = ppt->next)
1686           for (i = 0; i < ppt->nsyms; i++)
1687             {
1688               struct symbol *sym = ppt->symbol[i];
1689
1690               if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
1691                   && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
1692                   && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
1693                   && strcmp (SYMBOL_LINKAGE_NAME (sym), type_name) == 0)
1694                 {
1695                   obstack_free (&objfile->objfile_obstack, type_name);
1696                   type = SYMBOL_TYPE (sym);
1697                   if (typenums[0] != -1)
1698                     *dbx_lookup_type (typenums, objfile) = type;
1699                   return type;
1700                 }
1701             }
1702
1703         /* Didn't find the type to which this refers, so we must
1704            be dealing with a forward reference.  Allocate a type
1705            structure for it, and keep track of it so we can
1706            fill in the rest of the fields when we get the full
1707            type.  */
1708         type = dbx_alloc_type (typenums, objfile);
1709         TYPE_CODE (type) = code;
1710         TYPE_NAME (type) = type_name;
1711         INIT_CPLUS_SPECIFIC (type);
1712         TYPE_STUB (type) = 1;
1713
1714         add_undefined_type (type, typenums);
1715         return type;
1716       }
1717
1718     case '-':                   /* RS/6000 built-in type */
1719     case '0':
1720     case '1':
1721     case '2':
1722     case '3':
1723     case '4':
1724     case '5':
1725     case '6':
1726     case '7':
1727     case '8':
1728     case '9':
1729     case '(':
1730       (*pp)--;
1731
1732       /* We deal with something like t(1,2)=(3,4)=... which
1733          the Lucid compiler and recent gcc versions (post 2.7.3) use.  */
1734
1735       /* Allocate and enter the typedef type first.
1736          This handles recursive types.  */
1737       type = dbx_alloc_type (typenums, objfile);
1738       TYPE_CODE (type) = TYPE_CODE_TYPEDEF;
1739       {
1740         struct type *xtype = read_type (pp, objfile);
1741
1742         if (type == xtype)
1743           {
1744             /* It's being defined as itself.  That means it is "void".  */
1745             TYPE_CODE (type) = TYPE_CODE_VOID;
1746             TYPE_LENGTH (type) = 1;
1747           }
1748         else if (type_size >= 0 || is_string)
1749           {
1750             /* This is the absolute wrong way to construct types.  Every
1751                other debug format has found a way around this problem and
1752                the related problems with unnecessarily stubbed types;
1753                someone motivated should attempt to clean up the issue
1754                here as well.  Once a type pointed to has been created it
1755                should not be modified.
1756
1757                Well, it's not *absolutely* wrong.  Constructing recursive
1758                types (trees, linked lists) necessarily entails modifying
1759                types after creating them.  Constructing any loop structure
1760                entails side effects.  The Dwarf 2 reader does handle this
1761                more gracefully (it never constructs more than once
1762                instance of a type object, so it doesn't have to copy type
1763                objects wholesale), but it still mutates type objects after
1764                other folks have references to them.
1765
1766                Keep in mind that this circularity/mutation issue shows up
1767                at the source language level, too: C's "incomplete types",
1768                for example.  So the proper cleanup, I think, would be to
1769                limit GDB's type smashing to match exactly those required
1770                by the source language.  So GDB could have a
1771                "complete_this_type" function, but never create unnecessary
1772                copies of a type otherwise.  */
1773             replace_type (type, xtype);
1774             TYPE_NAME (type) = NULL;
1775           }
1776         else
1777           {
1778             TYPE_TARGET_STUB (type) = 1;
1779             TYPE_TARGET_TYPE (type) = xtype;
1780           }
1781       }
1782       break;
1783
1784       /* In the following types, we must be sure to overwrite any existing
1785          type that the typenums refer to, rather than allocating a new one
1786          and making the typenums point to the new one.  This is because there
1787          may already be pointers to the existing type (if it had been
1788          forward-referenced), and we must change it to a pointer, function,
1789          reference, or whatever, *in-place*.  */
1790
1791     case '*':                   /* Pointer to another type */
1792       type1 = read_type (pp, objfile);
1793       type = make_pointer_type (type1, dbx_lookup_type (typenums, objfile));
1794       break;
1795
1796     case '&':                   /* Reference to another type */
1797       type1 = read_type (pp, objfile);
1798       type = make_reference_type (type1, dbx_lookup_type (typenums, objfile),
1799                                   TYPE_CODE_REF);
1800       break;
1801
1802     case 'f':                   /* Function returning another type */
1803       type1 = read_type (pp, objfile);
1804       type = make_function_type (type1, dbx_lookup_type (typenums, objfile));
1805       break;
1806
1807     case 'g':                   /* Prototyped function.  (Sun)  */
1808       {
1809         /* Unresolved questions:
1810
1811            - According to Sun's ``STABS Interface Manual'', for 'f'
1812            and 'F' symbol descriptors, a `0' in the argument type list
1813            indicates a varargs function.  But it doesn't say how 'g'
1814            type descriptors represent that info.  Someone with access
1815            to Sun's toolchain should try it out.
1816
1817            - According to the comment in define_symbol (search for
1818            `process_prototype_types:'), Sun emits integer arguments as
1819            types which ref themselves --- like `void' types.  Do we
1820            have to deal with that here, too?  Again, someone with
1821            access to Sun's toolchain should try it out and let us
1822            know.  */
1823
1824         const char *type_start = (*pp) - 1;
1825         struct type *return_type = read_type (pp, objfile);
1826         struct type *func_type
1827           = make_function_type (return_type,
1828                                 dbx_lookup_type (typenums, objfile));
1829         struct type_list {
1830           struct type *type;
1831           struct type_list *next;
1832         } *arg_types = 0;
1833         int num_args = 0;
1834
1835         while (**pp && **pp != '#')
1836           {
1837             struct type *arg_type = read_type (pp, objfile);
1838             struct type_list *newobj = XALLOCA (struct type_list);
1839             newobj->type = arg_type;
1840             newobj->next = arg_types;
1841             arg_types = newobj;
1842             num_args++;
1843           }
1844         if (**pp == '#')
1845           ++*pp;
1846         else
1847           {
1848             complaint (_("Prototyped function type didn't "
1849                          "end arguments with `#':\n%s"),
1850                        type_start);
1851           }
1852
1853         /* If there is just one argument whose type is `void', then
1854            that's just an empty argument list.  */
1855         if (arg_types
1856             && ! arg_types->next
1857             && TYPE_CODE (arg_types->type) == TYPE_CODE_VOID)
1858           num_args = 0;
1859
1860         TYPE_FIELDS (func_type)
1861           = (struct field *) TYPE_ALLOC (func_type,
1862                                          num_args * sizeof (struct field));
1863         memset (TYPE_FIELDS (func_type), 0, num_args * sizeof (struct field));
1864         {
1865           int i;
1866           struct type_list *t;
1867
1868           /* We stuck each argument type onto the front of the list
1869              when we read it, so the list is reversed.  Build the
1870              fields array right-to-left.  */
1871           for (t = arg_types, i = num_args - 1; t; t = t->next, i--)
1872             TYPE_FIELD_TYPE (func_type, i) = t->type;
1873         }
1874         TYPE_NFIELDS (func_type) = num_args;
1875         TYPE_PROTOTYPED (func_type) = 1;
1876
1877         type = func_type;
1878         break;
1879       }
1880
1881     case 'k':                   /* Const qualifier on some type (Sun) */
1882       type = read_type (pp, objfile);
1883       type = make_cv_type (1, TYPE_VOLATILE (type), type,
1884                            dbx_lookup_type (typenums, objfile));
1885       break;
1886
1887     case 'B':                   /* Volatile qual on some type (Sun) */
1888       type = read_type (pp, objfile);
1889       type = make_cv_type (TYPE_CONST (type), 1, type,
1890                            dbx_lookup_type (typenums, objfile));
1891       break;
1892
1893     case '@':
1894       if (isdigit (**pp) || **pp == '(' || **pp == '-')
1895         {                       /* Member (class & variable) type */
1896           /* FIXME -- we should be doing smash_to_XXX types here.  */
1897
1898           struct type *domain = read_type (pp, objfile);
1899           struct type *memtype;
1900
1901           if (**pp != ',')
1902             /* Invalid member type data format.  */
1903             return error_type (pp, objfile);
1904           ++*pp;
1905
1906           memtype = read_type (pp, objfile);
1907           type = dbx_alloc_type (typenums, objfile);
1908           smash_to_memberptr_type (type, domain, memtype);
1909         }
1910       else
1911         /* type attribute */
1912         {
1913           const char *attr = *pp;
1914
1915           /* Skip to the semicolon.  */
1916           while (**pp != ';' && **pp != '\0')
1917             ++(*pp);
1918           if (**pp == '\0')
1919             return error_type (pp, objfile);
1920           else
1921             ++ * pp;            /* Skip the semicolon.  */
1922
1923           switch (*attr)
1924             {
1925             case 's':           /* Size attribute */
1926               type_size = atoi (attr + 1);
1927               if (type_size <= 0)
1928                 type_size = -1;
1929               break;
1930
1931             case 'S':           /* String attribute */
1932               /* FIXME: check to see if following type is array?  */
1933               is_string = 1;
1934               break;
1935
1936             case 'V':           /* Vector attribute */
1937               /* FIXME: check to see if following type is array?  */
1938               is_vector = 1;
1939               break;
1940
1941             default:
1942               /* Ignore unrecognized type attributes, so future compilers
1943                  can invent new ones.  */
1944               break;
1945             }
1946           ++*pp;
1947           goto again;
1948         }
1949       break;
1950
1951     case '#':                   /* Method (class & fn) type */
1952       if ((*pp)[0] == '#')
1953         {
1954           /* We'll get the parameter types from the name.  */
1955           struct type *return_type;
1956
1957           (*pp)++;
1958           return_type = read_type (pp, objfile);
1959           if (*(*pp)++ != ';')
1960             complaint (_("invalid (minimal) member type "
1961                          "data format at symtab pos %d."),
1962                        symnum);
1963           type = allocate_stub_method (return_type);
1964           if (typenums[0] != -1)
1965             *dbx_lookup_type (typenums, objfile) = type;
1966         }
1967       else
1968         {
1969           struct type *domain = read_type (pp, objfile);
1970           struct type *return_type;
1971           struct field *args;
1972           int nargs, varargs;
1973
1974           if (**pp != ',')
1975             /* Invalid member type data format.  */
1976             return error_type (pp, objfile);
1977           else
1978             ++(*pp);
1979
1980           return_type = read_type (pp, objfile);
1981           args = read_args (pp, ';', objfile, &nargs, &varargs);
1982           if (args == NULL)
1983             return error_type (pp, objfile);
1984           type = dbx_alloc_type (typenums, objfile);
1985           smash_to_method_type (type, domain, return_type, args,
1986                                 nargs, varargs);
1987         }
1988       break;
1989
1990     case 'r':                   /* Range type */
1991       type = read_range_type (pp, typenums, type_size, objfile);
1992       if (typenums[0] != -1)
1993         *dbx_lookup_type (typenums, objfile) = type;
1994       break;
1995
1996     case 'b':
1997         {
1998           /* Sun ACC builtin int type */
1999           type = read_sun_builtin_type (pp, typenums, objfile);
2000           if (typenums[0] != -1)
2001             *dbx_lookup_type (typenums, objfile) = type;
2002         }
2003       break;
2004
2005     case 'R':                   /* Sun ACC builtin float type */
2006       type = read_sun_floating_type (pp, typenums, objfile);
2007       if (typenums[0] != -1)
2008         *dbx_lookup_type (typenums, objfile) = type;
2009       break;
2010
2011     case 'e':                   /* Enumeration type */
2012       type = dbx_alloc_type (typenums, objfile);
2013       type = read_enum_type (pp, type, objfile);
2014       if (typenums[0] != -1)
2015         *dbx_lookup_type (typenums, objfile) = type;
2016       break;
2017
2018     case 's':                   /* Struct type */
2019     case 'u':                   /* Union type */
2020       {
2021         enum type_code type_code = TYPE_CODE_UNDEF;
2022         type = dbx_alloc_type (typenums, objfile);
2023         switch (type_descriptor)
2024           {
2025           case 's':
2026             type_code = TYPE_CODE_STRUCT;
2027             break;
2028           case 'u':
2029             type_code = TYPE_CODE_UNION;
2030             break;
2031           }
2032         type = read_struct_type (pp, type, type_code, objfile);
2033         break;
2034       }
2035
2036     case 'a':                   /* Array type */
2037       if (**pp != 'r')
2038         return error_type (pp, objfile);
2039       ++*pp;
2040
2041       type = dbx_alloc_type (typenums, objfile);
2042       type = read_array_type (pp, type, objfile);
2043       if (is_string)
2044         TYPE_CODE (type) = TYPE_CODE_STRING;
2045       if (is_vector)
2046         make_vector_type (type);
2047       break;
2048
2049     case 'S':                   /* Set type */
2050       type1 = read_type (pp, objfile);
2051       type = create_set_type (NULL, type1);
2052       if (typenums[0] != -1)
2053         *dbx_lookup_type (typenums, objfile) = type;
2054       break;
2055
2056     default:
2057       --*pp;                    /* Go back to the symbol in error.  */
2058       /* Particularly important if it was \0!  */
2059       return error_type (pp, objfile);
2060     }
2061
2062   if (type == 0)
2063     {
2064       warning (_("GDB internal error, type is NULL in stabsread.c."));
2065       return error_type (pp, objfile);
2066     }
2067
2068   /* Size specified in a type attribute overrides any other size.  */
2069   if (type_size != -1)
2070     TYPE_LENGTH (type) = (type_size + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
2071
2072   return type;
2073 }
2074 \f
2075 /* RS/6000 xlc/dbx combination uses a set of builtin types, starting from -1.
2076    Return the proper type node for a given builtin type number.  */
2077
2078 static const struct objfile_key<struct type *,
2079                                 gdb::noop_deleter<struct type *>>
2080   rs6000_builtin_type_data;
2081
2082 static struct type *
2083 rs6000_builtin_type (int typenum, struct objfile *objfile)
2084 {
2085   struct type **negative_types = rs6000_builtin_type_data.get (objfile);
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       rs6000_builtin_type_data.set (objfile, 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 (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 (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   undef_types_allocated = 20;
4805   undef_types_length = 0;
4806   undef_types = XNEWVEC (struct type *, undef_types_allocated);
4807
4808   noname_undefs_allocated = 20;
4809   noname_undefs_length = 0;
4810   noname_undefs = XNEWVEC (struct nat, noname_undefs_allocated);
4811
4812   stab_register_index = register_symbol_register_impl (LOC_REGISTER,
4813                                                        &stab_register_funcs);
4814   stab_regparm_index = register_symbol_register_impl (LOC_REGPARM_ADDR,
4815                                                       &stab_register_funcs);
4816 }