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