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