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