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