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