0d5bee84489df6b126f2ff077b70f3651c9846c2
[platform/upstream/binutils.git] / gdb / gdbtypes.c
1 /* Support routines for manipulating internal types for GDB.
2    Copyright (C) 1992, 93, 94, 95, 96, 1998 Free Software Foundation, Inc.
3    Contributed by Cygnus Support, using pieces from other GDB modules.
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., 59 Temple Place - Suite 330,
20    Boston, MA 02111-1307, USA.  */
21
22 #include "defs.h"
23 #include "gdb_string.h"
24 #include "bfd.h"
25 #include "symtab.h"
26 #include "symfile.h"
27 #include "objfiles.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "language.h"
31 #include "target.h"
32 #include "value.h"
33 #include "demangle.h"
34 #include "complaints.h"
35 #include "gdbcmd.h"
36 #include "wrapper.h"
37
38 /* These variables point to the objects
39    representing the predefined C data types.  */
40
41 struct type *builtin_type_void;
42 struct type *builtin_type_char;
43 struct type *builtin_type_true_char;
44 struct type *builtin_type_short;
45 struct type *builtin_type_int;
46 struct type *builtin_type_long;
47 struct type *builtin_type_long_long;
48 struct type *builtin_type_signed_char;
49 struct type *builtin_type_unsigned_char;
50 struct type *builtin_type_unsigned_short;
51 struct type *builtin_type_unsigned_int;
52 struct type *builtin_type_unsigned_long;
53 struct type *builtin_type_unsigned_long_long;
54 struct type *builtin_type_float;
55 struct type *builtin_type_double;
56 struct type *builtin_type_long_double;
57 struct type *builtin_type_complex;
58 struct type *builtin_type_double_complex;
59 struct type *builtin_type_string;
60 struct type *builtin_type_int8;
61 struct type *builtin_type_uint8;
62 struct type *builtin_type_int16;
63 struct type *builtin_type_uint16;
64 struct type *builtin_type_int32;
65 struct type *builtin_type_uint32;
66 struct type *builtin_type_int64;
67 struct type *builtin_type_uint64;
68 struct type *builtin_type_bool;
69 struct type *builtin_type_v4sf;
70 struct type *builtin_type_v4si;
71 struct type *builtin_type_v8qi;
72 struct type *builtin_type_v4hi;
73 struct type *builtin_type_v2si;
74 struct type *builtin_type_ptr;
75 struct type *builtin_type_CORE_ADDR;
76 struct type *builtin_type_bfd_vma;
77
78 int opaque_type_resolution = 1;
79 int overload_debug = 0;
80
81 struct extra
82   {
83     char str[128];
84     int len;
85   };                            /* maximum extention is 128! FIXME */
86
87 static void add_name PARAMS ((struct extra *, char *));
88 static void add_mangled_type PARAMS ((struct extra *, struct type *));
89 #if 0
90 static void cfront_mangle_name PARAMS ((struct type *, int, int));
91 #endif
92 static void print_bit_vector PARAMS ((B_TYPE *, int));
93 static void print_arg_types PARAMS ((struct type **, int));
94 static void dump_fn_fieldlists PARAMS ((struct type *, int));
95 static void print_cplus_stuff PARAMS ((struct type *, int));
96 static void virtual_base_list_aux PARAMS ((struct type * dclass));
97
98
99 /* Alloc a new type structure and fill it with some defaults.  If
100    OBJFILE is non-NULL, then allocate the space for the type structure
101    in that objfile's type_obstack. */
102
103 struct type *
104 alloc_type (objfile)
105      struct objfile *objfile;
106 {
107   register struct type *type;
108
109   /* Alloc the structure and start off with all fields zeroed. */
110
111   if (objfile == NULL)
112     {
113       type = (struct type *) xmalloc (sizeof (struct type));
114     }
115   else
116     {
117       type = (struct type *) obstack_alloc (&objfile->type_obstack,
118                                             sizeof (struct type));
119       OBJSTAT (objfile, n_types++);
120     }
121   memset ((char *) type, 0, sizeof (struct type));
122
123   /* Initialize the fields that might not be zero. */
124
125   TYPE_CODE (type) = TYPE_CODE_UNDEF;
126   TYPE_OBJFILE (type) = objfile;
127   TYPE_VPTR_FIELDNO (type) = -1;
128   TYPE_CV_TYPE (type) = type;   /* chain back to itself */
129
130   return (type);
131 }
132
133 /* Lookup a pointer to a type TYPE.  TYPEPTR, if nonzero, points
134    to a pointer to memory where the pointer type should be stored.
135    If *TYPEPTR is zero, update it to point to the pointer type we return.
136    We allocate new memory if needed.  */
137
138 struct type *
139 make_pointer_type (type, typeptr)
140      struct type *type;
141      struct type **typeptr;
142 {
143   register struct type *ntype;  /* New type */
144   struct objfile *objfile;
145
146   ntype = TYPE_POINTER_TYPE (type);
147
148   if (ntype)
149     {
150       if (typeptr == 0)
151         return ntype;           /* Don't care about alloc, and have new type.  */
152       else if (*typeptr == 0)
153         {
154           *typeptr = ntype;     /* Tracking alloc, and we have new type.  */
155           return ntype;
156         }
157     }
158
159   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
160     {
161       ntype = alloc_type (TYPE_OBJFILE (type));
162       if (typeptr)
163         *typeptr = ntype;
164     }
165   else
166     /* We have storage, but need to reset it.  */
167     {
168       ntype = *typeptr;
169       objfile = TYPE_OBJFILE (ntype);
170       memset ((char *) ntype, 0, sizeof (struct type));
171       TYPE_OBJFILE (ntype) = objfile;
172     }
173
174   TYPE_TARGET_TYPE (ntype) = type;
175   TYPE_POINTER_TYPE (type) = ntype;
176
177   /* FIXME!  Assume the machine has only one representation for pointers!  */
178
179   TYPE_LENGTH (ntype) = TARGET_PTR_BIT / TARGET_CHAR_BIT;
180   TYPE_CODE (ntype) = TYPE_CODE_PTR;
181
182   /* pointers are unsigned */
183   TYPE_FLAGS (ntype) |= TYPE_FLAG_UNSIGNED;
184
185   if (!TYPE_POINTER_TYPE (type))        /* Remember it, if don't have one.  */
186     TYPE_POINTER_TYPE (type) = ntype;
187
188   return ntype;
189 }
190
191 /* Given a type TYPE, return a type of pointers to that type.
192    May need to construct such a type if this is the first use.  */
193
194 struct type *
195 lookup_pointer_type (type)
196      struct type *type;
197 {
198   return make_pointer_type (type, (struct type **) 0);
199 }
200
201 /* Lookup a C++ `reference' to a type TYPE.  TYPEPTR, if nonzero, points
202    to a pointer to memory where the reference type should be stored.
203    If *TYPEPTR is zero, update it to point to the reference type we return.
204    We allocate new memory if needed.  */
205
206 struct type *
207 make_reference_type (type, typeptr)
208      struct type *type;
209      struct type **typeptr;
210 {
211   register struct type *ntype;  /* New type */
212   struct objfile *objfile;
213
214   ntype = TYPE_REFERENCE_TYPE (type);
215
216   if (ntype)
217     {
218       if (typeptr == 0)
219         return ntype;           /* Don't care about alloc, and have new type.  */
220       else if (*typeptr == 0)
221         {
222           *typeptr = ntype;     /* Tracking alloc, and we have new type.  */
223           return ntype;
224         }
225     }
226
227   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
228     {
229       ntype = alloc_type (TYPE_OBJFILE (type));
230       if (typeptr)
231         *typeptr = ntype;
232     }
233   else
234     /* We have storage, but need to reset it.  */
235     {
236       ntype = *typeptr;
237       objfile = TYPE_OBJFILE (ntype);
238       memset ((char *) ntype, 0, sizeof (struct type));
239       TYPE_OBJFILE (ntype) = objfile;
240     }
241
242   TYPE_TARGET_TYPE (ntype) = type;
243   TYPE_REFERENCE_TYPE (type) = ntype;
244
245   /* FIXME!  Assume the machine has only one representation for references,
246      and that it matches the (only) representation for pointers!  */
247
248   TYPE_LENGTH (ntype) = TARGET_PTR_BIT / TARGET_CHAR_BIT;
249   TYPE_CODE (ntype) = TYPE_CODE_REF;
250
251   if (!TYPE_REFERENCE_TYPE (type))      /* Remember it, if don't have one.  */
252     TYPE_REFERENCE_TYPE (type) = ntype;
253
254   return ntype;
255 }
256
257 /* Same as above, but caller doesn't care about memory allocation details.  */
258
259 struct type *
260 lookup_reference_type (type)
261      struct type *type;
262 {
263   return make_reference_type (type, (struct type **) 0);
264 }
265
266 /* Lookup a function type that returns type TYPE.  TYPEPTR, if nonzero, points
267    to a pointer to memory where the function type should be stored.
268    If *TYPEPTR is zero, update it to point to the function type we return.
269    We allocate new memory if needed.  */
270
271 struct type *
272 make_function_type (type, typeptr)
273      struct type *type;
274      struct type **typeptr;
275 {
276   register struct type *ntype;  /* New type */
277   struct objfile *objfile;
278
279   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
280     {
281       ntype = alloc_type (TYPE_OBJFILE (type));
282       if (typeptr)
283         *typeptr = ntype;
284     }
285   else
286     /* We have storage, but need to reset it.  */
287     {
288       ntype = *typeptr;
289       objfile = TYPE_OBJFILE (ntype);
290       memset ((char *) ntype, 0, sizeof (struct type));
291       TYPE_OBJFILE (ntype) = objfile;
292     }
293
294   TYPE_TARGET_TYPE (ntype) = type;
295
296   TYPE_LENGTH (ntype) = 1;
297   TYPE_CODE (ntype) = TYPE_CODE_FUNC;
298
299   return ntype;
300 }
301
302
303 /* Given a type TYPE, return a type of functions that return that type.
304    May need to construct such a type if this is the first use.  */
305
306 struct type *
307 lookup_function_type (type)
308      struct type *type;
309 {
310   return make_function_type (type, (struct type **) 0);
311 }
312
313
314 /* Make a "c-v" variant of a type -- a type that is identical to the
315    one supplied except that it may have const or volatile attributes
316    CNST is a flag for setting the const attribute
317    VOLTL is a flag for setting the volatile attribute
318    TYPE is the base type whose variant we are creating.
319    TYPEPTR, if nonzero, points
320    to a pointer to memory where the reference type should be stored.
321    If *TYPEPTR is zero, update it to point to the reference type we return.
322    We allocate new memory if needed.  */
323
324 struct type *
325 make_cv_type (cnst, voltl, type, typeptr)
326      int cnst;
327      int voltl;
328      struct type *type;
329      struct type **typeptr;
330 {
331   register struct type *ntype;  /* New type */
332   register struct type *tmp_type = type;        /* tmp type */
333   struct objfile *objfile;
334
335   ntype = TYPE_CV_TYPE (type);
336
337   while (ntype != type)
338     {
339       if ((TYPE_CONST (ntype) == cnst) &&
340           (TYPE_VOLATILE (ntype) == voltl))
341         {
342           if (typeptr == 0)
343             return ntype;
344           else if (*typeptr == 0)
345             {
346               *typeptr = ntype; /* Tracking alloc, and we have new type.  */
347               return ntype;
348             }
349         }
350       tmp_type = ntype;
351       ntype = TYPE_CV_TYPE (ntype);
352     }
353
354   if (typeptr == 0 || *typeptr == 0)    /* We'll need to allocate one.  */
355     {
356       ntype = alloc_type (TYPE_OBJFILE (type));
357       if (typeptr)
358         *typeptr = ntype;
359     }
360   else
361     /* We have storage, but need to reset it.  */
362     {
363       ntype = *typeptr;
364       objfile = TYPE_OBJFILE (ntype);
365       /* memset ((char *) ntype, 0, sizeof (struct type)); */
366       TYPE_OBJFILE (ntype) = objfile;
367     }
368
369   /* Copy original type */
370   memcpy ((char *) ntype, (char *) type, sizeof (struct type));
371   /* But zero out fields that shouldn't be copied */
372   TYPE_POINTER_TYPE (ntype) = (struct type *) 0;        /* Need new pointer kind */
373   TYPE_REFERENCE_TYPE (ntype) = (struct type *) 0;      /* Need new referene kind */
374   /* Note: TYPE_TARGET_TYPE can be left as is */
375
376   /* Set flags appropriately */
377   if (cnst)
378     TYPE_FLAGS (ntype) |= TYPE_FLAG_CONST;
379   else
380     TYPE_FLAGS (ntype) &= ~TYPE_FLAG_CONST;
381
382   if (voltl)
383     TYPE_FLAGS (ntype) |= TYPE_FLAG_VOLATILE;
384   else
385     TYPE_FLAGS (ntype) &= ~TYPE_FLAG_VOLATILE;
386
387   /* Fix the chain of cv variants */
388   TYPE_CV_TYPE (ntype) = type;
389   TYPE_CV_TYPE (tmp_type) = ntype;
390
391   return ntype;
392 }
393
394
395
396
397 /* Implement direct support for MEMBER_TYPE in GNU C++.
398    May need to construct such a type if this is the first use.
399    The TYPE is the type of the member.  The DOMAIN is the type
400    of the aggregate that the member belongs to.  */
401
402 struct type *
403 lookup_member_type (type, domain)
404      struct type *type;
405      struct type *domain;
406 {
407   register struct type *mtype;
408
409   mtype = alloc_type (TYPE_OBJFILE (type));
410   smash_to_member_type (mtype, domain, type);
411   return (mtype);
412 }
413
414 /* Allocate a stub method whose return type is TYPE.  
415    This apparently happens for speed of symbol reading, since parsing
416    out the arguments to the method is cpu-intensive, the way we are doing
417    it.  So, we will fill in arguments later.
418    This always returns a fresh type.   */
419
420 struct type *
421 allocate_stub_method (type)
422      struct type *type;
423 {
424   struct type *mtype;
425
426   mtype = alloc_type (TYPE_OBJFILE (type));
427   TYPE_TARGET_TYPE (mtype) = type;
428   /*  _DOMAIN_TYPE (mtype) = unknown yet */
429   /*  _ARG_TYPES (mtype) = unknown yet */
430   TYPE_FLAGS (mtype) = TYPE_FLAG_STUB;
431   TYPE_CODE (mtype) = TYPE_CODE_METHOD;
432   TYPE_LENGTH (mtype) = 1;
433   return (mtype);
434 }
435
436 /* Create a range type using either a blank type supplied in RESULT_TYPE,
437    or creating a new type, inheriting the objfile from INDEX_TYPE.
438
439    Indices will be of type INDEX_TYPE, and will range from LOW_BOUND to
440    HIGH_BOUND, inclusive.
441
442    FIXME:  Maybe we should check the TYPE_CODE of RESULT_TYPE to make
443    sure it is TYPE_CODE_UNDEF before we bash it into a range type? */
444
445 struct type *
446 create_range_type (result_type, index_type, low_bound, high_bound)
447      struct type *result_type;
448      struct type *index_type;
449      int low_bound;
450      int high_bound;
451 {
452   if (result_type == NULL)
453     {
454       result_type = alloc_type (TYPE_OBJFILE (index_type));
455     }
456   TYPE_CODE (result_type) = TYPE_CODE_RANGE;
457   TYPE_TARGET_TYPE (result_type) = index_type;
458   if (TYPE_FLAGS (index_type) & TYPE_FLAG_STUB)
459     TYPE_FLAGS (result_type) |= TYPE_FLAG_TARGET_STUB;
460   else
461     TYPE_LENGTH (result_type) = TYPE_LENGTH (check_typedef (index_type));
462   TYPE_NFIELDS (result_type) = 2;
463   TYPE_FIELDS (result_type) = (struct field *)
464     TYPE_ALLOC (result_type, 2 * sizeof (struct field));
465   memset (TYPE_FIELDS (result_type), 0, 2 * sizeof (struct field));
466   TYPE_FIELD_BITPOS (result_type, 0) = low_bound;
467   TYPE_FIELD_BITPOS (result_type, 1) = high_bound;
468   TYPE_FIELD_TYPE (result_type, 0) = builtin_type_int;  /* FIXME */
469   TYPE_FIELD_TYPE (result_type, 1) = builtin_type_int;  /* FIXME */
470
471   if (low_bound >= 0)
472     TYPE_FLAGS (result_type) |= TYPE_FLAG_UNSIGNED;
473
474   return (result_type);
475 }
476
477 /* Set *LOWP and *HIGHP to the lower and upper bounds of discrete type TYPE.
478    Return 1 of type is a range type, 0 if it is discrete (and bounds
479    will fit in LONGEST), or -1 otherwise. */
480
481 int
482 get_discrete_bounds (type, lowp, highp)
483      struct type *type;
484      LONGEST *lowp, *highp;
485 {
486   CHECK_TYPEDEF (type);
487   switch (TYPE_CODE (type))
488     {
489     case TYPE_CODE_RANGE:
490       *lowp = TYPE_LOW_BOUND (type);
491       *highp = TYPE_HIGH_BOUND (type);
492       return 1;
493     case TYPE_CODE_ENUM:
494       if (TYPE_NFIELDS (type) > 0)
495         {
496           /* The enums may not be sorted by value, so search all
497              entries */
498           int i;
499
500           *lowp = *highp = TYPE_FIELD_BITPOS (type, 0);
501           for (i = 0; i < TYPE_NFIELDS (type); i++)
502             {
503               if (TYPE_FIELD_BITPOS (type, i) < *lowp)
504                 *lowp = TYPE_FIELD_BITPOS (type, i);
505               if (TYPE_FIELD_BITPOS (type, i) > *highp)
506                 *highp = TYPE_FIELD_BITPOS (type, i);
507             }
508
509           /* Set unsigned indicator if warranted. */
510           if (*lowp >= 0)
511             {
512               TYPE_FLAGS (type) |= TYPE_FLAG_UNSIGNED;
513             }
514         }
515       else
516         {
517           *lowp = 0;
518           *highp = -1;
519         }
520       return 0;
521     case TYPE_CODE_BOOL:
522       *lowp = 0;
523       *highp = 1;
524       return 0;
525     case TYPE_CODE_INT:
526       if (TYPE_LENGTH (type) > sizeof (LONGEST))        /* Too big */
527         return -1;
528       if (!TYPE_UNSIGNED (type))
529         {
530           *lowp = -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1));
531           *highp = -*lowp - 1;
532           return 0;
533         }
534       /* ... fall through for unsigned ints ... */
535     case TYPE_CODE_CHAR:
536       *lowp = 0;
537       /* This round-about calculation is to avoid shifting by
538          TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
539          if TYPE_LENGTH (type) == sizeof (LONGEST). */
540       *highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
541       *highp = (*highp - 1) | *highp;
542       return 0;
543     default:
544       return -1;
545     }
546 }
547
548 /* Create an array type using either a blank type supplied in RESULT_TYPE,
549    or creating a new type, inheriting the objfile from RANGE_TYPE.
550
551    Elements will be of type ELEMENT_TYPE, the indices will be of type
552    RANGE_TYPE.
553
554    FIXME:  Maybe we should check the TYPE_CODE of RESULT_TYPE to make
555    sure it is TYPE_CODE_UNDEF before we bash it into an array type? */
556
557 struct type *
558 create_array_type (result_type, element_type, range_type)
559      struct type *result_type;
560      struct type *element_type;
561      struct type *range_type;
562 {
563   LONGEST low_bound, high_bound;
564
565   if (result_type == NULL)
566     {
567       result_type = alloc_type (TYPE_OBJFILE (range_type));
568     }
569   TYPE_CODE (result_type) = TYPE_CODE_ARRAY;
570   TYPE_TARGET_TYPE (result_type) = element_type;
571   if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
572     low_bound = high_bound = 0;
573   CHECK_TYPEDEF (element_type);
574   TYPE_LENGTH (result_type) =
575     TYPE_LENGTH (element_type) * (high_bound - low_bound + 1);
576   TYPE_NFIELDS (result_type) = 1;
577   TYPE_FIELDS (result_type) =
578     (struct field *) TYPE_ALLOC (result_type, sizeof (struct field));
579   memset (TYPE_FIELDS (result_type), 0, sizeof (struct field));
580   TYPE_FIELD_TYPE (result_type, 0) = range_type;
581   TYPE_VPTR_FIELDNO (result_type) = -1;
582
583   /* TYPE_FLAG_TARGET_STUB will take care of zero length arrays */
584   if (TYPE_LENGTH (result_type) == 0)
585     TYPE_FLAGS (result_type) |= TYPE_FLAG_TARGET_STUB;
586
587   return (result_type);
588 }
589
590 /* Create a string type using either a blank type supplied in RESULT_TYPE,
591    or creating a new type.  String types are similar enough to array of
592    char types that we can use create_array_type to build the basic type
593    and then bash it into a string type.
594
595    For fixed length strings, the range type contains 0 as the lower
596    bound and the length of the string minus one as the upper bound.
597
598    FIXME:  Maybe we should check the TYPE_CODE of RESULT_TYPE to make
599    sure it is TYPE_CODE_UNDEF before we bash it into a string type? */
600
601 struct type *
602 create_string_type (result_type, range_type)
603      struct type *result_type;
604      struct type *range_type;
605 {
606   result_type = create_array_type (result_type,
607                                    *current_language->string_char_type,
608                                    range_type);
609   TYPE_CODE (result_type) = TYPE_CODE_STRING;
610   return (result_type);
611 }
612
613 struct type *
614 create_set_type (result_type, domain_type)
615      struct type *result_type;
616      struct type *domain_type;
617 {
618   LONGEST low_bound, high_bound, bit_length;
619   if (result_type == NULL)
620     {
621       result_type = alloc_type (TYPE_OBJFILE (domain_type));
622     }
623   TYPE_CODE (result_type) = TYPE_CODE_SET;
624   TYPE_NFIELDS (result_type) = 1;
625   TYPE_FIELDS (result_type) = (struct field *)
626     TYPE_ALLOC (result_type, 1 * sizeof (struct field));
627   memset (TYPE_FIELDS (result_type), 0, sizeof (struct field));
628
629   if (!(TYPE_FLAGS (domain_type) & TYPE_FLAG_STUB))
630     {
631       if (get_discrete_bounds (domain_type, &low_bound, &high_bound) < 0)
632         low_bound = high_bound = 0;
633       bit_length = high_bound - low_bound + 1;
634       TYPE_LENGTH (result_type)
635         = (bit_length + TARGET_CHAR_BIT - 1) / TARGET_CHAR_BIT;
636     }
637   TYPE_FIELD_TYPE (result_type, 0) = domain_type;
638
639   if (low_bound >= 0)
640     TYPE_FLAGS (result_type) |= TYPE_FLAG_UNSIGNED;
641
642   return (result_type);
643 }
644
645
646 /* Construct and return a type of the form:
647         struct NAME { ELT_TYPE ELT_NAME[N]; }
648    We use these types for SIMD registers.  For example, the type of
649    the SSE registers on the late x86-family processors is:
650         struct __builtin_v4sf { float f[4]; }
651    built by the function call:
652         init_simd_type ("__builtin_v4sf", builtin_type_float, "f", 4)
653    The type returned is a permanent type, allocated using malloc; it
654    doesn't live in any objfile's obstack.  */
655 static struct type *
656 init_simd_type (char *name,
657                 struct type *elt_type,
658                 char *elt_name,
659                 int n)
660 {
661   struct type *t;
662   struct field *f;
663
664   /* Build the field structure.  */
665   f = xmalloc (sizeof (*f));
666   memset (f, 0, sizeof (*f));
667   f->loc.bitpos = 0;
668   f->type = create_array_type (0, elt_type,
669                                create_range_type (0, builtin_type_int,
670                                                   0, n-1));
671   f->name = elt_name;
672
673   /* Build a struct type with that field.  */
674   t = init_type (TYPE_CODE_STRUCT, n * TYPE_LENGTH (elt_type), 0, 0, 0);
675   t->nfields = 1;
676   t->fields = f;
677   t->tag_name = name;
678
679   return t;
680 }
681
682
683 /* Smash TYPE to be a type of members of DOMAIN with type TO_TYPE. 
684    A MEMBER is a wierd thing -- it amounts to a typed offset into
685    a struct, e.g. "an int at offset 8".  A MEMBER TYPE doesn't
686    include the offset (that's the value of the MEMBER itself), but does
687    include the structure type into which it points (for some reason).
688
689    When "smashing" the type, we preserve the objfile that the
690    old type pointed to, since we aren't changing where the type is actually
691    allocated.  */
692
693 void
694 smash_to_member_type (type, domain, to_type)
695      struct type *type;
696      struct type *domain;
697      struct type *to_type;
698 {
699   struct objfile *objfile;
700
701   objfile = TYPE_OBJFILE (type);
702
703   memset ((char *) type, 0, sizeof (struct type));
704   TYPE_OBJFILE (type) = objfile;
705   TYPE_TARGET_TYPE (type) = to_type;
706   TYPE_DOMAIN_TYPE (type) = domain;
707   TYPE_LENGTH (type) = 1;       /* In practice, this is never needed.  */
708   TYPE_CODE (type) = TYPE_CODE_MEMBER;
709 }
710
711 /* Smash TYPE to be a type of method of DOMAIN with type TO_TYPE.
712    METHOD just means `function that gets an extra "this" argument'.
713
714    When "smashing" the type, we preserve the objfile that the
715    old type pointed to, since we aren't changing where the type is actually
716    allocated.  */
717
718 void
719 smash_to_method_type (type, domain, to_type, args)
720      struct type *type;
721      struct type *domain;
722      struct type *to_type;
723      struct type **args;
724 {
725   struct objfile *objfile;
726
727   objfile = TYPE_OBJFILE (type);
728
729   memset ((char *) type, 0, sizeof (struct type));
730   TYPE_OBJFILE (type) = objfile;
731   TYPE_TARGET_TYPE (type) = to_type;
732   TYPE_DOMAIN_TYPE (type) = domain;
733   TYPE_ARG_TYPES (type) = args;
734   TYPE_LENGTH (type) = 1;       /* In practice, this is never needed.  */
735   TYPE_CODE (type) = TYPE_CODE_METHOD;
736 }
737
738 /* Return a typename for a struct/union/enum type without "struct ",
739    "union ", or "enum ".  If the type has a NULL name, return NULL.  */
740
741 char *
742 type_name_no_tag (type)
743      register const struct type *type;
744 {
745   if (TYPE_TAG_NAME (type) != NULL)
746     return TYPE_TAG_NAME (type);
747
748   /* Is there code which expects this to return the name if there is no
749      tag name?  My guess is that this is mainly used for C++ in cases where
750      the two will always be the same.  */
751   return TYPE_NAME (type);
752 }
753
754 /* Lookup a primitive type named NAME. 
755    Return zero if NAME is not a primitive type. */
756
757 struct type *
758 lookup_primitive_typename (name)
759      char *name;
760 {
761   struct type **const *p;
762
763   for (p = current_language->la_builtin_type_vector; *p != NULL; p++)
764     {
765       if (STREQ ((**p)->name, name))
766         {
767           return (**p);
768         }
769     }
770   return (NULL);
771 }
772
773 /* Lookup a typedef or primitive type named NAME,
774    visible in lexical block BLOCK.
775    If NOERR is nonzero, return zero if NAME is not suitably defined.  */
776
777 struct type *
778 lookup_typename (name, block, noerr)
779      char *name;
780      struct block *block;
781      int noerr;
782 {
783   register struct symbol *sym;
784   register struct type *tmp;
785
786   sym = lookup_symbol (name, block, VAR_NAMESPACE, 0, (struct symtab **) NULL);
787   if (sym == NULL || SYMBOL_CLASS (sym) != LOC_TYPEDEF)
788     {
789       tmp = lookup_primitive_typename (name);
790       if (tmp)
791         {
792           return (tmp);
793         }
794       else if (!tmp && noerr)
795         {
796           return (NULL);
797         }
798       else
799         {
800           error ("No type named %s.", name);
801         }
802     }
803   return (SYMBOL_TYPE (sym));
804 }
805
806 struct type *
807 lookup_unsigned_typename (name)
808      char *name;
809 {
810   char *uns = alloca (strlen (name) + 10);
811
812   strcpy (uns, "unsigned ");
813   strcpy (uns + 9, name);
814   return (lookup_typename (uns, (struct block *) NULL, 0));
815 }
816
817 struct type *
818 lookup_signed_typename (name)
819      char *name;
820 {
821   struct type *t;
822   char *uns = alloca (strlen (name) + 8);
823
824   strcpy (uns, "signed ");
825   strcpy (uns + 7, name);
826   t = lookup_typename (uns, (struct block *) NULL, 1);
827   /* If we don't find "signed FOO" just try again with plain "FOO". */
828   if (t != NULL)
829     return t;
830   return lookup_typename (name, (struct block *) NULL, 0);
831 }
832
833 /* Lookup a structure type named "struct NAME",
834    visible in lexical block BLOCK.  */
835
836 struct type *
837 lookup_struct (name, block)
838      char *name;
839      struct block *block;
840 {
841   register struct symbol *sym;
842
843   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
844                        (struct symtab **) NULL);
845
846   if (sym == NULL)
847     {
848       error ("No struct type named %s.", name);
849     }
850   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
851     {
852       error ("This context has class, union or enum %s, not a struct.", name);
853     }
854   return (SYMBOL_TYPE (sym));
855 }
856
857 /* Lookup a union type named "union NAME",
858    visible in lexical block BLOCK.  */
859
860 struct type *
861 lookup_union (name, block)
862      char *name;
863      struct block *block;
864 {
865   register struct symbol *sym;
866   struct type *t;
867
868   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
869                        (struct symtab **) NULL);
870
871   if (sym == NULL)
872     error ("No union type named %s.", name);
873
874   t = SYMBOL_TYPE (sym);
875
876   if (TYPE_CODE (t) == TYPE_CODE_UNION)
877     return (t);
878
879   /* C++ unions may come out with TYPE_CODE_CLASS, but we look at
880    * a further "declared_type" field to discover it is really a union.
881    */
882   if (HAVE_CPLUS_STRUCT (t))
883     if (TYPE_DECLARED_TYPE (t) == DECLARED_TYPE_UNION)
884       return (t);
885
886   /* If we get here, it's not a union */
887   error ("This context has class, struct or enum %s, not a union.", name);
888 }
889
890
891 /* Lookup an enum type named "enum NAME",
892    visible in lexical block BLOCK.  */
893
894 struct type *
895 lookup_enum (name, block)
896      char *name;
897      struct block *block;
898 {
899   register struct symbol *sym;
900
901   sym = lookup_symbol (name, block, STRUCT_NAMESPACE, 0,
902                        (struct symtab **) NULL);
903   if (sym == NULL)
904     {
905       error ("No enum type named %s.", name);
906     }
907   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_ENUM)
908     {
909       error ("This context has class, struct or union %s, not an enum.", name);
910     }
911   return (SYMBOL_TYPE (sym));
912 }
913
914 /* Lookup a template type named "template NAME<TYPE>",
915    visible in lexical block BLOCK.  */
916
917 struct type *
918 lookup_template_type (name, type, block)
919      char *name;
920      struct type *type;
921      struct block *block;
922 {
923   struct symbol *sym;
924   char *nam = (char *) alloca (strlen (name) + strlen (type->name) + 4);
925   strcpy (nam, name);
926   strcat (nam, "<");
927   strcat (nam, type->name);
928   strcat (nam, " >");           /* FIXME, extra space still introduced in gcc? */
929
930   sym = lookup_symbol (nam, block, VAR_NAMESPACE, 0, (struct symtab **) NULL);
931
932   if (sym == NULL)
933     {
934       error ("No template type named %s.", name);
935     }
936   if (TYPE_CODE (SYMBOL_TYPE (sym)) != TYPE_CODE_STRUCT)
937     {
938       error ("This context has class, union or enum %s, not a struct.", name);
939     }
940   return (SYMBOL_TYPE (sym));
941 }
942
943 /* Given a type TYPE, lookup the type of the component of type named NAME.  
944
945    TYPE can be either a struct or union, or a pointer or reference to a struct or
946    union.  If it is a pointer or reference, its target type is automatically used.
947    Thus '.' and '->' are interchangable, as specified for the definitions of the
948    expression element types STRUCTOP_STRUCT and STRUCTOP_PTR.
949
950    If NOERR is nonzero, return zero if NAME is not suitably defined.
951    If NAME is the name of a baseclass type, return that type.  */
952
953 struct type *
954 lookup_struct_elt_type (type, name, noerr)
955      struct type *type;
956      char *name;
957      int noerr;
958 {
959   int i;
960
961   for (;;)
962     {
963       CHECK_TYPEDEF (type);
964       if (TYPE_CODE (type) != TYPE_CODE_PTR
965           && TYPE_CODE (type) != TYPE_CODE_REF)
966         break;
967       type = TYPE_TARGET_TYPE (type);
968     }
969
970   if (TYPE_CODE (type) != TYPE_CODE_STRUCT &&
971       TYPE_CODE (type) != TYPE_CODE_UNION)
972     {
973       target_terminal_ours ();
974       gdb_flush (gdb_stdout);
975       fprintf_unfiltered (gdb_stderr, "Type ");
976       type_print (type, "", gdb_stderr, -1);
977       error (" is not a structure or union type.");
978     }
979
980 #if 0
981   /* FIXME:  This change put in by Michael seems incorrect for the case where
982      the structure tag name is the same as the member name.  I.E. when doing
983      "ptype bell->bar" for "struct foo { int bar; int foo; } bell;"
984      Disabled by fnf. */
985   {
986     char *typename;
987
988     typename = type_name_no_tag (type);
989     if (typename != NULL && STREQ (typename, name))
990       return type;
991   }
992 #endif
993
994   for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
995     {
996       char *t_field_name = TYPE_FIELD_NAME (type, i);
997
998       if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
999         {
1000           return TYPE_FIELD_TYPE (type, i);
1001         }
1002     }
1003
1004   /* OK, it's not in this class.  Recursively check the baseclasses.  */
1005   for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
1006     {
1007       struct type *t;
1008
1009       t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, noerr);
1010       if (t != NULL)
1011         {
1012           return t;
1013         }
1014     }
1015
1016   if (noerr)
1017     {
1018       return NULL;
1019     }
1020
1021   target_terminal_ours ();
1022   gdb_flush (gdb_stdout);
1023   fprintf_unfiltered (gdb_stderr, "Type ");
1024   type_print (type, "", gdb_stderr, -1);
1025   fprintf_unfiltered (gdb_stderr, " has no component named ");
1026   fputs_filtered (name, gdb_stderr);
1027   error (".");
1028   return (struct type *) -1;    /* For lint */
1029 }
1030
1031 /* If possible, make the vptr_fieldno and vptr_basetype fields of TYPE
1032    valid.  Callers should be aware that in some cases (for example,
1033    the type or one of its baseclasses is a stub type and we are
1034    debugging a .o file), this function will not be able to find the virtual
1035    function table pointer, and vptr_fieldno will remain -1 and vptr_basetype
1036    will remain NULL.  */
1037
1038 void
1039 fill_in_vptr_fieldno (type)
1040      struct type *type;
1041 {
1042   CHECK_TYPEDEF (type);
1043
1044   if (TYPE_VPTR_FIELDNO (type) < 0)
1045     {
1046       int i;
1047
1048       /* We must start at zero in case the first (and only) baseclass is
1049          virtual (and hence we cannot share the table pointer).  */
1050       for (i = 0; i < TYPE_N_BASECLASSES (type); i++)
1051         {
1052           fill_in_vptr_fieldno (TYPE_BASECLASS (type, i));
1053           if (TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i)) >= 0)
1054             {
1055               TYPE_VPTR_FIELDNO (type)
1056                 = TYPE_VPTR_FIELDNO (TYPE_BASECLASS (type, i));
1057               TYPE_VPTR_BASETYPE (type)
1058                 = TYPE_VPTR_BASETYPE (TYPE_BASECLASS (type, i));
1059               break;
1060             }
1061         }
1062     }
1063 }
1064
1065 /* Find the method and field indices for the destructor in class type T.
1066    Return 1 if the destructor was found, otherwise, return 0.  */
1067
1068 int
1069 get_destructor_fn_field (t, method_indexp, field_indexp)
1070      struct type *t;
1071      int *method_indexp;
1072      int *field_indexp;
1073 {
1074   int i;
1075
1076   for (i = 0; i < TYPE_NFN_FIELDS (t); i++)
1077     {
1078       int j;
1079       struct fn_field *f = TYPE_FN_FIELDLIST1 (t, i);
1080
1081       for (j = 0; j < TYPE_FN_FIELDLIST_LENGTH (t, i); j++)
1082         {
1083           if (DESTRUCTOR_PREFIX_P (TYPE_FN_FIELD_PHYSNAME (f, j)))
1084             {
1085               *method_indexp = i;
1086               *field_indexp = j;
1087               return 1;
1088             }
1089         }
1090     }
1091   return 0;
1092 }
1093
1094 /* Added by Bryan Boreham, Kewill, Sun Sep 17 18:07:17 1989.
1095
1096    If this is a stubbed struct (i.e. declared as struct foo *), see if
1097    we can find a full definition in some other file. If so, copy this
1098    definition, so we can use it in future.  There used to be a comment (but
1099    not any code) that if we don't find a full definition, we'd set a flag
1100    so we don't spend time in the future checking the same type.  That would
1101    be a mistake, though--we might load in more symbols which contain a
1102    full definition for the type.
1103
1104    This used to be coded as a macro, but I don't think it is called 
1105    often enough to merit such treatment.  */
1106
1107 struct complaint stub_noname_complaint =
1108 {"stub type has NULL name", 0, 0};
1109
1110 struct type *
1111 check_typedef (type)
1112      register struct type *type;
1113 {
1114   struct type *orig_type = type;
1115   while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
1116     {
1117       if (!TYPE_TARGET_TYPE (type))
1118         {
1119           char *name;
1120           struct symbol *sym;
1121
1122           /* It is dangerous to call lookup_symbol if we are currently
1123              reading a symtab.  Infinite recursion is one danger. */
1124           if (currently_reading_symtab)
1125             return type;
1126
1127           name = type_name_no_tag (type);
1128           /* FIXME: shouldn't we separately check the TYPE_NAME and the
1129              TYPE_TAG_NAME, and look in STRUCT_NAMESPACE and/or VAR_NAMESPACE
1130              as appropriate?  (this code was written before TYPE_NAME and
1131              TYPE_TAG_NAME were separate).  */
1132           if (name == NULL)
1133             {
1134               complain (&stub_noname_complaint);
1135               return type;
1136             }
1137           sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0,
1138                                (struct symtab **) NULL);
1139           if (sym)
1140             TYPE_TARGET_TYPE (type) = SYMBOL_TYPE (sym);
1141           else
1142             TYPE_TARGET_TYPE (type) = alloc_type (NULL);        /* TYPE_CODE_UNDEF */
1143         }
1144       type = TYPE_TARGET_TYPE (type);
1145     }
1146
1147   /* If this is a struct/class/union with no fields, then check whether a
1148      full definition exists somewhere else.  This is for systems where a
1149      type definition with no fields is issued for such types, instead of
1150      identifying them as stub types in the first place */
1151
1152   if (TYPE_IS_OPAQUE (type) && opaque_type_resolution && !currently_reading_symtab)
1153     {
1154       char *name = type_name_no_tag (type);
1155       struct type *newtype;
1156       if (name == NULL)
1157         {
1158           complain (&stub_noname_complaint);
1159           return type;
1160         }
1161       newtype = lookup_transparent_type (name);
1162       if (newtype)
1163         {
1164           memcpy ((char *) type, (char *) newtype, sizeof (struct type));
1165         }
1166     }
1167   /* Otherwise, rely on the stub flag being set for opaque/stubbed types */
1168   else if ((TYPE_FLAGS (type) & TYPE_FLAG_STUB) && !currently_reading_symtab)
1169     {
1170       char *name = type_name_no_tag (type);
1171       /* FIXME: shouldn't we separately check the TYPE_NAME and the
1172          TYPE_TAG_NAME, and look in STRUCT_NAMESPACE and/or VAR_NAMESPACE
1173          as appropriate?  (this code was written before TYPE_NAME and
1174          TYPE_TAG_NAME were separate).  */
1175       struct symbol *sym;
1176       if (name == NULL)
1177         {
1178           complain (&stub_noname_complaint);
1179           return type;
1180         }
1181       sym = lookup_symbol (name, 0, STRUCT_NAMESPACE, 0, (struct symtab **) NULL);
1182       if (sym)
1183         {
1184           memcpy ((char *) type, (char *) SYMBOL_TYPE (sym), sizeof (struct type));
1185         }
1186     }
1187
1188   if (TYPE_FLAGS (type) & TYPE_FLAG_TARGET_STUB)
1189     {
1190       struct type *range_type;
1191       struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
1192
1193       if (TYPE_FLAGS (target_type) & (TYPE_FLAG_STUB | TYPE_FLAG_TARGET_STUB))
1194         {
1195         }
1196       else if (TYPE_CODE (type) == TYPE_CODE_ARRAY
1197                && TYPE_NFIELDS (type) == 1
1198                && (TYPE_CODE (range_type = TYPE_FIELD_TYPE (type, 0))
1199                    == TYPE_CODE_RANGE))
1200         {
1201           /* Now recompute the length of the array type, based on its
1202              number of elements and the target type's length.  */
1203           TYPE_LENGTH (type) =
1204             ((TYPE_FIELD_BITPOS (range_type, 1)
1205               - TYPE_FIELD_BITPOS (range_type, 0)
1206               + 1)
1207              * TYPE_LENGTH (target_type));
1208           TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
1209         }
1210       else if (TYPE_CODE (type) == TYPE_CODE_RANGE)
1211         {
1212           TYPE_LENGTH (type) = TYPE_LENGTH (target_type);
1213           TYPE_FLAGS (type) &= ~TYPE_FLAG_TARGET_STUB;
1214         }
1215     }
1216   /* Cache TYPE_LENGTH for future use. */
1217   TYPE_LENGTH (orig_type) = TYPE_LENGTH (type);
1218   return type;
1219 }
1220
1221 /* New code added to support parsing of Cfront stabs strings */
1222 #include <ctype.h>
1223 #define INIT_EXTRA { pextras->len=0; pextras->str[0]='\0'; }
1224 #define ADD_EXTRA(c) { pextras->str[pextras->len++]=c; }
1225
1226 static void
1227 add_name (pextras, n)
1228      struct extra *pextras;
1229      char *n;
1230 {
1231   int nlen;
1232
1233   if ((nlen = (n ? strlen (n) : 0)) == 0)
1234     return;
1235   sprintf (pextras->str + pextras->len, "%d%s", nlen, n);
1236   pextras->len = strlen (pextras->str);
1237 }
1238
1239 static void
1240 add_mangled_type (pextras, t)
1241      struct extra *pextras;
1242      struct type *t;
1243 {
1244   enum type_code tcode;
1245   int tlen, tflags;
1246   char *tname;
1247
1248   tcode = TYPE_CODE (t);
1249   tlen = TYPE_LENGTH (t);
1250   tflags = TYPE_FLAGS (t);
1251   tname = TYPE_NAME (t);
1252   /* args of "..." seem to get mangled as "e" */
1253
1254   switch (tcode)
1255     {
1256     case TYPE_CODE_INT:
1257       if (tflags == 1)
1258         ADD_EXTRA ('U');
1259       switch (tlen)
1260         {
1261         case 1:
1262           ADD_EXTRA ('c');
1263           break;
1264         case 2:
1265           ADD_EXTRA ('s');
1266           break;
1267         case 4:
1268           {
1269             char *pname;
1270             if ((pname = strrchr (tname, 'l'), pname) && !strcmp (pname, "long"))
1271               {
1272                 ADD_EXTRA ('l');
1273               }
1274             else
1275               {
1276                 ADD_EXTRA ('i');
1277               }
1278           }
1279           break;
1280         default:
1281           {
1282
1283             static struct complaint msg =
1284             {"Bad int type code length x%x\n", 0, 0};
1285
1286             complain (&msg, tlen);
1287
1288           }
1289         }
1290       break;
1291     case TYPE_CODE_FLT:
1292       switch (tlen)
1293         {
1294         case 4:
1295           ADD_EXTRA ('f');
1296           break;
1297         case 8:
1298           ADD_EXTRA ('d');
1299           break;
1300         case 16:
1301           ADD_EXTRA ('r');
1302           break;
1303         default:
1304           {
1305             static struct complaint msg =
1306             {"Bad float type code length x%x\n", 0, 0};
1307             complain (&msg, tlen);
1308           }
1309         }
1310       break;
1311     case TYPE_CODE_REF:
1312       ADD_EXTRA ('R');
1313       /* followed by what it's a ref to */
1314       break;
1315     case TYPE_CODE_PTR:
1316       ADD_EXTRA ('P');
1317       /* followed by what it's a ptr to */
1318       break;
1319     case TYPE_CODE_TYPEDEF:
1320       {
1321         static struct complaint msg =
1322         {"Typedefs in overloaded functions not yet supported\n", 0, 0};
1323         complain (&msg);
1324       }
1325       /* followed by type bytes & name */
1326       break;
1327     case TYPE_CODE_FUNC:
1328       ADD_EXTRA ('F');
1329       /* followed by func's arg '_' & ret types */
1330       break;
1331     case TYPE_CODE_VOID:
1332       ADD_EXTRA ('v');
1333       break;
1334     case TYPE_CODE_METHOD:
1335       ADD_EXTRA ('M');
1336       /* followed by name of class and func's arg '_' & ret types */
1337       add_name (pextras, tname);
1338       ADD_EXTRA ('F');          /* then mangle function */
1339       break;
1340     case TYPE_CODE_STRUCT:      /* C struct */
1341     case TYPE_CODE_UNION:       /* C union */
1342     case TYPE_CODE_ENUM:        /* Enumeration type */
1343       /* followed by name of type */
1344       add_name (pextras, tname);
1345       break;
1346
1347       /* errors possible types/not supported */
1348     case TYPE_CODE_CHAR:
1349     case TYPE_CODE_ARRAY:       /* Array type */
1350     case TYPE_CODE_MEMBER:      /* Member type */
1351     case TYPE_CODE_BOOL:
1352     case TYPE_CODE_COMPLEX:     /* Complex float */
1353     case TYPE_CODE_UNDEF:
1354     case TYPE_CODE_SET: /* Pascal sets */
1355     case TYPE_CODE_RANGE:
1356     case TYPE_CODE_STRING:
1357     case TYPE_CODE_BITSTRING:
1358     case TYPE_CODE_ERROR:
1359     default:
1360       {
1361         static struct complaint msg =
1362         {"Unknown type code x%x\n", 0, 0};
1363         complain (&msg, tcode);
1364       }
1365     }
1366   if (t->target_type)
1367     add_mangled_type (pextras, t->target_type);
1368 }
1369
1370 #if 0
1371 void
1372 cfront_mangle_name (type, i, j)
1373      struct type *type;
1374      int i;
1375      int j;
1376 {
1377   struct fn_field *f;
1378   char *mangled_name = gdb_mangle_name (type, i, j);
1379
1380   f = TYPE_FN_FIELDLIST1 (type, i);     /* moved from below */
1381
1382   /* kludge to support cfront methods - gdb expects to find "F" for 
1383      ARM_mangled names, so when we mangle, we have to add it here */
1384   if (ARM_DEMANGLING)
1385     {
1386       int k;
1387       char *arm_mangled_name;
1388       struct fn_field *method = &f[j];
1389       char *field_name = TYPE_FN_FIELDLIST_NAME (type, i);
1390       char *physname = TYPE_FN_FIELD_PHYSNAME (f, j);
1391       char *newname = type_name_no_tag (type);
1392
1393       struct type *ftype = TYPE_FN_FIELD_TYPE (f, j);
1394       int nargs = TYPE_NFIELDS (ftype);         /* number of args */
1395       struct extra extras, *pextras = &extras;
1396       INIT_EXTRA
1397
1398         if (TYPE_FN_FIELD_STATIC_P (f, j))      /* j for sublist within this list */
1399         ADD_EXTRA ('S')
1400           ADD_EXTRA ('F')
1401         /* add args here! */
1402           if (nargs <= 1)       /* no args besides this */
1403           ADD_EXTRA ('v')
1404             else
1405           {
1406             for (k = 1; k < nargs; k++)
1407               {
1408                 struct type *t;
1409                 t = TYPE_FIELD_TYPE (ftype, k);
1410                 add_mangled_type (pextras, t);
1411               }
1412           }
1413       ADD_EXTRA ('\0')
1414         printf ("add_mangled_type: %s\n", extras.str);  /* FIXME */
1415       arm_mangled_name = malloc (strlen (mangled_name) + extras.len);
1416       sprintf (arm_mangled_name, "%s%s", mangled_name, extras.str);
1417       free (mangled_name);
1418       mangled_name = arm_mangled_name;
1419     }
1420 }
1421 #endif /* 0 */
1422
1423 #undef ADD_EXTRA
1424 /* End of new code added to support parsing of Cfront stabs strings */
1425
1426 /* Parse a type expression in the string [P..P+LENGTH).  If an error occurs,
1427    silently return builtin_type_void. */
1428
1429 struct type *
1430 safe_parse_type (char *p, int length)
1431 {
1432   struct ui_file *saved_gdb_stderr;
1433   struct type *type;
1434
1435   /* Suppress error messages. */
1436   saved_gdb_stderr = gdb_stderr;
1437   gdb_stderr = ui_file_new ();
1438
1439   /* Call parse_and_eval_type() without fear of longjmp()s. */
1440   if (!gdb_parse_and_eval_type (p, length, &type))
1441     type = builtin_type_void;
1442
1443   /* Stop suppressing error messages. */
1444   ui_file_delete (gdb_stderr);
1445   gdb_stderr = saved_gdb_stderr;
1446
1447   return type;
1448 }
1449
1450 /* Ugly hack to convert method stubs into method types.
1451
1452    He ain't kiddin'.  This demangles the name of the method into a string
1453    including argument types, parses out each argument type, generates
1454    a string casting a zero to that type, evaluates the string, and stuffs
1455    the resulting type into an argtype vector!!!  Then it knows the type
1456    of the whole function (including argument types for overloading),
1457    which info used to be in the stab's but was removed to hack back
1458    the space required for them.  */
1459
1460 void
1461 check_stub_method (type, method_id, signature_id)
1462      struct type *type;
1463      int method_id;
1464      int signature_id;
1465 {
1466   struct fn_field *f;
1467   char *mangled_name = gdb_mangle_name (type, method_id, signature_id);
1468   char *demangled_name = cplus_demangle (mangled_name,
1469                                          DMGL_PARAMS | DMGL_ANSI);
1470   char *argtypetext, *p;
1471   int depth = 0, argcount = 1;
1472   struct type **argtypes;
1473   struct type *mtype;
1474
1475   /* Make sure we got back a function string that we can use.  */
1476   if (demangled_name)
1477     p = strchr (demangled_name, '(');
1478
1479   if (demangled_name == NULL || p == NULL)
1480     error ("Internal: Cannot demangle mangled name `%s'.", mangled_name);
1481
1482   /* Now, read in the parameters that define this type.  */
1483   p += 1;
1484   argtypetext = p;
1485   while (*p)
1486     {
1487       if (*p == '(')
1488         {
1489           depth += 1;
1490         }
1491       else if (*p == ')')
1492         {
1493           depth -= 1;
1494         }
1495       else if (*p == ',' && depth == 0)
1496         {
1497           argcount += 1;
1498         }
1499
1500       p += 1;
1501     }
1502
1503   /* We need two more slots: one for the THIS pointer, and one for the
1504      NULL [...] or void [end of arglist].  */
1505
1506   argtypes = (struct type **)
1507     TYPE_ALLOC (type, (argcount + 2) * sizeof (struct type *));
1508   p = argtypetext;
1509   /* FIXME: This is wrong for static member functions.  */
1510   argtypes[0] = lookup_pointer_type (type);
1511   argcount = 1;
1512
1513   if (*p != ')')                /* () means no args, skip while */
1514     {
1515       depth = 0;
1516       while (*p)
1517         {
1518           if (depth <= 0 && (*p == ',' || *p == ')'))
1519             {
1520               /* Avoid parsing of ellipsis, they will be handled below.  */
1521               if (strncmp (argtypetext, "...", p - argtypetext) != 0)
1522                 {
1523                   argtypes[argcount] =
1524                     safe_parse_type (argtypetext, p - argtypetext);
1525                   argcount += 1;
1526                 }
1527               argtypetext = p + 1;
1528             }
1529
1530           if (*p == '(')
1531             {
1532               depth += 1;
1533             }
1534           else if (*p == ')')
1535             {
1536               depth -= 1;
1537             }
1538
1539           p += 1;
1540         }
1541     }
1542
1543   if (p[-2] != '.')             /* Not '...' */
1544     {
1545       argtypes[argcount] = builtin_type_void;   /* List terminator */
1546     }
1547   else
1548     {
1549       argtypes[argcount] = NULL;        /* Ellist terminator */
1550     }
1551
1552   free (demangled_name);
1553
1554   f = TYPE_FN_FIELDLIST1 (type, method_id);
1555
1556   TYPE_FN_FIELD_PHYSNAME (f, signature_id) = mangled_name;
1557
1558   /* Now update the old "stub" type into a real type.  */
1559   mtype = TYPE_FN_FIELD_TYPE (f, signature_id);
1560   TYPE_DOMAIN_TYPE (mtype) = type;
1561   TYPE_ARG_TYPES (mtype) = argtypes;
1562   TYPE_FLAGS (mtype) &= ~TYPE_FLAG_STUB;
1563   TYPE_FN_FIELD_STUB (f, signature_id) = 0;
1564 }
1565
1566 const struct cplus_struct_type cplus_struct_default;
1567
1568 void
1569 allocate_cplus_struct_type (type)
1570      struct type *type;
1571 {
1572   if (!HAVE_CPLUS_STRUCT (type))
1573     {
1574       TYPE_CPLUS_SPECIFIC (type) = (struct cplus_struct_type *)
1575         TYPE_ALLOC (type, sizeof (struct cplus_struct_type));
1576       *(TYPE_CPLUS_SPECIFIC (type)) = cplus_struct_default;
1577     }
1578 }
1579
1580 /* Helper function to initialize the standard scalar types.
1581
1582    If NAME is non-NULL and OBJFILE is non-NULL, then we make a copy
1583    of the string pointed to by name in the type_obstack for that objfile,
1584    and initialize the type name to that copy.  There are places (mipsread.c
1585    in particular, where init_type is called with a NULL value for NAME). */
1586
1587 struct type *
1588 init_type (code, length, flags, name, objfile)
1589      enum type_code code;
1590      int length;
1591      int flags;
1592      char *name;
1593      struct objfile *objfile;
1594 {
1595   register struct type *type;
1596
1597   type = alloc_type (objfile);
1598   TYPE_CODE (type) = code;
1599   TYPE_LENGTH (type) = length;
1600   TYPE_FLAGS (type) |= flags;
1601   if ((name != NULL) && (objfile != NULL))
1602     {
1603       TYPE_NAME (type) =
1604         obsavestring (name, strlen (name), &objfile->type_obstack);
1605     }
1606   else
1607     {
1608       TYPE_NAME (type) = name;
1609     }
1610
1611   /* C++ fancies.  */
1612
1613   if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION)
1614     {
1615       INIT_CPLUS_SPECIFIC (type);
1616     }
1617   return (type);
1618 }
1619
1620 /* Look up a fundamental type for the specified objfile.
1621    May need to construct such a type if this is the first use.
1622
1623    Some object file formats (ELF, COFF, etc) do not define fundamental
1624    types such as "int" or "double".  Others (stabs for example), do
1625    define fundamental types.
1626
1627    For the formats which don't provide fundamental types, gdb can create
1628    such types, using defaults reasonable for the current language and
1629    the current target machine.
1630
1631    NOTE:  This routine is obsolescent.  Each debugging format reader
1632    should manage it's own fundamental types, either creating them from
1633    suitable defaults or reading them from the debugging information,
1634    whichever is appropriate.  The DWARF reader has already been
1635    fixed to do this.  Once the other readers are fixed, this routine
1636    will go away.  Also note that fundamental types should be managed
1637    on a compilation unit basis in a multi-language environment, not
1638    on a linkage unit basis as is done here. */
1639
1640
1641 struct type *
1642 lookup_fundamental_type (objfile, typeid)
1643      struct objfile *objfile;
1644      int typeid;
1645 {
1646   register struct type **typep;
1647   register int nbytes;
1648
1649   if (typeid < 0 || typeid >= FT_NUM_MEMBERS)
1650     {
1651       error ("internal error - invalid fundamental type id %d", typeid);
1652     }
1653
1654   /* If this is the first time we need a fundamental type for this objfile
1655      then we need to initialize the vector of type pointers. */
1656
1657   if (objfile->fundamental_types == NULL)
1658     {
1659       nbytes = FT_NUM_MEMBERS * sizeof (struct type *);
1660       objfile->fundamental_types = (struct type **)
1661         obstack_alloc (&objfile->type_obstack, nbytes);
1662       memset ((char *) objfile->fundamental_types, 0, nbytes);
1663       OBJSTAT (objfile, n_types += FT_NUM_MEMBERS);
1664     }
1665
1666   /* Look for this particular type in the fundamental type vector.  If one is
1667      not found, create and install one appropriate for the current language. */
1668
1669   typep = objfile->fundamental_types + typeid;
1670   if (*typep == NULL)
1671     {
1672       *typep = create_fundamental_type (objfile, typeid);
1673     }
1674
1675   return (*typep);
1676 }
1677
1678 int
1679 can_dereference (t)
1680      struct type *t;
1681 {
1682   /* FIXME: Should we return true for references as well as pointers?  */
1683   CHECK_TYPEDEF (t);
1684   return
1685     (t != NULL
1686      && TYPE_CODE (t) == TYPE_CODE_PTR
1687      && TYPE_CODE (TYPE_TARGET_TYPE (t)) != TYPE_CODE_VOID);
1688 }
1689
1690 int
1691 is_integral_type (t)
1692      struct type *t;
1693 {
1694   CHECK_TYPEDEF (t);
1695   return
1696     ((t != NULL)
1697      && ((TYPE_CODE (t) == TYPE_CODE_INT)
1698          || (TYPE_CODE (t) == TYPE_CODE_ENUM)
1699          || (TYPE_CODE (t) == TYPE_CODE_CHAR)
1700          || (TYPE_CODE (t) == TYPE_CODE_RANGE)
1701          || (TYPE_CODE (t) == TYPE_CODE_BOOL)));
1702 }
1703
1704 /* Chill varying string and arrays are represented as follows:
1705
1706    struct { int __var_length; ELEMENT_TYPE[MAX_SIZE] __var_data};
1707
1708    Return true if TYPE is such a Chill varying type. */
1709
1710 int
1711 chill_varying_type (type)
1712      struct type *type;
1713 {
1714   if (TYPE_CODE (type) != TYPE_CODE_STRUCT
1715       || TYPE_NFIELDS (type) != 2
1716       || strcmp (TYPE_FIELD_NAME (type, 0), "__var_length") != 0)
1717     return 0;
1718   return 1;
1719 }
1720
1721 /* Check whether BASE is an ancestor or base class or DCLASS 
1722    Return 1 if so, and 0 if not.
1723    Note: callers may want to check for identity of the types before
1724    calling this function -- identical types are considered to satisfy
1725    the ancestor relationship even if they're identical */
1726
1727 int
1728 is_ancestor (base, dclass)
1729      struct type *base;
1730      struct type *dclass;
1731 {
1732   int i;
1733
1734   CHECK_TYPEDEF (base);
1735   CHECK_TYPEDEF (dclass);
1736
1737   if (base == dclass)
1738     return 1;
1739
1740   for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
1741     if (is_ancestor (base, TYPE_BASECLASS (dclass, i)))
1742       return 1;
1743
1744   return 0;
1745 }
1746
1747
1748
1749 /* See whether DCLASS has a virtual table.  This routine is aimed at
1750    the HP/Taligent ANSI C++ runtime model, and may not work with other
1751    runtime models.  Return 1 => Yes, 0 => No.  */
1752
1753 int
1754 has_vtable (dclass)
1755      struct type *dclass;
1756 {
1757   /* In the HP ANSI C++ runtime model, a class has a vtable only if it
1758      has virtual functions or virtual bases.  */
1759
1760   register int i;
1761
1762   if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
1763     return 0;
1764
1765   /* First check for the presence of virtual bases */
1766   if (TYPE_FIELD_VIRTUAL_BITS (dclass))
1767     for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
1768       if (B_TST (TYPE_FIELD_VIRTUAL_BITS (dclass), i))
1769         return 1;
1770
1771   /* Next check for virtual functions */
1772   if (TYPE_FN_FIELDLISTS (dclass))
1773     for (i = 0; i < TYPE_NFN_FIELDS (dclass); i++)
1774       if (TYPE_FN_FIELD_VIRTUAL_P (TYPE_FN_FIELDLIST1 (dclass, i), 0))
1775         return 1;
1776
1777   /* Recurse on non-virtual bases to see if any of them needs a vtable */
1778   if (TYPE_FIELD_VIRTUAL_BITS (dclass))
1779     for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
1780       if ((!B_TST (TYPE_FIELD_VIRTUAL_BITS (dclass), i)) &&
1781           (has_vtable (TYPE_FIELD_TYPE (dclass, i))))
1782         return 1;
1783
1784   /* Well, maybe we don't need a virtual table */
1785   return 0;
1786 }
1787
1788 /* Return a pointer to the "primary base class" of DCLASS.
1789
1790    A NULL return indicates that DCLASS has no primary base, or that it
1791    couldn't be found (insufficient information).
1792
1793    This routine is aimed at the HP/Taligent ANSI C++ runtime model,
1794    and may not work with other runtime models.  */
1795
1796 struct type *
1797 primary_base_class (dclass)
1798      struct type *dclass;
1799 {
1800   /* In HP ANSI C++'s runtime model, a "primary base class" of a class
1801      is the first directly inherited, non-virtual base class that
1802      requires a virtual table */
1803
1804   register int i;
1805
1806   if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
1807     return NULL;
1808
1809   for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
1810     if (!TYPE_FIELD_VIRTUAL (dclass, i) &&
1811         has_vtable (TYPE_FIELD_TYPE (dclass, i)))
1812       return TYPE_FIELD_TYPE (dclass, i);
1813
1814   return NULL;
1815 }
1816
1817 /* Global manipulated by virtual_base_list[_aux]() */
1818
1819 static struct vbase *current_vbase_list = NULL;
1820
1821 /* Return a pointer to a null-terminated list of struct vbase
1822    items. The vbasetype pointer of each item in the list points to the
1823    type information for a virtual base of the argument DCLASS.
1824
1825    Helper function for virtual_base_list(). 
1826    Note: the list goes backward, right-to-left. virtual_base_list()
1827    copies the items out in reverse order.  */
1828
1829 static void
1830 virtual_base_list_aux (dclass)
1831      struct type *dclass;
1832 {
1833   struct vbase *tmp_vbase;
1834   register int i;
1835
1836   if (TYPE_CODE (dclass) != TYPE_CODE_CLASS)
1837     return;
1838
1839   for (i = 0; i < TYPE_N_BASECLASSES (dclass); i++)
1840     {
1841       /* Recurse on this ancestor, first */
1842       virtual_base_list_aux (TYPE_FIELD_TYPE (dclass, i));
1843
1844       /* If this current base is itself virtual, add it to the list */
1845       if (BASETYPE_VIA_VIRTUAL (dclass, i))
1846         {
1847           struct type *basetype = TYPE_FIELD_TYPE (dclass, i);
1848
1849           /* Check if base already recorded */
1850           tmp_vbase = current_vbase_list;
1851           while (tmp_vbase)
1852             {
1853               if (tmp_vbase->vbasetype == basetype)
1854                 break;          /* found it */
1855               tmp_vbase = tmp_vbase->next;
1856             }
1857
1858           if (!tmp_vbase)       /* normal exit from loop */
1859             {
1860               /* Allocate new item for this virtual base */
1861               tmp_vbase = (struct vbase *) xmalloc (sizeof (struct vbase));
1862
1863               /* Stick it on at the end of the list */
1864               tmp_vbase->vbasetype = basetype;
1865               tmp_vbase->next = current_vbase_list;
1866               current_vbase_list = tmp_vbase;
1867             }
1868         }                       /* if virtual */
1869     }                           /* for loop over bases */
1870 }
1871
1872
1873 /* Compute the list of virtual bases in the right order.  Virtual
1874    bases are laid out in the object's memory area in order of their
1875    occurrence in a depth-first, left-to-right search through the
1876    ancestors.
1877
1878    Argument DCLASS is the type whose virtual bases are required.
1879    Return value is the address of a null-terminated array of pointers
1880    to struct type items.
1881
1882    This routine is aimed at the HP/Taligent ANSI C++ runtime model,
1883    and may not work with other runtime models.
1884
1885    This routine merely hands off the argument to virtual_base_list_aux()
1886    and then copies the result into an array to save space.  */
1887
1888 struct type **
1889 virtual_base_list (dclass)
1890      struct type *dclass;
1891 {
1892   register struct vbase *tmp_vbase;
1893   register struct vbase *tmp_vbase_2;
1894   register int i;
1895   int count;
1896   struct type **vbase_array;
1897
1898   current_vbase_list = NULL;
1899   virtual_base_list_aux (dclass);
1900
1901   for (i = 0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; i++, tmp_vbase = tmp_vbase->next)
1902     /* no body */ ;
1903
1904   count = i;
1905
1906   vbase_array = (struct type **) xmalloc ((count + 1) * sizeof (struct type *));
1907
1908   for (i = count - 1, tmp_vbase = current_vbase_list; i >= 0; i--, tmp_vbase = tmp_vbase->next)
1909     vbase_array[i] = tmp_vbase->vbasetype;
1910
1911   /* Get rid of constructed chain */
1912   tmp_vbase_2 = tmp_vbase = current_vbase_list;
1913   while (tmp_vbase)
1914     {
1915       tmp_vbase = tmp_vbase->next;
1916       free (tmp_vbase_2);
1917       tmp_vbase_2 = tmp_vbase;
1918     }
1919
1920   vbase_array[count] = NULL;
1921   return vbase_array;
1922 }
1923
1924 /* Return the length of the virtual base list of the type DCLASS.  */
1925
1926 int
1927 virtual_base_list_length (dclass)
1928      struct type *dclass;
1929 {
1930   register int i;
1931   register struct vbase *tmp_vbase;
1932
1933   current_vbase_list = NULL;
1934   virtual_base_list_aux (dclass);
1935
1936   for (i = 0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; i++, tmp_vbase = tmp_vbase->next)
1937     /* no body */ ;
1938   return i;
1939 }
1940
1941 /* Return the number of elements of the virtual base list of the type
1942    DCLASS, ignoring those appearing in the primary base (and its
1943    primary base, recursively).  */
1944
1945 int
1946 virtual_base_list_length_skip_primaries (dclass)
1947      struct type *dclass;
1948 {
1949   register int i;
1950   register struct vbase *tmp_vbase;
1951   struct type *primary;
1952
1953   primary = TYPE_RUNTIME_PTR (dclass) ? TYPE_PRIMARY_BASE (dclass) : NULL;
1954
1955   if (!primary)
1956     return virtual_base_list_length (dclass);
1957
1958   current_vbase_list = NULL;
1959   virtual_base_list_aux (dclass);
1960
1961   for (i = 0, tmp_vbase = current_vbase_list; tmp_vbase != NULL; tmp_vbase = tmp_vbase->next)
1962     {
1963       if (virtual_base_index (tmp_vbase->vbasetype, primary) >= 0)
1964         continue;
1965       i++;
1966     }
1967   return i;
1968 }
1969
1970
1971 /* Return the index (position) of type BASE, which is a virtual base
1972    class of DCLASS, in the latter's virtual base list.  A return of -1
1973    indicates "not found" or a problem.  */
1974
1975 int
1976 virtual_base_index (base, dclass)
1977      struct type *base;
1978      struct type *dclass;
1979 {
1980   register struct type *vbase;
1981   register int i;
1982
1983   if ((TYPE_CODE (dclass) != TYPE_CODE_CLASS) ||
1984       (TYPE_CODE (base) != TYPE_CODE_CLASS))
1985     return -1;
1986
1987   i = 0;
1988   vbase = TYPE_VIRTUAL_BASE_LIST (dclass)[0];
1989   while (vbase)
1990     {
1991       if (vbase == base)
1992         break;
1993       vbase = TYPE_VIRTUAL_BASE_LIST (dclass)[++i];
1994     }
1995
1996   return vbase ? i : -1;
1997 }
1998
1999
2000
2001 /* Return the index (position) of type BASE, which is a virtual base
2002    class of DCLASS, in the latter's virtual base list. Skip over all
2003    bases that may appear in the virtual base list of the primary base
2004    class of DCLASS (recursively).  A return of -1 indicates "not
2005    found" or a problem.  */
2006
2007 int
2008 virtual_base_index_skip_primaries (base, dclass)
2009      struct type *base;
2010      struct type *dclass;
2011 {
2012   register struct type *vbase;
2013   register int i, j;
2014   struct type *primary;
2015
2016   if ((TYPE_CODE (dclass) != TYPE_CODE_CLASS) ||
2017       (TYPE_CODE (base) != TYPE_CODE_CLASS))
2018     return -1;
2019
2020   primary = TYPE_RUNTIME_PTR (dclass) ? TYPE_PRIMARY_BASE (dclass) : NULL;
2021
2022   j = -1;
2023   i = 0;
2024   vbase = TYPE_VIRTUAL_BASE_LIST (dclass)[0];
2025   while (vbase)
2026     {
2027       if (!primary || (virtual_base_index_skip_primaries (vbase, primary) < 0))
2028         j++;
2029       if (vbase == base)
2030         break;
2031       vbase = TYPE_VIRTUAL_BASE_LIST (dclass)[++i];
2032     }
2033
2034   return vbase ? j : -1;
2035 }
2036
2037 /* Return position of a derived class DCLASS in the list of
2038  * primary bases starting with the remotest ancestor.
2039  * Position returned is 0-based. */
2040
2041 int
2042 class_index_in_primary_list (dclass)
2043      struct type *dclass;
2044 {
2045   struct type *pbc;             /* primary base class */
2046
2047   /* Simply recurse on primary base */
2048   pbc = TYPE_PRIMARY_BASE (dclass);
2049   if (pbc)
2050     return 1 + class_index_in_primary_list (pbc);
2051   else
2052     return 0;
2053 }
2054
2055 /* Return a count of the number of virtual functions a type has.
2056  * This includes all the virtual functions it inherits from its
2057  * base classes too.
2058  */
2059
2060 /* pai: FIXME This doesn't do the right thing: count redefined virtual
2061  * functions only once (latest redefinition)
2062  */
2063
2064 int
2065 count_virtual_fns (dclass)
2066      struct type *dclass;
2067 {
2068   int fn, oi;                   /* function and overloaded instance indices */
2069   int vfuncs;                   /* count to return */
2070
2071   /* recurse on bases that can share virtual table */
2072   struct type *pbc = primary_base_class (dclass);
2073   if (pbc)
2074     vfuncs = count_virtual_fns (pbc);
2075
2076   for (fn = 0; fn < TYPE_NFN_FIELDS (dclass); fn++)
2077     for (oi = 0; oi < TYPE_FN_FIELDLIST_LENGTH (dclass, fn); oi++)
2078       if (TYPE_FN_FIELD_VIRTUAL_P (TYPE_FN_FIELDLIST1 (dclass, fn), oi))
2079         vfuncs++;
2080
2081   return vfuncs;
2082 }
2083 \f
2084
2085
2086 /* Functions for overload resolution begin here */
2087
2088 /* Compare two badness vectors A and B and return the result.
2089  * 0 => A and B are identical
2090  * 1 => A and B are incomparable
2091  * 2 => A is better than B
2092  * 3 => A is worse than B */
2093
2094 int
2095 compare_badness (a, b)
2096      struct badness_vector *a;
2097      struct badness_vector *b;
2098 {
2099   int i;
2100   int tmp;
2101   short found_pos = 0;          /* any positives in c? */
2102   short found_neg = 0;          /* any negatives in c? */
2103
2104   /* differing lengths => incomparable */
2105   if (a->length != b->length)
2106     return 1;
2107
2108   /* Subtract b from a */
2109   for (i = 0; i < a->length; i++)
2110     {
2111       tmp = a->rank[i] - b->rank[i];
2112       if (tmp > 0)
2113         found_pos = 1;
2114       else if (tmp < 0)
2115         found_neg = 1;
2116     }
2117
2118   if (found_pos)
2119     {
2120       if (found_neg)
2121         return 1;               /* incomparable */
2122       else
2123         return 3;               /* A > B */
2124     }
2125   else
2126     /* no positives */
2127     {
2128       if (found_neg)
2129         return 2;               /* A < B */
2130       else
2131         return 0;               /* A == B */
2132     }
2133 }
2134
2135 /* Rank a function by comparing its parameter types (PARMS, length NPARMS),
2136  * to the types of an argument list (ARGS, length NARGS).
2137  * Return a pointer to a badness vector. This has NARGS + 1 entries. */
2138
2139 struct badness_vector *
2140 rank_function (parms, nparms, args, nargs)
2141      struct type **parms;
2142      int nparms;
2143      struct type **args;
2144      int nargs;
2145 {
2146   int i;
2147   struct badness_vector *bv;
2148   int min_len = nparms < nargs ? nparms : nargs;
2149
2150   bv = xmalloc (sizeof (struct badness_vector));
2151   bv->length = nargs + 1;       /* add 1 for the length-match rank */
2152   bv->rank = xmalloc ((nargs + 1) * sizeof (int));
2153
2154   /* First compare the lengths of the supplied lists.
2155    * If there is a mismatch, set it to a high value. */
2156
2157   /* pai/1997-06-03 FIXME: when we have debug info about default
2158    * arguments and ellipsis parameter lists, we should consider those
2159    * and rank the length-match more finely. */
2160
2161   LENGTH_MATCH (bv) = (nargs != nparms) ? LENGTH_MISMATCH_BADNESS : 0;
2162
2163   /* Now rank all the parameters of the candidate function */
2164   for (i = 1; i <= min_len; i++)
2165     bv->rank[i] = rank_one_type (parms[i-1], args[i-1]);
2166
2167   /* If more arguments than parameters, add dummy entries */
2168   for (i = min_len + 1; i <= nargs; i++)
2169     bv->rank[i] = TOO_FEW_PARAMS_BADNESS;
2170
2171   return bv;
2172 }
2173
2174 /* Compare one type (PARM) for compatibility with another (ARG).
2175  * PARM is intended to be the parameter type of a function; and
2176  * ARG is the supplied argument's type.  This function tests if
2177  * the latter can be converted to the former.
2178  *
2179  * Return 0 if they are identical types;
2180  * Otherwise, return an integer which corresponds to how compatible
2181  * PARM is to ARG. The higher the return value, the worse the match.
2182  * Generally the "bad" conversions are all uniformly assigned a 100 */
2183
2184 int
2185 rank_one_type (parm, arg)
2186      struct type *parm;
2187      struct type *arg;
2188 {
2189   /* Identical type pointers */
2190   /* However, this still doesn't catch all cases of same type for arg
2191    * and param. The reason is that builtin types are different from
2192    * the same ones constructed from the object. */
2193   if (parm == arg)
2194     return 0;
2195
2196   /* Resolve typedefs */
2197   if (TYPE_CODE (parm) == TYPE_CODE_TYPEDEF)
2198     parm = check_typedef (parm);
2199   if (TYPE_CODE (arg) == TYPE_CODE_TYPEDEF)
2200     arg = check_typedef (arg);
2201
2202   /* Check if identical after resolving typedefs */
2203   if (parm == arg)
2204     return 0;
2205
2206   /* See through references, since we can almost make non-references
2207      references. */
2208   if (TYPE_CODE (arg) == TYPE_CODE_REF)
2209     return (rank_one_type (TYPE_TARGET_TYPE (arg), parm)
2210             + REFERENCE_CONVERSION_BADNESS);
2211   if (TYPE_CODE (parm) == TYPE_CODE_REF)
2212     return (rank_one_type (arg, TYPE_TARGET_TYPE (parm))
2213             + REFERENCE_CONVERSION_BADNESS);
2214   if (overload_debug)
2215   /* Debugging only. */
2216     fprintf_filtered (gdb_stderr,"------ Arg is %s [%d], parm is %s [%d]\n",
2217         TYPE_NAME (arg), TYPE_CODE (arg), TYPE_NAME (parm), TYPE_CODE (parm));
2218
2219   /* x -> y means arg of type x being supplied for parameter of type y */
2220
2221   switch (TYPE_CODE (parm))
2222     {
2223     case TYPE_CODE_PTR:
2224       switch (TYPE_CODE (arg))
2225         {
2226         case TYPE_CODE_PTR:
2227           if (TYPE_CODE (TYPE_TARGET_TYPE (parm)) == TYPE_CODE_VOID)
2228             return VOID_PTR_CONVERSION_BADNESS;
2229           else
2230             return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
2231         case TYPE_CODE_ARRAY:
2232           return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
2233         case TYPE_CODE_FUNC:
2234           return rank_one_type (TYPE_TARGET_TYPE (parm), arg);
2235         case TYPE_CODE_INT:
2236         case TYPE_CODE_ENUM:
2237         case TYPE_CODE_CHAR:
2238         case TYPE_CODE_RANGE:
2239         case TYPE_CODE_BOOL:
2240           return POINTER_CONVERSION_BADNESS;
2241         default:
2242           return INCOMPATIBLE_TYPE_BADNESS;
2243         }
2244     case TYPE_CODE_ARRAY:
2245       switch (TYPE_CODE (arg))
2246         {
2247         case TYPE_CODE_PTR:
2248         case TYPE_CODE_ARRAY:
2249           return rank_one_type (TYPE_TARGET_TYPE (parm), TYPE_TARGET_TYPE (arg));
2250         default:
2251           return INCOMPATIBLE_TYPE_BADNESS;
2252         }
2253     case TYPE_CODE_FUNC:
2254       switch (TYPE_CODE (arg))
2255         {
2256         case TYPE_CODE_PTR:     /* funcptr -> func */
2257           return rank_one_type (parm, TYPE_TARGET_TYPE (arg));
2258         default:
2259           return INCOMPATIBLE_TYPE_BADNESS;
2260         }
2261     case TYPE_CODE_INT:
2262       switch (TYPE_CODE (arg))
2263         {
2264         case TYPE_CODE_INT:
2265           if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
2266             {
2267               /* Deal with signed, unsigned, and plain chars and
2268                  signed and unsigned ints */
2269               if (TYPE_NOSIGN (parm))
2270                 {
2271                   /* This case only for character types */
2272                   if (TYPE_NOSIGN (arg))        /* plain char -> plain char */
2273                     return 0;
2274                   else
2275                     return INTEGER_COERCION_BADNESS;    /* signed/unsigned char -> plain char */
2276                 }
2277               else if (TYPE_UNSIGNED (parm))
2278                 {
2279                   if (TYPE_UNSIGNED (arg))
2280                     {
2281                       if (!strcmp_iw (TYPE_NAME (parm), TYPE_NAME (arg)))
2282                         return 0;       /* unsigned int -> unsigned int, or unsigned long -> unsigned long */
2283                       else if (!strcmp_iw (TYPE_NAME (arg), "int") && !strcmp_iw (TYPE_NAME (parm), "long"))
2284                         return INTEGER_PROMOTION_BADNESS;       /* unsigned int -> unsigned long */
2285                       else
2286                         return INTEGER_COERCION_BADNESS;        /* unsigned long -> unsigned int */
2287                     }
2288                   else
2289                     {
2290                       if (!strcmp_iw (TYPE_NAME (arg), "long") && !strcmp_iw (TYPE_NAME (parm), "int"))
2291                         return INTEGER_COERCION_BADNESS;        /* signed long -> unsigned int */
2292                       else
2293                         return INTEGER_CONVERSION_BADNESS;      /* signed int/long -> unsigned int/long */
2294                     }
2295                 }
2296               else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
2297                 {
2298                   if (!strcmp_iw (TYPE_NAME (parm), TYPE_NAME (arg)))
2299                     return 0;
2300                   else if (!strcmp_iw (TYPE_NAME (arg), "int") && !strcmp_iw (TYPE_NAME (parm), "long"))
2301                     return INTEGER_PROMOTION_BADNESS;
2302                   else
2303                     return INTEGER_COERCION_BADNESS;
2304                 }
2305               else
2306                 return INTEGER_COERCION_BADNESS;
2307             }
2308           else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2309             return INTEGER_PROMOTION_BADNESS;
2310           else
2311             return INTEGER_COERCION_BADNESS;
2312         case TYPE_CODE_ENUM:
2313         case TYPE_CODE_CHAR:
2314         case TYPE_CODE_RANGE:
2315         case TYPE_CODE_BOOL:
2316           return INTEGER_PROMOTION_BADNESS;
2317         case TYPE_CODE_FLT:
2318           return INT_FLOAT_CONVERSION_BADNESS;
2319         case TYPE_CODE_PTR:
2320           return NS_POINTER_CONVERSION_BADNESS;
2321         default:
2322           return INCOMPATIBLE_TYPE_BADNESS;
2323         }
2324       break;
2325     case TYPE_CODE_ENUM:
2326       switch (TYPE_CODE (arg))
2327         {
2328         case TYPE_CODE_INT:
2329         case TYPE_CODE_CHAR:
2330         case TYPE_CODE_RANGE:
2331         case TYPE_CODE_BOOL:
2332         case TYPE_CODE_ENUM:
2333           return INTEGER_COERCION_BADNESS;
2334         case TYPE_CODE_FLT:
2335           return INT_FLOAT_CONVERSION_BADNESS;
2336         default:
2337           return INCOMPATIBLE_TYPE_BADNESS;
2338         }
2339       break;
2340     case TYPE_CODE_CHAR:
2341       switch (TYPE_CODE (arg))
2342         {
2343         case TYPE_CODE_RANGE:
2344         case TYPE_CODE_BOOL:
2345         case TYPE_CODE_ENUM:
2346           return INTEGER_COERCION_BADNESS;
2347         case TYPE_CODE_FLT:
2348           return INT_FLOAT_CONVERSION_BADNESS;
2349         case TYPE_CODE_INT:
2350           if (TYPE_LENGTH (arg) > TYPE_LENGTH (parm))
2351             return INTEGER_COERCION_BADNESS;
2352           else if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2353             return INTEGER_PROMOTION_BADNESS;
2354           /* >>> !! else fall through !! <<< */
2355         case TYPE_CODE_CHAR:
2356           /* Deal with signed, unsigned, and plain chars for C++
2357              and with int cases falling through from previous case */
2358           if (TYPE_NOSIGN (parm))
2359             {
2360               if (TYPE_NOSIGN (arg))
2361                 return 0;
2362               else
2363                 return INTEGER_COERCION_BADNESS;
2364             }
2365           else if (TYPE_UNSIGNED (parm))
2366             {
2367               if (TYPE_UNSIGNED (arg))
2368                 return 0;
2369               else
2370                 return INTEGER_PROMOTION_BADNESS;
2371             }
2372           else if (!TYPE_NOSIGN (arg) && !TYPE_UNSIGNED (arg))
2373             return 0;
2374           else
2375             return INTEGER_COERCION_BADNESS;
2376         default:
2377           return INCOMPATIBLE_TYPE_BADNESS;
2378         }
2379       break;
2380     case TYPE_CODE_RANGE:
2381       switch (TYPE_CODE (arg))
2382         {
2383         case TYPE_CODE_INT:
2384         case TYPE_CODE_CHAR:
2385         case TYPE_CODE_RANGE:
2386         case TYPE_CODE_BOOL:
2387         case TYPE_CODE_ENUM:
2388           return INTEGER_COERCION_BADNESS;
2389         case TYPE_CODE_FLT:
2390           return INT_FLOAT_CONVERSION_BADNESS;
2391         default:
2392           return INCOMPATIBLE_TYPE_BADNESS;
2393         }
2394       break;
2395     case TYPE_CODE_BOOL:
2396       switch (TYPE_CODE (arg))
2397         {
2398         case TYPE_CODE_INT:
2399         case TYPE_CODE_CHAR:
2400         case TYPE_CODE_RANGE:
2401         case TYPE_CODE_ENUM:
2402         case TYPE_CODE_FLT:
2403         case TYPE_CODE_PTR:
2404           return BOOLEAN_CONVERSION_BADNESS;
2405         case TYPE_CODE_BOOL:
2406           return 0;
2407         default:
2408           return INCOMPATIBLE_TYPE_BADNESS;
2409         }
2410       break;
2411     case TYPE_CODE_FLT:
2412       switch (TYPE_CODE (arg))
2413         {
2414         case TYPE_CODE_FLT:
2415           if (TYPE_LENGTH (arg) < TYPE_LENGTH (parm))
2416             return FLOAT_PROMOTION_BADNESS;
2417           else if (TYPE_LENGTH (arg) == TYPE_LENGTH (parm))
2418             return 0;
2419           else
2420             return FLOAT_CONVERSION_BADNESS;
2421         case TYPE_CODE_INT:
2422         case TYPE_CODE_BOOL:
2423         case TYPE_CODE_ENUM:
2424         case TYPE_CODE_RANGE:
2425         case TYPE_CODE_CHAR:
2426           return INT_FLOAT_CONVERSION_BADNESS;
2427         default:
2428           return INCOMPATIBLE_TYPE_BADNESS;
2429         }
2430       break;
2431     case TYPE_CODE_COMPLEX:
2432       switch (TYPE_CODE (arg))
2433         {                       /* Strictly not needed for C++, but... */
2434         case TYPE_CODE_FLT:
2435           return FLOAT_PROMOTION_BADNESS;
2436         case TYPE_CODE_COMPLEX:
2437           return 0;
2438         default:
2439           return INCOMPATIBLE_TYPE_BADNESS;
2440         }
2441       break;
2442     case TYPE_CODE_STRUCT:
2443       /* currently same as TYPE_CODE_CLASS */
2444       switch (TYPE_CODE (arg))
2445         {
2446         case TYPE_CODE_STRUCT:
2447           /* Check for derivation */
2448           if (is_ancestor (parm, arg))
2449             return BASE_CONVERSION_BADNESS;
2450           /* else fall through */
2451         default:
2452           return INCOMPATIBLE_TYPE_BADNESS;
2453         }
2454       break;
2455     case TYPE_CODE_UNION:
2456       switch (TYPE_CODE (arg))
2457         {
2458         case TYPE_CODE_UNION:
2459         default:
2460           return INCOMPATIBLE_TYPE_BADNESS;
2461         }
2462       break;
2463     case TYPE_CODE_MEMBER:
2464       switch (TYPE_CODE (arg))
2465         {
2466         default:
2467           return INCOMPATIBLE_TYPE_BADNESS;
2468         }
2469       break;
2470     case TYPE_CODE_METHOD:
2471       switch (TYPE_CODE (arg))
2472         {
2473
2474         default:
2475           return INCOMPATIBLE_TYPE_BADNESS;
2476         }
2477       break;
2478     case TYPE_CODE_REF:
2479       switch (TYPE_CODE (arg))
2480         {
2481
2482         default:
2483           return INCOMPATIBLE_TYPE_BADNESS;
2484         }
2485
2486       break;
2487     case TYPE_CODE_SET:
2488       switch (TYPE_CODE (arg))
2489         {
2490           /* Not in C++ */
2491         case TYPE_CODE_SET:
2492           return rank_one_type (TYPE_FIELD_TYPE (parm, 0), TYPE_FIELD_TYPE (arg, 0));
2493         default:
2494           return INCOMPATIBLE_TYPE_BADNESS;
2495         }
2496       break;
2497     case TYPE_CODE_VOID:
2498     default:
2499       return INCOMPATIBLE_TYPE_BADNESS;
2500     }                           /* switch (TYPE_CODE (arg)) */
2501 }
2502
2503
2504 /* End of functions for overload resolution */
2505
2506 static void
2507 print_bit_vector (bits, nbits)
2508      B_TYPE *bits;
2509      int nbits;
2510 {
2511   int bitno;
2512
2513   for (bitno = 0; bitno < nbits; bitno++)
2514     {
2515       if ((bitno % 8) == 0)
2516         {
2517           puts_filtered (" ");
2518         }
2519       if (B_TST (bits, bitno))
2520         {
2521           printf_filtered ("1");
2522         }
2523       else
2524         {
2525           printf_filtered ("0");
2526         }
2527     }
2528 }
2529
2530 /* The args list is a strange beast.  It is either terminated by a NULL
2531    pointer for varargs functions, or by a pointer to a TYPE_CODE_VOID
2532    type for normal fixed argcount functions.  (FIXME someday)
2533    Also note the first arg should be the "this" pointer, we may not want to
2534    include it since we may get into a infinitely recursive situation. */
2535
2536 static void
2537 print_arg_types (args, spaces)
2538      struct type **args;
2539      int spaces;
2540 {
2541   if (args != NULL)
2542     {
2543       while (*args != NULL)
2544         {
2545           recursive_dump_type (*args, spaces + 2);
2546           if ((*args++)->code == TYPE_CODE_VOID)
2547             {
2548               break;
2549             }
2550         }
2551     }
2552 }
2553
2554 static void
2555 dump_fn_fieldlists (type, spaces)
2556      struct type *type;
2557      int spaces;
2558 {
2559   int method_idx;
2560   int overload_idx;
2561   struct fn_field *f;
2562
2563   printfi_filtered (spaces, "fn_fieldlists ");
2564   gdb_print_host_address (TYPE_FN_FIELDLISTS (type), gdb_stdout);
2565   printf_filtered ("\n");
2566   for (method_idx = 0; method_idx < TYPE_NFN_FIELDS (type); method_idx++)
2567     {
2568       f = TYPE_FN_FIELDLIST1 (type, method_idx);
2569       printfi_filtered (spaces + 2, "[%d] name '%s' (",
2570                         method_idx,
2571                         TYPE_FN_FIELDLIST_NAME (type, method_idx));
2572       gdb_print_host_address (TYPE_FN_FIELDLIST_NAME (type, method_idx),
2573                               gdb_stdout);
2574       printf_filtered (") length %d\n",
2575                        TYPE_FN_FIELDLIST_LENGTH (type, method_idx));
2576       for (overload_idx = 0;
2577            overload_idx < TYPE_FN_FIELDLIST_LENGTH (type, method_idx);
2578            overload_idx++)
2579         {
2580           printfi_filtered (spaces + 4, "[%d] physname '%s' (",
2581                             overload_idx,
2582                             TYPE_FN_FIELD_PHYSNAME (f, overload_idx));
2583           gdb_print_host_address (TYPE_FN_FIELD_PHYSNAME (f, overload_idx),
2584                                   gdb_stdout);
2585           printf_filtered (")\n");
2586           printfi_filtered (spaces + 8, "type ");
2587           gdb_print_host_address (TYPE_FN_FIELD_TYPE (f, overload_idx), gdb_stdout);
2588           printf_filtered ("\n");
2589
2590           recursive_dump_type (TYPE_FN_FIELD_TYPE (f, overload_idx),
2591                                spaces + 8 + 2);
2592
2593           printfi_filtered (spaces + 8, "args ");
2594           gdb_print_host_address (TYPE_FN_FIELD_ARGS (f, overload_idx), gdb_stdout);
2595           printf_filtered ("\n");
2596
2597           print_arg_types (TYPE_FN_FIELD_ARGS (f, overload_idx), spaces);
2598           printfi_filtered (spaces + 8, "fcontext ");
2599           gdb_print_host_address (TYPE_FN_FIELD_FCONTEXT (f, overload_idx),
2600                                   gdb_stdout);
2601           printf_filtered ("\n");
2602
2603           printfi_filtered (spaces + 8, "is_const %d\n",
2604                             TYPE_FN_FIELD_CONST (f, overload_idx));
2605           printfi_filtered (spaces + 8, "is_volatile %d\n",
2606                             TYPE_FN_FIELD_VOLATILE (f, overload_idx));
2607           printfi_filtered (spaces + 8, "is_private %d\n",
2608                             TYPE_FN_FIELD_PRIVATE (f, overload_idx));
2609           printfi_filtered (spaces + 8, "is_protected %d\n",
2610                             TYPE_FN_FIELD_PROTECTED (f, overload_idx));
2611           printfi_filtered (spaces + 8, "is_stub %d\n",
2612                             TYPE_FN_FIELD_STUB (f, overload_idx));
2613           printfi_filtered (spaces + 8, "voffset %u\n",
2614                             TYPE_FN_FIELD_VOFFSET (f, overload_idx));
2615         }
2616     }
2617 }
2618
2619 static void
2620 print_cplus_stuff (type, spaces)
2621      struct type *type;
2622      int spaces;
2623 {
2624   printfi_filtered (spaces, "n_baseclasses %d\n",
2625                     TYPE_N_BASECLASSES (type));
2626   printfi_filtered (spaces, "nfn_fields %d\n",
2627                     TYPE_NFN_FIELDS (type));
2628   printfi_filtered (spaces, "nfn_fields_total %d\n",
2629                     TYPE_NFN_FIELDS_TOTAL (type));
2630   if (TYPE_N_BASECLASSES (type) > 0)
2631     {
2632       printfi_filtered (spaces, "virtual_field_bits (%d bits at *",
2633                         TYPE_N_BASECLASSES (type));
2634       gdb_print_host_address (TYPE_FIELD_VIRTUAL_BITS (type), gdb_stdout);
2635       printf_filtered (")");
2636
2637       print_bit_vector (TYPE_FIELD_VIRTUAL_BITS (type),
2638                         TYPE_N_BASECLASSES (type));
2639       puts_filtered ("\n");
2640     }
2641   if (TYPE_NFIELDS (type) > 0)
2642     {
2643       if (TYPE_FIELD_PRIVATE_BITS (type) != NULL)
2644         {
2645           printfi_filtered (spaces, "private_field_bits (%d bits at *",
2646                             TYPE_NFIELDS (type));
2647           gdb_print_host_address (TYPE_FIELD_PRIVATE_BITS (type), gdb_stdout);
2648           printf_filtered (")");
2649           print_bit_vector (TYPE_FIELD_PRIVATE_BITS (type),
2650                             TYPE_NFIELDS (type));
2651           puts_filtered ("\n");
2652         }
2653       if (TYPE_FIELD_PROTECTED_BITS (type) != NULL)
2654         {
2655           printfi_filtered (spaces, "protected_field_bits (%d bits at *",
2656                             TYPE_NFIELDS (type));
2657           gdb_print_host_address (TYPE_FIELD_PROTECTED_BITS (type), gdb_stdout);
2658           printf_filtered (")");
2659           print_bit_vector (TYPE_FIELD_PROTECTED_BITS (type),
2660                             TYPE_NFIELDS (type));
2661           puts_filtered ("\n");
2662         }
2663     }
2664   if (TYPE_NFN_FIELDS (type) > 0)
2665     {
2666       dump_fn_fieldlists (type, spaces);
2667     }
2668 }
2669
2670 static struct obstack dont_print_type_obstack;
2671
2672 void
2673 recursive_dump_type (type, spaces)
2674      struct type *type;
2675      int spaces;
2676 {
2677   int idx;
2678
2679   if (spaces == 0)
2680     obstack_begin (&dont_print_type_obstack, 0);
2681
2682   if (TYPE_NFIELDS (type) > 0
2683       || (TYPE_CPLUS_SPECIFIC (type) && TYPE_NFN_FIELDS (type) > 0))
2684     {
2685       struct type **first_dont_print
2686       = (struct type **) obstack_base (&dont_print_type_obstack);
2687
2688       int i = (struct type **) obstack_next_free (&dont_print_type_obstack)
2689       - first_dont_print;
2690
2691       while (--i >= 0)
2692         {
2693           if (type == first_dont_print[i])
2694             {
2695               printfi_filtered (spaces, "type node ");
2696               gdb_print_host_address (type, gdb_stdout);
2697               printf_filtered (" <same as already seen type>\n");
2698               return;
2699             }
2700         }
2701
2702       obstack_ptr_grow (&dont_print_type_obstack, type);
2703     }
2704
2705   printfi_filtered (spaces, "type node ");
2706   gdb_print_host_address (type, gdb_stdout);
2707   printf_filtered ("\n");
2708   printfi_filtered (spaces, "name '%s' (",
2709                     TYPE_NAME (type) ? TYPE_NAME (type) : "<NULL>");
2710   gdb_print_host_address (TYPE_NAME (type), gdb_stdout);
2711   printf_filtered (")\n");
2712   if (TYPE_TAG_NAME (type) != NULL)
2713     {
2714       printfi_filtered (spaces, "tagname '%s' (",
2715                         TYPE_TAG_NAME (type));
2716       gdb_print_host_address (TYPE_TAG_NAME (type), gdb_stdout);
2717       printf_filtered (")\n");
2718     }
2719   printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type));
2720   switch (TYPE_CODE (type))
2721     {
2722     case TYPE_CODE_UNDEF:
2723       printf_filtered ("(TYPE_CODE_UNDEF)");
2724       break;
2725     case TYPE_CODE_PTR:
2726       printf_filtered ("(TYPE_CODE_PTR)");
2727       break;
2728     case TYPE_CODE_ARRAY:
2729       printf_filtered ("(TYPE_CODE_ARRAY)");
2730       break;
2731     case TYPE_CODE_STRUCT:
2732       printf_filtered ("(TYPE_CODE_STRUCT)");
2733       break;
2734     case TYPE_CODE_UNION:
2735       printf_filtered ("(TYPE_CODE_UNION)");
2736       break;
2737     case TYPE_CODE_ENUM:
2738       printf_filtered ("(TYPE_CODE_ENUM)");
2739       break;
2740     case TYPE_CODE_FUNC:
2741       printf_filtered ("(TYPE_CODE_FUNC)");
2742       break;
2743     case TYPE_CODE_INT:
2744       printf_filtered ("(TYPE_CODE_INT)");
2745       break;
2746     case TYPE_CODE_FLT:
2747       printf_filtered ("(TYPE_CODE_FLT)");
2748       break;
2749     case TYPE_CODE_VOID:
2750       printf_filtered ("(TYPE_CODE_VOID)");
2751       break;
2752     case TYPE_CODE_SET:
2753       printf_filtered ("(TYPE_CODE_SET)");
2754       break;
2755     case TYPE_CODE_RANGE:
2756       printf_filtered ("(TYPE_CODE_RANGE)");
2757       break;
2758     case TYPE_CODE_STRING:
2759       printf_filtered ("(TYPE_CODE_STRING)");
2760       break;
2761     case TYPE_CODE_ERROR:
2762       printf_filtered ("(TYPE_CODE_ERROR)");
2763       break;
2764     case TYPE_CODE_MEMBER:
2765       printf_filtered ("(TYPE_CODE_MEMBER)");
2766       break;
2767     case TYPE_CODE_METHOD:
2768       printf_filtered ("(TYPE_CODE_METHOD)");
2769       break;
2770     case TYPE_CODE_REF:
2771       printf_filtered ("(TYPE_CODE_REF)");
2772       break;
2773     case TYPE_CODE_CHAR:
2774       printf_filtered ("(TYPE_CODE_CHAR)");
2775       break;
2776     case TYPE_CODE_BOOL:
2777       printf_filtered ("(TYPE_CODE_BOOL)");
2778       break;
2779     case TYPE_CODE_TYPEDEF:
2780       printf_filtered ("(TYPE_CODE_TYPEDEF)");
2781       break;
2782     default:
2783       printf_filtered ("(UNKNOWN TYPE CODE)");
2784       break;
2785     }
2786   puts_filtered ("\n");
2787   printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type));
2788   printfi_filtered (spaces, "objfile ");
2789   gdb_print_host_address (TYPE_OBJFILE (type), gdb_stdout);
2790   printf_filtered ("\n");
2791   printfi_filtered (spaces, "target_type ");
2792   gdb_print_host_address (TYPE_TARGET_TYPE (type), gdb_stdout);
2793   printf_filtered ("\n");
2794   if (TYPE_TARGET_TYPE (type) != NULL)
2795     {
2796       recursive_dump_type (TYPE_TARGET_TYPE (type), spaces + 2);
2797     }
2798   printfi_filtered (spaces, "pointer_type ");
2799   gdb_print_host_address (TYPE_POINTER_TYPE (type), gdb_stdout);
2800   printf_filtered ("\n");
2801   printfi_filtered (spaces, "reference_type ");
2802   gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout);
2803   printf_filtered ("\n");
2804   printfi_filtered (spaces, "flags 0x%x", TYPE_FLAGS (type));
2805   if (TYPE_FLAGS (type) & TYPE_FLAG_UNSIGNED)
2806     {
2807       puts_filtered (" TYPE_FLAG_UNSIGNED");
2808     }
2809   if (TYPE_FLAGS (type) & TYPE_FLAG_STUB)
2810     {
2811       puts_filtered (" TYPE_FLAG_STUB");
2812     }
2813   puts_filtered ("\n");
2814   printfi_filtered (spaces, "nfields %d ", TYPE_NFIELDS (type));
2815   gdb_print_host_address (TYPE_FIELDS (type), gdb_stdout);
2816   puts_filtered ("\n");
2817   for (idx = 0; idx < TYPE_NFIELDS (type); idx++)
2818     {
2819       printfi_filtered (spaces + 2,
2820                         "[%d] bitpos %d bitsize %d type ",
2821                         idx, TYPE_FIELD_BITPOS (type, idx),
2822                         TYPE_FIELD_BITSIZE (type, idx));
2823       gdb_print_host_address (TYPE_FIELD_TYPE (type, idx), gdb_stdout);
2824       printf_filtered (" name '%s' (",
2825                        TYPE_FIELD_NAME (type, idx) != NULL
2826                        ? TYPE_FIELD_NAME (type, idx)
2827                        : "<NULL>");
2828       gdb_print_host_address (TYPE_FIELD_NAME (type, idx), gdb_stdout);
2829       printf_filtered (")\n");
2830       if (TYPE_FIELD_TYPE (type, idx) != NULL)
2831         {
2832           recursive_dump_type (TYPE_FIELD_TYPE (type, idx), spaces + 4);
2833         }
2834     }
2835   printfi_filtered (spaces, "vptr_basetype ");
2836   gdb_print_host_address (TYPE_VPTR_BASETYPE (type), gdb_stdout);
2837   puts_filtered ("\n");
2838   if (TYPE_VPTR_BASETYPE (type) != NULL)
2839     {
2840       recursive_dump_type (TYPE_VPTR_BASETYPE (type), spaces + 2);
2841     }
2842   printfi_filtered (spaces, "vptr_fieldno %d\n", TYPE_VPTR_FIELDNO (type));
2843   switch (TYPE_CODE (type))
2844     {
2845     case TYPE_CODE_METHOD:
2846     case TYPE_CODE_FUNC:
2847       printfi_filtered (spaces, "arg_types ");
2848       gdb_print_host_address (TYPE_ARG_TYPES (type), gdb_stdout);
2849       puts_filtered ("\n");
2850       print_arg_types (TYPE_ARG_TYPES (type), spaces);
2851       break;
2852
2853     case TYPE_CODE_STRUCT:
2854       printfi_filtered (spaces, "cplus_stuff ");
2855       gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
2856       puts_filtered ("\n");
2857       print_cplus_stuff (type, spaces);
2858       break;
2859
2860     default:
2861       /* We have to pick one of the union types to be able print and test
2862          the value.  Pick cplus_struct_type, even though we know it isn't
2863          any particular one. */
2864       printfi_filtered (spaces, "type_specific ");
2865       gdb_print_host_address (TYPE_CPLUS_SPECIFIC (type), gdb_stdout);
2866       if (TYPE_CPLUS_SPECIFIC (type) != NULL)
2867         {
2868           printf_filtered (" (unknown data form)");
2869         }
2870       printf_filtered ("\n");
2871       break;
2872
2873     }
2874   if (spaces == 0)
2875     obstack_free (&dont_print_type_obstack, NULL);
2876 }
2877
2878 static void build_gdbtypes PARAMS ((void));
2879 static void
2880 build_gdbtypes ()
2881 {
2882   builtin_type_void =
2883     init_type (TYPE_CODE_VOID, 1,
2884                0,
2885                "void", (struct objfile *) NULL);
2886   builtin_type_char =
2887     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
2888                0,
2889                "char", (struct objfile *) NULL);
2890   TYPE_FLAGS (builtin_type_char) |= TYPE_FLAG_NOSIGN;
2891   builtin_type_true_char =
2892     init_type (TYPE_CODE_CHAR, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
2893                0,
2894                "true character", (struct objfile *) NULL);
2895   builtin_type_signed_char =
2896     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
2897                0,
2898                "signed char", (struct objfile *) NULL);
2899   builtin_type_unsigned_char =
2900     init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
2901                TYPE_FLAG_UNSIGNED,
2902                "unsigned char", (struct objfile *) NULL);
2903   builtin_type_short =
2904     init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT,
2905                0,
2906                "short", (struct objfile *) NULL);
2907   builtin_type_unsigned_short =
2908     init_type (TYPE_CODE_INT, TARGET_SHORT_BIT / TARGET_CHAR_BIT,
2909                TYPE_FLAG_UNSIGNED,
2910                "unsigned short", (struct objfile *) NULL);
2911   builtin_type_int =
2912     init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
2913                0,
2914                "int", (struct objfile *) NULL);
2915   builtin_type_unsigned_int =
2916     init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
2917                TYPE_FLAG_UNSIGNED,
2918                "unsigned int", (struct objfile *) NULL);
2919   builtin_type_long =
2920     init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
2921                0,
2922                "long", (struct objfile *) NULL);
2923   builtin_type_unsigned_long =
2924     init_type (TYPE_CODE_INT, TARGET_LONG_BIT / TARGET_CHAR_BIT,
2925                TYPE_FLAG_UNSIGNED,
2926                "unsigned long", (struct objfile *) NULL);
2927   builtin_type_long_long =
2928     init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
2929                0,
2930                "long long", (struct objfile *) NULL);
2931   builtin_type_unsigned_long_long =
2932     init_type (TYPE_CODE_INT, TARGET_LONG_LONG_BIT / TARGET_CHAR_BIT,
2933                TYPE_FLAG_UNSIGNED,
2934                "unsigned long long", (struct objfile *) NULL);
2935   builtin_type_float =
2936     init_type (TYPE_CODE_FLT, TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
2937                0,
2938                "float", (struct objfile *) NULL);
2939   builtin_type_double =
2940     init_type (TYPE_CODE_FLT, TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
2941                0,
2942                "double", (struct objfile *) NULL);
2943   builtin_type_long_double =
2944     init_type (TYPE_CODE_FLT, TARGET_LONG_DOUBLE_BIT / TARGET_CHAR_BIT,
2945                0,
2946                "long double", (struct objfile *) NULL);
2947   builtin_type_complex =
2948     init_type (TYPE_CODE_COMPLEX, 2 * TARGET_FLOAT_BIT / TARGET_CHAR_BIT,
2949                0,
2950                "complex", (struct objfile *) NULL);
2951   TYPE_TARGET_TYPE (builtin_type_complex) = builtin_type_float;
2952   builtin_type_double_complex =
2953     init_type (TYPE_CODE_COMPLEX, 2 * TARGET_DOUBLE_BIT / TARGET_CHAR_BIT,
2954                0,
2955                "double complex", (struct objfile *) NULL);
2956   TYPE_TARGET_TYPE (builtin_type_double_complex) = builtin_type_double;
2957   builtin_type_string =
2958     init_type (TYPE_CODE_STRING, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
2959                0,
2960                "string", (struct objfile *) NULL);
2961   builtin_type_int8 =
2962     init_type (TYPE_CODE_INT, 8 / 8,
2963                0,
2964                "int8_t", (struct objfile *) NULL);
2965   builtin_type_uint8 =
2966     init_type (TYPE_CODE_INT, 8 / 8,
2967                TYPE_FLAG_UNSIGNED,
2968                "uint8_t", (struct objfile *) NULL);
2969   builtin_type_int16 =
2970     init_type (TYPE_CODE_INT, 16 / 8,
2971                0,
2972                "int16_t", (struct objfile *) NULL);
2973   builtin_type_uint16 =
2974     init_type (TYPE_CODE_INT, 16 / 8,
2975                TYPE_FLAG_UNSIGNED,
2976                "uint16_t", (struct objfile *) NULL);
2977   builtin_type_int32 =
2978     init_type (TYPE_CODE_INT, 32 / 8,
2979                0,
2980                "int32_t", (struct objfile *) NULL);
2981   builtin_type_uint32 =
2982     init_type (TYPE_CODE_INT, 32 / 8,
2983                TYPE_FLAG_UNSIGNED,
2984                "uint32_t", (struct objfile *) NULL);
2985   builtin_type_int64 =
2986     init_type (TYPE_CODE_INT, 64 / 8,
2987                0,
2988                "int64_t", (struct objfile *) NULL);
2989   builtin_type_uint64 =
2990     init_type (TYPE_CODE_INT, 64 / 8,
2991                TYPE_FLAG_UNSIGNED,
2992                "uint64_t", (struct objfile *) NULL);
2993   builtin_type_bool =
2994     init_type (TYPE_CODE_BOOL, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
2995                0,
2996                "bool", (struct objfile *) NULL);
2997
2998   /* Add user knob for controlling resolution of opaque types */
2999   add_show_from_set
3000     (add_set_cmd ("opaque-type-resolution", class_support, var_boolean, (char *) &opaque_type_resolution,
3001                   "Set resolution of opaque struct/class/union types (if set before loading symbols).",
3002                   &setlist),
3003      &showlist);
3004   opaque_type_resolution = 1;
3005
3006
3007   /* Build SIMD types.  */
3008   builtin_type_v4sf
3009     = init_simd_type ("__builtin_v4sf", builtin_type_float, "f", 4);
3010   builtin_type_v4si
3011     = init_simd_type ("__builtin_v4si", builtin_type_int32, "f", 4);
3012   builtin_type_v8qi
3013     = init_simd_type ("__builtin_v8qi", builtin_type_int8, "f", 8);
3014   builtin_type_v4hi
3015     = init_simd_type ("__builtin_v4hi", builtin_type_int16, "f", 4);
3016   builtin_type_v2si
3017     = init_simd_type ("__builtin_v2si", builtin_type_int32, "f", 2);
3018
3019   /* Pointer/Address types. */
3020   /* NOTE: At present there is no way of differentiating between at
3021      target address and the target C language pointer type type even
3022      though the two can be different (cf d10v) */
3023   builtin_type_ptr =
3024     init_type (TYPE_CODE_INT, TARGET_PTR_BIT / 8,
3025                TYPE_FLAG_UNSIGNED,
3026                "__ptr", (struct objfile *) NULL);
3027   builtin_type_CORE_ADDR =
3028     init_type (TYPE_CODE_INT, TARGET_PTR_BIT / 8,
3029                TYPE_FLAG_UNSIGNED,
3030                "__CORE_ADDR", (struct objfile *) NULL);
3031   builtin_type_bfd_vma =
3032     init_type (TYPE_CODE_INT, TARGET_BFD_VMA_BIT / 8,
3033                TYPE_FLAG_UNSIGNED,
3034                "__bfd_vma", (struct objfile *) NULL);
3035 }
3036
3037
3038 extern void _initialize_gdbtypes PARAMS ((void));
3039 void
3040 _initialize_gdbtypes ()
3041 {
3042   struct cmd_list_element *c;
3043   build_gdbtypes ();
3044
3045   /* FIXME - For the moment, handle types by swapping them in and out.
3046      Should be using the per-architecture data-pointer and a large
3047      struct. */
3048   register_gdbarch_swap (&builtin_type_void, sizeof (struct type *), NULL);
3049   register_gdbarch_swap (&builtin_type_char, sizeof (struct type *), NULL);
3050   register_gdbarch_swap (&builtin_type_short, sizeof (struct type *), NULL);
3051   register_gdbarch_swap (&builtin_type_int, sizeof (struct type *), NULL);
3052   register_gdbarch_swap (&builtin_type_long, sizeof (struct type *), NULL);
3053   register_gdbarch_swap (&builtin_type_long_long, sizeof (struct type *), NULL);
3054   register_gdbarch_swap (&builtin_type_signed_char, sizeof (struct type *), NULL);
3055   register_gdbarch_swap (&builtin_type_unsigned_char, sizeof (struct type *), NULL);
3056   register_gdbarch_swap (&builtin_type_unsigned_short, sizeof (struct type *), NULL);
3057   register_gdbarch_swap (&builtin_type_unsigned_int, sizeof (struct type *), NULL);
3058   register_gdbarch_swap (&builtin_type_unsigned_long, sizeof (struct type *), NULL);
3059   register_gdbarch_swap (&builtin_type_unsigned_long_long, sizeof (struct type *), NULL);
3060   register_gdbarch_swap (&builtin_type_float, sizeof (struct type *), NULL);
3061   register_gdbarch_swap (&builtin_type_double, sizeof (struct type *), NULL);
3062   register_gdbarch_swap (&builtin_type_long_double, sizeof (struct type *), NULL);
3063   register_gdbarch_swap (&builtin_type_complex, sizeof (struct type *), NULL);
3064   register_gdbarch_swap (&builtin_type_double_complex, sizeof (struct type *), NULL);
3065   register_gdbarch_swap (&builtin_type_string, sizeof (struct type *), NULL);
3066   register_gdbarch_swap (&builtin_type_int8, sizeof (struct type *), NULL);
3067   register_gdbarch_swap (&builtin_type_uint8, sizeof (struct type *), NULL);
3068   register_gdbarch_swap (&builtin_type_int16, sizeof (struct type *), NULL);
3069   register_gdbarch_swap (&builtin_type_uint16, sizeof (struct type *), NULL);
3070   register_gdbarch_swap (&builtin_type_int32, sizeof (struct type *), NULL);
3071   register_gdbarch_swap (&builtin_type_uint32, sizeof (struct type *), NULL);
3072   register_gdbarch_swap (&builtin_type_int64, sizeof (struct type *), NULL);
3073   register_gdbarch_swap (&builtin_type_uint64, sizeof (struct type *), NULL);
3074   register_gdbarch_swap (&builtin_type_v4sf, sizeof (struct type *), NULL);
3075   register_gdbarch_swap (&builtin_type_v4si, sizeof (struct type *), NULL);
3076   register_gdbarch_swap (&builtin_type_v8qi, sizeof (struct type *), NULL);
3077   register_gdbarch_swap (&builtin_type_v4hi, sizeof (struct type *), NULL);
3078   register_gdbarch_swap (&builtin_type_v2si, sizeof (struct type *), NULL);
3079   REGISTER_GDBARCH_SWAP (builtin_type_ptr);
3080   REGISTER_GDBARCH_SWAP (builtin_type_CORE_ADDR);
3081   REGISTER_GDBARCH_SWAP (builtin_type_bfd_vma);
3082   register_gdbarch_swap (NULL, 0, build_gdbtypes);
3083
3084   add_show_from_set (
3085                      add_set_cmd ("overload", no_class, var_zinteger, (char *) &overload_debug,
3086                                   "Set debugging of C++ overloading.\n\
3087                           When enabled, ranking of the functions\n\
3088                           is displayed.", &setdebuglist),
3089                      &showdebuglist);
3090 }