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