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