OSDN Git Service

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