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