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