]> Git Repo - binutils.git/blob - gdb/stabsread.c
Implement support for Chill POWERSETs.
[binutils.git] / gdb / stabsread.c
1 /* Support routines for decoding "stabs" debugging information format.
2    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993
3              Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
20
21 /* Support routines for reading and decoding debugging information in
22    the "stabs" format.  This format is used with many systems that use
23    the a.out object file format, as well as some systems that use
24    COFF or ELF where the stabs data is placed in a special section.
25    Avoid placing any object file format specific code in this file. */
26
27 #include "defs.h"
28 #include "bfd.h"
29 #include "obstack.h"
30 #include "symtab.h"
31 #include "gdbtypes.h"
32 #include "symfile.h"
33 #include "objfiles.h"
34 #include "aout/stab_gnu.h"      /* We always use GNU stabs, not native */
35 #include "buildsym.h"
36 #include "complaints.h"
37 #include "demangle.h"
38
39 #include <ctype.h>
40
41 /* Ask stabsread.h to define the vars it normally declares `extern'.  */
42 #define EXTERN  /**/
43 #include "stabsread.h"          /* Our own declarations */
44 #undef  EXTERN
45
46 /* The routines that read and process a complete stabs for a C struct or 
47    C++ class pass lists of data member fields and lists of member function
48    fields in an instance of a field_info structure, as defined below.
49    This is part of some reorganization of low level C++ support and is
50    expected to eventually go away... (FIXME) */
51
52 struct field_info
53 {
54   struct nextfield
55     {
56       struct nextfield *next;
57
58       /* This is the raw visibility from the stab.  It is not checked
59          for being one of the visibilities we recognize, so code which
60          examines this field better be able to deal.  */
61       int visibility;
62
63       struct field field;
64     } *list;
65   struct next_fnfieldlist
66     {
67       struct next_fnfieldlist *next;
68       struct fn_fieldlist fn_fieldlist;
69     } *fnlist;
70 };
71
72 static struct type *
73 dbx_alloc_type PARAMS ((int [2], struct objfile *));
74
75 static long read_huge_number PARAMS ((char **, int, int *));
76
77 static struct type *error_type PARAMS ((char **));
78
79 static void
80 patch_block_stabs PARAMS ((struct pending *, struct pending_stabs *,
81                            struct objfile *));
82
83 static void
84 fix_common_block PARAMS ((struct symbol *, int));
85
86 static int
87 read_type_number PARAMS ((char **, int *));
88
89 static struct type *
90 read_range_type PARAMS ((char **, int [2], struct objfile *));
91
92 static struct type *
93 read_sun_builtin_type PARAMS ((char **, int [2], struct objfile *));
94
95 static struct type *
96 read_sun_floating_type PARAMS ((char **, int [2], struct objfile *));
97
98 static struct type *
99 read_enum_type PARAMS ((char **, struct type *, struct objfile *));
100
101 static struct type *
102 rs6000_builtin_type PARAMS ((int));
103
104 static int
105 read_member_functions PARAMS ((struct field_info *, char **, struct type *,
106                                struct objfile *));
107
108 static int
109 read_struct_fields PARAMS ((struct field_info *, char **, struct type *,
110                             struct objfile *));
111
112 static int
113 read_baseclasses PARAMS ((struct field_info *, char **, struct type *,
114                           struct objfile *));
115
116 static int
117 read_tilde_fields PARAMS ((struct field_info *, char **, struct type *,
118                            struct objfile *));
119
120 static int
121 attach_fn_fields_to_type PARAMS ((struct field_info *, struct type *));
122
123 static int
124 attach_fields_to_type PARAMS ((struct field_info *, struct type *,
125                                struct objfile *));
126
127 static struct type *
128 read_struct_type PARAMS ((char **, struct type *, struct objfile *));
129
130 static struct type *
131 read_array_type PARAMS ((char **, struct type *, struct objfile *));
132
133 static struct type **
134 read_args PARAMS ((char **, int, struct objfile *));
135
136 static int
137 read_cpp_abbrev PARAMS ((struct field_info *, char **, struct type *,
138                          struct objfile *));
139
140 static const char vptr_name[] = { '_','v','p','t','r',CPLUS_MARKER,'\0' };
141 static const char vb_name[] =   { '_','v','b',CPLUS_MARKER,'\0' };
142
143 /* Define this as 1 if a pcc declaration of a char or short argument
144    gives the correct address.  Otherwise assume pcc gives the
145    address of the corresponding int, which is not the same on a
146    big-endian machine.  */
147
148 #ifndef BELIEVE_PCC_PROMOTION
149 #define BELIEVE_PCC_PROMOTION 0
150 #endif
151
152 struct complaint invalid_cpp_abbrev_complaint =
153   {"invalid C++ abbreviation `%s'", 0, 0};
154
155 struct complaint invalid_cpp_type_complaint =
156   {"C++ abbreviated type name unknown at symtab pos %d", 0, 0};
157
158 struct complaint member_fn_complaint =
159   {"member function type missing, got '%c'", 0, 0};
160
161 struct complaint const_vol_complaint =
162   {"const/volatile indicator missing, got '%c'", 0, 0};
163
164 struct complaint error_type_complaint =
165   {"debug info mismatch between compiler and debugger", 0, 0};
166
167 struct complaint invalid_member_complaint =
168   {"invalid (minimal) member type data format at symtab pos %d.", 0, 0};
169
170 struct complaint range_type_base_complaint =
171   {"base type %d of range type is not defined", 0, 0};
172
173 struct complaint reg_value_complaint =
174   {"register number too large in symbol %s", 0, 0};
175
176 struct complaint vtbl_notfound_complaint =
177   {"virtual function table pointer not found when defining class `%s'", 0, 0};
178
179 struct complaint unrecognized_cplus_name_complaint =
180   {"Unknown C++ symbol name `%s'", 0, 0};
181
182 struct complaint rs6000_builtin_complaint =
183   {"Unknown builtin type %d", 0, 0};
184
185 struct complaint stabs_general_complaint =
186   {"%s", 0, 0};
187
188 /* Make a list of forward references which haven't been defined.  */
189
190 static struct type **undef_types;
191 static int undef_types_allocated;
192 static int undef_types_length;
193
194 /* Check for and handle cretinous stabs symbol name continuation!  */
195 #define STABS_CONTINUE(pp)                              \
196   do {                                                  \
197     if (**(pp) == '\\') *(pp) = next_symbol_text ();    \
198   } while (0)
199
200 \f
201 /* Look up a dbx type-number pair.  Return the address of the slot
202    where the type for that number-pair is stored.
203    The number-pair is in TYPENUMS.
204
205    This can be used for finding the type associated with that pair
206    or for associating a new type with the pair.  */
207
208 struct type **
209 dbx_lookup_type (typenums)
210      int typenums[2];
211 {
212   register int filenum = typenums[0];
213   register int index = typenums[1];
214   unsigned old_len;
215   register int real_filenum;
216   register struct header_file *f;
217   int f_orig_length;
218
219   if (filenum == -1)            /* -1,-1 is for temporary types.  */
220     return 0;
221
222   if (filenum < 0 || filenum >= n_this_object_header_files)
223     {
224       static struct complaint msg = {"\
225 Invalid symbol data: type number (%d,%d) out of range at symtab pos %d.",
226                                 0, 0};
227       complain (&msg, filenum, index, symnum);
228       goto error_return;
229     }
230
231   if (filenum == 0)
232     {
233       if (index < 0)
234         {
235           /* Caller wants address of address of type.  We think
236              that negative (rs6k builtin) types will never appear as
237              "lvalues", (nor should they), so we stuff the real type
238              pointer into a temp, and return its address.  If referenced,
239              this will do the right thing.  */
240           static struct type *temp_type;
241
242           temp_type = rs6000_builtin_type(index);
243           return &temp_type;
244         }
245
246       /* Type is defined outside of header files.
247          Find it in this object file's type vector.  */
248       if (index >= type_vector_length)
249         {
250           old_len = type_vector_length;
251           if (old_len == 0)
252             {
253               type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
254               type_vector = (struct type **)
255                 malloc (type_vector_length * sizeof (struct type *));
256             }
257           while (index >= type_vector_length)
258             {
259               type_vector_length *= 2;
260             }
261           type_vector = (struct type **)
262             xrealloc ((char *) type_vector,
263                       (type_vector_length * sizeof (struct type *)));
264           memset (&type_vector[old_len], 0,
265                   (type_vector_length - old_len) * sizeof (struct type *));
266         }
267       return (&type_vector[index]);
268     }
269   else
270     {
271       real_filenum = this_object_header_files[filenum];
272
273       if (real_filenum >= n_header_files)
274         {
275           struct type *temp_type;
276           struct type **temp_type_p;
277
278           warning ("GDB internal error: bad real_filenum");
279
280         error_return:
281           temp_type = init_type (TYPE_CODE_ERROR, 0, 0, NULL, NULL);
282           temp_type_p = (struct type **) xmalloc (sizeof (struct type *));
283           *temp_type_p = temp_type;
284           return temp_type_p;
285         }
286
287       f = &header_files[real_filenum];
288
289       f_orig_length = f->length;
290       if (index >= f_orig_length)
291         {
292           while (index >= f->length)
293             {
294               f->length *= 2;
295             }
296           f->vector = (struct type **)
297             xrealloc ((char *) f->vector, f->length * sizeof (struct type *));
298           memset (&f->vector[f_orig_length], 0,
299                   (f->length - f_orig_length) * sizeof (struct type *));
300         }
301       return (&f->vector[index]);
302     }
303 }
304
305 /* Make sure there is a type allocated for type numbers TYPENUMS
306    and return the type object.
307    This can create an empty (zeroed) type object.
308    TYPENUMS may be (-1, -1) to return a new type object that is not
309    put into the type vector, and so may not be referred to by number. */
310
311 static struct type *
312 dbx_alloc_type (typenums, objfile)
313      int typenums[2];
314      struct objfile *objfile;
315 {
316   register struct type **type_addr;
317
318   if (typenums[0] == -1)
319     {
320       return (alloc_type (objfile));
321     }
322
323   type_addr = dbx_lookup_type (typenums);
324
325   /* If we are referring to a type not known at all yet,
326      allocate an empty type for it.
327      We will fill it in later if we find out how.  */
328   if (*type_addr == 0)
329     {
330       *type_addr = alloc_type (objfile);
331     }
332
333   return (*type_addr);
334 }
335
336 /* for all the stabs in a given stab vector, build appropriate types 
337    and fix their symbols in given symbol vector. */
338
339 static void
340 patch_block_stabs (symbols, stabs, objfile)
341      struct pending *symbols;
342      struct pending_stabs *stabs;
343      struct objfile *objfile;
344 {
345   int ii;
346   char *name;
347   char *pp;
348   struct symbol *sym;
349
350   if (stabs)
351     {
352       
353       /* for all the stab entries, find their corresponding symbols and 
354          patch their types! */
355       
356       for (ii = 0; ii < stabs->count; ++ii)
357         {
358           name = stabs->stab[ii];
359           pp = (char*) strchr (name, ':');
360           while (pp[1] == ':')
361             {
362                pp += 2;
363                pp = (char *)strchr(pp, ':');
364             }
365           sym = find_symbol_in_list (symbols, name, pp-name);
366           if (!sym)
367             {
368               /* On xcoff, if a global is defined and never referenced,
369                  ld will remove it from the executable.  There is then
370                  a N_GSYM stab for it, but no regular (C_EXT) symbol.  */
371               sym = (struct symbol *)
372                 obstack_alloc (&objfile->symbol_obstack,
373                                sizeof (struct symbol));
374
375               memset (sym, 0, sizeof (struct symbol));
376               SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
377               SYMBOL_CLASS (sym) = LOC_OPTIMIZED_OUT;
378               SYMBOL_NAME (sym) =
379                 obstack_copy0 (&objfile->symbol_obstack, name, pp - name);
380               pp += 2;
381               if (*(pp-1) == 'F' || *(pp-1) == 'f')
382                 {
383                   /* I don't think the linker does this with functions,
384                      so as far as I know this is never executed.
385                      But it doesn't hurt to check.  */
386                   SYMBOL_TYPE (sym) =
387                     lookup_function_type (read_type (&pp, objfile));
388                 }
389               else
390                 {
391                   SYMBOL_TYPE (sym) = read_type (&pp, objfile);
392                 }
393               add_symbol_to_list (sym, &global_symbols);
394             }
395           else
396             {
397               pp += 2;
398               if (*(pp-1) == 'F' || *(pp-1) == 'f')
399                 {
400                   SYMBOL_TYPE (sym) =
401                     lookup_function_type (read_type (&pp, objfile));
402                 }
403               else
404                 {
405                   SYMBOL_TYPE (sym) = read_type (&pp, objfile);
406                 }
407             }
408         }
409     }
410 }
411
412 \f
413 /* Read a number by which a type is referred to in dbx data,
414    or perhaps read a pair (FILENUM, TYPENUM) in parentheses.
415    Just a single number N is equivalent to (0,N).
416    Return the two numbers by storing them in the vector TYPENUMS.
417    TYPENUMS will then be used as an argument to dbx_lookup_type.
418
419    Returns 0 for success, -1 for error.  */
420
421 static int
422 read_type_number (pp, typenums)
423      register char **pp;
424      register int *typenums;
425 {
426   int nbits;
427   if (**pp == '(')
428     {
429       (*pp)++;
430       typenums[0] = read_huge_number (pp, ',', &nbits);
431       if (nbits != 0) return -1;
432       typenums[1] = read_huge_number (pp, ')', &nbits);
433       if (nbits != 0) return -1;
434     }
435   else
436     {
437       typenums[0] = 0;
438       typenums[1] = read_huge_number (pp, 0, &nbits);
439       if (nbits != 0) return -1;
440     }
441   return 0;
442 }
443
444 \f
445 /* To handle GNU C++ typename abbreviation, we need to be able to
446    fill in a type's name as soon as space for that type is allocated.
447    `type_synonym_name' is the name of the type being allocated.
448    It is cleared as soon as it is used (lest all allocated types
449    get this name).  */
450
451 static char *type_synonym_name;
452
453 /* ARGSUSED */
454 struct symbol *
455 define_symbol (valu, string, desc, type, objfile)
456      CORE_ADDR valu;
457      char *string;
458      int desc;
459      int type;
460      struct objfile *objfile;
461 {
462   register struct symbol *sym;
463   char *p = (char *) strchr (string, ':');
464   int deftype;
465   int synonym = 0;
466   register int i;
467
468   /* We would like to eliminate nameless symbols, but keep their types.
469      E.g. stab entry ":t10=*2" should produce a type 10, which is a pointer
470      to type 2, but, should not create a symbol to address that type. Since
471      the symbol will be nameless, there is no way any user can refer to it. */
472
473   int nameless;
474
475   /* Ignore syms with empty names.  */
476   if (string[0] == 0)
477     return 0;
478
479   /* Ignore old-style symbols from cc -go  */
480   if (p == 0)
481     return 0;
482
483   while (p[1] == ':')
484     {
485        p += 2;
486        p = strchr(p, ':');
487     }
488
489   /* If a nameless stab entry, all we need is the type, not the symbol.
490      e.g. ":t10=*2" or a nameless enum like " :T16=ered:0,green:1,blue:2,;" */
491   nameless = (p == string || ((string[0] == ' ') && (string[1] == ':')));
492
493   sym = (struct symbol *) 
494     obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
495   memset (sym, 0, sizeof (struct symbol));
496
497   if (processing_gcc_compilation)
498     {
499       /* GCC 2.x puts the line number in desc.  SunOS apparently puts in the
500          number of bytes occupied by a type or object, which we ignore.  */
501       SYMBOL_LINE(sym) = desc;
502     }
503   else
504     {
505       SYMBOL_LINE(sym) = 0;                     /* unknown */
506     }
507
508   if (string[0] == CPLUS_MARKER)
509     {
510       /* Special GNU C++ names.  */
511       switch (string[1])
512         {
513           case 't':
514             SYMBOL_NAME (sym) = obsavestring ("this", strlen ("this"),
515                                               &objfile -> symbol_obstack);
516             break;
517
518           case 'v': /* $vtbl_ptr_type */
519             /* Was: SYMBOL_NAME (sym) = "vptr"; */
520             goto normal;
521
522           case 'e':
523             SYMBOL_NAME (sym) = obsavestring ("eh_throw", strlen ("eh_throw"),
524                                               &objfile -> symbol_obstack);
525             break;
526
527           case '_':
528             /* This was an anonymous type that was never fixed up.  */
529             goto normal;
530
531           default:
532             complain (&unrecognized_cplus_name_complaint, string);
533             goto normal;                /* Do *something* with it */
534         }
535     }
536   else
537     {
538     normal:
539       SYMBOL_LANGUAGE (sym) = current_subfile -> language;
540       SYMBOL_NAME (sym) = (char *)
541         obstack_alloc (&objfile -> symbol_obstack, ((p - string) + 1));
542       /* Open-coded memcpy--saves function call time.  */
543       /* FIXME:  Does it really?  Try replacing with simple strcpy and
544          try it on an executable with a large symbol table. */
545       /* FIXME: considering that gcc can open code memcpy anyway, I
546          doubt it.  xoxorich. */
547       {
548         register char *p1 = string;
549         register char *p2 = SYMBOL_NAME (sym);
550         while (p1 != p)
551           {
552             *p2++ = *p1++;
553           }
554         *p2++ = '\0';
555       }
556
557       /* If this symbol is from a C++ compilation, then attempt to cache the
558          demangled form for future reference.  This is a typical time versus
559          space tradeoff, that was decided in favor of time because it sped up
560          C++ symbol lookups by a factor of about 20. */
561
562       SYMBOL_INIT_DEMANGLED_NAME (sym, &objfile->symbol_obstack);
563     }
564   p++;
565
566   /* Determine the type of name being defined.  */
567 #if 0
568   /* Getting GDB to correctly skip the symbol on an undefined symbol
569      descriptor and not ever dump core is a very dodgy proposition if
570      we do things this way.  I say the acorn RISC machine can just
571      fix their compiler.  */
572   /* The Acorn RISC machine's compiler can put out locals that don't
573      start with "234=" or "(3,4)=", so assume anything other than the
574      deftypes we know how to handle is a local.  */
575   if (!strchr ("cfFGpPrStTvVXCR", *p))
576 #else
577   if (isdigit (*p) || *p == '(' || *p == '-')
578 #endif
579     deftype = 'l';
580   else
581     deftype = *p++;
582
583   switch (deftype)
584     {
585     case 'c':
586       /* c is a special case, not followed by a type-number.
587          SYMBOL:c=iVALUE for an integer constant symbol.
588          SYMBOL:c=rVALUE for a floating constant symbol.
589          SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
590          e.g. "b:c=e6,0" for "const b = blob1"
591          (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;").  */
592       if (*p != '=')
593         {
594           SYMBOL_CLASS (sym) = LOC_CONST;
595           SYMBOL_TYPE (sym) = error_type (&p);
596           SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
597           add_symbol_to_list (sym, &file_symbols);
598           return sym;
599         }
600       ++p;
601       switch (*p++)
602         {
603         case 'r':
604           {
605             double d = atof (p);
606             char *dbl_valu;
607
608             /* FIXME-if-picky-about-floating-accuracy: Should be using
609                target arithmetic to get the value.  real.c in GCC
610                probably has the necessary code.  */
611
612             /* FIXME: lookup_fundamental_type is a hack.  We should be
613                creating a type especially for the type of float constants.
614                Problem is, what type should it be?
615
616                Also, what should the name of this type be?  Should we
617                be using 'S' constants (see stabs.texinfo) instead?  */
618
619             SYMBOL_TYPE (sym) = lookup_fundamental_type (objfile,
620                                                          FT_DBL_PREC_FLOAT);
621             dbl_valu = (char *)
622               obstack_alloc (&objfile -> symbol_obstack,
623                              TYPE_LENGTH (SYMBOL_TYPE (sym)));
624             store_floating (dbl_valu, TYPE_LENGTH (SYMBOL_TYPE (sym)), d);
625             SYMBOL_VALUE_BYTES (sym) = dbl_valu;
626             SYMBOL_CLASS (sym) = LOC_CONST_BYTES;
627           }
628           break;
629         case 'i':
630           {
631             /* Defining integer constants this way is kind of silly,
632                since 'e' constants allows the compiler to give not
633                only the value, but the type as well.  C has at least
634                int, long, unsigned int, and long long as constant
635                types; other languages probably should have at least
636                unsigned as well as signed constants.  */
637
638             /* We just need one int constant type for all objfiles.
639                It doesn't depend on languages or anything (arguably its
640                name should be a language-specific name for a type of
641                that size, but I'm inclined to say that if the compiler
642                wants a nice name for the type, it can use 'e').  */
643             static struct type *int_const_type;
644
645             /* Yes, this is as long as a *host* int.  That is because we
646                use atoi.  */
647             if (int_const_type == NULL)
648               int_const_type =
649                 init_type (TYPE_CODE_INT,
650                            sizeof (int) * HOST_CHAR_BIT / TARGET_CHAR_BIT, 0,
651                            "integer constant",
652                            (struct objfile *)NULL);
653             SYMBOL_TYPE (sym) = int_const_type;
654             SYMBOL_VALUE (sym) = atoi (p);
655             SYMBOL_CLASS (sym) = LOC_CONST;
656           }
657           break;
658         case 'e':
659           /* SYMBOL:c=eTYPE,INTVALUE for a constant symbol whose value
660              can be represented as integral.
661              e.g. "b:c=e6,0" for "const b = blob1"
662              (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;").  */
663           {
664             SYMBOL_CLASS (sym) = LOC_CONST;
665             SYMBOL_TYPE (sym) = read_type (&p, objfile);
666
667             if (*p != ',')
668               {
669                 SYMBOL_TYPE (sym) = error_type (&p);
670                 break;
671               }
672             ++p;
673
674             /* If the value is too big to fit in an int (perhaps because
675                it is unsigned), or something like that, we silently get
676                a bogus value.  The type and everything else about it is
677                correct.  Ideally, we should be using whatever we have
678                available for parsing unsigned and long long values,
679                however.  */
680             SYMBOL_VALUE (sym) = atoi (p);
681           }
682           break;
683         default:
684           {
685             SYMBOL_CLASS (sym) = LOC_CONST;
686             SYMBOL_TYPE (sym) = error_type (&p);
687           }
688         }
689       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
690       add_symbol_to_list (sym, &file_symbols);
691       return sym;
692
693     case 'C':
694       /* The name of a caught exception.  */
695       SYMBOL_TYPE (sym) = read_type (&p, objfile);
696       SYMBOL_CLASS (sym) = LOC_LABEL;
697       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
698       SYMBOL_VALUE_ADDRESS (sym) = valu;
699       add_symbol_to_list (sym, &local_symbols);
700       break;
701
702     case 'f':
703       /* A static function definition.  */
704       SYMBOL_TYPE (sym) = read_type (&p, objfile);
705       SYMBOL_CLASS (sym) = LOC_BLOCK;
706       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
707       add_symbol_to_list (sym, &file_symbols);
708       /* fall into process_function_types.  */
709
710     process_function_types:
711       /* Function result types are described as the result type in stabs.
712          We need to convert this to the function-returning-type-X type
713          in GDB.  E.g. "int" is converted to "function returning int".  */
714       if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_FUNC)
715         {
716 #if 0
717           /* This code doesn't work -- it needs to realloc and can't.  */
718           /* Attempt to set up to record a function prototype... */
719           struct type *new = alloc_type (objfile);
720
721           /* Generate a template for the type of this function.  The 
722              types of the arguments will be added as we read the symbol 
723              table. */
724           *new = *lookup_function_type (SYMBOL_TYPE(sym));
725           SYMBOL_TYPE(sym) = new;
726           TYPE_OBJFILE (new) = objfile;
727           in_function_type = new;
728 #else
729           SYMBOL_TYPE (sym) = lookup_function_type (SYMBOL_TYPE (sym));
730 #endif
731         }
732       /* fall into process_prototype_types */
733
734     process_prototype_types:
735       /* Sun acc puts declared types of arguments here.  We don't care
736          about their actual types (FIXME -- we should remember the whole
737          function prototype), but the list may define some new types
738          that we have to remember, so we must scan it now.  */
739       while (*p == ';') {
740         p++;
741         read_type (&p, objfile);
742       }
743       break;
744
745     case 'F':
746       /* A global function definition.  */
747       SYMBOL_TYPE (sym) = read_type (&p, objfile);
748       SYMBOL_CLASS (sym) = LOC_BLOCK;
749       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
750       add_symbol_to_list (sym, &global_symbols);
751       goto process_function_types;
752
753     case 'G':
754       /* For a class G (global) symbol, it appears that the
755          value is not correct.  It is necessary to search for the
756          corresponding linker definition to find the value.
757          These definitions appear at the end of the namelist.  */
758       SYMBOL_TYPE (sym) = read_type (&p, objfile);
759       i = hashname (SYMBOL_NAME (sym));
760       SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
761       global_sym_chain[i] = sym;
762       SYMBOL_CLASS (sym) = LOC_STATIC;
763       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
764       add_symbol_to_list (sym, &global_symbols);
765       break;
766
767       /* This case is faked by a conditional above,
768          when there is no code letter in the dbx data.
769          Dbx data never actually contains 'l'.  */
770     case 'l':
771       SYMBOL_TYPE (sym) = read_type (&p, objfile);
772       SYMBOL_CLASS (sym) = LOC_LOCAL;
773       SYMBOL_VALUE (sym) = valu;
774       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
775       add_symbol_to_list (sym, &local_symbols);
776       break;
777
778     case 'p':
779       if (*p == 'F')
780         /* pF is a two-letter code that means a function parameter in Fortran.
781            The type-number specifies the type of the return value.
782            Translate it into a pointer-to-function type.  */
783         {
784           p++;
785           SYMBOL_TYPE (sym)
786             = lookup_pointer_type
787               (lookup_function_type (read_type (&p, objfile)));
788         }
789       else
790         SYMBOL_TYPE (sym) = read_type (&p, objfile);
791
792       /* Normally this is a parameter, a LOC_ARG.  On the i960, it
793          can also be a LOC_LOCAL_ARG depending on symbol type.  */
794 #ifndef DBX_PARM_SYMBOL_CLASS
795 #define DBX_PARM_SYMBOL_CLASS(type)     LOC_ARG
796 #endif
797
798       SYMBOL_CLASS (sym) = DBX_PARM_SYMBOL_CLASS (type);
799       SYMBOL_VALUE (sym) = valu;
800       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
801 #if 0
802       /* This doesn't work yet.  */
803       add_param_to_type (&in_function_type, sym);
804 #endif
805       add_symbol_to_list (sym, &local_symbols);
806
807 #if TARGET_BYTE_ORDER == LITTLE_ENDIAN
808       /* On little-endian machines, this crud is never necessary, and,
809          if the extra bytes contain garbage, is harmful.  */
810       break;
811 #else /* Big endian.  */
812       /* If it's gcc-compiled, if it says `short', believe it.  */
813       if (processing_gcc_compilation || BELIEVE_PCC_PROMOTION)
814         break;
815
816 #if !BELIEVE_PCC_PROMOTION
817       {
818         /* This is the signed type which arguments get promoted to.  */
819         static struct type *pcc_promotion_type;
820         /* This is the unsigned type which arguments get promoted to.  */
821         static struct type *pcc_unsigned_promotion_type;
822
823         /* Call it "int" because this is mainly C lossage.  */
824         if (pcc_promotion_type == NULL)
825           pcc_promotion_type =
826             init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
827                        0, "int", NULL);
828
829         if (pcc_unsigned_promotion_type == NULL)
830           pcc_unsigned_promotion_type =
831             init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
832                        TYPE_FLAG_UNSIGNED, "unsigned int", NULL);
833
834 #if defined(BELIEVE_PCC_PROMOTION_TYPE)
835         /* This macro is defined on machines (e.g. sparc) where
836            we should believe the type of a PCC 'short' argument,
837            but shouldn't believe the address (the address is
838            the address of the corresponding int).
839            
840            My guess is that this correction, as opposed to changing
841            the parameter to an 'int' (as done below, for PCC
842            on most machines), is the right thing to do
843            on all machines, but I don't want to risk breaking
844            something that already works.  On most PCC machines,
845            the sparc problem doesn't come up because the calling
846            function has to zero the top bytes (not knowing whether
847            the called function wants an int or a short), so there
848            is little practical difference between an int and a short
849            (except perhaps what happens when the GDB user types
850            "print short_arg = 0x10000;"). 
851            
852            Hacked for SunOS 4.1 by [email protected].  In 4.1, the compiler
853            actually produces the correct address (we don't need to fix it
854            up).  I made this code adapt so that it will offset the symbol
855            if it was pointing at an int-aligned location and not
856            otherwise.  This way you can use the same gdb for 4.0.x and
857            4.1 systems.
858            
859            If the parameter is shorter than an int, and is integral
860            (e.g. char, short, or unsigned equivalent), and is claimed to
861            be passed on an integer boundary, don't believe it!  Offset the
862            parameter's address to the tail-end of that integer.  */
863         
864         if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (pcc_promotion_type)
865             && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT
866             && 0 == SYMBOL_VALUE (sym) % TYPE_LENGTH (pcc_promotion_type))
867           {
868             SYMBOL_VALUE (sym) += TYPE_LENGTH (pcc_promotion_type)
869               - TYPE_LENGTH (SYMBOL_TYPE (sym));
870           }
871         break;
872         
873 #else /* no BELIEVE_PCC_PROMOTION_TYPE.  */
874
875         /* If PCC says a parameter is a short or a char,
876            it is really an int.  */
877         if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (pcc_promotion_type)
878             && TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
879           {
880             SYMBOL_TYPE (sym) =
881               TYPE_UNSIGNED (SYMBOL_TYPE (sym))
882                 ? pcc_unsigned_promotion_type
883                 : pcc_promotion_type;
884           }
885         break;
886
887 #endif /* no BELIEVE_PCC_PROMOTION_TYPE.  */
888       }
889 #endif /* !BELIEVE_PCC_PROMOTION.  */
890 #endif /* Big endian.  */
891
892     case 'P':
893       /* acc seems to use P to delare the prototypes of functions that
894          are referenced by this file.  gdb is not prepared to deal
895          with this extra information.  FIXME, it ought to.  */
896       if (type == N_FUN)
897         {
898           read_type (&p, objfile);
899           goto process_prototype_types;
900         }
901       /*FALLTHROUGH*/
902
903     case 'R':
904       /* Parameter which is in a register.  */
905       SYMBOL_TYPE (sym) = read_type (&p, objfile);
906       SYMBOL_CLASS (sym) = LOC_REGPARM;
907       SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (valu);
908       if (SYMBOL_VALUE (sym) >= NUM_REGS)
909         {
910           complain (&reg_value_complaint, SYMBOL_SOURCE_NAME (sym));
911           SYMBOL_VALUE (sym) = SP_REGNUM;  /* Known safe, though useless */
912         }
913       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
914       add_symbol_to_list (sym, &local_symbols);
915       break;
916
917     case 'r':
918       /* Register variable (either global or local).  */
919       SYMBOL_TYPE (sym) = read_type (&p, objfile);
920       SYMBOL_CLASS (sym) = LOC_REGISTER;
921       SYMBOL_VALUE (sym) = STAB_REG_TO_REGNUM (valu);
922       if (SYMBOL_VALUE (sym) >= NUM_REGS)
923         {
924           complain (&reg_value_complaint, SYMBOL_SOURCE_NAME (sym));
925           SYMBOL_VALUE (sym) = SP_REGNUM;  /* Known safe, though useless */
926         }
927       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
928       if (within_function)
929         {
930           /* Sun cc uses a pair of symbols, one 'p' and one 'r' with the same
931              name to represent an argument passed in a register.
932              GCC uses 'P' for the same case.  So if we find such a symbol pair
933              we combine it into one 'P' symbol.
934              Note that this code illegally combines
935                main(argc) int argc; { register int argc = 1; }
936              but this case is considered pathological and causes a warning
937              from a decent compiler.  */
938           if (local_symbols
939               && local_symbols->nsyms > 0)
940             {
941               struct symbol *prev_sym;
942               prev_sym = local_symbols->symbol[local_symbols->nsyms - 1];
943               if (SYMBOL_CLASS (prev_sym) == LOC_ARG
944                   && STREQ (SYMBOL_NAME (prev_sym), SYMBOL_NAME(sym)))
945                 {
946                   SYMBOL_CLASS (prev_sym) = LOC_REGPARM;
947                   /* Use the type from the LOC_REGISTER; that is the type
948                      that is actually in that register.  */
949                   SYMBOL_TYPE (prev_sym) = SYMBOL_TYPE (sym);
950                   SYMBOL_VALUE (prev_sym) = SYMBOL_VALUE (sym);
951                   sym = prev_sym;
952                   break;
953                 }
954             }
955           add_symbol_to_list (sym, &local_symbols);
956         }
957       else
958         add_symbol_to_list (sym, &file_symbols);
959       break;
960
961     case 'S':
962       /* Static symbol at top level of file */
963       SYMBOL_TYPE (sym) = read_type (&p, objfile);
964       SYMBOL_CLASS (sym) = LOC_STATIC;
965       SYMBOL_VALUE_ADDRESS (sym) = valu;
966       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
967       add_symbol_to_list (sym, &file_symbols);
968       break;
969
970     case 't':
971       SYMBOL_TYPE (sym) = read_type (&p, objfile);
972
973       /* For a nameless type, we don't want a create a symbol, thus we
974          did not use `sym'. Return without further processing. */
975       if (nameless) return NULL;
976
977       SYMBOL_CLASS (sym) = LOC_TYPEDEF;
978       SYMBOL_VALUE (sym) = valu;
979       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
980       /* C++ vagaries: we may have a type which is derived from
981          a base type which did not have its name defined when the
982          derived class was output.  We fill in the derived class's
983          base part member's name here in that case.  */
984       if (TYPE_NAME (SYMBOL_TYPE (sym)) != NULL)
985         if ((TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT
986              || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)
987             && TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)))
988           {
989             int j;
990             for (j = TYPE_N_BASECLASSES (SYMBOL_TYPE (sym)) - 1; j >= 0; j--)
991               if (TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) == 0)
992                 TYPE_BASECLASS_NAME (SYMBOL_TYPE (sym), j) =
993                   type_name_no_tag (TYPE_BASECLASS (SYMBOL_TYPE (sym), j));
994           }
995
996       if (TYPE_NAME (SYMBOL_TYPE (sym)) == NULL)
997         {
998           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR
999               || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FUNC)
1000             {
1001               /* If we are giving a name to a type such as "pointer to
1002                  foo" or "function returning foo", we better not set
1003                  the TYPE_NAME.  If the program contains "typedef char
1004                  *caddr_t;", we don't want all variables of type char
1005                  * to print as caddr_t.  This is not just a
1006                  consequence of GDB's type management; PCC and GCC (at
1007                  least through version 2.4) both output variables of
1008                  either type char * or caddr_t with the type number
1009                  defined in the 't' symbol for caddr_t.  If a future
1010                  compiler cleans this up it GDB is not ready for it
1011                  yet, but if it becomes ready we somehow need to
1012                  disable this check (without breaking the PCC/GCC2.4
1013                  case).
1014
1015                  Sigh.
1016
1017                  Fortunately, this check seems not to be necessary
1018                  for anything except pointers or functions.  */
1019             }
1020           else
1021             TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_NAME (sym);
1022         }
1023
1024       add_symbol_to_list (sym, &file_symbols);
1025       break;
1026
1027     case 'T':
1028       /* Struct, union, or enum tag.  For GNU C++, this can be be followed
1029          by 't' which means we are typedef'ing it as well.  */
1030       synonym = *p == 't';
1031
1032       if (synonym)
1033         {
1034           p++;
1035           type_synonym_name = obsavestring (SYMBOL_NAME (sym),
1036                                             strlen (SYMBOL_NAME (sym)),
1037                                             &objfile -> symbol_obstack);
1038         }
1039       /* The semantics of C++ state that "struct foo { ... }" also defines 
1040          a typedef for "foo".  Unfortunately, cfront never makes the typedef
1041          when translating C++ into C.  We make the typedef here so that
1042          "ptype foo" works as expected for cfront translated code.  */
1043       else if (current_subfile->language == language_cplus)
1044         {
1045           synonym = 1;
1046           type_synonym_name = obsavestring (SYMBOL_NAME (sym),
1047                                             strlen (SYMBOL_NAME (sym)),
1048                                             &objfile -> symbol_obstack);
1049         }
1050
1051       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1052
1053       /* For a nameless type, we don't want a create a symbol, thus we
1054          did not use `sym'. Return without further processing. */
1055       if (nameless) return NULL;
1056
1057       SYMBOL_CLASS (sym) = LOC_TYPEDEF;
1058       SYMBOL_VALUE (sym) = valu;
1059       SYMBOL_NAMESPACE (sym) = STRUCT_NAMESPACE;
1060       if (TYPE_TAG_NAME (SYMBOL_TYPE (sym)) == 0)
1061         TYPE_TAG_NAME (SYMBOL_TYPE (sym))
1062           = obconcat (&objfile -> type_obstack, "", "", SYMBOL_NAME (sym));
1063       add_symbol_to_list (sym, &file_symbols);
1064
1065       if (synonym)
1066         {
1067           /* Clone the sym and then modify it. */
1068           register struct symbol *typedef_sym = (struct symbol *)
1069             obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
1070           *typedef_sym = *sym;
1071           SYMBOL_CLASS (typedef_sym) = LOC_TYPEDEF;
1072           SYMBOL_VALUE (typedef_sym) = valu;
1073           SYMBOL_NAMESPACE (typedef_sym) = VAR_NAMESPACE;
1074           if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
1075             TYPE_NAME (SYMBOL_TYPE (sym))
1076               = obconcat (&objfile -> type_obstack, "", "", SYMBOL_NAME (sym));
1077           add_symbol_to_list (typedef_sym, &file_symbols);
1078         }
1079       break;
1080
1081     case 'V':
1082       /* Static symbol of local scope */
1083       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1084       SYMBOL_CLASS (sym) = LOC_STATIC;
1085       SYMBOL_VALUE_ADDRESS (sym) = valu;
1086       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
1087       add_symbol_to_list (sym, &local_symbols);
1088       break;
1089
1090     case 'v':
1091       /* Reference parameter */
1092       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1093       SYMBOL_CLASS (sym) = LOC_REF_ARG;
1094       SYMBOL_VALUE (sym) = valu;
1095       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
1096       add_symbol_to_list (sym, &local_symbols);
1097       break;
1098
1099     case 'X':
1100       /* This is used by Sun FORTRAN for "function result value".
1101          Sun claims ("dbx and dbxtool interfaces", 2nd ed)
1102          that Pascal uses it too, but when I tried it Pascal used
1103          "x:3" (local symbol) instead.  */
1104       SYMBOL_TYPE (sym) = read_type (&p, objfile);
1105       SYMBOL_CLASS (sym) = LOC_LOCAL;
1106       SYMBOL_VALUE (sym) = valu;
1107       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
1108       add_symbol_to_list (sym, &local_symbols);
1109       break;
1110
1111     default:
1112       SYMBOL_TYPE (sym) = error_type (&p);
1113       SYMBOL_CLASS (sym) = LOC_CONST;
1114       SYMBOL_VALUE (sym) = 0;
1115       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
1116       add_symbol_to_list (sym, &file_symbols);
1117       break;
1118     }
1119
1120   /* When passing structures to a function, some systems sometimes pass
1121      the address in a register, not the structure itself. 
1122
1123      If REG_STRUCT_HAS_ADDR yields non-zero we have to convert LOC_REGPARM
1124      to LOC_REGPARM_ADDR for structures and unions.  */
1125
1126 #if !defined (REG_STRUCT_HAS_ADDR)
1127 #define REG_STRUCT_HAS_ADDR(gcc_p) 0
1128 #endif
1129
1130   if (SYMBOL_CLASS (sym) == LOC_REGPARM
1131       && REG_STRUCT_HAS_ADDR (processing_gcc_compilation)
1132       && (   (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT)
1133           || (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_UNION)))
1134     SYMBOL_CLASS (sym) = LOC_REGPARM_ADDR;
1135
1136   return sym;
1137 }
1138
1139 \f
1140 /* Skip rest of this symbol and return an error type.
1141
1142    General notes on error recovery:  error_type always skips to the
1143    end of the symbol (modulo cretinous dbx symbol name continuation).
1144    Thus code like this:
1145
1146    if (*(*pp)++ != ';')
1147      return error_type (pp);
1148
1149    is wrong because if *pp starts out pointing at '\0' (typically as the
1150    result of an earlier error), it will be incremented to point to the
1151    start of the next symbol, which might produce strange results, at least
1152    if you run off the end of the string table.  Instead use
1153
1154    if (**pp != ';')
1155      return error_type (pp);
1156    ++*pp;
1157
1158    or
1159
1160    if (**pp != ';')
1161      foo = error_type (pp);
1162    else
1163      ++*pp;
1164
1165    And in case it isn't obvious, the point of all this hair is so the compiler
1166    can define new types and new syntaxes, and old versions of the
1167    debugger will be able to read the new symbol tables.  */
1168
1169 static struct type *
1170 error_type (pp)
1171      char **pp;
1172 {
1173   complain (&error_type_complaint);
1174   while (1)
1175     {
1176       /* Skip to end of symbol.  */
1177       while (**pp != '\0')
1178         {
1179           (*pp)++;
1180         }
1181
1182       /* Check for and handle cretinous dbx symbol name continuation!  */
1183       if ((*pp)[-1] == '\\')
1184         {
1185           *pp = next_symbol_text ();
1186         }
1187       else
1188         {
1189           break;
1190         }
1191     }
1192   return (builtin_type_error);
1193 }
1194
1195 \f
1196 /* Read type information or a type definition; return the type.  Even
1197    though this routine accepts either type information or a type
1198    definition, the distinction is relevant--some parts of stabsread.c
1199    assume that type information starts with a digit, '-', or '(' in
1200    deciding whether to call read_type.  */
1201
1202 struct type *
1203 read_type (pp, objfile)
1204      register char **pp;
1205      struct objfile *objfile;
1206 {
1207   register struct type *type = 0;
1208   struct type *type1;
1209   int typenums[2];
1210   int xtypenums[2];
1211   char type_descriptor;
1212
1213   /* Size in bits of type if specified by a type attribute, or -1 if
1214      there is no size attribute.  */
1215   int type_size = -1;
1216
1217   /* Read type number if present.  The type number may be omitted.
1218      for instance in a two-dimensional array declared with type
1219      "ar1;1;10;ar1;1;10;4".  */
1220   if ((**pp >= '0' && **pp <= '9')
1221       || **pp == '('
1222       || **pp == '-')
1223     {
1224       if (read_type_number (pp, typenums) != 0)
1225         return error_type (pp);
1226       
1227       /* Type is not being defined here.  Either it already exists,
1228          or this is a forward reference to it.  dbx_alloc_type handles
1229          both cases.  */
1230       if (**pp != '=')
1231         return dbx_alloc_type (typenums, objfile);
1232
1233       /* Type is being defined here.  */
1234       /* Skip the '='.  */
1235       ++(*pp);
1236
1237       while (**pp == '@')
1238         {
1239           char *p = *pp + 1;
1240           /* It might be a type attribute or a member type.  */
1241           if (isdigit (*p) || *p ==  '(' || *p == '-')
1242             /* Member type.  */
1243             break;
1244           else
1245             {
1246               /* Type attributes.  */
1247               char *attr = p;
1248
1249               /* Skip to the semicolon.  */
1250               while (*p != ';' && *p != '\0')
1251                 ++p;
1252               *pp = p;
1253               if (*p == '\0')
1254                 return error_type (pp);
1255               else
1256                 /* Skip the semicolon.  */
1257                 ++*pp;
1258
1259               switch (*attr)
1260                 {
1261                 case 's':
1262                   type_size = atoi (attr + 1);
1263                   if (type_size <= 0)
1264                     type_size = -1;
1265                   break;
1266                 default:
1267                   /* Ignore unrecognized type attributes, so future compilers
1268                      can invent new ones.  */
1269                   break;
1270                 }
1271             }
1272         }
1273       /* Skip the type descriptor, we get it below with (*pp)[-1].  */
1274       ++(*pp);
1275     }
1276   else
1277     {
1278       /* 'typenums=' not present, type is anonymous.  Read and return
1279          the definition, but don't put it in the type vector.  */
1280       typenums[0] = typenums[1] = -1;
1281       (*pp)++;
1282     }
1283
1284   type_descriptor = (*pp)[-1];
1285   switch (type_descriptor)
1286     {
1287     case 'x':
1288       {
1289         enum type_code code;
1290
1291         /* Used to index through file_symbols.  */
1292         struct pending *ppt;
1293         int i;
1294         
1295         /* Name including "struct", etc.  */
1296         char *type_name;
1297         
1298         {
1299           char *from, *to, *p;
1300           
1301           /* Set the type code according to the following letter.  */
1302           switch ((*pp)[0])
1303             {
1304             case 's':
1305               code = TYPE_CODE_STRUCT;
1306               break;
1307             case 'u':
1308               code = TYPE_CODE_UNION;
1309               break;
1310             case 'e':
1311               code = TYPE_CODE_ENUM;
1312               break;
1313             default:
1314               {
1315                 /* Complain and keep going, so compilers can invent new
1316                    cross-reference types.  */
1317                 static struct complaint msg =
1318                   {"Unrecognized cross-reference type `%c'", 0, 0};
1319                 complain (&msg, (*pp)[0]);
1320                 code = TYPE_CODE_STRUCT;
1321                 break;
1322               }
1323             }
1324            
1325           p = strchr(*pp, ':');
1326           if (p == NULL)
1327             return error_type (pp);
1328           while (p[1] == ':')
1329             {
1330                p += 2;
1331                p = strchr(p, ':');
1332                if (p == NULL)
1333                  return error_type (pp);
1334             }
1335           to = type_name = 
1336                 (char *)obstack_alloc (&objfile->type_obstack, p - *pp + 1);
1337         
1338           /* Copy the name.  */
1339           from = *pp + 1;
1340           while (from < p) 
1341             *to++ = *from++;
1342           *to = '\0';
1343           
1344           /* Set the pointer ahead of the name which we just read, and
1345              the colon.  */
1346           *pp = from + 1;
1347         }
1348
1349         /* Now check to see whether the type has already been
1350            declared.  This was written for arrays of cross-referenced
1351            types before we had TYPE_CODE_TARGET_STUBBED, so I'm pretty
1352            sure it is not necessary anymore.  But it might be a good
1353            idea, to save a little memory.  */
1354
1355         for (ppt = file_symbols; ppt; ppt = ppt->next)
1356           for (i = 0; i < ppt->nsyms; i++)
1357             {
1358               struct symbol *sym = ppt->symbol[i];
1359
1360               if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
1361                   && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
1362                   && (TYPE_CODE (SYMBOL_TYPE (sym)) == code)
1363                   && STREQ (SYMBOL_NAME (sym), type_name))
1364                 {
1365                   obstack_free (&objfile -> type_obstack, type_name);
1366                   type = SYMBOL_TYPE (sym);
1367                   return type;
1368                 }
1369             }
1370
1371         /* Didn't find the type to which this refers, so we must
1372            be dealing with a forward reference.  Allocate a type
1373            structure for it, and keep track of it so we can
1374            fill in the rest of the fields when we get the full
1375            type.  */
1376         type = dbx_alloc_type (typenums, objfile);
1377         TYPE_CODE (type) = code;
1378         TYPE_TAG_NAME (type) = type_name;
1379         INIT_CPLUS_SPECIFIC(type);
1380         TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
1381
1382         add_undefined_type (type);
1383         return type;
1384       }
1385
1386     case '-':                           /* RS/6000 built-in type */
1387     case '0':
1388     case '1':
1389     case '2':
1390     case '3':
1391     case '4':
1392     case '5':
1393     case '6':
1394     case '7':
1395     case '8':
1396     case '9':
1397     case '(':
1398
1399       (*pp)--;
1400       if (read_type_number (pp, xtypenums) != 0)
1401         return error_type (pp);
1402
1403       if (typenums[0] == xtypenums[0] && typenums[1] == xtypenums[1])
1404         /* It's being defined as itself.  That means it is "void".  */
1405         type = init_type (TYPE_CODE_VOID, 0, 0, NULL, objfile);
1406       else
1407         {
1408           struct type *xtype = *dbx_lookup_type (xtypenums);
1409
1410           /* This can happen if we had '-' followed by a garbage character,
1411              for example.  */
1412           if (xtype == NULL)
1413             return error_type (pp);
1414
1415           /* The type is being defined to another type.  So we copy the type.
1416              This loses if we copy a C++ class and so we lose track of how
1417              the names are mangled (but g++ doesn't output stabs like this
1418              now anyway).  */
1419
1420           type = alloc_type (objfile);
1421           memcpy (type, xtype, sizeof (struct type));
1422
1423           /* The idea behind clearing the names is that the only purpose
1424              for defining a type to another type is so that the name of
1425              one can be different.  So we probably don't need to worry much
1426              about the case where the compiler doesn't give a name to the
1427              new type.  */
1428           TYPE_NAME (type) = NULL;
1429           TYPE_TAG_NAME (type) = NULL;
1430         }
1431       if (typenums[0] != -1)
1432         *dbx_lookup_type (typenums) = type;
1433       break;
1434
1435     /* In the following types, we must be sure to overwrite any existing
1436        type that the typenums refer to, rather than allocating a new one
1437        and making the typenums point to the new one.  This is because there
1438        may already be pointers to the existing type (if it had been
1439        forward-referenced), and we must change it to a pointer, function,
1440        reference, or whatever, *in-place*.  */
1441
1442     case '*':
1443       type1 = read_type (pp, objfile);
1444       type = make_pointer_type (type1, dbx_lookup_type (typenums));
1445       break;
1446
1447     case '&':                           /* Reference to another type */
1448       type1 = read_type (pp, objfile);
1449       type = make_reference_type (type1, dbx_lookup_type (typenums));
1450       break;
1451
1452     case 'f':                           /* Function returning another type */
1453       type1 = read_type (pp, objfile);
1454       type = make_function_type (type1, dbx_lookup_type (typenums));
1455       break;
1456
1457     case 'k':                           /* Const qualifier on some type (Sun) */
1458       type = read_type (pp, objfile);
1459       /* FIXME! For now, we ignore const and volatile qualifiers.  */
1460       break;
1461
1462     case 'B':                           /* Volatile qual on some type (Sun) */
1463       type = read_type (pp, objfile);
1464       /* FIXME! For now, we ignore const and volatile qualifiers.  */
1465       break;
1466
1467 /* FIXME -- we should be doing smash_to_XXX types here.  */
1468     case '@':                           /* Member (class & variable) type */
1469       {
1470         struct type *domain = read_type (pp, objfile);
1471         struct type *memtype;
1472
1473         if (**pp != ',')
1474           /* Invalid member type data format.  */
1475           return error_type (pp);
1476         ++*pp;
1477
1478         memtype = read_type (pp, objfile);
1479         type = dbx_alloc_type (typenums, objfile);
1480         smash_to_member_type (type, domain, memtype);
1481       }
1482       break;
1483
1484     case '#':                           /* Method (class & fn) type */
1485       if ((*pp)[0] == '#')
1486         {
1487           /* We'll get the parameter types from the name.  */
1488           struct type *return_type;
1489
1490           (*pp)++;
1491           return_type = read_type (pp, objfile);
1492           if (*(*pp)++ != ';')
1493             complain (&invalid_member_complaint, symnum);
1494           type = allocate_stub_method (return_type);
1495           if (typenums[0] != -1)
1496             *dbx_lookup_type (typenums) = type;
1497         }
1498       else
1499         {
1500           struct type *domain = read_type (pp, objfile);
1501           struct type *return_type;
1502           struct type **args;
1503
1504           if (**pp != ',')
1505             /* Invalid member type data format.  */
1506             return error_type (pp);
1507           else
1508             ++(*pp);
1509
1510           return_type = read_type (pp, objfile);
1511           args = read_args (pp, ';', objfile);
1512           type = dbx_alloc_type (typenums, objfile);
1513           smash_to_method_type (type, domain, return_type, args);
1514         }
1515       break;
1516
1517     case 'r':                           /* Range type */
1518       type = read_range_type (pp, typenums, objfile);
1519       if (typenums[0] != -1)
1520         *dbx_lookup_type (typenums) = type;
1521       break;
1522
1523     case 'b':                           /* Sun ACC builtin int type */
1524       type = read_sun_builtin_type (pp, typenums, objfile);
1525       if (typenums[0] != -1)
1526         *dbx_lookup_type (typenums) = type;
1527       break;
1528
1529     case 'R':                           /* Sun ACC builtin float type */
1530       type = read_sun_floating_type (pp, typenums, objfile);
1531       if (typenums[0] != -1)
1532         *dbx_lookup_type (typenums) = type;
1533       break;
1534     
1535     case 'e':                           /* Enumeration type */
1536       type = dbx_alloc_type (typenums, objfile);
1537       type = read_enum_type (pp, type, objfile);
1538       if (typenums[0] != -1)
1539         *dbx_lookup_type (typenums) = type;
1540       break;
1541
1542     case 's':                           /* Struct type */
1543     case 'u':                           /* Union type */
1544       type = dbx_alloc_type (typenums, objfile);
1545       if (!TYPE_NAME (type))
1546         {
1547           TYPE_NAME (type) = type_synonym_name;
1548         }
1549       type_synonym_name = NULL;
1550       switch (type_descriptor)
1551         {
1552           case 's':
1553             TYPE_CODE (type) = TYPE_CODE_STRUCT;
1554             break;
1555           case 'u':
1556             TYPE_CODE (type) = TYPE_CODE_UNION;
1557             break;
1558         }
1559       type = read_struct_type (pp, type, objfile);
1560       break;
1561
1562     case 'a':                           /* Array type */
1563       if (**pp != 'r')
1564         return error_type (pp);
1565       ++*pp;
1566       
1567       type = dbx_alloc_type (typenums, objfile);
1568       type = read_array_type (pp, type, objfile);
1569       break;
1570
1571     case 'S':
1572       type1 = read_type (pp, objfile);
1573       type = create_set_type ((struct type*) NULL, type1);
1574       if (typenums[0] != -1)
1575         *dbx_lookup_type (typenums) = type;
1576       break;
1577
1578     default:
1579       --*pp;                    /* Go back to the symbol in error */
1580                                 /* Particularly important if it was \0! */
1581       return error_type (pp);
1582     }
1583
1584   if (type == 0)
1585     {
1586       warning ("GDB internal error, type is NULL in stabsread.c\n");
1587       return error_type (pp);
1588     }
1589
1590   /* Size specified in a type attribute overrides any other size.  */
1591   if (type_size != -1)
1592     TYPE_LENGTH (type) = type_size / TARGET_CHAR_BIT;
1593
1594   return type;
1595 }
1596 \f
1597 /* RS/6000 xlc/dbx combination uses a set of builtin types, starting from -1.
1598    Return the proper type node for a given builtin type number. */
1599
1600 static struct type *
1601 rs6000_builtin_type (typenum)
1602      int typenum;
1603 {
1604   /* We recognize types numbered from -NUMBER_RECOGNIZED to -1.  */
1605 #define NUMBER_RECOGNIZED 30
1606   /* This includes an empty slot for type number -0.  */
1607   static struct type *negative_types[NUMBER_RECOGNIZED + 1];
1608   struct type *rettype = NULL;
1609
1610   if (typenum >= 0 || typenum < -NUMBER_RECOGNIZED)
1611     {
1612       complain (&rs6000_builtin_complaint, typenum);
1613       return builtin_type_error;
1614     }
1615   if (negative_types[-typenum] != NULL)
1616     return negative_types[-typenum];
1617
1618 #if TARGET_CHAR_BIT != 8
1619   #error This code wrong for TARGET_CHAR_BIT not 8
1620   /* These definitions all assume that TARGET_CHAR_BIT is 8.  I think
1621      that if that ever becomes not true, the correct fix will be to
1622      make the size in the struct type to be in bits, not in units of
1623      TARGET_CHAR_BIT.  */
1624 #endif
1625
1626   switch (-typenum)
1627     {
1628     case 1:
1629       /* The size of this and all the other types are fixed, defined
1630          by the debugging format.  If there is a type called "int" which
1631          is other than 32 bits, then it should use a new negative type
1632          number (or avoid negative type numbers for that case).
1633          See stabs.texinfo.  */
1634       rettype = init_type (TYPE_CODE_INT, 4, 0, "int", NULL);
1635       break;
1636     case 2:
1637       rettype = init_type (TYPE_CODE_INT, 1, 0, "char", NULL);
1638       break;
1639     case 3:
1640       rettype = init_type (TYPE_CODE_INT, 2, 0, "short", NULL);
1641       break;
1642     case 4:
1643       rettype = init_type (TYPE_CODE_INT, 4, 0, "long", NULL);
1644       break;
1645     case 5:
1646       rettype = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED,
1647                            "unsigned char", NULL);
1648       break;
1649     case 6:
1650       rettype = init_type (TYPE_CODE_INT, 1, 0, "signed char", NULL);
1651       break;
1652     case 7:
1653       rettype = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED,
1654                            "unsigned short", NULL);
1655       break;
1656     case 8:
1657       rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1658                            "unsigned int", NULL);
1659       break;
1660     case 9:
1661       rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1662                            "unsigned", NULL);
1663     case 10:
1664       rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1665                            "unsigned long", NULL);
1666       break;
1667     case 11:
1668       rettype = init_type (TYPE_CODE_VOID, 0, 0, "void", NULL);
1669       break;
1670     case 12:
1671       /* IEEE single precision (32 bit).  */
1672       rettype = init_type (TYPE_CODE_FLT, 4, 0, "float", NULL);
1673       break;
1674     case 13:
1675       /* IEEE double precision (64 bit).  */
1676       rettype = init_type (TYPE_CODE_FLT, 8, 0, "double", NULL);
1677       break;
1678     case 14:
1679       /* This is an IEEE double on the RS/6000, and different machines with
1680          different sizes for "long double" should use different negative
1681          type numbers.  See stabs.texinfo.  */
1682       rettype = init_type (TYPE_CODE_FLT, 8, 0, "long double", NULL);
1683       break;
1684     case 15:
1685       rettype = init_type (TYPE_CODE_INT, 4, 0, "integer", NULL);
1686       break;
1687     case 16:
1688       rettype = init_type (TYPE_CODE_BOOL, 4, 0, "boolean", NULL);
1689       break;
1690     case 17:
1691       rettype = init_type (TYPE_CODE_FLT, 4, 0, "short real", NULL);
1692       break;
1693     case 18:
1694       rettype = init_type (TYPE_CODE_FLT, 8, 0, "real", NULL);
1695       break;
1696     case 19:
1697       rettype = init_type (TYPE_CODE_ERROR, 0, 0, "stringptr", NULL);
1698       break;
1699     case 20:
1700       rettype = init_type (TYPE_CODE_CHAR, 1, TYPE_FLAG_UNSIGNED,
1701                            "character", NULL);
1702       break;
1703     case 21:
1704       rettype = init_type (TYPE_CODE_BOOL, 1, TYPE_FLAG_UNSIGNED,
1705                            "logical*1", NULL);
1706       break;
1707     case 22:
1708       rettype = init_type (TYPE_CODE_BOOL, 2, TYPE_FLAG_UNSIGNED,
1709                            "logical*2", NULL);
1710       break;
1711     case 23:
1712       rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
1713                            "logical*4", NULL);
1714       break;
1715     case 24:
1716       rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
1717                            "logical", NULL);
1718       break;
1719     case 25:
1720       /* Complex type consisting of two IEEE single precision values.  */
1721       rettype = init_type (TYPE_CODE_ERROR, 8, 0, "complex", NULL);
1722       break;
1723     case 26:
1724       /* Complex type consisting of two IEEE double precision values.  */
1725       rettype = init_type (TYPE_CODE_ERROR, 16, 0, "double complex", NULL);
1726       break;
1727     case 27:
1728       rettype = init_type (TYPE_CODE_INT, 1, 0, "integer*1", NULL);
1729       break;
1730     case 28:
1731       rettype = init_type (TYPE_CODE_INT, 2, 0, "integer*2", NULL);
1732       break;
1733     case 29:
1734       rettype = init_type (TYPE_CODE_INT, 4, 0, "integer*4", NULL);
1735       break;
1736     case 30:
1737       rettype = init_type (TYPE_CODE_CHAR, 2, 0, "wchar", NULL);
1738       break;
1739     }
1740   negative_types[-typenum] = rettype;
1741   return rettype;
1742 }
1743 \f
1744 /* This page contains subroutines of read_type.  */
1745
1746 #define VISIBILITY_PRIVATE      '0'     /* Stabs character for private field */
1747 #define VISIBILITY_PROTECTED    '1'     /* Stabs character for protected fld */
1748 #define VISIBILITY_PUBLIC       '2'     /* Stabs character for public field */
1749 #define VISIBILITY_IGNORE       '9'     /* Optimized out or zero length */
1750
1751 /* Read member function stabs info for C++ classes.  The form of each member
1752    function data is:
1753
1754         NAME :: TYPENUM[=type definition] ARGS : PHYSNAME ;
1755
1756    An example with two member functions is:
1757
1758         afunc1::20=##15;:i;2A.;afunc2::20:i;2A.;
1759
1760    For the case of overloaded operators, the format is op$::*.funcs, where
1761    $ is the CPLUS_MARKER (usually '$'), `*' holds the place for an operator
1762    name (such as `+=') and `.' marks the end of the operator name.
1763
1764    Returns 1 for success, 0 for failure.  */
1765
1766 static int
1767 read_member_functions (fip, pp, type, objfile)
1768      struct field_info *fip;
1769      char **pp;
1770      struct type *type;
1771      struct objfile *objfile;
1772 {
1773   int nfn_fields = 0;
1774   int length = 0;
1775   /* Total number of member functions defined in this class.  If the class
1776      defines two `f' functions, and one `g' function, then this will have
1777      the value 3.  */
1778   int total_length = 0;
1779   int i;
1780   struct next_fnfield
1781     {
1782       struct next_fnfield *next;
1783       struct fn_field fn_field;
1784     } *sublist;
1785   struct type *look_ahead_type;
1786   struct next_fnfieldlist *new_fnlist;
1787   struct next_fnfield *new_sublist;
1788   char *main_fn_name;
1789   register char *p;
1790       
1791   /* Process each list until we find something that is not a member function
1792      or find the end of the functions. */
1793
1794   while (**pp != ';')
1795     {
1796       /* We should be positioned at the start of the function name.
1797          Scan forward to find the first ':' and if it is not the
1798          first of a "::" delimiter, then this is not a member function. */
1799       p = *pp;
1800       while (*p != ':')
1801         {
1802           p++;
1803         }
1804       if (p[1] != ':')
1805         {
1806           break;
1807         }
1808
1809       sublist = NULL;
1810       look_ahead_type = NULL;
1811       length = 0;
1812       
1813       new_fnlist = (struct next_fnfieldlist *)
1814         xmalloc (sizeof (struct next_fnfieldlist));
1815       make_cleanup (free, new_fnlist);
1816       memset (new_fnlist, 0, sizeof (struct next_fnfieldlist));
1817       
1818       if ((*pp)[0] == 'o' && (*pp)[1] == 'p' && (*pp)[2] == CPLUS_MARKER)
1819         {
1820           /* This is a completely wierd case.  In order to stuff in the
1821              names that might contain colons (the usual name delimiter),
1822              Mike Tiemann defined a different name format which is
1823              signalled if the identifier is "op$".  In that case, the
1824              format is "op$::XXXX." where XXXX is the name.  This is
1825              used for names like "+" or "=".  YUUUUUUUK!  FIXME!  */
1826           /* This lets the user type "break operator+".
1827              We could just put in "+" as the name, but that wouldn't
1828              work for "*".  */
1829           static char opname[32] = {'o', 'p', CPLUS_MARKER};
1830           char *o = opname + 3;
1831           
1832           /* Skip past '::'.  */
1833           *pp = p + 2;
1834
1835           STABS_CONTINUE (pp);
1836           p = *pp;
1837           while (*p != '.')
1838             {
1839               *o++ = *p++;
1840             }
1841           main_fn_name = savestring (opname, o - opname);
1842           /* Skip past '.'  */
1843           *pp = p + 1;
1844         }
1845       else
1846         {
1847           main_fn_name = savestring (*pp, p - *pp);
1848           /* Skip past '::'.  */
1849           *pp = p + 2;
1850         }
1851       new_fnlist -> fn_fieldlist.name = main_fn_name;
1852       
1853       do
1854         {
1855           new_sublist =
1856             (struct next_fnfield *) xmalloc (sizeof (struct next_fnfield));
1857           make_cleanup (free, new_sublist);
1858           memset (new_sublist, 0, sizeof (struct next_fnfield));
1859           
1860           /* Check for and handle cretinous dbx symbol name continuation!  */
1861           if (look_ahead_type == NULL)
1862             {
1863               /* Normal case. */
1864               STABS_CONTINUE (pp);
1865               
1866               new_sublist -> fn_field.type = read_type (pp, objfile);
1867               if (**pp != ':')
1868                 {
1869                   /* Invalid symtab info for member function.  */
1870                   return 0;
1871                 }
1872             }
1873           else
1874             {
1875               /* g++ version 1 kludge */
1876               new_sublist -> fn_field.type = look_ahead_type;
1877               look_ahead_type = NULL;
1878             }
1879           
1880           (*pp)++;
1881           p = *pp;
1882           while (*p != ';')
1883             {
1884               p++;
1885             }
1886           
1887           /* If this is just a stub, then we don't have the real name here. */
1888
1889           if (TYPE_FLAGS (new_sublist -> fn_field.type) & TYPE_FLAG_STUB)
1890             {
1891               if (!TYPE_DOMAIN_TYPE (new_sublist -> fn_field.type))
1892                 TYPE_DOMAIN_TYPE (new_sublist -> fn_field.type) = type;
1893               new_sublist -> fn_field.is_stub = 1;
1894             }
1895           new_sublist -> fn_field.physname = savestring (*pp, p - *pp);
1896           *pp = p + 1;
1897           
1898           /* Set this member function's visibility fields.  */
1899           switch (*(*pp)++)
1900             {
1901               case VISIBILITY_PRIVATE:
1902                 new_sublist -> fn_field.is_private = 1;
1903                 break;
1904               case VISIBILITY_PROTECTED:
1905                 new_sublist -> fn_field.is_protected = 1;
1906                 break;
1907             }
1908           
1909           STABS_CONTINUE (pp);
1910           switch (**pp)
1911             {
1912               case 'A': /* Normal functions. */
1913                 new_sublist -> fn_field.is_const = 0;
1914                 new_sublist -> fn_field.is_volatile = 0;
1915                 (*pp)++;
1916                 break;
1917               case 'B': /* `const' member functions. */
1918                 new_sublist -> fn_field.is_const = 1;
1919                 new_sublist -> fn_field.is_volatile = 0;
1920                 (*pp)++;
1921                 break;
1922               case 'C': /* `volatile' member function. */
1923                 new_sublist -> fn_field.is_const = 0;
1924                 new_sublist -> fn_field.is_volatile = 1;
1925                 (*pp)++;
1926                 break;
1927               case 'D': /* `const volatile' member function. */
1928                 new_sublist -> fn_field.is_const = 1;
1929                 new_sublist -> fn_field.is_volatile = 1;
1930                 (*pp)++;
1931                 break;
1932               case '*': /* File compiled with g++ version 1 -- no info */
1933               case '?':
1934               case '.':
1935                 break;
1936               default:
1937                 complain (&const_vol_complaint, **pp);
1938                 break;
1939             }
1940           
1941           switch (*(*pp)++)
1942             {
1943               case '*':
1944               {
1945                 int nbits;
1946                 /* virtual member function, followed by index.
1947                    The sign bit is set to distinguish pointers-to-methods
1948                    from virtual function indicies.  Since the array is
1949                    in words, the quantity must be shifted left by 1
1950                    on 16 bit machine, and by 2 on 32 bit machine, forcing
1951                    the sign bit out, and usable as a valid index into
1952                    the array.  Remove the sign bit here.  */
1953                 new_sublist -> fn_field.voffset =
1954                   (0x7fffffff & read_huge_number (pp, ';', &nbits)) + 2;
1955                 if (nbits != 0)
1956                   return 0;
1957               
1958                 STABS_CONTINUE (pp);
1959                 if (**pp == ';' || **pp == '\0')
1960                   {
1961                     /* Must be g++ version 1.  */
1962                     new_sublist -> fn_field.fcontext = 0;
1963                   }
1964                 else
1965                   {
1966                     /* Figure out from whence this virtual function came.
1967                        It may belong to virtual function table of
1968                        one of its baseclasses.  */
1969                     look_ahead_type = read_type (pp, objfile);
1970                     if (**pp == ':')
1971                       {
1972                         /* g++ version 1 overloaded methods. */
1973                       }
1974                     else
1975                       {
1976                         new_sublist -> fn_field.fcontext = look_ahead_type;
1977                         if (**pp != ';')
1978                           {
1979                             return 0;
1980                           }
1981                         else
1982                           {
1983                             ++*pp;
1984                           }
1985                         look_ahead_type = NULL;
1986                       }
1987                   }
1988                 break;
1989               }
1990               case '?':
1991                 /* static member function.  */
1992                 new_sublist -> fn_field.voffset = VOFFSET_STATIC;
1993                 if (strncmp (new_sublist -> fn_field.physname,
1994                              main_fn_name, strlen (main_fn_name)))
1995                   {
1996                     new_sublist -> fn_field.is_stub = 1;
1997                   }
1998                 break;
1999               
2000               default:
2001                 /* error */
2002                 complain (&member_fn_complaint, (*pp)[-1]);
2003                 /* Fall through into normal member function.  */
2004               
2005               case '.':
2006                 /* normal member function.  */
2007                 new_sublist -> fn_field.voffset = 0;
2008                 new_sublist -> fn_field.fcontext = 0;
2009                 break;
2010             }
2011           
2012           new_sublist -> next = sublist;
2013           sublist = new_sublist;
2014           length++;
2015           STABS_CONTINUE (pp);
2016         }
2017       while (**pp != ';' && **pp != '\0');
2018       
2019       (*pp)++;
2020       
2021       new_fnlist -> fn_fieldlist.fn_fields = (struct fn_field *)
2022         obstack_alloc (&objfile -> type_obstack, 
2023                        sizeof (struct fn_field) * length);
2024       memset (new_fnlist -> fn_fieldlist.fn_fields, 0,
2025               sizeof (struct fn_field) * length);
2026       for (i = length; (i--, sublist); sublist = sublist -> next)
2027         {
2028           new_fnlist -> fn_fieldlist.fn_fields[i] = sublist -> fn_field;
2029         }
2030       
2031       new_fnlist -> fn_fieldlist.length = length;
2032       new_fnlist -> next = fip -> fnlist;
2033       fip -> fnlist = new_fnlist;
2034       nfn_fields++;
2035       total_length += length;
2036       STABS_CONTINUE (pp);
2037     }
2038
2039   if (nfn_fields)
2040     {
2041       ALLOCATE_CPLUS_STRUCT_TYPE (type);
2042       TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
2043         TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * nfn_fields);
2044       memset (TYPE_FN_FIELDLISTS (type), 0,
2045               sizeof (struct fn_fieldlist) * nfn_fields);
2046       TYPE_NFN_FIELDS (type) = nfn_fields;
2047       TYPE_NFN_FIELDS_TOTAL (type) = total_length;
2048     }
2049
2050   return 1;
2051 }
2052
2053 /* Special GNU C++ name.
2054
2055    Returns 1 for success, 0 for failure.  "failure" means that we can't
2056    keep parsing and it's time for error_type().  */
2057
2058 static int
2059 read_cpp_abbrev (fip, pp, type, objfile)
2060      struct field_info *fip;
2061      char **pp;
2062      struct type *type;
2063      struct objfile *objfile;
2064 {
2065   register char *p;
2066   char *name;
2067   char cpp_abbrev;
2068   struct type *context;
2069
2070   p = *pp;
2071   if (*++p == 'v')
2072     {
2073       name = NULL;
2074       cpp_abbrev = *++p;
2075
2076       *pp = p + 1;
2077
2078       /* At this point, *pp points to something like "22:23=*22...",
2079          where the type number before the ':' is the "context" and
2080          everything after is a regular type definition.  Lookup the
2081          type, find it's name, and construct the field name. */
2082
2083       context = read_type (pp, objfile);
2084
2085       switch (cpp_abbrev)
2086         {
2087           case 'f':             /* $vf -- a virtual function table pointer */
2088             fip->list->field.name =
2089               obconcat (&objfile->type_obstack, vptr_name, "", "");
2090             break;
2091
2092           case 'b':             /* $vb -- a virtual bsomethingorother */
2093             name = type_name_no_tag (context);
2094             if (name == NULL)
2095               {
2096                 complain (&invalid_cpp_type_complaint, symnum);
2097                 name = "FOO";
2098               }
2099             fip->list->field.name =
2100               obconcat (&objfile->type_obstack, vb_name, name, "");
2101             break;
2102
2103           default:
2104             complain (&invalid_cpp_abbrev_complaint, *pp);
2105             fip->list->field.name =
2106               obconcat (&objfile->type_obstack,
2107                         "INVALID_CPLUSPLUS_ABBREV", "", "");
2108             break;
2109         }
2110
2111       /* At this point, *pp points to the ':'.  Skip it and read the
2112          field type. */
2113
2114       p = ++(*pp);
2115       if (p[-1] != ':')
2116         {
2117           complain (&invalid_cpp_abbrev_complaint, *pp);
2118           return 0;
2119         }
2120       fip->list->field.type = read_type (pp, objfile);
2121       if (**pp == ',')
2122         (*pp)++;                        /* Skip the comma.  */
2123       else
2124         return 0;
2125
2126       {
2127         int nbits;
2128         fip->list->field.bitpos = read_huge_number (pp, ';', &nbits);
2129         if (nbits != 0)
2130           return 0;
2131       }
2132       /* This field is unpacked.  */
2133       fip->list->field.bitsize = 0;
2134       fip->list->visibility = VISIBILITY_PRIVATE;
2135     }
2136   else
2137     {
2138       complain (&invalid_cpp_abbrev_complaint, *pp);
2139       /* We have no idea what syntax an unrecognized abbrev would have, so
2140          better return 0.  If we returned 1, we would need to at least advance
2141          *pp to avoid an infinite loop.  */
2142       return 0;
2143     }
2144   return 1;
2145 }
2146
2147 static void
2148 read_one_struct_field (fip, pp, p, type, objfile)
2149      struct field_info *fip;
2150      char **pp;
2151      char *p;
2152      struct type *type;
2153      struct objfile *objfile;
2154 {
2155   fip -> list -> field.name =
2156     obsavestring (*pp, p - *pp, &objfile -> type_obstack);
2157   *pp = p + 1;
2158
2159   /* This means we have a visibility for a field coming. */
2160   if (**pp == '/')
2161     {
2162       (*pp)++;
2163       fip -> list -> visibility = *(*pp)++;
2164     }
2165   else
2166     {
2167       /* normal dbx-style format, no explicit visibility */
2168       fip -> list -> visibility = VISIBILITY_PUBLIC;
2169     }
2170
2171   fip -> list -> field.type = read_type (pp, objfile);
2172   if (**pp == ':')
2173     {
2174       p = ++(*pp);
2175 #if 0
2176       /* Possible future hook for nested types. */
2177       if (**pp == '!')
2178         {
2179           fip -> list -> field.bitpos = (long)-2; /* nested type */
2180           p = ++(*pp);
2181         }
2182       else
2183 #endif
2184         {
2185           /* Static class member.  */
2186           fip -> list -> field.bitpos = (long) -1;
2187         }
2188       while (*p != ';') 
2189         {
2190           p++;
2191         }
2192       fip -> list -> field.bitsize = (long) savestring (*pp, p - *pp);
2193       *pp = p + 1;
2194       return;
2195     }
2196   else if (**pp != ',')
2197     {
2198       /* Bad structure-type format.  */
2199       complain (&stabs_general_complaint, "bad structure-type format");
2200       return;
2201     }
2202
2203   (*pp)++;                      /* Skip the comma.  */
2204
2205   {
2206     int nbits;
2207     fip -> list -> field.bitpos = read_huge_number (pp, ',', &nbits);
2208     if (nbits != 0)
2209       {
2210         complain (&stabs_general_complaint, "bad structure-type format");
2211         return;
2212       }
2213     fip -> list -> field.bitsize = read_huge_number (pp, ';', &nbits);
2214     if (nbits != 0)
2215       {
2216         complain (&stabs_general_complaint, "bad structure-type format");
2217         return;
2218       }
2219   }
2220
2221   if (fip -> list -> field.bitpos == 0 && fip -> list -> field.bitsize == 0)
2222     {
2223       /* This can happen in two cases: (1) at least for gcc 2.4.5 or so,
2224          it is a field which has been optimized out.  The correct stab for
2225          this case is to use VISIBILITY_IGNORE, but that is a recent
2226          invention.  (2) It is a 0-size array.  For example
2227          union { int num; char str[0]; } foo.  Printing "<no value>" for
2228          str in "p foo" is OK, since foo.str (and thus foo.str[3])
2229          will continue to work, and a 0-size array as a whole doesn't
2230          have any contents to print.
2231
2232          I suspect this probably could also happen with gcc -gstabs (not
2233          -gstabs+) for static fields, and perhaps other C++ extensions.
2234          Hopefully few people use -gstabs with gdb, since it is intended
2235          for dbx compatibility.  */
2236
2237       /* Ignore this field.  */
2238       fip -> list-> visibility = VISIBILITY_IGNORE;
2239     }
2240   else
2241     {
2242       /* Detect an unpacked field and mark it as such.
2243          dbx gives a bit size for all fields.
2244          Note that forward refs cannot be packed,
2245          and treat enums as if they had the width of ints.  */
2246
2247       if (TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_INT
2248           && TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_ENUM)
2249         {
2250           fip -> list -> field.bitsize = 0;
2251         }
2252       if ((fip -> list -> field.bitsize 
2253            == TARGET_CHAR_BIT * TYPE_LENGTH (fip -> list -> field.type)
2254            || (TYPE_CODE (fip -> list -> field.type) == TYPE_CODE_ENUM
2255                && (fip -> list -> field.bitsize
2256                    == TARGET_INT_BIT)
2257                )
2258            )
2259           &&
2260           fip -> list -> field.bitpos % 8 == 0)
2261         {
2262           fip -> list -> field.bitsize = 0;
2263         }
2264     }
2265 }
2266
2267
2268 /* Read struct or class data fields.  They have the form:
2269
2270         NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
2271
2272    At the end, we see a semicolon instead of a field.
2273
2274    In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
2275    a static field.
2276
2277    The optional VISIBILITY is one of:
2278
2279         '/0'    (VISIBILITY_PRIVATE)
2280         '/1'    (VISIBILITY_PROTECTED)
2281         '/2'    (VISIBILITY_PUBLIC)
2282         '/9'    (VISIBILITY_IGNORE)
2283
2284    or nothing, for C style fields with public visibility.
2285
2286    Returns 1 for success, 0 for failure.  */
2287
2288 static int
2289 read_struct_fields (fip, pp, type, objfile)
2290      struct field_info *fip;
2291      char **pp;
2292      struct type *type;
2293      struct objfile *objfile;
2294 {
2295   register char *p;
2296   struct nextfield *new;
2297
2298   /* We better set p right now, in case there are no fields at all...    */
2299
2300   p = *pp;
2301
2302   /* Read each data member type until we find the terminating ';' at the end of
2303      the data member list, or break for some other reason such as finding the
2304      start of the member function list. */
2305
2306   while (**pp != ';')
2307     {
2308       STABS_CONTINUE (pp);
2309       /* Get space to record the next field's data.  */
2310       new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2311       make_cleanup (free, new);
2312       memset (new, 0, sizeof (struct nextfield));
2313       new -> next = fip -> list;
2314       fip -> list = new;
2315
2316       /* Get the field name.  */
2317       p = *pp;
2318
2319       /* If is starts with CPLUS_MARKER it is a special abbreviation,
2320          unless the CPLUS_MARKER is followed by an underscore, in
2321          which case it is just the name of an anonymous type, which we
2322          should handle like any other type name.  We accept either '$'
2323          or '.', because a field name can never contain one of these
2324          characters except as a CPLUS_MARKER (we probably should be
2325          doing that in most parts of GDB).  */
2326
2327       if ((*p == '$' || *p == '.') && p[1] != '_')
2328         {
2329           if (!read_cpp_abbrev (fip, pp, type, objfile))
2330             return 0;
2331           continue;
2332         }
2333
2334       /* Look for the ':' that separates the field name from the field
2335          values.  Data members are delimited by a single ':', while member
2336          functions are delimited by a pair of ':'s.  When we hit the member
2337          functions (if any), terminate scan loop and return. */
2338
2339       while (*p != ':' && *p != '\0') 
2340         {
2341           p++;
2342         }
2343       if (*p == '\0')
2344         return 0;
2345
2346       /* Check to see if we have hit the member functions yet.  */
2347       if (p[1] == ':')
2348         {
2349           break;
2350         }
2351       read_one_struct_field (fip, pp, p, type, objfile);
2352     }
2353   if (p[0] == ':' && p[1] == ':')
2354     {
2355       /* chill the list of fields: the last entry (at the head) is a
2356          partially constructed entry which we now scrub. */
2357       fip -> list = fip -> list -> next;
2358     }
2359   return 1;
2360 }
2361
2362 /* The stabs for C++ derived classes contain baseclass information which
2363    is marked by a '!' character after the total size.  This function is
2364    called when we encounter the baseclass marker, and slurps up all the
2365    baseclass information.
2366
2367    Immediately following the '!' marker is the number of base classes that
2368    the class is derived from, followed by information for each base class.
2369    For each base class, there are two visibility specifiers, a bit offset
2370    to the base class information within the derived class, a reference to
2371    the type for the base class, and a terminating semicolon.
2372
2373    A typical example, with two base classes, would be "!2,020,19;0264,21;".
2374                                                        ^^ ^ ^ ^  ^ ^  ^
2375         Baseclass information marker __________________|| | | |  | |  |
2376         Number of baseclasses __________________________| | | |  | |  |
2377         Visibility specifiers (2) ________________________| | |  | |  |
2378         Offset in bits from start of class _________________| |  | |  |
2379         Type number for base class ___________________________|  | |  |
2380         Visibility specifiers (2) _______________________________| |  |
2381         Offset in bits from start of class ________________________|  |
2382         Type number of base class ____________________________________|
2383
2384   Return 1 for success, 0 for (error-type-inducing) failure.  */
2385
2386 static int
2387 read_baseclasses (fip, pp, type, objfile)
2388      struct field_info *fip;
2389      char **pp;
2390      struct type *type;
2391      struct objfile *objfile;
2392 {
2393   int i;
2394   struct nextfield *new;
2395
2396   if (**pp != '!')
2397     {
2398       return 1;
2399     }
2400   else
2401     {
2402       /* Skip the '!' baseclass information marker. */
2403       (*pp)++;
2404     }
2405
2406   ALLOCATE_CPLUS_STRUCT_TYPE (type);
2407   {
2408     int nbits;
2409     TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits);
2410     if (nbits != 0)
2411       return 0;
2412   }
2413
2414 #if 0
2415   /* Some stupid compilers have trouble with the following, so break
2416      it up into simpler expressions.  */
2417   TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *)
2418     TYPE_ALLOC (type, B_BYTES (TYPE_N_BASECLASSES (type)));
2419 #else
2420   {
2421     int num_bytes = B_BYTES (TYPE_N_BASECLASSES (type));
2422     char *pointer;
2423
2424     pointer = (char *) TYPE_ALLOC (type, num_bytes);
2425     TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *) pointer;
2426   }
2427 #endif /* 0 */
2428
2429   B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), TYPE_N_BASECLASSES (type));
2430
2431   for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
2432     {
2433       new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2434       make_cleanup (free, new);
2435       memset (new, 0, sizeof (struct nextfield));
2436       new -> next = fip -> list;
2437       fip -> list = new;
2438       new -> field.bitsize = 0; /* this should be an unpacked field! */
2439
2440       STABS_CONTINUE (pp);
2441       switch (**pp)
2442         {
2443           case '0':
2444             /* Nothing to do. */
2445             break;
2446           case '1':
2447             SET_TYPE_FIELD_VIRTUAL (type, i);
2448             break;
2449           default:
2450             /* Unknown character.  Complain and treat it as non-virtual.  */
2451             {
2452               static struct complaint msg = {
2453                 "Unknown virtual character `%c' for baseclass", 0, 0};
2454               complain (&msg, **pp);
2455             }
2456         }
2457       ++(*pp);
2458
2459       new -> visibility = *(*pp)++;
2460       switch (new -> visibility)
2461         {
2462           case VISIBILITY_PRIVATE:
2463           case VISIBILITY_PROTECTED:
2464           case VISIBILITY_PUBLIC:
2465             break;
2466           default:
2467             /* Bad visibility format.  Complain and treat it as
2468                public.  */
2469             {
2470               static struct complaint msg = {
2471                 "Unknown visibility `%c' for baseclass", 0, 0};
2472               complain (&msg, new -> visibility);
2473               new -> visibility = VISIBILITY_PUBLIC;
2474             }
2475         }
2476
2477       {
2478         int nbits;
2479         
2480         /* The remaining value is the bit offset of the portion of the object
2481            corresponding to this baseclass.  Always zero in the absence of
2482            multiple inheritance.  */
2483
2484         new -> field.bitpos = read_huge_number (pp, ',', &nbits);
2485         if (nbits != 0)
2486           return 0;
2487       }
2488
2489       /* The last piece of baseclass information is the type of the
2490          base class.  Read it, and remember it's type name as this
2491          field's name. */
2492
2493       new -> field.type = read_type (pp, objfile);
2494       new -> field.name = type_name_no_tag (new -> field.type);
2495
2496       /* skip trailing ';' and bump count of number of fields seen */
2497       if (**pp == ';')
2498         (*pp)++;
2499       else
2500         return 0;
2501     }
2502   return 1;
2503 }
2504
2505 /* The tail end of stabs for C++ classes that contain a virtual function
2506    pointer contains a tilde, a %, and a type number.
2507    The type number refers to the base class (possibly this class itself) which
2508    contains the vtable pointer for the current class.
2509
2510    This function is called when we have parsed all the method declarations,
2511    so we can look for the vptr base class info.  */
2512
2513 static int
2514 read_tilde_fields (fip, pp, type, objfile)
2515      struct field_info *fip;
2516      char **pp;
2517      struct type *type;
2518      struct objfile *objfile;
2519 {
2520   register char *p;
2521
2522   STABS_CONTINUE (pp);
2523
2524   /* If we are positioned at a ';', then skip it. */
2525   if (**pp == ';')
2526     {
2527       (*pp)++;
2528     }
2529
2530   if (**pp == '~')
2531     {
2532       (*pp)++;
2533
2534       if (**pp == '=' || **pp == '+' || **pp == '-')
2535         {
2536           /* Obsolete flags that used to indicate the presence
2537              of constructors and/or destructors. */
2538           (*pp)++;
2539         }
2540
2541       /* Read either a '%' or the final ';'.  */
2542       if (*(*pp)++ == '%')
2543         {
2544           /* The next number is the type number of the base class
2545              (possibly our own class) which supplies the vtable for
2546              this class.  Parse it out, and search that class to find
2547              its vtable pointer, and install those into TYPE_VPTR_BASETYPE
2548              and TYPE_VPTR_FIELDNO.  */
2549
2550           struct type *t;
2551           int i;
2552
2553           t = read_type (pp, objfile);
2554           p = (*pp)++;
2555           while (*p != '\0' && *p != ';')
2556             {
2557               p++;
2558             }
2559           if (*p == '\0')
2560             {
2561               /* Premature end of symbol.  */
2562               return 0;
2563             }
2564           
2565           TYPE_VPTR_BASETYPE (type) = t;
2566           if (type == t)                /* Our own class provides vtbl ptr */
2567             {
2568               for (i = TYPE_NFIELDS (t) - 1;
2569                    i >= TYPE_N_BASECLASSES (t);
2570                    --i)
2571                 {
2572                   if (! strncmp (TYPE_FIELD_NAME (t, i), vptr_name, 
2573                                  sizeof (vptr_name) - 1))
2574                     {
2575                       TYPE_VPTR_FIELDNO (type) = i;
2576                       goto gotit;
2577                     }
2578                 }
2579               /* Virtual function table field not found.  */
2580               complain (&vtbl_notfound_complaint, TYPE_NAME (type));
2581               return 0;
2582             }
2583           else
2584             {
2585               TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
2586             }
2587
2588     gotit:
2589           *pp = p + 1;
2590         }
2591     }
2592   return 1;
2593 }
2594
2595 static int
2596 attach_fn_fields_to_type (fip, type)
2597      struct field_info *fip;
2598      register struct type *type;
2599 {
2600   register int n;
2601
2602   for (n = 0; n < TYPE_N_BASECLASSES (type); n++)
2603     {
2604       if (TYPE_CODE (TYPE_BASECLASS (type, n)) == TYPE_CODE_UNDEF)
2605         {
2606           /* @@ Memory leak on objfile -> type_obstack?  */
2607           return 0;
2608         }
2609       TYPE_NFN_FIELDS_TOTAL (type) +=
2610         TYPE_NFN_FIELDS_TOTAL (TYPE_BASECLASS (type, n));
2611     }
2612
2613   for (n = TYPE_NFN_FIELDS (type);
2614        fip -> fnlist != NULL;
2615        fip -> fnlist = fip -> fnlist -> next)
2616     {
2617       --n;                      /* Circumvent Sun3 compiler bug */
2618       TYPE_FN_FIELDLISTS (type)[n] = fip -> fnlist -> fn_fieldlist;
2619     }
2620   return 1;
2621 }
2622
2623 /* Create the vector of fields, and record how big it is.
2624    We need this info to record proper virtual function table information
2625    for this class's virtual functions.  */
2626
2627 static int
2628 attach_fields_to_type (fip, type, objfile)
2629      struct field_info *fip;
2630      register struct type *type;
2631      struct objfile *objfile;
2632 {
2633   register int nfields = 0;
2634   register int non_public_fields = 0;
2635   register struct nextfield *scan;
2636
2637   /* Count up the number of fields that we have, as well as taking note of
2638      whether or not there are any non-public fields, which requires us to
2639      allocate and build the private_field_bits and protected_field_bits
2640      bitfields. */
2641
2642   for (scan = fip -> list; scan != NULL; scan = scan -> next)
2643     {
2644       nfields++;
2645       if (scan -> visibility != VISIBILITY_PUBLIC)
2646         {
2647           non_public_fields++;
2648         }
2649     }
2650
2651   /* Now we know how many fields there are, and whether or not there are any
2652      non-public fields.  Record the field count, allocate space for the
2653      array of fields, and create blank visibility bitfields if necessary. */
2654
2655   TYPE_NFIELDS (type) = nfields;
2656   TYPE_FIELDS (type) = (struct field *)
2657     TYPE_ALLOC (type, sizeof (struct field) * nfields);
2658   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
2659
2660   if (non_public_fields)
2661     {
2662       ALLOCATE_CPLUS_STRUCT_TYPE (type);
2663
2664       TYPE_FIELD_PRIVATE_BITS (type) =
2665         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2666       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
2667
2668       TYPE_FIELD_PROTECTED_BITS (type) =
2669         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2670       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
2671
2672       TYPE_FIELD_IGNORE_BITS (type) =
2673         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2674       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
2675     }
2676
2677   /* Copy the saved-up fields into the field vector.  Start from the head
2678      of the list, adding to the tail of the field array, so that they end
2679      up in the same order in the array in which they were added to the list. */
2680
2681   while (nfields-- > 0)
2682     {
2683       TYPE_FIELD (type, nfields) = fip -> list -> field;
2684       switch (fip -> list -> visibility)
2685         {
2686           case VISIBILITY_PRIVATE:
2687             SET_TYPE_FIELD_PRIVATE (type, nfields);
2688             break;
2689
2690           case VISIBILITY_PROTECTED:
2691             SET_TYPE_FIELD_PROTECTED (type, nfields);
2692             break;
2693
2694           case VISIBILITY_IGNORE:
2695             SET_TYPE_FIELD_IGNORE (type, nfields);
2696             break;
2697
2698           case VISIBILITY_PUBLIC:
2699             break;
2700
2701           default:
2702             /* Unknown visibility.  Complain and treat it as public.  */
2703             {
2704               static struct complaint msg = {
2705                 "Unknown visibility `%c' for field", 0, 0};
2706               complain (&msg, fip -> list -> visibility);
2707             }
2708             break;
2709         }
2710       fip -> list = fip -> list -> next;
2711     }
2712   return 1;
2713 }
2714
2715 /* Read the description of a structure (or union type) and return an object
2716    describing the type.
2717
2718    PP points to a character pointer that points to the next unconsumed token
2719    in the the stabs string.  For example, given stabs "A:T4=s4a:1,0,32;;",
2720    *PP will point to "4a:1,0,32;;".
2721
2722    TYPE points to an incomplete type that needs to be filled in.
2723
2724    OBJFILE points to the current objfile from which the stabs information is
2725    being read.  (Note that it is redundant in that TYPE also contains a pointer
2726    to this same objfile, so it might be a good idea to eliminate it.  FIXME). 
2727    */
2728
2729 static struct type *
2730 read_struct_type (pp, type, objfile)
2731      char **pp;
2732      struct type *type;
2733      struct objfile *objfile;
2734 {
2735   struct cleanup *back_to;
2736   struct field_info fi;
2737
2738   fi.list = NULL;
2739   fi.fnlist = NULL;
2740
2741   back_to = make_cleanup (null_cleanup, 0);
2742
2743   INIT_CPLUS_SPECIFIC (type);
2744   TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
2745
2746   /* First comes the total size in bytes.  */
2747
2748   {
2749     int nbits;
2750     TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits);
2751     if (nbits != 0)
2752       return error_type (pp);
2753   }
2754
2755   /* Now read the baseclasses, if any, read the regular C struct or C++
2756      class member fields, attach the fields to the type, read the C++
2757      member functions, attach them to the type, and then read any tilde
2758      field (baseclass specifier for the class holding the main vtable). */
2759
2760   if (!read_baseclasses (&fi, pp, type, objfile)
2761       || !read_struct_fields (&fi, pp, type, objfile)
2762       || !attach_fields_to_type (&fi, type, objfile)
2763       || !read_member_functions (&fi, pp, type, objfile)
2764       || !attach_fn_fields_to_type (&fi, type)
2765       || !read_tilde_fields (&fi, pp, type, objfile))
2766     {
2767       do_cleanups (back_to);
2768       return (error_type (pp));
2769     }
2770
2771   do_cleanups (back_to);
2772   return (type);
2773 }
2774
2775 /* Read a definition of an array type,
2776    and create and return a suitable type object.
2777    Also creates a range type which represents the bounds of that
2778    array.  */
2779
2780 static struct type *
2781 read_array_type (pp, type, objfile)
2782      register char **pp;
2783      register struct type *type;
2784      struct objfile *objfile;
2785 {
2786   struct type *index_type, *element_type, *range_type;
2787   int lower, upper;
2788   int adjustable = 0;
2789   int nbits;
2790
2791   /* Format of an array type:
2792      "ar<index type>;lower;upper;<array_contents_type>".  Put code in
2793      to handle this.
2794
2795      Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
2796      for these, produce a type like float[][].  */
2797
2798   index_type = read_type (pp, objfile);
2799   if (**pp != ';')
2800     /* Improper format of array type decl.  */
2801     return error_type (pp);
2802   ++*pp;
2803
2804   if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
2805     {
2806       (*pp)++;
2807       adjustable = 1;
2808     }
2809   lower = read_huge_number (pp, ';', &nbits);
2810   if (nbits != 0)
2811     return error_type (pp);
2812
2813   if (!(**pp >= '0' && **pp <= '9') && **pp != '-')
2814     {
2815       (*pp)++;
2816       adjustable = 1;
2817     }
2818   upper = read_huge_number (pp, ';', &nbits);
2819   if (nbits != 0)
2820     return error_type (pp);
2821   
2822   element_type = read_type (pp, objfile);
2823
2824   if (adjustable)
2825     {
2826       lower = 0;
2827       upper = -1;
2828     }
2829
2830   range_type =
2831     create_range_type ((struct type *) NULL, index_type, lower, upper);
2832   type = create_array_type (type, element_type, range_type);
2833
2834   /* If we have an array whose element type is not yet known, but whose
2835      bounds *are* known, record it to be adjusted at the end of the file.  */
2836   /* FIXME: Why check for zero length rather than TYPE_FLAG_STUB?  I think
2837      the two have the same effect except that the latter is cleaner and the
2838      former would be wrong for types which really are zero-length (if we
2839      have any).  */
2840
2841   if (TYPE_LENGTH (element_type) == 0 && !adjustable)
2842     {
2843       TYPE_FLAGS (type) |= TYPE_FLAG_TARGET_STUB;
2844       add_undefined_type (type);
2845     }
2846
2847   return type;
2848 }
2849
2850
2851 /* Read a definition of an enumeration type,
2852    and create and return a suitable type object.
2853    Also defines the symbols that represent the values of the type.  */
2854
2855 static struct type *
2856 read_enum_type (pp, type, objfile)
2857      register char **pp;
2858      register struct type *type;
2859      struct objfile *objfile;
2860 {
2861   register char *p;
2862   char *name;
2863   register long n;
2864   register struct symbol *sym;
2865   int nsyms = 0;
2866   struct pending **symlist;
2867   struct pending *osyms, *syms;
2868   int o_nsyms;
2869
2870 #if 0
2871   /* FIXME!  The stabs produced by Sun CC merrily define things that ought
2872      to be file-scope, between N_FN entries, using N_LSYM.  What's a mother
2873      to do?  For now, force all enum values to file scope.  */
2874   if (within_function)
2875     symlist = &local_symbols;
2876   else
2877 #endif
2878     symlist = &file_symbols;
2879   osyms = *symlist;
2880   o_nsyms = osyms ? osyms->nsyms : 0;
2881
2882   /* Read the value-names and their values.
2883      The input syntax is NAME:VALUE,NAME:VALUE, and so on.
2884      A semicolon or comma instead of a NAME means the end.  */
2885   while (**pp && **pp != ';' && **pp != ',')
2886     {
2887       int nbits;
2888       STABS_CONTINUE (pp);
2889       p = *pp;
2890       while (*p != ':') p++;
2891       name = obsavestring (*pp, p - *pp, &objfile -> symbol_obstack);
2892       *pp = p + 1;
2893       n = read_huge_number (pp, ',', &nbits);
2894       if (nbits != 0)
2895         return error_type (pp);
2896
2897       sym = (struct symbol *)
2898         obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
2899       memset (sym, 0, sizeof (struct symbol));
2900       SYMBOL_NAME (sym) = name;
2901       SYMBOL_LANGUAGE (sym) = current_subfile -> language;
2902       SYMBOL_CLASS (sym) = LOC_CONST;
2903       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
2904       SYMBOL_VALUE (sym) = n;
2905       add_symbol_to_list (sym, symlist);
2906       nsyms++;
2907     }
2908
2909   if (**pp == ';')
2910     (*pp)++;                    /* Skip the semicolon.  */
2911
2912   /* Now fill in the fields of the type-structure.  */
2913
2914   TYPE_LENGTH (type) = sizeof (int);
2915   TYPE_CODE (type) = TYPE_CODE_ENUM;
2916   TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
2917   TYPE_NFIELDS (type) = nsyms;
2918   TYPE_FIELDS (type) = (struct field *)
2919     TYPE_ALLOC (type, sizeof (struct field) * nsyms);
2920   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
2921
2922   /* Find the symbols for the values and put them into the type.
2923      The symbols can be found in the symlist that we put them on
2924      to cause them to be defined.  osyms contains the old value
2925      of that symlist; everything up to there was defined by us.  */
2926   /* Note that we preserve the order of the enum constants, so
2927      that in something like "enum {FOO, LAST_THING=FOO}" we print
2928      FOO, not LAST_THING.  */
2929
2930   for (syms = *symlist, n = 0; syms; syms = syms->next)
2931     {
2932       int j = 0;
2933       if (syms == osyms)
2934         j = o_nsyms;
2935       for (; j < syms->nsyms; j++,n++)
2936         {
2937           struct symbol *xsym = syms->symbol[j];
2938           SYMBOL_TYPE (xsym) = type;
2939           TYPE_FIELD_NAME (type, n) = SYMBOL_NAME (xsym);
2940           TYPE_FIELD_VALUE (type, n) = 0;
2941           TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym);
2942           TYPE_FIELD_BITSIZE (type, n) = 0;
2943         }
2944       if (syms == osyms)
2945         break;
2946     }
2947
2948 #if 0
2949   /* This screws up perfectly good C programs with enums.  FIXME.  */
2950   /* Is this Modula-2's BOOLEAN type?  Flag it as such if so. */
2951   if(TYPE_NFIELDS(type) == 2 &&
2952      ((STREQ(TYPE_FIELD_NAME(type,0),"TRUE") &&
2953        STREQ(TYPE_FIELD_NAME(type,1),"FALSE")) ||
2954       (STREQ(TYPE_FIELD_NAME(type,1),"TRUE") &&
2955        STREQ(TYPE_FIELD_NAME(type,0),"FALSE"))))
2956      TYPE_CODE(type) = TYPE_CODE_BOOL;
2957 #endif
2958
2959   return type;
2960 }
2961
2962 /* Sun's ACC uses a somewhat saner method for specifying the builtin
2963    typedefs in every file (for int, long, etc):
2964
2965         type = b <signed> <width>; <offset>; <nbits>
2966         signed = u or s.  Possible c in addition to u or s (for char?).
2967         offset = offset from high order bit to start bit of type.
2968         width is # bytes in object of this type, nbits is # bits in type.
2969
2970    The width/offset stuff appears to be for small objects stored in
2971    larger ones (e.g. `shorts' in `int' registers).  We ignore it for now,
2972    FIXME.  */
2973
2974 static struct type *
2975 read_sun_builtin_type (pp, typenums, objfile)
2976      char **pp;
2977      int typenums[2];
2978      struct objfile *objfile;
2979 {
2980   int type_bits;
2981   int nbits;
2982   int signed_type;
2983
2984   switch (**pp)
2985     {
2986       case 's':
2987         signed_type = 1;
2988         break;
2989       case 'u':
2990         signed_type = 0;
2991         break;
2992       default:
2993         return error_type (pp);
2994     }
2995   (*pp)++;
2996
2997   /* For some odd reason, all forms of char put a c here.  This is strange
2998      because no other type has this honor.  We can safely ignore this because
2999      we actually determine 'char'acterness by the number of bits specified in
3000      the descriptor.  */
3001
3002   if (**pp == 'c')
3003     (*pp)++;
3004
3005   /* The first number appears to be the number of bytes occupied
3006      by this type, except that unsigned short is 4 instead of 2.
3007      Since this information is redundant with the third number,
3008      we will ignore it.  */
3009   read_huge_number (pp, ';', &nbits);
3010   if (nbits != 0)
3011     return error_type (pp);
3012
3013   /* The second number is always 0, so ignore it too. */
3014   read_huge_number (pp, ';', &nbits);
3015   if (nbits != 0)
3016     return error_type (pp);
3017
3018   /* The third number is the number of bits for this type. */
3019   type_bits = read_huge_number (pp, 0, &nbits);
3020   if (nbits != 0)
3021     return error_type (pp);
3022
3023   return init_type (type_bits == 0 ? TYPE_CODE_VOID : TYPE_CODE_INT,
3024                     type_bits / TARGET_CHAR_BIT,
3025                     signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *)NULL,
3026                     objfile);
3027 }
3028
3029 static struct type *
3030 read_sun_floating_type (pp, typenums, objfile)
3031      char **pp;
3032      int typenums[2];
3033      struct objfile *objfile;
3034 {
3035   int nbits;
3036   int details;
3037   int nbytes;
3038
3039   /* The first number has more details about the type, for example
3040      FN_COMPLEX.  */
3041   details = read_huge_number (pp, ';', &nbits);
3042   if (nbits != 0)
3043     return error_type (pp);
3044
3045   /* The second number is the number of bytes occupied by this type */
3046   nbytes = read_huge_number (pp, ';', &nbits);
3047   if (nbits != 0)
3048     return error_type (pp);
3049
3050   if (details == NF_COMPLEX || details == NF_COMPLEX16
3051       || details == NF_COMPLEX32)
3052     /* This is a type we can't handle, but we do know the size.
3053        We also will be able to give it a name.  */
3054     return init_type (TYPE_CODE_ERROR, nbytes, 0, NULL, objfile);
3055
3056   return init_type (TYPE_CODE_FLT, nbytes, 0, NULL, objfile);
3057 }
3058
3059 /* Read a number from the string pointed to by *PP.
3060    The value of *PP is advanced over the number.
3061    If END is nonzero, the character that ends the
3062    number must match END, or an error happens;
3063    and that character is skipped if it does match.
3064    If END is zero, *PP is left pointing to that character.
3065
3066    If the number fits in a long, set *BITS to 0 and return the value.
3067    If not, set *BITS to be the number of bits in the number and return 0.
3068
3069    If encounter garbage, set *BITS to -1 and return 0.  */
3070
3071 static long
3072 read_huge_number (pp, end, bits)
3073      char **pp;
3074      int end;
3075      int *bits;
3076 {
3077   char *p = *pp;
3078   int sign = 1;
3079   long n = 0;
3080   int radix = 10;
3081   char overflow = 0;
3082   int nbits = 0;
3083   int c;
3084   long upper_limit;
3085   
3086   if (*p == '-')
3087     {
3088       sign = -1;
3089       p++;
3090     }
3091
3092   /* Leading zero means octal.  GCC uses this to output values larger
3093      than an int (because that would be hard in decimal).  */
3094   if (*p == '0')
3095     {
3096       radix = 8;
3097       p++;
3098     }
3099
3100   upper_limit = LONG_MAX / radix;
3101   while ((c = *p++) >= '0' && c < ('0' + radix))
3102     {
3103       if (n <= upper_limit)
3104         {
3105           n *= radix;
3106           n += c - '0';         /* FIXME this overflows anyway */
3107         }
3108       else
3109         overflow = 1;
3110       
3111       /* This depends on large values being output in octal, which is
3112          what GCC does. */
3113       if (radix == 8)
3114         {
3115           if (nbits == 0)
3116             {
3117               if (c == '0')
3118                 /* Ignore leading zeroes.  */
3119                 ;
3120               else if (c == '1')
3121                 nbits = 1;
3122               else if (c == '2' || c == '3')
3123                 nbits = 2;
3124               else
3125                 nbits = 3;
3126             }
3127           else
3128             nbits += 3;
3129         }
3130     }
3131   if (end)
3132     {
3133       if (c && c != end)
3134         {
3135           if (bits != NULL)
3136             *bits = -1;
3137           return 0;
3138         }
3139     }
3140   else
3141     --p;
3142
3143   *pp = p;
3144   if (overflow)
3145     {
3146       if (nbits == 0)
3147         {
3148           /* Large decimal constants are an error (because it is hard to
3149              count how many bits are in them).  */
3150           if (bits != NULL)
3151             *bits = -1;
3152           return 0;
3153         }
3154       
3155       /* -0x7f is the same as 0x80.  So deal with it by adding one to
3156          the number of bits.  */
3157       if (sign == -1)
3158         ++nbits;
3159       if (bits)
3160         *bits = nbits;
3161     }
3162   else
3163     {
3164       if (bits)
3165         *bits = 0;
3166       return n * sign;
3167     }
3168   /* It's *BITS which has the interesting information.  */
3169   return 0;
3170 }
3171
3172 static struct type *
3173 read_range_type (pp, typenums, objfile)
3174      char **pp;
3175      int typenums[2];
3176      struct objfile *objfile;
3177 {
3178   int rangenums[2];
3179   long n2, n3;
3180   int n2bits, n3bits;
3181   int self_subrange;
3182   struct type *result_type;
3183   struct type *index_type;
3184
3185   /* First comes a type we are a subrange of.
3186      In C it is usually 0, 1 or the type being defined.  */
3187   /* FIXME: according to stabs.texinfo and AIX doc, this can be a type-id
3188      not just a type number.  */
3189   if (read_type_number (pp, rangenums) != 0)
3190     return error_type (pp);
3191   self_subrange = (rangenums[0] == typenums[0] &&
3192                    rangenums[1] == typenums[1]);
3193
3194   /* A semicolon should now follow; skip it.  */
3195   if (**pp == ';')
3196     (*pp)++;
3197
3198   /* The remaining two operands are usually lower and upper bounds
3199      of the range.  But in some special cases they mean something else.  */
3200   n2 = read_huge_number (pp, ';', &n2bits);
3201   n3 = read_huge_number (pp, ';', &n3bits);
3202
3203   if (n2bits == -1 || n3bits == -1)
3204     return error_type (pp);
3205   
3206   /* If limits are huge, must be large integral type.  */
3207   if (n2bits != 0 || n3bits != 0)
3208     {
3209       char got_signed = 0;
3210       char got_unsigned = 0;
3211       /* Number of bits in the type.  */
3212       int nbits = 0;
3213
3214       /* Range from 0 to <large number> is an unsigned large integral type.  */
3215       if ((n2bits == 0 && n2 == 0) && n3bits != 0)
3216         {
3217           got_unsigned = 1;
3218           nbits = n3bits;
3219         }
3220       /* Range from <large number> to <large number>-1 is a large signed
3221          integral type.  Take care of the case where <large number> doesn't
3222          fit in a long but <large number>-1 does.  */
3223       else if ((n2bits != 0 && n3bits != 0 && n2bits == n3bits + 1)
3224                || (n2bits != 0 && n3bits == 0
3225                    && (n2bits == sizeof (long) * HOST_CHAR_BIT)
3226                    && n3 == LONG_MAX))
3227         {
3228           got_signed = 1;
3229           nbits = n2bits;
3230         }
3231
3232       if (got_signed || got_unsigned)
3233         {
3234           return init_type (TYPE_CODE_INT, nbits / TARGET_CHAR_BIT,
3235                             got_unsigned ? TYPE_FLAG_UNSIGNED : 0, NULL,
3236                             objfile);
3237         }
3238       else
3239         return error_type (pp);
3240     }
3241
3242   /* A type defined as a subrange of itself, with bounds both 0, is void.  */
3243   if (self_subrange && n2 == 0 && n3 == 0)
3244     return init_type (TYPE_CODE_VOID, 0, 0, NULL, objfile);
3245
3246   /* If n3 is zero and n2 is not, we want a floating type,
3247      and n2 is the width in bytes.
3248
3249      Fortran programs appear to use this for complex types also,
3250      and they give no way to distinguish between double and single-complex!
3251
3252      GDB does not have complex types.
3253
3254      Just return the complex as a float of that size.  It won't work right
3255      for the complex values, but at least it makes the file loadable.  */
3256
3257   if (n3 == 0 && n2 > 0)
3258     {
3259       return init_type (TYPE_CODE_FLT, n2, 0, NULL, objfile);
3260     }
3261
3262   /* If the upper bound is -1, it must really be an unsigned int.  */
3263
3264   else if (n2 == 0 && n3 == -1)
3265     {
3266       /* It is unsigned int or unsigned long.  */
3267       /* GCC 2.3.3 uses this for long long too, but that is just a GDB 3.5
3268          compatibility hack.  */
3269       return init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
3270                         TYPE_FLAG_UNSIGNED, NULL, objfile);
3271     }
3272
3273   /* Special case: char is defined (Who knows why) as a subrange of
3274      itself with range 0-127.  */
3275   else if (self_subrange && n2 == 0 && n3 == 127)
3276     return init_type (TYPE_CODE_INT, 1, 0, NULL, objfile);
3277
3278   /* We used to do this only for subrange of self or subrange of int.  */
3279   else if (n2 == 0)
3280     {
3281       if (n3 < 0)
3282         /* n3 actually gives the size.  */
3283         return init_type (TYPE_CODE_INT, - n3, TYPE_FLAG_UNSIGNED,
3284                           NULL, objfile);
3285       if (n3 == 0xff)
3286         return init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED, NULL, objfile);
3287       if (n3 == 0xffff)
3288         return init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED, NULL, objfile);
3289
3290       /* -1 is used for the upper bound of (4 byte) "unsigned int" and
3291          "unsigned long", and we already checked for that,
3292          so don't need to test for it here.  */
3293     }
3294   /* I think this is for Convex "long long".  Since I don't know whether
3295      Convex sets self_subrange, I also accept that particular size regardless
3296      of self_subrange.  */
3297   else if (n3 == 0 && n2 < 0
3298            && (self_subrange
3299                || n2 == - TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT))
3300     return init_type (TYPE_CODE_INT, - n2, 0, NULL, objfile);
3301   else if (n2 == -n3 -1)
3302     {
3303       if (n3 == 0x7f)
3304         return init_type (TYPE_CODE_INT, 1, 0, NULL, objfile);
3305       if (n3 == 0x7fff)
3306         return init_type (TYPE_CODE_INT, 2, 0, NULL, objfile);
3307       if (n3 == 0x7fffffff)
3308         return init_type (TYPE_CODE_INT, 4, 0, NULL, objfile);
3309     }
3310
3311   /* We have a real range type on our hands.  Allocate space and
3312      return a real pointer.  */
3313
3314   /* At this point I don't have the faintest idea how to deal with
3315      a self_subrange type; I'm going to assume that this is used
3316      as an idiom, and that all of them are special cases.  So . . .  */
3317   if (self_subrange)
3318     return error_type (pp);
3319
3320   index_type = *dbx_lookup_type (rangenums);
3321   if (index_type == NULL)
3322     {
3323       /* Does this actually ever happen?  Is that why we are worrying
3324          about dealing with it rather than just calling error_type?  */
3325
3326       static struct type *range_type_index;
3327
3328       complain (&range_type_base_complaint, rangenums[1]);
3329       if (range_type_index == NULL)
3330         range_type_index =
3331           init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
3332                      0, "range type index type", NULL);
3333       index_type = range_type_index;
3334     }
3335
3336   result_type = create_range_type ((struct type *) NULL, index_type, n2, n3);
3337   return (result_type);
3338 }
3339
3340 /* Read in an argument list.  This is a list of types, separated by commas
3341    and terminated with END.  Return the list of types read in, or (struct type
3342    **)-1 if there is an error.  */
3343
3344 static struct type **
3345 read_args (pp, end, objfile)
3346      char **pp;
3347      int end;
3348      struct objfile *objfile;
3349 {
3350   /* FIXME!  Remove this arbitrary limit!  */
3351   struct type *types[1024], **rval; /* allow for fns of 1023 parameters */
3352   int n = 0;
3353
3354   while (**pp != end)
3355     {
3356       if (**pp != ',')
3357         /* Invalid argument list: no ','.  */
3358         return (struct type **)-1;
3359       (*pp)++;
3360       STABS_CONTINUE (pp);
3361       types[n++] = read_type (pp, objfile);
3362     }
3363   (*pp)++;                      /* get past `end' (the ':' character) */
3364
3365   if (n == 1)
3366     {
3367       rval = (struct type **) xmalloc (2 * sizeof (struct type *));
3368     }
3369   else if (TYPE_CODE (types[n-1]) != TYPE_CODE_VOID)
3370     {
3371       rval = (struct type **) xmalloc ((n + 1) * sizeof (struct type *));
3372       memset (rval + n, 0, sizeof (struct type *));
3373     }
3374   else
3375     {
3376       rval = (struct type **) xmalloc (n * sizeof (struct type *));
3377     }
3378   memcpy (rval, types, n * sizeof (struct type *));
3379   return rval;
3380 }
3381 \f
3382 /* Common block handling.  */
3383
3384 /* List of symbols declared since the last BCOMM.  This list is a tail
3385    of local_symbols.  When ECOMM is seen, the symbols on the list
3386    are noted so their proper addresses can be filled in later,
3387    using the common block base address gotten from the assembler
3388    stabs.  */
3389
3390 static struct pending *common_block;
3391 static int common_block_i;
3392
3393 /* Name of the current common block.  We get it from the BCOMM instead of the
3394    ECOMM to match IBM documentation (even though IBM puts the name both places
3395    like everyone else).  */
3396 static char *common_block_name;
3397
3398 /* Process a N_BCOMM symbol.  The storage for NAME is not guaranteed
3399    to remain after this function returns.  */
3400
3401 void
3402 common_block_start (name, objfile)
3403      char *name;
3404      struct objfile *objfile;
3405 {
3406   if (common_block_name != NULL)
3407     {
3408       static struct complaint msg = {
3409         "Invalid symbol data: common block within common block",
3410         0, 0};
3411       complain (&msg);
3412     }
3413   common_block = local_symbols;
3414   common_block_i = local_symbols ? local_symbols->nsyms : 0;
3415   common_block_name = obsavestring (name, strlen (name),
3416                                     &objfile -> symbol_obstack);
3417 }
3418
3419 /* Process a N_ECOMM symbol.  */
3420
3421 void
3422 common_block_end (objfile)
3423      struct objfile *objfile;
3424 {
3425   /* Symbols declared since the BCOMM are to have the common block
3426      start address added in when we know it.  common_block and
3427      common_block_i point to the first symbol after the BCOMM in
3428      the local_symbols list; copy the list and hang it off the
3429      symbol for the common block name for later fixup.  */
3430   int i;
3431   struct symbol *sym;
3432   struct pending *new = 0;
3433   struct pending *next;
3434   int j;
3435
3436   if (common_block_name == NULL)
3437     {
3438       static struct complaint msg = {"ECOMM symbol unmatched by BCOMM", 0, 0};
3439       complain (&msg);
3440       return;
3441     }
3442
3443   sym = (struct symbol *) 
3444     obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
3445   memset (sym, 0, sizeof (struct symbol));
3446   SYMBOL_NAME (sym) = common_block_name;
3447   SYMBOL_CLASS (sym) = LOC_BLOCK;
3448
3449   /* Now we copy all the symbols which have been defined since the BCOMM.  */
3450
3451   /* Copy all the struct pendings before common_block.  */
3452   for (next = local_symbols;
3453        next != NULL && next != common_block;
3454        next = next->next)
3455     {
3456       for (j = 0; j < next->nsyms; j++)
3457         add_symbol_to_list (next->symbol[j], &new);
3458     }
3459
3460   /* Copy however much of COMMON_BLOCK we need.  If COMMON_BLOCK is
3461      NULL, it means copy all the local symbols (which we already did
3462      above).  */
3463
3464   if (common_block != NULL)
3465     for (j = common_block_i; j < common_block->nsyms; j++)
3466       add_symbol_to_list (common_block->symbol[j], &new);
3467
3468   SYMBOL_NAMESPACE (sym) = (enum namespace)((long) new);
3469
3470   /* Should we be putting local_symbols back to what it was?
3471      Does it matter?  */
3472
3473   i = hashname (SYMBOL_NAME (sym));
3474   SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
3475   global_sym_chain[i] = sym;
3476   common_block_name = NULL;
3477 }
3478
3479 /* Add a common block's start address to the offset of each symbol
3480    declared to be in it (by being between a BCOMM/ECOMM pair that uses
3481    the common block name).  */
3482
3483 static void
3484 fix_common_block (sym, valu)
3485     struct symbol *sym;
3486     int valu;
3487 {
3488   struct pending *next = (struct pending *) SYMBOL_NAMESPACE (sym);
3489   for ( ; next; next = next->next)
3490     {
3491       register int j;
3492       for (j = next->nsyms - 1; j >= 0; j--)
3493         SYMBOL_VALUE_ADDRESS (next->symbol[j]) += valu;
3494     }
3495 }
3496
3497
3498 \f
3499 /* What about types defined as forward references inside of a small lexical
3500    scope?  */
3501 /* Add a type to the list of undefined types to be checked through
3502    once this file has been read in.  */
3503
3504 void
3505 add_undefined_type (type)
3506      struct type *type;
3507 {
3508   if (undef_types_length == undef_types_allocated)
3509     {
3510       undef_types_allocated *= 2;
3511       undef_types = (struct type **)
3512         xrealloc ((char *) undef_types,
3513                   undef_types_allocated * sizeof (struct type *));
3514     }
3515   undef_types[undef_types_length++] = type;
3516 }
3517
3518 /* Go through each undefined type, see if it's still undefined, and fix it
3519    up if possible.  We have two kinds of undefined types:
3520
3521    TYPE_CODE_ARRAY:  Array whose target type wasn't defined yet.
3522                         Fix:  update array length using the element bounds
3523                         and the target type's length.
3524    TYPE_CODE_STRUCT, TYPE_CODE_UNION:  Structure whose fields were not
3525                         yet defined at the time a pointer to it was made.
3526                         Fix:  Do a full lookup on the struct/union tag.  */
3527 void
3528 cleanup_undefined_types ()
3529 {
3530   struct type **type;
3531
3532   for (type = undef_types; type < undef_types + undef_types_length; type++)
3533     {
3534       switch (TYPE_CODE (*type))
3535         {
3536
3537           case TYPE_CODE_STRUCT:
3538           case TYPE_CODE_UNION:
3539           case TYPE_CODE_ENUM:
3540           {
3541             /* Check if it has been defined since.  Need to do this here
3542                as well as in check_stub_type to deal with the (legitimate in
3543                C though not C++) case of several types with the same name
3544                in different source files.  */
3545             if (TYPE_FLAGS (*type) & TYPE_FLAG_STUB)
3546               {
3547                 struct pending *ppt;
3548                 int i;
3549                 /* Name of the type, without "struct" or "union" */
3550                 char *typename = TYPE_TAG_NAME (*type);
3551
3552                 if (typename == NULL)
3553                   {
3554                     static struct complaint msg = {"need a type name", 0, 0};
3555                     complain (&msg);
3556                     break;
3557                   }
3558                 for (ppt = file_symbols; ppt; ppt = ppt->next)
3559                   {
3560                     for (i = 0; i < ppt->nsyms; i++)
3561                       {
3562                         struct symbol *sym = ppt->symbol[i];
3563                         
3564                         if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
3565                             && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
3566                             && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
3567                                 TYPE_CODE (*type))
3568                             && STREQ (SYMBOL_NAME (sym), typename))
3569                           {
3570                             memcpy (*type, SYMBOL_TYPE (sym),
3571                                     sizeof (struct type));
3572                           }
3573                       }
3574                   }
3575               }
3576           }
3577           break;
3578
3579         case TYPE_CODE_ARRAY:
3580           {
3581             /* This is a kludge which is here for historical reasons
3582                because I suspect that check_stub_type does not get
3583                called everywhere it needs to be called for arrays.  Even
3584                with this kludge, those places are broken for the case
3585                where the stub type is defined in another compilation
3586                unit, but this kludge at least deals with it for the case
3587                in which it is the same compilation unit.
3588
3589                Don't try to do this by calling check_stub_type; it might
3590                cause symbols to be read in lookup_symbol, and the symbol
3591                reader is not reentrant.  */
3592
3593             struct type *range_type;
3594             int lower, upper;
3595
3596             if (TYPE_LENGTH (*type) != 0)               /* Better be unknown */
3597               goto badtype;
3598             if (TYPE_NFIELDS (*type) != 1)
3599               goto badtype;
3600             range_type = TYPE_FIELD_TYPE (*type, 0);
3601             if (TYPE_CODE (range_type) != TYPE_CODE_RANGE)
3602               goto badtype;
3603
3604             /* Now recompute the length of the array type, based on its
3605                number of elements and the target type's length.  */
3606             lower = TYPE_FIELD_BITPOS (range_type, 0);
3607             upper = TYPE_FIELD_BITPOS (range_type, 1);
3608             TYPE_LENGTH (*type) = (upper - lower + 1)
3609               * TYPE_LENGTH (TYPE_TARGET_TYPE (*type));
3610
3611             /* If the target type is not a stub, we could be clearing
3612                TYPE_FLAG_TARGET_STUB for *type.  */
3613           }
3614           break;
3615
3616         default:
3617         badtype:
3618           {
3619             static struct complaint msg = {"\
3620 GDB internal error.  cleanup_undefined_types with bad type %d.", 0, 0};
3621             complain (&msg, TYPE_CODE (*type));
3622           }
3623           break;
3624         }
3625     }
3626
3627   undef_types_length = 0;
3628 }
3629
3630 /* Scan through all of the global symbols defined in the object file,
3631    assigning values to the debugging symbols that need to be assigned
3632    to.  Get these symbols from the minimal symbol table.  */
3633
3634 void
3635 scan_file_globals (objfile)
3636      struct objfile *objfile;
3637 {
3638   int hash;
3639   struct minimal_symbol *msymbol;
3640   struct symbol *sym, *prev;
3641
3642   if (objfile->msymbols == 0)           /* Beware the null file.  */
3643     return;
3644
3645   for (msymbol = objfile -> msymbols; SYMBOL_NAME (msymbol) != NULL; msymbol++)
3646     {
3647       QUIT;
3648
3649       prev = NULL;
3650
3651       /* Get the hash index and check all the symbols
3652          under that hash index. */
3653
3654       hash = hashname (SYMBOL_NAME (msymbol));
3655
3656       for (sym = global_sym_chain[hash]; sym;)
3657         {
3658           if (SYMBOL_NAME (msymbol)[0] == SYMBOL_NAME (sym)[0] &&
3659               STREQ(SYMBOL_NAME (msymbol) + 1, SYMBOL_NAME (sym) + 1))
3660             {
3661               /* Splice this symbol out of the hash chain and
3662                  assign the value we have to it. */
3663               if (prev)
3664                 {
3665                   SYMBOL_VALUE_CHAIN (prev) = SYMBOL_VALUE_CHAIN (sym);
3666                 }
3667               else
3668                 {
3669                   global_sym_chain[hash] = SYMBOL_VALUE_CHAIN (sym);
3670                 }
3671               
3672               /* Check to see whether we need to fix up a common block.  */
3673               /* Note: this code might be executed several times for
3674                  the same symbol if there are multiple references.  */
3675
3676               if (SYMBOL_CLASS (sym) == LOC_BLOCK)
3677                 {
3678                   fix_common_block (sym, SYMBOL_VALUE_ADDRESS (msymbol));
3679                 }
3680               else
3681                 {
3682                   SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msymbol);
3683                 }
3684               
3685               if (prev)
3686                 {
3687                   sym = SYMBOL_VALUE_CHAIN (prev);
3688                 }
3689               else
3690                 {
3691                   sym = global_sym_chain[hash];
3692                 }
3693             }
3694           else
3695             {
3696               prev = sym;
3697               sym = SYMBOL_VALUE_CHAIN (sym);
3698             }
3699         }
3700     }
3701 }
3702
3703 /* Initialize anything that needs initializing when starting to read
3704    a fresh piece of a symbol file, e.g. reading in the stuff corresponding
3705    to a psymtab.  */
3706
3707 void
3708 stabsread_init ()
3709 {
3710 }
3711
3712 /* Initialize anything that needs initializing when a completely new
3713    symbol file is specified (not just adding some symbols from another
3714    file, e.g. a shared library).  */
3715
3716 void
3717 stabsread_new_init ()
3718 {
3719   /* Empty the hash table of global syms looking for values.  */
3720   memset (global_sym_chain, 0, sizeof (global_sym_chain));
3721 }
3722
3723 /* Initialize anything that needs initializing at the same time as
3724    start_symtab() is called. */
3725
3726 void start_stabs ()
3727 {
3728   global_stabs = NULL;          /* AIX COFF */
3729   /* Leave FILENUM of 0 free for builtin types and this file's types.  */
3730   n_this_object_header_files = 1;
3731   type_vector_length = 0;
3732   type_vector = (struct type **) 0;
3733
3734   /* FIXME: If common_block_name is not already NULL, we should complain().  */
3735   common_block_name = NULL;
3736 }
3737
3738 /* Call after end_symtab() */
3739
3740 void end_stabs ()
3741 {
3742   if (type_vector)
3743     {
3744       free ((char *) type_vector);
3745     }
3746   type_vector = 0;
3747   type_vector_length = 0;
3748   previous_stab_code = 0;
3749 }
3750
3751 void
3752 finish_global_stabs (objfile)
3753      struct objfile *objfile;
3754 {
3755   if (global_stabs)
3756     {
3757       patch_block_stabs (global_symbols, global_stabs, objfile);
3758       free ((PTR) global_stabs);
3759       global_stabs = NULL;
3760     }
3761 }
3762
3763 /* Initializer for this module */
3764
3765 void
3766 _initialize_stabsread ()
3767 {
3768   undef_types_allocated = 20;
3769   undef_types_length = 0;
3770   undef_types = (struct type **)
3771     xmalloc (undef_types_allocated * sizeof (struct type *));
3772 }
This page took 0.243938 seconds and 4 git commands to generate.