OSDN Git Service

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