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