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