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