Target FP: Add string routines to target-float.{c,h}
[external/binutils.git] / gdb / stabsread.c
1 /* Support routines for decoding "stabs" debugging information format.
2
3    Copyright (C) 1986-2017 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               /* Fall through into normal member function.  */
2536
2537             case '.':
2538               /* normal member function.  */
2539               new_sublist->fn_field.voffset = 0;
2540               new_sublist->fn_field.fcontext = 0;
2541               break;
2542             }
2543
2544           new_sublist->next = sublist;
2545           sublist = new_sublist;
2546           length++;
2547           STABS_CONTINUE (pp, objfile);
2548         }
2549       while (**pp != ';' && **pp != '\0');
2550
2551       (*pp)++;
2552       STABS_CONTINUE (pp, objfile);
2553
2554       /* Skip GCC 3.X member functions which are duplicates of the callable
2555          constructor/destructor.  */
2556       if (strcmp_iw (main_fn_name, "__base_ctor ") == 0
2557           || strcmp_iw (main_fn_name, "__base_dtor ") == 0
2558           || strcmp (main_fn_name, "__deleting_dtor") == 0)
2559         {
2560           xfree (main_fn_name);
2561         }
2562       else
2563         {
2564           int has_stub = 0;
2565           int has_destructor = 0, has_other = 0;
2566           int is_v3 = 0;
2567           struct next_fnfield *tmp_sublist;
2568
2569           /* Various versions of GCC emit various mostly-useless
2570              strings in the name field for special member functions.
2571
2572              For stub methods, we need to defer correcting the name
2573              until we are ready to unstub the method, because the current
2574              name string is used by gdb_mangle_name.  The only stub methods
2575              of concern here are GNU v2 operators; other methods have their
2576              names correct (see caveat below).
2577
2578              For non-stub methods, in GNU v3, we have a complete physname.
2579              Therefore we can safely correct the name now.  This primarily
2580              affects constructors and destructors, whose name will be
2581              __comp_ctor or __comp_dtor instead of Foo or ~Foo.  Cast
2582              operators will also have incorrect names; for instance,
2583              "operator int" will be named "operator i" (i.e. the type is
2584              mangled).
2585
2586              For non-stub methods in GNU v2, we have no easy way to
2587              know if we have a complete physname or not.  For most
2588              methods the result depends on the platform (if CPLUS_MARKER
2589              can be `$' or `.', it will use minimal debug information, or
2590              otherwise the full physname will be included).
2591
2592              Rather than dealing with this, we take a different approach.
2593              For v3 mangled names, we can use the full physname; for v2,
2594              we use cplus_demangle_opname (which is actually v2 specific),
2595              because the only interesting names are all operators - once again
2596              barring the caveat below.  Skip this process if any method in the
2597              group is a stub, to prevent our fouling up the workings of
2598              gdb_mangle_name.
2599
2600              The caveat: GCC 2.95.x (and earlier?) put constructors and
2601              destructors in the same method group.  We need to split this
2602              into two groups, because they should have different names.
2603              So for each method group we check whether it contains both
2604              routines whose physname appears to be a destructor (the physnames
2605              for and destructors are always provided, due to quirks in v2
2606              mangling) and routines whose physname does not appear to be a
2607              destructor.  If so then we break up the list into two halves.
2608              Even if the constructors and destructors aren't in the same group
2609              the destructor will still lack the leading tilde, so that also
2610              needs to be fixed.
2611
2612              So, to summarize what we expect and handle here:
2613
2614                 Given         Given          Real         Real       Action
2615              method name     physname      physname   method name
2616
2617              __opi            [none]     __opi__3Foo  operator int    opname
2618                                                                  [now or later]
2619              Foo              _._3Foo       _._3Foo      ~Foo      separate and
2620                                                                        rename
2621              operator i     _ZN3FoocviEv _ZN3FoocviEv operator int    demangle
2622              __comp_ctor  _ZN3FooC1ERKS_ _ZN3FooC1ERKS_   Foo         demangle
2623           */
2624
2625           tmp_sublist = sublist;
2626           while (tmp_sublist != NULL)
2627             {
2628               if (tmp_sublist->fn_field.is_stub)
2629                 has_stub = 1;
2630               if (tmp_sublist->fn_field.physname[0] == '_'
2631                   && tmp_sublist->fn_field.physname[1] == 'Z')
2632                 is_v3 = 1;
2633
2634               if (is_destructor_name (tmp_sublist->fn_field.physname))
2635                 has_destructor++;
2636               else
2637                 has_other++;
2638
2639               tmp_sublist = tmp_sublist->next;
2640             }
2641
2642           if (has_destructor && has_other)
2643             {
2644               struct next_fnfieldlist *destr_fnlist;
2645               struct next_fnfield *last_sublist;
2646
2647               /* Create a new fn_fieldlist for the destructors.  */
2648
2649               destr_fnlist = XCNEW (struct next_fnfieldlist);
2650               make_cleanup (xfree, destr_fnlist);
2651
2652               destr_fnlist->fn_fieldlist.name
2653                 = obconcat (&objfile->objfile_obstack, "~",
2654                             new_fnlist->fn_fieldlist.name, (char *) NULL);
2655
2656               destr_fnlist->fn_fieldlist.fn_fields =
2657                 XOBNEWVEC (&objfile->objfile_obstack,
2658                            struct fn_field, has_destructor);
2659               memset (destr_fnlist->fn_fieldlist.fn_fields, 0,
2660                   sizeof (struct fn_field) * has_destructor);
2661               tmp_sublist = sublist;
2662               last_sublist = NULL;
2663               i = 0;
2664               while (tmp_sublist != NULL)
2665                 {
2666                   if (!is_destructor_name (tmp_sublist->fn_field.physname))
2667                     {
2668                       tmp_sublist = tmp_sublist->next;
2669                       continue;
2670                     }
2671                   
2672                   destr_fnlist->fn_fieldlist.fn_fields[i++]
2673                     = tmp_sublist->fn_field;
2674                   if (last_sublist)
2675                     last_sublist->next = tmp_sublist->next;
2676                   else
2677                     sublist = tmp_sublist->next;
2678                   last_sublist = tmp_sublist;
2679                   tmp_sublist = tmp_sublist->next;
2680                 }
2681
2682               destr_fnlist->fn_fieldlist.length = has_destructor;
2683               destr_fnlist->next = fip->fnlist;
2684               fip->fnlist = destr_fnlist;
2685               nfn_fields++;
2686               length -= has_destructor;
2687             }
2688           else if (is_v3)
2689             {
2690               /* v3 mangling prevents the use of abbreviated physnames,
2691                  so we can do this here.  There are stubbed methods in v3
2692                  only:
2693                  - in -gstabs instead of -gstabs+
2694                  - or for static methods, which are output as a function type
2695                    instead of a method type.  */
2696               char *new_method_name =
2697                 stabs_method_name_from_physname (sublist->fn_field.physname);
2698
2699               if (new_method_name != NULL
2700                   && strcmp (new_method_name,
2701                              new_fnlist->fn_fieldlist.name) != 0)
2702                 {
2703                   new_fnlist->fn_fieldlist.name = new_method_name;
2704                   xfree (main_fn_name);
2705                 }
2706               else
2707                 xfree (new_method_name);
2708             }
2709           else if (has_destructor && new_fnlist->fn_fieldlist.name[0] != '~')
2710             {
2711               new_fnlist->fn_fieldlist.name =
2712                 obconcat (&objfile->objfile_obstack,
2713                           "~", main_fn_name, (char *)NULL);
2714               xfree (main_fn_name);
2715             }
2716           else if (!has_stub)
2717             {
2718               char dem_opname[256];
2719               int ret;
2720
2721               ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name,
2722                                               dem_opname, DMGL_ANSI);
2723               if (!ret)
2724                 ret = cplus_demangle_opname (new_fnlist->fn_fieldlist.name,
2725                                              dem_opname, 0);
2726               if (ret)
2727                 new_fnlist->fn_fieldlist.name
2728                   = ((const char *)
2729                      obstack_copy0 (&objfile->objfile_obstack, dem_opname,
2730                                     strlen (dem_opname)));
2731               xfree (main_fn_name);
2732             }
2733
2734           new_fnlist->fn_fieldlist.fn_fields = (struct fn_field *)
2735             obstack_alloc (&objfile->objfile_obstack,
2736                            sizeof (struct fn_field) * length);
2737           memset (new_fnlist->fn_fieldlist.fn_fields, 0,
2738                   sizeof (struct fn_field) * length);
2739           for (i = length; (i--, sublist); sublist = sublist->next)
2740             {
2741               new_fnlist->fn_fieldlist.fn_fields[i] = sublist->fn_field;
2742             }
2743
2744           new_fnlist->fn_fieldlist.length = length;
2745           new_fnlist->next = fip->fnlist;
2746           fip->fnlist = new_fnlist;
2747           nfn_fields++;
2748         }
2749     }
2750
2751   if (nfn_fields)
2752     {
2753       ALLOCATE_CPLUS_STRUCT_TYPE (type);
2754       TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
2755         TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * nfn_fields);
2756       memset (TYPE_FN_FIELDLISTS (type), 0,
2757               sizeof (struct fn_fieldlist) * nfn_fields);
2758       TYPE_NFN_FIELDS (type) = nfn_fields;
2759     }
2760
2761   return 1;
2762 }
2763
2764 /* Special GNU C++ name.
2765
2766    Returns 1 for success, 0 for failure.  "failure" means that we can't
2767    keep parsing and it's time for error_type().  */
2768
2769 static int
2770 read_cpp_abbrev (struct field_info *fip, const char **pp, struct type *type,
2771                  struct objfile *objfile)
2772 {
2773   const char *p;
2774   const char *name;
2775   char cpp_abbrev;
2776   struct type *context;
2777
2778   p = *pp;
2779   if (*++p == 'v')
2780     {
2781       name = NULL;
2782       cpp_abbrev = *++p;
2783
2784       *pp = p + 1;
2785
2786       /* At this point, *pp points to something like "22:23=*22...",
2787          where the type number before the ':' is the "context" and
2788          everything after is a regular type definition.  Lookup the
2789          type, find it's name, and construct the field name.  */
2790
2791       context = read_type (pp, objfile);
2792
2793       switch (cpp_abbrev)
2794         {
2795         case 'f':               /* $vf -- a virtual function table pointer */
2796           name = type_name_no_tag (context);
2797           if (name == NULL)
2798             {
2799               name = "";
2800             }
2801           fip->list->field.name = obconcat (&objfile->objfile_obstack,
2802                                             vptr_name, name, (char *) NULL);
2803           break;
2804
2805         case 'b':               /* $vb -- a virtual bsomethingorother */
2806           name = type_name_no_tag (context);
2807           if (name == NULL)
2808             {
2809               complaint (&symfile_complaints,
2810                          _("C++ abbreviated type name "
2811                            "unknown at symtab pos %d"),
2812                          symnum);
2813               name = "FOO";
2814             }
2815           fip->list->field.name = obconcat (&objfile->objfile_obstack, vb_name,
2816                                             name, (char *) NULL);
2817           break;
2818
2819         default:
2820           invalid_cpp_abbrev_complaint (*pp);
2821           fip->list->field.name = obconcat (&objfile->objfile_obstack,
2822                                             "INVALID_CPLUSPLUS_ABBREV",
2823                                             (char *) NULL);
2824           break;
2825         }
2826
2827       /* At this point, *pp points to the ':'.  Skip it and read the
2828          field type.  */
2829
2830       p = ++(*pp);
2831       if (p[-1] != ':')
2832         {
2833           invalid_cpp_abbrev_complaint (*pp);
2834           return 0;
2835         }
2836       fip->list->field.type = read_type (pp, objfile);
2837       if (**pp == ',')
2838         (*pp)++;                /* Skip the comma.  */
2839       else
2840         return 0;
2841
2842       {
2843         int nbits;
2844
2845         SET_FIELD_BITPOS (fip->list->field,
2846                           read_huge_number (pp, ';', &nbits, 0));
2847         if (nbits != 0)
2848           return 0;
2849       }
2850       /* This field is unpacked.  */
2851       FIELD_BITSIZE (fip->list->field) = 0;
2852       fip->list->visibility = VISIBILITY_PRIVATE;
2853     }
2854   else
2855     {
2856       invalid_cpp_abbrev_complaint (*pp);
2857       /* We have no idea what syntax an unrecognized abbrev would have, so
2858          better return 0.  If we returned 1, we would need to at least advance
2859          *pp to avoid an infinite loop.  */
2860       return 0;
2861     }
2862   return 1;
2863 }
2864
2865 static void
2866 read_one_struct_field (struct field_info *fip, const char **pp, const char *p,
2867                        struct type *type, struct objfile *objfile)
2868 {
2869   struct gdbarch *gdbarch = get_objfile_arch (objfile);
2870
2871   fip->list->field.name
2872     = (const char *) obstack_copy0 (&objfile->objfile_obstack, *pp, p - *pp);
2873   *pp = p + 1;
2874
2875   /* This means we have a visibility for a field coming.  */
2876   if (**pp == '/')
2877     {
2878       (*pp)++;
2879       fip->list->visibility = *(*pp)++;
2880     }
2881   else
2882     {
2883       /* normal dbx-style format, no explicit visibility */
2884       fip->list->visibility = VISIBILITY_PUBLIC;
2885     }
2886
2887   fip->list->field.type = read_type (pp, objfile);
2888   if (**pp == ':')
2889     {
2890       p = ++(*pp);
2891 #if 0
2892       /* Possible future hook for nested types.  */
2893       if (**pp == '!')
2894         {
2895           fip->list->field.bitpos = (long) -2;  /* nested type */
2896           p = ++(*pp);
2897         }
2898       else
2899         ...;
2900 #endif
2901       while (*p != ';')
2902         {
2903           p++;
2904         }
2905       /* Static class member.  */
2906       SET_FIELD_PHYSNAME (fip->list->field, savestring (*pp, p - *pp));
2907       *pp = p + 1;
2908       return;
2909     }
2910   else if (**pp != ',')
2911     {
2912       /* Bad structure-type format.  */
2913       stabs_general_complaint ("bad structure-type format");
2914       return;
2915     }
2916
2917   (*pp)++;                      /* Skip the comma.  */
2918
2919   {
2920     int nbits;
2921
2922     SET_FIELD_BITPOS (fip->list->field,
2923                       read_huge_number (pp, ',', &nbits, 0));
2924     if (nbits != 0)
2925       {
2926         stabs_general_complaint ("bad structure-type format");
2927         return;
2928       }
2929     FIELD_BITSIZE (fip->list->field) = read_huge_number (pp, ';', &nbits, 0);
2930     if (nbits != 0)
2931       {
2932         stabs_general_complaint ("bad structure-type format");
2933         return;
2934       }
2935   }
2936
2937   if (FIELD_BITPOS (fip->list->field) == 0
2938       && FIELD_BITSIZE (fip->list->field) == 0)
2939     {
2940       /* This can happen in two cases: (1) at least for gcc 2.4.5 or so,
2941          it is a field which has been optimized out.  The correct stab for
2942          this case is to use VISIBILITY_IGNORE, but that is a recent
2943          invention.  (2) It is a 0-size array.  For example
2944          union { int num; char str[0]; } foo.  Printing _("<no value>" for
2945          str in "p foo" is OK, since foo.str (and thus foo.str[3])
2946          will continue to work, and a 0-size array as a whole doesn't
2947          have any contents to print.
2948
2949          I suspect this probably could also happen with gcc -gstabs (not
2950          -gstabs+) for static fields, and perhaps other C++ extensions.
2951          Hopefully few people use -gstabs with gdb, since it is intended
2952          for dbx compatibility.  */
2953
2954       /* Ignore this field.  */
2955       fip->list->visibility = VISIBILITY_IGNORE;
2956     }
2957   else
2958     {
2959       /* Detect an unpacked field and mark it as such.
2960          dbx gives a bit size for all fields.
2961          Note that forward refs cannot be packed,
2962          and treat enums as if they had the width of ints.  */
2963
2964       struct type *field_type = check_typedef (FIELD_TYPE (fip->list->field));
2965
2966       if (TYPE_CODE (field_type) != TYPE_CODE_INT
2967           && TYPE_CODE (field_type) != TYPE_CODE_RANGE
2968           && TYPE_CODE (field_type) != TYPE_CODE_BOOL
2969           && TYPE_CODE (field_type) != TYPE_CODE_ENUM)
2970         {
2971           FIELD_BITSIZE (fip->list->field) = 0;
2972         }
2973       if ((FIELD_BITSIZE (fip->list->field)
2974            == TARGET_CHAR_BIT * TYPE_LENGTH (field_type)
2975            || (TYPE_CODE (field_type) == TYPE_CODE_ENUM
2976                && FIELD_BITSIZE (fip->list->field)
2977                   == gdbarch_int_bit (gdbarch))
2978           )
2979           &&
2980           FIELD_BITPOS (fip->list->field) % 8 == 0)
2981         {
2982           FIELD_BITSIZE (fip->list->field) = 0;
2983         }
2984     }
2985 }
2986
2987
2988 /* Read struct or class data fields.  They have the form:
2989
2990    NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
2991
2992    At the end, we see a semicolon instead of a field.
2993
2994    In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
2995    a static field.
2996
2997    The optional VISIBILITY is one of:
2998
2999    '/0' (VISIBILITY_PRIVATE)
3000    '/1' (VISIBILITY_PROTECTED)
3001    '/2' (VISIBILITY_PUBLIC)
3002    '/9' (VISIBILITY_IGNORE)
3003
3004    or nothing, for C style fields with public visibility.
3005
3006    Returns 1 for success, 0 for failure.  */
3007
3008 static int
3009 read_struct_fields (struct field_info *fip, const char **pp, struct type *type,
3010                     struct objfile *objfile)
3011 {
3012   const char *p;
3013   struct nextfield *newobj;
3014
3015   /* We better set p right now, in case there are no fields at all...    */
3016
3017   p = *pp;
3018
3019   /* Read each data member type until we find the terminating ';' at the end of
3020      the data member list, or break for some other reason such as finding the
3021      start of the member function list.  */
3022   /* Stab string for structure/union does not end with two ';' in
3023      SUN C compiler 5.3 i.e. F6U2, hence check for end of string.  */
3024
3025   while (**pp != ';' && **pp != '\0')
3026     {
3027       STABS_CONTINUE (pp, objfile);
3028       /* Get space to record the next field's data.  */
3029       newobj = XCNEW (struct nextfield);
3030       make_cleanup (xfree, newobj);
3031
3032       newobj->next = fip->list;
3033       fip->list = newobj;
3034
3035       /* Get the field name.  */
3036       p = *pp;
3037
3038       /* If is starts with CPLUS_MARKER it is a special abbreviation,
3039          unless the CPLUS_MARKER is followed by an underscore, in
3040          which case it is just the name of an anonymous type, which we
3041          should handle like any other type name.  */
3042
3043       if (is_cplus_marker (p[0]) && p[1] != '_')
3044         {
3045           if (!read_cpp_abbrev (fip, pp, type, objfile))
3046             return 0;
3047           continue;
3048         }
3049
3050       /* Look for the ':' that separates the field name from the field
3051          values.  Data members are delimited by a single ':', while member
3052          functions are delimited by a pair of ':'s.  When we hit the member
3053          functions (if any), terminate scan loop and return.  */
3054
3055       while (*p != ':' && *p != '\0')
3056         {
3057           p++;
3058         }
3059       if (*p == '\0')
3060         return 0;
3061
3062       /* Check to see if we have hit the member functions yet.  */
3063       if (p[1] == ':')
3064         {
3065           break;
3066         }
3067       read_one_struct_field (fip, pp, p, type, objfile);
3068     }
3069   if (p[0] == ':' && p[1] == ':')
3070     {
3071       /* (the deleted) chill the list of fields: the last entry (at
3072          the head) is a partially constructed entry which we now
3073          scrub.  */
3074       fip->list = fip->list->next;
3075     }
3076   return 1;
3077 }
3078 /* *INDENT-OFF* */
3079 /* The stabs for C++ derived classes contain baseclass information which
3080    is marked by a '!' character after the total size.  This function is
3081    called when we encounter the baseclass marker, and slurps up all the
3082    baseclass information.
3083
3084    Immediately following the '!' marker is the number of base classes that
3085    the class is derived from, followed by information for each base class.
3086    For each base class, there are two visibility specifiers, a bit offset
3087    to the base class information within the derived class, a reference to
3088    the type for the base class, and a terminating semicolon.
3089
3090    A typical example, with two base classes, would be "!2,020,19;0264,21;".
3091                                                        ^^ ^ ^ ^  ^ ^  ^
3092         Baseclass information marker __________________|| | | |  | |  |
3093         Number of baseclasses __________________________| | | |  | |  |
3094         Visibility specifiers (2) ________________________| | |  | |  |
3095         Offset in bits from start of class _________________| |  | |  |
3096         Type number for base class ___________________________|  | |  |
3097         Visibility specifiers (2) _______________________________| |  |
3098         Offset in bits from start of class ________________________|  |
3099         Type number of base class ____________________________________|
3100
3101   Return 1 for success, 0 for (error-type-inducing) failure.  */
3102 /* *INDENT-ON* */
3103
3104
3105
3106 static int
3107 read_baseclasses (struct field_info *fip, const char **pp, struct type *type,
3108                   struct objfile *objfile)
3109 {
3110   int i;
3111   struct nextfield *newobj;
3112
3113   if (**pp != '!')
3114     {
3115       return 1;
3116     }
3117   else
3118     {
3119       /* Skip the '!' baseclass information marker.  */
3120       (*pp)++;
3121     }
3122
3123   ALLOCATE_CPLUS_STRUCT_TYPE (type);
3124   {
3125     int nbits;
3126
3127     TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits, 0);
3128     if (nbits != 0)
3129       return 0;
3130   }
3131
3132 #if 0
3133   /* Some stupid compilers have trouble with the following, so break
3134      it up into simpler expressions.  */
3135   TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *)
3136     TYPE_ALLOC (type, B_BYTES (TYPE_N_BASECLASSES (type)));
3137 #else
3138   {
3139     int num_bytes = B_BYTES (TYPE_N_BASECLASSES (type));
3140     char *pointer;
3141
3142     pointer = (char *) TYPE_ALLOC (type, num_bytes);
3143     TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *) pointer;
3144   }
3145 #endif /* 0 */
3146
3147   B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), TYPE_N_BASECLASSES (type));
3148
3149   for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
3150     {
3151       newobj = XCNEW (struct nextfield);
3152       make_cleanup (xfree, newobj);
3153
3154       newobj->next = fip->list;
3155       fip->list = newobj;
3156       FIELD_BITSIZE (newobj->field) = 0;        /* This should be an unpacked
3157                                            field!  */
3158
3159       STABS_CONTINUE (pp, objfile);
3160       switch (**pp)
3161         {
3162         case '0':
3163           /* Nothing to do.  */
3164           break;
3165         case '1':
3166           SET_TYPE_FIELD_VIRTUAL (type, i);
3167           break;
3168         default:
3169           /* Unknown character.  Complain and treat it as non-virtual.  */
3170           {
3171             complaint (&symfile_complaints,
3172                        _("Unknown virtual character `%c' for baseclass"),
3173                        **pp);
3174           }
3175         }
3176       ++(*pp);
3177
3178       newobj->visibility = *(*pp)++;
3179       switch (newobj->visibility)
3180         {
3181         case VISIBILITY_PRIVATE:
3182         case VISIBILITY_PROTECTED:
3183         case VISIBILITY_PUBLIC:
3184           break;
3185         default:
3186           /* Bad visibility format.  Complain and treat it as
3187              public.  */
3188           {
3189             complaint (&symfile_complaints,
3190                        _("Unknown visibility `%c' for baseclass"),
3191                        newobj->visibility);
3192             newobj->visibility = VISIBILITY_PUBLIC;
3193           }
3194         }
3195
3196       {
3197         int nbits;
3198
3199         /* The remaining value is the bit offset of the portion of the object
3200            corresponding to this baseclass.  Always zero in the absence of
3201            multiple inheritance.  */
3202
3203         SET_FIELD_BITPOS (newobj->field, read_huge_number (pp, ',', &nbits, 0));
3204         if (nbits != 0)
3205           return 0;
3206       }
3207
3208       /* The last piece of baseclass information is the type of the
3209          base class.  Read it, and remember it's type name as this
3210          field's name.  */
3211
3212       newobj->field.type = read_type (pp, objfile);
3213       newobj->field.name = type_name_no_tag (newobj->field.type);
3214
3215       /* Skip trailing ';' and bump count of number of fields seen.  */
3216       if (**pp == ';')
3217         (*pp)++;
3218       else
3219         return 0;
3220     }
3221   return 1;
3222 }
3223
3224 /* The tail end of stabs for C++ classes that contain a virtual function
3225    pointer contains a tilde, a %, and a type number.
3226    The type number refers to the base class (possibly this class itself) which
3227    contains the vtable pointer for the current class.
3228
3229    This function is called when we have parsed all the method declarations,
3230    so we can look for the vptr base class info.  */
3231
3232 static int
3233 read_tilde_fields (struct field_info *fip, const char **pp, struct type *type,
3234                    struct objfile *objfile)
3235 {
3236   const char *p;
3237
3238   STABS_CONTINUE (pp, objfile);
3239
3240   /* If we are positioned at a ';', then skip it.  */
3241   if (**pp == ';')
3242     {
3243       (*pp)++;
3244     }
3245
3246   if (**pp == '~')
3247     {
3248       (*pp)++;
3249
3250       if (**pp == '=' || **pp == '+' || **pp == '-')
3251         {
3252           /* Obsolete flags that used to indicate the presence
3253              of constructors and/or destructors.  */
3254           (*pp)++;
3255         }
3256
3257       /* Read either a '%' or the final ';'.  */
3258       if (*(*pp)++ == '%')
3259         {
3260           /* The next number is the type number of the base class
3261              (possibly our own class) which supplies the vtable for
3262              this class.  Parse it out, and search that class to find
3263              its vtable pointer, and install those into TYPE_VPTR_BASETYPE
3264              and TYPE_VPTR_FIELDNO.  */
3265
3266           struct type *t;
3267           int i;
3268
3269           t = read_type (pp, objfile);
3270           p = (*pp)++;
3271           while (*p != '\0' && *p != ';')
3272             {
3273               p++;
3274             }
3275           if (*p == '\0')
3276             {
3277               /* Premature end of symbol.  */
3278               return 0;
3279             }
3280
3281           set_type_vptr_basetype (type, t);
3282           if (type == t)        /* Our own class provides vtbl ptr.  */
3283             {
3284               for (i = TYPE_NFIELDS (t) - 1;
3285                    i >= TYPE_N_BASECLASSES (t);
3286                    --i)
3287                 {
3288                   const char *name = TYPE_FIELD_NAME (t, i);
3289
3290                   if (!strncmp (name, vptr_name, sizeof (vptr_name) - 2)
3291                       && is_cplus_marker (name[sizeof (vptr_name) - 2]))
3292                     {
3293                       set_type_vptr_fieldno (type, i);
3294                       goto gotit;
3295                     }
3296                 }
3297               /* Virtual function table field not found.  */
3298               complaint (&symfile_complaints,
3299                          _("virtual function table pointer "
3300                            "not found when defining class `%s'"),
3301                          TYPE_NAME (type));
3302               return 0;
3303             }
3304           else
3305             {
3306               set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
3307             }
3308
3309         gotit:
3310           *pp = p + 1;
3311         }
3312     }
3313   return 1;
3314 }
3315
3316 static int
3317 attach_fn_fields_to_type (struct field_info *fip, struct type *type)
3318 {
3319   int n;
3320
3321   for (n = TYPE_NFN_FIELDS (type);
3322        fip->fnlist != NULL;
3323        fip->fnlist = fip->fnlist->next)
3324     {
3325       --n;                      /* Circumvent Sun3 compiler bug.  */
3326       TYPE_FN_FIELDLISTS (type)[n] = fip->fnlist->fn_fieldlist;
3327     }
3328   return 1;
3329 }
3330
3331 /* Create the vector of fields, and record how big it is.
3332    We need this info to record proper virtual function table information
3333    for this class's virtual functions.  */
3334
3335 static int
3336 attach_fields_to_type (struct field_info *fip, struct type *type,
3337                        struct objfile *objfile)
3338 {
3339   int nfields = 0;
3340   int non_public_fields = 0;
3341   struct nextfield *scan;
3342
3343   /* Count up the number of fields that we have, as well as taking note of
3344      whether or not there are any non-public fields, which requires us to
3345      allocate and build the private_field_bits and protected_field_bits
3346      bitfields.  */
3347
3348   for (scan = fip->list; scan != NULL; scan = scan->next)
3349     {
3350       nfields++;
3351       if (scan->visibility != VISIBILITY_PUBLIC)
3352         {
3353           non_public_fields++;
3354         }
3355     }
3356
3357   /* Now we know how many fields there are, and whether or not there are any
3358      non-public fields.  Record the field count, allocate space for the
3359      array of fields, and create blank visibility bitfields if necessary.  */
3360
3361   TYPE_NFIELDS (type) = nfields;
3362   TYPE_FIELDS (type) = (struct field *)
3363     TYPE_ALLOC (type, sizeof (struct field) * nfields);
3364   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
3365
3366   if (non_public_fields)
3367     {
3368       ALLOCATE_CPLUS_STRUCT_TYPE (type);
3369
3370       TYPE_FIELD_PRIVATE_BITS (type) =
3371         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3372       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
3373
3374       TYPE_FIELD_PROTECTED_BITS (type) =
3375         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3376       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
3377
3378       TYPE_FIELD_IGNORE_BITS (type) =
3379         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
3380       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
3381     }
3382
3383   /* Copy the saved-up fields into the field vector.  Start from the
3384      head of the list, adding to the tail of the field array, so that
3385      they end up in the same order in the array in which they were
3386      added to the list.  */
3387
3388   while (nfields-- > 0)
3389     {
3390       TYPE_FIELD (type, nfields) = fip->list->field;
3391       switch (fip->list->visibility)
3392         {
3393         case VISIBILITY_PRIVATE:
3394           SET_TYPE_FIELD_PRIVATE (type, nfields);
3395           break;
3396
3397         case VISIBILITY_PROTECTED:
3398           SET_TYPE_FIELD_PROTECTED (type, nfields);
3399           break;
3400
3401         case VISIBILITY_IGNORE:
3402           SET_TYPE_FIELD_IGNORE (type, nfields);
3403           break;
3404
3405         case VISIBILITY_PUBLIC:
3406           break;
3407
3408         default:
3409           /* Unknown visibility.  Complain and treat it as public.  */
3410           {
3411             complaint (&symfile_complaints,
3412                        _("Unknown visibility `%c' for field"),
3413                        fip->list->visibility);
3414           }
3415           break;
3416         }
3417       fip->list = fip->list->next;
3418     }
3419   return 1;
3420 }
3421
3422
3423 /* Complain that the compiler has emitted more than one definition for the
3424    structure type TYPE.  */
3425 static void 
3426 complain_about_struct_wipeout (struct type *type)
3427 {
3428   const char *name = "";
3429   const char *kind = "";
3430
3431   if (TYPE_TAG_NAME (type))
3432     {
3433       name = TYPE_TAG_NAME (type);
3434       switch (TYPE_CODE (type))
3435         {
3436         case TYPE_CODE_STRUCT: kind = "struct "; break;
3437         case TYPE_CODE_UNION:  kind = "union ";  break;
3438         case TYPE_CODE_ENUM:   kind = "enum ";   break;
3439         default: kind = "";
3440         }
3441     }
3442   else if (TYPE_NAME (type))
3443     {
3444       name = TYPE_NAME (type);
3445       kind = "";
3446     }
3447   else
3448     {
3449       name = "<unknown>";
3450       kind = "";
3451     }
3452
3453   complaint (&symfile_complaints,
3454              _("struct/union type gets multiply defined: %s%s"), kind, name);
3455 }
3456
3457 /* Set the length for all variants of a same main_type, which are
3458    connected in the closed chain.
3459    
3460    This is something that needs to be done when a type is defined *after*
3461    some cross references to this type have already been read.  Consider
3462    for instance the following scenario where we have the following two
3463    stabs entries:
3464
3465         .stabs  "t:p(0,21)=*(0,22)=k(0,23)=xsdummy:",160,0,28,-24
3466         .stabs  "dummy:T(0,23)=s16x:(0,1),0,3[...]"
3467
3468    A stubbed version of type dummy is created while processing the first
3469    stabs entry.  The length of that type is initially set to zero, since
3470    it is unknown at this point.  Also, a "constant" variation of type
3471    "dummy" is created as well (this is the "(0,22)=k(0,23)" section of
3472    the stabs line).
3473
3474    The second stabs entry allows us to replace the stubbed definition
3475    with the real definition.  However, we still need to adjust the length
3476    of the "constant" variation of that type, as its length was left
3477    untouched during the main type replacement...  */
3478
3479 static void
3480 set_length_in_type_chain (struct type *type)
3481 {
3482   struct type *ntype = TYPE_CHAIN (type);
3483
3484   while (ntype != type)
3485     {
3486       if (TYPE_LENGTH(ntype) == 0)
3487         TYPE_LENGTH (ntype) = TYPE_LENGTH (type);
3488       else
3489         complain_about_struct_wipeout (ntype);
3490       ntype = TYPE_CHAIN (ntype);
3491     }
3492 }
3493
3494 /* Read the description of a structure (or union type) and return an object
3495    describing the type.
3496
3497    PP points to a character pointer that points to the next unconsumed token
3498    in the stabs string.  For example, given stabs "A:T4=s4a:1,0,32;;",
3499    *PP will point to "4a:1,0,32;;".
3500
3501    TYPE points to an incomplete type that needs to be filled in.
3502
3503    OBJFILE points to the current objfile from which the stabs information is
3504    being read.  (Note that it is redundant in that TYPE also contains a pointer
3505    to this same objfile, so it might be a good idea to eliminate it.  FIXME). 
3506  */
3507
3508 static struct type *
3509 read_struct_type (const char **pp, struct type *type, enum type_code type_code,
3510                   struct objfile *objfile)
3511 {
3512   struct cleanup *back_to;
3513   struct field_info fi;
3514
3515   fi.list = NULL;
3516   fi.fnlist = NULL;
3517
3518   /* When describing struct/union/class types in stabs, G++ always drops
3519      all qualifications from the name.  So if you've got:
3520        struct A { ... struct B { ... }; ... };
3521      then G++ will emit stabs for `struct A::B' that call it simply
3522      `struct B'.  Obviously, if you've got a real top-level definition for
3523      `struct B', or other nested definitions, this is going to cause
3524      problems.
3525
3526      Obviously, GDB can't fix this by itself, but it can at least avoid
3527      scribbling on existing structure type objects when new definitions
3528      appear.  */
3529   if (! (TYPE_CODE (type) == TYPE_CODE_UNDEF
3530          || TYPE_STUB (type)))
3531     {
3532       complain_about_struct_wipeout (type);
3533
3534       /* It's probably best to return the type unchanged.  */
3535       return type;
3536     }
3537
3538   back_to = make_cleanup (null_cleanup, 0);
3539
3540   INIT_CPLUS_SPECIFIC (type);
3541   TYPE_CODE (type) = type_code;
3542   TYPE_STUB (type) = 0;
3543
3544   /* First comes the total size in bytes.  */
3545
3546   {
3547     int nbits;
3548
3549     TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits, 0);
3550     if (nbits != 0)
3551       {
3552         do_cleanups (back_to);
3553         return error_type (pp, objfile);
3554       }
3555     set_length_in_type_chain (type);
3556   }
3557
3558   /* Now read the baseclasses, if any, read the regular C struct or C++
3559      class member fields, attach the fields to the type, read the C++
3560      member functions, attach them to the type, and then read any tilde
3561      field (baseclass specifier for the class holding the main vtable).  */
3562
3563   if (!read_baseclasses (&fi, pp, type, objfile)
3564       || !read_struct_fields (&fi, pp, type, objfile)
3565       || !attach_fields_to_type (&fi, type, objfile)
3566       || !read_member_functions (&fi, pp, type, objfile)
3567       || !attach_fn_fields_to_type (&fi, type)
3568       || !read_tilde_fields (&fi, pp, type, objfile))
3569     {
3570       type = error_type (pp, objfile);
3571     }
3572
3573   do_cleanups (back_to);
3574   return (type);
3575 }
3576
3577 /* Read a definition of an array type,
3578    and create and return a suitable type object.
3579    Also creates a range type which represents the bounds of that
3580    array.  */
3581
3582 static struct type *
3583 read_array_type (const char **pp, struct type *type,
3584                  struct objfile *objfile)
3585 {
3586   struct type *index_type, *element_type, *range_type;
3587   int lower, upper;
3588   int adjustable = 0;
3589   int nbits;
3590
3591   /* Format of an array type:
3592      "ar<index type>;lower;upper;<array_contents_type>".
3593      OS9000: "arlower,upper;<array_contents_type>".
3594
3595      Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
3596      for these, produce a type like float[][].  */
3597
3598     {
3599       index_type = read_type (pp, objfile);
3600       if (**pp != ';')
3601         /* Improper format of array type decl.  */
3602         return error_type (pp, objfile);
3603       ++*pp;
3604     }
3605
3606   if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
3607     {
3608       (*pp)++;
3609       adjustable = 1;
3610     }
3611   lower = read_huge_number (pp, ';', &nbits, 0);
3612
3613   if (nbits != 0)
3614     return error_type (pp, objfile);
3615
3616   if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
3617     {
3618       (*pp)++;
3619       adjustable = 1;
3620     }
3621   upper = read_huge_number (pp, ';', &nbits, 0);
3622   if (nbits != 0)
3623     return error_type (pp, objfile);
3624
3625   element_type = read_type (pp, objfile);
3626
3627   if (adjustable)
3628     {
3629       lower = 0;
3630       upper = -1;
3631     }
3632
3633   range_type =
3634     create_static_range_type ((struct type *) NULL, index_type, lower, upper);
3635   type = create_array_type (type, element_type, range_type);
3636
3637   return type;
3638 }
3639
3640
3641 /* Read a definition of an enumeration type,
3642    and create and return a suitable type object.
3643    Also defines the symbols that represent the values of the type.  */
3644
3645 static struct type *
3646 read_enum_type (const char **pp, struct type *type,
3647                 struct objfile *objfile)
3648 {
3649   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3650   const char *p;
3651   char *name;
3652   long n;
3653   struct symbol *sym;
3654   int nsyms = 0;
3655   struct pending **symlist;
3656   struct pending *osyms, *syms;
3657   int o_nsyms;
3658   int nbits;
3659   int unsigned_enum = 1;
3660
3661 #if 0
3662   /* FIXME!  The stabs produced by Sun CC merrily define things that ought
3663      to be file-scope, between N_FN entries, using N_LSYM.  What's a mother
3664      to do?  For now, force all enum values to file scope.  */
3665   if (within_function)
3666     symlist = &local_symbols;
3667   else
3668 #endif
3669     symlist = &file_symbols;
3670   osyms = *symlist;
3671   o_nsyms = osyms ? osyms->nsyms : 0;
3672
3673   /* The aix4 compiler emits an extra field before the enum members;
3674      my guess is it's a type of some sort.  Just ignore it.  */
3675   if (**pp == '-')
3676     {
3677       /* Skip over the type.  */
3678       while (**pp != ':')
3679         (*pp)++;
3680
3681       /* Skip over the colon.  */
3682       (*pp)++;
3683     }
3684
3685   /* Read the value-names and their values.
3686      The input syntax is NAME:VALUE,NAME:VALUE, and so on.
3687      A semicolon or comma instead of a NAME means the end.  */
3688   while (**pp && **pp != ';' && **pp != ',')
3689     {
3690       STABS_CONTINUE (pp, objfile);
3691       p = *pp;
3692       while (*p != ':')
3693         p++;
3694       name = (char *) obstack_copy0 (&objfile->objfile_obstack, *pp, p - *pp);
3695       *pp = p + 1;
3696       n = read_huge_number (pp, ',', &nbits, 0);
3697       if (nbits != 0)
3698         return error_type (pp, objfile);
3699
3700       sym = allocate_symbol (objfile);
3701       SYMBOL_SET_LINKAGE_NAME (sym, name);
3702       SYMBOL_SET_LANGUAGE (sym, current_subfile->language,
3703                            &objfile->objfile_obstack);
3704       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
3705       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
3706       SYMBOL_VALUE (sym) = n;
3707       if (n < 0)
3708         unsigned_enum = 0;
3709       add_symbol_to_list (sym, symlist);
3710       nsyms++;
3711     }
3712
3713   if (**pp == ';')
3714     (*pp)++;                    /* Skip the semicolon.  */
3715
3716   /* Now fill in the fields of the type-structure.  */
3717
3718   TYPE_LENGTH (type) = gdbarch_int_bit (gdbarch) / HOST_CHAR_BIT;
3719   set_length_in_type_chain (type);
3720   TYPE_CODE (type) = TYPE_CODE_ENUM;
3721   TYPE_STUB (type) = 0;
3722   if (unsigned_enum)
3723     TYPE_UNSIGNED (type) = 1;
3724   TYPE_NFIELDS (type) = nsyms;
3725   TYPE_FIELDS (type) = (struct field *)
3726     TYPE_ALLOC (type, sizeof (struct field) * nsyms);
3727   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
3728
3729   /* Find the symbols for the values and put them into the type.
3730      The symbols can be found in the symlist that we put them on
3731      to cause them to be defined.  osyms contains the old value
3732      of that symlist; everything up to there was defined by us.  */
3733   /* Note that we preserve the order of the enum constants, so
3734      that in something like "enum {FOO, LAST_THING=FOO}" we print
3735      FOO, not LAST_THING.  */
3736
3737   for (syms = *symlist, n = nsyms - 1; syms; syms = syms->next)
3738     {
3739       int last = syms == osyms ? o_nsyms : 0;
3740       int j = syms->nsyms;
3741
3742       for (; --j >= last; --n)
3743         {
3744           struct symbol *xsym = syms->symbol[j];
3745
3746           SYMBOL_TYPE (xsym) = type;
3747           TYPE_FIELD_NAME (type, n) = SYMBOL_LINKAGE_NAME (xsym);
3748           SET_FIELD_ENUMVAL (TYPE_FIELD (type, n), SYMBOL_VALUE (xsym));
3749           TYPE_FIELD_BITSIZE (type, n) = 0;
3750         }
3751       if (syms == osyms)
3752         break;
3753     }
3754
3755   return type;
3756 }
3757
3758 /* Sun's ACC uses a somewhat saner method for specifying the builtin
3759    typedefs in every file (for int, long, etc):
3760
3761    type = b <signed> <width> <format type>; <offset>; <nbits>
3762    signed = u or s.
3763    optional format type = c or b for char or boolean.
3764    offset = offset from high order bit to start bit of type.
3765    width is # bytes in object of this type, nbits is # bits in type.
3766
3767    The width/offset stuff appears to be for small objects stored in
3768    larger ones (e.g. `shorts' in `int' registers).  We ignore it for now,
3769    FIXME.  */
3770
3771 static struct type *
3772 read_sun_builtin_type (const char **pp, int typenums[2], struct objfile *objfile)
3773 {
3774   int type_bits;
3775   int nbits;
3776   int unsigned_type;
3777   int boolean_type = 0;
3778
3779   switch (**pp)
3780     {
3781     case 's':
3782       unsigned_type = 0;
3783       break;
3784     case 'u':
3785       unsigned_type = 1;
3786       break;
3787     default:
3788       return error_type (pp, objfile);
3789     }
3790   (*pp)++;
3791
3792   /* For some odd reason, all forms of char put a c here.  This is strange
3793      because no other type has this honor.  We can safely ignore this because
3794      we actually determine 'char'acterness by the number of bits specified in
3795      the descriptor.
3796      Boolean forms, e.g Fortran logical*X, put a b here.  */
3797
3798   if (**pp == 'c')
3799     (*pp)++;
3800   else if (**pp == 'b')
3801     {
3802       boolean_type = 1;
3803       (*pp)++;
3804     }
3805
3806   /* The first number appears to be the number of bytes occupied
3807      by this type, except that unsigned short is 4 instead of 2.
3808      Since this information is redundant with the third number,
3809      we will ignore it.  */
3810   read_huge_number (pp, ';', &nbits, 0);
3811   if (nbits != 0)
3812     return error_type (pp, objfile);
3813
3814   /* The second number is always 0, so ignore it too.  */
3815   read_huge_number (pp, ';', &nbits, 0);
3816   if (nbits != 0)
3817     return error_type (pp, objfile);
3818
3819   /* The third number is the number of bits for this type.  */
3820   type_bits = read_huge_number (pp, 0, &nbits, 0);
3821   if (nbits != 0)
3822     return error_type (pp, objfile);
3823   /* The type *should* end with a semicolon.  If it are embedded
3824      in a larger type the semicolon may be the only way to know where
3825      the type ends.  If this type is at the end of the stabstring we
3826      can deal with the omitted semicolon (but we don't have to like
3827      it).  Don't bother to complain(), Sun's compiler omits the semicolon
3828      for "void".  */
3829   if (**pp == ';')
3830     ++(*pp);
3831
3832   if (type_bits == 0)
3833     {
3834       struct type *type = init_type (objfile, TYPE_CODE_VOID,
3835                                      TARGET_CHAR_BIT, NULL);
3836       if (unsigned_type)
3837         TYPE_UNSIGNED (type) = 1;
3838       return type;
3839     }
3840
3841   if (boolean_type)
3842     return init_boolean_type (objfile, type_bits, unsigned_type, NULL);
3843   else
3844     return init_integer_type (objfile, type_bits, unsigned_type, NULL);
3845 }
3846
3847 static struct type *
3848 read_sun_floating_type (const char **pp, int typenums[2],
3849                         struct objfile *objfile)
3850 {
3851   int nbits;
3852   int details;
3853   int nbytes;
3854   struct type *rettype;
3855
3856   /* The first number has more details about the type, for example
3857      FN_COMPLEX.  */
3858   details = read_huge_number (pp, ';', &nbits, 0);
3859   if (nbits != 0)
3860     return error_type (pp, objfile);
3861
3862   /* The second number is the number of bytes occupied by this type.  */
3863   nbytes = read_huge_number (pp, ';', &nbits, 0);
3864   if (nbits != 0)
3865     return error_type (pp, objfile);
3866
3867   nbits = nbytes * TARGET_CHAR_BIT;
3868
3869   if (details == NF_COMPLEX || details == NF_COMPLEX16
3870       || details == NF_COMPLEX32)
3871     {
3872       rettype = dbx_init_float_type (objfile, nbits / 2);
3873       return init_complex_type (objfile, NULL, rettype);
3874     }
3875
3876   return dbx_init_float_type (objfile, nbits);
3877 }
3878
3879 /* Read a number from the string pointed to by *PP.
3880    The value of *PP is advanced over the number.
3881    If END is nonzero, the character that ends the
3882    number must match END, or an error happens;
3883    and that character is skipped if it does match.
3884    If END is zero, *PP is left pointing to that character.
3885
3886    If TWOS_COMPLEMENT_BITS is set to a strictly positive value and if
3887    the number is represented in an octal representation, assume that
3888    it is represented in a 2's complement representation with a size of
3889    TWOS_COMPLEMENT_BITS.
3890
3891    If the number fits in a long, set *BITS to 0 and return the value.
3892    If not, set *BITS to be the number of bits in the number and return 0.
3893
3894    If encounter garbage, set *BITS to -1 and return 0.  */
3895
3896 static long
3897 read_huge_number (const char **pp, int end, int *bits,
3898                   int twos_complement_bits)
3899 {
3900   const char *p = *pp;
3901   int sign = 1;
3902   int sign_bit = 0;
3903   long n = 0;
3904   int radix = 10;
3905   char overflow = 0;
3906   int nbits = 0;
3907   int c;
3908   long upper_limit;
3909   int twos_complement_representation = 0;
3910
3911   if (*p == '-')
3912     {
3913       sign = -1;
3914       p++;
3915     }
3916
3917   /* Leading zero means octal.  GCC uses this to output values larger
3918      than an int (because that would be hard in decimal).  */
3919   if (*p == '0')
3920     {
3921       radix = 8;
3922       p++;
3923     }
3924
3925   /* Skip extra zeros.  */
3926   while (*p == '0')
3927     p++;
3928
3929   if (sign > 0 && radix == 8 && twos_complement_bits > 0)
3930     {
3931       /* Octal, possibly signed.  Check if we have enough chars for a
3932          negative number.  */
3933
3934       size_t len;
3935       const char *p1 = p;
3936
3937       while ((c = *p1) >= '0' && c < '8')
3938         p1++;
3939
3940       len = p1 - p;
3941       if (len > twos_complement_bits / 3
3942           || (twos_complement_bits % 3 == 0
3943               && len == twos_complement_bits / 3))
3944         {
3945           /* Ok, we have enough characters for a signed value, check
3946              for signness by testing if the sign bit is set.  */
3947           sign_bit = (twos_complement_bits % 3 + 2) % 3;
3948           c = *p - '0';
3949           if (c & (1 << sign_bit))
3950             {
3951               /* Definitely signed.  */
3952               twos_complement_representation = 1;
3953               sign = -1;
3954             }
3955         }
3956     }
3957
3958   upper_limit = LONG_MAX / radix;
3959
3960   while ((c = *p++) >= '0' && c < ('0' + radix))
3961     {
3962       if (n <= upper_limit)
3963         {
3964           if (twos_complement_representation)
3965             {
3966               /* Octal, signed, twos complement representation.  In
3967                  this case, n is the corresponding absolute value.  */
3968               if (n == 0)
3969                 {
3970                   long sn = c - '0' - ((2 * (c - '0')) | (2 << sign_bit));
3971
3972                   n = -sn;
3973                 }
3974               else
3975                 {
3976                   n *= radix;
3977                   n -= c - '0';
3978                 }
3979             }
3980           else
3981             {
3982               /* unsigned representation */
3983               n *= radix;
3984               n += c - '0';             /* FIXME this overflows anyway.  */
3985             }
3986         }
3987       else
3988         overflow = 1;
3989
3990       /* This depends on large values being output in octal, which is
3991          what GCC does.  */
3992       if (radix == 8)
3993         {
3994           if (nbits == 0)
3995             {
3996               if (c == '0')
3997                 /* Ignore leading zeroes.  */
3998                 ;
3999               else if (c == '1')
4000                 nbits = 1;
4001               else if (c == '2' || c == '3')
4002                 nbits = 2;
4003               else
4004                 nbits = 3;
4005             }
4006           else
4007             nbits += 3;
4008         }
4009     }
4010   if (end)
4011     {
4012       if (c && c != end)
4013         {
4014           if (bits != NULL)
4015             *bits = -1;
4016           return 0;
4017         }
4018     }
4019   else
4020     --p;
4021
4022   if (radix == 8 && twos_complement_bits > 0 && nbits > twos_complement_bits)
4023     {
4024       /* We were supposed to parse a number with maximum
4025          TWOS_COMPLEMENT_BITS bits, but something went wrong.  */
4026       if (bits != NULL)
4027         *bits = -1;
4028       return 0;
4029     }
4030
4031   *pp = p;
4032   if (overflow)
4033     {
4034       if (nbits == 0)
4035         {
4036           /* Large decimal constants are an error (because it is hard to
4037              count how many bits are in them).  */
4038           if (bits != NULL)
4039             *bits = -1;
4040           return 0;
4041         }
4042
4043       /* -0x7f is the same as 0x80.  So deal with it by adding one to
4044          the number of bits.  Two's complement represention octals
4045          can't have a '-' in front.  */
4046       if (sign == -1 && !twos_complement_representation)
4047         ++nbits;
4048       if (bits)
4049         *bits = nbits;
4050     }
4051   else
4052     {
4053       if (bits)
4054         *bits = 0;
4055       return n * sign;
4056     }
4057   /* It's *BITS which has the interesting information.  */
4058   return 0;
4059 }
4060
4061 static struct type *
4062 read_range_type (const char **pp, int typenums[2], int type_size,
4063                  struct objfile *objfile)
4064 {
4065   struct gdbarch *gdbarch = get_objfile_arch (objfile);
4066   const char *orig_pp = *pp;
4067   int rangenums[2];
4068   long n2, n3;
4069   int n2bits, n3bits;
4070   int self_subrange;
4071   struct type *result_type;
4072   struct type *index_type = NULL;
4073
4074   /* First comes a type we are a subrange of.
4075      In C it is usually 0, 1 or the type being defined.  */
4076   if (read_type_number (pp, rangenums) != 0)
4077     return error_type (pp, objfile);
4078   self_subrange = (rangenums[0] == typenums[0] &&
4079                    rangenums[1] == typenums[1]);
4080
4081   if (**pp == '=')
4082     {
4083       *pp = orig_pp;
4084       index_type = read_type (pp, objfile);
4085     }
4086
4087   /* A semicolon should now follow; skip it.  */
4088   if (**pp == ';')
4089     (*pp)++;
4090
4091   /* The remaining two operands are usually lower and upper bounds
4092      of the range.  But in some special cases they mean something else.  */
4093   n2 = read_huge_number (pp, ';', &n2bits, type_size);
4094   n3 = read_huge_number (pp, ';', &n3bits, type_size);
4095
4096   if (n2bits == -1 || n3bits == -1)
4097     return error_type (pp, objfile);
4098
4099   if (index_type)
4100     goto handle_true_range;
4101
4102   /* If limits are huge, must be large integral type.  */
4103   if (n2bits != 0 || n3bits != 0)
4104     {
4105       char got_signed = 0;
4106       char got_unsigned = 0;
4107       /* Number of bits in the type.  */
4108       int nbits = 0;
4109
4110       /* If a type size attribute has been specified, the bounds of
4111          the range should fit in this size.  If the lower bounds needs
4112          more bits than the upper bound, then the type is signed.  */
4113       if (n2bits <= type_size && n3bits <= type_size)
4114         {
4115           if (n2bits == type_size && n2bits > n3bits)
4116             got_signed = 1;
4117           else
4118             got_unsigned = 1;
4119           nbits = type_size;
4120         }
4121       /* Range from 0 to <large number> is an unsigned large integral type.  */
4122       else if ((n2bits == 0 && n2 == 0) && n3bits != 0)
4123         {
4124           got_unsigned = 1;
4125           nbits = n3bits;
4126         }
4127       /* Range from <large number> to <large number>-1 is a large signed
4128          integral type.  Take care of the case where <large number> doesn't
4129          fit in a long but <large number>-1 does.  */
4130       else if ((n2bits != 0 && n3bits != 0 && n2bits == n3bits + 1)
4131                || (n2bits != 0 && n3bits == 0
4132                    && (n2bits == sizeof (long) * HOST_CHAR_BIT)
4133                    && n3 == LONG_MAX))
4134         {
4135           got_signed = 1;
4136           nbits = n2bits;
4137         }
4138
4139       if (got_signed || got_unsigned)
4140         return init_integer_type (objfile, nbits, got_unsigned, NULL);
4141       else
4142         return error_type (pp, objfile);
4143     }
4144
4145   /* A type defined as a subrange of itself, with bounds both 0, is void.  */
4146   if (self_subrange && n2 == 0 && n3 == 0)
4147     return init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
4148
4149   /* If n3 is zero and n2 is positive, we want a floating type, and n2
4150      is the width in bytes.
4151
4152      Fortran programs appear to use this for complex types also.  To
4153      distinguish between floats and complex, g77 (and others?)  seem
4154      to use self-subranges for the complexes, and subranges of int for
4155      the floats.
4156
4157      Also note that for complexes, g77 sets n2 to the size of one of
4158      the member floats, not the whole complex beast.  My guess is that
4159      this was to work well with pre-COMPLEX versions of gdb.  */
4160
4161   if (n3 == 0 && n2 > 0)
4162     {
4163       struct type *float_type
4164         = dbx_init_float_type (objfile, n2 * TARGET_CHAR_BIT);
4165
4166       if (self_subrange)
4167         return init_complex_type (objfile, NULL, float_type);
4168       else
4169         return float_type;
4170     }
4171
4172   /* If the upper bound is -1, it must really be an unsigned integral.  */
4173
4174   else if (n2 == 0 && n3 == -1)
4175     {
4176       int bits = type_size;
4177
4178       if (bits <= 0)
4179         {
4180           /* We don't know its size.  It is unsigned int or unsigned
4181              long.  GCC 2.3.3 uses this for long long too, but that is
4182              just a GDB 3.5 compatibility hack.  */
4183           bits = gdbarch_int_bit (gdbarch);
4184         }
4185
4186       return init_integer_type (objfile, bits, 1, NULL);
4187     }
4188
4189   /* Special case: char is defined (Who knows why) as a subrange of
4190      itself with range 0-127.  */
4191   else if (self_subrange && n2 == 0 && n3 == 127)
4192     {
4193       struct type *type = init_integer_type (objfile, TARGET_CHAR_BIT,
4194                                              0, NULL);
4195       TYPE_NOSIGN (type) = 1;
4196       return type;
4197     }
4198   /* We used to do this only for subrange of self or subrange of int.  */
4199   else if (n2 == 0)
4200     {
4201       /* -1 is used for the upper bound of (4 byte) "unsigned int" and
4202          "unsigned long", and we already checked for that,
4203          so don't need to test for it here.  */
4204
4205       if (n3 < 0)
4206         /* n3 actually gives the size.  */
4207         return init_integer_type (objfile, -n3 * TARGET_CHAR_BIT, 1, NULL);
4208
4209       /* Is n3 == 2**(8n)-1 for some integer n?  Then it's an
4210          unsigned n-byte integer.  But do require n to be a power of
4211          two; we don't want 3- and 5-byte integers flying around.  */
4212       {
4213         int bytes;
4214         unsigned long bits;
4215
4216         bits = n3;
4217         for (bytes = 0; (bits & 0xff) == 0xff; bytes++)
4218           bits >>= 8;
4219         if (bits == 0
4220             && ((bytes - 1) & bytes) == 0) /* "bytes is a power of two" */
4221           return init_integer_type (objfile, bytes * TARGET_CHAR_BIT, 1, NULL);
4222       }
4223     }
4224   /* I think this is for Convex "long long".  Since I don't know whether
4225      Convex sets self_subrange, I also accept that particular size regardless
4226      of self_subrange.  */
4227   else if (n3 == 0 && n2 < 0
4228            && (self_subrange
4229                || n2 == -gdbarch_long_long_bit
4230                           (gdbarch) / TARGET_CHAR_BIT))
4231     return init_integer_type (objfile, -n2 * TARGET_CHAR_BIT, 0, NULL);
4232   else if (n2 == -n3 - 1)
4233     {
4234       if (n3 == 0x7f)
4235         return init_integer_type (objfile, 8, 0, NULL);
4236       if (n3 == 0x7fff)
4237         return init_integer_type (objfile, 16, 0, NULL);
4238       if (n3 == 0x7fffffff)
4239         return init_integer_type (objfile, 32, 0, NULL);
4240     }
4241
4242   /* We have a real range type on our hands.  Allocate space and
4243      return a real pointer.  */
4244 handle_true_range:
4245
4246   if (self_subrange)
4247     index_type = objfile_type (objfile)->builtin_int;
4248   else
4249     index_type = *dbx_lookup_type (rangenums, objfile);
4250   if (index_type == NULL)
4251     {
4252       /* Does this actually ever happen?  Is that why we are worrying
4253          about dealing with it rather than just calling error_type?  */
4254
4255       complaint (&symfile_complaints,
4256                  _("base type %d of range type is not defined"), rangenums[1]);
4257
4258       index_type = objfile_type (objfile)->builtin_int;
4259     }
4260
4261   result_type
4262     = create_static_range_type ((struct type *) NULL, index_type, n2, n3);
4263   return (result_type);
4264 }
4265
4266 /* Read in an argument list.  This is a list of types, separated by commas
4267    and terminated with END.  Return the list of types read in, or NULL
4268    if there is an error.  */
4269
4270 static struct field *
4271 read_args (const char **pp, int end, struct objfile *objfile, int *nargsp,
4272            int *varargsp)
4273 {
4274   /* FIXME!  Remove this arbitrary limit!  */
4275   struct type *types[1024];     /* Allow for fns of 1023 parameters.  */
4276   int n = 0, i;
4277   struct field *rval;
4278
4279   while (**pp != end)
4280     {
4281       if (**pp != ',')
4282         /* Invalid argument list: no ','.  */
4283         return NULL;
4284       (*pp)++;
4285       STABS_CONTINUE (pp, objfile);
4286       types[n++] = read_type (pp, objfile);
4287     }
4288   (*pp)++;                      /* get past `end' (the ':' character).  */
4289
4290   if (n == 0)
4291     {
4292       /* We should read at least the THIS parameter here.  Some broken stabs
4293          output contained `(0,41),(0,42)=@s8;-16;,(0,43),(0,1);' where should
4294          have been present ";-16,(0,43)" reference instead.  This way the
4295          excessive ";" marker prematurely stops the parameters parsing.  */
4296
4297       complaint (&symfile_complaints, _("Invalid (empty) method arguments"));
4298       *varargsp = 0;
4299     }
4300   else if (TYPE_CODE (types[n - 1]) != TYPE_CODE_VOID)
4301     *varargsp = 1;
4302   else
4303     {
4304       n--;
4305       *varargsp = 0;
4306     }
4307
4308   rval = XCNEWVEC (struct field, n);
4309   for (i = 0; i < n; i++)
4310     rval[i].type = types[i];
4311   *nargsp = n;
4312   return rval;
4313 }
4314 \f
4315 /* Common block handling.  */
4316
4317 /* List of symbols declared since the last BCOMM.  This list is a tail
4318    of local_symbols.  When ECOMM is seen, the symbols on the list
4319    are noted so their proper addresses can be filled in later,
4320    using the common block base address gotten from the assembler
4321    stabs.  */
4322
4323 static struct pending *common_block;
4324 static int common_block_i;
4325
4326 /* Name of the current common block.  We get it from the BCOMM instead of the
4327    ECOMM to match IBM documentation (even though IBM puts the name both places
4328    like everyone else).  */
4329 static char *common_block_name;
4330
4331 /* Process a N_BCOMM symbol.  The storage for NAME is not guaranteed
4332    to remain after this function returns.  */
4333
4334 void
4335 common_block_start (const char *name, struct objfile *objfile)
4336 {
4337   if (common_block_name != NULL)
4338     {
4339       complaint (&symfile_complaints,
4340                  _("Invalid symbol data: common block within common block"));
4341     }
4342   common_block = local_symbols;
4343   common_block_i = local_symbols ? local_symbols->nsyms : 0;
4344   common_block_name = (char *) obstack_copy0 (&objfile->objfile_obstack, name,
4345                                               strlen (name));
4346 }
4347
4348 /* Process a N_ECOMM symbol.  */
4349
4350 void
4351 common_block_end (struct objfile *objfile)
4352 {
4353   /* Symbols declared since the BCOMM are to have the common block
4354      start address added in when we know it.  common_block and
4355      common_block_i point to the first symbol after the BCOMM in
4356      the local_symbols list; copy the list and hang it off the
4357      symbol for the common block name for later fixup.  */
4358   int i;
4359   struct symbol *sym;
4360   struct pending *newobj = 0;
4361   struct pending *next;
4362   int j;
4363
4364   if (common_block_name == NULL)
4365     {
4366       complaint (&symfile_complaints, _("ECOMM symbol unmatched by BCOMM"));
4367       return;
4368     }
4369
4370   sym = allocate_symbol (objfile);
4371   /* Note: common_block_name already saved on objfile_obstack.  */
4372   SYMBOL_SET_LINKAGE_NAME (sym, common_block_name);
4373   SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
4374
4375   /* Now we copy all the symbols which have been defined since the BCOMM.  */
4376
4377   /* Copy all the struct pendings before common_block.  */
4378   for (next = local_symbols;
4379        next != NULL && next != common_block;
4380        next = next->next)
4381     {
4382       for (j = 0; j < next->nsyms; j++)
4383         add_symbol_to_list (next->symbol[j], &newobj);
4384     }
4385
4386   /* Copy however much of COMMON_BLOCK we need.  If COMMON_BLOCK is
4387      NULL, it means copy all the local symbols (which we already did
4388      above).  */
4389
4390   if (common_block != NULL)
4391     for (j = common_block_i; j < common_block->nsyms; j++)
4392       add_symbol_to_list (common_block->symbol[j], &newobj);
4393
4394   SYMBOL_TYPE (sym) = (struct type *) newobj;
4395
4396   /* Should we be putting local_symbols back to what it was?
4397      Does it matter?  */
4398
4399   i = hashname (SYMBOL_LINKAGE_NAME (sym));
4400   SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
4401   global_sym_chain[i] = sym;
4402   common_block_name = NULL;
4403 }
4404
4405 /* Add a common block's start address to the offset of each symbol
4406    declared to be in it (by being between a BCOMM/ECOMM pair that uses
4407    the common block name).  */
4408
4409 static void
4410 fix_common_block (struct symbol *sym, CORE_ADDR valu)
4411 {
4412   struct pending *next = (struct pending *) SYMBOL_TYPE (sym);
4413
4414   for (; next; next = next->next)
4415     {
4416       int j;
4417
4418       for (j = next->nsyms - 1; j >= 0; j--)
4419         SYMBOL_VALUE_ADDRESS (next->symbol[j]) += valu;
4420     }
4421 }
4422 \f
4423
4424
4425 /* Add {TYPE, TYPENUMS} to the NONAME_UNDEFS vector.
4426    See add_undefined_type for more details.  */
4427
4428 static void
4429 add_undefined_type_noname (struct type *type, int typenums[2])
4430 {
4431   struct nat nat;
4432
4433   nat.typenums[0] = typenums [0];
4434   nat.typenums[1] = typenums [1];
4435   nat.type = type;
4436
4437   if (noname_undefs_length == noname_undefs_allocated)
4438     {
4439       noname_undefs_allocated *= 2;
4440       noname_undefs = (struct nat *)
4441         xrealloc ((char *) noname_undefs,
4442                   noname_undefs_allocated * sizeof (struct nat));
4443     }
4444   noname_undefs[noname_undefs_length++] = nat;
4445 }
4446
4447 /* Add TYPE to the UNDEF_TYPES vector.
4448    See add_undefined_type for more details.  */
4449
4450 static void
4451 add_undefined_type_1 (struct type *type)
4452 {
4453   if (undef_types_length == undef_types_allocated)
4454     {
4455       undef_types_allocated *= 2;
4456       undef_types = (struct type **)
4457         xrealloc ((char *) undef_types,
4458                   undef_types_allocated * sizeof (struct type *));
4459     }
4460   undef_types[undef_types_length++] = type;
4461 }
4462
4463 /* What about types defined as forward references inside of a small lexical
4464    scope?  */
4465 /* Add a type to the list of undefined types to be checked through
4466    once this file has been read in.
4467    
4468    In practice, we actually maintain two such lists: The first list
4469    (UNDEF_TYPES) is used for types whose name has been provided, and
4470    concerns forward references (eg 'xs' or 'xu' forward references);
4471    the second list (NONAME_UNDEFS) is used for types whose name is
4472    unknown at creation time, because they were referenced through
4473    their type number before the actual type was declared.
4474    This function actually adds the given type to the proper list.  */
4475
4476 static void
4477 add_undefined_type (struct type *type, int typenums[2])
4478 {
4479   if (TYPE_TAG_NAME (type) == NULL)
4480     add_undefined_type_noname (type, typenums);
4481   else
4482     add_undefined_type_1 (type);
4483 }
4484
4485 /* Try to fix all undefined types pushed on the UNDEF_TYPES vector.  */
4486
4487 static void
4488 cleanup_undefined_types_noname (struct objfile *objfile)
4489 {
4490   int i;
4491
4492   for (i = 0; i < noname_undefs_length; i++)
4493     {
4494       struct nat nat = noname_undefs[i];
4495       struct type **type;
4496
4497       type = dbx_lookup_type (nat.typenums, objfile);
4498       if (nat.type != *type && TYPE_CODE (*type) != TYPE_CODE_UNDEF)
4499         {
4500           /* The instance flags of the undefined type are still unset,
4501              and needs to be copied over from the reference type.
4502              Since replace_type expects them to be identical, we need
4503              to set these flags manually before hand.  */
4504           TYPE_INSTANCE_FLAGS (nat.type) = TYPE_INSTANCE_FLAGS (*type);
4505           replace_type (nat.type, *type);
4506         }
4507     }
4508
4509   noname_undefs_length = 0;
4510 }
4511
4512 /* Go through each undefined type, see if it's still undefined, and fix it
4513    up if possible.  We have two kinds of undefined types:
4514
4515    TYPE_CODE_ARRAY:  Array whose target type wasn't defined yet.
4516    Fix:  update array length using the element bounds
4517    and the target type's length.
4518    TYPE_CODE_STRUCT, TYPE_CODE_UNION:  Structure whose fields were not
4519    yet defined at the time a pointer to it was made.
4520    Fix:  Do a full lookup on the struct/union tag.  */
4521
4522 static void
4523 cleanup_undefined_types_1 (void)
4524 {
4525   struct type **type;
4526
4527   /* Iterate over every undefined type, and look for a symbol whose type
4528      matches our undefined type.  The symbol matches if:
4529        1. It is a typedef in the STRUCT domain;
4530        2. It has the same name, and same type code;
4531        3. The instance flags are identical.
4532      
4533      It is important to check the instance flags, because we have seen
4534      examples where the debug info contained definitions such as:
4535
4536          "foo_t:t30=B31=xefoo_t:"
4537
4538      In this case, we have created an undefined type named "foo_t" whose
4539      instance flags is null (when processing "xefoo_t"), and then created
4540      another type with the same name, but with different instance flags
4541      ('B' means volatile).  I think that the definition above is wrong,
4542      since the same type cannot be volatile and non-volatile at the same
4543      time, but we need to be able to cope with it when it happens.  The
4544      approach taken here is to treat these two types as different.  */
4545
4546   for (type = undef_types; type < undef_types + undef_types_length; type++)
4547     {
4548       switch (TYPE_CODE (*type))
4549         {
4550
4551         case TYPE_CODE_STRUCT:
4552         case TYPE_CODE_UNION:
4553         case TYPE_CODE_ENUM:
4554           {
4555             /* Check if it has been defined since.  Need to do this here
4556                as well as in check_typedef to deal with the (legitimate in
4557                C though not C++) case of several types with the same name
4558                in different source files.  */
4559             if (TYPE_STUB (*type))
4560               {
4561                 struct pending *ppt;
4562                 int i;
4563                 /* Name of the type, without "struct" or "union".  */
4564                 const char *type_name = TYPE_TAG_NAME (*type);
4565
4566                 if (type_name == NULL)
4567                   {
4568                     complaint (&symfile_complaints, _("need a type name"));
4569                     break;
4570                   }
4571                 for (ppt = file_symbols; ppt; ppt = ppt->next)
4572                   {
4573                     for (i = 0; i < ppt->nsyms; i++)
4574                       {
4575                         struct symbol *sym = ppt->symbol[i];
4576
4577                         if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
4578                             && SYMBOL_DOMAIN (sym) == STRUCT_DOMAIN
4579                             && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
4580                                 TYPE_CODE (*type))
4581                             && (TYPE_INSTANCE_FLAGS (*type) ==
4582                                 TYPE_INSTANCE_FLAGS (SYMBOL_TYPE (sym)))
4583                             && strcmp (SYMBOL_LINKAGE_NAME (sym),
4584                                        type_name) == 0)
4585                           replace_type (*type, SYMBOL_TYPE (sym));
4586                       }
4587                   }
4588               }
4589           }
4590           break;
4591
4592         default:
4593           {
4594             complaint (&symfile_complaints,
4595                        _("forward-referenced types left unresolved, "
4596                        "type code %d."),
4597                        TYPE_CODE (*type));
4598           }
4599           break;
4600         }
4601     }
4602
4603   undef_types_length = 0;
4604 }
4605
4606 /* Try to fix all the undefined types we ecountered while processing
4607    this unit.  */
4608
4609 void
4610 cleanup_undefined_stabs_types (struct objfile *objfile)
4611 {
4612   cleanup_undefined_types_1 ();
4613   cleanup_undefined_types_noname (objfile);
4614 }
4615
4616 /* Scan through all of the global symbols defined in the object file,
4617    assigning values to the debugging symbols that need to be assigned
4618    to.  Get these symbols from the minimal symbol table.  */
4619
4620 void
4621 scan_file_globals (struct objfile *objfile)
4622 {
4623   int hash;
4624   struct minimal_symbol *msymbol;
4625   struct symbol *sym, *prev;
4626   struct objfile *resolve_objfile;
4627
4628   /* SVR4 based linkers copy referenced global symbols from shared
4629      libraries to the main executable.
4630      If we are scanning the symbols for a shared library, try to resolve
4631      them from the minimal symbols of the main executable first.  */
4632
4633   if (symfile_objfile && objfile != symfile_objfile)
4634     resolve_objfile = symfile_objfile;
4635   else
4636     resolve_objfile = objfile;
4637
4638   while (1)
4639     {
4640       /* Avoid expensive loop through all minimal symbols if there are
4641          no unresolved symbols.  */
4642       for (hash = 0; hash < HASHSIZE; hash++)
4643         {
4644           if (global_sym_chain[hash])
4645             break;
4646         }
4647       if (hash >= HASHSIZE)
4648         return;
4649
4650       ALL_OBJFILE_MSYMBOLS (resolve_objfile, msymbol)
4651         {
4652           QUIT;
4653
4654           /* Skip static symbols.  */
4655           switch (MSYMBOL_TYPE (msymbol))
4656             {
4657             case mst_file_text:
4658             case mst_file_data:
4659             case mst_file_bss:
4660               continue;
4661             default:
4662               break;
4663             }
4664
4665           prev = NULL;
4666
4667           /* Get the hash index and check all the symbols
4668              under that hash index.  */
4669
4670           hash = hashname (MSYMBOL_LINKAGE_NAME (msymbol));
4671
4672           for (sym = global_sym_chain[hash]; sym;)
4673             {
4674               if (strcmp (MSYMBOL_LINKAGE_NAME (msymbol),
4675                           SYMBOL_LINKAGE_NAME (sym)) == 0)
4676                 {
4677                   /* Splice this symbol out of the hash chain and
4678                      assign the value we have to it.  */
4679                   if (prev)
4680                     {
4681                       SYMBOL_VALUE_CHAIN (prev) = SYMBOL_VALUE_CHAIN (sym);
4682                     }
4683                   else
4684                     {
4685                       global_sym_chain[hash] = SYMBOL_VALUE_CHAIN (sym);
4686                     }
4687
4688                   /* Check to see whether we need to fix up a common block.  */
4689                   /* Note: this code might be executed several times for
4690                      the same symbol if there are multiple references.  */
4691                   if (sym)
4692                     {
4693                       if (SYMBOL_CLASS (sym) == LOC_BLOCK)
4694                         {
4695                           fix_common_block (sym,
4696                                             MSYMBOL_VALUE_ADDRESS (resolve_objfile,
4697                                                                    msymbol));
4698                         }
4699                       else
4700                         {
4701                           SYMBOL_VALUE_ADDRESS (sym)
4702                             = MSYMBOL_VALUE_ADDRESS (resolve_objfile, msymbol);
4703                         }
4704                       SYMBOL_SECTION (sym) = MSYMBOL_SECTION (msymbol);
4705                     }
4706
4707                   if (prev)
4708                     {
4709                       sym = SYMBOL_VALUE_CHAIN (prev);
4710                     }
4711                   else
4712                     {
4713                       sym = global_sym_chain[hash];
4714                     }
4715                 }
4716               else
4717                 {
4718                   prev = sym;
4719                   sym = SYMBOL_VALUE_CHAIN (sym);
4720                 }
4721             }
4722         }
4723       if (resolve_objfile == objfile)
4724         break;
4725       resolve_objfile = objfile;
4726     }
4727
4728   /* Change the storage class of any remaining unresolved globals to
4729      LOC_UNRESOLVED and remove them from the chain.  */
4730   for (hash = 0; hash < HASHSIZE; hash++)
4731     {
4732       sym = global_sym_chain[hash];
4733       while (sym)
4734         {
4735           prev = sym;
4736           sym = SYMBOL_VALUE_CHAIN (sym);
4737
4738           /* Change the symbol address from the misleading chain value
4739              to address zero.  */
4740           SYMBOL_VALUE_ADDRESS (prev) = 0;
4741
4742           /* Complain about unresolved common block symbols.  */
4743           if (SYMBOL_CLASS (prev) == LOC_STATIC)
4744             SYMBOL_ACLASS_INDEX (prev) = LOC_UNRESOLVED;
4745           else
4746             complaint (&symfile_complaints,
4747                        _("%s: common block `%s' from "
4748                          "global_sym_chain unresolved"),
4749                        objfile_name (objfile), SYMBOL_PRINT_NAME (prev));
4750         }
4751     }
4752   memset (global_sym_chain, 0, sizeof (global_sym_chain));
4753 }
4754
4755 /* Initialize anything that needs initializing when starting to read
4756    a fresh piece of a symbol file, e.g. reading in the stuff corresponding
4757    to a psymtab.  */
4758
4759 void
4760 stabsread_init (void)
4761 {
4762 }
4763
4764 /* Initialize anything that needs initializing when a completely new
4765    symbol file is specified (not just adding some symbols from another
4766    file, e.g. a shared library).  */
4767
4768 void
4769 stabsread_new_init (void)
4770 {
4771   /* Empty the hash table of global syms looking for values.  */
4772   memset (global_sym_chain, 0, sizeof (global_sym_chain));
4773 }
4774
4775 /* Initialize anything that needs initializing at the same time as
4776    start_symtab() is called.  */
4777
4778 void
4779 start_stabs (void)
4780 {
4781   global_stabs = NULL;          /* AIX COFF */
4782   /* Leave FILENUM of 0 free for builtin types and this file's types.  */
4783   n_this_object_header_files = 1;
4784   type_vector_length = 0;
4785   type_vector = (struct type **) 0;
4786
4787   /* FIXME: If common_block_name is not already NULL, we should complain().  */
4788   common_block_name = NULL;
4789 }
4790
4791 /* Call after end_symtab().  */
4792
4793 void
4794 end_stabs (void)
4795 {
4796   if (type_vector)
4797     {
4798       xfree (type_vector);
4799     }
4800   type_vector = 0;
4801   type_vector_length = 0;
4802   previous_stab_code = 0;
4803 }
4804
4805 void
4806 finish_global_stabs (struct objfile *objfile)
4807 {
4808   if (global_stabs)
4809     {
4810       patch_block_stabs (global_symbols, global_stabs, objfile);
4811       xfree (global_stabs);
4812       global_stabs = NULL;
4813     }
4814 }
4815
4816 /* Find the end of the name, delimited by a ':', but don't match
4817    ObjC symbols which look like -[Foo bar::]:bla.  */
4818 static const char *
4819 find_name_end (const char *name)
4820 {
4821   const char *s = name;
4822
4823   if (s[0] == '-' || *s == '+')
4824     {
4825       /* Must be an ObjC method symbol.  */
4826       if (s[1] != '[')
4827         {
4828           error (_("invalid symbol name \"%s\""), name);
4829         }
4830       s = strchr (s, ']');
4831       if (s == NULL)
4832         {
4833           error (_("invalid symbol name \"%s\""), name);
4834         }
4835       return strchr (s, ':');
4836     }
4837   else
4838     {
4839       return strchr (s, ':');
4840     }
4841 }
4842
4843 /* Initializer for this module.  */
4844
4845 void
4846 _initialize_stabsread (void)
4847 {
4848   rs6000_builtin_type_data = register_objfile_data ();
4849
4850   undef_types_allocated = 20;
4851   undef_types_length = 0;
4852   undef_types = XNEWVEC (struct type *, undef_types_allocated);
4853
4854   noname_undefs_allocated = 20;
4855   noname_undefs_length = 0;
4856   noname_undefs = XNEWVEC (struct nat, noname_undefs_allocated);
4857
4858   stab_register_index = register_symbol_register_impl (LOC_REGISTER,
4859                                                        &stab_register_funcs);
4860   stab_regparm_index = register_symbol_register_impl (LOC_REGPARM_ADDR,
4861                                                       &stab_register_funcs);
4862 }