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