]> Git Repo - binutils.git/blob - gdb/stabsread.c
* gdbtypes.h: Add TYPE_FLAG_TARGET_STUB.
[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     default:
1572       --*pp;                    /* Go back to the symbol in error */
1573                                 /* Particularly important if it was \0! */
1574       return error_type (pp);
1575     }
1576
1577   if (type == 0)
1578     {
1579       warning ("GDB internal error, type is NULL in stabsread.c\n");
1580       return error_type (pp);
1581     }
1582
1583   /* Size specified in a type attribute overrides any other size.  */
1584   if (type_size != -1)
1585     TYPE_LENGTH (type) = type_size / TARGET_CHAR_BIT;
1586
1587   return type;
1588 }
1589 \f
1590 /* RS/6000 xlc/dbx combination uses a set of builtin types, starting from -1.
1591    Return the proper type node for a given builtin type number. */
1592
1593 static struct type *
1594 rs6000_builtin_type (typenum)
1595      int typenum;
1596 {
1597   /* We recognize types numbered from -NUMBER_RECOGNIZED to -1.  */
1598 #define NUMBER_RECOGNIZED 30
1599   /* This includes an empty slot for type number -0.  */
1600   static struct type *negative_types[NUMBER_RECOGNIZED + 1];
1601   struct type *rettype = NULL;
1602
1603   if (typenum >= 0 || typenum < -NUMBER_RECOGNIZED)
1604     {
1605       complain (&rs6000_builtin_complaint, typenum);
1606       return builtin_type_error;
1607     }
1608   if (negative_types[-typenum] != NULL)
1609     return negative_types[-typenum];
1610
1611 #if TARGET_CHAR_BIT != 8
1612   #error This code wrong for TARGET_CHAR_BIT not 8
1613   /* These definitions all assume that TARGET_CHAR_BIT is 8.  I think
1614      that if that ever becomes not true, the correct fix will be to
1615      make the size in the struct type to be in bits, not in units of
1616      TARGET_CHAR_BIT.  */
1617 #endif
1618
1619   switch (-typenum)
1620     {
1621     case 1:
1622       /* The size of this and all the other types are fixed, defined
1623          by the debugging format.  If there is a type called "int" which
1624          is other than 32 bits, then it should use a new negative type
1625          number (or avoid negative type numbers for that case).
1626          See stabs.texinfo.  */
1627       rettype = init_type (TYPE_CODE_INT, 4, 0, "int", NULL);
1628       break;
1629     case 2:
1630       rettype = init_type (TYPE_CODE_INT, 1, 0, "char", NULL);
1631       break;
1632     case 3:
1633       rettype = init_type (TYPE_CODE_INT, 2, 0, "short", NULL);
1634       break;
1635     case 4:
1636       rettype = init_type (TYPE_CODE_INT, 4, 0, "long", NULL);
1637       break;
1638     case 5:
1639       rettype = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED,
1640                            "unsigned char", NULL);
1641       break;
1642     case 6:
1643       rettype = init_type (TYPE_CODE_INT, 1, 0, "signed char", NULL);
1644       break;
1645     case 7:
1646       rettype = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED,
1647                            "unsigned short", NULL);
1648       break;
1649     case 8:
1650       rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1651                            "unsigned int", NULL);
1652       break;
1653     case 9:
1654       rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1655                            "unsigned", NULL);
1656     case 10:
1657       rettype = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
1658                            "unsigned long", NULL);
1659       break;
1660     case 11:
1661       rettype = init_type (TYPE_CODE_VOID, 0, 0, "void", NULL);
1662       break;
1663     case 12:
1664       /* IEEE single precision (32 bit).  */
1665       rettype = init_type (TYPE_CODE_FLT, 4, 0, "float", NULL);
1666       break;
1667     case 13:
1668       /* IEEE double precision (64 bit).  */
1669       rettype = init_type (TYPE_CODE_FLT, 8, 0, "double", NULL);
1670       break;
1671     case 14:
1672       /* This is an IEEE double on the RS/6000, and different machines with
1673          different sizes for "long double" should use different negative
1674          type numbers.  See stabs.texinfo.  */
1675       rettype = init_type (TYPE_CODE_FLT, 8, 0, "long double", NULL);
1676       break;
1677     case 15:
1678       rettype = init_type (TYPE_CODE_INT, 4, 0, "integer", NULL);
1679       break;
1680     case 16:
1681       rettype = init_type (TYPE_CODE_BOOL, 4, 0, "boolean", NULL);
1682       break;
1683     case 17:
1684       rettype = init_type (TYPE_CODE_FLT, 4, 0, "short real", NULL);
1685       break;
1686     case 18:
1687       rettype = init_type (TYPE_CODE_FLT, 8, 0, "real", NULL);
1688       break;
1689     case 19:
1690       rettype = init_type (TYPE_CODE_ERROR, 0, 0, "stringptr", NULL);
1691       break;
1692     case 20:
1693       rettype = init_type (TYPE_CODE_CHAR, 1, TYPE_FLAG_UNSIGNED,
1694                            "character", NULL);
1695       break;
1696     case 21:
1697       rettype = init_type (TYPE_CODE_BOOL, 1, TYPE_FLAG_UNSIGNED,
1698                            "logical*1", NULL);
1699       break;
1700     case 22:
1701       rettype = init_type (TYPE_CODE_BOOL, 2, TYPE_FLAG_UNSIGNED,
1702                            "logical*2", NULL);
1703       break;
1704     case 23:
1705       rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
1706                            "logical*4", NULL);
1707       break;
1708     case 24:
1709       rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED,
1710                            "logical", NULL);
1711       break;
1712     case 25:
1713       /* Complex type consisting of two IEEE single precision values.  */
1714       rettype = init_type (TYPE_CODE_ERROR, 8, 0, "complex", NULL);
1715       break;
1716     case 26:
1717       /* Complex type consisting of two IEEE double precision values.  */
1718       rettype = init_type (TYPE_CODE_ERROR, 16, 0, "double complex", NULL);
1719       break;
1720     case 27:
1721       rettype = init_type (TYPE_CODE_INT, 1, 0, "integer*1", NULL);
1722       break;
1723     case 28:
1724       rettype = init_type (TYPE_CODE_INT, 2, 0, "integer*2", NULL);
1725       break;
1726     case 29:
1727       rettype = init_type (TYPE_CODE_INT, 4, 0, "integer*4", NULL);
1728       break;
1729     case 30:
1730       rettype = init_type (TYPE_CODE_CHAR, 2, 0, "wchar", NULL);
1731       break;
1732     }
1733   negative_types[-typenum] = rettype;
1734   return rettype;
1735 }
1736 \f
1737 /* This page contains subroutines of read_type.  */
1738
1739 #define VISIBILITY_PRIVATE      '0'     /* Stabs character for private field */
1740 #define VISIBILITY_PROTECTED    '1'     /* Stabs character for protected fld */
1741 #define VISIBILITY_PUBLIC       '2'     /* Stabs character for public field */
1742 #define VISIBILITY_IGNORE       '9'     /* Optimized out or zero length */
1743
1744 /* Read member function stabs info for C++ classes.  The form of each member
1745    function data is:
1746
1747         NAME :: TYPENUM[=type definition] ARGS : PHYSNAME ;
1748
1749    An example with two member functions is:
1750
1751         afunc1::20=##15;:i;2A.;afunc2::20:i;2A.;
1752
1753    For the case of overloaded operators, the format is op$::*.funcs, where
1754    $ is the CPLUS_MARKER (usually '$'), `*' holds the place for an operator
1755    name (such as `+=') and `.' marks the end of the operator name.
1756
1757    Returns 1 for success, 0 for failure.  */
1758
1759 static int
1760 read_member_functions (fip, pp, type, objfile)
1761      struct field_info *fip;
1762      char **pp;
1763      struct type *type;
1764      struct objfile *objfile;
1765 {
1766   int nfn_fields = 0;
1767   int length = 0;
1768   /* Total number of member functions defined in this class.  If the class
1769      defines two `f' functions, and one `g' function, then this will have
1770      the value 3.  */
1771   int total_length = 0;
1772   int i;
1773   struct next_fnfield
1774     {
1775       struct next_fnfield *next;
1776       struct fn_field fn_field;
1777     } *sublist;
1778   struct type *look_ahead_type;
1779   struct next_fnfieldlist *new_fnlist;
1780   struct next_fnfield *new_sublist;
1781   char *main_fn_name;
1782   register char *p;
1783       
1784   /* Process each list until we find something that is not a member function
1785      or find the end of the functions. */
1786
1787   while (**pp != ';')
1788     {
1789       /* We should be positioned at the start of the function name.
1790          Scan forward to find the first ':' and if it is not the
1791          first of a "::" delimiter, then this is not a member function. */
1792       p = *pp;
1793       while (*p != ':')
1794         {
1795           p++;
1796         }
1797       if (p[1] != ':')
1798         {
1799           break;
1800         }
1801
1802       sublist = NULL;
1803       look_ahead_type = NULL;
1804       length = 0;
1805       
1806       new_fnlist = (struct next_fnfieldlist *)
1807         xmalloc (sizeof (struct next_fnfieldlist));
1808       make_cleanup (free, new_fnlist);
1809       memset (new_fnlist, 0, sizeof (struct next_fnfieldlist));
1810       
1811       if ((*pp)[0] == 'o' && (*pp)[1] == 'p' && (*pp)[2] == CPLUS_MARKER)
1812         {
1813           /* This is a completely wierd case.  In order to stuff in the
1814              names that might contain colons (the usual name delimiter),
1815              Mike Tiemann defined a different name format which is
1816              signalled if the identifier is "op$".  In that case, the
1817              format is "op$::XXXX." where XXXX is the name.  This is
1818              used for names like "+" or "=".  YUUUUUUUK!  FIXME!  */
1819           /* This lets the user type "break operator+".
1820              We could just put in "+" as the name, but that wouldn't
1821              work for "*".  */
1822           static char opname[32] = {'o', 'p', CPLUS_MARKER};
1823           char *o = opname + 3;
1824           
1825           /* Skip past '::'.  */
1826           *pp = p + 2;
1827
1828           STABS_CONTINUE (pp);
1829           p = *pp;
1830           while (*p != '.')
1831             {
1832               *o++ = *p++;
1833             }
1834           main_fn_name = savestring (opname, o - opname);
1835           /* Skip past '.'  */
1836           *pp = p + 1;
1837         }
1838       else
1839         {
1840           main_fn_name = savestring (*pp, p - *pp);
1841           /* Skip past '::'.  */
1842           *pp = p + 2;
1843         }
1844       new_fnlist -> fn_fieldlist.name = main_fn_name;
1845       
1846       do
1847         {
1848           new_sublist =
1849             (struct next_fnfield *) xmalloc (sizeof (struct next_fnfield));
1850           make_cleanup (free, new_sublist);
1851           memset (new_sublist, 0, sizeof (struct next_fnfield));
1852           
1853           /* Check for and handle cretinous dbx symbol name continuation!  */
1854           if (look_ahead_type == NULL)
1855             {
1856               /* Normal case. */
1857               STABS_CONTINUE (pp);
1858               
1859               new_sublist -> fn_field.type = read_type (pp, objfile);
1860               if (**pp != ':')
1861                 {
1862                   /* Invalid symtab info for member function.  */
1863                   return 0;
1864                 }
1865             }
1866           else
1867             {
1868               /* g++ version 1 kludge */
1869               new_sublist -> fn_field.type = look_ahead_type;
1870               look_ahead_type = NULL;
1871             }
1872           
1873           (*pp)++;
1874           p = *pp;
1875           while (*p != ';')
1876             {
1877               p++;
1878             }
1879           
1880           /* If this is just a stub, then we don't have the real name here. */
1881
1882           if (TYPE_FLAGS (new_sublist -> fn_field.type) & TYPE_FLAG_STUB)
1883             {
1884               if (!TYPE_DOMAIN_TYPE (new_sublist -> fn_field.type))
1885                 TYPE_DOMAIN_TYPE (new_sublist -> fn_field.type) = type;
1886               new_sublist -> fn_field.is_stub = 1;
1887             }
1888           new_sublist -> fn_field.physname = savestring (*pp, p - *pp);
1889           *pp = p + 1;
1890           
1891           /* Set this member function's visibility fields.  */
1892           switch (*(*pp)++)
1893             {
1894               case VISIBILITY_PRIVATE:
1895                 new_sublist -> fn_field.is_private = 1;
1896                 break;
1897               case VISIBILITY_PROTECTED:
1898                 new_sublist -> fn_field.is_protected = 1;
1899                 break;
1900             }
1901           
1902           STABS_CONTINUE (pp);
1903           switch (**pp)
1904             {
1905               case 'A': /* Normal functions. */
1906                 new_sublist -> fn_field.is_const = 0;
1907                 new_sublist -> fn_field.is_volatile = 0;
1908                 (*pp)++;
1909                 break;
1910               case 'B': /* `const' member functions. */
1911                 new_sublist -> fn_field.is_const = 1;
1912                 new_sublist -> fn_field.is_volatile = 0;
1913                 (*pp)++;
1914                 break;
1915               case 'C': /* `volatile' member function. */
1916                 new_sublist -> fn_field.is_const = 0;
1917                 new_sublist -> fn_field.is_volatile = 1;
1918                 (*pp)++;
1919                 break;
1920               case 'D': /* `const volatile' member function. */
1921                 new_sublist -> fn_field.is_const = 1;
1922                 new_sublist -> fn_field.is_volatile = 1;
1923                 (*pp)++;
1924                 break;
1925               case '*': /* File compiled with g++ version 1 -- no info */
1926               case '?':
1927               case '.':
1928                 break;
1929               default:
1930                 complain (&const_vol_complaint, **pp);
1931                 break;
1932             }
1933           
1934           switch (*(*pp)++)
1935             {
1936               case '*':
1937               {
1938                 int nbits;
1939                 /* virtual member function, followed by index.
1940                    The sign bit is set to distinguish pointers-to-methods
1941                    from virtual function indicies.  Since the array is
1942                    in words, the quantity must be shifted left by 1
1943                    on 16 bit machine, and by 2 on 32 bit machine, forcing
1944                    the sign bit out, and usable as a valid index into
1945                    the array.  Remove the sign bit here.  */
1946                 new_sublist -> fn_field.voffset =
1947                   (0x7fffffff & read_huge_number (pp, ';', &nbits)) + 2;
1948                 if (nbits != 0)
1949                   return 0;
1950               
1951                 STABS_CONTINUE (pp);
1952                 if (**pp == ';' || **pp == '\0')
1953                   {
1954                     /* Must be g++ version 1.  */
1955                     new_sublist -> fn_field.fcontext = 0;
1956                   }
1957                 else
1958                   {
1959                     /* Figure out from whence this virtual function came.
1960                        It may belong to virtual function table of
1961                        one of its baseclasses.  */
1962                     look_ahead_type = read_type (pp, objfile);
1963                     if (**pp == ':')
1964                       {
1965                         /* g++ version 1 overloaded methods. */
1966                       }
1967                     else
1968                       {
1969                         new_sublist -> fn_field.fcontext = look_ahead_type;
1970                         if (**pp != ';')
1971                           {
1972                             return 0;
1973                           }
1974                         else
1975                           {
1976                             ++*pp;
1977                           }
1978                         look_ahead_type = NULL;
1979                       }
1980                   }
1981                 break;
1982               }
1983               case '?':
1984                 /* static member function.  */
1985                 new_sublist -> fn_field.voffset = VOFFSET_STATIC;
1986                 if (strncmp (new_sublist -> fn_field.physname,
1987                              main_fn_name, strlen (main_fn_name)))
1988                   {
1989                     new_sublist -> fn_field.is_stub = 1;
1990                   }
1991                 break;
1992               
1993               default:
1994                 /* error */
1995                 complain (&member_fn_complaint, (*pp)[-1]);
1996                 /* Fall through into normal member function.  */
1997               
1998               case '.':
1999                 /* normal member function.  */
2000                 new_sublist -> fn_field.voffset = 0;
2001                 new_sublist -> fn_field.fcontext = 0;
2002                 break;
2003             }
2004           
2005           new_sublist -> next = sublist;
2006           sublist = new_sublist;
2007           length++;
2008           STABS_CONTINUE (pp);
2009         }
2010       while (**pp != ';' && **pp != '\0');
2011       
2012       (*pp)++;
2013       
2014       new_fnlist -> fn_fieldlist.fn_fields = (struct fn_field *)
2015         obstack_alloc (&objfile -> type_obstack, 
2016                        sizeof (struct fn_field) * length);
2017       memset (new_fnlist -> fn_fieldlist.fn_fields, 0,
2018               sizeof (struct fn_field) * length);
2019       for (i = length; (i--, sublist); sublist = sublist -> next)
2020         {
2021           new_fnlist -> fn_fieldlist.fn_fields[i] = sublist -> fn_field;
2022         }
2023       
2024       new_fnlist -> fn_fieldlist.length = length;
2025       new_fnlist -> next = fip -> fnlist;
2026       fip -> fnlist = new_fnlist;
2027       nfn_fields++;
2028       total_length += length;
2029       STABS_CONTINUE (pp);
2030     }
2031
2032   if (nfn_fields)
2033     {
2034       ALLOCATE_CPLUS_STRUCT_TYPE (type);
2035       TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
2036         TYPE_ALLOC (type, sizeof (struct fn_fieldlist) * nfn_fields);
2037       memset (TYPE_FN_FIELDLISTS (type), 0,
2038               sizeof (struct fn_fieldlist) * nfn_fields);
2039       TYPE_NFN_FIELDS (type) = nfn_fields;
2040       TYPE_NFN_FIELDS_TOTAL (type) = total_length;
2041     }
2042
2043   return 1;
2044 }
2045
2046 /* Special GNU C++ name.
2047
2048    Returns 1 for success, 0 for failure.  "failure" means that we can't
2049    keep parsing and it's time for error_type().  */
2050
2051 static int
2052 read_cpp_abbrev (fip, pp, type, objfile)
2053      struct field_info *fip;
2054      char **pp;
2055      struct type *type;
2056      struct objfile *objfile;
2057 {
2058   register char *p;
2059   char *name;
2060   char cpp_abbrev;
2061   struct type *context;
2062
2063   p = *pp;
2064   if (*++p == 'v')
2065     {
2066       name = NULL;
2067       cpp_abbrev = *++p;
2068
2069       *pp = p + 1;
2070
2071       /* At this point, *pp points to something like "22:23=*22...",
2072          where the type number before the ':' is the "context" and
2073          everything after is a regular type definition.  Lookup the
2074          type, find it's name, and construct the field name. */
2075
2076       context = read_type (pp, objfile);
2077
2078       switch (cpp_abbrev)
2079         {
2080           case 'f':             /* $vf -- a virtual function table pointer */
2081             fip->list->field.name =
2082               obconcat (&objfile->type_obstack, vptr_name, "", "");
2083             break;
2084
2085           case 'b':             /* $vb -- a virtual bsomethingorother */
2086             name = type_name_no_tag (context);
2087             if (name == NULL)
2088               {
2089                 complain (&invalid_cpp_type_complaint, symnum);
2090                 name = "FOO";
2091               }
2092             fip->list->field.name =
2093               obconcat (&objfile->type_obstack, vb_name, name, "");
2094             break;
2095
2096           default:
2097             complain (&invalid_cpp_abbrev_complaint, *pp);
2098             fip->list->field.name =
2099               obconcat (&objfile->type_obstack,
2100                         "INVALID_CPLUSPLUS_ABBREV", "", "");
2101             break;
2102         }
2103
2104       /* At this point, *pp points to the ':'.  Skip it and read the
2105          field type. */
2106
2107       p = ++(*pp);
2108       if (p[-1] != ':')
2109         {
2110           complain (&invalid_cpp_abbrev_complaint, *pp);
2111           return 0;
2112         }
2113       fip->list->field.type = read_type (pp, objfile);
2114       if (**pp == ',')
2115         (*pp)++;                        /* Skip the comma.  */
2116       else
2117         return 0;
2118
2119       {
2120         int nbits;
2121         fip->list->field.bitpos = read_huge_number (pp, ';', &nbits);
2122         if (nbits != 0)
2123           return 0;
2124       }
2125       /* This field is unpacked.  */
2126       fip->list->field.bitsize = 0;
2127       fip->list->visibility = VISIBILITY_PRIVATE;
2128     }
2129   else
2130     {
2131       complain (&invalid_cpp_abbrev_complaint, *pp);
2132       /* We have no idea what syntax an unrecognized abbrev would have, so
2133          better return 0.  If we returned 1, we would need to at least advance
2134          *pp to avoid an infinite loop.  */
2135       return 0;
2136     }
2137   return 1;
2138 }
2139
2140 static void
2141 read_one_struct_field (fip, pp, p, type, objfile)
2142      struct field_info *fip;
2143      char **pp;
2144      char *p;
2145      struct type *type;
2146      struct objfile *objfile;
2147 {
2148   fip -> list -> field.name =
2149     obsavestring (*pp, p - *pp, &objfile -> type_obstack);
2150   *pp = p + 1;
2151
2152   /* This means we have a visibility for a field coming. */
2153   if (**pp == '/')
2154     {
2155       (*pp)++;
2156       fip -> list -> visibility = *(*pp)++;
2157     }
2158   else
2159     {
2160       /* normal dbx-style format, no explicit visibility */
2161       fip -> list -> visibility = VISIBILITY_PUBLIC;
2162     }
2163
2164   fip -> list -> field.type = read_type (pp, objfile);
2165   if (**pp == ':')
2166     {
2167       p = ++(*pp);
2168 #if 0
2169       /* Possible future hook for nested types. */
2170       if (**pp == '!')
2171         {
2172           fip -> list -> field.bitpos = (long)-2; /* nested type */
2173           p = ++(*pp);
2174         }
2175       else
2176 #endif
2177         {
2178           /* Static class member.  */
2179           fip -> list -> field.bitpos = (long) -1;
2180         }
2181       while (*p != ';') 
2182         {
2183           p++;
2184         }
2185       fip -> list -> field.bitsize = (long) savestring (*pp, p - *pp);
2186       *pp = p + 1;
2187       return;
2188     }
2189   else if (**pp != ',')
2190     {
2191       /* Bad structure-type format.  */
2192       complain (&stabs_general_complaint, "bad structure-type format");
2193       return;
2194     }
2195
2196   (*pp)++;                      /* Skip the comma.  */
2197
2198   {
2199     int nbits;
2200     fip -> list -> field.bitpos = read_huge_number (pp, ',', &nbits);
2201     if (nbits != 0)
2202       {
2203         complain (&stabs_general_complaint, "bad structure-type format");
2204         return;
2205       }
2206     fip -> list -> field.bitsize = read_huge_number (pp, ';', &nbits);
2207     if (nbits != 0)
2208       {
2209         complain (&stabs_general_complaint, "bad structure-type format");
2210         return;
2211       }
2212   }
2213
2214   if (fip -> list -> field.bitpos == 0 && fip -> list -> field.bitsize == 0)
2215     {
2216       /* This can happen in two cases: (1) at least for gcc 2.4.5 or so,
2217          it is a field which has been optimized out.  The correct stab for
2218          this case is to use VISIBILITY_IGNORE, but that is a recent
2219          invention.  (2) It is a 0-size array.  For example
2220          union { int num; char str[0]; } foo.  Printing "<no value>" for
2221          str in "p foo" is OK, since foo.str (and thus foo.str[3])
2222          will continue to work, and a 0-size array as a whole doesn't
2223          have any contents to print.
2224
2225          I suspect this probably could also happen with gcc -gstabs (not
2226          -gstabs+) for static fields, and perhaps other C++ extensions.
2227          Hopefully few people use -gstabs with gdb, since it is intended
2228          for dbx compatibility.  */
2229
2230       /* Ignore this field.  */
2231       fip -> list-> visibility = VISIBILITY_IGNORE;
2232     }
2233   else
2234     {
2235       /* Detect an unpacked field and mark it as such.
2236          dbx gives a bit size for all fields.
2237          Note that forward refs cannot be packed,
2238          and treat enums as if they had the width of ints.  */
2239
2240       if (TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_INT
2241           && TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_ENUM)
2242         {
2243           fip -> list -> field.bitsize = 0;
2244         }
2245       if ((fip -> list -> field.bitsize 
2246            == TARGET_CHAR_BIT * TYPE_LENGTH (fip -> list -> field.type)
2247            || (TYPE_CODE (fip -> list -> field.type) == TYPE_CODE_ENUM
2248                && (fip -> list -> field.bitsize
2249                    == TARGET_INT_BIT)
2250                )
2251            )
2252           &&
2253           fip -> list -> field.bitpos % 8 == 0)
2254         {
2255           fip -> list -> field.bitsize = 0;
2256         }
2257     }
2258 }
2259
2260
2261 /* Read struct or class data fields.  They have the form:
2262
2263         NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
2264
2265    At the end, we see a semicolon instead of a field.
2266
2267    In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
2268    a static field.
2269
2270    The optional VISIBILITY is one of:
2271
2272         '/0'    (VISIBILITY_PRIVATE)
2273         '/1'    (VISIBILITY_PROTECTED)
2274         '/2'    (VISIBILITY_PUBLIC)
2275         '/9'    (VISIBILITY_IGNORE)
2276
2277    or nothing, for C style fields with public visibility.
2278
2279    Returns 1 for success, 0 for failure.  */
2280
2281 static int
2282 read_struct_fields (fip, pp, type, objfile)
2283      struct field_info *fip;
2284      char **pp;
2285      struct type *type;
2286      struct objfile *objfile;
2287 {
2288   register char *p;
2289   struct nextfield *new;
2290
2291   /* We better set p right now, in case there are no fields at all...    */
2292
2293   p = *pp;
2294
2295   /* Read each data member type until we find the terminating ';' at the end of
2296      the data member list, or break for some other reason such as finding the
2297      start of the member function list. */
2298
2299   while (**pp != ';')
2300     {
2301       STABS_CONTINUE (pp);
2302       /* Get space to record the next field's data.  */
2303       new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2304       make_cleanup (free, new);
2305       memset (new, 0, sizeof (struct nextfield));
2306       new -> next = fip -> list;
2307       fip -> list = new;
2308
2309       /* Get the field name.  */
2310       p = *pp;
2311
2312       /* If is starts with CPLUS_MARKER it is a special abbreviation,
2313          unless the CPLUS_MARKER is followed by an underscore, in
2314          which case it is just the name of an anonymous type, which we
2315          should handle like any other type name.  We accept either '$'
2316          or '.', because a field name can never contain one of these
2317          characters except as a CPLUS_MARKER (we probably should be
2318          doing that in most parts of GDB).  */
2319
2320       if ((*p == '$' || *p == '.') && p[1] != '_')
2321         {
2322           if (!read_cpp_abbrev (fip, pp, type, objfile))
2323             return 0;
2324           continue;
2325         }
2326
2327       /* Look for the ':' that separates the field name from the field
2328          values.  Data members are delimited by a single ':', while member
2329          functions are delimited by a pair of ':'s.  When we hit the member
2330          functions (if any), terminate scan loop and return. */
2331
2332       while (*p != ':' && *p != '\0') 
2333         {
2334           p++;
2335         }
2336       if (*p == '\0')
2337         return 0;
2338
2339       /* Check to see if we have hit the member functions yet.  */
2340       if (p[1] == ':')
2341         {
2342           break;
2343         }
2344       read_one_struct_field (fip, pp, p, type, objfile);
2345     }
2346   if (p[1] == ':')
2347     {
2348       /* chill the list of fields: the last entry (at the head) is a
2349          partially constructed entry which we now scrub. */
2350       fip -> list = fip -> list -> next;
2351     }
2352   return 1;
2353 }
2354
2355 /* The stabs for C++ derived classes contain baseclass information which
2356    is marked by a '!' character after the total size.  This function is
2357    called when we encounter the baseclass marker, and slurps up all the
2358    baseclass information.
2359
2360    Immediately following the '!' marker is the number of base classes that
2361    the class is derived from, followed by information for each base class.
2362    For each base class, there are two visibility specifiers, a bit offset
2363    to the base class information within the derived class, a reference to
2364    the type for the base class, and a terminating semicolon.
2365
2366    A typical example, with two base classes, would be "!2,020,19;0264,21;".
2367                                                        ^^ ^ ^ ^  ^ ^  ^
2368         Baseclass information marker __________________|| | | |  | |  |
2369         Number of baseclasses __________________________| | | |  | |  |
2370         Visibility specifiers (2) ________________________| | |  | |  |
2371         Offset in bits from start of class _________________| |  | |  |
2372         Type number for base class ___________________________|  | |  |
2373         Visibility specifiers (2) _______________________________| |  |
2374         Offset in bits from start of class ________________________|  |
2375         Type number of base class ____________________________________|
2376
2377   Return 1 for success, 0 for (error-type-inducing) failure.  */
2378
2379 static int
2380 read_baseclasses (fip, pp, type, objfile)
2381      struct field_info *fip;
2382      char **pp;
2383      struct type *type;
2384      struct objfile *objfile;
2385 {
2386   int i;
2387   struct nextfield *new;
2388
2389   if (**pp != '!')
2390     {
2391       return 1;
2392     }
2393   else
2394     {
2395       /* Skip the '!' baseclass information marker. */
2396       (*pp)++;
2397     }
2398
2399   ALLOCATE_CPLUS_STRUCT_TYPE (type);
2400   {
2401     int nbits;
2402     TYPE_N_BASECLASSES (type) = read_huge_number (pp, ',', &nbits);
2403     if (nbits != 0)
2404       return 0;
2405   }
2406
2407 #if 0
2408   /* Some stupid compilers have trouble with the following, so break
2409      it up into simpler expressions.  */
2410   TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *)
2411     TYPE_ALLOC (type, B_BYTES (TYPE_N_BASECLASSES (type)));
2412 #else
2413   {
2414     int num_bytes = B_BYTES (TYPE_N_BASECLASSES (type));
2415     char *pointer;
2416
2417     pointer = (char *) TYPE_ALLOC (type, num_bytes);
2418     TYPE_FIELD_VIRTUAL_BITS (type) = (B_TYPE *) pointer;
2419   }
2420 #endif /* 0 */
2421
2422   B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), TYPE_N_BASECLASSES (type));
2423
2424   for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
2425     {
2426       new = (struct nextfield *) xmalloc (sizeof (struct nextfield));
2427       make_cleanup (free, new);
2428       memset (new, 0, sizeof (struct nextfield));
2429       new -> next = fip -> list;
2430       fip -> list = new;
2431       new -> field.bitsize = 0; /* this should be an unpacked field! */
2432
2433       STABS_CONTINUE (pp);
2434       switch (**pp)
2435         {
2436           case '0':
2437             /* Nothing to do. */
2438             break;
2439           case '1':
2440             SET_TYPE_FIELD_VIRTUAL (type, i);
2441             break;
2442           default:
2443             /* Unknown character.  Complain and treat it as non-virtual.  */
2444             {
2445               static struct complaint msg = {
2446                 "Unknown virtual character `%c' for baseclass", 0, 0};
2447               complain (&msg, **pp);
2448             }
2449         }
2450       ++(*pp);
2451
2452       new -> visibility = *(*pp)++;
2453       switch (new -> visibility)
2454         {
2455           case VISIBILITY_PRIVATE:
2456           case VISIBILITY_PROTECTED:
2457           case VISIBILITY_PUBLIC:
2458             break;
2459           default:
2460             /* Bad visibility format.  Complain and treat it as
2461                public.  */
2462             {
2463               static struct complaint msg = {
2464                 "Unknown visibility `%c' for baseclass", 0, 0};
2465               complain (&msg, new -> visibility);
2466               new -> visibility = VISIBILITY_PUBLIC;
2467             }
2468         }
2469
2470       {
2471         int nbits;
2472         
2473         /* The remaining value is the bit offset of the portion of the object
2474            corresponding to this baseclass.  Always zero in the absence of
2475            multiple inheritance.  */
2476
2477         new -> field.bitpos = read_huge_number (pp, ',', &nbits);
2478         if (nbits != 0)
2479           return 0;
2480       }
2481
2482       /* The last piece of baseclass information is the type of the
2483          base class.  Read it, and remember it's type name as this
2484          field's name. */
2485
2486       new -> field.type = read_type (pp, objfile);
2487       new -> field.name = type_name_no_tag (new -> field.type);
2488
2489       /* skip trailing ';' and bump count of number of fields seen */
2490       if (**pp == ';')
2491         (*pp)++;
2492       else
2493         return 0;
2494     }
2495   return 1;
2496 }
2497
2498 /* The tail end of stabs for C++ classes that contain a virtual function
2499    pointer contains a tilde, a %, and a type number.
2500    The type number refers to the base class (possibly this class itself) which
2501    contains the vtable pointer for the current class.
2502
2503    This function is called when we have parsed all the method declarations,
2504    so we can look for the vptr base class info.  */
2505
2506 static int
2507 read_tilde_fields (fip, pp, type, objfile)
2508      struct field_info *fip;
2509      char **pp;
2510      struct type *type;
2511      struct objfile *objfile;
2512 {
2513   register char *p;
2514
2515   STABS_CONTINUE (pp);
2516
2517   /* If we are positioned at a ';', then skip it. */
2518   if (**pp == ';')
2519     {
2520       (*pp)++;
2521     }
2522
2523   if (**pp == '~')
2524     {
2525       (*pp)++;
2526
2527       if (**pp == '=' || **pp == '+' || **pp == '-')
2528         {
2529           /* Obsolete flags that used to indicate the presence
2530              of constructors and/or destructors. */
2531           (*pp)++;
2532         }
2533
2534       /* Read either a '%' or the final ';'.  */
2535       if (*(*pp)++ == '%')
2536         {
2537           /* The next number is the type number of the base class
2538              (possibly our own class) which supplies the vtable for
2539              this class.  Parse it out, and search that class to find
2540              its vtable pointer, and install those into TYPE_VPTR_BASETYPE
2541              and TYPE_VPTR_FIELDNO.  */
2542
2543           struct type *t;
2544           int i;
2545
2546           t = read_type (pp, objfile);
2547           p = (*pp)++;
2548           while (*p != '\0' && *p != ';')
2549             {
2550               p++;
2551             }
2552           if (*p == '\0')
2553             {
2554               /* Premature end of symbol.  */
2555               return 0;
2556             }
2557           
2558           TYPE_VPTR_BASETYPE (type) = t;
2559           if (type == t)                /* Our own class provides vtbl ptr */
2560             {
2561               for (i = TYPE_NFIELDS (t) - 1;
2562                    i >= TYPE_N_BASECLASSES (t);
2563                    --i)
2564                 {
2565                   if (! strncmp (TYPE_FIELD_NAME (t, i), vptr_name, 
2566                                  sizeof (vptr_name) - 1))
2567                     {
2568                       TYPE_VPTR_FIELDNO (type) = i;
2569                       goto gotit;
2570                     }
2571                 }
2572               /* Virtual function table field not found.  */
2573               complain (&vtbl_notfound_complaint, TYPE_NAME (type));
2574               return 0;
2575             }
2576           else
2577             {
2578               TYPE_VPTR_FIELDNO (type) = TYPE_VPTR_FIELDNO (t);
2579             }
2580
2581     gotit:
2582           *pp = p + 1;
2583         }
2584     }
2585   return 1;
2586 }
2587
2588 static int
2589 attach_fn_fields_to_type (fip, type)
2590      struct field_info *fip;
2591      register struct type *type;
2592 {
2593   register int n;
2594
2595   for (n = 0; n < TYPE_N_BASECLASSES (type); n++)
2596     {
2597       if (TYPE_CODE (TYPE_BASECLASS (type, n)) == TYPE_CODE_UNDEF)
2598         {
2599           /* @@ Memory leak on objfile -> type_obstack?  */
2600           return 0;
2601         }
2602       TYPE_NFN_FIELDS_TOTAL (type) +=
2603         TYPE_NFN_FIELDS_TOTAL (TYPE_BASECLASS (type, n));
2604     }
2605
2606   for (n = TYPE_NFN_FIELDS (type);
2607        fip -> fnlist != NULL;
2608        fip -> fnlist = fip -> fnlist -> next)
2609     {
2610       --n;                      /* Circumvent Sun3 compiler bug */
2611       TYPE_FN_FIELDLISTS (type)[n] = fip -> fnlist -> fn_fieldlist;
2612     }
2613   return 1;
2614 }
2615
2616 /* Create the vector of fields, and record how big it is.
2617    We need this info to record proper virtual function table information
2618    for this class's virtual functions.  */
2619
2620 static int
2621 attach_fields_to_type (fip, type, objfile)
2622      struct field_info *fip;
2623      register struct type *type;
2624      struct objfile *objfile;
2625 {
2626   register int nfields = 0;
2627   register int non_public_fields = 0;
2628   register struct nextfield *scan;
2629
2630   /* Count up the number of fields that we have, as well as taking note of
2631      whether or not there are any non-public fields, which requires us to
2632      allocate and build the private_field_bits and protected_field_bits
2633      bitfields. */
2634
2635   for (scan = fip -> list; scan != NULL; scan = scan -> next)
2636     {
2637       nfields++;
2638       if (scan -> visibility != VISIBILITY_PUBLIC)
2639         {
2640           non_public_fields++;
2641         }
2642     }
2643
2644   /* Now we know how many fields there are, and whether or not there are any
2645      non-public fields.  Record the field count, allocate space for the
2646      array of fields, and create blank visibility bitfields if necessary. */
2647
2648   TYPE_NFIELDS (type) = nfields;
2649   TYPE_FIELDS (type) = (struct field *)
2650     TYPE_ALLOC (type, sizeof (struct field) * nfields);
2651   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nfields);
2652
2653   if (non_public_fields)
2654     {
2655       ALLOCATE_CPLUS_STRUCT_TYPE (type);
2656
2657       TYPE_FIELD_PRIVATE_BITS (type) =
2658         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2659       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
2660
2661       TYPE_FIELD_PROTECTED_BITS (type) =
2662         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2663       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
2664
2665       TYPE_FIELD_IGNORE_BITS (type) =
2666         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
2667       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
2668     }
2669
2670   /* Copy the saved-up fields into the field vector.  Start from the head
2671      of the list, adding to the tail of the field array, so that they end
2672      up in the same order in the array in which they were added to the list. */
2673
2674   while (nfields-- > 0)
2675     {
2676       TYPE_FIELD (type, nfields) = fip -> list -> field;
2677       switch (fip -> list -> visibility)
2678         {
2679           case VISIBILITY_PRIVATE:
2680             SET_TYPE_FIELD_PRIVATE (type, nfields);
2681             break;
2682
2683           case VISIBILITY_PROTECTED:
2684             SET_TYPE_FIELD_PROTECTED (type, nfields);
2685             break;
2686
2687           case VISIBILITY_IGNORE:
2688             SET_TYPE_FIELD_IGNORE (type, nfields);
2689             break;
2690
2691           case VISIBILITY_PUBLIC:
2692             break;
2693
2694           default:
2695             /* Unknown visibility.  Complain and treat it as public.  */
2696             {
2697               static struct complaint msg = {
2698                 "Unknown visibility `%c' for field", 0, 0};
2699               complain (&msg, fip -> list -> visibility);
2700             }
2701             break;
2702         }
2703       fip -> list = fip -> list -> next;
2704     }
2705   return 1;
2706 }
2707
2708 /* Read the description of a structure (or union type) and return an object
2709    describing the type.
2710
2711    PP points to a character pointer that points to the next unconsumed token
2712    in the the stabs string.  For example, given stabs "A:T4=s4a:1,0,32;;",
2713    *PP will point to "4a:1,0,32;;".
2714
2715    TYPE points to an incomplete type that needs to be filled in.
2716
2717    OBJFILE points to the current objfile from which the stabs information is
2718    being read.  (Note that it is redundant in that TYPE also contains a pointer
2719    to this same objfile, so it might be a good idea to eliminate it.  FIXME). 
2720    */
2721
2722 static struct type *
2723 read_struct_type (pp, type, objfile)
2724      char **pp;
2725      struct type *type;
2726      struct objfile *objfile;
2727 {
2728   struct cleanup *back_to;
2729   struct field_info fi;
2730
2731   fi.list = NULL;
2732   fi.fnlist = NULL;
2733
2734   back_to = make_cleanup (null_cleanup, 0);
2735
2736   INIT_CPLUS_SPECIFIC (type);
2737   TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
2738
2739   /* First comes the total size in bytes.  */
2740
2741   {
2742     int nbits;
2743     TYPE_LENGTH (type) = read_huge_number (pp, 0, &nbits);
2744     if (nbits != 0)
2745       return error_type (pp);
2746   }
2747
2748   /* Now read the baseclasses, if any, read the regular C struct or C++
2749      class member fields, attach the fields to the type, read the C++
2750      member functions, attach them to the type, and then read any tilde
2751      field (baseclass specifier for the class holding the main vtable). */
2752
2753   if (!read_baseclasses (&fi, pp, type, objfile)
2754       || !read_struct_fields (&fi, pp, type, objfile)
2755       || !attach_fields_to_type (&fi, type, objfile)
2756       || !read_member_functions (&fi, pp, type, objfile)
2757       || !attach_fn_fields_to_type (&fi, type)
2758       || !read_tilde_fields (&fi, pp, type, objfile))
2759     {
2760       do_cleanups (back_to);
2761       return (error_type (pp));
2762     }
2763
2764   do_cleanups (back_to);
2765   return (type);
2766 }
2767
2768 /* Read a definition of an array type,
2769    and create and return a suitable type object.
2770    Also creates a range type which represents the bounds of that
2771    array.  */
2772
2773 static struct type *
2774 read_array_type (pp, type, objfile)
2775      register char **pp;
2776      register struct type *type;
2777      struct objfile *objfile;
2778 {
2779   struct type *index_type, *element_type, *range_type;
2780   int lower, upper;
2781   int adjustable = 0;
2782   int nbits;
2783
2784   /* Format of an array type:
2785      "ar<index type>;lower;upper;<array_contents_type>".  Put code in
2786      to handle this.
2787
2788      Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
2789      for these, produce a type like float[][].  */
2790
2791   index_type = read_type (pp, objfile);
2792   if (**pp != ';')
2793     /* Improper format of array type decl.  */
2794     return error_type (pp);
2795   ++*pp;
2796
2797   if (!(**pp >= '0' && **pp <= '9'))
2798     {
2799       (*pp)++;
2800       adjustable = 1;
2801     }
2802   lower = read_huge_number (pp, ';', &nbits);
2803   if (nbits != 0)
2804     return error_type (pp);
2805
2806   if (!(**pp >= '0' && **pp <= '9'))
2807     {
2808       (*pp)++;
2809       adjustable = 1;
2810     }
2811   upper = read_huge_number (pp, ';', &nbits);
2812   if (nbits != 0)
2813     return error_type (pp);
2814   
2815   element_type = read_type (pp, objfile);
2816
2817   if (adjustable)
2818     {
2819       lower = 0;
2820       upper = -1;
2821     }
2822
2823   range_type =
2824     create_range_type ((struct type *) NULL, index_type, lower, upper);
2825   type = create_array_type (type, element_type, range_type);
2826
2827   /* If we have an array whose element type is not yet known, but whose
2828      bounds *are* known, record it to be adjusted at the end of the file.  */
2829   /* FIXME: Why check for zero length rather than TYPE_FLAG_STUB?  I think
2830      the two have the same effect except that the latter is cleaner and the
2831      former would be wrong for types which really are zero-length (if we
2832      have any).  */
2833
2834   if (TYPE_LENGTH (element_type) == 0 && !adjustable)
2835     {
2836       TYPE_FLAGS (type) |= TYPE_FLAG_TARGET_STUB;
2837       add_undefined_type (type);
2838     }
2839
2840   return type;
2841 }
2842
2843
2844 /* Read a definition of an enumeration type,
2845    and create and return a suitable type object.
2846    Also defines the symbols that represent the values of the type.  */
2847
2848 static struct type *
2849 read_enum_type (pp, type, objfile)
2850      register char **pp;
2851      register struct type *type;
2852      struct objfile *objfile;
2853 {
2854   register char *p;
2855   char *name;
2856   register long n;
2857   register struct symbol *sym;
2858   int nsyms = 0;
2859   struct pending **symlist;
2860   struct pending *osyms, *syms;
2861   int o_nsyms;
2862
2863 #if 0
2864   /* FIXME!  The stabs produced by Sun CC merrily define things that ought
2865      to be file-scope, between N_FN entries, using N_LSYM.  What's a mother
2866      to do?  For now, force all enum values to file scope.  */
2867   if (within_function)
2868     symlist = &local_symbols;
2869   else
2870 #endif
2871     symlist = &file_symbols;
2872   osyms = *symlist;
2873   o_nsyms = osyms ? osyms->nsyms : 0;
2874
2875   /* Read the value-names and their values.
2876      The input syntax is NAME:VALUE,NAME:VALUE, and so on.
2877      A semicolon or comma instead of a NAME means the end.  */
2878   while (**pp && **pp != ';' && **pp != ',')
2879     {
2880       int nbits;
2881       STABS_CONTINUE (pp);
2882       p = *pp;
2883       while (*p != ':') p++;
2884       name = obsavestring (*pp, p - *pp, &objfile -> symbol_obstack);
2885       *pp = p + 1;
2886       n = read_huge_number (pp, ',', &nbits);
2887       if (nbits != 0)
2888         return error_type (pp);
2889
2890       sym = (struct symbol *)
2891         obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
2892       memset (sym, 0, sizeof (struct symbol));
2893       SYMBOL_NAME (sym) = name;
2894       SYMBOL_LANGUAGE (sym) = current_subfile -> language;
2895       SYMBOL_CLASS (sym) = LOC_CONST;
2896       SYMBOL_NAMESPACE (sym) = VAR_NAMESPACE;
2897       SYMBOL_VALUE (sym) = n;
2898       add_symbol_to_list (sym, symlist);
2899       nsyms++;
2900     }
2901
2902   if (**pp == ';')
2903     (*pp)++;                    /* Skip the semicolon.  */
2904
2905   /* Now fill in the fields of the type-structure.  */
2906
2907   TYPE_LENGTH (type) = sizeof (int);
2908   TYPE_CODE (type) = TYPE_CODE_ENUM;
2909   TYPE_FLAGS (type) &= ~TYPE_FLAG_STUB;
2910   TYPE_NFIELDS (type) = nsyms;
2911   TYPE_FIELDS (type) = (struct field *)
2912     TYPE_ALLOC (type, sizeof (struct field) * nsyms);
2913   memset (TYPE_FIELDS (type), 0, sizeof (struct field) * nsyms);
2914
2915   /* Find the symbols for the values and put them into the type.
2916      The symbols can be found in the symlist that we put them on
2917      to cause them to be defined.  osyms contains the old value
2918      of that symlist; everything up to there was defined by us.  */
2919   /* Note that we preserve the order of the enum constants, so
2920      that in something like "enum {FOO, LAST_THING=FOO}" we print
2921      FOO, not LAST_THING.  */
2922
2923   for (syms = *symlist, n = 0; syms; syms = syms->next)
2924     {
2925       int j = 0;
2926       if (syms == osyms)
2927         j = o_nsyms;
2928       for (; j < syms->nsyms; j++,n++)
2929         {
2930           struct symbol *xsym = syms->symbol[j];
2931           SYMBOL_TYPE (xsym) = type;
2932           TYPE_FIELD_NAME (type, n) = SYMBOL_NAME (xsym);
2933           TYPE_FIELD_VALUE (type, n) = 0;
2934           TYPE_FIELD_BITPOS (type, n) = SYMBOL_VALUE (xsym);
2935           TYPE_FIELD_BITSIZE (type, n) = 0;
2936         }
2937       if (syms == osyms)
2938         break;
2939     }
2940
2941 #if 0
2942   /* This screws up perfectly good C programs with enums.  FIXME.  */
2943   /* Is this Modula-2's BOOLEAN type?  Flag it as such if so. */
2944   if(TYPE_NFIELDS(type) == 2 &&
2945      ((STREQ(TYPE_FIELD_NAME(type,0),"TRUE") &&
2946        STREQ(TYPE_FIELD_NAME(type,1),"FALSE")) ||
2947       (STREQ(TYPE_FIELD_NAME(type,1),"TRUE") &&
2948        STREQ(TYPE_FIELD_NAME(type,0),"FALSE"))))
2949      TYPE_CODE(type) = TYPE_CODE_BOOL;
2950 #endif
2951
2952   return type;
2953 }
2954
2955 /* Sun's ACC uses a somewhat saner method for specifying the builtin
2956    typedefs in every file (for int, long, etc):
2957
2958         type = b <signed> <width>; <offset>; <nbits>
2959         signed = u or s.  Possible c in addition to u or s (for char?).
2960         offset = offset from high order bit to start bit of type.
2961         width is # bytes in object of this type, nbits is # bits in type.
2962
2963    The width/offset stuff appears to be for small objects stored in
2964    larger ones (e.g. `shorts' in `int' registers).  We ignore it for now,
2965    FIXME.  */
2966
2967 static struct type *
2968 read_sun_builtin_type (pp, typenums, objfile)
2969      char **pp;
2970      int typenums[2];
2971      struct objfile *objfile;
2972 {
2973   int type_bits;
2974   int nbits;
2975   int signed_type;
2976
2977   switch (**pp)
2978     {
2979       case 's':
2980         signed_type = 1;
2981         break;
2982       case 'u':
2983         signed_type = 0;
2984         break;
2985       default:
2986         return error_type (pp);
2987     }
2988   (*pp)++;
2989
2990   /* For some odd reason, all forms of char put a c here.  This is strange
2991      because no other type has this honor.  We can safely ignore this because
2992      we actually determine 'char'acterness by the number of bits specified in
2993      the descriptor.  */
2994
2995   if (**pp == 'c')
2996     (*pp)++;
2997
2998   /* The first number appears to be the number of bytes occupied
2999      by this type, except that unsigned short is 4 instead of 2.
3000      Since this information is redundant with the third number,
3001      we will ignore it.  */
3002   read_huge_number (pp, ';', &nbits);
3003   if (nbits != 0)
3004     return error_type (pp);
3005
3006   /* The second number is always 0, so ignore it too. */
3007   read_huge_number (pp, ';', &nbits);
3008   if (nbits != 0)
3009     return error_type (pp);
3010
3011   /* The third number is the number of bits for this type. */
3012   type_bits = read_huge_number (pp, 0, &nbits);
3013   if (nbits != 0)
3014     return error_type (pp);
3015
3016   return init_type (type_bits == 0 ? TYPE_CODE_VOID : TYPE_CODE_INT,
3017                     type_bits / TARGET_CHAR_BIT,
3018                     signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *)NULL,
3019                     objfile);
3020 }
3021
3022 static struct type *
3023 read_sun_floating_type (pp, typenums, objfile)
3024      char **pp;
3025      int typenums[2];
3026      struct objfile *objfile;
3027 {
3028   int nbits;
3029   int details;
3030   int nbytes;
3031
3032   /* The first number has more details about the type, for example
3033      FN_COMPLEX.  */
3034   details = read_huge_number (pp, ';', &nbits);
3035   if (nbits != 0)
3036     return error_type (pp);
3037
3038   /* The second number is the number of bytes occupied by this type */
3039   nbytes = read_huge_number (pp, ';', &nbits);
3040   if (nbits != 0)
3041     return error_type (pp);
3042
3043   if (details == NF_COMPLEX || details == NF_COMPLEX16
3044       || details == NF_COMPLEX32)
3045     /* This is a type we can't handle, but we do know the size.
3046        We also will be able to give it a name.  */
3047     return init_type (TYPE_CODE_ERROR, nbytes, 0, NULL, objfile);
3048
3049   return init_type (TYPE_CODE_FLT, nbytes, 0, NULL, objfile);
3050 }
3051
3052 /* Read a number from the string pointed to by *PP.
3053    The value of *PP is advanced over the number.
3054    If END is nonzero, the character that ends the
3055    number must match END, or an error happens;
3056    and that character is skipped if it does match.
3057    If END is zero, *PP is left pointing to that character.
3058
3059    If the number fits in a long, set *BITS to 0 and return the value.
3060    If not, set *BITS to be the number of bits in the number and return 0.
3061
3062    If encounter garbage, set *BITS to -1 and return 0.  */
3063
3064 static long
3065 read_huge_number (pp, end, bits)
3066      char **pp;
3067      int end;
3068      int *bits;
3069 {
3070   char *p = *pp;
3071   int sign = 1;
3072   long n = 0;
3073   int radix = 10;
3074   char overflow = 0;
3075   int nbits = 0;
3076   int c;
3077   long upper_limit;
3078   
3079   if (*p == '-')
3080     {
3081       sign = -1;
3082       p++;
3083     }
3084
3085   /* Leading zero means octal.  GCC uses this to output values larger
3086      than an int (because that would be hard in decimal).  */
3087   if (*p == '0')
3088     {
3089       radix = 8;
3090       p++;
3091     }
3092
3093   upper_limit = LONG_MAX / radix;
3094   while ((c = *p++) >= '0' && c < ('0' + radix))
3095     {
3096       if (n <= upper_limit)
3097         {
3098           n *= radix;
3099           n += c - '0';         /* FIXME this overflows anyway */
3100         }
3101       else
3102         overflow = 1;
3103       
3104       /* This depends on large values being output in octal, which is
3105          what GCC does. */
3106       if (radix == 8)
3107         {
3108           if (nbits == 0)
3109             {
3110               if (c == '0')
3111                 /* Ignore leading zeroes.  */
3112                 ;
3113               else if (c == '1')
3114                 nbits = 1;
3115               else if (c == '2' || c == '3')
3116                 nbits = 2;
3117               else
3118                 nbits = 3;
3119             }
3120           else
3121             nbits += 3;
3122         }
3123     }
3124   if (end)
3125     {
3126       if (c && c != end)
3127         {
3128           if (bits != NULL)
3129             *bits = -1;
3130           return 0;
3131         }
3132     }
3133   else
3134     --p;
3135
3136   *pp = p;
3137   if (overflow)
3138     {
3139       if (nbits == 0)
3140         {
3141           /* Large decimal constants are an error (because it is hard to
3142              count how many bits are in them).  */
3143           if (bits != NULL)
3144             *bits = -1;
3145           return 0;
3146         }
3147       
3148       /* -0x7f is the same as 0x80.  So deal with it by adding one to
3149          the number of bits.  */
3150       if (sign == -1)
3151         ++nbits;
3152       if (bits)
3153         *bits = nbits;
3154     }
3155   else
3156     {
3157       if (bits)
3158         *bits = 0;
3159       return n * sign;
3160     }
3161   /* It's *BITS which has the interesting information.  */
3162   return 0;
3163 }
3164
3165 static struct type *
3166 read_range_type (pp, typenums, objfile)
3167      char **pp;
3168      int typenums[2];
3169      struct objfile *objfile;
3170 {
3171   int rangenums[2];
3172   long n2, n3;
3173   int n2bits, n3bits;
3174   int self_subrange;
3175   struct type *result_type;
3176   struct type *index_type;
3177
3178   /* First comes a type we are a subrange of.
3179      In C it is usually 0, 1 or the type being defined.  */
3180   /* FIXME: according to stabs.texinfo and AIX doc, this can be a type-id
3181      not just a type number.  */
3182   if (read_type_number (pp, rangenums) != 0)
3183     return error_type (pp);
3184   self_subrange = (rangenums[0] == typenums[0] &&
3185                    rangenums[1] == typenums[1]);
3186
3187   /* A semicolon should now follow; skip it.  */
3188   if (**pp == ';')
3189     (*pp)++;
3190
3191   /* The remaining two operands are usually lower and upper bounds
3192      of the range.  But in some special cases they mean something else.  */
3193   n2 = read_huge_number (pp, ';', &n2bits);
3194   n3 = read_huge_number (pp, ';', &n3bits);
3195
3196   if (n2bits == -1 || n3bits == -1)
3197     return error_type (pp);
3198   
3199   /* If limits are huge, must be large integral type.  */
3200   if (n2bits != 0 || n3bits != 0)
3201     {
3202       char got_signed = 0;
3203       char got_unsigned = 0;
3204       /* Number of bits in the type.  */
3205       int nbits = 0;
3206
3207       /* Range from 0 to <large number> is an unsigned large integral type.  */
3208       if ((n2bits == 0 && n2 == 0) && n3bits != 0)
3209         {
3210           got_unsigned = 1;
3211           nbits = n3bits;
3212         }
3213       /* Range from <large number> to <large number>-1 is a large signed
3214          integral type.  Take care of the case where <large number> doesn't
3215          fit in a long but <large number>-1 does.  */
3216       else if ((n2bits != 0 && n3bits != 0 && n2bits == n3bits + 1)
3217                || (n2bits != 0 && n3bits == 0
3218                    && (n2bits == sizeof (long) * HOST_CHAR_BIT)
3219                    && n3 == LONG_MAX))
3220         {
3221           got_signed = 1;
3222           nbits = n2bits;
3223         }
3224
3225       if (got_signed || got_unsigned)
3226         {
3227           return init_type (TYPE_CODE_INT, nbits / TARGET_CHAR_BIT,
3228                             got_unsigned ? TYPE_FLAG_UNSIGNED : 0, NULL,
3229                             objfile);
3230         }
3231       else
3232         return error_type (pp);
3233     }
3234
3235   /* A type defined as a subrange of itself, with bounds both 0, is void.  */
3236   if (self_subrange && n2 == 0 && n3 == 0)
3237     return init_type (TYPE_CODE_VOID, 0, 0, NULL, objfile);
3238
3239   /* If n3 is zero and n2 is not, we want a floating type,
3240      and n2 is the width in bytes.
3241
3242      Fortran programs appear to use this for complex types also,
3243      and they give no way to distinguish between double and single-complex!
3244
3245      GDB does not have complex types.
3246
3247      Just return the complex as a float of that size.  It won't work right
3248      for the complex values, but at least it makes the file loadable.  */
3249
3250   if (n3 == 0 && n2 > 0)
3251     {
3252       return init_type (TYPE_CODE_FLT, n2, 0, NULL, objfile);
3253     }
3254
3255   /* If the upper bound is -1, it must really be an unsigned int.  */
3256
3257   else if (n2 == 0 && n3 == -1)
3258     {
3259       /* It is unsigned int or unsigned long.  */
3260       /* GCC 2.3.3 uses this for long long too, but that is just a GDB 3.5
3261          compatibility hack.  */
3262       return init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
3263                         TYPE_FLAG_UNSIGNED, NULL, objfile);
3264     }
3265
3266   /* Special case: char is defined (Who knows why) as a subrange of
3267      itself with range 0-127.  */
3268   else if (self_subrange && n2 == 0 && n3 == 127)
3269     return init_type (TYPE_CODE_INT, 1, 0, NULL, objfile);
3270
3271   /* We used to do this only for subrange of self or subrange of int.  */
3272   else if (n2 == 0)
3273     {
3274       if (n3 < 0)
3275         /* n3 actually gives the size.  */
3276         return init_type (TYPE_CODE_INT, - n3, TYPE_FLAG_UNSIGNED,
3277                           NULL, objfile);
3278       if (n3 == 0xff)
3279         return init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED, NULL, objfile);
3280       if (n3 == 0xffff)
3281         return init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED, NULL, objfile);
3282
3283       /* -1 is used for the upper bound of (4 byte) "unsigned int" and
3284          "unsigned long", and we already checked for that,
3285          so don't need to test for it here.  */
3286     }
3287   /* I think this is for Convex "long long".  Since I don't know whether
3288      Convex sets self_subrange, I also accept that particular size regardless
3289      of self_subrange.  */
3290   else if (n3 == 0 && n2 < 0
3291            && (self_subrange
3292                || n2 == - TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT))
3293     return init_type (TYPE_CODE_INT, - n2, 0, NULL, objfile);
3294   else if (n2 == -n3 -1)
3295     {
3296       if (n3 == 0x7f)
3297         return init_type (TYPE_CODE_INT, 1, 0, NULL, objfile);
3298       if (n3 == 0x7fff)
3299         return init_type (TYPE_CODE_INT, 2, 0, NULL, objfile);
3300       if (n3 == 0x7fffffff)
3301         return init_type (TYPE_CODE_INT, 4, 0, NULL, objfile);
3302     }
3303
3304   /* We have a real range type on our hands.  Allocate space and
3305      return a real pointer.  */
3306
3307   /* At this point I don't have the faintest idea how to deal with
3308      a self_subrange type; I'm going to assume that this is used
3309      as an idiom, and that all of them are special cases.  So . . .  */
3310   if (self_subrange)
3311     return error_type (pp);
3312
3313   index_type = *dbx_lookup_type (rangenums);
3314   if (index_type == NULL)
3315     {
3316       /* Does this actually ever happen?  Is that why we are worrying
3317          about dealing with it rather than just calling error_type?  */
3318
3319       static struct type *range_type_index;
3320
3321       complain (&range_type_base_complaint, rangenums[1]);
3322       if (range_type_index == NULL)
3323         range_type_index =
3324           init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
3325                      0, "range type index type", NULL);
3326       index_type = range_type_index;
3327     }
3328
3329   result_type = create_range_type ((struct type *) NULL, index_type, n2, n3);
3330   return (result_type);
3331 }
3332
3333 /* Read in an argument list.  This is a list of types, separated by commas
3334    and terminated with END.  Return the list of types read in, or (struct type
3335    **)-1 if there is an error.  */
3336
3337 static struct type **
3338 read_args (pp, end, objfile)
3339      char **pp;
3340      int end;
3341      struct objfile *objfile;
3342 {
3343   /* FIXME!  Remove this arbitrary limit!  */
3344   struct type *types[1024], **rval; /* allow for fns of 1023 parameters */
3345   int n = 0;
3346
3347   while (**pp != end)
3348     {
3349       if (**pp != ',')
3350         /* Invalid argument list: no ','.  */
3351         return (struct type **)-1;
3352       (*pp)++;
3353       STABS_CONTINUE (pp);
3354       types[n++] = read_type (pp, objfile);
3355     }
3356   (*pp)++;                      /* get past `end' (the ':' character) */
3357
3358   if (n == 1)
3359     {
3360       rval = (struct type **) xmalloc (2 * sizeof (struct type *));
3361     }
3362   else if (TYPE_CODE (types[n-1]) != TYPE_CODE_VOID)
3363     {
3364       rval = (struct type **) xmalloc ((n + 1) * sizeof (struct type *));
3365       memset (rval + n, 0, sizeof (struct type *));
3366     }
3367   else
3368     {
3369       rval = (struct type **) xmalloc (n * sizeof (struct type *));
3370     }
3371   memcpy (rval, types, n * sizeof (struct type *));
3372   return rval;
3373 }
3374 \f
3375 /* Common block handling.  */
3376
3377 /* List of symbols declared since the last BCOMM.  This list is a tail
3378    of local_symbols.  When ECOMM is seen, the symbols on the list
3379    are noted so their proper addresses can be filled in later,
3380    using the common block base address gotten from the assembler
3381    stabs.  */
3382
3383 static struct pending *common_block;
3384 static int common_block_i;
3385
3386 /* Name of the current common block.  We get it from the BCOMM instead of the
3387    ECOMM to match IBM documentation (even though IBM puts the name both places
3388    like everyone else).  */
3389 static char *common_block_name;
3390
3391 /* Process a N_BCOMM symbol.  The storage for NAME is not guaranteed
3392    to remain after this function returns.  */
3393
3394 void
3395 common_block_start (name, objfile)
3396      char *name;
3397      struct objfile *objfile;
3398 {
3399   if (common_block_name != NULL)
3400     {
3401       static struct complaint msg = {
3402         "Invalid symbol data: common block within common block",
3403         0, 0};
3404       complain (&msg);
3405     }
3406   common_block = local_symbols;
3407   common_block_i = local_symbols ? local_symbols->nsyms : 0;
3408   common_block_name = obsavestring (name, strlen (name),
3409                                     &objfile -> symbol_obstack);
3410 }
3411
3412 /* Process a N_ECOMM symbol.  */
3413
3414 void
3415 common_block_end (objfile)
3416      struct objfile *objfile;
3417 {
3418   /* Symbols declared since the BCOMM are to have the common block
3419      start address added in when we know it.  common_block and
3420      common_block_i point to the first symbol after the BCOMM in
3421      the local_symbols list; copy the list and hang it off the
3422      symbol for the common block name for later fixup.  */
3423   int i;
3424   struct symbol *sym;
3425   struct pending *new = 0;
3426   struct pending *next;
3427   int j;
3428
3429   if (common_block_name == NULL)
3430     {
3431       static struct complaint msg = {"ECOMM symbol unmatched by BCOMM", 0, 0};
3432       complain (&msg);
3433       return;
3434     }
3435
3436   sym = (struct symbol *) 
3437     obstack_alloc (&objfile -> symbol_obstack, sizeof (struct symbol));
3438   memset (sym, 0, sizeof (struct symbol));
3439   SYMBOL_NAME (sym) = common_block_name;
3440   SYMBOL_CLASS (sym) = LOC_BLOCK;
3441
3442   /* Now we copy all the symbols which have been defined since the BCOMM.  */
3443
3444   /* Copy all the struct pendings before common_block.  */
3445   for (next = local_symbols;
3446        next != NULL && next != common_block;
3447        next = next->next)
3448     {
3449       for (j = 0; j < next->nsyms; j++)
3450         add_symbol_to_list (next->symbol[j], &new);
3451     }
3452
3453   /* Copy however much of COMMON_BLOCK we need.  If COMMON_BLOCK is
3454      NULL, it means copy all the local symbols (which we already did
3455      above).  */
3456
3457   if (common_block != NULL)
3458     for (j = common_block_i; j < common_block->nsyms; j++)
3459       add_symbol_to_list (common_block->symbol[j], &new);
3460
3461   SYMBOL_NAMESPACE (sym) = (enum namespace)((long) new);
3462
3463   /* Should we be putting local_symbols back to what it was?
3464      Does it matter?  */
3465
3466   i = hashname (SYMBOL_NAME (sym));
3467   SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
3468   global_sym_chain[i] = sym;
3469   common_block_name = NULL;
3470 }
3471
3472 /* Add a common block's start address to the offset of each symbol
3473    declared to be in it (by being between a BCOMM/ECOMM pair that uses
3474    the common block name).  */
3475
3476 static void
3477 fix_common_block (sym, valu)
3478     struct symbol *sym;
3479     int valu;
3480 {
3481   struct pending *next = (struct pending *) SYMBOL_NAMESPACE (sym);
3482   for ( ; next; next = next->next)
3483     {
3484       register int j;
3485       for (j = next->nsyms - 1; j >= 0; j--)
3486         SYMBOL_VALUE_ADDRESS (next->symbol[j]) += valu;
3487     }
3488 }
3489
3490
3491 \f
3492 /* What about types defined as forward references inside of a small lexical
3493    scope?  */
3494 /* Add a type to the list of undefined types to be checked through
3495    once this file has been read in.  */
3496
3497 void
3498 add_undefined_type (type)
3499      struct type *type;
3500 {
3501   if (undef_types_length == undef_types_allocated)
3502     {
3503       undef_types_allocated *= 2;
3504       undef_types = (struct type **)
3505         xrealloc ((char *) undef_types,
3506                   undef_types_allocated * sizeof (struct type *));
3507     }
3508   undef_types[undef_types_length++] = type;
3509 }
3510
3511 /* Go through each undefined type, see if it's still undefined, and fix it
3512    up if possible.  We have two kinds of undefined types:
3513
3514    TYPE_CODE_ARRAY:  Array whose target type wasn't defined yet.
3515                         Fix:  update array length using the element bounds
3516                         and the target type's length.
3517    TYPE_CODE_STRUCT, TYPE_CODE_UNION:  Structure whose fields were not
3518                         yet defined at the time a pointer to it was made.
3519                         Fix:  Do a full lookup on the struct/union tag.  */
3520 void
3521 cleanup_undefined_types ()
3522 {
3523   struct type **type;
3524
3525   for (type = undef_types; type < undef_types + undef_types_length; type++)
3526     {
3527       switch (TYPE_CODE (*type))
3528         {
3529
3530           case TYPE_CODE_STRUCT:
3531           case TYPE_CODE_UNION:
3532           case TYPE_CODE_ENUM:
3533           {
3534             /* Check if it has been defined since.  Need to do this here
3535                as well as in check_stub_type to deal with the (legitimate in
3536                C though not C++) case of several types with the same name
3537                in different source files.  */
3538             if (TYPE_FLAGS (*type) & TYPE_FLAG_STUB)
3539               {
3540                 struct pending *ppt;
3541                 int i;
3542                 /* Name of the type, without "struct" or "union" */
3543                 char *typename = TYPE_TAG_NAME (*type);
3544
3545                 if (typename == NULL)
3546                   {
3547                     static struct complaint msg = {"need a type name", 0, 0};
3548                     complain (&msg);
3549                     break;
3550                   }
3551                 for (ppt = file_symbols; ppt; ppt = ppt->next)
3552                   {
3553                     for (i = 0; i < ppt->nsyms; i++)
3554                       {
3555                         struct symbol *sym = ppt->symbol[i];
3556                         
3557                         if (SYMBOL_CLASS (sym) == LOC_TYPEDEF
3558                             && SYMBOL_NAMESPACE (sym) == STRUCT_NAMESPACE
3559                             && (TYPE_CODE (SYMBOL_TYPE (sym)) ==
3560                                 TYPE_CODE (*type))
3561                             && STREQ (SYMBOL_NAME (sym), typename))
3562                           {
3563                             memcpy (*type, SYMBOL_TYPE (sym),
3564                                     sizeof (struct type));
3565                           }
3566                       }
3567                   }
3568               }
3569           }
3570           break;
3571
3572         case TYPE_CODE_ARRAY:
3573           {
3574             /* This is a kludge which is here for historical reasons
3575                because I suspect that check_stub_type does not get
3576                called everywhere it needs to be called for arrays.  Even
3577                with this kludge, those places are broken for the case
3578                where the stub type is defined in another compilation
3579                unit, but this kludge at least deals with it for the case
3580                in which it is the same compilation unit.
3581
3582                Don't try to do this by calling check_stub_type; it might
3583                cause symbols to be read in lookup_symbol, and the symbol
3584                reader is not reentrant.  */
3585
3586             struct type *range_type;
3587             int lower, upper;
3588
3589             if (TYPE_LENGTH (*type) != 0)               /* Better be unknown */
3590               goto badtype;
3591             if (TYPE_NFIELDS (*type) != 1)
3592               goto badtype;
3593             range_type = TYPE_FIELD_TYPE (*type, 0);
3594             if (TYPE_CODE (range_type) != TYPE_CODE_RANGE)
3595               goto badtype;
3596
3597             /* Now recompute the length of the array type, based on its
3598                number of elements and the target type's length.  */
3599             lower = TYPE_FIELD_BITPOS (range_type, 0);
3600             upper = TYPE_FIELD_BITPOS (range_type, 1);
3601             TYPE_LENGTH (*type) = (upper - lower + 1)
3602               * TYPE_LENGTH (TYPE_TARGET_TYPE (*type));
3603
3604             /* If the target type is not a stub, we could be clearing
3605                TYPE_FLAG_TARGET_STUB for *type.  */
3606           }
3607           break;
3608
3609         default:
3610         badtype:
3611           {
3612             static struct complaint msg = {"\
3613 GDB internal error.  cleanup_undefined_types with bad type %d.", 0, 0};
3614             complain (&msg, TYPE_CODE (*type));
3615           }
3616           break;
3617         }
3618     }
3619
3620   undef_types_length = 0;
3621 }
3622
3623 /* Scan through all of the global symbols defined in the object file,
3624    assigning values to the debugging symbols that need to be assigned
3625    to.  Get these symbols from the minimal symbol table.  */
3626
3627 void
3628 scan_file_globals (objfile)
3629      struct objfile *objfile;
3630 {
3631   int hash;
3632   struct minimal_symbol *msymbol;
3633   struct symbol *sym, *prev;
3634
3635   if (objfile->msymbols == 0)           /* Beware the null file.  */
3636     return;
3637
3638   for (msymbol = objfile -> msymbols; SYMBOL_NAME (msymbol) != NULL; msymbol++)
3639     {
3640       QUIT;
3641
3642       prev = NULL;
3643
3644       /* Get the hash index and check all the symbols
3645          under that hash index. */
3646
3647       hash = hashname (SYMBOL_NAME (msymbol));
3648
3649       for (sym = global_sym_chain[hash]; sym;)
3650         {
3651           if (SYMBOL_NAME (msymbol)[0] == SYMBOL_NAME (sym)[0] &&
3652               STREQ(SYMBOL_NAME (msymbol) + 1, SYMBOL_NAME (sym) + 1))
3653             {
3654               /* Splice this symbol out of the hash chain and
3655                  assign the value we have to it. */
3656               if (prev)
3657                 {
3658                   SYMBOL_VALUE_CHAIN (prev) = SYMBOL_VALUE_CHAIN (sym);
3659                 }
3660               else
3661                 {
3662                   global_sym_chain[hash] = SYMBOL_VALUE_CHAIN (sym);
3663                 }
3664               
3665               /* Check to see whether we need to fix up a common block.  */
3666               /* Note: this code might be executed several times for
3667                  the same symbol if there are multiple references.  */
3668
3669               if (SYMBOL_CLASS (sym) == LOC_BLOCK)
3670                 {
3671                   fix_common_block (sym, SYMBOL_VALUE_ADDRESS (msymbol));
3672                 }
3673               else
3674                 {
3675                   SYMBOL_VALUE_ADDRESS (sym) = SYMBOL_VALUE_ADDRESS (msymbol);
3676                 }
3677               
3678               if (prev)
3679                 {
3680                   sym = SYMBOL_VALUE_CHAIN (prev);
3681                 }
3682               else
3683                 {
3684                   sym = global_sym_chain[hash];
3685                 }
3686             }
3687           else
3688             {
3689               prev = sym;
3690               sym = SYMBOL_VALUE_CHAIN (sym);
3691             }
3692         }
3693     }
3694 }
3695
3696 /* Initialize anything that needs initializing when starting to read
3697    a fresh piece of a symbol file, e.g. reading in the stuff corresponding
3698    to a psymtab.  */
3699
3700 void
3701 stabsread_init ()
3702 {
3703 }
3704
3705 /* Initialize anything that needs initializing when a completely new
3706    symbol file is specified (not just adding some symbols from another
3707    file, e.g. a shared library).  */
3708
3709 void
3710 stabsread_new_init ()
3711 {
3712   /* Empty the hash table of global syms looking for values.  */
3713   memset (global_sym_chain, 0, sizeof (global_sym_chain));
3714 }
3715
3716 /* Initialize anything that needs initializing at the same time as
3717    start_symtab() is called. */
3718
3719 void start_stabs ()
3720 {
3721   global_stabs = NULL;          /* AIX COFF */
3722   /* Leave FILENUM of 0 free for builtin types and this file's types.  */
3723   n_this_object_header_files = 1;
3724   type_vector_length = 0;
3725   type_vector = (struct type **) 0;
3726
3727   /* FIXME: If common_block_name is not already NULL, we should complain().  */
3728   common_block_name = NULL;
3729 }
3730
3731 /* Call after end_symtab() */
3732
3733 void end_stabs ()
3734 {
3735   if (type_vector)
3736     {
3737       free ((char *) type_vector);
3738     }
3739   type_vector = 0;
3740   type_vector_length = 0;
3741   previous_stab_code = 0;
3742 }
3743
3744 void
3745 finish_global_stabs (objfile)
3746      struct objfile *objfile;
3747 {
3748   if (global_stabs)
3749     {
3750       patch_block_stabs (global_symbols, global_stabs, objfile);
3751       free ((PTR) global_stabs);
3752       global_stabs = NULL;
3753     }
3754 }
3755
3756 /* Initializer for this module */
3757
3758 void
3759 _initialize_stabsread ()
3760 {
3761   undef_types_allocated = 20;
3762   undef_types_length = 0;
3763   undef_types = (struct type **)
3764     xmalloc (undef_types_allocated * sizeof (struct type *));
3765 }
This page took 0.239985 seconds and 4 git commands to generate.